@camstack/addon-admin-ui 1.2.451 → 1.2.453

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/assets/{AddonAssetIcon-tSDKYL0K.js → AddonAssetIcon-D4f5QzwX.js} +1 -1
  2. package/dist/assets/Addons-BmgETSc4.js +4 -0
  3. package/dist/assets/{AdminPage-Bc7EcIQy.js → AdminPage-D_zEoNvj.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-DorUtSBh.js → AdminSectionedPage-c5oc7MKr.js} +1 -1
  5. package/dist/assets/{AiProfiles-BdYyzFcG.js → AiProfiles-OmUyER08.js} +2 -2
  6. package/dist/assets/{BrokerForm-Deefp6zP.js → BrokerForm-WFCCMZu7.js} +1 -1
  7. package/dist/assets/{Build-D_QB0Yce.js → Build-H3rAvJYX.js} +4 -4
  8. package/dist/assets/{Calendars-BTBqj3kw.js → Calendars-DNZptD-n.js} +1 -1
  9. package/dist/assets/{Cluster-qRWUra5C.js → Cluster-BirHrmjz.js} +1 -1
  10. package/dist/assets/ClusterStepModel-DXEw1-iK.js +1 -0
  11. package/dist/assets/{CompositionEditor-sCKYBpl2.js → CompositionEditor-BruCgxbv.js} +1 -1
  12. package/dist/assets/{CompositionEditorPage-DzUj_31l.js → CompositionEditorPage-CNY8Rqx0.js} +1 -1
  13. package/dist/assets/Data-B9LAPgxz.js +2 -0
  14. package/dist/assets/{DeviceDetail-BLnowNRs.js → DeviceDetail-DB8Wa7Sv.js} +2 -2
  15. package/dist/assets/{DeviceDoActionFields-Bffr6IHD.js → DeviceDoActionFields-Drr-gpl9.js} +1 -1
  16. package/dist/assets/{Devices-IJKvm0BP.js → Devices-JQ8FIcrC.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-B1o6udpz.js → EmbedPlayerPage-DMCMitj3.js} +1 -1
  18. package/dist/assets/History-DyW5HpVM.js +1 -0
  19. package/dist/assets/Identity-lfUuRjOX.js +1 -0
  20. package/dist/assets/IntegrationDetail-DnpseReT.js +1 -0
  21. package/dist/assets/{IntegrationHub-Bf4b3i_q.js → IntegrationHub-Db0bsfLJ.js} +1 -1
  22. package/dist/assets/{Integrations-nFhMQF34.js → Integrations-CcXy5tWR.js} +1 -1
  23. package/dist/assets/Integrations-DNPpJ4Ja.js +1 -0
  24. package/dist/assets/{Library-A6WfMhER.js → Library-C2dLqSTC.js} +1 -1
  25. package/dist/assets/Locations-e6uuHHQU.js +3 -0
  26. package/dist/assets/{Logs-C9J8k6c9.js → Logs-DWM80Ifl.js} +1 -1
  27. package/dist/assets/{MaskShapeCanvas-v8FP28QJ.js → MaskShapeCanvas-Chm66Qq5.js} +1 -1
  28. package/dist/assets/{MotionZonesSettings-Bqg-ZAEs.js → MotionZonesSettings-CQ4kMA71.js} +1 -1
  29. package/dist/assets/{MyAccess-uX46IK3F.js → MyAccess-DhDj6Dcu.js} +1 -1
  30. package/dist/assets/{Network-BR-HvAds.js → Network-DRNoFcHE.js} +1 -1
  31. package/dist/assets/{NodeAddonsSettingsPanel-BNTQVCjk.js → NodeAddonsSettingsPanel-CmUo7HL7.js} +1 -1
  32. package/dist/assets/{Notifications-BtCeEFJT.js → Notifications-BnhdNZ6f.js} +1 -1
  33. package/dist/assets/{PrivacyMaskSettings-DqyBAWCW.js → PrivacyMaskSettings-CpCCSkKp.js} +1 -1
  34. package/dist/assets/Recordings-BcWqTc1H.js +1 -0
  35. package/dist/assets/{ScanNetworkModal-DzMITtJ8.js → ScanNetworkModal-DOkg50dW.js} +1 -1
  36. package/dist/assets/{SceneMonitorEditor-365WT-vj.js → SceneMonitorEditor-C1CNWxmG.js} +1 -1
  37. package/dist/assets/SessionsList-rvronrFR.js +2 -0
  38. package/dist/assets/{Showroom-Ch7an15I.js → Showroom-BLEcXdKT.js} +1 -1
  39. package/dist/assets/{System-XW10dOJr.js → System-B6PNyCJb.js} +1 -1
  40. package/dist/assets/{Terminal-CmDRhqrR.js → Terminal-C20iOQsN.js} +1 -1
  41. package/dist/assets/{Viewer-2oJvYupj.js → Viewer-DwNTfUWw.js} +1 -1
  42. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BvyGb9Bo.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DO5DropZ.js} +1 -1
  43. package/dist/assets/{addon-icons-context-Nt5kiIqp.js → addon-icons-context-CO0pJapE.js} +1 -1
  44. package/dist/assets/{archive-BpVlUMGc.js → archive-Bp0veqaX.js} +1 -1
  45. package/dist/assets/{authed-media-CRjjClqw.js → authed-media-BukO6Htt.js} +1 -1
  46. package/dist/assets/{bell-off-DFWiqigj.js → bell-off-DNhCufqt.js} +1 -1
  47. package/dist/assets/{board-model-CbfKyLZU.js → board-model-Ci-_X0u-.js} +1 -1
  48. package/dist/assets/{boxes-DEZFxpEo.js → boxes-BaumwARG.js} +1 -1
  49. package/dist/assets/circle-slash-D7rbiin9.js +1 -0
  50. package/dist/assets/client-BggkinSi.js +358 -0
  51. package/dist/assets/{cloud-upload-DJX2vjB1.js → cloud-upload-C78OV2Vf.js} +1 -1
  52. package/dist/assets/crop-CFruzwpC.js +1 -0
  53. package/dist/assets/{device-integration-icon-eQMV6gf2.js → device-integration-icon-B2dkF6iM.js} +1 -1
  54. package/dist/assets/device-picker-model-B7xNzrPL.js +1 -0
  55. package/dist/assets/{dist-C44xoxcH.js → dist-BnhJ2JWA.js} +1 -1
  56. package/dist/assets/dist-DTzD7Qgb.js +358 -0
  57. package/dist/assets/{eraser-BJtJIM79.js → eraser-BYMxipNr.js} +1 -1
  58. package/dist/assets/{hard-drive-download-BgY0ewC_.js → hard-drive-download-ClkqTbzr.js} +1 -1
  59. package/dist/assets/{hostInit-BxKKf6O5.js → hostInit-BGNr3Jpq.js} +1 -1
  60. package/dist/assets/i18n-BimjnPQq.js +1 -0
  61. package/dist/assets/{icons-B7PsYODJ.js → icons-DHL4FRrs.js} +1 -1
  62. package/dist/assets/{index-B-H1mfMz.js → index-BVY_WMe1.js} +3 -3
  63. package/dist/assets/{key-Rj556V_5.js → key-CKrA-CfR.js} +1 -1
  64. package/dist/assets/{key-round-JtuAp3H5.js → key-round-CDKQmrbu.js} +1 -1
  65. package/dist/assets/{layers-arFC7gbL.js → layers-UfB0_N2n.js} +1 -1
  66. package/dist/assets/{linked-devices-model-Bwz1L9wp.js → linked-devices-model-BM0mB7nT.js} +1 -1
  67. package/dist/assets/{list-ordered-Dam1ZKMc.js → list-ordered-0mq_0UIh.js} +1 -1
  68. package/dist/assets/{location-owned-usage-DwnxDZWp.js → location-owned-usage-D6ooNfJc.js} +1 -1
  69. package/dist/assets/{log-in-lVU3BPjL.js → log-in-BySKT1Dy.js} +1 -1
  70. package/dist/assets/{memory-stick-Cttq5WM5.js → memory-stick-Dp1YfIBO.js} +1 -1
  71. package/dist/assets/{message-square-plus-CaNw_hMf.js → message-square-plus-BWjzgumP.js} +1 -1
  72. package/dist/assets/{mf-entry-bootstrap-0-ab6954b6.js → mf-entry-bootstrap-0-594b555b.js} +2 -2
  73. package/dist/assets/{mic-off-it4ki4Jh.js → mic-off-DiXTm9Y2.js} +1 -1
  74. package/dist/assets/{monitor-off-oHRvN7aD.js → monitor-off-D3OGcghF.js} +1 -1
  75. package/dist/assets/{monitor-smartphone-CjCMg9jw.js → monitor-smartphone-BkZrPcuL.js} +1 -1
  76. package/dist/assets/mount-B7xNzrPL.js +1 -0
  77. package/dist/assets/notification-schedule-field-BG32wqBc.js +1 -0
  78. package/dist/assets/{player-overlays-BQ-CPD3k.js → player-overlays-BYMAZza9.js} +1 -1
  79. package/dist/assets/{recycle-DLgVUrk1.js → recycle-FJ49Ydss.js} +1 -1
  80. package/dist/assets/remoteEntry-CXA3sxXs.js +1 -0
  81. package/dist/assets/{scan-eye-D3WSpR2M.js → scan-eye-Cd5UWfpf.js} +1 -1
  82. package/dist/assets/{scissors-CfXjajAo.js → scissors-BA0EAdIJ.js} +1 -1
  83. package/dist/assets/{search-x-DrZuvHV8.js → search-x-By_wSOtV.js} +1 -1
  84. package/dist/assets/{send-BGZ680If.js → send-C-dY1QlF.js} +1 -1
  85. package/dist/assets/{settings-2-WgIC2cEC.js → settings-2-CbNC1QI2.js} +1 -1
  86. package/dist/assets/{speaker-DIrTXPXW.js → speaker-1RM6dadP.js} +1 -1
  87. package/dist/assets/src-75D_Zlij.js +67 -0
  88. package/dist/assets/{timer-reset-Ba4-n5gG.js → timer-reset--avsGIJd.js} +1 -1
  89. package/dist/assets/{ungroup-DjxNnRiT.js → ungroup-D3cHvFv0.js} +1 -1
  90. package/dist/assets/{unlink-Cy4eOOGb.js → unlink-tiyUOhU3.js} +1 -1
  91. package/dist/assets/{usb-Crnw8Rqe.js → usb-Di-8wm3J.js} +1 -1
  92. package/dist/assets/{use-scenes-feed-CqavtElt.js → use-scenes-feed-CAjM8T0N.js} +1 -1
  93. package/dist/assets/{use-stationary-objects-CuD-UCH8.js → use-stationary-objects-Bjq8kJYj.js} +1 -1
  94. package/dist/assets/useEventInvalidation-B7xNzrPL.js +1 -0
  95. package/dist/assets/{useNodeUrlSelection-ChFCBb4B.js → useNodeUrlSelection-DiojZJ0u.js} +1 -1
  96. package/dist/assets/user-round-luImimaP.js +1 -0
  97. package/dist/assets/{user-x-BDmcZv0z.js → user-x-olI9Ahi1.js} +1 -1
  98. package/dist/assets/{video-JjHo3xW3.js → video-jTbj0gAQ.js} +1 -1
  99. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-3LGiNBfi.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-D8GIXJRi.js} +2 -2
  100. package/dist/index.html +10 -10
  101. package/dist/server/addon.js +115 -68
  102. package/package.json +1 -1
  103. package/dist/assets/Addons-ofsCoJ4Y.js +0 -4
  104. package/dist/assets/ClusterStepModel-CYnyPKcf.js +0 -1
  105. package/dist/assets/Data-BJuJfR0P.js +0 -2
  106. package/dist/assets/History-su2kJ1JJ.js +0 -1
  107. package/dist/assets/Identity-8srCiX2b.js +0 -1
  108. package/dist/assets/IntegrationDetail-CHtQ-0tZ.js +0 -1
  109. package/dist/assets/Integrations-Cnq7Q1qn.js +0 -1
  110. package/dist/assets/Locations-Dl_YxXoD.js +0 -3
  111. package/dist/assets/Recordings-arOpg17X.js +0 -1
  112. package/dist/assets/SessionsList-CAYqZ393.js +0 -2
  113. package/dist/assets/circle-slash-BvDvmSoU.js +0 -1
  114. package/dist/assets/client-C7mYZlqO.js +0 -358
  115. package/dist/assets/crop-BLfw1NQy.js +0 -1
  116. package/dist/assets/device-picker-model-B7n7uzAw.js +0 -1
  117. package/dist/assets/dist-4Z3hLAqT.js +0 -358
  118. package/dist/assets/i18n-CiEPJn04.js +0 -1
  119. package/dist/assets/mount-B7n7uzAw.js +0 -1
  120. package/dist/assets/notification-schedule-field-DkO0-1Tm.js +0 -1
  121. package/dist/assets/remoteEntry-5tiapUFy.js +0 -1
  122. package/dist/assets/src-DP8JO4HZ.js +0 -67
  123. package/dist/assets/useEventInvalidation-B7n7uzAw.js +0 -1
  124. package/dist/assets/user-round-7xIjUD30.js +0 -1
