@xopcai/xopc 0.0.107 → 0.0.108

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 (234) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
  5. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  6. package/dist/extensions/telegram/src/plugin.js +1 -1
  7. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  8. package/dist/extensions/telegram/src/update-offset-store.js +1 -1
  9. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  10. package/dist/extensions/telegram/xopc.extension.json +1 -1
  11. package/dist/extensions/weixin/src/api/api.js +2 -2
  12. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  13. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  14. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  15. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  16. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  17. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  18. package/dist/extensions/weixin/src/plugin.js +1 -1
  19. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  20. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  21. package/dist/gateway/static/root/assets/{agents-BXg2_mE4.js → agents-56kCGHdV.js} +1 -1
  22. package/dist/gateway/static/root/assets/{apps-page-CJqQ-7Ss.js → apps-page-Dd88J47r.js} +1 -1
  23. package/dist/gateway/static/root/assets/{channels-settings-DvMZ6NAd.js → channels-settings-Ckyvnvml.js} +1 -1
  24. package/dist/gateway/static/root/assets/{cron-page-BPBlvSl5.js → cron-page-DKo2ZdRA.js} +1 -1
  25. package/dist/gateway/static/root/assets/{dist-CZh0c-s8.js → dist-dmxWdtPG.js} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-debug-page-DyJQR0SR.js → extension-debug-page-iGpG-vpp.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-CDTuUr9B.js → extension-page-I7-3uHiD.js} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-settings-page-DszZ8zHD.js → extension-settings-page-BisnHG7r.js} +1 -1
  29. package/dist/gateway/static/root/assets/{heartbeat-config-api-U10wnPdc.js → heartbeat-config-api-tbWAFPN8.js} +1 -1
  30. package/dist/gateway/static/root/assets/{index-DBc-bVOQ.js → index-slwUkhxH.js} +3 -3
  31. package/dist/gateway/static/root/assets/{logs-page-B6js8Bfi.js → logs-page-CCZiXrWu.js} +1 -1
  32. package/dist/gateway/static/root/assets/{note-detail-page-DFzAXR35.js → note-detail-page-BYbw2GLl.js} +1 -1
  33. package/dist/gateway/static/root/assets/{note-time-DOiSU-10.js → note-time-Cya72Lte.js} +1 -1
  34. package/dist/gateway/static/root/assets/{notes-page-DAuZJMT8.js → notes-page-DrAO7VRK.js} +1 -1
  35. package/dist/gateway/static/root/assets/{schema-form-zM36dvbY.js → schema-form-a6UJCK55.js} +1 -1
  36. package/dist/gateway/static/root/assets/{sessions-page-CAsV03BY.js → sessions-page-DNU3Ymvz.js} +1 -1
  37. package/dist/gateway/static/root/assets/{settings-advanced-gate-BCvObK1y.js → settings-advanced-gate-CyEJYTbw.js} +1 -1
  38. package/dist/gateway/static/root/assets/{settings-form-section-Bvl-RInc.js → settings-form-section-DpHo2ecA.js} +1 -1
  39. package/dist/gateway/static/root/assets/{settings-page-DuCJDd74.js → settings-page-YRwe4q56.js} +1 -1
  40. package/dist/gateway/static/root/assets/{share-preview-page-rpL4DDTO.js → share-preview-page-B7rf4QB4.js} +1 -1
  41. package/dist/gateway/static/root/assets/{skills-page--BioR9J4.js → skills-page-we1NAt7u.js} +1 -1
  42. package/dist/gateway/static/root/assets/{voice-api-key-field-D2RJaoj_.js → voice-api-key-field-Btagks_B.js} +1 -1
  43. package/dist/gateway/static/root/assets/{workflow-page.utils-BxacHYen.js → workflow-page.utils-DvzJKs6W.js} +1 -1
  44. package/dist/gateway/static/root/assets/{workflows-page-B1B-est-.js → workflows-page-BgOAgCOG.js} +1 -1
  45. package/dist/gateway/static/root/index.html +1 -1
  46. package/dist/package.js +1 -1
  47. package/dist/src/agent/agent-manager.js +7 -7
  48. package/dist/src/agent/agent-scope.js +1 -1
  49. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  50. package/dist/src/agent/context/workspace-seed.js +2 -2
  51. package/dist/src/agent/context/workspace-state.js +1 -1
  52. package/dist/src/agent/goals/goal-run-store.js +4 -4
  53. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  54. package/dist/src/agent/goals/post-turn.js +2 -2
  55. package/dist/src/agent/image/load-image-media.js +2 -2
  56. package/dist/src/agent/ipc/bus.js +1 -1
  57. package/dist/src/agent/ipc/inbox.js +2 -2
  58. package/dist/src/agent/ipc/socket.js +1 -1
  59. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  60. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  61. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  62. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  63. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  64. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  65. package/dist/src/agent/memory/dreaming/events.js +1 -1
  66. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  67. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  68. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  69. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  70. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  71. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  72. package/dist/src/agent/memory/memory-flush.js +1 -1
  73. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  74. package/dist/src/agent/models/manager.js +1 -1
  75. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  76. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  77. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  78. package/dist/src/agent/sandbox/path-policy.js +2 -2
  79. package/dist/src/agent/service.js +4 -4
  80. package/dist/src/agent/session/session-inspector.js +1 -1
  81. package/dist/src/agent/skills/config.js +1 -1
  82. package/dist/src/agent/skills/hub-hash.js +2 -2
  83. package/dist/src/agent/skills/hub-lock.js +1 -1
  84. package/dist/src/agent/skills/hub-pull.js +2 -2
  85. package/dist/src/agent/skills/index.js +1 -1
  86. package/dist/src/agent/skills/managed-store.js +1 -1
  87. package/dist/src/agent/skills/scanner.js +1 -1
  88. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  89. package/dist/src/agent/skills/skill-manager.js +1 -1
  90. package/dist/src/agent/starter-agents.js +1 -1
  91. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  92. package/dist/src/agent/tools/factory.js +1 -1
  93. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  94. package/dist/src/agent/tools/send-media.js +1 -1
  95. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  96. package/dist/src/agent/tools/workflow-tool.js +1 -1
  97. package/dist/src/agent/tools/write.js +1 -1
  98. package/dist/src/agent/workflow/catalog.js +1 -1
  99. package/dist/src/auth/credentials.js +3 -3
  100. package/dist/src/auth/profiles/store.js +2 -2
  101. package/dist/src/auth/sync-provider-auth.js +1 -1
  102. package/dist/src/browser/cache-dir-policy.js +1 -1
  103. package/dist/src/browser/cdp-local-launcher.js +2 -2
  104. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  105. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  106. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  107. package/dist/src/browser/stealth.js +1 -1
  108. package/dist/src/channels/outbound/persist-store.js +1 -1
  109. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  110. package/dist/src/channels/pairing/pairing-store.js +2 -2
  111. package/dist/src/chat-commands/agent-edit.js +2 -2
  112. package/dist/src/chat-commands/builtins/config.js +2 -2
  113. package/dist/src/chat-commands/context.js +1 -1
  114. package/dist/src/cli/commands/config.js +1 -1
  115. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  116. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  117. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  118. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  119. package/dist/src/cli/commands/extension-create.js +1 -1
  120. package/dist/src/cli/commands/extension-dev.js +1 -1
  121. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  122. package/dist/src/cli/commands/extension-pack.js +2 -2
  123. package/dist/src/cli/commands/extension.js +2 -2
  124. package/dist/src/cli/commands/gateway/logs.js +1 -1
  125. package/dist/src/cli/commands/image.js +1 -1
  126. package/dist/src/cli/commands/init.js +3 -3
  127. package/dist/src/cli/commands/models.js +1 -1
  128. package/dist/src/cli/commands/onboard/model.js +2 -2
  129. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  130. package/dist/src/config/agent-profile.js +1 -1
  131. package/dist/src/config/agent-typed-models.js +1 -1
  132. package/dist/src/config/gateway-bind.js +1 -1
  133. package/dist/src/config/index.js +5 -5
  134. package/dist/src/config/loader.js +2 -2
  135. package/dist/src/config/models-json.js +2 -2
  136. package/dist/src/config/paths-state.js +1 -1
  137. package/dist/src/config/paths.js +4 -1
  138. package/dist/src/config/paths.js.map +1 -1
  139. package/dist/src/config/profile.js +2 -2
  140. package/dist/src/config/workspace-path.js +1 -1
  141. package/dist/src/cron/executor.js +2 -2
  142. package/dist/src/cron/persistence.js +1 -1
  143. package/dist/src/daemon/constants.js +1 -1
  144. package/dist/src/daemon/install-plan.js +2 -2
  145. package/dist/src/daemon/launchd.js +2 -2
  146. package/dist/src/daemon/schtasks.js +2 -2
  147. package/dist/src/daemon/systemd.js +2 -2
  148. package/dist/src/extensions/bundle-mcp.js +1 -1
  149. package/dist/src/extensions/discover-extensions.js +1 -1
  150. package/dist/src/extensions/health.js +1 -1
  151. package/dist/src/extensions/loader.js +1 -1
  152. package/dist/src/extensions/lockfile.js +2 -2
  153. package/dist/src/extensions/update.js +1 -1
  154. package/dist/src/gateway/agents-admin.js +2 -2
  155. package/dist/src/gateway/file-path-classifier.js +2 -2
  156. package/dist/src/gateway/heartbeat/service.js +1 -1
  157. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  158. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  159. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  160. package/dist/src/gateway/hono/oauth-async.js +1 -1
  161. package/dist/src/gateway/hono/oauth.js +1 -1
  162. package/dist/src/gateway/hono/routes/agents.js +1 -1
  163. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  164. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  165. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  166. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  167. package/dist/src/gateway/hono/routes/models.js +1 -1
  168. package/dist/src/gateway/hono/routes/shares.js +1 -1
  169. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  170. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  171. package/dist/src/gateway/lock.js +3 -3
  172. package/dist/src/gateway/ports.js +1 -1
  173. package/dist/src/gateway/service/agent-runner.js +2 -2
  174. package/dist/src/gateway/service/marketplace-service.js +2 -2
  175. package/dist/src/gateway/service.js +2 -2
  176. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  177. package/dist/src/heartbeat/index.js +1 -1
  178. package/dist/src/infra/brew.js +1 -1
  179. package/dist/src/infra/package-json.js +1 -1
  180. package/dist/src/infra/package-update-steps.js +1 -1
  181. package/dist/src/infra/path-env.js +2 -2
  182. package/dist/src/infra/restart.js +2 -2
  183. package/dist/src/infra/stable-node-path.js +1 -1
  184. package/dist/src/infra/update-check.js +1 -1
  185. package/dist/src/infra/update-global.js +1 -1
  186. package/dist/src/infra/update-lock.js +3 -3
  187. package/dist/src/infra/update-runner.js +1 -1
  188. package/dist/src/infra/update-startup.js +2 -2
  189. package/dist/src/infra/write-file-atomic.js +2 -2
  190. package/dist/src/media/store.js +1 -1
  191. package/dist/src/notes/agent-context.js +1 -1
  192. package/dist/src/notes/store.js +2 -2
  193. package/dist/src/project-trust/trust-store.js +2 -2
  194. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  195. package/dist/src/providers/index.js +2 -2
  196. package/dist/src/providers/model-registry.js +1 -1
  197. package/dist/src/session/init-session-turn.js +2 -2
  198. package/dist/src/session/resolve-session.js +3 -3
  199. package/dist/src/session/session-title.js +2 -2
  200. package/dist/src/session/store.js +2 -2
  201. package/dist/src/share/share-auto.js +2 -2
  202. package/dist/src/share/share-store.js +3 -3
  203. package/dist/src/share/share-thumbnail.js +2 -2
  204. package/dist/src/share/share-zip.js +1 -1
  205. package/dist/src/share/site-share-store.js +3 -3
  206. package/dist/src/share/site-static-serve.js +1 -1
  207. package/dist/src/storage/sqlite/connection.js +2 -2
  208. package/dist/src/storage/sqlite/memory-index-repository.js +2 -2
  209. package/dist/src/storage/sqlite/migrations/discover.js +1 -1
  210. package/dist/src/storage/sqlite/migrations/runner.js +1 -1
  211. package/dist/src/storage/sqlite/schema.js +1 -1
  212. package/dist/src/tui/backends/embedded-backend.js +1 -1
  213. package/dist/src/tui/clipboard-image.js +3 -3
  214. package/dist/src/tui/theme-manager.js +1 -1
  215. package/dist/src/tui/tui-command-formatters.js +3 -3
  216. package/dist/src/tui/tui-commands.js +2 -2
  217. package/dist/src/tui/tui-keybindings-file.js +1 -1
  218. package/dist/src/tui/tui-scoped-models.js +2 -2
  219. package/dist/src/tui/tui-settings.js +1 -1
  220. package/dist/src/tui/tui-startup-resources.js +1 -1
  221. package/dist/src/tui/tui.js +5 -5
  222. package/dist/src/tunnel/frpc-binary.js +3 -3
  223. package/dist/src/tunnel/frpc-config.js +1 -1
  224. package/dist/src/tunnel/frpc-extract.js +1 -1
  225. package/dist/src/tunnel/tunnel-state.js +1 -1
  226. package/dist/src/utils/logger/audit.js +1 -1
  227. package/dist/src/utils/logger/log-store.js +1 -1
  228. package/dist/src/utils/logger/rotation.js +1 -1
  229. package/dist/src/voice/tts/audio.js +1 -1
  230. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  231. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  232. package/dist/src/workflows/store/event-store.js +1 -1
  233. package/dist/src/workflows/store/run-store.js +1 -1
  234. package/package.json +1 -1
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a,t as o}from"./url-DQRqHuL-.js";import{i as s}from"./vendor-swr-BIWyz7Rc.js";import{t as c}from"./circle-check-C23XjkUj.js";import{a as l,n as u,t as d}from"./fetch-CFdKBnE6.js";import{Ar as f,Dr as p,Er as m,Ii as h,Ji as g,N as _,Or as v,Tn as y,Tr as b,Vr as x,cn as S,do as C,es as w,fi as T,hi as E,ia as D,ja as O,jr as k,kr as A,on as j,pi as M,ri as N,sa as P,sn as F,ts as I,vr as L,wn as R}from"./index-DBc-bVOQ.js";import{t as z}from"./schema-form-zM36dvbY.js";import{t as B}from"./browser-BLJWD7WI.js";var V=n(),H=e(B(),1),U=e(t(),1),W=r();function G(e){let t=e.actions??{};for(let e of[`login.start`,`setup.start`]){let n=t[e];if(n?.result===`qr`)return[e,n]}let n=Object.entries(t).find(([,e])=>e.result===`qr`);if(n)return n;let r=e.ui?.card?.primaryAction;if(r&&t[r])return[r,t[r]];for(let e of[`login.start`,`setup.start`]){let n=t[e];if(n)return[e,n]}return Object.entries(t).find(([,e])=>e.result===`form`)??null}async function K(e){let t=await d(o(`/api/channels/${encodeURIComponent(e.channelId)}/actions/${encodeURIComponent(e.actionId)}?locale=${encodeURIComponent(e.locale)}`),{method:`POST`,body:JSON.stringify({...e.accountId?{accountId:e.accountId}:{},...e.input===void 0?{}:{input:e.input}})}),n=await t.json().catch(()=>({}));if(!t.ok||n.ok===!1)throw Error(n.error?.message??t.statusText);return n.payload??{type:`ok`}}function q(e){return e?.type===`poll`&&e.phase===`done`}function J(e){return e&&`message`in e&&typeof e.message==`string`?e.message:null}function Y(e,t){return e?.type!==`qr`&&e?.type!==`poll`?null:e.qrPayload?e.qrPayload:t===`weixin`&&e.qrcodeUrl?e.qrcodeUrl:null}function X(e){return e?.type!==`qr`&&e?.type!==`poll`?null:e.qrcodeUrl??null}function ee({entry:e,locale:t,messages:n,onChanged:r,autoStartPrimary:i=!1,compact:a=!1}){let o=(0,U.useMemo)(()=>G(e),[e]),s=(0,U.useMemo)(()=>({defaultBooleanLabel:n.schemaBooleanDefault,unsupportedArrayType:n.schemaUnsupportedArrayType,arrayAddPlaceholder:n.schemaArrayAddPlaceholder,unsupportedFieldType:(e,t)=>n.schemaUnsupportedFieldType.replace(`{{title}}`,e).replace(`{{type}}`,t?` (${t})`:``)}),[n]),[l,u]=(0,U.useState)({payload:null,poll:null,busy:!1,error:null,formDraft:{},generatedQr:null});(0,U.useEffect)(()=>{u({payload:null,poll:null,busy:!1,error:null,formDraft:{},generatedQr:null})},[e.id]);let d=(0,U.useCallback)(async(n,i)=>{u(e=>({...e,busy:!0,error:null}));try{let a=await K({channelId:e.id,actionId:n,locale:t,input:i});u(e=>({...e,payload:a,poll:a.type===`qr`&&a.statusAction&&a.sessionKey?{actionId:a.statusAction,sessionKey:a.sessionKey,intervalMs:Math.max(1e3,a.pollIntervalMs??2500)}:null,busy:!1,formDraft:a.type===`form`?a.values??{}:e.formDraft})),`configChanged`in a&&a.configChanged===!0&&await r()}catch(e){u(t=>({...t,busy:!1,error:e instanceof Error?e.message:String(e)}))}},[e.id,t,r]);(0,U.useEffect)(()=>{!i||!o||o[1].result!==`qr`||l.payload||l.busy||l.error||d(o[0])},[i,o,d,l.busy,l.error,l.payload]),(0,U.useEffect)(()=>{let t=Y(l.payload,e.id);if(!t){u(e=>e.generatedQr?{...e,generatedQr:null}:e);return}let n=!1;return u(e=>e.generatedQr?{...e,generatedQr:null}:e),H.toDataURL(t,{width:220,margin:1}).then(e=>{n||u(t=>({...t,generatedQr:e}))}),()=>{n=!0}},[e.id,l.payload]),(0,U.useEffect)(()=>{let n=l.poll;if(!n)return;let i=!1,a=window.setInterval(()=>{i||K({channelId:e.id,actionId:n.actionId,locale:t,input:{sessionKey:n.sessionKey}}).then(async e=>{i||(u(t=>({...t,payload:e,poll:q(e)?null:t.poll,error:null})),`configChanged`in e&&e.configChanged===!0&&await r(),q(e)&&window.clearInterval(a))}).catch(e=>{i||u(t=>({...t,error:e instanceof Error?e.message:String(e)}))})},n.intervalMs);return()=>{i=!0,window.clearInterval(a)}},[e.id,t,r,l.poll]);let f=o?.[1].label??(e.configured?n.reconnect:n.connect),p=e.actions?.[`doctor.run`]?.label??n.diagnose,m=J(l.payload),g=Y(l.payload,e.id),_=g?l.generatedQr:X(l.payload),v=l.payload?.type===`form`?l.payload:null,y=l.payload?.type===`diagnostics`?l.payload.checks:null;return(0,W.jsxs)(`div`,{className:a?`space-y-3`:`rounded-lg border border-edge-subtle bg-surface-panel p-4`,children:[(0,W.jsxs)(`div`,{className:M(`flex flex-wrap items-start gap-3`,a?`justify-end`:`justify-between`),children:[a?null:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n.setupTitle}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:e.configured?n.setupConfiguredHint:n.setupEmptyHint})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o?(0,W.jsxs)(T,{type:`button`,variant:`primary`,disabled:l.busy,onClick:()=>void d(o[0]),children:[l.busy?(0,W.jsx)(O,{className:`size-4 animate-spin`}):(0,W.jsx)(P,{className:`size-4`}),f]}):null,e.actions?.[`doctor.run`]?(0,W.jsxs)(T,{type:`button`,variant:`secondary`,disabled:l.busy,onClick:()=>void d(`doctor.run`),children:[(0,W.jsx)(h,{className:`size-4`}),p]}):null]})]}),m?(0,W.jsx)(`p`,{className:`mt-3 text-sm text-fg-muted`,children:m}):null,l.error?(0,W.jsx)(`p`,{className:`mt-3 text-sm text-red-600 dark:text-red-400`,children:l.error}):null,_?(0,W.jsxs)(`div`,{className:M(`flex flex-wrap items-start gap-4`,a?`justify-center`:`mt-4`),children:[(0,W.jsx)(`div`,{className:`rounded-lg border border-edge bg-white p-3`,children:(0,W.jsx)(`img`,{src:_,alt:`${e.label} setup QR`,className:`h-52 w-52 object-contain`})}),(0,W.jsxs)(`div`,{className:M(`max-w-sm text-sm text-fg-muted`,a&&`w-full text-center`),children:[(0,W.jsx)(`p`,{children:n.waitingConfirmation}),g?(0,W.jsxs)(`a`,{className:`mt-2 inline-flex items-center gap-1 text-accent hover:underline`,href:g,target:`_blank`,rel:`noreferrer`,children:[n.openSetupLink,(0,W.jsx)(C,{className:`size-3.5`})]}):null]})]}):null,l.payload?.type===`poll`&&l.payload.phase===`done`?(0,W.jsxs)(`div`,{className:`mt-4 flex items-center gap-2 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 text-sm`,children:[(0,W.jsx)(c,{className:l.payload.ok?`size-4 text-green-600`:`size-4 text-red-600`}),(0,W.jsx)(`span`,{className:l.payload.ok?`text-fg`:`text-red-600 dark:text-red-400`,children:l.payload.message??(l.payload.ok?n.complete:n.failed)})]}):null,v?(0,W.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,W.jsx)(z,{schema:v.schema,values:l.formDraft,onChange:e=>u(t=>({...t,formDraft:e})),disabled:l.busy,labels:s}),(0,W.jsx)(T,{type:`button`,variant:`primary`,disabled:l.busy,onClick:()=>void d(v.submitAction,l.formDraft),children:n.saveSetup})]}):null,y?(0,W.jsx)(`div`,{className:`mt-4 space-y-2`,children:y.map((e,t)=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-edge-subtle bg-surface-base px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:e.label??e.id??n.diagnosticCheckFallback.replace(`{{index}}`,String(t+1))}),(0,W.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-xs text-fg-muted`,children:e.status??`unknown`})]}),e.message?(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:e.message}):null]},e.id??t))}):null]})}function te(e,t=!1){return e===`drawer`?M(`xopc-drawer-right fixed right-0 top-0 flex size-full flex-col overflow-hidden border-l border-edge bg-surface-panel shadow-popover outline-none dark:border-edge`,t?`max-w-[36rem]`:`max-w-xl`,R):M(`fixed left-1/2 top-1/2 flex max-h-[min(90vh,52rem)] w-[min(calc(100%-2rem),32rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden`,t&&`max-h-[min(90vh,48rem)] w-[min(calc(100%-2rem),36rem)]`,R,`rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none dark:border-edge`)}function ne(e){let t=(0,V.c)(30),{presentation:n,open:r,onOpenChange:i,title:a,description:o,srTitle:s,srDescription:c,closeAriaLabel:l,children:u,footer:d,wide:h,headerExtra:g}=e,_=h===void 0?!1:h,x=n===`drawer`,S;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,W.jsx)(v,{className:M(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,y)}),t[0]=S):S=t[0];let C;t[1]!==n||t[2]!==_?(C=te(n,_),t[1]=n,t[2]=_,t[3]=C):C=t[3];let w;t[4]===s?w=t[5]:(w=s?(0,W.jsx)(k,{className:`sr-only`,children:s}):null,t[4]=s,t[5]=w);let D;t[6]===c?D=t[7]:(D=c?(0,W.jsx)(p,{className:`sr-only`,children:c}):null,t[6]=c,t[7]=D);let O;t[8]!==l||t[9]!==o||t[10]!==g||t[11]!==x||t[12]!==a?(O=x?(0,W.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3 border-b border-edge px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[a?(0,W.jsx)(`div`,{className:`text-base font-semibold text-fg`,children:a}):null,o?(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:o}):null]}),(0,W.jsx)(b,{asChild:!0,children:(0,W.jsx)(T,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":l,children:(0,W.jsx)(E,{className:`size-5`,strokeWidth:1.75})})})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(b,{asChild:!0,children:(0,W.jsx)(`button`,{type:`button`,className:M(N,`absolute right-3 top-3 z-20 p-1.5 hover:bg-surface-hover`),"aria-label":l,children:(0,W.jsx)(E,{className:`size-4`})})}),g]}),t[8]=l,t[9]=o,t[10]=g,t[11]=x,t[12]=a,t[13]=O):O=t[13];let j=x?`px-4 py-4`:`p-6`,P;t[14]===j?P=t[15]:(P=M(`min-h-0 flex-1 overflow-y-auto`,j),t[14]=j,t[15]=P);let F;t[16]!==u||t[17]!==P?(F=(0,W.jsx)(`div`,{className:P,children:u}),t[16]=u,t[17]=P,t[18]=F):F=t[18];let I;t[19]!==d||t[20]!==C||t[21]!==w||t[22]!==D||t[23]!==O||t[24]!==F?(I=(0,W.jsxs)(A,{children:[S,(0,W.jsxs)(m,{className:C,onOpenAutoFocus:re,children:[w,D,O,F,d]})]}),t[19]=d,t[20]=C,t[21]=w,t[22]=D,t[23]=O,t[24]=F,t[25]=I):I=t[25];let L;return t[26]!==i||t[27]!==r||t[28]!==I?(L=(0,W.jsx)(f,{open:r,onOpenChange:i,children:I}),t[26]=i,t[27]=r,t[28]=I,t[29]=L):L=t[29],L}function re(e){return e.preventDefault()}var ie=(0,U.memo)(function(e){let t=(0,V.c)(15),{ch:n,refreshing:r,saveOk:i,onRefresh:a}=e,o;t[0]!==n.saved||t[1]!==i?(o=i?(0,W.jsx)(`span`,{className:`text-sm text-fg-muted`,children:n.saved}):null,t[0]=n.saved,t[1]=i,t[2]=o):o=t[2];let s=n.refresh,c=n.refresh,l=r&&`animate-spin`,u;t[3]===l?u=t[4]:(u=M(`size-4`,l),t[3]=l,t[4]=u);let d;t[5]===u?d=t[6]:(d=(0,W.jsx)(D,{className:u,"aria-hidden":!0}),t[5]=u,t[6]=d);let f;t[7]!==n.refresh||t[8]!==a||t[9]!==r||t[10]!==d?(f=(0,W.jsx)(T,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,disabled:r,title:s,"aria-label":c,onClick:a,children:d}),t[7]=n.refresh,t[8]=a,t[9]=r,t[10]=d,t[11]=f):f=t[11];let p;return t[12]!==o||t[13]!==f?(p=(0,W.jsxs)(`div`,{className:`flex min-w-0 shrink-0 items-center justify-end gap-2`,children:[o,f]}),t[12]=o,t[13]=f,t[14]=p):p=t[14],p});function ae(e){let t=(0,V.c)(24),{ch:n,dirty:r,saving:i,onCancel:a,onDiscard:o,onSave:s,showCancel:c}=e,l=c===void 0?!0:c,u;t[0]!==n.unsavedHint||t[1]!==r?(u=r?(0,W.jsx)(`p`,{className:`mb-3 text-xs text-amber-800 dark:text-amber-200`,children:n.unsavedHint}):null,t[0]=n.unsavedHint,t[1]=r,t[2]=u):u=t[2];let d;t[3]!==n.modalCancel||t[4]!==a||t[5]!==l?(d=l?(0,W.jsx)(T,{type:`button`,variant:`secondary`,onClick:a,children:n.modalCancel}):null,t[3]=n.modalCancel,t[4]=a,t[5]=l,t[6]=d):d=t[6];let f=!r||i,p;t[7]!==n.discard||t[8]!==o||t[9]!==f?(p=(0,W.jsx)(T,{type:`button`,variant:`secondary`,disabled:f,onClick:o,children:n.discard}),t[7]=n.discard,t[8]=o,t[9]=f,t[10]=p):p=t[10];let m=!r||i,h;t[11]===s?h=t[12]:(h=()=>void s(),t[11]=s,t[12]=h);let g=i?n.saving:n.save,_;t[13]!==m||t[14]!==h||t[15]!==g?(_=(0,W.jsx)(T,{type:`button`,variant:`primary`,disabled:m,onClick:h,children:g}),t[13]=m,t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==d||t[18]!==p||t[19]!==_?(v=(0,W.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[d,p,_]}),t[17]=d,t[18]=p,t[19]=_,t[20]=v):v=t[20];let y;return t[21]!==v||t[22]!==u?(y=(0,W.jsxs)(`div`,{className:`sticky bottom-0 shrink-0 border-t border-edge-subtle bg-surface-panel px-6 py-4 dark:border-edge-subtle`,children:[u,v]}),t[21]=v,t[22]=u,t[23]=y):y=t[23],y}function oe(e){return o(`/api/channels/catalog?locale=${encodeURIComponent(e)}`)}async function se(e){return(await u(oe(e))).payload?.channels??[]}function ce(e,t){let n=(0,V.c)(14),r;n[0]!==e||n[1]!==t?(r=e?oe(t):null,n[0]=e,n[1]=t,n[2]=r):r=n[2];let i;n[3]===t?i=n[4]:(i=()=>se(t),n[3]=t,n[4]=i);let a;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(a={revalidateOnFocus:!1},n[5]=a):a=n[5];let{data:o,error:c,isLoading:l,isValidating:u,mutate:d}=s(r,i,a),f;n[6]===o?f=n[7]:(f=o??[],n[6]=o,n[7]=f);let p;return n[8]!==c||n[9]!==l||n[10]!==u||n[11]!==d||n[12]!==f?(p={entries:f,isLoading:l,isValidating:u,error:c,mutate:d},n[8]=c,n[9]=l,n[10]=u,n[11]=d,n[12]=f,n[13]=p):p=n[13],p}function le(e){return e?o(`/api/channels/${encodeURIComponent(e)}/config`):null}async function ue(e){return(await u(o(`/api/channels/${encodeURIComponent(e)}/config`))).payload?.config??{}}async function de(){return(await u(o(`/api/config`))).payload?.config?.channels??{}}function Z(e){return e.split(`/`).filter(Boolean).map(e=>encodeURIComponent(e)).join(`/`)}function fe(e,t){return e.enabled&&e.runtime===`loaded`?t.hubStatusRunning:e.enabled?t.hubStatusEnabled:e.configured?t.hubStatusConfigured:t.hubStatusNotConfigured}function pe(e){return e.enabled&&e.runtime===`loaded`?`bg-emerald-500/12 text-emerald-700 dark:text-emerald-300`:e.enabled||e.configured?`bg-accent-soft text-accent`:`bg-surface-hover text-fg-muted`}function me(e){if(!e)return[`enabled`];let t=e.uiHints??{},n=Object.entries(t).filter(([,e])=>!Q(e)||e.advanced===!0?!1:(Array.isArray(e.tags)?e.tags.map(String):[]).includes(`basic`)||e.advanced===!1).map(([e])=>e);return n.length>0?n:[`enabled`]}function Q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $(e){return JSON.parse(JSON.stringify(e??{type:`object`,properties:{}}))}function he(e,t){let n={...$(e),properties:{}};for(let r of t){let t=r.split(`.`),i=e,a=n;for(let[e,n]of t.entries()){let r=i.properties;if(!Q(r)||!Q(r[n]))break;let o=Q(a.properties)?a.properties:{};if(a.properties=o,o[n]||(o[n]={...$(r[n]),properties:{}}),e===t.length-1){o[n]=$(r[n]);break}i=r[n],a=o[n]}}return n}function ge(e){let t=e.properties;if(!Q(t))return!1;for(let[e,n]of Object.entries(t))Q(n)&&n.type===`object`&&ge(n)&&delete t[e];return Object.keys(t).length===0}function _e(e,t){let n=$(e);for(let e of t){let t=e.split(`.`),r=n;for(let[e,n]of t.entries()){let i=r.properties;if(!Q(i))break;if(e===t.length-1){delete i[n];break}if(!Q(i[n]))break;r=i[n]}}return ge(n),n}function ve(e){return e.type===`object`&&Q(e.properties)&&Object.keys(e.properties).length>0}function ye(e,t){let n=e;for(let e of t.split(`.`)){if(!Q(n))return;n=n[e]}return n}function be(e){let t=e.accounts;return Q(t)?Object.values(t).filter(e=>Q(e)&&e.enabled!==!1).length:+(e.configured===!0)}function xe(e,t,n){return t==null||t===``?null:e.toLowerCase().includes(`dmpolicy`)&&typeof t==`string`?`${n.dmPolicy}: ${n.policy.dm[t]??t}`:(e.toLowerCase().includes(`stream`)||e.toLowerCase().includes(`streaming`))&&typeof t==`string`?`${n.cardStream}: ${n.policy.stream[t]??t}`:typeof t==`boolean`?t?n.enabledLabel:n.disabledLabel:String(t)}function Se(e,t,n){let r=[];if(t){let i=e.ui?.card?.summaryFields??[`dmPolicy`,`streamMode`,`streaming.mode`];for(let e of i){let i=xe(e,ye(t,e),n);i&&r.push(i)}let a=be(t);a>0&&r.push(n.cardAccounts.replace(`{{count}}`,String(a)))}return r.length>0?r.slice(0,3):e.configured?[n.hubStatusConfigured]:[]}function Ce(e,t){let n=G(e);return n?.[1].label?n[1].label:e.configured?t.manageChannel:t.startConfiguration}function we({entry:e}){let t=l(e=>e.token),[n,r]=(0,U.useState)(!1),i=(0,U.useMemo)(()=>{if(!e.ui?.icon||n)return null;let r=new URL(o(`/api/extensions/${encodeURIComponent(e.extensionId)}/assets/${Z(e.ui.icon)}`));return t?.trim()&&r.searchParams.set(`token`,t.trim()),r.toString()},[n,e.extensionId,e.ui?.icon,t]);return(0,W.jsx)(`span`,{className:`flex size-12 shrink-0 items-center justify-center rounded-2xl bg-surface-base text-fg`,children:i?(0,W.jsx)(`img`,{src:i,alt:``,draggable:!1,className:`size-7`,"aria-hidden":!0,onError:()=>r(!0)}):(0,W.jsx)(L,{sourceChannel:e.id,className:`size-7`})})}function Te(e){let t=(0,V.c)(16),{checked:n,disabled:r,onToggle:i,label:a}=e,o;t[0]===i?o=t[1]:(o=e=>{e.stopPropagation(),i()},t[0]=i,t[1]=o);let s=n?`border-accent bg-accent`:`border-edge bg-surface-hover`,c=r&&`cursor-not-allowed opacity-60`,l;t[2]!==s||t[3]!==c?(l=M(`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full border transition-colors`,s,c),t[2]=s,t[3]=c,t[4]=l):l=t[4];let u=n?`translate-x-5`:`translate-x-0.5`,d;t[5]===u?d=t[6]:(d=M(`size-5 rounded-full bg-white shadow-surface transition-transform`,u),t[5]=u,t[6]=d);let f;t[7]===d?f=t[8]:(f=(0,W.jsx)(`span`,{className:d}),t[7]=d,t[8]=f);let p;return t[9]!==n||t[10]!==r||t[11]!==a||t[12]!==o||t[13]!==l||t[14]!==f?(p=(0,W.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":n,"aria-label":a,disabled:r,onClick:o,className:l,children:f}),t[9]=n,t[10]=r,t[11]=a,t[12]=o,t[13]=l,t[14]=f,t[15]=p):p=t[15],p}function Ee(e){let t=(0,V.c)(64),{entry:n,config:r,busy:i,ch:a,onOpen:o,onToggle:s}=e,c,l,u,d,f,p,m;if(t[0]!==i||t[1]!==a||t[2]!==r||t[3]!==n||t[4]!==o||t[5]!==s){let e=Se(n,r,a);p=`flex min-h-[15.5rem] flex-col rounded-xl border border-edge-subtle bg-surface-panel p-4 shadow-surface transition-colors hover:border-edge`;let h;t[13]===n?h=t[14]:(h=(0,W.jsx)(we,{entry:n}),t[13]=n,t[14]=h);let g;t[15]===n.label?g=t[16]:(g=(0,W.jsx)(`h2`,{className:`truncate text-base font-semibold text-fg`,children:n.label}),t[15]=n.label,t[16]=g);let _;t[17]===n?_=t[18]:(_=M(`mt-1 inline-flex rounded-full px-2 py-0.5 text-xs font-medium`,pe(n)),t[17]=n,t[18]=_);let v;t[19]!==a||t[20]!==n?(v=fe(n,a),t[19]=a,t[20]=n,t[21]=v):v=t[21];let y;t[22]!==_||t[23]!==v?(y=(0,W.jsx)(`span`,{className:_,children:v}),t[22]=_,t[23]=v,t[24]=y):y=t[24];let b;t[25]!==y||t[26]!==g?(b=(0,W.jsxs)(`div`,{className:`min-w-0`,children:[g,y]}),t[25]=y,t[26]=g,t[27]=b):b=t[27];let x;t[28]!==b||t[29]!==h?(x=(0,W.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[h,b]}),t[28]=b,t[29]=h,t[30]=x):x=t[30];let S=n.enabled===!0,C;t[31]!==a.toggleChannel||t[32]!==n.label?(C=a.toggleChannel.replace(`{{channel}}`,n.label),t[31]=a.toggleChannel,t[32]=n.label,t[33]=C):C=t[33];let w;t[34]!==i||t[35]!==s||t[36]!==S||t[37]!==C?(w=(0,W.jsx)(Te,{checked:S,disabled:i,label:C,onToggle:s}),t[34]=i,t[35]=s,t[36]=S,t[37]=C,t[38]=w):w=t[38],t[39]!==x||t[40]!==w?(m=(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[x,w]}),t[39]=x,t[40]=w,t[41]=m):m=t[41],c=`button`,l=o,u=`mt-5 min-h-[4.5rem] text-left`;let T=n.description??n.id;t[42]===T?d=t[43]:(d=(0,W.jsx)(`p`,{className:`line-clamp-3 text-sm leading-6 text-fg-muted`,children:T}),t[42]=T,t[43]=d),f=e.length>0?(0,W.jsx)(`div`,{className:`mt-3 space-y-0.5 text-sm leading-5 text-fg-muted`,children:e.map(De)}):null,t[0]=i,t[1]=a,t[2]=r,t[3]=n,t[4]=o,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f,t[11]=p,t[12]=m}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12];let h;t[44]!==c||t[45]!==l||t[46]!==u||t[47]!==d||t[48]!==f?(h=(0,W.jsxs)(`button`,{type:c,onClick:l,className:u,children:[d,f]}),t[44]=c,t[45]=l,t[46]=u,t[47]=d,t[48]=f,t[49]=h):h=t[49];let g;t[50]===i?g=t[51]:(g=i?(0,W.jsx)(O,{className:`size-4 animate-spin`}):null,t[50]=i,t[51]=g);let _;t[52]!==a||t[53]!==n?(_=Ce(n,a),t[52]=a,t[53]=n,t[54]=_):_=t[54];let v;t[55]!==o||t[56]!==_||t[57]!==g?(v=(0,W.jsx)(`div`,{className:`mt-auto pt-4`,children:(0,W.jsxs)(T,{type:`button`,variant:`primary`,className:`w-full rounded-2xl py-2.5`,onClick:o,children:[g,_]})}),t[55]=o,t[56]=_,t[57]=g,t[58]=v):v=t[58];let y;return t[59]!==v||t[60]!==p||t[61]!==m||t[62]!==h?(y=(0,W.jsxs)(`article`,{className:p,children:[m,h,v]}),t[59]=v,t[60]=p,t[61]=m,t[62]=h,t[63]=y):y=t[63],y}function De(e){return(0,W.jsx)(`p`,{children:e},e)}function Oe(){let e=i(e=>e.language),t=a(e),n=l(e=>!!e.token),r=w(),{channelId:c}=I(),u=S(c),f=ce(n,e),p=f.entries,{data:m={},mutate:h}=s(n?`channels-config-map`:null,de,{revalidateOnFocus:!1}),v=x(e=>e.setPageHeader),y=x(e=>e.clearPageHeader),b=(0,U.useMemo)(()=>p.find(e=>e.id===u),[u,p]),{data:T,mutate:E}=s(n&&b?le(b.id):null,()=>ue(b.id)),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[L,R]=(0,U.useState)(null),B=D??T??{},V=t.channelsSettings,H=(0,U.useMemo)(()=>b?.configSchema??{type:`object`,properties:{}},[b?.configSchema]),K=(0,U.useMemo)(()=>me(b),[b]),q=(0,U.useMemo)(()=>he(H,K),[K,H]),J=(0,U.useMemo)(()=>_e(H,K),[K,H]),Y=(0,U.useMemo)(()=>({defaultBooleanLabel:V.schemaBooleanDefault,unsupportedArrayType:V.schemaUnsupportedArrayType,arrayAddPlaceholder:V.schemaArrayAddPlaceholder,unsupportedFieldType:(e,t)=>V.schemaUnsupportedFieldType.replace(`{{title}}`,e).replace(`{{type}}`,t?` (${t})`:``)}),[V]),X=(0,U.useMemo)(()=>n?(0,W.jsx)(ie,{ch:V,refreshing:f.isValidating,saveOk:!1,onRefresh:()=>void f.mutate()}):null,[f,V,n]);(0,U.useLayoutEffect)(()=>(v({startExtra:null,main:(0,W.jsx)(`div`,{className:`min-w-0`,children:(0,W.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:t.settingsSections.channels})}),end:X}),()=>y()),[y,X,t.settingsSections.channels,v]);let te=(0,U.useCallback)(e=>{r(F(e)),O(null),R(null)},[r]),re=(0,U.useCallback)(()=>{r(j),O(null),R(null)},[r]),oe=(0,U.useCallback)(async()=>{if(!b||!D)return!1;A(!0),R(null);try{let e=await d(o(`/api/config`),{method:`PATCH`,body:JSON.stringify({channels:{[b.id]:D}})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error?.message??e.statusText)}return await E(D,!1),await h(),await f.mutate(),O(null),!0}catch(e){return R(e instanceof Error?e.message:String(e)),!1}finally{A(!1)}},[b,f,D,h,E]),se=(0,U.useCallback)(async e=>{P(e.id),R(null);try{let t=await d(o(`/api/config`),{method:`PATCH`,body:JSON.stringify({channels:{[e.id]:{enabled:e.enabled!==!0}}})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error?.message??t.statusText)}await f.mutate(),await h(),b?.id===e.id&&await E()}catch(e){R(e instanceof Error?e.message:String(e))}finally{P(null)}},[b?.id,f,h,E]),Z=b?.ui?.modal,Q=Z?.placement!==`replace-config`;return n?(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-app-main px-4 py-6`,children:[f.isLoading?(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:V.loadingChannels}):f.error?(0,W.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:String(f.error)}):(0,W.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-3`,children:p.map(e=>(0,W.jsx)(Ee,{entry:e,config:m[e.id]?.config,busy:N===e.id,ch:V,onOpen:()=>te(e.id),onToggle:()=>void se(e)},e.id))}),L?(0,W.jsx)(`p`,{className:`mt-4 text-sm text-red-600 dark:text-red-400`,children:L}):null,(0,W.jsx)(ne,{presentation:`modal`,open:!!b,onOpenChange:e=>{e||re()},closeAriaLabel:V.close,srTitle:b?.label??V.selectChannel,srDescription:b?.description,wide:!0,footer:b?(0,W.jsx)(ae,{ch:V,dirty:!!D,saving:k,onCancel:re,onDiscard:()=>O(null),onSave:oe}):null,children:b?(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(`div`,{className:`rounded-xl border border-edge-subtle bg-surface-panel px-3 py-3`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,W.jsx)(we,{entry:b}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`truncate text-base font-semibold text-fg`,children:b.label}),(0,W.jsx)(`span`,{className:M(`shrink-0 rounded-full px-2 py-0.5 text-xs font-medium`,pe(b)),children:fe(b,V)})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-sm text-fg-muted`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate`,children:G(b)?.[1].result===`qr`?V.scanLoginHint.replace(`{{channel}}`,b.label):b.description}),b.docsPath?(0,W.jsxs)(`a`,{href:b.docsPath,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-accent hover:underline`,children:[V.docs,(0,W.jsx)(C,{className:`size-3.5`})]}):null]})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 pr-8`,children:[(0,W.jsx)(`span`,{className:`hidden text-xs text-fg-muted sm:inline`,children:V.enabledLabel}),(0,W.jsx)(Te,{checked:b.enabled===!0,disabled:N===b.id,label:V.toggleChannel.replace(`{{channel}}`,b.label),onToggle:()=>void se(b)})]})]})}),Z?.entrypoint&&Z.placement===`before-config`?(0,W.jsx)(_,{extensionId:b.extensionId,extensionName:b.label,entrypoint:Z.entrypoint,permissions:Z.permissions,minHeight:Z.minHeight,maxHeight:Z.maxHeight,initialData:{channelId:b.id,entry:b,config:B}}):null,Z?.placement===`replace-config`?null:(0,W.jsx)(ee,{entry:b,locale:e,messages:V,autoStartPrimary:!0,compact:!0,onChanged:async()=>{await E(),await f.mutate(),await h()}},b.id),Z?.entrypoint&&Z.placement!==`before-config`?(0,W.jsx)(_,{extensionId:b.extensionId,extensionName:b.label,entrypoint:Z.entrypoint,permissions:Z.permissions,minHeight:Z.minHeight,maxHeight:Z.maxHeight,initialData:{channelId:b.id,entry:b,config:B}}):null,Q?(0,W.jsxs)(`section`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-4`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:V.basicConfiguration}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:V.basicConfigurationHint})]}),(0,W.jsx)(z,{schema:q,values:B,onChange:e=>O(e),disabled:k,labels:Y})]}):null,Q&&ve(J)?(0,W.jsxs)(`details`,{className:`group rounded-xl border border-edge-subtle bg-surface-panel`,children:[(0,W.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 px-4 py-3 text-sm font-medium text-fg marker:hidden [&::-webkit-details-marker]:hidden`,children:[(0,W.jsx)(g,{className:`size-4 text-fg-muted`}),V.advancedConfiguration]}),(0,W.jsx)(`div`,{className:`border-t border-edge-subtle p-4`,children:(0,W.jsx)(z,{schema:J,values:B,onChange:e=>O(e),disabled:k,labels:Y})})]}):null,L?(0,W.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:L}):null]}):null})]}):(0,W.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:V.tokenRequired})})}export{Oe as ChannelsSettingsPanel};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a,t as o}from"./url-DQRqHuL-.js";import{i as s}from"./vendor-swr-BIWyz7Rc.js";import{t as c}from"./circle-check-C23XjkUj.js";import{a as l,n as u,t as d}from"./fetch-CFdKBnE6.js";import{Ar as f,Dr as p,Er as m,Ii as h,Ji as g,N as _,Or as v,Tn as y,Tr as b,Vr as x,cn as S,do as C,es as w,fi as T,hi as E,ia as D,ja as O,jr as k,kr as A,on as j,pi as M,ri as N,sa as P,sn as F,ts as I,vr as L,wn as R}from"./index-slwUkhxH.js";import{t as z}from"./schema-form-a6UJCK55.js";import{t as B}from"./browser-BLJWD7WI.js";var V=n(),H=e(B(),1),U=e(t(),1),W=r();function G(e){let t=e.actions??{};for(let e of[`login.start`,`setup.start`]){let n=t[e];if(n?.result===`qr`)return[e,n]}let n=Object.entries(t).find(([,e])=>e.result===`qr`);if(n)return n;let r=e.ui?.card?.primaryAction;if(r&&t[r])return[r,t[r]];for(let e of[`login.start`,`setup.start`]){let n=t[e];if(n)return[e,n]}return Object.entries(t).find(([,e])=>e.result===`form`)??null}async function K(e){let t=await d(o(`/api/channels/${encodeURIComponent(e.channelId)}/actions/${encodeURIComponent(e.actionId)}?locale=${encodeURIComponent(e.locale)}`),{method:`POST`,body:JSON.stringify({...e.accountId?{accountId:e.accountId}:{},...e.input===void 0?{}:{input:e.input}})}),n=await t.json().catch(()=>({}));if(!t.ok||n.ok===!1)throw Error(n.error?.message??t.statusText);return n.payload??{type:`ok`}}function q(e){return e?.type===`poll`&&e.phase===`done`}function J(e){return e&&`message`in e&&typeof e.message==`string`?e.message:null}function Y(e,t){return e?.type!==`qr`&&e?.type!==`poll`?null:e.qrPayload?e.qrPayload:t===`weixin`&&e.qrcodeUrl?e.qrcodeUrl:null}function X(e){return e?.type!==`qr`&&e?.type!==`poll`?null:e.qrcodeUrl??null}function ee({entry:e,locale:t,messages:n,onChanged:r,autoStartPrimary:i=!1,compact:a=!1}){let o=(0,U.useMemo)(()=>G(e),[e]),s=(0,U.useMemo)(()=>({defaultBooleanLabel:n.schemaBooleanDefault,unsupportedArrayType:n.schemaUnsupportedArrayType,arrayAddPlaceholder:n.schemaArrayAddPlaceholder,unsupportedFieldType:(e,t)=>n.schemaUnsupportedFieldType.replace(`{{title}}`,e).replace(`{{type}}`,t?` (${t})`:``)}),[n]),[l,u]=(0,U.useState)({payload:null,poll:null,busy:!1,error:null,formDraft:{},generatedQr:null});(0,U.useEffect)(()=>{u({payload:null,poll:null,busy:!1,error:null,formDraft:{},generatedQr:null})},[e.id]);let d=(0,U.useCallback)(async(n,i)=>{u(e=>({...e,busy:!0,error:null}));try{let a=await K({channelId:e.id,actionId:n,locale:t,input:i});u(e=>({...e,payload:a,poll:a.type===`qr`&&a.statusAction&&a.sessionKey?{actionId:a.statusAction,sessionKey:a.sessionKey,intervalMs:Math.max(1e3,a.pollIntervalMs??2500)}:null,busy:!1,formDraft:a.type===`form`?a.values??{}:e.formDraft})),`configChanged`in a&&a.configChanged===!0&&await r()}catch(e){u(t=>({...t,busy:!1,error:e instanceof Error?e.message:String(e)}))}},[e.id,t,r]);(0,U.useEffect)(()=>{!i||!o||o[1].result!==`qr`||l.payload||l.busy||l.error||d(o[0])},[i,o,d,l.busy,l.error,l.payload]),(0,U.useEffect)(()=>{let t=Y(l.payload,e.id);if(!t){u(e=>e.generatedQr?{...e,generatedQr:null}:e);return}let n=!1;return u(e=>e.generatedQr?{...e,generatedQr:null}:e),H.toDataURL(t,{width:220,margin:1}).then(e=>{n||u(t=>({...t,generatedQr:e}))}),()=>{n=!0}},[e.id,l.payload]),(0,U.useEffect)(()=>{let n=l.poll;if(!n)return;let i=!1,a=window.setInterval(()=>{i||K({channelId:e.id,actionId:n.actionId,locale:t,input:{sessionKey:n.sessionKey}}).then(async e=>{i||(u(t=>({...t,payload:e,poll:q(e)?null:t.poll,error:null})),`configChanged`in e&&e.configChanged===!0&&await r(),q(e)&&window.clearInterval(a))}).catch(e=>{i||u(t=>({...t,error:e instanceof Error?e.message:String(e)}))})},n.intervalMs);return()=>{i=!0,window.clearInterval(a)}},[e.id,t,r,l.poll]);let f=o?.[1].label??(e.configured?n.reconnect:n.connect),p=e.actions?.[`doctor.run`]?.label??n.diagnose,m=J(l.payload),g=Y(l.payload,e.id),_=g?l.generatedQr:X(l.payload),v=l.payload?.type===`form`?l.payload:null,y=l.payload?.type===`diagnostics`?l.payload.checks:null;return(0,W.jsxs)(`div`,{className:a?`space-y-3`:`rounded-lg border border-edge-subtle bg-surface-panel p-4`,children:[(0,W.jsxs)(`div`,{className:M(`flex flex-wrap items-start gap-3`,a?`justify-end`:`justify-between`),children:[a?null:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n.setupTitle}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:e.configured?n.setupConfiguredHint:n.setupEmptyHint})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o?(0,W.jsxs)(T,{type:`button`,variant:`primary`,disabled:l.busy,onClick:()=>void d(o[0]),children:[l.busy?(0,W.jsx)(O,{className:`size-4 animate-spin`}):(0,W.jsx)(P,{className:`size-4`}),f]}):null,e.actions?.[`doctor.run`]?(0,W.jsxs)(T,{type:`button`,variant:`secondary`,disabled:l.busy,onClick:()=>void d(`doctor.run`),children:[(0,W.jsx)(h,{className:`size-4`}),p]}):null]})]}),m?(0,W.jsx)(`p`,{className:`mt-3 text-sm text-fg-muted`,children:m}):null,l.error?(0,W.jsx)(`p`,{className:`mt-3 text-sm text-red-600 dark:text-red-400`,children:l.error}):null,_?(0,W.jsxs)(`div`,{className:M(`flex flex-wrap items-start gap-4`,a?`justify-center`:`mt-4`),children:[(0,W.jsx)(`div`,{className:`rounded-lg border border-edge bg-white p-3`,children:(0,W.jsx)(`img`,{src:_,alt:`${e.label} setup QR`,className:`h-52 w-52 object-contain`})}),(0,W.jsxs)(`div`,{className:M(`max-w-sm text-sm text-fg-muted`,a&&`w-full text-center`),children:[(0,W.jsx)(`p`,{children:n.waitingConfirmation}),g?(0,W.jsxs)(`a`,{className:`mt-2 inline-flex items-center gap-1 text-accent hover:underline`,href:g,target:`_blank`,rel:`noreferrer`,children:[n.openSetupLink,(0,W.jsx)(C,{className:`size-3.5`})]}):null]})]}):null,l.payload?.type===`poll`&&l.payload.phase===`done`?(0,W.jsxs)(`div`,{className:`mt-4 flex items-center gap-2 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 text-sm`,children:[(0,W.jsx)(c,{className:l.payload.ok?`size-4 text-green-600`:`size-4 text-red-600`}),(0,W.jsx)(`span`,{className:l.payload.ok?`text-fg`:`text-red-600 dark:text-red-400`,children:l.payload.message??(l.payload.ok?n.complete:n.failed)})]}):null,v?(0,W.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,W.jsx)(z,{schema:v.schema,values:l.formDraft,onChange:e=>u(t=>({...t,formDraft:e})),disabled:l.busy,labels:s}),(0,W.jsx)(T,{type:`button`,variant:`primary`,disabled:l.busy,onClick:()=>void d(v.submitAction,l.formDraft),children:n.saveSetup})]}):null,y?(0,W.jsx)(`div`,{className:`mt-4 space-y-2`,children:y.map((e,t)=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-edge-subtle bg-surface-base px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:e.label??e.id??n.diagnosticCheckFallback.replace(`{{index}}`,String(t+1))}),(0,W.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-xs text-fg-muted`,children:e.status??`unknown`})]}),e.message?(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:e.message}):null]},e.id??t))}):null]})}function te(e,t=!1){return e===`drawer`?M(`xopc-drawer-right fixed right-0 top-0 flex size-full flex-col overflow-hidden border-l border-edge bg-surface-panel shadow-popover outline-none dark:border-edge`,t?`max-w-[36rem]`:`max-w-xl`,R):M(`fixed left-1/2 top-1/2 flex max-h-[min(90vh,52rem)] w-[min(calc(100%-2rem),32rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden`,t&&`max-h-[min(90vh,48rem)] w-[min(calc(100%-2rem),36rem)]`,R,`rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none dark:border-edge`)}function ne(e){let t=(0,V.c)(30),{presentation:n,open:r,onOpenChange:i,title:a,description:o,srTitle:s,srDescription:c,closeAriaLabel:l,children:u,footer:d,wide:h,headerExtra:g}=e,_=h===void 0?!1:h,x=n===`drawer`,S;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,W.jsx)(v,{className:M(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,y)}),t[0]=S):S=t[0];let C;t[1]!==n||t[2]!==_?(C=te(n,_),t[1]=n,t[2]=_,t[3]=C):C=t[3];let w;t[4]===s?w=t[5]:(w=s?(0,W.jsx)(k,{className:`sr-only`,children:s}):null,t[4]=s,t[5]=w);let D;t[6]===c?D=t[7]:(D=c?(0,W.jsx)(p,{className:`sr-only`,children:c}):null,t[6]=c,t[7]=D);let O;t[8]!==l||t[9]!==o||t[10]!==g||t[11]!==x||t[12]!==a?(O=x?(0,W.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3 border-b border-edge px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[a?(0,W.jsx)(`div`,{className:`text-base font-semibold text-fg`,children:a}):null,o?(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:o}):null]}),(0,W.jsx)(b,{asChild:!0,children:(0,W.jsx)(T,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":l,children:(0,W.jsx)(E,{className:`size-5`,strokeWidth:1.75})})})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(b,{asChild:!0,children:(0,W.jsx)(`button`,{type:`button`,className:M(N,`absolute right-3 top-3 z-20 p-1.5 hover:bg-surface-hover`),"aria-label":l,children:(0,W.jsx)(E,{className:`size-4`})})}),g]}),t[8]=l,t[9]=o,t[10]=g,t[11]=x,t[12]=a,t[13]=O):O=t[13];let j=x?`px-4 py-4`:`p-6`,P;t[14]===j?P=t[15]:(P=M(`min-h-0 flex-1 overflow-y-auto`,j),t[14]=j,t[15]=P);let F;t[16]!==u||t[17]!==P?(F=(0,W.jsx)(`div`,{className:P,children:u}),t[16]=u,t[17]=P,t[18]=F):F=t[18];let I;t[19]!==d||t[20]!==C||t[21]!==w||t[22]!==D||t[23]!==O||t[24]!==F?(I=(0,W.jsxs)(A,{children:[S,(0,W.jsxs)(m,{className:C,onOpenAutoFocus:re,children:[w,D,O,F,d]})]}),t[19]=d,t[20]=C,t[21]=w,t[22]=D,t[23]=O,t[24]=F,t[25]=I):I=t[25];let L;return t[26]!==i||t[27]!==r||t[28]!==I?(L=(0,W.jsx)(f,{open:r,onOpenChange:i,children:I}),t[26]=i,t[27]=r,t[28]=I,t[29]=L):L=t[29],L}function re(e){return e.preventDefault()}var ie=(0,U.memo)(function(e){let t=(0,V.c)(15),{ch:n,refreshing:r,saveOk:i,onRefresh:a}=e,o;t[0]!==n.saved||t[1]!==i?(o=i?(0,W.jsx)(`span`,{className:`text-sm text-fg-muted`,children:n.saved}):null,t[0]=n.saved,t[1]=i,t[2]=o):o=t[2];let s=n.refresh,c=n.refresh,l=r&&`animate-spin`,u;t[3]===l?u=t[4]:(u=M(`size-4`,l),t[3]=l,t[4]=u);let d;t[5]===u?d=t[6]:(d=(0,W.jsx)(D,{className:u,"aria-hidden":!0}),t[5]=u,t[6]=d);let f;t[7]!==n.refresh||t[8]!==a||t[9]!==r||t[10]!==d?(f=(0,W.jsx)(T,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,disabled:r,title:s,"aria-label":c,onClick:a,children:d}),t[7]=n.refresh,t[8]=a,t[9]=r,t[10]=d,t[11]=f):f=t[11];let p;return t[12]!==o||t[13]!==f?(p=(0,W.jsxs)(`div`,{className:`flex min-w-0 shrink-0 items-center justify-end gap-2`,children:[o,f]}),t[12]=o,t[13]=f,t[14]=p):p=t[14],p});function ae(e){let t=(0,V.c)(24),{ch:n,dirty:r,saving:i,onCancel:a,onDiscard:o,onSave:s,showCancel:c}=e,l=c===void 0?!0:c,u;t[0]!==n.unsavedHint||t[1]!==r?(u=r?(0,W.jsx)(`p`,{className:`mb-3 text-xs text-amber-800 dark:text-amber-200`,children:n.unsavedHint}):null,t[0]=n.unsavedHint,t[1]=r,t[2]=u):u=t[2];let d;t[3]!==n.modalCancel||t[4]!==a||t[5]!==l?(d=l?(0,W.jsx)(T,{type:`button`,variant:`secondary`,onClick:a,children:n.modalCancel}):null,t[3]=n.modalCancel,t[4]=a,t[5]=l,t[6]=d):d=t[6];let f=!r||i,p;t[7]!==n.discard||t[8]!==o||t[9]!==f?(p=(0,W.jsx)(T,{type:`button`,variant:`secondary`,disabled:f,onClick:o,children:n.discard}),t[7]=n.discard,t[8]=o,t[9]=f,t[10]=p):p=t[10];let m=!r||i,h;t[11]===s?h=t[12]:(h=()=>void s(),t[11]=s,t[12]=h);let g=i?n.saving:n.save,_;t[13]!==m||t[14]!==h||t[15]!==g?(_=(0,W.jsx)(T,{type:`button`,variant:`primary`,disabled:m,onClick:h,children:g}),t[13]=m,t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==d||t[18]!==p||t[19]!==_?(v=(0,W.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[d,p,_]}),t[17]=d,t[18]=p,t[19]=_,t[20]=v):v=t[20];let y;return t[21]!==v||t[22]!==u?(y=(0,W.jsxs)(`div`,{className:`sticky bottom-0 shrink-0 border-t border-edge-subtle bg-surface-panel px-6 py-4 dark:border-edge-subtle`,children:[u,v]}),t[21]=v,t[22]=u,t[23]=y):y=t[23],y}function oe(e){return o(`/api/channels/catalog?locale=${encodeURIComponent(e)}`)}async function se(e){return(await u(oe(e))).payload?.channels??[]}function ce(e,t){let n=(0,V.c)(14),r;n[0]!==e||n[1]!==t?(r=e?oe(t):null,n[0]=e,n[1]=t,n[2]=r):r=n[2];let i;n[3]===t?i=n[4]:(i=()=>se(t),n[3]=t,n[4]=i);let a;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(a={revalidateOnFocus:!1},n[5]=a):a=n[5];let{data:o,error:c,isLoading:l,isValidating:u,mutate:d}=s(r,i,a),f;n[6]===o?f=n[7]:(f=o??[],n[6]=o,n[7]=f);let p;return n[8]!==c||n[9]!==l||n[10]!==u||n[11]!==d||n[12]!==f?(p={entries:f,isLoading:l,isValidating:u,error:c,mutate:d},n[8]=c,n[9]=l,n[10]=u,n[11]=d,n[12]=f,n[13]=p):p=n[13],p}function le(e){return e?o(`/api/channels/${encodeURIComponent(e)}/config`):null}async function ue(e){return(await u(o(`/api/channels/${encodeURIComponent(e)}/config`))).payload?.config??{}}async function de(){return(await u(o(`/api/config`))).payload?.config?.channels??{}}function Z(e){return e.split(`/`).filter(Boolean).map(e=>encodeURIComponent(e)).join(`/`)}function fe(e,t){return e.enabled&&e.runtime===`loaded`?t.hubStatusRunning:e.enabled?t.hubStatusEnabled:e.configured?t.hubStatusConfigured:t.hubStatusNotConfigured}function pe(e){return e.enabled&&e.runtime===`loaded`?`bg-emerald-500/12 text-emerald-700 dark:text-emerald-300`:e.enabled||e.configured?`bg-accent-soft text-accent`:`bg-surface-hover text-fg-muted`}function me(e){if(!e)return[`enabled`];let t=e.uiHints??{},n=Object.entries(t).filter(([,e])=>!Q(e)||e.advanced===!0?!1:(Array.isArray(e.tags)?e.tags.map(String):[]).includes(`basic`)||e.advanced===!1).map(([e])=>e);return n.length>0?n:[`enabled`]}function Q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $(e){return JSON.parse(JSON.stringify(e??{type:`object`,properties:{}}))}function he(e,t){let n={...$(e),properties:{}};for(let r of t){let t=r.split(`.`),i=e,a=n;for(let[e,n]of t.entries()){let r=i.properties;if(!Q(r)||!Q(r[n]))break;let o=Q(a.properties)?a.properties:{};if(a.properties=o,o[n]||(o[n]={...$(r[n]),properties:{}}),e===t.length-1){o[n]=$(r[n]);break}i=r[n],a=o[n]}}return n}function ge(e){let t=e.properties;if(!Q(t))return!1;for(let[e,n]of Object.entries(t))Q(n)&&n.type===`object`&&ge(n)&&delete t[e];return Object.keys(t).length===0}function _e(e,t){let n=$(e);for(let e of t){let t=e.split(`.`),r=n;for(let[e,n]of t.entries()){let i=r.properties;if(!Q(i))break;if(e===t.length-1){delete i[n];break}if(!Q(i[n]))break;r=i[n]}}return ge(n),n}function ve(e){return e.type===`object`&&Q(e.properties)&&Object.keys(e.properties).length>0}function ye(e,t){let n=e;for(let e of t.split(`.`)){if(!Q(n))return;n=n[e]}return n}function be(e){let t=e.accounts;return Q(t)?Object.values(t).filter(e=>Q(e)&&e.enabled!==!1).length:+(e.configured===!0)}function xe(e,t,n){return t==null||t===``?null:e.toLowerCase().includes(`dmpolicy`)&&typeof t==`string`?`${n.dmPolicy}: ${n.policy.dm[t]??t}`:(e.toLowerCase().includes(`stream`)||e.toLowerCase().includes(`streaming`))&&typeof t==`string`?`${n.cardStream}: ${n.policy.stream[t]??t}`:typeof t==`boolean`?t?n.enabledLabel:n.disabledLabel:String(t)}function Se(e,t,n){let r=[];if(t){let i=e.ui?.card?.summaryFields??[`dmPolicy`,`streamMode`,`streaming.mode`];for(let e of i){let i=xe(e,ye(t,e),n);i&&r.push(i)}let a=be(t);a>0&&r.push(n.cardAccounts.replace(`{{count}}`,String(a)))}return r.length>0?r.slice(0,3):e.configured?[n.hubStatusConfigured]:[]}function Ce(e,t){let n=G(e);return n?.[1].label?n[1].label:e.configured?t.manageChannel:t.startConfiguration}function we({entry:e}){let t=l(e=>e.token),[n,r]=(0,U.useState)(!1),i=(0,U.useMemo)(()=>{if(!e.ui?.icon||n)return null;let r=new URL(o(`/api/extensions/${encodeURIComponent(e.extensionId)}/assets/${Z(e.ui.icon)}`));return t?.trim()&&r.searchParams.set(`token`,t.trim()),r.toString()},[n,e.extensionId,e.ui?.icon,t]);return(0,W.jsx)(`span`,{className:`flex size-12 shrink-0 items-center justify-center rounded-2xl bg-surface-base text-fg`,children:i?(0,W.jsx)(`img`,{src:i,alt:``,draggable:!1,className:`size-7`,"aria-hidden":!0,onError:()=>r(!0)}):(0,W.jsx)(L,{sourceChannel:e.id,className:`size-7`})})}function Te(e){let t=(0,V.c)(16),{checked:n,disabled:r,onToggle:i,label:a}=e,o;t[0]===i?o=t[1]:(o=e=>{e.stopPropagation(),i()},t[0]=i,t[1]=o);let s=n?`border-accent bg-accent`:`border-edge bg-surface-hover`,c=r&&`cursor-not-allowed opacity-60`,l;t[2]!==s||t[3]!==c?(l=M(`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full border transition-colors`,s,c),t[2]=s,t[3]=c,t[4]=l):l=t[4];let u=n?`translate-x-5`:`translate-x-0.5`,d;t[5]===u?d=t[6]:(d=M(`size-5 rounded-full bg-white shadow-surface transition-transform`,u),t[5]=u,t[6]=d);let f;t[7]===d?f=t[8]:(f=(0,W.jsx)(`span`,{className:d}),t[7]=d,t[8]=f);let p;return t[9]!==n||t[10]!==r||t[11]!==a||t[12]!==o||t[13]!==l||t[14]!==f?(p=(0,W.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":n,"aria-label":a,disabled:r,onClick:o,className:l,children:f}),t[9]=n,t[10]=r,t[11]=a,t[12]=o,t[13]=l,t[14]=f,t[15]=p):p=t[15],p}function Ee(e){let t=(0,V.c)(64),{entry:n,config:r,busy:i,ch:a,onOpen:o,onToggle:s}=e,c,l,u,d,f,p,m;if(t[0]!==i||t[1]!==a||t[2]!==r||t[3]!==n||t[4]!==o||t[5]!==s){let e=Se(n,r,a);p=`flex min-h-[15.5rem] flex-col rounded-xl border border-edge-subtle bg-surface-panel p-4 shadow-surface transition-colors hover:border-edge`;let h;t[13]===n?h=t[14]:(h=(0,W.jsx)(we,{entry:n}),t[13]=n,t[14]=h);let g;t[15]===n.label?g=t[16]:(g=(0,W.jsx)(`h2`,{className:`truncate text-base font-semibold text-fg`,children:n.label}),t[15]=n.label,t[16]=g);let _;t[17]===n?_=t[18]:(_=M(`mt-1 inline-flex rounded-full px-2 py-0.5 text-xs font-medium`,pe(n)),t[17]=n,t[18]=_);let v;t[19]!==a||t[20]!==n?(v=fe(n,a),t[19]=a,t[20]=n,t[21]=v):v=t[21];let y;t[22]!==_||t[23]!==v?(y=(0,W.jsx)(`span`,{className:_,children:v}),t[22]=_,t[23]=v,t[24]=y):y=t[24];let b;t[25]!==y||t[26]!==g?(b=(0,W.jsxs)(`div`,{className:`min-w-0`,children:[g,y]}),t[25]=y,t[26]=g,t[27]=b):b=t[27];let x;t[28]!==b||t[29]!==h?(x=(0,W.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[h,b]}),t[28]=b,t[29]=h,t[30]=x):x=t[30];let S=n.enabled===!0,C;t[31]!==a.toggleChannel||t[32]!==n.label?(C=a.toggleChannel.replace(`{{channel}}`,n.label),t[31]=a.toggleChannel,t[32]=n.label,t[33]=C):C=t[33];let w;t[34]!==i||t[35]!==s||t[36]!==S||t[37]!==C?(w=(0,W.jsx)(Te,{checked:S,disabled:i,label:C,onToggle:s}),t[34]=i,t[35]=s,t[36]=S,t[37]=C,t[38]=w):w=t[38],t[39]!==x||t[40]!==w?(m=(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[x,w]}),t[39]=x,t[40]=w,t[41]=m):m=t[41],c=`button`,l=o,u=`mt-5 min-h-[4.5rem] text-left`;let T=n.description??n.id;t[42]===T?d=t[43]:(d=(0,W.jsx)(`p`,{className:`line-clamp-3 text-sm leading-6 text-fg-muted`,children:T}),t[42]=T,t[43]=d),f=e.length>0?(0,W.jsx)(`div`,{className:`mt-3 space-y-0.5 text-sm leading-5 text-fg-muted`,children:e.map(De)}):null,t[0]=i,t[1]=a,t[2]=r,t[3]=n,t[4]=o,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f,t[11]=p,t[12]=m}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12];let h;t[44]!==c||t[45]!==l||t[46]!==u||t[47]!==d||t[48]!==f?(h=(0,W.jsxs)(`button`,{type:c,onClick:l,className:u,children:[d,f]}),t[44]=c,t[45]=l,t[46]=u,t[47]=d,t[48]=f,t[49]=h):h=t[49];let g;t[50]===i?g=t[51]:(g=i?(0,W.jsx)(O,{className:`size-4 animate-spin`}):null,t[50]=i,t[51]=g);let _;t[52]!==a||t[53]!==n?(_=Ce(n,a),t[52]=a,t[53]=n,t[54]=_):_=t[54];let v;t[55]!==o||t[56]!==_||t[57]!==g?(v=(0,W.jsx)(`div`,{className:`mt-auto pt-4`,children:(0,W.jsxs)(T,{type:`button`,variant:`primary`,className:`w-full rounded-2xl py-2.5`,onClick:o,children:[g,_]})}),t[55]=o,t[56]=_,t[57]=g,t[58]=v):v=t[58];let y;return t[59]!==v||t[60]!==p||t[61]!==m||t[62]!==h?(y=(0,W.jsxs)(`article`,{className:p,children:[m,h,v]}),t[59]=v,t[60]=p,t[61]=m,t[62]=h,t[63]=y):y=t[63],y}function De(e){return(0,W.jsx)(`p`,{children:e},e)}function Oe(){let e=i(e=>e.language),t=a(e),n=l(e=>!!e.token),r=w(),{channelId:c}=I(),u=S(c),f=ce(n,e),p=f.entries,{data:m={},mutate:h}=s(n?`channels-config-map`:null,de,{revalidateOnFocus:!1}),v=x(e=>e.setPageHeader),y=x(e=>e.clearPageHeader),b=(0,U.useMemo)(()=>p.find(e=>e.id===u),[u,p]),{data:T,mutate:E}=s(n&&b?le(b.id):null,()=>ue(b.id)),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[L,R]=(0,U.useState)(null),B=D??T??{},V=t.channelsSettings,H=(0,U.useMemo)(()=>b?.configSchema??{type:`object`,properties:{}},[b?.configSchema]),K=(0,U.useMemo)(()=>me(b),[b]),q=(0,U.useMemo)(()=>he(H,K),[K,H]),J=(0,U.useMemo)(()=>_e(H,K),[K,H]),Y=(0,U.useMemo)(()=>({defaultBooleanLabel:V.schemaBooleanDefault,unsupportedArrayType:V.schemaUnsupportedArrayType,arrayAddPlaceholder:V.schemaArrayAddPlaceholder,unsupportedFieldType:(e,t)=>V.schemaUnsupportedFieldType.replace(`{{title}}`,e).replace(`{{type}}`,t?` (${t})`:``)}),[V]),X=(0,U.useMemo)(()=>n?(0,W.jsx)(ie,{ch:V,refreshing:f.isValidating,saveOk:!1,onRefresh:()=>void f.mutate()}):null,[f,V,n]);(0,U.useLayoutEffect)(()=>(v({startExtra:null,main:(0,W.jsx)(`div`,{className:`min-w-0`,children:(0,W.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:t.settingsSections.channels})}),end:X}),()=>y()),[y,X,t.settingsSections.channels,v]);let te=(0,U.useCallback)(e=>{r(F(e)),O(null),R(null)},[r]),re=(0,U.useCallback)(()=>{r(j),O(null),R(null)},[r]),oe=(0,U.useCallback)(async()=>{if(!b||!D)return!1;A(!0),R(null);try{let e=await d(o(`/api/config`),{method:`PATCH`,body:JSON.stringify({channels:{[b.id]:D}})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error?.message??e.statusText)}return await E(D,!1),await h(),await f.mutate(),O(null),!0}catch(e){return R(e instanceof Error?e.message:String(e)),!1}finally{A(!1)}},[b,f,D,h,E]),se=(0,U.useCallback)(async e=>{P(e.id),R(null);try{let t=await d(o(`/api/config`),{method:`PATCH`,body:JSON.stringify({channels:{[e.id]:{enabled:e.enabled!==!0}}})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error?.message??t.statusText)}await f.mutate(),await h(),b?.id===e.id&&await E()}catch(e){R(e instanceof Error?e.message:String(e))}finally{P(null)}},[b?.id,f,h,E]),Z=b?.ui?.modal,Q=Z?.placement!==`replace-config`;return n?(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-app-main px-4 py-6`,children:[f.isLoading?(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:V.loadingChannels}):f.error?(0,W.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:String(f.error)}):(0,W.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-3`,children:p.map(e=>(0,W.jsx)(Ee,{entry:e,config:m[e.id]?.config,busy:N===e.id,ch:V,onOpen:()=>te(e.id),onToggle:()=>void se(e)},e.id))}),L?(0,W.jsx)(`p`,{className:`mt-4 text-sm text-red-600 dark:text-red-400`,children:L}):null,(0,W.jsx)(ne,{presentation:`modal`,open:!!b,onOpenChange:e=>{e||re()},closeAriaLabel:V.close,srTitle:b?.label??V.selectChannel,srDescription:b?.description,wide:!0,footer:b?(0,W.jsx)(ae,{ch:V,dirty:!!D,saving:k,onCancel:re,onDiscard:()=>O(null),onSave:oe}):null,children:b?(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(`div`,{className:`rounded-xl border border-edge-subtle bg-surface-panel px-3 py-3`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,W.jsx)(we,{entry:b}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`truncate text-base font-semibold text-fg`,children:b.label}),(0,W.jsx)(`span`,{className:M(`shrink-0 rounded-full px-2 py-0.5 text-xs font-medium`,pe(b)),children:fe(b,V)})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-sm text-fg-muted`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate`,children:G(b)?.[1].result===`qr`?V.scanLoginHint.replace(`{{channel}}`,b.label):b.description}),b.docsPath?(0,W.jsxs)(`a`,{href:b.docsPath,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-accent hover:underline`,children:[V.docs,(0,W.jsx)(C,{className:`size-3.5`})]}):null]})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 pr-8`,children:[(0,W.jsx)(`span`,{className:`hidden text-xs text-fg-muted sm:inline`,children:V.enabledLabel}),(0,W.jsx)(Te,{checked:b.enabled===!0,disabled:N===b.id,label:V.toggleChannel.replace(`{{channel}}`,b.label),onToggle:()=>void se(b)})]})]})}),Z?.entrypoint&&Z.placement===`before-config`?(0,W.jsx)(_,{extensionId:b.extensionId,extensionName:b.label,entrypoint:Z.entrypoint,permissions:Z.permissions,minHeight:Z.minHeight,maxHeight:Z.maxHeight,initialData:{channelId:b.id,entry:b,config:B}}):null,Z?.placement===`replace-config`?null:(0,W.jsx)(ee,{entry:b,locale:e,messages:V,autoStartPrimary:!0,compact:!0,onChanged:async()=>{await E(),await f.mutate(),await h()}},b.id),Z?.entrypoint&&Z.placement!==`before-config`?(0,W.jsx)(_,{extensionId:b.extensionId,extensionName:b.label,entrypoint:Z.entrypoint,permissions:Z.permissions,minHeight:Z.minHeight,maxHeight:Z.maxHeight,initialData:{channelId:b.id,entry:b,config:B}}):null,Q?(0,W.jsxs)(`section`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-4`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:V.basicConfiguration}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:V.basicConfigurationHint})]}),(0,W.jsx)(z,{schema:q,values:B,onChange:e=>O(e),disabled:k,labels:Y})]}):null,Q&&ve(J)?(0,W.jsxs)(`details`,{className:`group rounded-xl border border-edge-subtle bg-surface-panel`,children:[(0,W.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 px-4 py-3 text-sm font-medium text-fg marker:hidden [&::-webkit-details-marker]:hidden`,children:[(0,W.jsx)(g,{className:`size-4 text-fg-muted`}),V.advancedConfiguration]}),(0,W.jsx)(`div`,{className:`border-t border-edge-subtle p-4`,children:(0,W.jsx)(z,{schema:J,values:B,onChange:e=>O(e),disabled:k,labels:Y})})]}):null,L?(0,W.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:L}):null]}):null})]}):(0,W.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:V.tokenRequired})})}export{Oe as ChannelsSettingsPanel};