import{r as e}from"./rolldown-runtime-hePW80VL.js";import{In as t,di as n,w as r}from"./lucide-icons-6JcOMNkr.js";import{o as i}from"./dist-CitWBVEa.js";import{a,s as o}from"./useAuthor-K0SVHIbr.js";import{r as s}from"./TranslateButton-DiWnIeAQ.js";import{t as c}from"./jsx-runtime-NZYk81nU.js";import{u as l}from"./esm-0y5H0J9W.js";import{r as u}from"./appRelays-Duq5P3DM.js";import{t as d}from"./utils-CFLjoQCu.js";import{t as f}from"./useTranslation-DClBQ1v-.js";import{n as p,r as m,t as h}from"./avatar-8iFLkhAN.js";import{t as g}from"./genUserName-DLQrbfFW.js";import{n as _}from"./CustomEmoji-DxjyZluk.js";import{t as v}from"./sanitizeUrl-Bd1A9ELz.js";import{D as y,N as b,T as x,_ as S}from"./useEventTranslation-JqEZgW2T.js";import{t as C}from"./useDebounce-f-le_qDD.js";import{t as w}from"./useSearchProfiles-BIBrVHne.js";var T=e(n(),1);function E(e,t=6){let{nostr:n}=a(),r=C(e,200).trim();return o({queryKey:[`search-campaigns`,r,t],enabled:r.length>=1,staleTime:3e4,placeholderData:e=>e,queryFn:async({signal:e})=>{let i=await n.group(u).query([{kinds:[x],search:`${r} autocomplete:true`,limit:40}],{signal:AbortSignal.any([e,AbortSignal.timeout(6e3)])}),a=new Map;for(let e of i){let t=e.tags.find(([e])=>e===`d`)?.[1];if(!t)continue;let n=`${e.pubkey}:${t}`,r=a.get(n);(!r||e.created_at>r.created_at)&&a.set(n,e)}let o=r.toLowerCase(),s=[];for(let e of a.values()){let t=b(e);t&&s.push(t)}return s.sort((e,t)=>{let n=e=>{let t=e.title.toLowerCase();return t.startsWith(o)?0:t.includes(o)?1:2},r=n(e),i=n(t);return r===i?t.createdAt-e.createdAt:r-i}),s.slice(0,t)}})}var D=e(i(),1);function O({textareaRef:e,isOpen:t,onClose:n,dropdownHeight:r,dropdownWidth:i=280}){let a=(0,T.useCallback)(t=>{let n=e.current;if(!n)return{top:0,left:0};let a=parseFloat(window.getComputedStyle(n).lineHeight)||20,o=n.getBoundingClientRect(),s=o.top+t.top-n.scrollTop+a+4,c=o.left+Math.max(0,Math.min(t.left,n.clientWidth-i)),l=o.top+t.top-n.scrollTop-r-4;return{top:s+r>window.innerHeight&&l>0?l:s,left:Math.max(8,Math.min(c,window.innerWidth-i-8))}},[e,r,i]);return(0,T.useEffect)(()=>{if(!t)return;let e=()=>n();return window.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e)}},[t,n]),{computePosition:a,renderPortal:D.createPortal}}var k=c(),A=`direction.boxSizing.width.height.overflowX.overflowY.borderTopWidth.borderRightWidth.borderBottomWidth.borderLeftWidth.borderStyle.paddingTop.paddingRight.paddingBottom.paddingLeft.fontStyle.fontVariant.fontWeight.fontStretch.fontSize.fontSizeAdjust.lineHeight.fontFamily.textAlign.textTransform.textIndent.textDecoration.letterSpacing.wordSpacing.tabSize.MozTabSize.whiteSpace.wordWrap.wordBreak`.split(`.`);function j(e,t){let n=document.createElement(`div`);n.id=`mention-mirror`;let r=window.getComputedStyle(e);for(let e of A)n.style[e]=r.getPropertyValue(e.replace(/([A-Z])/g,`-$1`).toLowerCase());n.style.position=`absolute`,n.style.visibility=`hidden`,n.style.whiteSpace=`pre-wrap`,n.style.wordWrap=`break-word`,n.style.overflow=`hidden`,document.body.appendChild(n),n.textContent=e.value.substring(0,t);let i=document.createElement(`span`);i.textContent=`​`,n.appendChild(i);let a=n.getBoundingClientRect(),o=i.getBoundingClientRect(),s={top:o.top-a.top-e.scrollTop,left:o.left-a.left-e.scrollLeft};return document.body.removeChild(n),s}function M({textareaRef:e,content:t,onInsertMention:n}){let[r,i]=(0,T.useState)(``),[a,o]=(0,T.useState)(-1),[s,c]=(0,T.useState)(0),[u,d]=(0,T.useState)(!1),[f,p]=(0,T.useState)(null),m=(0,T.useRef)(null),h=(0,T.useRef)(null),{computePosition:g,renderPortal:_}=O({textareaRef:e,isOpen:u,onClose:(0,T.useCallback)(()=>d(!1),[]),dropdownHeight:240}),{data:v,followedPubkeys:b}=w(u?r:``),{data:x}=E(u?r:``),{data:C}=S(),D=(0,T.useMemo)(()=>{let e=(v??[]).filter(e=>b.has(e.pubkey)).map(e=>({type:`profile`,profile:e})),t=(x??[]).filter(e=>(C.byCoord.get(e.aTag)?.length??0)>0).map(e=>({type:`campaign`,campaign:e}));return[...e,...t]},[v,x,b,C]),A=(0,T.useCallback)((t,n)=>{let r=e.current;if(!r)return;let a=n??r.selectionStart,s=t??r.value,l=-1;for(let e=a-1;e>=0;e--){let t=s[e];if(t===` `||t===` `||t===` `)break;if(t===`@`){(e===0||/\s/.test(s[e-1]))&&(l=e);break}}if(l===-1){d(!1),i(``),o(-1);return}let u=s.slice(l+1,a);if(u.length===0||u.length>50){d(!1),i(``),o(-1);return}i(u),o(l),d(!0),c(0);let f=j(r,l);p(g(f))},[e,g]);(0,T.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{A(t.value,t.selectionStart)},r=()=>A(),i=e=>{[`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)&&A()};return t.addEventListener(`input`,n),t.addEventListener(`click`,r),t.addEventListener(`keyup`,i),()=>{t.removeEventListener(`input`,n),t.removeEventListener(`click`,r),t.removeEventListener(`keyup`,i)}},[e,A,t]),(0,T.useEffect)(()=>{let n=e.current;n&&A(t,n.selectionStart)},[t,A,e]),(0,T.useEffect)(()=>{if(!u||D.length===0)return;let t=e.current;if(!t)return;let n=e=>{switch(e.key){case`ArrowDown`:e.preventDefault(),c(e=>ee>0?e-1:D.length-1);break;case`Enter`:case`Tab`:D.length>0&&(e.preventDefault(),F(D[s]));break;case`Escape`:e.preventDefault(),d(!1)}};return t.addEventListener(`keydown`,n),()=>t.removeEventListener(`keydown`,n)},[u,D,s,e]),(0,T.useEffect)(()=>{s>=0&&h.current&&h.current.querySelectorAll(`[data-mention-item]`)[s]?.scrollIntoView({block:`nearest`})},[s]);let M=(0,T.useCallback)(t=>{let s=e.current?.selectionStart??a+r.length+1;n({start:a,end:s,replacement:t}),d(!1),i(``),o(-1)},[a,r,e,n]),F=(0,T.useCallback)(e=>{if(e.type===`profile`){let t=l.npubEncode(e.profile.pubkey);M(`nostr:${t} `)}else{let t=y(e.campaign);M(`nostr:${t} `)}},[M]);return!u||!f||D.length===0?null:_((0,k.jsx)(`div`,{ref:m,"data-autocomplete-dropdown":!0,className:`fixed z-[300] w-[300px] rounded-xl border border-border bg-popover shadow-lg overflow-hidden animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-150 pointer-events-auto`,style:{top:f.top,left:f.left},children:(0,k.jsx)(`div`,{ref:h,className:`max-h-[240px] overflow-y-auto py-1`,children:D.map((e,t)=>e.type===`profile`?(0,k.jsx)(N,{profile:e.profile,isSelected:t===s,isFollowed:b.has(e.profile.pubkey),onClick:()=>F(e)},`p:${e.profile.pubkey}`):(0,k.jsx)(P,{campaign:e.campaign,isSelected:t===s,onClick:()=>F(e)},`c:${e.campaign.aTag}`))})}),document.body)}function N({profile:e,isSelected:t,isFollowed:n,onClick:i}){let{metadata:a,pubkey:o}=e,c=a.name||a.display_name||g(o),u=a.nip05,{data:f}=s(u,o),v=f&&u?u.startsWith(`_@`)?u.slice(2):u:void 0,y=v||l.npubEncode(o);return(0,k.jsxs)(`button`,{"data-mention-item":!0,className:d(`w-full flex items-center gap-3 px-3 py-2 text-left transition-colors cursor-pointer`,t?`bg-accent text-accent-foreground`:`hover:bg-secondary/60`),onClick:i,onMouseDown:e=>e.preventDefault(),children:[(0,k.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,k.jsxs)(h,{className:`size-8`,children:[(0,k.jsx)(m,{src:a.picture,alt:c}),(0,k.jsx)(p,{className:`bg-primary/20 text-primary text-xs`,children:c[0]?.toUpperCase()||`?`})]}),n&&(0,k.jsx)(`span`,{className:`absolute -bottom-0.5 -right-0.5 size-3.5 rounded-full bg-primary flex items-center justify-center ring-2 ring-popover`,title:`Following`,children:(0,k.jsx)(r,{className:`size-2 text-primary-foreground`,strokeWidth:3})})]}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,k.jsx)(`span`,{className:`font-semibold text-sm truncate`,children:(0,k.jsx)(_,{tags:e.event.tags,children:c})})}),(0,k.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:v?(0,k.jsx)(`span`,{className:`truncate`,children:y}):(0,k.jsx)(`span`,{className:`truncate font-mono text-[11px]`,children:y})})]})]})}function P({campaign:e,isSelected:n,onClick:r}){let{t:i}=f(),a=v(e.banner);return(0,k.jsxs)(`button`,{"data-mention-item":!0,className:d(`w-full flex items-center gap-3 px-3 py-2 text-left transition-colors cursor-pointer`,n?`bg-accent text-accent-foreground`:`hover:bg-secondary/60`),onClick:r,onMouseDown:e=>e.preventDefault(),children:[(0,k.jsx)(`div`,{className:`relative size-8 shrink-0 rounded-md overflow-hidden bg-primary/10 flex items-center justify-center`,children:a?(0,k.jsx)(`img`,{src:a,alt:``,className:`size-full object-cover`,loading:`lazy`}):(0,k.jsx)(t,{className:`size-4 text-primary`})}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,k.jsx)(`span`,{className:`font-semibold text-sm truncate`,children:e.title})}),(0,k.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.summary||i(`compose.autocomplete.campaignFallback`)})]})]})}function F(e,t,n){return{insertAtCursor:(0,T.useCallback)(({start:r,end:i,replacement:a})=>{n(t.slice(0,r)+a+t.slice(i)),requestAnimationFrame(()=>{let t=e.current;if(t){t.focus();let e=r+a.length;t.setSelectionRange(e,e)}})},[t,n,e]),insertEmoji:(0,T.useCallback)(r=>{let i=e.current;if(i){let e=i.selectionStart,a=i.selectionEnd;n(t.slice(0,e)+r+t.slice(a)),requestAnimationFrame(()=>{i.focus();let t=e+r.length;i.setSelectionRange(t,t)})}else n(t+r)},[t,n,e])}}export{M as n,O as r,F as t};