@openchambery/web 1.19.7-beta.5 → 1.19.7-beta.7

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 (74) hide show
  1. package/dist/assets/{AgentAvatar-ziUs4sw3.js → AgentAvatar-Di8F4QJh.js} +1 -1
  2. package/dist/assets/{AssistantView-neqbgNaR.js → AssistantView-AWe-3bXR.js} +1 -1
  3. package/dist/assets/{ChatContainer-BBKcNWyJ.js → ChatContainer-XHQSSICA.js} +35 -35
  4. package/dist/assets/{ContextPanel-C3LRnrhI.js → ContextPanel-BT6bgBJ_.js} +3 -3
  5. package/dist/assets/{DiagramView-BOuujgEg.js → DiagramView-DNLNZOT6.js} +1 -1
  6. package/dist/assets/{FadeInOnReveal-BAlsRFJH.js → FadeInOnReveal-CV2s6YN8.js} +1 -1
  7. package/dist/assets/{MarkdownRendererImpl-Cj2Tk6Lb.js → MarkdownRendererImpl-C6E0KL8H.js} +1 -1
  8. package/dist/assets/{MobileDetailNavigation-BAy5LnnX.js → MobileDetailNavigation-Sg0VMlOz.js} +1 -1
  9. package/dist/assets/{MobileShareBridge-C03A2Qeb.js → MobileShareBridge-QTUpK3s7.js} +2 -2
  10. package/dist/assets/{MobileSurface-HlOBVawn.js → MobileSurface-BasV1X13.js} +1 -1
  11. package/dist/assets/{MultiRunWindow-0gmV5who.js → MultiRunWindow-BxyF4Xy4.js} +1 -1
  12. package/dist/assets/{OnboardingScreen-CJYyR54B.js → OnboardingScreen-D6rtE7rj.js} +1 -1
  13. package/dist/assets/{OverlayScrollbar-C-jZ8ITG.js → OverlayScrollbar-DlNZho3q.js} +1 -1
  14. package/dist/assets/{SettingsView-BaHbjZ-r.js → SettingsView-BywiwJ_a.js} +1 -1
  15. package/dist/assets/{SettingsWindow-BT-H9i50.js → SettingsWindow-zQ1dc-wl.js} +1 -1
  16. package/dist/assets/{TerminalView-v4YY-9kA.js → TerminalView-BMXYfo8d.js} +1 -1
  17. package/dist/assets/{ToolOutputDialog-1bp7aeoj.js → ToolOutputDialog-CFFkJzQ4.js} +1 -1
  18. package/dist/assets/{appThemeRegistry-ChC97xjW.js → appThemeRegistry-4oEk9SR8.js} +2 -2
  19. package/dist/assets/{clipboard-Bz0Zm9VJ.js → clipboard-D35XSwID.js} +1 -1
  20. package/dist/assets/{desktopRelayRestore-LBt0CBOj.js → desktopRelayRestore-8pvI_dSc.js} +1 -1
  21. package/dist/assets/{dialog-HCE4eLUW.js → dialog-x2hirWBd.js} +1 -1
  22. package/dist/assets/{es-D9KcV5TX.js → es-C8Sqjsia.js} +1 -1
  23. package/dist/assets/{fileQueries-Dnn15WsA.js → fileQueries-DGHZqZHc.js} +1 -1
  24. package/dist/assets/{fr-DPA9qUl3.js → fr-p-Zwm_j2.js} +1 -1
  25. package/dist/assets/{gitApi-BZQvlhsa.js → gitApi-Dqg8EDsg.js} +1 -1
  26. package/dist/assets/{insertionBoundaries-CLGkUXKc.js → insertionBoundaries-BtiZxiKR.js} +1 -1
  27. package/dist/assets/{ja-Dsif3NoD.js → ja-B6REu1qP.js} +1 -1
  28. package/dist/assets/{ko-Dixx4Ctg.js → ko-CJBNH9IZ.js} +1 -1
  29. package/dist/assets/{main-BtZPyHBH.js → main-Blsi9j8P.js} +2 -2
  30. package/dist/assets/{main-W1UkNfir.js → main-D4qq97ip.js} +3 -3
  31. package/dist/assets/{markdownTheme-TdhQOZSN.js → markdownTheme-SPe4jOwX.js} +1 -1
  32. package/dist/assets/{miniChat-Dqm16yyZ.js → miniChat-QgI11lL4.js} +2 -2
  33. package/dist/assets/{mobile-CzSQKW-r.js → mobile-BjMMtvjD.js} +2 -2
  34. package/dist/assets/{multirun-cDeDA8WZ.js → multirun-C9CKfXyS.js} +1 -1
  35. package/dist/assets/{persistence-CmjKImz2.js → persistence-w-AiX2i4.js} +1 -1
  36. package/dist/assets/{pl-Bj78ZGgf.js → pl-B2cBI_7K.js} +1 -1
  37. package/dist/assets/{platform-skqcMARt.js → platform-4eCmsdol.js} +1 -1
  38. package/dist/assets/{projectMeta-DJa04ZTk.js → projectMeta-DzGPV_uF.js} +1 -1
  39. package/dist/assets/{pt-BR-CFL3xSAf.js → pt-BR-CrCc9hmt.js} +1 -1
  40. package/dist/assets/{radio-CTAfZqAa.js → radio-TX0aocEX.js} +1 -1
  41. package/dist/assets/{renderElectronMiniChatApp-CR-zSyTR.js → renderElectronMiniChatApp-DZOBP2No.js} +2 -2
  42. package/dist/assets/{renderMobileApp-InxP28OZ.js → renderMobileApp-DP1_xIqJ.js} +10 -7
  43. package/dist/assets/{runtimeConfig-Fsa7BZKx.js → runtimeConfig-ClsErHd9.js} +1 -1
  44. package/dist/assets/{runtimeEndpointReset-Bp-Y9GZS.js → runtimeEndpointReset-DoLMDfAs.js} +1 -1
  45. package/dist/assets/{shikiHighlight-kzkGYjXV.js → shikiHighlight-B25fE64n.js} +1 -1
  46. package/dist/assets/{sortable-tabs-strip-Bj8N0VWf.js → sortable-tabs-strip-CNDgyX0B.js} +1 -1
  47. package/dist/assets/{store-DzpbXWX1.js → store-CL3WP48T.js} +2 -2
  48. package/dist/assets/{terminalApi-CNqqwjfG.js → terminalApi-CGtOtc8I.js} +1 -1
  49. package/dist/assets/{uk-BY60Ub3Z.js → uk-C8YKAz0x.js} +1 -1
  50. package/dist/assets/{useAppFontEffects-KatUA88o.js → useAppFontEffects-D1u63a6o.js} +2 -2
  51. package/dist/assets/{useAssistantUIStore-DaplPyb0.js → useAssistantUIStore-I0VWrB5V.js} +1 -1
  52. package/dist/assets/{useDesktopWindowControlsLayout-B3Vz7zfM.js → useDesktopWindowControlsLayout-DW_ouBDs.js} +1 -1
  53. package/dist/assets/{useEffectiveDirectory-CoY7Yf8Y.js → useEffectiveDirectory-D976zCCc.js} +1 -1
  54. package/dist/assets/{useFontPreferences-D8emhcNv.js → useFontPreferences-BLZ3y6mN.js} +1 -1
  55. package/dist/assets/{useMobileNavigationStore-90zAmNRR.js → useMobileNavigationStore-lcj5GHR3.js} +4 -4
  56. package/dist/assets/{useSessionAutoCleanup-B2UfFrMn.js → useSessionAutoCleanup-DMNa_krc.js} +1 -1
  57. package/dist/assets/useUIStore-CNLmCoPU.js +1 -0
  58. package/dist/assets/{useWorkerHighlightedLines-Cf50wR0y.js → useWorkerHighlightedLines-BQNOf2U4.js} +1 -1
  59. package/dist/assets/{zh-CN-Cox1LaOW.js → zh-CN-CCYwUnmB.js} +1 -1
  60. package/dist/assets/{zh-TW-B6RU0mxa.js → zh-TW-D8Y6py08.js} +1 -1
  61. package/dist/index.html +7 -7
  62. package/dist/mini-chat.html +7 -7
  63. package/dist/mobile.html +7 -7
  64. package/package.json +1 -1
  65. package/server/lib/notifications/APNS.md +4 -4
  66. package/server/lib/notifications/DOCUMENTATION.md +1 -1
  67. package/server/lib/notifications/apns-runtime.js +139 -20
  68. package/server/lib/notifications/apns-runtime.test.js +66 -7
  69. package/server/lib/notifications/apns-titles.js +62 -62
  70. package/server/lib/notifications/apns-titles.test.js +3 -1
  71. package/server/lib/notifications/routes.js +1 -1
  72. package/server/lib/notifications/runtime.js +25 -49
  73. package/server/lib/opencode/settings-runtime.js +16 -0
  74. package/dist/assets/useUIStore-B7KJS5G7.js +0 -1
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{It as t,r as n}from"./persistence-CmjKImz2.js";import{A as r,O as i,R as a,g as o}from"./desktop-CfLlmafK.js";import{_ as s,h as c,i as l,n as u,r as d}from"./desktopHosts-C1Ns3DUu.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{n as m}from"./vendor-react-DLPElpoQ.js";import{n as h,t as g}from"./clipboard-Bz0Zm9VJ.js";import{t as _}from"./utils-CTL16t2f.js";import{n as v}from"./Icon-CLpn1mIz.js";import{t as y}from"./button-z0GOBtWi.js";import{t as b}from"./input-BG3VWTIF.js";var x=m(),S=e(p(),1),C=f();function w(e){switch(e){case`ok`:return null;case`auth`:return`onboarding.remoteConnection.probe.authMessage`;case`update-recommended`:return`onboarding.remoteConnection.probe.updateRecommendedMessage`;case`incompatible`:return`onboarding.remoteConnection.probe.incompatibleMessage`;case`wrong-service`:return`onboarding.remoteConnection.probe.wrongServiceMessage`;case`unreachable`:return`onboarding.remoteConnection.probe.unreachableMessage`;default:return null}}function T(e){return e===`wrong-service`||e===`unreachable`||e===`incompatible`}function E({onBack:e,showBackButton:t=!0,initialUrl:n=``,initialLabel:i=``,isRecoveryMode:a=!1,onConnect:c,onSwitchToLocal:f}){let{t:p}=h(),[m,g]=(0,S.useState)(n),[_,v]=(0,S.useState)(i),[x,E]=(0,S.useState)(`idle`),[D,O]=(0,S.useState)(null),[k,A]=(0,S.useState)(``),j=s(m),M=j?.persistedUrl??null,N=(0,S.useCallback)(e=>{g(e.target.value),E(`idle`),O(null),A(``)},[]),P=(0,S.useCallback)(e=>{v(e.target.value)},[]),F=(0,S.useCallback)(async()=>{if(M){E(`testing`),O(null),A(``);try{let e=await u(M);O(e),E(e.status===`ok`||e.status===`update-recommended`?`success`:`error`)}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.connectionTestFailed`)),E(`error`)}}},[M,p]),I=(0,S.useCallback)(async()=>{if(!j)return;let e=j.persistedUrl;E(`testing`),O(null),A(``);try{let t=await u(e);if(O(t),T(t.status)){E(`error`);return}let n=await d(),i=_.trim()||e,a=n.hosts.find(t=>t.url===e),s=a?a.id:`host-${Date.now().toString(16)}`,f={id:s,label:i,url:e,apiUrl:e},p=a?n.hosts.map(e=>e.id===s?f:e):[...n.hosts,f];if(await l({hosts:p,defaultHostId:s,initialHostChoiceCompleted:!0}),c?.(),j.redeemUrl){window.location.assign(j.redeemUrl);return}o()&&await r()}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.failedToSaveConnection`)),E(`error`)}},[j,_,c,p]),L=x===`testing`,R=M!==null&&!L,z=M!==null&&!L&&!T(D?.status??null),B=w(D?.status??null),V=D?.status===`ok`,H=D?.status===`update-recommended`,U=D?.status===`auth`,W=T(D?.status??null);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[t&&(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:p(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-2 text-center`,children:[(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:p(a?`onboarding.remoteConnection.titleRecovery`:`onboarding.remoteConnection.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:p(`onboarding.remoteConnection.description`)})]}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-url`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(b,{id:`remote-url`,type:`url`,value:m,onChange:N,placeholder:p(`onboarding.remoteConnection.field.serverAddressPlaceholder`),disabled:L})]}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-label`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.nameOptional`)}),(0,C.jsx)(b,{id:`remote-label`,type:`text`,value:_,onChange:P,placeholder:p(`onboarding.remoteConnection.field.namePlaceholder`),disabled:L})]})]}),D&&V&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-success)`,color:`var(--status-success)`},children:p(`onboarding.remoteConnection.status.connectedSuccessfully`,{latencyMs:D.latencyMs})}),D&&U&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:p(`onboarding.remoteConnection.status.authWarning`)}),D&&H&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:B?p(B):null}),D&&W&&(0,C.jsxs)(`div`,{className:`rounded-lg border p-3 text-sm space-y-3`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`font-semibold mb-1`,children:p(`onboarding.remoteConnection.status.connectionFailed`)}),(0,C.jsx)(`div`,{className:`opacity-90`,children:B?p(B):null})]}),(0,C.jsx)(`div`,{className:`text-xs opacity-80`,children:D.status===`unreachable`?p(`onboarding.remoteConnection.status.suggestionsUnreachable`):p(`onboarding.remoteConnection.status.suggestionsWrongService`)})]}),k&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:k}),(0,C.jsxs)(`div`,{className:`flex gap-3`,children:[(0,C.jsx)(y,{variant:`outline`,onClick:F,disabled:!R,children:p(L?`onboarding.remoteConnection.actions.testing`:`onboarding.remoteConnection.actions.testConnection`)}),(0,C.jsx)(y,{onClick:I,disabled:!z,children:p(`onboarding.remoteConnection.actions.connectAndRestart`)})]}),W&&(0,C.jsxs)(`div`,{className:`flex flex-col gap-2 pt-2 border-t border-border`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:p(`onboarding.remoteConnection.actions.whatToDo`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:e,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.chooseDifferentServer`)}),!a&&f&&(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:f,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.useLocalInstead`)})]})]})]})})}async function D(){let e=await t(`/health`);if(!e.ok)return!1;let n=await e.json().catch(()=>null);return n?.openCodeRunning===!0||n?.isOpenCodeReady===!0}async function O(){return(await t(`/api/opencode/retry`,{method:`POST`})).ok?D():!1}var k=`curl -fsSL https://opencode.ai/install | bash`,A=`https://opencode.ai/docs`,j=2500,M=1e4;function N(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{className:`flex-1 text-left overflow-x-auto whitespace-nowrap`,children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:r,"aria-label":r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}function P({onCliAvailable:e}){let{t:s}=h(),[c,u]=S.useState(!1),[f,p]=S.useState(!1),[m,x]=S.useState(!1),[w,T]=S.useState(!1),[P,F]=S.useState(``),[I,L]=S.useState(`unknown`),[R,z]=S.useState(`local`),[B,V]=S.useState(!1),[H,U]=S.useState(!1),[W,G]=S.useState(null),K=S.useRef(!1);S.useEffect(()=>{p(o())},[]),S.useEffect(()=>{if(typeof navigator>`u`){L(`unknown`);return}let e=navigator.userAgent||``;/Windows/i.test(e)?L(`windows`):/Macintosh|Mac OS X/i.test(e)?L(`macos`):/Linux/i.test(e)?L(`linux`):L(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let n=await t(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!n.ok)return;let r=await n.json().catch(()=>null);if(!r||e)return;let i=typeof r.opencodeBinary==`string`?r.opencodeBinary.trim():``;i&&F(i)}catch{}})(),()=>{e=!0}},[]);let q=S.useCallback(async e=>{let t=e.target;t.closest(`.app-region-no-drag`)||t.closest(`button, a, input, select, textarea, code, summary, details`)||e.button===0&&f&&await a()},[f]),J=S.useCallback(async e=>{if(!f)return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})},[f]),Y=S.useCallback(async()=>{if(!K.current){K.current=!0;try{f&&await J(`local`),await e?.()}catch(e){throw K.current=!1,e}}},[f,e,J]);S.useEffect(()=>{if(R!==`local`)return;let e=!1,t=null,n=0,r=async()=>{if(!e){try{let t=await D(),r=Date.now();if(!t&&r-n>=M&&(n=r,t=await O()),e)return;if(t){await Y();return}}catch{}e||(t=setTimeout(r,j))}};return t=setTimeout(r,j),()=>{e=!0,t&&clearTimeout(t)}},[R,Y]);let X=S.useCallback(async()=>{T(!0),G(null);try{let e=await D();e||=await O(),e?await Y():G(s(`onboarding.localSetup.errors.cliNotReady`))}catch{G(s(`onboarding.localSetup.errors.detectionFailed`))}finally{T(!1)}},[Y,s]),Z=S.useCallback(async()=>{if(!(typeof window>`u`)&&f)try{let e=await i();e.success&&e.path&&e.path.trim().length>0&&F(e.path.trim())}catch{}},[f]),Q=S.useCallback(async()=>{x(!0);try{if(await n({opencodeBinary:P.trim()}),f){await J(`local`),await r();return}await t(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>x(!1),1e3)}},[f,P,J]),$=S.useCallback(async()=>{let e=await g(k);e.ok?(u(!0),setTimeout(()=>u(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),ee=A,te=I===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:I===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`,ne=!f||R===`local`;return(0,C.jsx)(`div`,{className:`app-region-drag h-full flex items-center justify-center bg-transparent p-8 cursor-default select-none overflow-y-auto`,onMouseDown:q,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-7`,children:[(0,C.jsxs)(`header`,{className:`text-center space-y-1.5`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:s(`onboarding.chooser.title`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`onboarding.chooser.description`)})]}),f&&(0,C.jsxs)(`div`,{className:`app-region-no-drag flex gap-1.5`,children:[(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`local`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`local`),children:s(`onboarding.chooser.tabs.localInstall`)}),(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`remote`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`remote`),children:s(`onboarding.chooser.tabs.connectRemote`)})]}),f&&R===`remote`?(0,C.jsx)(`div`,{className:`app-region-no-drag`,children:(0,C.jsx)(E,{onBack:()=>z(`local`),showBackButton:!1,onSwitchToLocal:()=>z(`local`)})}):null,ne&&(0,C.jsxs)(`div`,{className:`space-y-4`,children:[I===`windows`&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-4`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:s(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground text-center leading-relaxed`,children:s(`onboarding.localSetup.intro`)}),(0,C.jsx)(`div`,{className:`app-region-no-drag rounded-lg border border-border bg-background/60 backdrop-blur-sm px-4 py-3 font-mono text-sm`,children:c?(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),s(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(N,{onCopy:$,copyTitle:s(`onboarding.common.copyToClipboard`)})}),(0,C.jsxs)(`div`,{className:`app-region-no-drag flex items-center justify-between`,children:[(0,C.jsxs)(`a`,{href:ee,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1`,children:[s(I===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),(0,C.jsx)(`button`,{type:`button`,onClick:X,disabled:w,className:`text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,children:s(w?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkNow`)})]}),W&&(0,C.jsx)(`p`,{role:`alert`,className:`text-center text-xs text-[var(--status-error-foreground)]`,children:W}),(0,C.jsxs)(`div`,{className:`rounded-lg border px-4 py-3 flex items-center gap-3`,style:{borderColor:`color-mix(in srgb, var(--primary-base) 20%, transparent)`,backgroundColor:`color-mix(in srgb, var(--primary-base) 6%, transparent)`},role:`status`,"aria-live":`polite`,children:[(0,C.jsxs)(`span`,{className:`relative inline-flex h-2.5 w-2.5 shrink-0`,"aria-hidden":!0,children:[(0,C.jsx)(`span`,{className:`absolute inset-0 rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity 1.6s ease-in-out infinite`}}),(0,C.jsx)(`span`,{className:`absolute inset-[-4px] rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity-dim 1.6s ease-in-out infinite`,opacity:0}})]}),(0,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground leading-tight`,children:s(`onboarding.localSetup.status.watching`)}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground leading-tight mt-0.5`,children:s(`onboarding.localSetup.status.autoContinue`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:B,onToggle:e=>V(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.advanced.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsxs)(`div`,{className:`pb-4 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:P,onChange:e=>F(e.target.value),placeholder:te,disabled:m,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,size:`sm`,onClick:Z,disabled:m||!f,children:s(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,size:`sm`,onClick:Q,disabled:m||!P.trim(),children:s(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:s(`onboarding.localSetup.helper.saveAndReload`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:H,onToggle:e=>U(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.troubleshoot.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsx)(`ul`,{className:`pb-4 space-y-1.5 text-xs text-muted-foreground list-disc pl-4`,children:I===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.missingRuntime`)})]})})]})]})]})})}var F=`curl -fsSL https://opencode.ai/install | bash`,I=`https://opencode.ai/docs`;function L(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors`,title:r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}var R=3e4;function z({onBack:e,onCliAvailable:s,isFromRecovery:c=!1,onSwitchToRemote:l}){let{t:u}=h(),[d,f]=S.useState(!1),[p,m]=S.useState(!1),[_,x]=S.useState(!1),[w,T]=S.useState(!1),[E,k]=S.useState(!1),[A,j]=S.useState(null),[M,N]=S.useState(``),[P,z]=S.useState(`unknown`);S.useEffect(()=>{let e=setTimeout(()=>m(!0),R);return()=>clearTimeout(e)},[]),S.useEffect(()=>{x(o())},[]),S.useEffect(()=>{if(typeof navigator>`u`){z(`unknown`);return}let e=navigator.userAgent||``;if(/Windows/i.test(e)){z(`windows`);return}if(/Macintosh|Mac OS X/i.test(e)){z(`macos`);return}if(/Linux/i.test(e)){z(`linux`);return}z(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let n=await t(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!n.ok)return;let r=await n.json().catch(()=>null);if(!r||e)return;let i=typeof r.opencodeBinary==`string`?r.opencodeBinary.trim():``;i&&N(i)}catch{}})(),()=>{e=!0}},[]);let B=S.useCallback(async e=>{e.target.closest(`button, a, input, select, textarea, code`)||e.button===0&&_&&await a()},[_]),V=S.useCallback(async()=>{if(!(typeof window>`u`)&&_)try{let e=await i();e.success&&e.path&&e.path.trim().length>0&&N(e.path.trim())}catch{}},[_]),H=S.useCallback(async()=>{T(!0);try{if(await n({opencodeBinary:M.trim()}),_){await r();return}await t(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>T(!1),1e3)}},[_,M]),U=S.useCallback(async()=>{let e=await g(F);e.ok?(f(!0),setTimeout(()=>f(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),W=S.useCallback(async()=>{k(!0),j(null);try{let e=await D();e||=await O(),e?s?.():j(u(`onboarding.localSetup.errors.cliNotReady`))}catch(e){j(e instanceof Error?e.message:u(`onboarding.localSetup.errors.detectionFailed`))}finally{k(!1)}},[s,u]),G=I,K=P===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:P===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`;return(0,C.jsxs)(`div`,{className:`h-full flex items-center justify-center bg-transparent p-8 relative cursor-default select-none`,onMouseDown:B,children:[(0,C.jsxs)(`div`,{className:`w-full max-w-lg space-y-4 text-center`,children:[(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:u(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight text-foreground`,children:u(`onboarding.localSetup.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:u(`onboarding.localSetup.description`)})]}),P===`windows`&&(0,C.jsxs)(`div`,{className:`mx-auto max-w-2xl rounded-lg border border-border bg-background/50 p-4 text-left`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:u(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsx)(`div`,{className:`bg-background/60 backdrop-blur-sm border border-border rounded-lg px-5 py-3 font-mono text-sm w-fit`,children:d?(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),u(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(L,{onCopy:U,copyTitle:u(`onboarding.common.copyToClipboard`)})})}),(0,C.jsxs)(`a`,{href:G,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1 justify-center`,children:[u(P===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),A&&(0,C.jsx)(`div`,{className:`mx-auto max-w-md rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive`,children:A}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(y,{type:`button`,onClick:W,disabled:E,className:`w-full max-w-xs`,size:`lg`,children:u(E?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkAndContinue`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:u(`onboarding.localSetup.helper.checkAndContinue`)})]}),(0,C.jsx)(`div`,{className:`mx-auto w-full max-w-xl pt-4`,children:(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:u(`onboarding.localSetup.field.alreadyInstalled`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:M,onChange:e=>N(e.target.value),placeholder:K,disabled:w,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,onClick:V,disabled:w||!_,children:u(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,onClick:H,disabled:w,children:u(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:u(`onboarding.localSetup.helper.saveAndReload`)})]})}),c&&l&&(0,C.jsxs)(`div`,{className:`text-center pt-4`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:u(`onboarding.localSetup.remotePreference`)}),(0,C.jsx)(y,{variant:`link`,onClick:l,children:u(`onboarding.localSetup.actions.connectRemoteServer`)})]})]}),p&&(0,C.jsx)(`div`,{className:`absolute bottom-8 left-0 right-0 text-center space-y-1`,children:P===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.missingRuntime`)})]})})]})}function B(e,t){if(e?.trim())return c(e.trim());if(t)return c(t)}function V(e,t,n){switch(e){case`local-unavailable`:return{title:`Local OpenCode Unavailable`,description:`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,titleKey:`onboarding.desktopRecovery.localUnavailable.title`,descriptionKey:`onboarding.desktopRecovery.localUnavailable.description`,iconKey:`local`,showRetry:!0,retryLabel:`Retry Local`,retryLabelKey:`onboarding.desktopRecovery.localUnavailable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Set Up Local`,useLocalLabelKey:`onboarding.desktopRecovery.localUnavailable.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-missing`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-unreachable`:{let e=B(t,n);return{title:`Remote Server Unreachable`,description:`Could not connect to "${e||`the remote server`}". Check your network connection and verify the server address.`,titleKey:`onboarding.desktopRecovery.remoteUnreachable.title`,descriptionKey:`onboarding.desktopRecovery.remoteUnreachable.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-wrong-service`:{let e=B(t,n);return{title:`Incompatible Server`,description:`The server at "${e||`unknown`}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,titleKey:`onboarding.desktopRecovery.incompatibleServer.title`,descriptionKey:`onboarding.desktopRecovery.incompatibleServer.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-incompatible`:{let e=B(t,n);return{title:`Server Update Required`,description:`The OpenChamber server at "${e||`unknown`}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,titleKey:`onboarding.desktopRecovery.remoteIncompatible.title`,descriptionKey:`onboarding.desktopRecovery.remoteIncompatible.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`missing-default-host`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};default:throw Error(`Unknown recovery variant: ${e}`)}}function H(e){switch(e){case`local`:return(0,C.jsx)(v,{name:`macbook`,className:`h-8 w-8`});case`remote`:return(0,C.jsx)(v,{name:`server`,className:`h-8 w-8`})}}function U({variant:e,hostLabel:t,hostUrl:n,onRetry:r,onUseLocal:i,onUseRemote:a,isRetrying:o=!1}){let{t:s}=h(),l=V(e,t,n),u=l.retryLabelKey??`onboarding.desktopRecovery.actions.retryConnection`,d=S.useMemo(()=>{if(l.descriptionParams?.host)return l.descriptionParams;if(e===`remote-unreachable`)return{host:s(`onboarding.desktopRecovery.placeholders.remoteServer`)};if(e===`remote-wrong-service`||e===`remote-incompatible`)return{host:s(`onboarding.desktopRecovery.placeholders.unknownServer`)}},[l.descriptionParams,s,e]);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col items-center space-y-3 text-center`,children:[(0,C.jsx)(`div`,{className:`p-3 rounded-full`,style:{backgroundColor:`var(--status-warning)`,opacity:.15},children:(0,C.jsx)(`div`,{style:{color:`var(--status-warning)`},children:H(l.iconKey)})}),(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:s(l.titleKey)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm max-w-sm`,children:s(l.descriptionKey,d)})]}),n&&(e===`remote-unreachable`||e===`remote-wrong-service`||e===`remote-incompatible`)&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:s(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(`div`,{className:`font-mono text-sm text-foreground truncate`,children:c(n)})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.showRetry&&r&&(0,C.jsxs)(y,{onClick:r,disabled:o,className:`w-full`,children:[(0,C.jsx)(v,{name:`refresh`,className:_(`h-4 w-4`,o&&`animate-spin`)}),s(o?`onboarding.desktopRecovery.actions.retrying`:u)]}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[l.showUseLocal&&i&&(0,C.jsxs)(y,{variant:`outline`,onClick:i,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`macbook`,className:`h-4 w-4`}),s(l.useLocalLabelKey)]}),l.showUseRemote&&a&&(0,C.jsxs)(y,{variant:`outline`,onClick:a,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`server`,className:`h-4 w-4`}),s(l.useRemoteLabelKey)]})]})]})]})})}function W(e,t){if(t===`use-remote`)return{kind:`remote-form`};switch(e){case`local-unavailable`:return{kind:`local-setup`};case`remote-unreachable`:case`remote-incompatible`:case`remote-wrong-service`:case`remote-missing`:case`missing-default-host`:return{kind:`switch-default-to-local`};default:throw Error(`Unhandled RecoveryVariant: ${e}`)}}function G(e){let n=(0,x.c)(27),{variant:i,hostUrl:a,hostLabel:s,onRetry:c,onChooseRemote:l,showRemoteForm:u,onCloseRemoteForm:d,onSwitchToLocalFromRemote:f,onEnterLocalSetup:p,isRetrying:m}=e,h=u!==void 0&&u,g=m!==void 0&&m,_=K,v;n[0]===c?v=n[1]:(v=async()=>{if(o()){await r();return}await t(`/api/config/reload`,{method:`POST`}),c?.()},n[0]=c,n[1]=v);let y=v,b;n[2]!==p||n[3]!==i?(b=async()=>{if(W(i,`use-local`).kind===`local-setup`){p?.();return}if(await _(`local`),o()){await r();return}window.location.reload()},n[2]=p,n[3]=i,n[4]=b):b=n[4];let S=b,w;n[5]!==l||n[6]!==i?(w=()=>{W(i,`use-remote`).kind===`remote-form`&&l?.()},n[5]=l,n[6]=i,n[7]=w):w=n[7];let T=w;if(h){let e=i===`remote-wrong-service`?``:a||``,t=i===`remote-wrong-service`?``:s||``,c;n[8]!==l||n[9]!==d?(c=d||(()=>l?.()),n[8]=l,n[9]=d,n[10]=c):c=n[10];let u;n[11]!==p||n[12]!==f?(u=f||(()=>{_(`local`).then(()=>{o()?r():p?.()})}),n[11]=p,n[12]=f,n[13]=u):u=n[13];let m;return n[14]!==t||n[15]!==e||n[16]!==c||n[17]!==u?(m=(0,C.jsx)(E,{onBack:c,initialUrl:e,initialLabel:t,isRecoveryMode:!0,onSwitchToLocal:u}),n[14]=t,n[15]=e,n[16]=c,n[17]=u,n[18]=m):m=n[18],m}let D;return n[19]!==y||n[20]!==S||n[21]!==T||n[22]!==s||n[23]!==a||n[24]!==g||n[25]!==i?(D=(0,C.jsx)(U,{variant:i,hostLabel:s,hostUrl:a,onRetry:y,onUseLocal:S,onUseRemote:T,isRetrying:g}),n[19]=y,n[20]=S,n[21]=T,n[22]=s,n[23]=a,n[24]=g,n[25]=i,n[26]=D):D=n[26],D}async function K(e){if(!o())return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})}function q(e){let t=(0,x.c)(26),{onBack:n,onCliAvailable:r,mode:i,recoveryVariant:a,recoveryHostUrl:o,recoveryHostLabel:s,onEnterLocalSetup:c}=e,l=i===void 0?`first-launch`:i,u=a===void 0?`missing-default-host`:a,[d,f]=S.useState(!1),[p,m]=S.useState(!1),h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{m(!1),f(!1)},t[0]=h):h=t[0];let g;t[1]!==l||t[2]!==s||t[3]!==o||t[4]!==u?(g=[l,u,o,s],t[1]=l,t[2]=s,t[3]=o,t[4]=u,t[5]=g):g=t[5],S.useEffect(h,g);let _=p?`local-setup`:l;if(_===`recovery`){let e,n;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=()=>f(!1),n=()=>{f(!1),m(!0)},t[6]=e,t[7]=n):(e=t[6],n=t[7]);let r;t[8]===c?r=t[9]:(r=()=>{m(!0),c?.()},t[8]=c,t[9]=r);let i;return t[10]!==s||t[11]!==o||t[12]!==u||t[13]!==d||t[14]!==r?(i=(0,C.jsx)(G,{variant:u,hostUrl:o,hostLabel:s,showRemoteForm:d,onCloseRemoteForm:e,onSwitchToLocalFromRemote:n,onEnterLocalSetup:r}),t[10]=s,t[11]=o,t[12]=u,t[13]=d,t[14]=r,t[15]=i):i=t[15],i}if(_===`local-setup`){let e;t[16]!==n||t[17]!==p?(e=()=>{p?m(!1):n?.()},t[16]=n,t[17]=p,t[18]=e):e=t[18];let i;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>f(!0),t[19]=i):i=t[19];let a;return t[20]!==r||t[21]!==p||t[22]!==e?(a=(0,C.jsx)(z,{onBack:e,onCliAvailable:r,isFromRecovery:p,onSwitchToRemote:i}),t[20]=r,t[21]=p,t[22]=e,t[23]=a):a=t[23],a}let v;return t[24]===r?v=t[25]:(v=(0,C.jsx)(P,{onCliAvailable:r}),t[24]=r,t[25]=v),v}export{q as OnboardingScreen};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{It as t,r as n}from"./persistence-w-AiX2i4.js";import{A as r,O as i,R as a,g as o}from"./desktop-CfLlmafK.js";import{_ as s,h as c,i as l,n as u,r as d}from"./desktopHosts-C1Ns3DUu.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{n as m}from"./vendor-react-DLPElpoQ.js";import{n as h,t as g}from"./clipboard-D35XSwID.js";import{t as _}from"./utils-CTL16t2f.js";import{n as v}from"./Icon-CLpn1mIz.js";import{t as y}from"./button-z0GOBtWi.js";import{t as b}from"./input-BG3VWTIF.js";var x=m(),S=e(p(),1),C=f();function w(e){switch(e){case`ok`:return null;case`auth`:return`onboarding.remoteConnection.probe.authMessage`;case`update-recommended`:return`onboarding.remoteConnection.probe.updateRecommendedMessage`;case`incompatible`:return`onboarding.remoteConnection.probe.incompatibleMessage`;case`wrong-service`:return`onboarding.remoteConnection.probe.wrongServiceMessage`;case`unreachable`:return`onboarding.remoteConnection.probe.unreachableMessage`;default:return null}}function T(e){return e===`wrong-service`||e===`unreachable`||e===`incompatible`}function E({onBack:e,showBackButton:t=!0,initialUrl:n=``,initialLabel:i=``,isRecoveryMode:a=!1,onConnect:c,onSwitchToLocal:f}){let{t:p}=h(),[m,g]=(0,S.useState)(n),[_,v]=(0,S.useState)(i),[x,E]=(0,S.useState)(`idle`),[D,O]=(0,S.useState)(null),[k,A]=(0,S.useState)(``),j=s(m),M=j?.persistedUrl??null,N=(0,S.useCallback)(e=>{g(e.target.value),E(`idle`),O(null),A(``)},[]),P=(0,S.useCallback)(e=>{v(e.target.value)},[]),F=(0,S.useCallback)(async()=>{if(M){E(`testing`),O(null),A(``);try{let e=await u(M);O(e),E(e.status===`ok`||e.status===`update-recommended`?`success`:`error`)}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.connectionTestFailed`)),E(`error`)}}},[M,p]),I=(0,S.useCallback)(async()=>{if(!j)return;let e=j.persistedUrl;E(`testing`),O(null),A(``);try{let t=await u(e);if(O(t),T(t.status)){E(`error`);return}let n=await d(),i=_.trim()||e,a=n.hosts.find(t=>t.url===e),s=a?a.id:`host-${Date.now().toString(16)}`,f={id:s,label:i,url:e,apiUrl:e},p=a?n.hosts.map(e=>e.id===s?f:e):[...n.hosts,f];if(await l({hosts:p,defaultHostId:s,initialHostChoiceCompleted:!0}),c?.(),j.redeemUrl){window.location.assign(j.redeemUrl);return}o()&&await r()}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.failedToSaveConnection`)),E(`error`)}},[j,_,c,p]),L=x===`testing`,R=M!==null&&!L,z=M!==null&&!L&&!T(D?.status??null),B=w(D?.status??null),V=D?.status===`ok`,H=D?.status===`update-recommended`,U=D?.status===`auth`,W=T(D?.status??null);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[t&&(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:p(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-2 text-center`,children:[(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:p(a?`onboarding.remoteConnection.titleRecovery`:`onboarding.remoteConnection.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:p(`onboarding.remoteConnection.description`)})]}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-url`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(b,{id:`remote-url`,type:`url`,value:m,onChange:N,placeholder:p(`onboarding.remoteConnection.field.serverAddressPlaceholder`),disabled:L})]}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-label`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.nameOptional`)}),(0,C.jsx)(b,{id:`remote-label`,type:`text`,value:_,onChange:P,placeholder:p(`onboarding.remoteConnection.field.namePlaceholder`),disabled:L})]})]}),D&&V&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-success)`,color:`var(--status-success)`},children:p(`onboarding.remoteConnection.status.connectedSuccessfully`,{latencyMs:D.latencyMs})}),D&&U&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:p(`onboarding.remoteConnection.status.authWarning`)}),D&&H&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:B?p(B):null}),D&&W&&(0,C.jsxs)(`div`,{className:`rounded-lg border p-3 text-sm space-y-3`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`font-semibold mb-1`,children:p(`onboarding.remoteConnection.status.connectionFailed`)}),(0,C.jsx)(`div`,{className:`opacity-90`,children:B?p(B):null})]}),(0,C.jsx)(`div`,{className:`text-xs opacity-80`,children:D.status===`unreachable`?p(`onboarding.remoteConnection.status.suggestionsUnreachable`):p(`onboarding.remoteConnection.status.suggestionsWrongService`)})]}),k&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:k}),(0,C.jsxs)(`div`,{className:`flex gap-3`,children:[(0,C.jsx)(y,{variant:`outline`,onClick:F,disabled:!R,children:p(L?`onboarding.remoteConnection.actions.testing`:`onboarding.remoteConnection.actions.testConnection`)}),(0,C.jsx)(y,{onClick:I,disabled:!z,children:p(`onboarding.remoteConnection.actions.connectAndRestart`)})]}),W&&(0,C.jsxs)(`div`,{className:`flex flex-col gap-2 pt-2 border-t border-border`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:p(`onboarding.remoteConnection.actions.whatToDo`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:e,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.chooseDifferentServer`)}),!a&&f&&(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:f,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.useLocalInstead`)})]})]})]})})}async function D(){let e=await t(`/health`);if(!e.ok)return!1;let n=await e.json().catch(()=>null);return n?.openCodeRunning===!0||n?.isOpenCodeReady===!0}async function O(){return(await t(`/api/opencode/retry`,{method:`POST`})).ok?D():!1}var k=`curl -fsSL https://opencode.ai/install | bash`,A=`https://opencode.ai/docs`,j=2500,M=1e4;function N(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{className:`flex-1 text-left overflow-x-auto whitespace-nowrap`,children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:r,"aria-label":r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}function P({onCliAvailable:e}){let{t:s}=h(),[c,u]=S.useState(!1),[f,p]=S.useState(!1),[m,x]=S.useState(!1),[w,T]=S.useState(!1),[P,F]=S.useState(``),[I,L]=S.useState(`unknown`),[R,z]=S.useState(`local`),[B,V]=S.useState(!1),[H,U]=S.useState(!1),[W,G]=S.useState(null),K=S.useRef(!1);S.useEffect(()=>{p(o())},[]),S.useEffect(()=>{if(typeof navigator>`u`){L(`unknown`);return}let e=navigator.userAgent||``;/Windows/i.test(e)?L(`windows`):/Macintosh|Mac OS X/i.test(e)?L(`macos`):/Linux/i.test(e)?L(`linux`):L(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let n=await t(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!n.ok)return;let r=await n.json().catch(()=>null);if(!r||e)return;let i=typeof r.opencodeBinary==`string`?r.opencodeBinary.trim():``;i&&F(i)}catch{}})(),()=>{e=!0}},[]);let q=S.useCallback(async e=>{let t=e.target;t.closest(`.app-region-no-drag`)||t.closest(`button, a, input, select, textarea, code, summary, details`)||e.button===0&&f&&await a()},[f]),J=S.useCallback(async e=>{if(!f)return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})},[f]),Y=S.useCallback(async()=>{if(!K.current){K.current=!0;try{f&&await J(`local`),await e?.()}catch(e){throw K.current=!1,e}}},[f,e,J]);S.useEffect(()=>{if(R!==`local`)return;let e=!1,t=null,n=0,r=async()=>{if(!e){try{let t=await D(),r=Date.now();if(!t&&r-n>=M&&(n=r,t=await O()),e)return;if(t){await Y();return}}catch{}e||(t=setTimeout(r,j))}};return t=setTimeout(r,j),()=>{e=!0,t&&clearTimeout(t)}},[R,Y]);let X=S.useCallback(async()=>{T(!0),G(null);try{let e=await D();e||=await O(),e?await Y():G(s(`onboarding.localSetup.errors.cliNotReady`))}catch{G(s(`onboarding.localSetup.errors.detectionFailed`))}finally{T(!1)}},[Y,s]),Z=S.useCallback(async()=>{if(!(typeof window>`u`)&&f)try{let e=await i();e.success&&e.path&&e.path.trim().length>0&&F(e.path.trim())}catch{}},[f]),Q=S.useCallback(async()=>{x(!0);try{if(await n({opencodeBinary:P.trim()}),f){await J(`local`),await r();return}await t(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>x(!1),1e3)}},[f,P,J]),$=S.useCallback(async()=>{let e=await g(k);e.ok?(u(!0),setTimeout(()=>u(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),ee=A,te=I===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:I===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`,ne=!f||R===`local`;return(0,C.jsx)(`div`,{className:`app-region-drag h-full flex items-center justify-center bg-transparent p-8 cursor-default select-none overflow-y-auto`,onMouseDown:q,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-7`,children:[(0,C.jsxs)(`header`,{className:`text-center space-y-1.5`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:s(`onboarding.chooser.title`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`onboarding.chooser.description`)})]}),f&&(0,C.jsxs)(`div`,{className:`app-region-no-drag flex gap-1.5`,children:[(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`local`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`local`),children:s(`onboarding.chooser.tabs.localInstall`)}),(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`remote`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`remote`),children:s(`onboarding.chooser.tabs.connectRemote`)})]}),f&&R===`remote`?(0,C.jsx)(`div`,{className:`app-region-no-drag`,children:(0,C.jsx)(E,{onBack:()=>z(`local`),showBackButton:!1,onSwitchToLocal:()=>z(`local`)})}):null,ne&&(0,C.jsxs)(`div`,{className:`space-y-4`,children:[I===`windows`&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-4`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:s(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground text-center leading-relaxed`,children:s(`onboarding.localSetup.intro`)}),(0,C.jsx)(`div`,{className:`app-region-no-drag rounded-lg border border-border bg-background/60 backdrop-blur-sm px-4 py-3 font-mono text-sm`,children:c?(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),s(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(N,{onCopy:$,copyTitle:s(`onboarding.common.copyToClipboard`)})}),(0,C.jsxs)(`div`,{className:`app-region-no-drag flex items-center justify-between`,children:[(0,C.jsxs)(`a`,{href:ee,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1`,children:[s(I===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),(0,C.jsx)(`button`,{type:`button`,onClick:X,disabled:w,className:`text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,children:s(w?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkNow`)})]}),W&&(0,C.jsx)(`p`,{role:`alert`,className:`text-center text-xs text-[var(--status-error-foreground)]`,children:W}),(0,C.jsxs)(`div`,{className:`rounded-lg border px-4 py-3 flex items-center gap-3`,style:{borderColor:`color-mix(in srgb, var(--primary-base) 20%, transparent)`,backgroundColor:`color-mix(in srgb, var(--primary-base) 6%, transparent)`},role:`status`,"aria-live":`polite`,children:[(0,C.jsxs)(`span`,{className:`relative inline-flex h-2.5 w-2.5 shrink-0`,"aria-hidden":!0,children:[(0,C.jsx)(`span`,{className:`absolute inset-0 rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity 1.6s ease-in-out infinite`}}),(0,C.jsx)(`span`,{className:`absolute inset-[-4px] rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity-dim 1.6s ease-in-out infinite`,opacity:0}})]}),(0,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground leading-tight`,children:s(`onboarding.localSetup.status.watching`)}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground leading-tight mt-0.5`,children:s(`onboarding.localSetup.status.autoContinue`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:B,onToggle:e=>V(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.advanced.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsxs)(`div`,{className:`pb-4 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:P,onChange:e=>F(e.target.value),placeholder:te,disabled:m,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,size:`sm`,onClick:Z,disabled:m||!f,children:s(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,size:`sm`,onClick:Q,disabled:m||!P.trim(),children:s(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:s(`onboarding.localSetup.helper.saveAndReload`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:H,onToggle:e=>U(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.troubleshoot.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsx)(`ul`,{className:`pb-4 space-y-1.5 text-xs text-muted-foreground list-disc pl-4`,children:I===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.missingRuntime`)})]})})]})]})]})})}var F=`curl -fsSL https://opencode.ai/install | bash`,I=`https://opencode.ai/docs`;function L(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors`,title:r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}var R=3e4;function z({onBack:e,onCliAvailable:s,isFromRecovery:c=!1,onSwitchToRemote:l}){let{t:u}=h(),[d,f]=S.useState(!1),[p,m]=S.useState(!1),[_,x]=S.useState(!1),[w,T]=S.useState(!1),[E,k]=S.useState(!1),[A,j]=S.useState(null),[M,N]=S.useState(``),[P,z]=S.useState(`unknown`);S.useEffect(()=>{let e=setTimeout(()=>m(!0),R);return()=>clearTimeout(e)},[]),S.useEffect(()=>{x(o())},[]),S.useEffect(()=>{if(typeof navigator>`u`){z(`unknown`);return}let e=navigator.userAgent||``;if(/Windows/i.test(e)){z(`windows`);return}if(/Macintosh|Mac OS X/i.test(e)){z(`macos`);return}if(/Linux/i.test(e)){z(`linux`);return}z(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let n=await t(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!n.ok)return;let r=await n.json().catch(()=>null);if(!r||e)return;let i=typeof r.opencodeBinary==`string`?r.opencodeBinary.trim():``;i&&N(i)}catch{}})(),()=>{e=!0}},[]);let B=S.useCallback(async e=>{e.target.closest(`button, a, input, select, textarea, code`)||e.button===0&&_&&await a()},[_]),V=S.useCallback(async()=>{if(!(typeof window>`u`)&&_)try{let e=await i();e.success&&e.path&&e.path.trim().length>0&&N(e.path.trim())}catch{}},[_]),H=S.useCallback(async()=>{T(!0);try{if(await n({opencodeBinary:M.trim()}),_){await r();return}await t(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>T(!1),1e3)}},[_,M]),U=S.useCallback(async()=>{let e=await g(F);e.ok?(f(!0),setTimeout(()=>f(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),W=S.useCallback(async()=>{k(!0),j(null);try{let e=await D();e||=await O(),e?s?.():j(u(`onboarding.localSetup.errors.cliNotReady`))}catch(e){j(e instanceof Error?e.message:u(`onboarding.localSetup.errors.detectionFailed`))}finally{k(!1)}},[s,u]),G=I,K=P===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:P===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`;return(0,C.jsxs)(`div`,{className:`h-full flex items-center justify-center bg-transparent p-8 relative cursor-default select-none`,onMouseDown:B,children:[(0,C.jsxs)(`div`,{className:`w-full max-w-lg space-y-4 text-center`,children:[(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:u(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight text-foreground`,children:u(`onboarding.localSetup.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:u(`onboarding.localSetup.description`)})]}),P===`windows`&&(0,C.jsxs)(`div`,{className:`mx-auto max-w-2xl rounded-lg border border-border bg-background/50 p-4 text-left`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:u(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsx)(`div`,{className:`bg-background/60 backdrop-blur-sm border border-border rounded-lg px-5 py-3 font-mono text-sm w-fit`,children:d?(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),u(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(L,{onCopy:U,copyTitle:u(`onboarding.common.copyToClipboard`)})})}),(0,C.jsxs)(`a`,{href:G,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1 justify-center`,children:[u(P===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),A&&(0,C.jsx)(`div`,{className:`mx-auto max-w-md rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive`,children:A}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(y,{type:`button`,onClick:W,disabled:E,className:`w-full max-w-xs`,size:`lg`,children:u(E?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkAndContinue`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:u(`onboarding.localSetup.helper.checkAndContinue`)})]}),(0,C.jsx)(`div`,{className:`mx-auto w-full max-w-xl pt-4`,children:(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:u(`onboarding.localSetup.field.alreadyInstalled`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:M,onChange:e=>N(e.target.value),placeholder:K,disabled:w,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,onClick:V,disabled:w||!_,children:u(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,onClick:H,disabled:w,children:u(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:u(`onboarding.localSetup.helper.saveAndReload`)})]})}),c&&l&&(0,C.jsxs)(`div`,{className:`text-center pt-4`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:u(`onboarding.localSetup.remotePreference`)}),(0,C.jsx)(y,{variant:`link`,onClick:l,children:u(`onboarding.localSetup.actions.connectRemoteServer`)})]})]}),p&&(0,C.jsx)(`div`,{className:`absolute bottom-8 left-0 right-0 text-center space-y-1`,children:P===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.missingRuntime`)})]})})]})}function B(e,t){if(e?.trim())return c(e.trim());if(t)return c(t)}function V(e,t,n){switch(e){case`local-unavailable`:return{title:`Local OpenCode Unavailable`,description:`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,titleKey:`onboarding.desktopRecovery.localUnavailable.title`,descriptionKey:`onboarding.desktopRecovery.localUnavailable.description`,iconKey:`local`,showRetry:!0,retryLabel:`Retry Local`,retryLabelKey:`onboarding.desktopRecovery.localUnavailable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Set Up Local`,useLocalLabelKey:`onboarding.desktopRecovery.localUnavailable.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-missing`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-unreachable`:{let e=B(t,n);return{title:`Remote Server Unreachable`,description:`Could not connect to "${e||`the remote server`}". Check your network connection and verify the server address.`,titleKey:`onboarding.desktopRecovery.remoteUnreachable.title`,descriptionKey:`onboarding.desktopRecovery.remoteUnreachable.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-wrong-service`:{let e=B(t,n);return{title:`Incompatible Server`,description:`The server at "${e||`unknown`}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,titleKey:`onboarding.desktopRecovery.incompatibleServer.title`,descriptionKey:`onboarding.desktopRecovery.incompatibleServer.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-incompatible`:{let e=B(t,n);return{title:`Server Update Required`,description:`The OpenChamber server at "${e||`unknown`}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,titleKey:`onboarding.desktopRecovery.remoteIncompatible.title`,descriptionKey:`onboarding.desktopRecovery.remoteIncompatible.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`missing-default-host`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};default:throw Error(`Unknown recovery variant: ${e}`)}}function H(e){switch(e){case`local`:return(0,C.jsx)(v,{name:`macbook`,className:`h-8 w-8`});case`remote`:return(0,C.jsx)(v,{name:`server`,className:`h-8 w-8`})}}function U({variant:e,hostLabel:t,hostUrl:n,onRetry:r,onUseLocal:i,onUseRemote:a,isRetrying:o=!1}){let{t:s}=h(),l=V(e,t,n),u=l.retryLabelKey??`onboarding.desktopRecovery.actions.retryConnection`,d=S.useMemo(()=>{if(l.descriptionParams?.host)return l.descriptionParams;if(e===`remote-unreachable`)return{host:s(`onboarding.desktopRecovery.placeholders.remoteServer`)};if(e===`remote-wrong-service`||e===`remote-incompatible`)return{host:s(`onboarding.desktopRecovery.placeholders.unknownServer`)}},[l.descriptionParams,s,e]);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col items-center space-y-3 text-center`,children:[(0,C.jsx)(`div`,{className:`p-3 rounded-full`,style:{backgroundColor:`var(--status-warning)`,opacity:.15},children:(0,C.jsx)(`div`,{style:{color:`var(--status-warning)`},children:H(l.iconKey)})}),(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:s(l.titleKey)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm max-w-sm`,children:s(l.descriptionKey,d)})]}),n&&(e===`remote-unreachable`||e===`remote-wrong-service`||e===`remote-incompatible`)&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:s(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(`div`,{className:`font-mono text-sm text-foreground truncate`,children:c(n)})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.showRetry&&r&&(0,C.jsxs)(y,{onClick:r,disabled:o,className:`w-full`,children:[(0,C.jsx)(v,{name:`refresh`,className:_(`h-4 w-4`,o&&`animate-spin`)}),s(o?`onboarding.desktopRecovery.actions.retrying`:u)]}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[l.showUseLocal&&i&&(0,C.jsxs)(y,{variant:`outline`,onClick:i,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`macbook`,className:`h-4 w-4`}),s(l.useLocalLabelKey)]}),l.showUseRemote&&a&&(0,C.jsxs)(y,{variant:`outline`,onClick:a,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`server`,className:`h-4 w-4`}),s(l.useRemoteLabelKey)]})]})]})]})})}function W(e,t){if(t===`use-remote`)return{kind:`remote-form`};switch(e){case`local-unavailable`:return{kind:`local-setup`};case`remote-unreachable`:case`remote-incompatible`:case`remote-wrong-service`:case`remote-missing`:case`missing-default-host`:return{kind:`switch-default-to-local`};default:throw Error(`Unhandled RecoveryVariant: ${e}`)}}function G(e){let n=(0,x.c)(27),{variant:i,hostUrl:a,hostLabel:s,onRetry:c,onChooseRemote:l,showRemoteForm:u,onCloseRemoteForm:d,onSwitchToLocalFromRemote:f,onEnterLocalSetup:p,isRetrying:m}=e,h=u!==void 0&&u,g=m!==void 0&&m,_=K,v;n[0]===c?v=n[1]:(v=async()=>{if(o()){await r();return}await t(`/api/config/reload`,{method:`POST`}),c?.()},n[0]=c,n[1]=v);let y=v,b;n[2]!==p||n[3]!==i?(b=async()=>{if(W(i,`use-local`).kind===`local-setup`){p?.();return}if(await _(`local`),o()){await r();return}window.location.reload()},n[2]=p,n[3]=i,n[4]=b):b=n[4];let S=b,w;n[5]!==l||n[6]!==i?(w=()=>{W(i,`use-remote`).kind===`remote-form`&&l?.()},n[5]=l,n[6]=i,n[7]=w):w=n[7];let T=w;if(h){let e=i===`remote-wrong-service`?``:a||``,t=i===`remote-wrong-service`?``:s||``,c;n[8]!==l||n[9]!==d?(c=d||(()=>l?.()),n[8]=l,n[9]=d,n[10]=c):c=n[10];let u;n[11]!==p||n[12]!==f?(u=f||(()=>{_(`local`).then(()=>{o()?r():p?.()})}),n[11]=p,n[12]=f,n[13]=u):u=n[13];let m;return n[14]!==t||n[15]!==e||n[16]!==c||n[17]!==u?(m=(0,C.jsx)(E,{onBack:c,initialUrl:e,initialLabel:t,isRecoveryMode:!0,onSwitchToLocal:u}),n[14]=t,n[15]=e,n[16]=c,n[17]=u,n[18]=m):m=n[18],m}let D;return n[19]!==y||n[20]!==S||n[21]!==T||n[22]!==s||n[23]!==a||n[24]!==g||n[25]!==i?(D=(0,C.jsx)(U,{variant:i,hostLabel:s,hostUrl:a,onRetry:y,onUseLocal:S,onUseRemote:T,isRetrying:g}),n[19]=y,n[20]=S,n[21]=T,n[22]=s,n[23]=a,n[24]=g,n[25]=i,n[26]=D):D=n[26],D}async function K(e){if(!o())return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})}function q(e){let t=(0,x.c)(26),{onBack:n,onCliAvailable:r,mode:i,recoveryVariant:a,recoveryHostUrl:o,recoveryHostLabel:s,onEnterLocalSetup:c}=e,l=i===void 0?`first-launch`:i,u=a===void 0?`missing-default-host`:a,[d,f]=S.useState(!1),[p,m]=S.useState(!1),h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{m(!1),f(!1)},t[0]=h):h=t[0];let g;t[1]!==l||t[2]!==s||t[3]!==o||t[4]!==u?(g=[l,u,o,s],t[1]=l,t[2]=s,t[3]=o,t[4]=u,t[5]=g):g=t[5],S.useEffect(h,g);let _=p?`local-setup`:l;if(_===`recovery`){let e,n;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=()=>f(!1),n=()=>{f(!1),m(!0)},t[6]=e,t[7]=n):(e=t[6],n=t[7]);let r;t[8]===c?r=t[9]:(r=()=>{m(!0),c?.()},t[8]=c,t[9]=r);let i;return t[10]!==s||t[11]!==o||t[12]!==u||t[13]!==d||t[14]!==r?(i=(0,C.jsx)(G,{variant:u,hostUrl:o,hostLabel:s,showRemoteForm:d,onCloseRemoteForm:e,onSwitchToLocalFromRemote:n,onEnterLocalSetup:r}),t[10]=s,t[11]=o,t[12]=u,t[13]=d,t[14]=r,t[15]=i):i=t[15],i}if(_===`local-setup`){let e;t[16]!==n||t[17]!==p?(e=()=>{p?m(!1):n?.()},t[16]=n,t[17]=p,t[18]=e):e=t[18];let i;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>f(!0),t[19]=i):i=t[19];let a;return t[20]!==r||t[21]!==p||t[22]!==e?(a=(0,C.jsx)(z,{onBack:e,onCliAvailable:r,isFromRecovery:p,onSwitchToRemote:i}),t[20]=r,t[21]=p,t[22]=e,t[23]=a):a=t[23],a}let v;return t[24]===r?v=t[25]:(v=(0,C.jsx)(P,{onCliAvailable:r}),t[24]=r,t[25]=v),v}export{q as OnboardingScreen};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/rolldown-runtime-C0FnF6B9.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{g as t,y as n}from"./desktop-CfLlmafK.js";import{nt as r,rt as i}from"./vendor-base-ui-CnHfUmDN.js";import{n as a}from"./platform-skqcMARt.js";import{o}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as s}from"./vendor-react-DLPElpoQ.js";import{t as c}from"./utils-CTL16t2f.js";var l=e(i(),1),ee=s(),te=.85,u=1.2,d=10/9,f=.9,p=.95,m=p/f,h=`openchamber.designPtScale.v7`;function g(e){return!Number.isFinite(e)||e<=0?1:Math.min(u,Math.max(te,e))}function _(e){if(!e)return p;let t=e.density,n=(e.xdpi+e.ydpi)/2;if(!(t>0)||!(n>=50)||n>800)return p;let r=g(n/t/163);return Math.min(p,r*m)}function v(){if(typeof window>`u`)return 1;try{let e=Number.parseFloat(window.localStorage.getItem(`openchamber.designPtScale.v7`)??``),t=window.Capacitor?.getPlatform?.();return t===`android`?Math.min(p,g(e)):t===`ios`?d:g(e)}catch{return 1}}function y(e){if(!(typeof window>`u`))try{window.localStorage.setItem(h,String(e))}catch{}}function b(e,t=document.documentElement){let n=g(e);t.style.setProperty(`--dpt`,`${n}px`),t.style.setProperty(`--dpt-n`,String(n))}async function ne(){if(typeof document>`u`)return 1;b(v());let{Capacitor:e,registerPlugin:t}=await o(async()=>{let{Capacitor:e,registerPlugin:t}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{Capacitor:e,registerPlugin:t}},__vite__mapDeps([0,1]));if(!e.isNativePlatform())return b(1),1;if(e.getPlatform()===`ios`)return b(d),y(d),d;if(e.getPlatform()!==`android`)return b(1),1;if(!e.isPluginAvailable(`OpenChamberPhysicalScale`))return b(p),y(p),p;try{let e=_(await t(`OpenChamberPhysicalScale`).getMetrics());return y(e),b(e),e}catch{return b(p),y(p),p}}var x={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},S={isMobile:!1,isTablet:!1,isDesktop:!0,deviceType:`desktop`,screenWidth:1024,breakpoint:`lg`,hasTouchInput:!1,hasTouchOnlyPointer:!1},re=()=>typeof window>`u`?!1:new URLSearchParams(window.location.search).get(`surface`)===`desktop`,C=e=>{if(typeof navigator>`u`)return{isExplicitTablet:!1};let t=navigator.userAgent||``,n=navigator.platform||``,r=/iPad/i.test(t)||(/Macintosh|MacIntel/i.test(t)||/MacIntel/i.test(n))&&e>1,i=/Android/i.test(t)&&!/Mobile/i.test(t),a=/Tablet/i.test(t);return{isExplicitTablet:r||i||a}},w=(e,t,n)=>{if(typeof window>`u`)return;let r=document.documentElement,i=t===`mobile`,a=t===`tablet`;r.classList.remove(`device-mobile`,`device-tablet`,`device-desktop`),r.classList.add(t===`mobile`?`device-mobile`:t===`tablet`?`device-tablet`:`device-desktop`),e?(r.classList.add(`desktop-runtime`),r.style.setProperty(`--is-mobile`,`0`),r.style.setProperty(`--device-type`,`desktop`),r.style.setProperty(`--font-scale`,`1`),r.style.setProperty(`--has-coarse-pointer`,`0`),r.style.setProperty(`--has-touch-input`,`0`),r.classList.remove(`mobile-pointer`)):(r.classList.remove(`desktop-runtime`),r.style.setProperty(`--is-mobile`,i?`1`:`0`),r.style.setProperty(`--device-type`,t),r.style.setProperty(`--font-scale`,i?`0.9`:a?`0.95`:`1`),r.style.setProperty(`--has-coarse-pointer`,n?`1`:`0`),r.style.setProperty(`--has-touch-input`,n?`1`:`0`),n?r.classList.add(`mobile-pointer`):r.classList.remove(`mobile-pointer`)),b(e?1:v(),r)};function T(){let e=window.innerWidth,r=typeof window.matchMedia==`function`,i=r?window.matchMedia(`(pointer: coarse)`):null,o=r?window.matchMedia(`(hover: none)`):null,s=i?.matches??!1,c=o?.matches??!1,l=typeof navigator<`u`?navigator.maxTouchPoints??0:0,ee=t()||n()||re(),{isExplicitTablet:te}=C(l),u=s||c||l>0,d=s||c,f=e>x.md&&e<=x.lg,p=e<=x.md,m=u&&p,h=u&&!m&&(f||te),g=!u||!h&&e>x.lg,_=`desktop`;ee?(m=!1,h=!1,g=!0,_=`desktop`):a()?(m=!0,h=!1,g=!1,_=`mobile`):m?_=`mobile`:h?_=`tablet`:(g=!0,_=`desktop`),w(ee,_,u);let v=`xs`;for(let[t,n]of Object.entries(x))e>=n&&(v=t);return{isMobile:m,isTablet:h,isDesktop:g,deviceType:_,screenWidth:e,breakpoint:v,hasTouchInput:u,hasTouchOnlyPointer:d}}var E=(e,t)=>e.isMobile===t.isMobile&&e.isTablet===t.isTablet&&e.isDesktop===t.isDesktop&&e.deviceType===t.deviceType&&e.screenWidth===t.screenWidth&&e.breakpoint===t.breakpoint&&e.hasTouchInput===t.hasTouchInput&&e.hasTouchOnlyPointer===t.hasTouchOnlyPointer,D=new Set,O=null,k,A=null,ie=()=>typeof window>`u`?S:(O||=T(),O),j=()=>{for(let e of D)e()},M=()=>{k=void 0;let e=T();O&&E(O,e)||(O=e,j())},N=()=>{typeof window>`u`||k!==void 0||(k=window.requestAnimationFrame(M))},P=(e,t)=>e?typeof e.addEventListener==`function`?(e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)):typeof e.addListener==`function`?(e.addListener(t),()=>e.removeListener(t)):()=>{}:()=>{},F=()=>{if(typeof window>`u`)return()=>{};O=T(),window.addEventListener(`resize`,N);let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`):null,t=typeof window.matchMedia==`function`?window.matchMedia(`(hover: none)`):null,n=P(e,N),r=P(t,N);return()=>{window.removeEventListener(`resize`,N),n(),r(),k!==void 0&&(window.cancelAnimationFrame(k),k=void 0)}},I=e=>typeof window>`u`?()=>{}:(D.add(e),A||=F(),()=>{D.delete(e),D.size===0&&A&&(A(),A=null,O=null)});function L(){if(typeof window>`u`||typeof window<`u`&&t())return!1;let e=document.documentElement,n=e.style.getPropertyValue(`--is-mobile`)||getComputedStyle(e).getPropertyValue(`--is-mobile`);return n===`1`||n===`true`}var ae=()=>typeof window>`u`?!1:!!(navigator.standalone===!0||window.matchMedia?.(`(display-mode: standalone)`)?.matches||window.matchMedia?.(`(display-mode: fullscreen)`)?.matches),R=()=>{if(typeof window>`u`||t())return!1;let e=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return ae()&&e>0&&window.innerWidth>x.md};function z(){let e=(0,ee.c)(2),[t,n]=l.useState(B),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(R()),t=window.matchMedia?.(`(display-mode: standalone)`),r=window.matchMedia?.(`(display-mode: fullscreen)`);e(),window.addEventListener(`resize`,e),window.addEventListener(`focus`,e);let i=t=>{t&&(typeof t.addEventListener==`function`?t.addEventListener(`change`,e):typeof t.addListener==`function`&&t.addListener(e))},a=t=>{t&&(typeof t.removeEventListener==`function`?t.removeEventListener(`change`,e):typeof t.removeListener==`function`&&t.removeListener(e))};return i(t),i(r),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`focus`,e),a(t),a(r)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),l.useEffect(r,i),t}function B(){return R()}var V=()=>typeof window>`u`?`portrait`:window.matchMedia?.(`(orientation: landscape)`)?.matches?`landscape`:`portrait`;function H(){let e=(0,ee.c)(2),[t,n]=l.useState(V),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(orientation: landscape)`),t=()=>n(e.matches?`landscape`:`portrait`);return t(),P(e,t)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),l.useEffect(r,i),t}function U(){return l.useSyncExternalStore(I,ie,oe)}function oe(){return S}var se=r(),ce=1e3,W=.5,le={length:0,offset:0},ue=(e,t)=>Math.abs(e.length-t.length)<W&&Math.abs(e.offset-t.offset)<W,G=e=>{let t=(0,ee.c)(66),{containerRef:n,minThumbSize:r,hideDelayMs:i,className:a,disableHorizontal:o,observeMutations:s,suppressVisibility:te,userIntentOnly:u}=e,d=r===void 0?32:r,f=i===void 0?1e3:i,p=o!==void 0&&o,m=s===void 0||s,h=te!==void 0&&te,g=u!==void 0&&u,[_,v]=l.useState(!1),y;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(y={length:0,offset:0},t[0]=y):y=t[0];let[b,ne]=l.useState(y),x;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(x={length:0,offset:0},t[1]=x):x=t[1];let[S,re]=l.useState(x),C=l.useRef(null),w=l.useRef(null),T=l.useRef(null),E=l.useRef(!1),D=l.useRef(!1),O=l.useRef(0),k;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(k={pointerX:0,pointerY:0,scrollTop:0,scrollLeft:0},t[2]=k):k=t[2];let A=l.useRef(k),ie=l.useRef(null),j;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(j=new Set,t[3]=j):j=t[3];let M=l.useRef(j),N;t[4]!==n||t[5]!==p||t[6]!==d?(N=()=>{let e=n.current;if(!e)return;let{scrollHeight:t,clientHeight:r,scrollTop:i,scrollWidth:a,clientWidth:o,scrollLeft:s}=e,c=le;if(t>r){let e=Math.max(r-16,0),n=r/t*e,a=Math.max(d,Math.min(e,n)),o=Math.max(e-a,0);c={length:a,offset:i/Math.max(t-r,1)*o}}ne(e=>ue(e,c)?e:c);let l=le;if(!p&&a>o){let e=Math.max(o-16,0),t=o/a*e,n=Math.max(d,Math.min(e,t)),r=Math.max(e-n,0);l={length:n,offset:s/Math.max(a-o,1)*r}}re(e=>ue(e,l)?e:l)},t[4]=n,t[5]=p,t[6]=d,t[7]=N):N=t[7];let P=N,F;t[8]===P?F=t[9]:(F=()=>{T.current===null&&(T.current=requestAnimationFrame(()=>{T.current=null,P()}))},t[8]=P,t[9]=F);let I=F,L;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(L=(e,t)=>{if(!t){M.current.clear();return}let n=new Set;n.add(e),Array.from(e.children).forEach(e=>{n.add(e)}),M.current.forEach(e=>{n.has(e)||t.unobserve(e)}),n.forEach(e=>{M.current.has(e)||t.observe(e)}),M.current=n},t[10]=L):L=t[10];let ae=L,R;t[11]===f?R=t[12]:(R=()=>{C.current&&clearTimeout(C.current),!D.current&&(C.current=setTimeout(()=>v(!1),f))},t[11]=f,t[12]=R);let z=R,B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>{O.current=Date.now()},t[13]=B):B=t[13];let V=B,H;t[14]!==z||t[15]!==h||t[16]!==P||t[17]!==g?(H=()=>{w.current&&cancelAnimationFrame(w.current),w.current=requestAnimationFrame(()=>{if(P(),h&&!E.current){v(!1);return}if(g&&!E.current&&!(Date.now()-O.current<=ce)){v(!1);return}v(!0),z()})},t[14]=z,t[15]=h,t[16]=P,t[17]=g,t[18]=H):H=t[18];let U=H,oe,W;t[19]!==n||t[20]!==U||t[21]!==m||t[22]!==I||t[23]!==P||t[24]!==g?(oe=()=>{let e=n.current;if(!e)return;P(),v(!1);let t=()=>U(),r=e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`||e.key===`PageUp`||e.key===`PageDown`||e.key===`Home`||e.key===`End`||e.key===` `)&&V()};e.addEventListener(`scroll`,t,{passive:!0}),g&&(e.addEventListener(`wheel`,V,{passive:!0}),e.addEventListener(`touchstart`,V,{passive:!0}),e.addEventListener(`touchmove`,V,{passive:!0}),e.addEventListener(`keydown`,r));let i=typeof ResizeObserver<`u`?new ResizeObserver(()=>{I()}):null;ae(e,i);let a=m&&typeof MutationObserver<`u`?new MutationObserver(()=>{ae(e,i),I()}):null;a?.observe(e,{childList:!0});let o=()=>I(),s=()=>I();return e.addEventListener(`input`,o,!0),e.addEventListener(`load`,s,!0),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`input`,o,!0),e.removeEventListener(`load`,s,!0),g&&(e.removeEventListener(`wheel`,V),e.removeEventListener(`touchstart`,V),e.removeEventListener(`touchmove`,V),e.removeEventListener(`keydown`,r)),i?.disconnect(),a?.disconnect(),M.current.clear(),C.current&&clearTimeout(C.current),w.current&&cancelAnimationFrame(w.current),T.current&&cancelAnimationFrame(T.current)}},W=[n,U,V,m,I,ae,P,g],t[19]=n,t[20]=U,t[21]=m,t[22]=I,t[23]=P,t[24]=g,t[25]=oe,t[26]=W):(oe=t[25],W=t[26]),l.useEffect(oe,W);let G,de;t[27]===h?(G=t[28],de=t[29]):(G=()=>{h&&(E.current||(v(!1),C.current&&=(clearTimeout(C.current),null)))},de=[h],t[27]=h,t[28]=G,t[29]=de),l.useEffect(G,de);let fe;t[30]===n?fe=t[31]:(fe=(e,t)=>{let r=n.current;r&&(E.current=!0,A.current={pointerX:e.clientX,pointerY:e.clientY,scrollTop:r.scrollTop,scrollLeft:r.scrollLeft},ie.current=t,V(),v(!0),C.current&&clearTimeout(C.current),e.currentTarget.setPointerCapture(e.pointerId))},t[30]=n,t[31]=fe);let K=fe,pe;t[32]!==n||t[33]!==S.length||t[34]!==b.length?(pe=e=>{if(!E.current)return;let t=n.current;if(!t)return;let r=ie.current;if(r===`vertical`){let{pointerY:n,scrollTop:r}=A.current,i=e.clientY-n,a=t.clientHeight,o=Math.max(a-b.length,1),s=Math.max(t.scrollHeight-t.clientHeight,1);t.scrollTop=r+i/o*s}else if(r===`horizontal`){let{pointerX:n,scrollLeft:r}=A.current,i=e.clientX-n,a=t.clientWidth,o=Math.max(a-S.length,1),s=Math.max(t.scrollWidth-t.clientWidth,1);t.scrollLeft=r+i/o*s}},t[32]=n,t[33]=S.length,t[34]=b.length,t[35]=pe):pe=t[35];let q=pe,me;t[36]===z?me=t[37]:(me=e=>{E.current&&(E.current=!1,e.currentTarget.releasePointerCapture(e.pointerId),z())},t[36]=z,t[37]=me);let J=me,he;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(he=()=>{D.current=!0,C.current&&=(clearTimeout(C.current),null)},t[38]=he):he=t[38];let ge=he,_e;t[39]===z?_e=t[40]:(_e=()=>{D.current=!1,z()},t[39]=z,t[40]=_e);let Y=_e,ve=b.length>0,ye=S.length>0;if(!ve&&!ye)return null;let X;t[41]===a?X=t[42]:(X=c(`overlay-scrollbar`,a),t[41]=a,t[42]=X);let be=+!!_,Z;t[43]===be?Z=t[44]:(Z={opacity:be},t[43]=be,t[44]=Z);let Q;t[45]!==K||t[46]!==q||t[47]!==J||t[48]!==Y||t[49]!==ve||t[50]!==b.length||t[51]!==b.offset?(Q=ve&&(0,se.jsx)(`div`,{className:`overlay-scrollbar__thumb overlay-scrollbar__thumb--vertical`,"data-overlay-scrollbar-thumb":`vertical`,style:{height:`${b.length}px`,top:`${8+b.offset}px`,right:`4px`},onPointerDown:e=>K(e,`vertical`),onPointerMove:q,onPointerUp:J,onPointerCancel:J,onMouseEnter:ge,onMouseLeave:Y}),t[45]=K,t[46]=q,t[47]=J,t[48]=Y,t[49]=ve,t[50]=b.length,t[51]=b.offset,t[52]=Q):Q=t[52];let $;t[53]!==K||t[54]!==q||t[55]!==J||t[56]!==Y||t[57]!==S.length||t[58]!==S.offset||t[59]!==ye?($=ye&&(0,se.jsx)(`div`,{className:`overlay-scrollbar__thumb overlay-scrollbar__thumb--horizontal`,"data-overlay-scrollbar-thumb":`horizontal`,style:{width:`${S.length}px`,left:`${8+S.offset}px`,bottom:`4px`},onPointerDown:e=>K(e,`horizontal`),onPointerMove:q,onPointerUp:J,onPointerCancel:J,onMouseEnter:ge,onMouseLeave:Y}),t[53]=K,t[54]=q,t[55]=J,t[56]=Y,t[57]=S.length,t[58]=S.offset,t[59]=ye,t[60]=$):$=t[60];let xe;return t[61]!==X||t[62]!==Z||t[63]!==Q||t[64]!==$?(xe=(0,se.jsxs)(`div`,{className:X,"aria-hidden":`true`,style:Z,children:[Q,$]}),t[61]=X,t[62]=Z,t[63]=Q,t[64]=$,t[65]=xe):xe=t[65],xe};G.displayName=`OverlayScrollbar`;var de=G;export{H as a,U as i,T as n,z as o,L as r,ne as s,de as t};
2
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{g as t,y as n}from"./desktop-CfLlmafK.js";import{nt as r,rt as i}from"./vendor-base-ui-CnHfUmDN.js";import{n as a}from"./platform-4eCmsdol.js";import{o}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as s}from"./vendor-react-DLPElpoQ.js";import{t as c}from"./utils-CTL16t2f.js";var l=e(i(),1),ee=s(),te=.85,u=1.2,d=10/9,f=.9,p=.95,m=p/f,h=`openchamber.designPtScale.v7`;function g(e){return!Number.isFinite(e)||e<=0?1:Math.min(u,Math.max(te,e))}function _(e){if(!e)return p;let t=e.density,n=(e.xdpi+e.ydpi)/2;if(!(t>0)||!(n>=50)||n>800)return p;let r=g(n/t/163);return Math.min(p,r*m)}function v(){if(typeof window>`u`)return 1;try{let e=Number.parseFloat(window.localStorage.getItem(`openchamber.designPtScale.v7`)??``),t=window.Capacitor?.getPlatform?.();return t===`android`?Math.min(p,g(e)):t===`ios`?d:g(e)}catch{return 1}}function y(e){if(!(typeof window>`u`))try{window.localStorage.setItem(h,String(e))}catch{}}function b(e,t=document.documentElement){let n=g(e);t.style.setProperty(`--dpt`,`${n}px`),t.style.setProperty(`--dpt-n`,String(n))}async function ne(){if(typeof document>`u`)return 1;b(v());let{Capacitor:e,registerPlugin:t}=await o(async()=>{let{Capacitor:e,registerPlugin:t}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{Capacitor:e,registerPlugin:t}},__vite__mapDeps([0,1]));if(!e.isNativePlatform())return b(1),1;if(e.getPlatform()===`ios`)return b(d),y(d),d;if(e.getPlatform()!==`android`)return b(1),1;if(!e.isPluginAvailable(`OpenChamberPhysicalScale`))return b(p),y(p),p;try{let e=_(await t(`OpenChamberPhysicalScale`).getMetrics());return y(e),b(e),e}catch{return b(p),y(p),p}}var x={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},S={isMobile:!1,isTablet:!1,isDesktop:!0,deviceType:`desktop`,screenWidth:1024,breakpoint:`lg`,hasTouchInput:!1,hasTouchOnlyPointer:!1},re=()=>typeof window>`u`?!1:new URLSearchParams(window.location.search).get(`surface`)===`desktop`,C=e=>{if(typeof navigator>`u`)return{isExplicitTablet:!1};let t=navigator.userAgent||``,n=navigator.platform||``,r=/iPad/i.test(t)||(/Macintosh|MacIntel/i.test(t)||/MacIntel/i.test(n))&&e>1,i=/Android/i.test(t)&&!/Mobile/i.test(t),a=/Tablet/i.test(t);return{isExplicitTablet:r||i||a}},w=(e,t,n)=>{if(typeof window>`u`)return;let r=document.documentElement,i=t===`mobile`,a=t===`tablet`;r.classList.remove(`device-mobile`,`device-tablet`,`device-desktop`),r.classList.add(t===`mobile`?`device-mobile`:t===`tablet`?`device-tablet`:`device-desktop`),e?(r.classList.add(`desktop-runtime`),r.style.setProperty(`--is-mobile`,`0`),r.style.setProperty(`--device-type`,`desktop`),r.style.setProperty(`--font-scale`,`1`),r.style.setProperty(`--has-coarse-pointer`,`0`),r.style.setProperty(`--has-touch-input`,`0`),r.classList.remove(`mobile-pointer`)):(r.classList.remove(`desktop-runtime`),r.style.setProperty(`--is-mobile`,i?`1`:`0`),r.style.setProperty(`--device-type`,t),r.style.setProperty(`--font-scale`,i?`0.9`:a?`0.95`:`1`),r.style.setProperty(`--has-coarse-pointer`,n?`1`:`0`),r.style.setProperty(`--has-touch-input`,n?`1`:`0`),n?r.classList.add(`mobile-pointer`):r.classList.remove(`mobile-pointer`)),b(e?1:v(),r)};function T(){let e=window.innerWidth,r=typeof window.matchMedia==`function`,i=r?window.matchMedia(`(pointer: coarse)`):null,o=r?window.matchMedia(`(hover: none)`):null,s=i?.matches??!1,c=o?.matches??!1,l=typeof navigator<`u`?navigator.maxTouchPoints??0:0,ee=t()||n()||re(),{isExplicitTablet:te}=C(l),u=s||c||l>0,d=s||c,f=e>x.md&&e<=x.lg,p=e<=x.md,m=u&&p,h=u&&!m&&(f||te),g=!u||!h&&e>x.lg,_=`desktop`;ee?(m=!1,h=!1,g=!0,_=`desktop`):a()?(m=!0,h=!1,g=!1,_=`mobile`):m?_=`mobile`:h?_=`tablet`:(g=!0,_=`desktop`),w(ee,_,u);let v=`xs`;for(let[t,n]of Object.entries(x))e>=n&&(v=t);return{isMobile:m,isTablet:h,isDesktop:g,deviceType:_,screenWidth:e,breakpoint:v,hasTouchInput:u,hasTouchOnlyPointer:d}}var E=(e,t)=>e.isMobile===t.isMobile&&e.isTablet===t.isTablet&&e.isDesktop===t.isDesktop&&e.deviceType===t.deviceType&&e.screenWidth===t.screenWidth&&e.breakpoint===t.breakpoint&&e.hasTouchInput===t.hasTouchInput&&e.hasTouchOnlyPointer===t.hasTouchOnlyPointer,D=new Set,O=null,k,A=null,ie=()=>typeof window>`u`?S:(O||=T(),O),j=()=>{for(let e of D)e()},M=()=>{k=void 0;let e=T();O&&E(O,e)||(O=e,j())},N=()=>{typeof window>`u`||k!==void 0||(k=window.requestAnimationFrame(M))},P=(e,t)=>e?typeof e.addEventListener==`function`?(e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)):typeof e.addListener==`function`?(e.addListener(t),()=>e.removeListener(t)):()=>{}:()=>{},F=()=>{if(typeof window>`u`)return()=>{};O=T(),window.addEventListener(`resize`,N);let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`):null,t=typeof window.matchMedia==`function`?window.matchMedia(`(hover: none)`):null,n=P(e,N),r=P(t,N);return()=>{window.removeEventListener(`resize`,N),n(),r(),k!==void 0&&(window.cancelAnimationFrame(k),k=void 0)}},I=e=>typeof window>`u`?()=>{}:(D.add(e),A||=F(),()=>{D.delete(e),D.size===0&&A&&(A(),A=null,O=null)});function L(){if(typeof window>`u`||typeof window<`u`&&t())return!1;let e=document.documentElement,n=e.style.getPropertyValue(`--is-mobile`)||getComputedStyle(e).getPropertyValue(`--is-mobile`);return n===`1`||n===`true`}var ae=()=>typeof window>`u`?!1:!!(navigator.standalone===!0||window.matchMedia?.(`(display-mode: standalone)`)?.matches||window.matchMedia?.(`(display-mode: fullscreen)`)?.matches),R=()=>{if(typeof window>`u`||t())return!1;let e=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return ae()&&e>0&&window.innerWidth>x.md};function z(){let e=(0,ee.c)(2),[t,n]=l.useState(B),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(R()),t=window.matchMedia?.(`(display-mode: standalone)`),r=window.matchMedia?.(`(display-mode: fullscreen)`);e(),window.addEventListener(`resize`,e),window.addEventListener(`focus`,e);let i=t=>{t&&(typeof t.addEventListener==`function`?t.addEventListener(`change`,e):typeof t.addListener==`function`&&t.addListener(e))},a=t=>{t&&(typeof t.removeEventListener==`function`?t.removeEventListener(`change`,e):typeof t.removeListener==`function`&&t.removeListener(e))};return i(t),i(r),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`focus`,e),a(t),a(r)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),l.useEffect(r,i),t}function B(){return R()}var V=()=>typeof window>`u`?`portrait`:window.matchMedia?.(`(orientation: landscape)`)?.matches?`landscape`:`portrait`;function H(){let e=(0,ee.c)(2),[t,n]=l.useState(V),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(orientation: landscape)`),t=()=>n(e.matches?`landscape`:`portrait`);return t(),P(e,t)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),l.useEffect(r,i),t}function U(){return l.useSyncExternalStore(I,ie,oe)}function oe(){return S}var se=r(),ce=1e3,W=.5,le={length:0,offset:0},ue=(e,t)=>Math.abs(e.length-t.length)<W&&Math.abs(e.offset-t.offset)<W,G=e=>{let t=(0,ee.c)(66),{containerRef:n,minThumbSize:r,hideDelayMs:i,className:a,disableHorizontal:o,observeMutations:s,suppressVisibility:te,userIntentOnly:u}=e,d=r===void 0?32:r,f=i===void 0?1e3:i,p=o!==void 0&&o,m=s===void 0||s,h=te!==void 0&&te,g=u!==void 0&&u,[_,v]=l.useState(!1),y;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(y={length:0,offset:0},t[0]=y):y=t[0];let[b,ne]=l.useState(y),x;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(x={length:0,offset:0},t[1]=x):x=t[1];let[S,re]=l.useState(x),C=l.useRef(null),w=l.useRef(null),T=l.useRef(null),E=l.useRef(!1),D=l.useRef(!1),O=l.useRef(0),k;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(k={pointerX:0,pointerY:0,scrollTop:0,scrollLeft:0},t[2]=k):k=t[2];let A=l.useRef(k),ie=l.useRef(null),j;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(j=new Set,t[3]=j):j=t[3];let M=l.useRef(j),N;t[4]!==n||t[5]!==p||t[6]!==d?(N=()=>{let e=n.current;if(!e)return;let{scrollHeight:t,clientHeight:r,scrollTop:i,scrollWidth:a,clientWidth:o,scrollLeft:s}=e,c=le;if(t>r){let e=Math.max(r-16,0),n=r/t*e,a=Math.max(d,Math.min(e,n)),o=Math.max(e-a,0);c={length:a,offset:i/Math.max(t-r,1)*o}}ne(e=>ue(e,c)?e:c);let l=le;if(!p&&a>o){let e=Math.max(o-16,0),t=o/a*e,n=Math.max(d,Math.min(e,t)),r=Math.max(e-n,0);l={length:n,offset:s/Math.max(a-o,1)*r}}re(e=>ue(e,l)?e:l)},t[4]=n,t[5]=p,t[6]=d,t[7]=N):N=t[7];let P=N,F;t[8]===P?F=t[9]:(F=()=>{T.current===null&&(T.current=requestAnimationFrame(()=>{T.current=null,P()}))},t[8]=P,t[9]=F);let I=F,L;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(L=(e,t)=>{if(!t){M.current.clear();return}let n=new Set;n.add(e),Array.from(e.children).forEach(e=>{n.add(e)}),M.current.forEach(e=>{n.has(e)||t.unobserve(e)}),n.forEach(e=>{M.current.has(e)||t.observe(e)}),M.current=n},t[10]=L):L=t[10];let ae=L,R;t[11]===f?R=t[12]:(R=()=>{C.current&&clearTimeout(C.current),!D.current&&(C.current=setTimeout(()=>v(!1),f))},t[11]=f,t[12]=R);let z=R,B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>{O.current=Date.now()},t[13]=B):B=t[13];let V=B,H;t[14]!==z||t[15]!==h||t[16]!==P||t[17]!==g?(H=()=>{w.current&&cancelAnimationFrame(w.current),w.current=requestAnimationFrame(()=>{if(P(),h&&!E.current){v(!1);return}if(g&&!E.current&&!(Date.now()-O.current<=ce)){v(!1);return}v(!0),z()})},t[14]=z,t[15]=h,t[16]=P,t[17]=g,t[18]=H):H=t[18];let U=H,oe,W;t[19]!==n||t[20]!==U||t[21]!==m||t[22]!==I||t[23]!==P||t[24]!==g?(oe=()=>{let e=n.current;if(!e)return;P(),v(!1);let t=()=>U(),r=e=>{(e.key===`ArrowUp`||e.key===`ArrowDown`||e.key===`PageUp`||e.key===`PageDown`||e.key===`Home`||e.key===`End`||e.key===` `)&&V()};e.addEventListener(`scroll`,t,{passive:!0}),g&&(e.addEventListener(`wheel`,V,{passive:!0}),e.addEventListener(`touchstart`,V,{passive:!0}),e.addEventListener(`touchmove`,V,{passive:!0}),e.addEventListener(`keydown`,r));let i=typeof ResizeObserver<`u`?new ResizeObserver(()=>{I()}):null;ae(e,i);let a=m&&typeof MutationObserver<`u`?new MutationObserver(()=>{ae(e,i),I()}):null;a?.observe(e,{childList:!0});let o=()=>I(),s=()=>I();return e.addEventListener(`input`,o,!0),e.addEventListener(`load`,s,!0),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`input`,o,!0),e.removeEventListener(`load`,s,!0),g&&(e.removeEventListener(`wheel`,V),e.removeEventListener(`touchstart`,V),e.removeEventListener(`touchmove`,V),e.removeEventListener(`keydown`,r)),i?.disconnect(),a?.disconnect(),M.current.clear(),C.current&&clearTimeout(C.current),w.current&&cancelAnimationFrame(w.current),T.current&&cancelAnimationFrame(T.current)}},W=[n,U,V,m,I,ae,P,g],t[19]=n,t[20]=U,t[21]=m,t[22]=I,t[23]=P,t[24]=g,t[25]=oe,t[26]=W):(oe=t[25],W=t[26]),l.useEffect(oe,W);let G,de;t[27]===h?(G=t[28],de=t[29]):(G=()=>{h&&(E.current||(v(!1),C.current&&=(clearTimeout(C.current),null)))},de=[h],t[27]=h,t[28]=G,t[29]=de),l.useEffect(G,de);let fe;t[30]===n?fe=t[31]:(fe=(e,t)=>{let r=n.current;r&&(E.current=!0,A.current={pointerX:e.clientX,pointerY:e.clientY,scrollTop:r.scrollTop,scrollLeft:r.scrollLeft},ie.current=t,V(),v(!0),C.current&&clearTimeout(C.current),e.currentTarget.setPointerCapture(e.pointerId))},t[30]=n,t[31]=fe);let K=fe,pe;t[32]!==n||t[33]!==S.length||t[34]!==b.length?(pe=e=>{if(!E.current)return;let t=n.current;if(!t)return;let r=ie.current;if(r===`vertical`){let{pointerY:n,scrollTop:r}=A.current,i=e.clientY-n,a=t.clientHeight,o=Math.max(a-b.length,1),s=Math.max(t.scrollHeight-t.clientHeight,1);t.scrollTop=r+i/o*s}else if(r===`horizontal`){let{pointerX:n,scrollLeft:r}=A.current,i=e.clientX-n,a=t.clientWidth,o=Math.max(a-S.length,1),s=Math.max(t.scrollWidth-t.clientWidth,1);t.scrollLeft=r+i/o*s}},t[32]=n,t[33]=S.length,t[34]=b.length,t[35]=pe):pe=t[35];let q=pe,me;t[36]===z?me=t[37]:(me=e=>{E.current&&(E.current=!1,e.currentTarget.releasePointerCapture(e.pointerId),z())},t[36]=z,t[37]=me);let J=me,he;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(he=()=>{D.current=!0,C.current&&=(clearTimeout(C.current),null)},t[38]=he):he=t[38];let ge=he,_e;t[39]===z?_e=t[40]:(_e=()=>{D.current=!1,z()},t[39]=z,t[40]=_e);let Y=_e,ve=b.length>0,ye=S.length>0;if(!ve&&!ye)return null;let X;t[41]===a?X=t[42]:(X=c(`overlay-scrollbar`,a),t[41]=a,t[42]=X);let be=+!!_,Z;t[43]===be?Z=t[44]:(Z={opacity:be},t[43]=be,t[44]=Z);let Q;t[45]!==K||t[46]!==q||t[47]!==J||t[48]!==Y||t[49]!==ve||t[50]!==b.length||t[51]!==b.offset?(Q=ve&&(0,se.jsx)(`div`,{className:`overlay-scrollbar__thumb overlay-scrollbar__thumb--vertical`,"data-overlay-scrollbar-thumb":`vertical`,style:{height:`${b.length}px`,top:`${8+b.offset}px`,right:`4px`},onPointerDown:e=>K(e,`vertical`),onPointerMove:q,onPointerUp:J,onPointerCancel:J,onMouseEnter:ge,onMouseLeave:Y}),t[45]=K,t[46]=q,t[47]=J,t[48]=Y,t[49]=ve,t[50]=b.length,t[51]=b.offset,t[52]=Q):Q=t[52];let $;t[53]!==K||t[54]!==q||t[55]!==J||t[56]!==Y||t[57]!==S.length||t[58]!==S.offset||t[59]!==ye?($=ye&&(0,se.jsx)(`div`,{className:`overlay-scrollbar__thumb overlay-scrollbar__thumb--horizontal`,"data-overlay-scrollbar-thumb":`horizontal`,style:{width:`${S.length}px`,left:`${8+S.offset}px`,bottom:`4px`},onPointerDown:e=>K(e,`horizontal`),onPointerMove:q,onPointerUp:J,onPointerCancel:J,onMouseEnter:ge,onMouseLeave:Y}),t[53]=K,t[54]=q,t[55]=J,t[56]=Y,t[57]=S.length,t[58]=S.offset,t[59]=ye,t[60]=$):$=t[60];let xe;return t[61]!==X||t[62]!==Z||t[63]!==Q||t[64]!==$?(xe=(0,se.jsxs)(`div`,{className:X,"aria-hidden":`true`,style:Z,children:[Q,$]}),t[61]=X,t[62]=Z,t[63]=Q,t[64]=$,t[65]=xe):xe=t[65],xe};G.displayName=`OverlayScrollbar`;var de=G;export{H as a,U as i,T as n,z as o,L as r,ne as s,de as t};