1import{o as e}from"./rolldown-runtime-eil0g4P7.js";import{$M as t,$N as n,Ca as ee,DN as te,EM as r,HC as i,IT as ne,Ko as re,RM as ie,WT as ae,XC as a,_o as o,aN as oe,bo as s,dD as c,do as se,jN as l,ko as u,lo as ce,lu as le,mD as d,sD as ue,sw as f,vo as p,wx as de}from"./initial-W8XsXakm.js";import{S as fe,tt as m}from"./index-bt11rYux.js";import{t as h}from"./MarkdownEditor-CTJv9Pbk.js";import{a as g,n as pe,o as me,r as he,t as ge}from"./pulse-library-queries-CPFSqqL0.js";import{n as _e}from"./copy-link-Tnd-52Jl.js";import{t as ve}from"./UnsavedChangesDialog-BR1bL0Ui.js";r();var _=e(n());i();var v=l(),ye=t(`/b/$businessId`);function y(){let e=a(),t=ye.useLoaderData().business.id,{businessId:n,docId:r}=m.useParams(),{source:i,accountId:l,path:y,returnTab:b,filesPath:x,tab:S,userPath:C,businessPath:w,returnApp:T,returnEntity:E,returnView:D}=m.useSearch(),O=oe(),{showError:k,showSuccess:A}=de(),j=i===`drive`,M=!j&&r===`new`,N=!(i===`pulse`&&!l)&&!(j&&!y),P=l??``,F=y??``,[I,Se]=(0,_.useState)(``),[L,Ce]=(0,_.useState)(null),[R,z]=(0,_.useState)(null),B=d({queryKey:[`drive-doc-entry`,i,t,P,r],enabled:!M&&!j&&N,retry:(e,t)=>!o(t)&&e<3,queryFn:()=>g(t,P,r)}),V=d({queryKey:[`drive-doc-content`,i,t,P,F,r],enabled:!M&&N,retry:(e,t)=>!o(t)&&e<3,queryFn:()=>j?ce({businessId:t,path:F}):he(t,P,r)}),H=j?F.split(`/`).filter(Boolean).at(-1)??`Document`:null,U=!M&&!j&&B.data?.origin===`inbox`,W=M?``:V.data,G=M||(j||B.isSuccess)&&V.isSuccess,we=V.isError||!j&&B.isError,K=M?`New document`:ee(j?H??`Document`:B.data?.name??`Document`),q=M?I.trim().length>0||(L??``).length>0:L!==null&&R!==null&&L!==R;function Te(e){R===null&&z(e),Ce(e)}let J=(0,v.jsxs)(`div`,{className:`flex h-64 items-center justify-center text-sm text-neutral-500`,children:[(0,v.jsx)(ne,{className:`size-4 animate-spin`}),` `,(0,v.jsx)(`span`,{className:`ml-2`,children:e(`components.drive.doc.loading`)})]}),Y=c({mutationFn:async()=>{let e=L??W??``;return j?(await se({businessId:t,path:F,content:e}),null):M?pe(t,P,`/pulse/${P}`,I.trim()||`Untitled`,e):me(t,P,r,e)},onSuccess:t=>{if(A(e(`components.drive.doc.saved_toast`)),M&&t){O({to:`/b/$businessId/drive/doc/$docId`,params:{businessId:n,docId:t.id},search:{tab:S??`user`,userPath:C??s,businessPath:w??p,source:i,accountId:P,returnTab:b,filesPath:x,returnApp:T,returnEntity:E,returnView:D},replace:!0});return}L!==null&&z(L)},onError:()=>{k(e(`components.drive.doc.save_failed`))}}),X=ie({shouldBlockFn:()=>q&&!Y.isPending,enableBeforeUnload:()=>q,withResolver:!0});async function Z(){try{await Y.mutateAsync(),X.proceed?.()}catch{X.reset?.()}}async function Ee(){try{let t=j?window.location.href:_e(r,window.location.origin);await navigator.clipboard.writeText(t),A(e(`components.drive.doc.link_copied`))}catch{k(e(`components.drive.doc.copy_link_failed`))}}let Q=c({mutationFn:()=>ge(t,P,r),onSuccess:e=>{O({to:`/b/$businessId/drive/doc/$docId`,params:{businessId:n,docId:e.id},search:{tab:S??`user`,userPath:C??s,businessPath:w??p,source:i,accountId:P,returnTab:b,filesPath:x,returnApp:T,returnEntity:E,returnView:D}})},onError:()=>{k(e(`components.drive.doc.copy_failed`))}});if(!N)return(0,v.jsx)(be,{});function $(){if(!j&&P){O({to:fe,params:{businessId:n,recordId:P},search:x?{filesPath:x}:{}});return}O({to:`/b/$businessId/drive`,params:{businessId:n},search:{tab:S??`user`,userPath:C??s,businessPath:w??p}})}return(0,v.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,v.jsxs)(`div`,{className:`flex h-[52px] shrink-0 items-center justify-between gap-4 border-b border-neutral-200 px-5 text-sm text-neutral-500`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:$,"aria-label":e(`components.drive.doc.back`),className:`flex items-center gap-1.5 rounded-md border border-neutral-200 p-1.5 transition-colors hover:bg-neutral-50`,children:(0,v.jsx)(ue,{className:`size-3.5`})}),(0,v.jsx)(`span`,{className:`shrink-0`,children:e(`components.drive.doc.breadcrumb`)}),(0,v.jsx)(`span`,{className:`text-neutral-300`,children:`/`}),(0,v.jsx)(`span`,{className:`truncate text-neutral-800`,children:K}),U?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(u,{variant:`yellow`,size:`xs`,children:e(`components.drive.doc.badge_from_inbox`)}),(0,v.jsx)(u,{variant:`gray`,size:`xs`,children:e(`components.drive.doc.badge_read_only`)})]}):null]}),(0,v.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[M?null:(0,v.jsxs)(f,{hierarchy:`secondary`,size:`sm`,onClick:()=>{Ee()},children:[(0,v.jsx)(ae,{className:`mr-1.5 size-3.5`}),` `,e(`components.drive.doc.copy_link`)]}),U?(0,v.jsx)(f,{size:`sm`,onClick:()=>Q.mutate(),disabled:Q.isPending,children:Q.isPending?e(`components.drive.doc.copying`):e(`components.drive.doc.edit_a_copy`)}):(0,v.jsxs)(v.Fragment,{children:[q&&!Y.isPending?(0,v.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-neutral-500`,children:[(0,v.jsx)(`span`,{className:`inline-block size-1.5 rounded-full bg-amber-500`,"aria-hidden":!0}),e(`components.drive.doc.unsaved_changes`)]}):null,(0,v.jsx)(f,{size:`sm`,onClick:()=>Y.mutate(),disabled:!G||!q||Y.isPending||M&&!I.trim(),children:Y.isPending?e(`components.drive.doc.saving`):e(`components.drive.doc.save`)})]}),(0,v.jsx)(le,{withSeparator:!0,title:K,breadcrumb:`Home / Drive / ${K}`})]})]}),(0,v.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[M?(0,v.jsx)(`div`,{className:`mx-auto max-w-3xl px-4 pt-4`,children:(0,v.jsx)(re,{value:I,onChange:e=>Se(e.target.value),placeholder:e(`components.drive.doc.name_placeholder`),className:`text-2xl font-medium`,boxClassName:`h-auto border-0 bg-transparent px-0 shadow-none focus-within:ring-0 focus-within:border-transparent`,autoFocus:!0})}):null,we?(0,v.jsx)(xe,{onBack:$}):G?(0,v.jsx)(te,{fallback:J,children:(0,v.jsx)(h,{value:W??``,readOnly:!!U,onChange:U?void 0:Te,downloadFilename:j?H??void 0:M?void 0:B.data?.name??void 0},j?F:r)}):J]}),(0,v.jsx)(ve,{isOpen:X.status===`blocked`,onCancel:()=>X.reset?.(),onDiscard:()=>X.proceed?.(),onSave:()=>void Z(),isSaving:Y.isPending,saveDisabled:M&&!I.trim()})]})}function be(){let e=a();return(0,v.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center`,children:(0,v.jsxs)(`div`,{className:`max-w-md`,children:[(0,v.jsx)(`p`,{className:`text-sm font-medium text-neutral-800`,children:e(`components.drive.doc.missing_scope_title`)}),(0,v.jsxs)(`p`,{className:`mt-1 text-xs text-neutral-500`,children:[`This editor needs `,(0,v.jsx)(`code`,{children:`?source=pulse&accountId=â¦`}),` until the Halo Drive backend ships in Phase E.`]})]})})}function xe(e){let t=a();return(0,v.jsx)(`div`,{className:`flex h-64 items-center justify-center px-6 text-center`,children:(0,v.jsxs)(`div`,{className:`max-w-md`,children:[(0,v.jsx)(`p`,{className:`text-sm font-medium text-red-600`,children:t(`components.drive.doc.load_error`)}),(0,v.jsx)(`p`,{className:`mt-1 text-xs text-neutral-500`,children:t(`components.drive.doc.load_error_hint`)}),(0,v.jsx)(f,{hierarchy:`secondary`,size:`sm`,className:`mt-4`,onClick:e.onBack,children:t(`components.drive.doc.back`)})]})})}export{y as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.