@@ -1,2 +0,0 @@
1
- import{$ as e,B as t,G as n,J as r,L as i,S as a,q as o,x as s}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEHpkaJP.js";import{D as c,It as l,ca as u,cn as d,dt as f,mi as p,or as m,ot as h,sn as g,zr as _}from"./player-overlays-BQ-CPD3k.js";import{a as v,i as y,s as b}from"./video-JjHo3xW3.js";import{t as x}from"./key-round-JtuAp3H5.js";import{$n as S,An as C,Ar as w,Bu as T,Dn as ee,Du as E,Mu as D,Nn as O,Nu as k,Qn as A,Qu as j,Rr as M,Ya as N,_n as P,cn as F,dt as I,er as L,fr as R,gn as z,gu as B,hr as V,ir as H,it as te,jr as U,kn as W,lt as G,mn as ne,nr as K,on as q,rr as J,rt as re,sn as ie,tr as ae,wt as oe,zr as se}from"./src-DP8JO4HZ.js";import{t as Y}from"./i18n-CiEPJn04.js";import{t as X}from"./useTranslation-D3Is_4B6.js";import{V as ce,Z as le,n as Z,t as ue}from"./index-B-H1mfMz.js";e();function de({id:e,title:t,icon:n,description:r,actions:i,tone:o=`default`,notice:l=null,onDismissNotice:u,children:d}){return s(ne,{headingId:`access-${e}`,title:t,icon:n,actions:i,testId:`access-${e}`,children:a(`div`,{className:`${c} space-y-3`,children:[s(`div`,{className:T(`text-[11px] leading-relaxed`,o===`danger`?`rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-foreground`:`text-foreground-subtle`),children:r}),l!==null&&s(pe,{notice:l,onDismiss:u}),d]})})}var fe={success:{icon:p,line:`border-success/30 text-foreground`,mark:`text-success`},danger:{icon:y,line:`border-danger/40 text-danger`,mark:`text-danger`}};function pe({notice:e,onDismiss:t}){let{t:n}=X(),r=fe[e.tone],i=r.icon;return a(`div`,{role:e.tone===`danger`?`alert`:`status`,className:T(`flex items-start gap-2 rounded-md border bg-surface px-3 py-2 text-[11px]`,r.line),children:[s(i,{className:T(`mt-0.5 h-3.5 w-3.5 shrink-0`,r.mark),"aria-hidden":!0}),s(`span`,{className:`min-w-0 flex-1`,children:e.message}),t!==void 0&&s(k,{type:`button`,variant:`ghost`,size:`sm`,icon:f,"aria-label":n(`access.accessSection.dismiss`,`Dismiss`),onClick:t,className:`-my-1 h-5 w-5`})]})}function me(){let{data:e}=B();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 s(M,{variant:ve[e],className:`text-[10px]`,children:_e(e)})}function Se({row:e,action:t}){if(!t.isAvailable(e))return null;let n=t.icon,r=t.busyId===e.id;return a(V,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>t.onRun(e),disabled:t.disabled,"aria-label":Y.t(`access.credentialColumns.actionOn`,{action:t.label,name:e.name}),className:t.tone===`neutral`?void 0:`text-danger hover:bg-danger/10`,children:[r?s(m,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):s(n,{className:`h-3 w-3`,"aria-hidden":!0}),t.label]})}function Ce(e){return[{key:`name`,header:Y.t(`access.credentialColumns.name`,`Name`),sortValue:e=>e.name.toLowerCase(),render:e=>a(`div`,{className:`min-w-0 max-w-[18rem]`,children:[s(`div`,{className:`truncate font-medium text-foreground`,title:e.name,children:e.name}),e.detail!==null&&s(`div`,{className:`truncate font-mono text-[10px] text-foreground-subtle`,title:e.detail,children:e.detail})]})},e.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:e=>a(`div`,{className:`min-w-[8rem] max-w-[16rem]`,children:[s(`div`,{className:`text-foreground`,children:e.kind}),e.scope!==null&&s(`div`,{className:`line-clamp-2 text-[10px] text-foreground-subtle`,title:e.scope,children:e.scope})]})},{key:`status`,header:Y.t(`access.credentialColumns.status`,`Status`),sortValue:e=>ye[e.status],render:e=>s(xe,{status:e.status})},{key:`created`,header:Y.t(`access.credentialColumns.created`,`Created`),sortValue:e=>e.createdAt,render:e=>s(`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=>s(`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:t=>s(`span`,{className:`text-foreground-subtle`,children:be(t.expiresAt,e.expiresNone)})},e.action===null?null:{key:`actions`,header:``,align:`right`,notSortableReason:Y.t(`access.credentialColumns.actionsHeader`),render:t=>s(`div`,{className:`flex items-center justify-end gap-1`,children:[...e.extraActions??[],e.action].map(e=>e===null?null:s(Se,{row:t,action:e},e.label))})}].filter(e=>e!==null)}e();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=U(),i=j.auth.revokeCredentials.useMutation(),[a,o]=r(null);return{run:async r=>{if(r.length===0||!await Ae(n,r,e))return!1;o(null);try{let t=await i.mutateAsync({ids:r.map(e=>e.id),confirmCount:r.length}),n=t.skipped.map(e=>Ee(e.reason));return o({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 o({tone:`danger`,message:Y.t(`access.bulk.revokeFailed`,{error:e instanceof Error?e.message:Y.t(`access.bulk.requestFailed`)})}),!1}finally{t()}},busy:i.isPending,outcome:a,dismiss:()=>o(null)}}function Me(e,t,n){let i=U(),[a,o]=r(!1),[s,c]=r(null);return{run:async r=>{if(r.length===0||!await Ae(i,r,e))return!1;c(null),o(!0);let a=[],s=0;for(let e of r)try{await t(e.id),s+=1}catch(t){a.push(`${e.name}: ${t instanceof Error?t.message:Y.t(`access.bulk.requestFailed`)}`)}return o(!1),n(),a.length===0?(c({tone:`success`,message:Y.t(`access.bulk.revoked`,{what:Q(s,e)})}),!0):(c({tone:`danger`,message:Y.t(a.length>3?`access.bulk.eachPartialMore`:`access.bulk.eachPartial`,{what:Q(s,e),count:a.length,details:a.slice(0,3).join(`; `)})}),s>0)},busy:a,outcome:s,dismiss:()=>c(null)}}e();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:e,label:t,isLoading:i,loadError:o,emptyText:c,hideOwner:l=!1,expiresNone:u,action:d,extraActions:f,bulk:p,defaultStatus:h=Ie}){let{t:g}=X(),[_]=r(()=>h.length===0?{search:``,facets:[]}:{search:``,facets:[],groups:{status:[...h]}}),v=q(e,Ne,_),[y,b]=r(()=>new Set),x=u??g(`access.credentialColumns.never`),S=n(()=>Ce({hideOwner:l,expiresNone:x,action:d??null,...f===void 0?{}:{extraActions:f}}),[l,x,d,f,g]),C=n(()=>p===void 0?()=>!1:e=>Fe(e)&&p.isSelectable(e),[p]),w=n(()=>v.rows.filter(e=>y.has(e.id)&&C(e)),[v.rows,y,C]);return i?a(`div`,{className:`flex items-center gap-2 py-4 text-xs text-foreground-subtle`,children:[s(m,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}),g(`access.credentialTable.loading`,{label:t})]}):o===null?a(`div`,{className:`space-y-3`,children:[s(ie,{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:g(Pe[e.id]),...e.id===`status`?{facetLabel:e=>_e(e)}:{}})),labels:{searchPlaceholder:g(`access.credentialTable.searchPlaceholder`,{label:t}),searchLabel:g(`access.credentialTable.searchLabel`,{label:t}),facetsLabel:g(`access.credentialTable.facetsLabel`,{label:t}),clearLabel:g(`access.credentialTable.clearFilters`)},onSearch:v.setSearch,onToggleFacet:v.toggleFacet,onToggleGroupFacet:v.toggleGroupFacet,onClear:v.clear}),p!==void 0&&s(Re,{bulk:p,shown:v.rows.filter(C),targets:w,onSelect:b}),s(z,{columns:S,rows:v.rows,rowKey:e=>e.id,minWidthPx:l?760:860,maxBodyHeight:P,defaultSort:{columnKey:`created`,dir:`desc`},pageSize:25,paginationLabels:{navLabel:g(`access.credentialTable.pagesLabel`,{label:t}),previous:g(`access.credentialTable.previousPage`),next:g(`access.credentialTable.nextPage`),range:(e,t,n)=>g(`access.credentialTable.range`,{from:e,to:t,total:n})},emptyMessage:v.active?g(`access.credentialTable.noMatchTheFilters`,`No {{label}} match the filters.`,{label:t}):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=>g(`access.credentialTable.rowLabel`,{name:e.name,owner:e.ownerName}),pageLabel:g(`access.credentialTable.pageLabel`,{noun:De(1,p.noun)})}}})]}):s(R,{title:g(`access.credentialTable.couldNotLoad`,`Could not load {{label}}`,{label:t}),message:o})}function Re({bulk:e,shown:t,targets:n,onSelect:r}){let{t:i}=X(),{revoke:o,noun:c}=e,u=(e.quickSelect??[]).map(e=>({...e,rows:t.filter(e.match)})).filter(e=>e.rows.length>0),d=async()=>{await o.run(n)&&r(new Set)};return a(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`bulk-bar`,children:[t.length>0&&s(V,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(new Set(t.map(e=>e.id))),children:i(`access.credentialTable.selectAllShown`,{count:t.length})}),u.map(e=>a(V,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(new Set(e.rows.map(e=>e.id))),children:[e.label,` (`,String(e.rows.length),`)`]},e.label)),n.length>0&&a(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[s(`span`,{className:`text-[11px] tabular-nums text-foreground`,"aria-live":`polite`,children:i(`access.credentialTable.selectedLabel`,{what:Q(n.length,c)})}),a(V,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>r(new Set),children:[s(f,{className:`h-3 w-3`,"aria-hidden":!0}),i(`access.credentialTable.clearSelection`,`Clear selection`)]}),a(V,{type:`button`,variant:`danger`,size:`sm`,disabled:o.busy,onClick:()=>void d(),children:[o.busy?s(m,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):s(l,{className:`h-3 w-3`,"aria-hidden":!0}),i(`access.credentialTable.revoke`,{what:Q(n.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}}function et(e,t){let n=e.allowedProviders;return{id:e.id,name:e.label,detail:`${e.tokenPrefix}…`,ownerId:e.userId??null,ownerName:ze(t,e.userId??null),kind:e.isAdmin===!0?`Admin`:`Regular`,scope:n===void 0||n===`*`?`All providers`:n.join(`, `)||`All providers`,status:`active`,createdAt:e.createdAt??null,lastUsedAt:e.lastUsedAt??null,expiresAt:null}}var tt=40,nt=[{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`}],rt=[{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`}],it=[{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 at(e,t){return e.find(e=>e.test.test(t))?.name??null}function ot(e){return e.length<=tt?e:`${e.slice(0,tt)}…`}function st(e){if(e===null||e.trim().length===0)return{label:Y.t(`helpers.sessionClient.unknownDevice`),raw:null};let t=e.trim(),n=at(it,t);if(n!==null)return{label:n,raw:t};let r=at(nt,t),i=at(rt,t);return r!==null&&i!==null?{label:Y.t(`helpers.sessionClient.browserOnSystem`,{browser:r,system:i}),raw:t}:r===null?{label:ot(t),raw:t}:{label:r,raw:t}}var ct={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 lt(e){let t=ct[e];return t===void 0?e:Y.t(t)}function ut(e){if(e==null)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleString()}e();function dt(e,t){return e instanceof Error&&e.message.length>0?e.message:t}function ft(e){let{t}=X(),n=h(),[c,l]=r(!1),[u,d]=r(``),[f,p]=r(null),[g,_]=r(null),v=o(null),y=i(e=>{v.current?.(e),v.current=null,l(!1),d(``),p(null),_(null)},[]),b=i(()=>new Promise(e=>{v.current?.(null),v.current=e,_(null),l(!0)}),[]),S=async()=>{p(`password`),_(null);try{let{reauthToken:e}=await n.reauthenticate({password:u});y(e)}catch(e){_(dt(e,`Password is incorrect`)),p(null)}},C=async()=>{p(`passkey`),_(null);try{let{optionsJSON:e}=await n.reauthBeginPasskey();if(!ue(e))throw Error(`passkey authentication options missing challenge`);let t=await Z({optionsJSON:e}),{reauthToken:r}=await n.reauthenticate({passkeyResponse:Object.fromEntries(Object.entries(t))});y(r)}catch(e){_(dt(e,`Passkey verification failed`)),p(null)}};return{requestProof:b,dialog:s(A,{open:c,onOpenChange:e=>!e&&y(null),children:a(L,{children:[a(J,{children:[s(H,{children:t(`auth.reauthDialog.confirmItSYou`,`Confirm it’s you`)}),s(ae,{children:t(`auth.reauthDialog.needsPassword`,{action:e})})]}),a(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),u.length>0&&f===null&&S()},children:[s(D,{type:`password`,autoComplete:`current-password`,placeholder:t(`auth.reauthDialog.currentPassword`,`Current password`),value:u,onChange:e=>d(e.target.value),"aria-label":t(`auth.reauthDialog.currentPassword`,`Current password`)}),g!==null&&s(`p`,{role:`alert`,className:`text-xs text-danger`,children:g}),a(K,{className:`flex flex-wrap gap-2`,children:[a(V,{type:`button`,variant:`outline`,disabled:f!==null,onClick:()=>void C(),children:[f===`passkey`?s(m,{className:`h-4 w-4 animate-spin`}):s(x,{className:`h-4 w-4`}),t(`auth.reauthDialog.useAPasskey`,`Use a passkey`)]}),a(V,{type:`submit`,disabled:u.length===0||f!==null,children:[f===`password`&&s(m,{className:`h-4 w-4 animate-spin`}),t(`common.confirm`,`Confirm`)]})]})]})]})})}}function pt({token:e,label:t,onClose:n}){let{t:r}=X();return s(A,{open:!0,onOpenChange:e=>!e&&n(),children:a(L,{width:`md`,scroll:`body`,children:[s(J,{children:s(H,{children:r(`auth.tokenModals.token`,`Token: {{label}}`,{label:t})})}),a(S,{className:`space-y-3`,children:[s(`div`,{className:`rounded-md border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning`,children:r(`auth.tokenModals.copyThisTokenNowOnce`,`Copy this token now. Once you close this dialog the secret cannot be displayed again.`)}),s(`div`,{className:`select-all break-all rounded-md border border-border bg-background p-2 font-mono text-[11px] text-foreground`,children:e})]}),a(K,{children:[s(F,{value:e,label:r(`common.copy`,`Copy`),srLabel:`token`}),s(V,{type:`button`,variant:`primary`,size:`sm`,onClick:n,children:r(`auth.tokenModals.done`,`Done`)})]})]})})}var mt={token:`newToken`,scoped:`newScoped`,admin:`newAdmin`};e();var ht=80,$=86400,gt=[{value:`1`,seconds:$},{value:`7`,seconds:7*$},{value:`30`,seconds:30*$},{value:`90`,seconds:90*$},{value:`never`,seconds:`never`}],_t={type:`device-multiselect`,key:`cameras`,label:`Cameras`,deviceFilter:{types:[`camera`]},maxItems:64},vt={type:`capability`,target:``,access:[`view`,`create`]};function yt({open:e,users:i,onClose:o,onSubmit:c,submitting:l,formError:f,awaitingProof:p}){let{t:h}=X(),v=u(),{user:y}=ce(),b=y?.isAdmin===!0,S=b?null:y?.scopes??[],[w,T]=r(`scopes`),[k,A]=r(y?.id??``),[j,M]=r(``),[N,P]=r([vt]),[F,L]=r([]),[R,z]=r(`grid-view`),[B,H]=r(!1),[U,G]=r(`30`);t(()=>{e||(T(`scopes`),A(y?.id??``),M(``),P([vt]),L([]),z(`grid-view`),H(!1),G(`30`))},[e,y?.id]),t(()=>{w!==`view-link`&&U===`never`&&G(`30`)},[w,U]);let ne=n(()=>gt.filter(e=>e.seconds!==`never`||w===`view-link`).map(e=>({value:e.value,label:e.seconds===`never`?h(`access.createTokenModal.never`,`Never (until revoked)`):h(`access.createTokenModal.days`,{count:Number(e.value)})})),[w,h]),K=j.trim(),q=w===`scopes`?te(N,v):null,J=F.map(Number).filter(e=>Number.isInteger(e)&&e>=0),ie=gt.find(e=>e.value===U)?.seconds??30*$,ae=()=>w===`all`?[`*`]:w===`view-link`?[{type:`share-view`,grant:{kind:R,deviceIds:J,...B?{talk:!0}:{}}}]:N,oe=K.length>0&&K.length<=ht&&!l&&!p&&(w===`all`?b:w===`view-link`?J.length>0:N.length>0&&q===null),Y=()=>{if(!oe)return;let e=b&&w!==`all`&&k!==``&&k!==y?.id;c({scopes:ae(),expiresIn:ie,label:K,...e?{subjectId:k}:{}})},Z=w===`all`,ue=Z?d:g;return s(I,{open:e,onClose:o,title:h(`access.createTokenModal.createToken`,`Create token`),icon:Z?d:x,error:f,width:`md`,testId:`create-token-dialog`,footer:a(V,{type:`button`,variant:Z?`danger`:`primary`,size:`sm`,onClick:Y,disabled:!oe,"data-testid":`create-token-submit`,children:[l||p?s(m,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}):s(ue,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),h(`access.createTokenModal.issueToken`,`Issue token`)]}),children:a(`div`,{className:`space-y-3`,children:[a(`div`,{className:`space-y-1`,children:[s(O,{children:h(`access.createTokenModal.whatItMayDo`,`What it may do`)}),s(ee,{appearance:`pills`,value:w,onValueChange:e=>{(e===`scopes`||e===`view-link`||e===`all`)&&T(e)},children:a(W,{"aria-label":h(`access.createTokenModal.whatItMayDo`,`What it may do`),children:[a(C,{value:`scopes`,"data-testid":`token-reach-scopes`,children:[s(g,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachScopes`,`Scopes`)]}),a(C,{value:`view-link`,"data-testid":`token-reach-view-link`,children:[s(_,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachViewLink`,`View link`)]}),b?a(C,{value:`all`,"data-testid":`token-reach-all`,children:[s(d,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachAll`,`All permissions`)]}):null]})})]}),Z?s(`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:s(`p`,{children:s(le,{i18nKey:`auth.adminTokenNoticeShort`,components:{strong:s(`strong`,{})}})})}):null,b&&w!==`all`&&i.length>1?a(`div`,{className:`space-y-1`,children:[s(O,{htmlFor:`token-user`,children:h(`access.createTokenModal.onBehalfOfUser`,`On behalf of user`)}),s(E,{id:`token-user`,value:k,onChange:e=>A(e.target.value),options:i.map(e=>({value:e.id,label:e.username}))})]}):null,a(`div`,{className:`space-y-1`,children:[s(O,{htmlFor:`token-name`,children:h(`access.createTokenModal.label`,`Label`)}),s(D,{id:`token-name`,value:j,maxLength:ht,required:!0,onChange:e=>M(e.target.value),placeholder:w===`view-link`?`kitchen-wall`:`nightly-backup`,autoFocus:!0})]}),w===`scopes`?a(`div`,{className:`space-y-1`,children:[s(O,{children:h(`access.createTokenModal.scopes`,`Scopes`)}),s(re,{value:N,onChange:P,clampToParent:S}),q&&s(`p`,{className:`text-[10px] text-danger`,children:q}),s(`p`,{className:`text-[10px] text-foreground-subtle`,children:h(`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,w===`view-link`?a(`div`,{className:`space-y-2`,"data-testid":`token-view-link`,children:[a(`div`,{className:`space-y-1`,children:[s(O,{children:h(`access.createTokenModal.cameras`,`Cameras`)}),s(se,{field:_t,value:F,onChange:e=>L(Array.isArray(e)?e.filter(e=>typeof e==`string`):[])})]}),a(`div`,{className:`space-y-1`,children:[s(O,{htmlFor:`token-view-kind`,children:h(`access.createTokenModal.viewKind`,`Shows`)}),s(E,{id:`token-view-kind`,value:R,onChange:e=>z(e.target.value===`events-view`?`events-view`:`grid-view`),options:[{value:`grid-view`,label:h(`access.createTokenModal.viewGrid`,`Live grid`)},{value:`events-view`,label:h(`access.createTokenModal.viewEvents`,`Events`)}]})]}),R===`grid-view`?a(`label`,{className:`flex items-start gap-2 text-sm text-foreground`,children:[s(`input`,{type:`checkbox`,className:`mt-0.5`,checked:B,onChange:e=>H(e.target.checked),"data-testid":`token-view-talk`}),s(`span`,{children:h(`access.createTokenModal.talk`,`Allow talk-back on these cameras`)})]}):null]}):null,a(`div`,{className:`space-y-1`,children:[s(O,{htmlFor:`token-lifetime`,children:h(`access.createTokenModal.expires`,`Expires after`)}),s(E,{id:`token-lifetime`,value:U,onChange:e=>G(e.target.value),options:ne})]})]})})}e();var bt={key:`access.nouns.token`};function xt(e){return typeof e==`object`&&!!e&&`kind`in e}function St(e,t){let n=e.access===void 0?``:` [${e.access.join(`, `)}]`;return e.type===`device`?`device:[${xt(e.selector)?oe(e.selector,t):`?`}]${n}`:e.type===`addon-routes`?`every addon's routes${n}`:`${e.type}:${e.target??``}${n}`}function Ct({headerOwnsCreate:e=!1,createRequested:i=!1,onCreateConsumed:o,ownOnly:c=!1}){let{t:d}=X(),f=u(),{user:p}=ce(),m=w(),h=j.useUtils(),g=me(),{data:_}=B(),v=n(()=>_??[],[_]),{data:y}=N({}),b=n(()=>{let e=new Map;for(let t of y??[])e.set(t.id,t.name);return e},[y]),S=j.auth.listTokens.useQuery(void 0),{requestProof:C,dialog:T}=ft(`Creating a token with all permissions`),{state:ee,openNew:E,close:D}=G({newKey:mt.token}),[O,k]=r(null),[A,M]=r(null),[P,F]=r(!1),[I,L]=r(null),[R,z]=r(null);t(()=>{i&&(E(),o?.())},[i,E,o]);let H=()=>{h.auth.listTokens.invalidate(),h.auth.listAuthAudit.invalidate()},te=j.auth.mintToken.useMutation({onSuccess:({token:e,record:t})=>{H(),D(),M(null),F(!1),L({token:e,label:t.label})},onError:e=>{M(`Create failed: ${e.message}`),F(!1)}}),U=j.auth.revokeToken.useMutation({onSuccess:()=>{z(null),H()},onError:e=>{z(null),k(`Revoke failed: ${e.message}`)}}),W=je(bt,H),ne=Date.now(),K=(S.data??[]).filter(e=>!c||e.subjectId===p?.id).map(e=>Ze(e,g,e.scopes.includes(`*`)?null:e.scopes.map(e=>Ye(e,b,e=>St(e,f))).join(`, `),ne)),q=async e=>{await m({title:d(`access.tokensSection.revoke`,`Revoke "{{name}}"?`,{name:e.name}),message:e.kind===`All permissions`?d(`access.tokensSection.everyScriptUsingItLoses`,`Every script using it loses access immediately. This cannot be undone.`):d(`access.tokensSection.stopsWorking`,`Whoever holds it loses access immediately. This cannot be undone.`),confirmLabel:d(`access.tokensSection.revoke2`,`Revoke`),variant:`danger`})&&(k(null),z(e.id),U.mutate({id:e.id}))},J=e=>{(async()=>{k(null),M(null);let t;if(e.scopes.includes(`*`)){F(!0);let e=await C();if(F(!1),e===null)return;t=e}te.mutate({scopes:[...e.scopes],expiresIn:e.expiresIn,label:e.label,...e.subjectId===void 0?{}:{subjectId:e.subjectId},...t===void 0?{}:{reauthToken:t}})})()};return a(`div`,{"data-testid":`tokens`,children:[T,s(de,{notice:he(O,W.outcome),onDismissNotice:()=>{k(null),W.dismiss()},id:c?`my-tokens`:`tokens`,title:c?d(`access.tokensSection.myTokens`,`My tokens`):d(`access.tokensSection.tokens`,`Tokens`),icon:x,actions:e?void 0:a(V,{size:`sm`,type:`button`,"data-testid":`tokens-new`,onClick:E,children:[s(x,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),d(`system.access.newToken`,`New token`)]}),description:d(`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:s(Le,{rows:K,label:d(`common.tokensLabel`),isLoading:S.isLoading,loadError:S.isError?S.error?.message??`Request failed`:null,emptyText:d(`access.tokensSection.noTokens`,`No tokens.`),action:{label:d(`access.tokensSection.revoke2`,`Revoke`),icon:l,isAvailable:e=>e.status===`active`,onRun:e=>void q(e),busyId:R,disabled:W.busy||R!==null},...p?.isAdmin===!0?{bulk:{revoke:W,noun:bt,isSelectable:e=>e.status===`active`}}:{}})}),s(yt,{open:ee.mode===`new`,users:v.map(e=>({id:e.id,username:e.username})),onClose:()=>{D(),M(null),F(!1)},submitting:te.isPending,formError:A,awaitingProof:P,onSubmit:J}),I&&s(pt,{token:I.token,label:I.label,onClose:()=>L(null)})]})}var wt=864e5,Tt={qr:`QR (by an admin)`,self:`Self-enrolled`},Et={ios:`iOS`,android:`Android`,web:`Web`,other:`Other`};function Dt(e){return e.status===`revoked`}function Ot(e){return e.status!==`revoked`}function kt(e,t=`—`){if(e===null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function At(e,t){return e===null||Number.isNaN(e)?null:Math.floor((e-t)/wt)}function jt(e,t){let n=At(e,t);return n===null?`unknown`:n<0?`expired`:n<30?`soon`:`ok`}function Mt(e,t){let n=At(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 Nt(e){if(e===null)return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}function Pt(e){return e===null||e.length===0?`—`:e.length<=17?e:`${e.slice(0,8)}…${e.slice(-8)}`}function Ft(e){return e.length<=10?e:`${e.slice(0,10)}…`}function It(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 Lt={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 Rt(e){if(e.ok)return{tone:`success`,message:Y.t(`helpers.certificateModel.renewed`,{nodeId:e.nodeId,serial:Ft(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(Lt[e.stage]),reason:e.reason,kept:t})}}function zt(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 Bt=11;function Vt(e,t){let n=e.slice(0,Bt);return t===null?n:`${n} · ${t}`}function Ht(e){return{id:e.id,name:e.deviceName,detail:Vt(e.fingerprint,e.lastUsedFrom),ownerId:e.userId,ownerName:e.username??e.userId,kind:Et[e.platform],scope:Tt[e.enrolledVia],status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Ut(e,t){return{id:e.id,name:e.deviceName,detail:null,ownerId:null,ownerName:t,kind:Et[e.platform],scope:null,status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Wt({sessions:e,isLoading:t,loadError:n,emptyText:r,onRevoke:i,revokingId:o}){let{t:c}=X();return t?a(`div`,{className:`flex items-center gap-2 text-xs text-foreground-subtle`,children:[s(m,{className:`h-3.5 w-3.5 animate-spin`}),c(`auth.sessionsList.loadingSessions`,`Loading sessions…`)]}):n===null?e.length===0?s(`div`,{className:`rounded border border-dashed border-border px-3 py-4 text-xs text-foreground-subtle text-center`,children:r}):s(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:e.map(e=>s(Gt,{session:e,revoking:o===e.id,onRevoke:()=>i(e)},e.id))}):a(`div`,{className:`text-[11px] text-danger`,children:[c(`auth.sessionsList.couldNotLoadSessions`,`Could not load sessions:`),` `,n]})}function Gt({session:e,revoking:t,onRevoke:n}){let{t:r}=X(),i=st(e.client);return a(`li`,{"data-testid":`session-row`,className:`flex items-start gap-3 px-3 py-2 text-xs`,children:[s(v,{className:`h-3.5 w-3.5 mt-0.5 shrink-0 text-foreground-subtle`}),a(`div`,{className:`flex-1 min-w-0 space-y-0.5`,children:[a(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[s(`span`,{className:`font-medium text-foreground truncate`,title:i.raw??void 0,children:i.label}),e.current&&s(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary`,children:r(`auth.sessionsList.thisDevice`,`This device`)})]}),a(`div`,{className:`flex flex-wrap gap-x-3 text-[11px] text-foreground-subtle`,children:[s(`span`,{children:lt(e.method)}),s(`span`,{className:`font-mono`,children:e.ip??r(`auth.sessionsList.ipUnknown`,`IP unknown`)}),s(`span`,{children:r(`auth.sessionsList.lastActive`,{when:ut(e.lastUsedAt)})}),s(`span`,{children:r(`auth.sessionsList.expires`,{when:ut(e.expiresAt)})})]})]}),!e.current&&a(`button`,{onClick:n,disabled:t,className:`inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] text-danger hover:bg-danger/10 disabled:opacity-50`,children:[t?s(m,{className:`h-3 w-3 animate-spin`}):s(b,{className:`h-3 w-3`}),r(`auth.sessionsList.signOut`,`Sign out`)]})]})}export{he as A,$e as C,je as D,Le as E,Me as O,Qe as S,Ve as T,ft as _,Ot as a,ut as b,Mt as c,kt as d,It as f,mt as g,Ct as h,Dt as i,me as j,de as k,Rt as l,Ft as m,Ht as n,zt as o,Pt as p,Ut as r,Nt as s,Wt as t,jt as u,st as v,He as w,et as x,lt as y};
@@ -1 +0,0 @@
1
- import{ra as e}from"./player-overlays-BQ-CPD3k.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};