1import{u as we,n,a as U,S as le,I as Ge,m as Ae,f as $e,r as x,p as fe,a1 as Ue,o as Ke,q as He,g as c,h as v,l as r,v as p,k as a,z as _,F as he,t as Ye,y as We,D as Xe,H as X,T as ge,X as Je,j as Ze}from"./app-DC-vDXk8.js";import{u as Ie}from"./useBaseQuery-DWsmS_qi.js";import{u as et}from"./useInfiniteQuery-DLXCChya.js";import{e as tt,r as at,i as ot}from"./galleryRefresh-DtwnTkqn.js";import{u as rt}from"./useInfiniteScrollSentinel-BbAlZhWG.js";import{u as nt}from"./useQuery-T3EQnujf.js";import{u as be}from"./useMutation-DQ_K-AQM.js";import{a as se,p as lt,b as st}from"./mediaItemRoutes-B4Uf0gj4.js";import{u as it}from"./usePostReactionOptionsQuery-wk8EotTV.js";import{P as ct}from"./PostImageModal-BLhhzufT.js";import{_ as ut}from"./clipboardImageFiles-C1ZS_3a-.js";import{_ as dt}from"./ReportDialog.vue_vue_type_script_setup_true_lang-BxpGsSIh.js";import{a as xe,d as J,f as mt,O as _e,i as ke,t as vt}from"./overlayLayers-BSb5r7Fh.js";import"./module.esm-CJzrDrQx.js";import"./img_utils-C-hJMYXd.js";import"./marked.esm-CesSW9Du.js";import"./useUserDisplay-OaDn7EeO.js";import"./useProfileRoute-BysvYZkt.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./VerifiedBadge-7fymcKxQ.js";import"./MediaComposer-zZjwggJ7.js";import"./GifPicker-DZgevzEl.js";import"./usePlacePicker-gLp6FW7O.js";import"./placeSearchService-Cc-SaD12.js";import"./stripHtmlToText-BdsK0zSZ.js";import"./extractYouTubeVideoId-D3gqJpeF.js";import"./twemojiCatalog-FpRvDNx0.js";import"./MediaAttachment-DIctHxFe.js";function pt(h){const k=Ie(),C=we(),o=n(()=>{var s;return Number(((s=C.user)==null?void 0:s.id)??0)||"session"}),g=n(()=>tt(o.value,h.value)),l=et({queryKey:g,queryFn:async({pageParam:s,signal:F})=>{const{data:I}=await U.get(`/api/events/${h.value}/gallery`,{params:{cursor:s??void 0},signal:F});return I},enabled:n(()=>!!h.value),initialPageParam:null,getNextPageParam:s=>s.meta.has_more&&s.meta.next_cursor?s.meta.next_cursor:void 0,staleTime:3e4}),R=n(()=>{var s;return((s=l.data.value)==null?void 0:s.pages)??[]}),O=n(()=>R.value.flatMap(s=>s.data)),j=n(()=>{var s;return((s=R.value.at(-1))==null?void 0:s.meta)??null}),P=n(()=>l.hasNextPage.value??!1);async function w(){!l.hasNextPage.value||l.isFetchingNextPage.value||await l.fetchNextPage()}function i(){ot(k,o.value,h.value)}async function u(){await at(k,o.value,h.value,!0)}function Z(s,F){k.setQueryData(g.value,I=>I&&{...I,pages:I.pages.map(K=>({...K,data:K.data.map(q=>q.photo_album_item_id===s?{...q,...F}:q)}))})}return{images:O,meta:j,isLoading:l.isLoading,isError:l.isError,error:l.error,hasMore:P,isFetchingNextPage:l.isFetchingNextPage,refetch:l.refetch,fetchNextPage:w,invalidateGallery:i,refreshGallery:u,updateGalleryImage:Z}}function ie(h,k,C){return["events","gallery-item-reactions",h,k,C]}function yt(h){const k=we(),C=Ie(),o=n(()=>le(h.postId)),g=n(()=>le(h.itemId)),l=n(()=>{var u;const i=Number(((u=k.user)==null?void 0:u.id)??0);return i>0?i:"session"}),R=n(()=>!!(le(h.enabled??!0)&&o.value&&g.value)),O=n(()=>ie(l.value,o.value,g.value)),j=nt({queryKey:O,queryFn:async({signal:i})=>{const{data:u}=await U.get(se(o.value,g.value),{signal:i});return u},enabled:R,staleTime:15e3}),P=be({mutationFn:async i=>{const{data:u}=await U.post(se(i.postId,i.itemId),{reaction:i.reaction});return u},onSuccess:(i,u)=>{C.setQueryData(ie(l.value,u.postId,u.itemId),i)}}),w=be({mutationFn:async i=>{const{data:u}=await U.delete(se(i.postId,i.itemId));return u},onSuccess:(i,u)=>{C.setQueryData(ie(l.value,u.postId,u.itemId),i)}});return{...j,queryKey:O,setReaction:P,removeReaction:w}}const ft={class:"flex items-center justify-between"},ht={class:"text-lg font-semibold text-gray-900 dark:text-zinc-100"},gt={key:0,class:"text-xs text-gray-500 dark:text-zinc-400"},bt={key:0,class:"text-center py-8"},xt={class:"mt-3 text-sm text-gray-500 dark:text-zinc-400"},_t={key:1,class:"rounded-2xl border border-red-200 bg-red-50 p-6 text-center dark:border-red-900/60 dark:bg-red-950/40"},kt={class:"text-sm text-red-700 dark:text-red-300"},wt={key:2,class:"rounded-2xl border border-dashed border-gray-300 bg-gray-50 p-8 text-center dark:border-zinc-700 dark:bg-zinc-800/50"},It={class:"mt-3 text-sm font-medium text-gray-600 dark:text-zinc-300"},zt={class:"mt-1 text-xs text-gray-500 dark:text-zinc-400"},Ct=["onClick"],Rt=["src","alt"],Pt={key:0,class:"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-2 opacity-0 group-hover:opacity-100 transition-opacity"},St={class:"text-xs text-white truncate"},Mt={key:0,class:"h-5 w-5 animate-spin text-gray-500 dark:text-zinc-400",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},Ot={key:1,class:"text-center py-4"},Et=["disabled"],Lt={key:0,class:"h-4 w-4 animate-spin",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},Ft={key:2,class:"text-center py-4"},Tt={class:"text-xs text-gray-400 dark:text-zinc-500"},Nt=["aria-label"],Qt=["aria-label"],jt={class:"relative w-full max-w-md
1space-y-4 rounded-2xl border border-zinc-200 bg-white p-5 shadow-2xl dark:border-zinc-700 dark:bg-zinc-900"},qt={class:"flex items-center justify-between gap-4"},Dt={class:"text-lg font-semibold text-zinc-900 dark:text-white"},Vt={class:"sr-only"},Bt=["src"],Gt={class:"grid gap-2"},At=["disabled"],xa=Ge({__name:"EventGallery",props:{publicId:{},compact:{type:Boolean,default:!1}},setup(h,{expose:k}){const C=h,{t:o}=Ae(),g=$e(),{images:l,meta:R,isLoading:O,isError:j,hasMore:P,isFetchingNextPage:w,refetch:i,fetchNextPage:u,invalidateGallery:Z,updateGalleryImage:s}=pt(n(()=>C.publicId)),F=x(null),I=x(null),{sentinelRef:K,supportsObserver:q}=rt({canLoadMore:P,isLoading:w,root:I,onLoadMore:ye,rootMargin:"160px 0px"}),D=x(!1),V=x(0),m=n(()=>l.value[V.value]??null),ee=n(()=>{var e;return((e=m.value)==null?void 0:e.post_id)??null}),H=n(()=>{var e;return((e=m.value)==null?void 0:e.photo_album_item_id)??null}),ze=n(()=>l.value.map(e=>e.url)),z=n(()=>{var e;return((e=m.value)==null?void 0:e.capabilities)??{can_react:!1,can_comment:!1,can_share:!1,can_report:!1}}),Ce=n(()=>{var e,t,f,L,M,G,A,b,Q,$;return{id:null,public_ref:((t=(e=m.value)==null?void 0:e.author)==null?void 0:t.public_ref)??null,profile_slug:((L=(f=m.value)==null?void 0:f.author)==null?void 0:L.profile_slug)??null,nickname:((G=(M=m.value)==null?void 0:M.author)==null?void 0:G.nickname)??"",avatar:((b=(A=m.value)==null?void 0:A.author)==null?void 0:b.avatar_url)??null,avatar_url:(($=(Q=m.value)==null?void 0:Q.author)==null?void 0:$.avatar_url)??null}}),ce=n(()=>ee.value&&H.value?lt(ee.value,H.value):""),Re=n(()=>ce.value),B=yt({postId:ee,itemId:H,enabled:D}),te=n(()=>{var e,t;return B.data.value??{photo_album_item_id:H.value??0,my_reaction:((e=m.value)==null?void 0:e.my_reaction)??null,reactions:((t=m.value)==null?void 0:t.reactions)??[]}}),ae=n(()=>B.setReaction.isPending.value||B.removeReaction.isPending.value),y=x(!1),oe=x({left:0,top:0}),ue=it({enabled:y}),Pe=n(()=>ue.reactionOptions.value.quick),Se=n(()=>ue.reactionOptions.value.emojis),d=x(null),re=x(null),T=x(!1),E=x(!1),S=x(null),Me=n(()=>S.value?{original_url:S.value.url,image_path:S.value.url}:{}),Y=Symbol("event-gallery-reaction-picker"),W=Symbol("event-gallery-share-dialog");function N(){const e=m.value;return!(e!=null&&e.post_id)||!e.photo_album_item_id||!e.url?null:{postId:e.post_id,itemId:e.photo_album_item_id,url:e.url}}function de(){y.value=!1,d.value=null,E.value=!1,S.value=null}function Oe(e){V.value=e,D.value=!0}function Ee(){D.value=!1,V.value=0,de()}function Le(e){V.value=e,de()}function Fe(e){if(!(!z.value.can_react||!N()||ae.value)){if(te.value.my_reaction){Qe();return}Te(e)}}function Te(e){var M;d.value=null,E.value=!1;const t=(M=e.currentTarget)==null?void 0:M.getBoundingClientRect(),f=t?Math.min(t.left,window.innerWidth-280):e.clientX-20,L=t?t.top-60:e.clientY-60;oe.value={left:Math.max(10,f),top:Math.max(10,L)},y.value=!0}async function Ne(e){const t=N();if(y.value=!1,!(!z.value.can_react||!t||ae.value))try{const f=await B.setReaction.mutateAsync({...t,reaction:e});s(t.itemId,{my_reaction:f.my_reaction,reactions:f.reactions})}catch{g.error(o("post.reactions.updateFailed"))}}async function Qe(){const e=N();if(!(!z.value.can_react||!e||ae.value))try{const t=await B.removeReaction.mutateAsync(e);s(e.itemId,{my_reaction:t.my_reaction,reactions:t.reactions})}catch{g.error(o("post.reactions.updateFailed"))}}function je(){const e=N();!z.value.can_react||!e||(d.value=null,E.value=!1,oe.value={left:Math.max(10,(window.innerWidth-360)/2),top:Math.max(10,(window.innerHeight-300)/2)},y.value=!0)}function qe(){z.value.can_share&&(y.value=!1,E.value=!1,d.value=N())}function ne(){T.value||(d.value=null)}async function De(){const e=d.value;if(!(!e||T.value)){T.value=!0;try{await U.post(st(e.postId,e.itemId)),g.success(o("post.share.feedSuccess")),d.value=null}catch{g.error(o("post.share.shareFailed"))}finally{T.value=!1}}}async function me(){var t;const e=(t=d.value)==null?void 0:t.url;if(e)try{await navigator.clipboard.writeText(e),g.success(o("post.share.copySuccess")),d.value=null}catch{g.error(o("post.share.copyFailed"))}}async function Ve(){var t;const e=(t=d.value)==null?void 0:t.url;if(e){if(navigator.share)try{await navigator.share({title:o("post.share.modalTitle"),url:e}),d.value=null;return}catch(f){if((f==null?void 0:f.name)==="AbortError")return}await me()}}function Be(){z.value.can_report&&(y.value=!1,d.value=null,S.value=N(),E.value=S.value!==null)}function ve(e){if(!y.value)return;const t=e.target;t!=null&&t.closest("[data-reaction-picker]")||(y.value=!1)}function pe(e){if(d.value&&ke(W)){if(e.key==="Escape"){e.preventDefault(),e.stopImmediatePropagation(),ne();return}vt(e,re.value);return}y.value&&ke(Y)&&e.key==="Escape"&&(e.preventDefault(),e.stopImmediatePropagation(),y.value=!1)}fe(y,e=>{e?xe(Y):J(Y)}),fe(d,async e=>{e?(xe(W),await Ue(),mt(re.value)):J(W)}),Ke(()=>{var e;I.value=((e=F.value)==null?void 0:e.closest(".overflow-y-auto"))??null,document.addEventListener("click",ve,!0),document.addEventListener("keydown",pe)}),He(()=>{J(Y),J(W),document.removeEventListener("click",ve,!0),document.removeEventListener("keydown",pe)});async function ye(){await u()}return k({invalidateGallery:Z}),(e,t)=>{var f,L,M,G,A;return c(),v("div",{ref_key:"galleryRootRef",ref:F,class:"space-y-4"},[r("div",ft,[r("h3",ht,p(a(o)("events.detail.gallery.title")),1),a(R)&&a(R).total>0?(c(),v("span",gt,p(a(o)("events.detail.gallery.imageCount",{count:a(R).total})),1)):_("",!0)]),a(O)&&a(l).length===0?(c(),v("div",bt,[t[3]||(t[3]=r("div",{class:"inline-block h-6 w-6 animate-spin rounded-full border-2 border-gray-300 border-t-blue-600 dar
1k:border-zinc-600 dark:border-t-blue-400"},null,-1)),r("p",xt,p(a(o)("events.detail.gallery.loading")),1)])):a(j)&&a(l).length===0?(c(),v("div",_t,[r("p",kt,p(a(o)("events.detail.gallery.loadError")),1),r("button",{type:"button",class:"mt-3 inline-flex items-center justify-center rounded-lg border border-red-300 px-4 py-2 text-sm font-semibold text-red-700 hover:bg-red-100 dark:border-red-800 dark:text-red-300 dark:hover:bg-red-950/60",onClick:t[0]||(t[0]=b=>a(i)())},p(a(o)("events.detail.retry")),1)])):!a(O)&&a(l).length===0?(c(),v("div",wt,[t[4]||(t[4]=r("svg",{xmlns:"http://www.w3.org/2000/svg",class:"mx-auto h-10 w-10 text-gray-400 dark:text-zinc-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1)),r("p",It,p(a(o)("events.detail.gallery.empty")),1),r("p",zt,p(a(o)("events.detail.gallery.emptyHint")),1)])):(c(),v(he,{key:3},[r("div",{class:We(["grid gap-2",e.compact?"grid-cols-2":"grid-cols-2 sm:grid-cols-3 md:grid-cols-4"])},[(c(!0),v(he,null,Ye(a(l),(b,Q)=>{var $;return c(),v("button",{key:b.media_public_id??`${b.url}-${Q}`,type:"button",class:"relative aspect-square overflow-hidden rounded-lg bg-gray-100 dark:bg-zinc-700 cursor-pointer group focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500",onClick:$t=>Oe(Q)},[r("img",{src:b.thumbnail_url,alt:b.alt??a(o)("events.detail.gallery.imageAlt",{index:Q+1}),class:"w-full h-full object-cover transition duration-300 group-hover:scale-105",loading:"lazy"},null,8,Rt),($=b.author)!=null&&$.nickname?(c(),v("div",Pt,[r("p",St,p(a(o)("events.detail.gallery.by",{name:b.author.nickname})),1)])):_("",!0)],8,Ct)}),128))],2),a(P)?(c(),v("div",{key:0,ref_key:"sentinelRef",ref:K,class:"flex min-h-10 items-center justify-center py-3","aria-hidden":"true"},[a(w)?(c(),v("svg",Mt,[...t[5]||(t[5]=[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):_("",!0)],512)):_("",!0),a(P)&&!a(q)?(c(),v("div",Ot,[r("button",{type:"button",disabled:a(w),class:"inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 transition hover:bg-gray-50 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700",onClick:ye},[a(w)?(c(),v("svg",Lt,[...t[6]||(t[6]=[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"},null,-1)])])):_("",!0),Xe(" "+p(a(w)?a(o)("events.detail.gallery.loadingMore"):a(o)("events.detail.gallery.loadMore")),1)],8,Et)])):_("",!0),!a(P)&&a(l).length>0?(c(),v("div",Ft,[r("p",Tt,p(a(o)("events.detail.gallery.endOfGallery")),1)])):_("",!0)],64)),D.value?(c(),X(ct,{key:4,visible:D.value,images:ze.value,"current-index":V.value,"media-mode":"photo-album-item","post-id":((f=m.value)==null?void 0:f.post_id)??null,"media-item-id":((L=m.value)==null?void 0:L.photo_album_item_id)??null,"post-slug":null,author:Ce.value,content:"",timestamp:((M=m.value)==null?void 0:M.created_at)??null,"post-route":((G=m.value)==null?void 0:G.post_url)??null,"can-comment":z.value.can_comment,"comment-permissions":null,"can-manage-comments":!1,"my-reaction":te.value.my_reaction,"reaction-summary":te.value.reactions,"share-enabled":z.value.can_share,"report-enabled":z.value.can_report,"comments-fetch-url":ce.value,"comments-create-url":Re.value,onClose:Ee,"onUpdate:currentIndex":Le,onReact:Fe,onShare:qe,onReport:Be,onOpenReactions:je},null,8,["visible","images","current-index","post-id","media-item-id","author","timestamp","post-route","can-comment","my-reaction","reaction-summary","share-enabled","report-enabled","comments-fetch-url","comments-create-url"])):_("",!0),(c(),X(ge,{to:"body"},[y.value?(c(),X(ut,{key:0,visible:y.value,position:oe.value,quick:Pe.value,emojis:Se.value,"layer-z-index":a(_e).reactionPicker,onSelect:Ne},null,8,["visible","position","quick","emojis","layer-z-index"])):_("",!0)])),(c(),X(ge,{to:"body"},[d.value?(c(),v("div",{key:0,ref_key:"shareDialogRef",ref:re,class:"fixed inset-0 flex items-center justify-center px-4 py-6",style:Je({zIndex:a(_e).dialog}),role:"dialog","aria-modal":"true","aria-label":a(o)("post.share.modalTitle"),tabindex:"-1"},[r("button",{type:"button",class:"absolute inset-0 bg-black/70 backdrop-blur-sm","aria-label":a(o)("common.actions.close"),onClick:ne},null,8,Qt),r("div",jt,[r("div",qt,[r("h2",Dt,p(a(o)("post.share.modalTitle")),1),r("button",{type:"button",class:"rounded-full p-2 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-zinc-800",onClick:ne},[t[7]||(t[7]=r("span",{"aria-hidden":"true"}
1,"â",-1)),r("span",Vt,p(a(o)("common.actions.close")),1)])]),r("img",{src:d.value.url,alt:"",class:"h-44 w-full rounded-xl bg-black object-contain"},null,8,Bt),r("div",Gt,[r("button",{type:"button",class:"rounded-xl bg-blue-600 px-4 py-3 text-sm font-semibold text-white hover:bg-blue-500 disabled:opacity-60",disabled:T.value,onClick:De},p(T.value?a(o)("common.loading"):a(o)("post.share.options.feed")),9,At),r("button",{type:"button",class:"rounded-xl border border-zinc-300 px-4 py-3 text-sm font-semibold text-zinc-800 hover:bg-zinc-50 dark:border-zinc-700 dark:text-zinc-100 dark:hover:bg-zinc-800",onClick:me},p(a(o)("post.share.options.link")),1),r("button",{type:"button",class:"rounded-xl border border-zinc-300 px-4 py-3 text-sm font-semibold text-zinc-800 hover:bg-zinc-50 dark:border-zinc-700 dark:text-zinc-100 dark:hover:bg-zinc-800",onClick:Ve},p(a(o)("post.share.options.whatsapp")),1)])])],12,Nt)):_("",!0)])),Ze(dt,{modelValue:E.value,"onUpdate:modelValue":t[1]||(t[1]=b=>E.value=b),context:"media_asset","reportable-type":"PhotoAlbumItem","reportable-id":((A=S.value)==null?void 0:A.itemId)??null,"extra-meta":Me.value,onClosed:t[2]||(t[2]=b=>S.value=null)},null,8,["modelValue","reportable-id","extra-meta"])],512)}}});export{xa as default};
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.