birdclaw 0.9.4 → 0.9.5
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.
- package/CHANGELOG.md +6 -0
- package/dist/client/assets/{AvatarChip-C8zELEVt.js → AvatarChip-DsHj3LT7.js} +1 -1
- package/dist/client/assets/{ProfilePreview-CsiLpFrb.js → ProfilePreview-CaaMHV2N.js} +1 -1
- package/dist/client/assets/{SavedTimelineView-BSnwnujP.js → SavedTimelineView-HNbc1InN.js} +1 -1
- package/dist/client/assets/{SmartTimestamp-BypN4KPq.js → SmartTimestamp-CXaNLqN7.js} +1 -1
- package/dist/client/assets/{TimelineRouteFrame-H3D4R0Xu.js → TimelineRouteFrame-DUF8ETx2.js} +1 -1
- package/dist/client/assets/{blocks-WsAOmHsv.js → blocks-CLV8UyL1.js} +1 -1
- package/dist/client/assets/{bookmarks-B2I0kAWY.js → bookmarks-f8mrhE5v.js} +1 -1
- package/dist/client/assets/{client-stream-contracts-D1QUdWfh.js → client-stream-contracts-CNz2FSrQ.js} +1 -1
- package/dist/client/assets/{data-sources-DI5W9oVq.js → data-sources-obqEq3vx.js} +1 -1
- package/dist/client/assets/{discuss-t2QxXK0h.js → discuss-IVQmzPlf.js} +1 -1
- package/dist/client/assets/{dms-DjyXURaJ.js → dms-Dz53c2A8.js} +1 -1
- package/dist/client/assets/{inbox-CkHVoykL.js → inbox-OtMwyDqg.js} +1 -1
- package/dist/client/assets/{index-BR860w88.js → index-gdLl886E.js} +3 -3
- package/dist/client/assets/likes-bYLP-Iur.js +1 -0
- package/dist/client/assets/{links-lDqy93u8.js → links-Calv868h.js} +1 -1
- package/dist/client/assets/{mapbox-CVPXIYUZ.js → mapbox-D8DIktls.js} +2 -2
- package/dist/client/assets/{mapbox-gl-DRRiLKWb.js → mapbox-gl-CL_i4VMi.js} +1 -1
- package/dist/client/assets/{mentions-B6BXntri.js → mentions-CceV_r9w.js} +1 -1
- package/dist/client/assets/{network-map-BCUtBk8G.js → network-map-7r9If3kD.js} +2 -2
- package/dist/client/assets/{profile-analyze-YExKd6Lx.js → profile-analyze-BeyDxO7C.js} +1 -1
- package/dist/client/assets/{profile-hydration-client-BQyC5--e.js → profile-hydration-client-kffyMcqf.js} +1 -1
- package/dist/client/assets/{profiles._handle-idhd3kYo.js → profiles._handle-BH11vR7-.js} +1 -1
- package/dist/client/assets/{query-client-DZ5C7UNo.js → query-client-CD880OPj.js} +1 -1
- package/dist/client/assets/{rate-limits-jGxIfvUD.js → rate-limits-pf5ibAYx.js} +1 -1
- package/dist/client/assets/{routes-6U4Cc79j.js → routes-DYUCTi0s.js} +1 -1
- package/dist/client/assets/{schemas-CntsNLmN.js → schemas-CMQMhQXI.js} +1 -1
- package/dist/client/assets/{styles-DT4Pxoi-.css → styles-DAoXpgpq.css} +1 -1
- package/dist/client/assets/{today-COmNSYaE.js → today-CwzttriK.js} +1 -1
- package/dist/client/assets/{useTimelineRouteData-BpQzU16P.js → useTimelineRouteData-BE84vgO5.js} +1 -1
- package/dist/server/assets/{AvatarChip-DWag3IzT.js → AvatarChip-B5ASnpQ4.js} +1 -1
- package/dist/server/assets/{FeedState-CwzcvP-p.js → FeedState-YrMZ10Gf.js} +1 -1
- package/dist/server/assets/{ProfileAnalysisStream-CLjrYzEx.js → ProfileAnalysisStream-1CHrSLNN.js} +2 -2
- package/dist/server/assets/{ProfilePreview-Bq-DSUM2.js → ProfilePreview-Dk2CdOOS.js} +2 -2
- package/dist/server/assets/{SavedTimelineView-Bk9nfnb-.js → SavedTimelineView-BGZvQIYS.js} +2 -2
- package/dist/server/assets/{SmartTimestamp-C06w_f9J.js → SmartTimestamp-sxGoy8Uj.js} +1 -1
- package/dist/server/assets/{SyncNowButton-CKuXKYcd.js → SyncNowButton-CsgOFaO_.js} +1 -1
- package/dist/server/assets/{TimelineRouteFrame-Bg3e7X_N.js → TimelineRouteFrame-BWWFisJF.js} +3 -3
- package/dist/server/assets/{TweetRichText-wzUAtbPS.js → TweetRichText-BEo_OCEM.js} +2 -2
- package/dist/server/assets/{_tanstack-start-manifest_v-mm-2VYBo.js → _tanstack-start-manifest_v-AFEKQ2i-.js} +24 -24
- package/dist/server/assets/{blocks-CaP_u3mY.js → blocks-DWZAKPAX.js} +3 -3
- package/dist/server/assets/{blocks-DKy4yTF-.js → blocks-VXmcBqKD.js} +3 -3
- package/dist/server/assets/{bookmarks-CPFq3JVX.js → bookmarks-B-I4ELcA.js} +1 -1
- package/dist/server/assets/{client-stream-contracts-gtXEreFY.js → client-stream-contracts-DVzk8DzM.js} +4 -4
- package/dist/server/assets/{data-sources-DWwmQqcO.js → data-sources-UEYjgFHD.js} +1 -1
- package/dist/server/assets/{discuss-CVGB4_I0.js → discuss-4b2z14mT.js} +3 -3
- package/dist/server/assets/{discuss-BB8wFy4L.js → discuss-CJ_vThu8.js} +3 -3
- package/dist/server/assets/{dms-7NzdyQZQ.js → dms-BAKB1Mia.js} +6 -6
- package/dist/server/assets/{dms-vbEumuuO.js → dms-BCI8W9u2.js} +4 -4
- package/dist/server/assets/{inbox-CBeZctFd.js → inbox-BJzEE8Aa.js} +2 -2
- package/dist/server/assets/{inbox-UpHhXODd.js → inbox-D607zrwZ.js} +4 -4
- package/dist/server/assets/{likes-CDAjYyTm.js → likes-CMQGc5bh.js} +1 -1
- package/dist/server/assets/{links-DU-TIHtg.js → links-BU_FRxcz.js} +6 -6
- package/dist/server/assets/{links-sQ3q2jvO.js → links-Dz-6bmkg.js} +6 -6
- package/dist/server/assets/{mentions-DdndGSRw.js → mentions-B2K8tGvx.js} +1 -1
- package/dist/server/assets/{network-map-CcOz-T9O.js → network-map-BLqLL8CR.js} +2 -2
- package/dist/server/assets/{network-map-B9iOapuB.js → network-map-DvfpJQy1.js} +2 -2
- package/dist/server/assets/{profile-analyze-CUfXmXEH.js → profile-analyze-CyfbGAsL.js} +3 -3
- package/dist/server/assets/{profile-analyze-BmDeTif5.js → profile-analyze-Drz-nRl-.js} +1 -1
- package/dist/server/assets/{profiles._handle-BAqnghwo.js → profiles._handle-BBXArSJO.js} +5 -5
- package/dist/server/assets/{profiles._handle-8snagiR1.js → profiles._handle-CsU6xBVm.js} +4 -4
- package/dist/server/assets/{rate-limits-BY2-aQPT.js → rate-limits-3C3mBM3G.js} +1 -1
- package/dist/server/assets/{router-DVQ3M870.js → router-DeGdUXyx.js} +21 -21
- package/dist/server/assets/{routes-D9226vKz.js → routes-C4caR_ZX.js} +1 -1
- package/dist/server/assets/{today-DKWphGrC.js → today-CRa6Y-Tg.js} +3 -3
- package/dist/server/assets/{today-BmvIMJzI.js → today-CScZDxQx.js} +3 -3
- package/dist/server/assets/{ui-rDHeS-cc.js → ui-CL21-Ku0.js} +1 -1
- package/dist/server/assets/{useTimelineRouteData-BmDbGvQ8.js → useTimelineRouteData-BWxx9yQl.js} +6 -6
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/likes-CenHqxQG.js +0 -1
package/dist/client/assets/{useTimelineRouteData-BpQzU16P.js → useTimelineRouteData-BE84vgO5.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{At as n,Ct as r,Dt as i,Et as a,Fn as o,Gt as s,In as c,Kt as l,M as u,Mt as d,Rn as f,St as p,Tt as m,Ut as h,Wt as g,_t as _,an as v,at as y,bt as b,ct as x,ft as S,gt as C,ht as w,it as T,jt as E,kt as D,lt as O,mt as k,on as ee,ot as te,pt as A,rt as ne,sn as re,st as ie,vt as ae,wt as j,xt as oe,yt as se}from"./schemas-CntsNLmN.js";import{t as M}from"./createLucideIcon-CMLcIxOz.js";import{t as ce}from"./circle-check-BCK_qvXt.js";import{t as le}from"./repeat-2-CQ0lek01.js";import{t as ue}from"./search-C_LqodNa.js";import{C as de,a as fe,b as N,i as pe,l as me,m as he,n as P,o as ge,r as _e,s as ve,v as ye,w as be}from"./query-client-DZ5C7UNo.js";import{r as F,t as xe}from"./AvatarChip-C8zELEVt.js";import{c as Se,i as I,s as Ce,t as L}from"./ProfilePreview-CsiLpFrb.js";import{t as R}from"./SmartTimestamp-BypN4KPq.js";import{A as we,M as Te,O as Ee,at as De,ct as z,d as Oe,dt as ke,gt as B,it as Ae,k as je,lt as Me,mt as Ne,ot as Pe,pt as V,s as H,st as Fe,ut as Ie,vt as Le}from"./index-BR860w88.js";var Re=M(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),ze=M(`bookmark-check`,[[`path`,{d:`M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z`,key:`oz39mx`}],[`path`,{d:`m9 10 2 2 4-4`,key:`1gnqz4`}]]),Be=M(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Ve=M(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),He=class extends Ie{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:de(t,n.data),hasPreviousPage:be(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function Ue(e){return e}function We(e,t){return Me(e,He,t)}var U=e(t(),1),Ge=(0,U.createContext)(null);function Ke(e){return Ue({queryKey:[...P.conversations,e],queryFn:()=>me(pe(`/api/conversation?tweetId=${encodeURIComponent(e)}`,void 0,ye,`Conversation unavailable`)).then(e=>e.items),staleTime:1/0})}function qe({children:e}){let[t,n]=(0,U.useState)(null),r=(0,U.useMemo)(()=>({expandedSurfaceId:t,setExpandedSurfaceId:n}),[t]);return(0,U.createElement)(Ge.Provider,{value:r},e)}function Je(e,t=e){let n=(0,U.useContext)(Ge),[r,i]=(0,U.useState)(null),a=n?.expandedSurfaceId??r,o=n?.setExpandedSurfaceId??i,s=a===e,c=N(),l=z({...Ke(t),enabled:s}),u=(0,U.useCallback)(()=>{o(s?null:e)},[s,o,e]),d=(0,U.useCallback)(()=>{c.prefetchQuery(Ke(t))},[c,t]),f=l.isError?`error`:l.isFetching?`loading`:l.data?`ready`:`idle`;return{error:l.error instanceof Error?l.error.message:null,isOpen:s,items:l.data??[],loading:l.isFetching,prefetch:d,status:f,toggle:u}}var W=f();function Ye(e){let t=I(e);if(!t)return null;try{return new URL(t).hostname===`pbs.twimg.com`?t:null}catch{return null}}function G({article:e}){let t=I(e.url);if(!t)return null;let r=Ye(e.coverImageUrl);return(0,W.jsxs)(`a`,{"aria-label":`Read article: ${e.title}`,className:D,"data-perf":`tweet-article-card`,href:t,rel:`noreferrer`,target:`_blank`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col justify-center gap-1 px-3.5 py-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(Re,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)]`,strokeWidth:1.8}),(0,W.jsx)(`span`,{className:E,children:`Article on X`}),(0,W.jsx)(B,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)] opacity-0 transition-opacity group-hover/link-preview:opacity-100`,strokeWidth:1.8})]}),(0,W.jsx)(`span`,{className:d,children:e.title}),e.previewText?(0,W.jsx)(`span`,{className:n,children:e.previewText}):null]}),r?(0,W.jsx)(`div`,{className:`flex aspect-[1.45] w-40 shrink-0 overflow-hidden border-l border-[var(--line)] bg-[var(--bg-soft)] max-[720px]:w-28`,children:(0,W.jsx)(`img`,{alt:``,className:`size-full object-cover transition-transform duration-200 group-hover/link-preview:scale-[1.03]`,loading:`lazy`,src:r})}):null]})}function K({items:e}){let[t,n]=(0,U.useState)(null);if(e.length===0)return null;let r=e.slice(0,4),i=t===null?null:r[t]??null,a=i?.type===`video`||i?.type===`gif`?i.variants?.[0]?.url??Ze(i.url):null,s=r.length===1&&r[0]?.type===`image`?r[0]:null;return(0,W.jsxs)(W.Fragment,{children:[s?(0,W.jsx)(`button`,{"aria-label":`Open tweet media 1`,className:u(`tweet-media-single mt-2 max-w-full overflow-hidden rounded-2xl border border-[var(--line)] bg-[var(--bg-active)] p-0 text-left`,s.width&&s.height?`block`:`inline-block align-top`),onClick:e=>{e.stopPropagation(),n(0)},style:Xe(s),type:`button`,children:(0,W.jsx)(`img`,{alt:s.altText??`Tweet media 1`,className:u(`tweet-media-image block max-h-[720px] max-w-full`,s.width&&s.height?`size-full object-cover`:`h-auto w-auto object-contain`),height:s.height,loading:`lazy`,src:s.thumbnailUrl??s.url,width:s.width})}):(0,W.jsx)(`div`,{className:o(Math.min(e.length,4)),children:r.map((t,i)=>(0,W.jsx)(`button`,{"aria-label":`Open tweet media ${String(i+1)}`,className:c(i,Math.min(e.length,4)),onClick:e=>{e.stopPropagation(),n(i)},style:r.length===1&&t.width&&t.height?{aspectRatio:`${String(t.width)} / ${String(t.height)}`}:void 0,type:`button`,children:t.type===`image`?(0,W.jsx)(`img`,{alt:t.altText??`Tweet media ${String(i+1)}`,className:`tweet-media-image block size-full object-contain`,loading:`lazy`,src:t.thumbnailUrl??t.url}):(0,W.jsx)(`span`,{className:`tweet-media-fallback grid min-h-40 place-items-center font-semibold text-[var(--ink-soft)]`,children:t.type===`video`?`Video`:t.type===`gif`?`GIF`:`Media`})},t.url+String(i)))}),i?(0,W.jsxs)(`div`,{"aria-modal":`true`,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/85 p-4`,onClick:e=>{e.stopPropagation(),n(null)},role:`dialog`,children:[(0,W.jsx)(`button`,{"aria-label":`Close media viewer`,className:`absolute right-4 top-4 grid size-10 place-items-center rounded-full bg-white/10 text-white transition-colors hover:bg-white/20`,onClick:e=>{e.stopPropagation(),n(null)},type:`button`,children:(0,W.jsx)(Ve,{className:`size-5`,strokeWidth:1.8})}),i.type===`image`?(0,W.jsx)(`img`,{alt:i.altText??`Tweet media`,className:`max-h-[92vh] max-w-[92vw] object-contain`,onClick:e=>e.stopPropagation(),src:i.url}):a?(0,W.jsx)(`video`,{autoPlay:i.type===`gif`,className:`max-h-[92vh] max-w-[92vw]`,controls:!0,loop:i.type===`gif`,muted:i.type===`gif`,onClick:e=>e.stopPropagation(),playsInline:!0,poster:i.thumbnailUrl,src:a}):(0,W.jsxs)(`div`,{className:`grid min-h-64 min-w-80 place-items-center gap-3 rounded-2xl border border-white/20 bg-black p-6 text-white`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`span`,{children:i.type===`video`?`Video`:i.type===`gif`?`GIF`:`Media`}),(0,W.jsx)(`a`,{className:`rounded-full bg-white/10 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-white/20`,href:i.url,rel:`noreferrer`,target:`_blank`,children:`Open media`})]})]}):null]})}function Xe(e){if(!e.width||!e.height)return;let t=Math.min(e.width,Math.round(e.width/e.height*720));return{aspectRatio:`${String(e.width)} / ${String(e.height)}`,width:`${String(t)}px`}}function Ze(e){try{let t=new URL(e);return t.hostname===`video.twimg.com`||/\.(?:mp4|m3u8)(?:$|[?#])/i.test(t.pathname)?e:void 0}catch{return/\.(?:mp4|m3u8)(?:$|[?#])/i.test(e)?e:void 0}}function Qe({anchorId:e,error:t,items:n,loading:r}){return r?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--line)] bg-[var(--bg-card)]`,children:(0,W.jsx)(De,{detail:`Finding archived replies around this post`,label:`Loading conversation`})}):t?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--alert)] bg-[var(--alert-soft)] px-4 py-3 text-[14px] text-[var(--alert)]`,children:t}):n.length<=1?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--line)]`,children:(0,W.jsx)(Ae,{detail:`This post has no other archived replies locally.`,label:`No thread context yet`})}):(0,W.jsxs)(`section`,{"aria-label":`Conversation`,className:`mt-3 overflow-hidden rounded-2xl border border-[var(--line)] bg-[var(--bg-card)]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--line)] px-4 py-2.5 text-[13px] font-bold text-[var(--ink)]`,children:[(0,W.jsx)(V,{className:A,strokeWidth:1.8}),(0,W.jsxs)(`span`,{children:[n.length,` tweets in conversation`]})]}),(0,W.jsx)(`div`,{className:`flex flex-col`,children:n.map((t,r)=>{let a=t.id===e;return(0,W.jsxs)(`div`,{className:u(`flex gap-3 px-4 py-3`,r>0&&`border-t border-[var(--line)]`,a&&`bg-[var(--accent-soft)]`),children:[(0,W.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,W.jsx)(xe,{avatarUrl:t.author.avatarUrl,hue:t.author.avatarHue,name:t.author.displayName,profileId:t.author.id,size:`small`}),r<n.length-1?(0,W.jsx)(`span`,{className:`mt-2 w-px flex-1 bg-[var(--line)]`}):null]}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`header`,{className:`flex min-w-0 items-center gap-1.5 text-[14px]`,children:[(0,W.jsx)(L,{profile:t.author,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:p,children:t.author.displayName}),(0,W.jsxs)(`span`,{className:b,children:[`@`,t.author.handle]})]})}),(0,W.jsx)(`span`,{className:`text-[var(--ink-soft)]`,children:`·`}),(0,W.jsx)(R,{className:i,value:t.createdAt}),a?(0,W.jsx)(`span`,{className:`ml-auto rounded-full bg-[var(--accent)] px-2 py-0.5 text-[11px] font-bold text-white`,children:`selected`}):null]}),(0,W.jsx)(H,{className:`mt-1 whitespace-pre-wrap break-words text-[14px] leading-[1.45] text-[var(--ink)] [overflow-wrap:anywhere]`,entities:t.entities,text:t.text}),(0,W.jsx)(K,{items:t.media}),t.entities.article?(0,W.jsx)(G,{article:t.entities.article}):null]})]},t.id)})})]})}function q({item:e,label:t}){return(0,W.jsxs)(`section`,{className:ne,children:[(0,W.jsx)(`p`,{className:x,children:t}),(0,W.jsxs)(`header`,{className:ie,children:[(0,W.jsx)(L,{profile:e.author,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:O,children:e.author.displayName}),(0,W.jsxs)(`span`,{className:te,children:[`@`,e.author.handle]})]})}),(0,W.jsx)(`span`,{className:`text-[var(--ink-soft)]`,children:`·`}),(0,W.jsx)(R,{className:i,value:e.createdAt})]}),(0,W.jsx)(H,{className:y,entities:e.entities,text:e.text}),(0,W.jsx)(K,{items:e.media}),e.entities.article?(0,W.jsx)(G,{article:e.entities.article}):null]})}var $e=2,J=0,Y=[];function et(e){let t=e.expandedUrl||``;return e.imageUrl&&e.siteName&&e.title&&it(t)?!1:!e.imageUrl||!e.title||!e.description||e.title===e.displayUrl||e.description===e.displayUrl}function tt(){for(;J<$e&&Y.length>0;)Y.shift()?.()}function nt(e){return new Promise((t,n)=>{Y.push(()=>{J+=1,e().then(t).catch(n).finally(()=>{J=Math.max(0,J-1),tt()})}),tt()})}function rt(e){let t=new URLSearchParams({url:e});return Ue({queryKey:[...P.linkPreviews,e],queryFn:()=>nt(()=>_e(`/api/link-preview?${t.toString()}`,void 0,he,`Link preview unavailable`).then(e=>e.preview)),staleTime:30*6e4})}function X(e,t){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return t}}function it(e){try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`pbs.twimg.com`&&(t.pathname.startsWith(`/media/`)||t.pathname.startsWith(`/amplify_video_thumb/`))}catch{return!1}}function at(e){if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`pbs.twimg.com`&&(t.pathname.startsWith(`/media/`)||t.pathname.startsWith(`/amplify_video_thumb/`))?t.toString():null}catch{return null}}function ot({entry:e,index:t}){let r=I(e.expandedUrl||e.url),i=r??``,a=e.displayUrl||(r?X(r,r):``),o=r&&it(r)?r:null,s=(0,U.useMemo)(()=>({expandedUrl:i,displayUrl:a,title:e.title??(o?X(i,a):void 0),description:e.description??(o?a:void 0),imageUrl:e.imageUrl??o,siteName:e.siteName??(o?X(i,a):void 0)}),[o,a,e.description,e.imageUrl,e.siteName,e.title,i]),[c,l]=(0,U.useState)(!1),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),g=(0,U.useRef)(null),_=!!(r&&et(s)),v=z({...rt(r??``),enabled:_&&f&&m}),y=(0,U.useMemo)(()=>{let e=v.data;return e?{expandedUrl:I(e.url)??s.expandedUrl,displayUrl:s.displayUrl,title:e.title??s.title,description:e.description??s.description,imageUrl:e.imageUrl??s.imageUrl,siteName:e.siteName??s.siteName}:s},[s,v.data]);if((0,U.useEffect)(()=>{l(!1),p(!1),h(!1)},[s]),(0,U.useEffect)(()=>{if(!r||!_)return;let e=g.current;if(!e||typeof IntersectionObserver>`u`){p(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(p(!0),t.disconnect())},{rootMargin:`320px 0px`});return t.observe(e),()=>t.disconnect()},[_,r]),(0,U.useEffect)(()=>{if(!r||!f||!_)return;let e=window.setTimeout(()=>{h(!0)},100);return()=>window.clearTimeout(e)},[f,_,r]),!r)return null;let b=y.title||e.displayUrl,x=y.description&&y.description!==b?y.description:y.siteName||X(y.expandedUrl,e.displayUrl),S=y.siteName||X(y.expandedUrl,e.displayUrl),C=at(y.imageUrl),w=!!(C&&!c);return(0,W.jsxs)(`a`,{className:D,"data-perf":`link-preview-card`,href:I(y.expandedUrl)??r,ref:g,rel:`noreferrer`,target:`_blank`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col justify-center gap-1 px-3.5 py-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:E,children:S}),(0,W.jsx)(B,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)] opacity-0 transition-opacity group-hover/link-preview:opacity-100`,strokeWidth:1.8})]}),(0,W.jsx)(`span`,{className:d,children:b}),(0,W.jsx)(`span`,{className:n,children:x}),(0,W.jsx)(`span`,{className:u(E,`text-[12px]`),children:e.displayUrl})]}),(0,W.jsx)(`div`,{className:`flex aspect-[1.45] w-40 shrink-0 items-center justify-center overflow-hidden border-l border-[var(--line)] bg-[var(--bg-soft)] max-[720px]:w-28`,children:w?(0,W.jsx)(`img`,{alt:b,className:`size-full object-cover transition-transform duration-200 group-hover/link-preview:scale-[1.03]`,loading:`lazy`,onError:()=>l(!0),src:C??``}):(0,W.jsx)(Be,{"aria-hidden":`true`,className:`size-8 text-[var(--ink-soft)]`,strokeWidth:1.7})})]},`${e.expandedUrl}-${String(t)}`)}function st(e){if(!e)return null;try{let t=new URL(e);return`${t.protocol}//${t.hostname}${t.pathname}`}catch{return e.split(`?`)[0]??e}}function ct(e){let t=new Set;for(let n of e)for(let e of[n.url,n.thumbnailUrl]){let n=st(e);n&&t.add(n)}return t}function lt(e,t,n){if(t.size>0&&ft(e.expandedUrl,n))return!0;for(let n of[e.url,e.expandedUrl,e.displayUrl]){let e=st(n);if(e&&t.has(e))return!0}return!1}function Z(e){if(!e)return!1;try{let t=e.includes(`://`)?e:`https://${e}`;return new URL(t).hostname.replace(/^www\./,``)===`t.co`}catch{return!1}}function Q(e){return Z(e.expandedUrl)?!0:e.expandedUrl?!1:Z(e.displayUrl)?!0:!e.displayUrl&&Z(e.url)}function ut(e,t){return(t.urls??[]).filter(Q).map(t=>Se(e,t))}function dt(e,t){let n=0,r=``;for(let i of[...t].sort((e,t)=>e.start-t.start))i.start<n||i.end<=i.start||i.end>e.length||(r+=e.slice(n,i.start),n=i.end);return r+=e.slice(n),r}function $(e,t,n){if(n.size===0)return!1;let r=ut(e,t);return r.length===0?!1:dt(e,r).trim().length===0}function ft(e,t){if(!e)return!1;try{let n=new URL(e),r=n.hostname.replace(/^www\./,``);if(r!==`x.com`&&r!==`twitter.com`)return!1;let i=n.pathname.split(`/`).filter(Boolean),a=i.indexOf(`status`);if(a<0||i[a+1]!==t)return!1;let o=i[a+2];return o===`photo`||o===`video`}catch{return!1}}function pt(e,t,n,r){let i=ct(t);if(i.size===0)return e;let a=$(r,e,i);return{...e,urls:(e.urls??[]).filter(e=>!lt(e,i,n)&&!(a&&Q(e)))}}function mt(e,t,n,r){let i=ct(t);if(i.size===0)return[];let a=$(r,e,i);return(e.urls??[]).filter(e=>lt(e,i,n)||a&&Q(e)).map(e=>Se(r,e))}function ht(e,t){return(e.urls??[]).filter(n=>Q(n)||e.article&&Ce(n,e.article)?!1:t?!n.expandedUrl.includes(t):!0)}function gt(e){return e instanceof Element&&!!e.closest(`a,button,input,textarea,select,[role='button']`)}function _t({tweet:e,hiddenUrlRanges:t,visibleUrlCards:n,replyToTweet:r,quotedTweet:i}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(H,{className:a,entities:e.entities,hiddenUrlRanges:t,text:e.text}),(0,W.jsx)(K,{items:e.media}),e.entities.article?(0,W.jsx)(G,{article:e.entities.article}):null,r?(0,W.jsx)(`div`,{className:T,children:(0,W.jsx)(q,{item:r,label:`In reply to`})}):null,i?(0,W.jsx)(`div`,{className:T,children:(0,W.jsx)(q,{item:i,label:`Quoted tweet`})}):null,n.map((e,t)=>(0,W.jsx)(ot,{entry:e,index:t},`${e.expandedUrl}-${String(t)}`))]})}function vt({item:e,onReply:t,showReplyControls:n=!0}){let a=n&&e.kind!==`like`&&e.kind!==`bookmark`,o=e.retweetedTweet??e,s=o.id,c=e.retweetedTweet&&s===`${e.id}:retweeted`?e.id:s,l=o.author,d=Je(e.id,c),f=pt(o.entities,o.media,o.id,o.text),h=mt(o.entities,o.media,o.id,o.text),g=ht(f,e.retweetedTweet?null:e.quotedTweet?.id??null),v=e.retweetedTweet?o.mediaCount??o.media.length:e.mediaCount,y=o.isReplied??e.isReplied,x=o.likeCount??e.likeCount,w=o.bookmarked??e.bookmarked,T=o.liked??e.liked,E=T||x>0,D=v>0,O=!!(e.retweetedTweet?o.replyToId:e.replyToTweet||e.replyToId);return(0,W.jsxs)(`article`,{className:u(ae,`cursor-pointer [content-visibility:auto] [contain-intrinsic-size:auto_280px]`),"data-perf":`timeline-card`,onFocus:d.prefetch,onMouseEnter:d.prefetch,onClick:e=>{gt(e.target)||d.toggle()},children:[(0,W.jsx)(xe,{avatarUrl:l.avatarUrl,hue:l.avatarHue,name:l.displayName,profileId:l.id}),(0,W.jsxs)(`div`,{className:_,children:[e.retweetedTweet?(0,W.jsxs)(`div`,{className:`inline-flex items-center gap-2 text-[13px] font-medium text-[var(--ink-soft)]`,children:[(0,W.jsx)(le,{className:`size-4`,strokeWidth:1.8}),(0,W.jsx)(L,{profile:e.author,children:(0,W.jsxs)(`span`,{children:[e.author.displayName,` reposted`]})})]}):null,(0,W.jsxs)(`header`,{className:oe,children:[(0,W.jsx)(L,{profile:l,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:p,children:l.displayName}),(0,W.jsxs)(`span`,{className:b,children:[`@`,l.handle]})]})}),(0,W.jsx)(`span`,{className:se,children:`·`}),(0,W.jsx)(R,{className:i,value:o.createdAt}),a||O?(0,W.jsxs)(`span`,{className:`ml-auto inline-flex items-center gap-1`,children:[O?(0,W.jsxs)(`span`,{"aria-label":`Part of a conversation`,className:u(j,r),title:`Part of a conversation`,children:[(0,W.jsx)(V,{className:`size-3.5`,strokeWidth:2}),`thread`]}):null,a?(0,W.jsxs)(`span`,{"aria-label":y?`We replied`:`Reply open`,className:u(j,y?r:m),title:y?`We replied`:`Reply open`,children:[y?(0,W.jsx)(ce,{className:`size-3.5`,strokeWidth:2}):(0,W.jsx)(Le,{className:`size-3`,strokeWidth:2.2}),y?`replied`:`open`]}):null]}):null]}),(0,W.jsx)(_t,{hiddenUrlRanges:h,quotedTweet:e.retweetedTweet?null:e.quotedTweet,replyToTweet:e.retweetedTweet?null:e.replyToTweet,tweet:o,visibleUrlCards:g}),(0,W.jsx)(`footer`,{className:C,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-[13px] text-[var(--ink-soft)]`,children:[(0,W.jsxs)(`button`,{"aria-expanded":d.isOpen,"aria-label":d.isOpen?`Hide conversation`:`Show conversation`,className:S,onClick:e=>{e.stopPropagation(),d.toggle()},type:`button`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(V,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:d.isOpen?`Hide thread`:`Thread`})]}),a?(0,W.jsxs)(`button`,{className:S,onClick:e=>{e.stopPropagation(),t(c)},type:`button`,"aria-label":`Reply`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(V,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:`Reply`})]}):null,(0,W.jsxs)(`a`,{"aria-label":`Analyse @${l.handle}`,className:S,href:`/profiles/${encodeURIComponent(l.handle)}`,onClick:e=>{e.stopPropagation()},title:`Analyse @${l.handle}`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(ke,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:`Analyse`})]}),E?(0,W.jsxs)(`span`,{"aria-label":`${F(x)} likes`,className:u(`inline-flex items-center gap-1 px-2 py-1 text-[13px]`,T&&`text-[var(--like)]`),title:`${F(x)} likes`,children:[(0,W.jsx)(Ne,{className:A,strokeWidth:1.7,fill:T?`currentColor`:`none`}),(0,W.jsx)(`span`,{children:F(x)})]}):null,w?(0,W.jsx)(`span`,{"aria-label":`Bookmarked`,className:`inline-flex items-center px-2 py-1`,title:`Bookmarked`,children:(0,W.jsx)(ze,{className:A,strokeWidth:1.7})}):null,D?(0,W.jsxs)(`span`,{"aria-label":`${String(v)} media attachments`,className:`inline-flex items-center gap-1 px-2 py-1 text-[13px]`,title:`${String(v)} media attachments`,children:[(0,W.jsx)(Be,{className:A,strokeWidth:1.7}),(0,W.jsx)(`span`,{children:v})]}):null]})}),d.isOpen?(0,W.jsx)(Qe,{anchorId:c,error:d.error,items:d.items,loading:d.loading}):null]})]})}function yt({title:e,subtitles:t,action:n,controls:r}){return(0,W.jsxs)(`header`,{className:h,children:[(0,W.jsxs)(`div`,{className:`${g} flex-wrap`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,W.jsx)(`h1`,{className:l,children:e}),t]}),n]}),r]})}function bt({children:e}){return(0,W.jsx)(`p`,{className:s,children:e})}function xt({value:e,onChange:t,placeholder:n}){return(0,W.jsx)(`div`,{className:`px-4 pb-3`,children:(0,W.jsxs)(`label`,{className:re,children:[(0,W.jsx)(ue,{className:v,strokeWidth:2}),(0,W.jsx)(`input`,{className:ee,onChange:e=>t(e.target.value),placeholder:n,value:e})]})})}function St({header:e,notice:t,loading:n,loadingLabel:r,loadingDetail:i,error:a,errorTitle:o,onRetry:s,empty:c,emptyLabel:l,emptyDetail:u,children:d,hasMore:f,loadingMore:p,onLoadMore:m}){return(0,W.jsxs)(W.Fragment,{children:[e,t,(0,W.jsx)(qe,{children:(0,W.jsxs)(`section`,{className:w,children:[n?(0,W.jsx)(we,{detail:i,label:r,children:(0,W.jsx)(Te,{})}):a?(0,W.jsx)(je,{action:(0,W.jsx)(`button`,{className:`rounded-full bg-[var(--accent)] px-4 py-1.5 text-[14px] font-bold text-white`,onClick:s,type:`button`,children:`Retry`}),message:a,title:o}):c?(0,W.jsx)(Ee,{detail:u,label:l}):null,d,!n&&!a&&f?(0,W.jsx)(`div`,{className:`flex justify-center py-4`,children:(0,W.jsx)(`button`,{className:`rounded-full bg-[var(--accent)] px-5 py-1.5 text-[14px] font-bold text-white disabled:opacity-60`,disabled:p,onClick:m,type:`button`,children:p?`Loading…`:`Load more`})}):null]})})]})}var Ct=50,wt=5*6e4;function Tt({resource:e,search:t,replyFilter:n,likedOnly:r,bookmarkedOnly:i,selectedAccountId:a,pageParam:o}){let s=new URLSearchParams({resource:e,limit:String(Ct)});a&&s.set(`account`,a),n&&s.set(`replyFilter`,n),r&&s.set(`liked`,`true`),i&&s.set(`bookmarked`,`true`),t.trim()&&s.set(`search`,t.trim()),o&&(s.set(`until`,o.until),s.set(`untilId`,o.untilId)),s.sort();let c=typeof window>`u`?`http://birdclaw.local`:window.location.origin;return new URL(`/api/query?${s.toString()}`,c).toString()}function Et({resource:e,search:t,errorFallback:n,replyFilter:r,likedOnly:i=!1,bookmarkedOnly:a=!1}){let o=N(),s=z({queryKey:P.status,queryFn:({signal:e})=>fe({signal:e})}).data??null,c=Pe(s?.accounts),l=Oe(t,180),u=[...P.timelines,{resource:e,search:l,replyFilter:r??`all`,likedOnly:i,bookmarkedOnly:a,selectedAccountId:c??null}],d=We({queryKey:u,initialPageParam:void 0,queryFn:({pageParam:t,signal:n})=>ge(Tt({resource:e,search:l,replyFilter:r,likedOnly:i,bookmarkedOnly:a,selectedAccountId:c,pageParam:t}),{signal:n}),getNextPageParam:e=>{if(e.resource===`dms`)return;let t=e.items,n=t.at(-1);return t.length>=Ct&&n?{until:n.createdAt,untilId:n.id}:void 0},staleTime:wt}),f=(0,U.useMemo)(()=>{let e=new Set,t=[];for(let n of d.data?.pages??[])if(n.resource!==`dms`)for(let r of n.items)e.has(r.id)||(e.add(r.id),t.push(r));return t},[d.data]),p=Fe({mutationFn:({tweetId:e,text:t})=>ve({kind:`replyTweet`,accountId:c??`acct_primary`,tweetId:e,text:t}),onSuccess:()=>o.invalidateQueries({queryKey:u})});function m(){d.refetch()}function h(){Promise.all([o.invalidateQueries({queryKey:P.timelines}),o.invalidateQueries({queryKey:P.status})])}async function g(e){let t=window.prompt(`Reply text`);t?.trim()&&await p.mutateAsync({tweetId:e,text:t.trim()}).catch(()=>{})}let _=d.error;return{meta:s,items:f,loading:d.isPending,error:_?_ instanceof Error?_.message:n:null,replyError:p.error?p.error instanceof Error?p.error.message:`Reply failed`:null,retry:m,refreshLocalView:h,replyToTweet:g,selectedAccountId:c,hasMore:d.hasNextPage,loadingMore:d.isFetchingNextPage,loadMore:()=>d.fetchNextPage().then(()=>void 0)}}export{xt as a,bt as i,yt as n,vt as o,St as r,Et as t};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{At as n,Ct as r,Dt as i,Et as a,Fn as o,Gt as s,In as c,Kt as l,M as u,Mt as d,Rn as f,St as p,Tt as m,Ut as h,Wt as g,_t as _,an as v,at as y,bt as b,ct as x,ft as S,gt as C,ht as w,it as T,jt as E,kt as D,lt as O,mt as k,on as ee,ot as te,pt as A,rt as ne,sn as re,st as ie,vt as ae,wt as j,xt as oe,yt as se}from"./schemas-CMQMhQXI.js";import{t as M}from"./createLucideIcon-CMLcIxOz.js";import{t as ce}from"./circle-check-BCK_qvXt.js";import{t as le}from"./repeat-2-CQ0lek01.js";import{t as ue}from"./search-C_LqodNa.js";import{C as de,a as fe,b as N,i as pe,l as me,m as he,n as P,o as ge,r as _e,s as ve,v as ye,w as be}from"./query-client-CD880OPj.js";import{r as F,t as xe}from"./AvatarChip-DsHj3LT7.js";import{c as Se,i as I,s as Ce,t as L}from"./ProfilePreview-CaaMHV2N.js";import{t as R}from"./SmartTimestamp-CXaNLqN7.js";import{A as we,M as Te,O as Ee,at as De,ct as z,d as Oe,dt as ke,gt as B,it as Ae,k as je,lt as Me,mt as Ne,ot as Pe,pt as V,s as H,st as Fe,ut as Ie,vt as Le}from"./index-gdLl886E.js";var Re=M(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),ze=M(`bookmark-check`,[[`path`,{d:`M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z`,key:`oz39mx`}],[`path`,{d:`m9 10 2 2 4-4`,key:`1gnqz4`}]]),Be=M(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Ve=M(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),He=class extends Ie{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:de(t,n.data),hasPreviousPage:be(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function Ue(e){return e}function We(e,t){return Me(e,He,t)}var U=e(t(),1),Ge=(0,U.createContext)(null);function Ke(e){return Ue({queryKey:[...P.conversations,e],queryFn:()=>me(pe(`/api/conversation?tweetId=${encodeURIComponent(e)}`,void 0,ye,`Conversation unavailable`)).then(e=>e.items),staleTime:1/0})}function qe({children:e}){let[t,n]=(0,U.useState)(null),r=(0,U.useMemo)(()=>({expandedSurfaceId:t,setExpandedSurfaceId:n}),[t]);return(0,U.createElement)(Ge.Provider,{value:r},e)}function Je(e,t=e){let n=(0,U.useContext)(Ge),[r,i]=(0,U.useState)(null),a=n?.expandedSurfaceId??r,o=n?.setExpandedSurfaceId??i,s=a===e,c=N(),l=z({...Ke(t),enabled:s}),u=(0,U.useCallback)(()=>{o(s?null:e)},[s,o,e]),d=(0,U.useCallback)(()=>{c.prefetchQuery(Ke(t))},[c,t]),f=l.isError?`error`:l.isFetching?`loading`:l.data?`ready`:`idle`;return{error:l.error instanceof Error?l.error.message:null,isOpen:s,items:l.data??[],loading:l.isFetching,prefetch:d,status:f,toggle:u}}var W=f();function Ye(e){let t=I(e);if(!t)return null;try{return new URL(t).hostname===`pbs.twimg.com`?t:null}catch{return null}}function G({article:e}){let t=I(e.url);if(!t)return null;let r=Ye(e.coverImageUrl);return(0,W.jsxs)(`a`,{"aria-label":`Read article: ${e.title}`,className:D,"data-perf":`tweet-article-card`,href:t,rel:`noreferrer`,target:`_blank`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col justify-center gap-1 px-3.5 py-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(Re,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)]`,strokeWidth:1.8}),(0,W.jsx)(`span`,{className:E,children:`Article on X`}),(0,W.jsx)(B,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)] opacity-0 transition-opacity group-hover/link-preview:opacity-100`,strokeWidth:1.8})]}),(0,W.jsx)(`span`,{className:d,children:e.title}),e.previewText?(0,W.jsx)(`span`,{className:n,children:e.previewText}):null]}),r?(0,W.jsx)(`div`,{className:`flex aspect-[1.45] w-40 shrink-0 overflow-hidden border-l border-[var(--line)] bg-[var(--bg-soft)] max-[720px]:w-28`,children:(0,W.jsx)(`img`,{alt:``,className:`size-full object-cover transition-transform duration-200 group-hover/link-preview:scale-[1.03]`,loading:`lazy`,src:r})}):null]})}function K({items:e}){let[t,n]=(0,U.useState)(null);if(e.length===0)return null;let r=e.slice(0,4),i=t===null?null:r[t]??null,a=i?.type===`video`||i?.type===`gif`?i.variants?.[0]?.url??Ze(i.url):null,s=r.length===1&&r[0]?.type===`image`?r[0]:null;return(0,W.jsxs)(W.Fragment,{children:[s?(0,W.jsx)(`button`,{"aria-label":`Open tweet media 1`,className:u(`tweet-media-single mt-2 max-w-full overflow-hidden rounded-2xl border border-[var(--line)] bg-[var(--bg-active)] p-0 text-left`,s.width&&s.height?`block`:`inline-block align-top`),onClick:e=>{e.stopPropagation(),n(0)},style:Xe(s),type:`button`,children:(0,W.jsx)(`img`,{alt:s.altText??`Tweet media 1`,className:u(`tweet-media-image block max-h-[720px] max-w-full`,s.width&&s.height?`size-full object-cover`:`h-auto w-auto object-contain`),height:s.height,loading:`lazy`,src:s.thumbnailUrl??s.url,width:s.width})}):(0,W.jsx)(`div`,{className:o(Math.min(e.length,4)),children:r.map((t,i)=>(0,W.jsx)(`button`,{"aria-label":`Open tweet media ${String(i+1)}`,className:c(i,Math.min(e.length,4)),onClick:e=>{e.stopPropagation(),n(i)},style:r.length===1&&t.width&&t.height?{aspectRatio:`${String(t.width)} / ${String(t.height)}`}:void 0,type:`button`,children:t.type===`image`?(0,W.jsx)(`img`,{alt:t.altText??`Tweet media ${String(i+1)}`,className:`tweet-media-image block size-full object-contain`,loading:`lazy`,src:t.thumbnailUrl??t.url}):(0,W.jsx)(`span`,{className:`tweet-media-fallback grid min-h-40 place-items-center font-semibold text-[var(--ink-soft)]`,children:t.type===`video`?`Video`:t.type===`gif`?`GIF`:`Media`})},t.url+String(i)))}),i?(0,W.jsxs)(`div`,{"aria-modal":`true`,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/85 p-4`,onClick:e=>{e.stopPropagation(),n(null)},role:`dialog`,children:[(0,W.jsx)(`button`,{"aria-label":`Close media viewer`,className:`absolute right-4 top-4 grid size-10 place-items-center rounded-full bg-white/10 text-white transition-colors hover:bg-white/20`,onClick:e=>{e.stopPropagation(),n(null)},type:`button`,children:(0,W.jsx)(Ve,{className:`size-5`,strokeWidth:1.8})}),i.type===`image`?(0,W.jsx)(`img`,{alt:i.altText??`Tweet media`,className:`max-h-[92vh] max-w-[92vw] object-contain`,onClick:e=>e.stopPropagation(),src:i.url}):a?(0,W.jsx)(`video`,{autoPlay:i.type===`gif`,className:`max-h-[92vh] max-w-[92vw]`,controls:!0,loop:i.type===`gif`,muted:i.type===`gif`,onClick:e=>e.stopPropagation(),playsInline:!0,poster:i.thumbnailUrl,src:a}):(0,W.jsxs)(`div`,{className:`grid min-h-64 min-w-80 place-items-center gap-3 rounded-2xl border border-white/20 bg-black p-6 text-white`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`span`,{children:i.type===`video`?`Video`:i.type===`gif`?`GIF`:`Media`}),(0,W.jsx)(`a`,{className:`rounded-full bg-white/10 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-white/20`,href:i.url,rel:`noreferrer`,target:`_blank`,children:`Open media`})]})]}):null]})}function Xe(e){if(!e.width||!e.height)return;let t=Math.min(e.width,Math.round(e.width/e.height*720));return{aspectRatio:`${String(e.width)} / ${String(e.height)}`,width:`${String(t)}px`}}function Ze(e){try{let t=new URL(e);return t.hostname===`video.twimg.com`||/\.(?:mp4|m3u8)(?:$|[?#])/i.test(t.pathname)?e:void 0}catch{return/\.(?:mp4|m3u8)(?:$|[?#])/i.test(e)?e:void 0}}function Qe({anchorId:e,error:t,items:n,loading:r}){return r?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--line)] bg-[var(--bg-card)]`,children:(0,W.jsx)(De,{detail:`Finding archived replies around this post`,label:`Loading conversation`})}):t?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--alert)] bg-[var(--alert-soft)] px-4 py-3 text-[14px] text-[var(--alert)]`,children:t}):n.length<=1?(0,W.jsx)(`section`,{className:`mt-3 rounded-2xl border border-[var(--line)]`,children:(0,W.jsx)(Ae,{detail:`This post has no other archived replies locally.`,label:`No thread context yet`})}):(0,W.jsxs)(`section`,{"aria-label":`Conversation`,className:`mt-3 overflow-hidden rounded-2xl border border-[var(--line)] bg-[var(--bg-card)]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--line)] px-4 py-2.5 text-[13px] font-bold text-[var(--ink)]`,children:[(0,W.jsx)(V,{className:A,strokeWidth:1.8}),(0,W.jsxs)(`span`,{children:[n.length,` tweets in conversation`]})]}),(0,W.jsx)(`div`,{className:`flex flex-col`,children:n.map((t,r)=>{let a=t.id===e;return(0,W.jsxs)(`div`,{className:u(`flex gap-3 px-4 py-3`,r>0&&`border-t border-[var(--line)]`,a&&`bg-[var(--accent-soft)]`),children:[(0,W.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,W.jsx)(xe,{avatarUrl:t.author.avatarUrl,hue:t.author.avatarHue,name:t.author.displayName,profileId:t.author.id,size:`small`}),r<n.length-1?(0,W.jsx)(`span`,{className:`mt-2 w-px flex-1 bg-[var(--line)]`}):null]}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`header`,{className:`flex min-w-0 items-center gap-1.5 text-[14px]`,children:[(0,W.jsx)(L,{profile:t.author,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:p,children:t.author.displayName}),(0,W.jsxs)(`span`,{className:b,children:[`@`,t.author.handle]})]})}),(0,W.jsx)(`span`,{className:`text-[var(--ink-soft)]`,children:`·`}),(0,W.jsx)(R,{className:i,value:t.createdAt}),a?(0,W.jsx)(`span`,{className:`ml-auto rounded-full bg-[var(--accent)] px-2 py-0.5 text-[11px] font-bold text-white`,children:`selected`}):null]}),(0,W.jsx)(H,{className:`mt-1 whitespace-pre-wrap break-words text-[14px] leading-[1.45] text-[var(--ink)] [overflow-wrap:anywhere]`,entities:t.entities,text:t.text}),(0,W.jsx)(K,{items:t.media}),t.entities.article?(0,W.jsx)(G,{article:t.entities.article}):null]})]},t.id)})})]})}function q({item:e,label:t}){return(0,W.jsxs)(`section`,{className:ne,children:[(0,W.jsx)(`p`,{className:x,children:t}),(0,W.jsxs)(`header`,{className:ie,children:[(0,W.jsx)(L,{profile:e.author,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:O,children:e.author.displayName}),(0,W.jsxs)(`span`,{className:te,children:[`@`,e.author.handle]})]})}),(0,W.jsx)(`span`,{className:`text-[var(--ink-soft)]`,children:`·`}),(0,W.jsx)(R,{className:i,value:e.createdAt})]}),(0,W.jsx)(H,{className:y,entities:e.entities,text:e.text}),(0,W.jsx)(K,{items:e.media}),e.entities.article?(0,W.jsx)(G,{article:e.entities.article}):null]})}var $e=2,J=0,Y=[];function et(e){let t=e.expandedUrl||``;return e.imageUrl&&e.siteName&&e.title&&it(t)?!1:!e.imageUrl||!e.title||!e.description||e.title===e.displayUrl||e.description===e.displayUrl}function tt(){for(;J<$e&&Y.length>0;)Y.shift()?.()}function nt(e){return new Promise((t,n)=>{Y.push(()=>{J+=1,e().then(t).catch(n).finally(()=>{J=Math.max(0,J-1),tt()})}),tt()})}function rt(e){let t=new URLSearchParams({url:e});return Ue({queryKey:[...P.linkPreviews,e],queryFn:()=>nt(()=>_e(`/api/link-preview?${t.toString()}`,void 0,he,`Link preview unavailable`).then(e=>e.preview)),staleTime:30*6e4})}function X(e,t){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return t}}function it(e){try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`pbs.twimg.com`&&(t.pathname.startsWith(`/media/`)||t.pathname.startsWith(`/amplify_video_thumb/`))}catch{return!1}}function at(e){if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`&&t.hostname===`pbs.twimg.com`&&(t.pathname.startsWith(`/media/`)||t.pathname.startsWith(`/amplify_video_thumb/`))?t.toString():null}catch{return null}}function ot({entry:e,index:t}){let r=I(e.expandedUrl||e.url),i=r??``,a=e.displayUrl||(r?X(r,r):``),o=r&&it(r)?r:null,s=(0,U.useMemo)(()=>({expandedUrl:i,displayUrl:a,title:e.title??(o?X(i,a):void 0),description:e.description??(o?a:void 0),imageUrl:e.imageUrl??o,siteName:e.siteName??(o?X(i,a):void 0)}),[o,a,e.description,e.imageUrl,e.siteName,e.title,i]),[c,l]=(0,U.useState)(!1),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),g=(0,U.useRef)(null),_=!!(r&&et(s)),v=z({...rt(r??``),enabled:_&&f&&m}),y=(0,U.useMemo)(()=>{let e=v.data;return e?{expandedUrl:I(e.url)??s.expandedUrl,displayUrl:s.displayUrl,title:e.title??s.title,description:e.description??s.description,imageUrl:e.imageUrl??s.imageUrl,siteName:e.siteName??s.siteName}:s},[s,v.data]);if((0,U.useEffect)(()=>{l(!1),p(!1),h(!1)},[s]),(0,U.useEffect)(()=>{if(!r||!_)return;let e=g.current;if(!e||typeof IntersectionObserver>`u`){p(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(p(!0),t.disconnect())},{rootMargin:`320px 0px`});return t.observe(e),()=>t.disconnect()},[_,r]),(0,U.useEffect)(()=>{if(!r||!f||!_)return;let e=window.setTimeout(()=>{h(!0)},100);return()=>window.clearTimeout(e)},[f,_,r]),!r)return null;let b=y.title||e.displayUrl,x=y.description&&y.description!==b?y.description:y.siteName||X(y.expandedUrl,e.displayUrl),S=y.siteName||X(y.expandedUrl,e.displayUrl),C=at(y.imageUrl),w=!!(C&&!c);return(0,W.jsxs)(`a`,{className:D,"data-perf":`link-preview-card`,href:I(y.expandedUrl)??r,ref:g,rel:`noreferrer`,target:`_blank`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col justify-center gap-1 px-3.5 py-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:E,children:S}),(0,W.jsx)(B,{"aria-hidden":`true`,className:`size-3.5 shrink-0 text-[var(--ink-soft)] opacity-0 transition-opacity group-hover/link-preview:opacity-100`,strokeWidth:1.8})]}),(0,W.jsx)(`span`,{className:d,children:b}),(0,W.jsx)(`span`,{className:n,children:x}),(0,W.jsx)(`span`,{className:u(E,`text-[12px]`),children:e.displayUrl})]}),(0,W.jsx)(`div`,{className:`flex aspect-[1.45] w-40 shrink-0 items-center justify-center overflow-hidden border-l border-[var(--line)] bg-[var(--bg-soft)] max-[720px]:w-28`,children:w?(0,W.jsx)(`img`,{alt:b,className:`size-full object-cover transition-transform duration-200 group-hover/link-preview:scale-[1.03]`,loading:`lazy`,onError:()=>l(!0),src:C??``}):(0,W.jsx)(Be,{"aria-hidden":`true`,className:`size-8 text-[var(--ink-soft)]`,strokeWidth:1.7})})]},`${e.expandedUrl}-${String(t)}`)}function st(e){if(!e)return null;try{let t=new URL(e);return`${t.protocol}//${t.hostname}${t.pathname}`}catch{return e.split(`?`)[0]??e}}function ct(e){let t=new Set;for(let n of e)for(let e of[n.url,n.thumbnailUrl]){let n=st(e);n&&t.add(n)}return t}function lt(e,t,n){if(t.size>0&&ft(e.expandedUrl,n))return!0;for(let n of[e.url,e.expandedUrl,e.displayUrl]){let e=st(n);if(e&&t.has(e))return!0}return!1}function Z(e){if(!e)return!1;try{let t=e.includes(`://`)?e:`https://${e}`;return new URL(t).hostname.replace(/^www\./,``)===`t.co`}catch{return!1}}function Q(e){return Z(e.expandedUrl)?!0:e.expandedUrl?!1:Z(e.displayUrl)?!0:!e.displayUrl&&Z(e.url)}function ut(e,t){return(t.urls??[]).filter(Q).map(t=>Se(e,t))}function dt(e,t){let n=0,r=``;for(let i of[...t].sort((e,t)=>e.start-t.start))i.start<n||i.end<=i.start||i.end>e.length||(r+=e.slice(n,i.start),n=i.end);return r+=e.slice(n),r}function $(e,t,n){if(n.size===0)return!1;let r=ut(e,t);return r.length===0?!1:dt(e,r).trim().length===0}function ft(e,t){if(!e)return!1;try{let n=new URL(e),r=n.hostname.replace(/^www\./,``);if(r!==`x.com`&&r!==`twitter.com`)return!1;let i=n.pathname.split(`/`).filter(Boolean),a=i.indexOf(`status`);if(a<0||i[a+1]!==t)return!1;let o=i[a+2];return o===`photo`||o===`video`}catch{return!1}}function pt(e,t,n,r){let i=ct(t);if(i.size===0)return e;let a=$(r,e,i);return{...e,urls:(e.urls??[]).filter(e=>!lt(e,i,n)&&!(a&&Q(e)))}}function mt(e,t,n,r){let i=ct(t);if(i.size===0)return[];let a=$(r,e,i);return(e.urls??[]).filter(e=>lt(e,i,n)||a&&Q(e)).map(e=>Se(r,e))}function ht(e,t){return(e.urls??[]).filter(n=>Q(n)||e.article&&Ce(n,e.article)?!1:t?!n.expandedUrl.includes(t):!0)}function gt(e){return e instanceof Element&&!!e.closest(`a,button,input,textarea,select,[role='button']`)}function _t({tweet:e,hiddenUrlRanges:t,visibleUrlCards:n,replyToTweet:r,quotedTweet:i}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(H,{className:a,entities:e.entities,hiddenUrlRanges:t,text:e.text}),(0,W.jsx)(K,{items:e.media}),e.entities.article?(0,W.jsx)(G,{article:e.entities.article}):null,r?(0,W.jsx)(`div`,{className:T,children:(0,W.jsx)(q,{item:r,label:`In reply to`})}):null,i?(0,W.jsx)(`div`,{className:T,children:(0,W.jsx)(q,{item:i,label:`Quoted tweet`})}):null,n.map((e,t)=>(0,W.jsx)(ot,{entry:e,index:t},`${e.expandedUrl}-${String(t)}`))]})}function vt({item:e,onReply:t,showReplyControls:n=!0}){let a=n&&e.kind!==`like`&&e.kind!==`bookmark`,o=e.retweetedTweet??e,s=o.id,c=e.retweetedTweet&&s===`${e.id}:retweeted`?e.id:s,l=o.author,d=Je(e.id,c),f=pt(o.entities,o.media,o.id,o.text),h=mt(o.entities,o.media,o.id,o.text),g=ht(f,e.retweetedTweet?null:e.quotedTweet?.id??null),v=e.retweetedTweet?o.mediaCount??o.media.length:e.mediaCount,y=o.isReplied??e.isReplied,x=o.likeCount??e.likeCount,w=o.bookmarked??e.bookmarked,T=o.liked??e.liked,E=T||x>0,D=v>0,O=!!(e.retweetedTweet?o.replyToId:e.replyToTweet||e.replyToId);return(0,W.jsxs)(`article`,{className:u(ae,`cursor-pointer [content-visibility:auto] [contain-intrinsic-size:auto_280px]`),"data-perf":`timeline-card`,onFocus:d.prefetch,onMouseEnter:d.prefetch,onClick:e=>{gt(e.target)||d.toggle()},children:[(0,W.jsx)(xe,{avatarUrl:l.avatarUrl,hue:l.avatarHue,name:l.displayName,profileId:l.id}),(0,W.jsxs)(`div`,{className:_,children:[e.retweetedTweet?(0,W.jsxs)(`div`,{className:`inline-flex items-center gap-2 text-[13px] font-medium text-[var(--ink-soft)]`,children:[(0,W.jsx)(le,{className:`size-4`,strokeWidth:1.8}),(0,W.jsx)(L,{profile:e.author,children:(0,W.jsxs)(`span`,{children:[e.author.displayName,` reposted`]})})]}):null,(0,W.jsxs)(`header`,{className:oe,children:[(0,W.jsx)(L,{profile:l,children:(0,W.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:p,children:l.displayName}),(0,W.jsxs)(`span`,{className:b,children:[`@`,l.handle]})]})}),(0,W.jsx)(`span`,{className:se,children:`·`}),(0,W.jsx)(R,{className:i,value:o.createdAt}),a||O?(0,W.jsxs)(`span`,{className:`ml-auto inline-flex items-center gap-1`,children:[O?(0,W.jsxs)(`span`,{"aria-label":`Part of a conversation`,className:u(j,r),title:`Part of a conversation`,children:[(0,W.jsx)(V,{className:`size-3.5`,strokeWidth:2}),`thread`]}):null,a?(0,W.jsxs)(`span`,{"aria-label":y?`We replied`:`Reply open`,className:u(j,y?r:m),title:y?`We replied`:`Reply open`,children:[y?(0,W.jsx)(ce,{className:`size-3.5`,strokeWidth:2}):(0,W.jsx)(Le,{className:`size-3`,strokeWidth:2.2}),y?`replied`:`open`]}):null]}):null]}),(0,W.jsx)(_t,{hiddenUrlRanges:h,quotedTweet:e.retweetedTweet?null:e.quotedTweet,replyToTweet:e.retweetedTweet?null:e.replyToTweet,tweet:o,visibleUrlCards:g}),(0,W.jsx)(`footer`,{className:C,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-[13px] text-[var(--ink-soft)]`,children:[(0,W.jsxs)(`button`,{"aria-expanded":d.isOpen,"aria-label":d.isOpen?`Hide conversation`:`Show conversation`,className:S,onClick:e=>{e.stopPropagation(),d.toggle()},type:`button`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(V,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:d.isOpen?`Hide thread`:`Thread`})]}),a?(0,W.jsxs)(`button`,{className:S,onClick:e=>{e.stopPropagation(),t(c)},type:`button`,"aria-label":`Reply`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(V,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:`Reply`})]}):null,(0,W.jsxs)(`a`,{"aria-label":`Analyse @${l.handle}`,className:S,href:`/profiles/${encodeURIComponent(l.handle)}`,onClick:e=>{e.stopPropagation()},title:`Analyse @${l.handle}`,children:[(0,W.jsx)(`span`,{className:k,children:(0,W.jsx)(ke,{className:A,strokeWidth:1.7})}),(0,W.jsx)(`span`,{className:`text-[13px]`,children:`Analyse`})]}),E?(0,W.jsxs)(`span`,{"aria-label":`${F(x)} likes`,className:u(`inline-flex items-center gap-1 px-2 py-1 text-[13px]`,T&&`text-[var(--like)]`),title:`${F(x)} likes`,children:[(0,W.jsx)(Ne,{className:A,strokeWidth:1.7,fill:T?`currentColor`:`none`}),(0,W.jsx)(`span`,{children:F(x)})]}):null,w?(0,W.jsx)(`span`,{"aria-label":`Bookmarked`,className:`inline-flex items-center px-2 py-1`,title:`Bookmarked`,children:(0,W.jsx)(ze,{className:A,strokeWidth:1.7})}):null,D?(0,W.jsxs)(`span`,{"aria-label":`${String(v)} media attachments`,className:`inline-flex items-center gap-1 px-2 py-1 text-[13px]`,title:`${String(v)} media attachments`,children:[(0,W.jsx)(Be,{className:A,strokeWidth:1.7}),(0,W.jsx)(`span`,{children:v})]}):null]})}),d.isOpen?(0,W.jsx)(Qe,{anchorId:c,error:d.error,items:d.items,loading:d.loading}):null]})]})}function yt({title:e,subtitles:t,action:n,controls:r}){return(0,W.jsxs)(`header`,{className:h,children:[(0,W.jsxs)(`div`,{className:`${g} flex-wrap`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,W.jsx)(`h1`,{className:l,children:e}),t]}),n]}),r]})}function bt({children:e}){return(0,W.jsx)(`p`,{className:s,children:e})}function xt({value:e,onChange:t,placeholder:n}){return(0,W.jsx)(`div`,{className:`px-4 pb-3`,children:(0,W.jsxs)(`label`,{className:re,children:[(0,W.jsx)(ue,{className:v,strokeWidth:2}),(0,W.jsx)(`input`,{className:ee,onChange:e=>t(e.target.value),placeholder:n,value:e})]})})}function St({header:e,notice:t,loading:n,loadingLabel:r,loadingDetail:i,error:a,errorTitle:o,onRetry:s,empty:c,emptyLabel:l,emptyDetail:u,children:d,hasMore:f,loadingMore:p,onLoadMore:m}){return(0,W.jsxs)(W.Fragment,{children:[e,t,(0,W.jsx)(qe,{children:(0,W.jsxs)(`section`,{className:w,children:[n?(0,W.jsx)(we,{detail:i,label:r,children:(0,W.jsx)(Te,{})}):a?(0,W.jsx)(je,{action:(0,W.jsx)(`button`,{className:`rounded-full bg-[var(--accent)] px-4 py-1.5 text-[14px] font-bold text-white`,onClick:s,type:`button`,children:`Retry`}),message:a,title:o}):c?(0,W.jsx)(Ee,{detail:u,label:l}):null,d,!n&&!a&&f?(0,W.jsx)(`div`,{className:`flex justify-center py-4`,children:(0,W.jsx)(`button`,{className:`rounded-full bg-[var(--accent)] px-5 py-1.5 text-[14px] font-bold text-white disabled:opacity-60`,disabled:p,onClick:m,type:`button`,children:p?`Loading…`:`Load more`})}):null]})})]})}var Ct=50,wt=5*6e4;function Tt({resource:e,search:t,replyFilter:n,likedOnly:r,bookmarkedOnly:i,selectedAccountId:a,pageParam:o}){let s=new URLSearchParams({resource:e,limit:String(Ct)});a&&s.set(`account`,a),n&&s.set(`replyFilter`,n),r&&s.set(`liked`,`true`),i&&s.set(`bookmarked`,`true`),t.trim()&&s.set(`search`,t.trim()),o&&(s.set(`until`,o.until),s.set(`untilId`,o.untilId)),s.sort();let c=typeof window>`u`?`http://birdclaw.local`:window.location.origin;return new URL(`/api/query?${s.toString()}`,c).toString()}function Et({resource:e,search:t,errorFallback:n,replyFilter:r,likedOnly:i=!1,bookmarkedOnly:a=!1}){let o=N(),s=z({queryKey:P.status,queryFn:({signal:e})=>fe({signal:e})}).data??null,c=Pe(s?.accounts),l=Oe(t,180),u=[...P.timelines,{resource:e,search:l,replyFilter:r??`all`,likedOnly:i,bookmarkedOnly:a,selectedAccountId:c??null}],d=We({queryKey:u,initialPageParam:void 0,queryFn:({pageParam:t,signal:n})=>ge(Tt({resource:e,search:l,replyFilter:r,likedOnly:i,bookmarkedOnly:a,selectedAccountId:c,pageParam:t}),{signal:n}),getNextPageParam:e=>{if(e.resource===`dms`)return;let t=e.items,n=t.at(-1);return t.length>=Ct&&n?{until:n.createdAt,untilId:n.id}:void 0},staleTime:wt}),f=(0,U.useMemo)(()=>{let e=new Set,t=[];for(let n of d.data?.pages??[])if(n.resource!==`dms`)for(let r of n.items)e.has(r.id)||(e.add(r.id),t.push(r));return t},[d.data]),p=Fe({mutationFn:({tweetId:e,text:t})=>ve({kind:`replyTweet`,accountId:c??`acct_primary`,tweetId:e,text:t}),onSuccess:()=>o.invalidateQueries({queryKey:u})});function m(){d.refetch()}function h(){Promise.all([o.invalidateQueries({queryKey:P.timelines}),o.invalidateQueries({queryKey:P.status})])}async function g(e){let t=window.prompt(`Reply text`);t?.trim()&&await p.mutateAsync({tweetId:e,text:t.trim()}).catch(()=>{})}let _=d.error;return{meta:s,items:f,loading:d.isPending,error:_?_ instanceof Error?_.message:n:null,replyError:p.error?p.error instanceof Error?p.error.message:`Reply failed`:null,retry:m,refreshLocalView:h,replyToTweet:g,selectedAccountId:c,hasMore:d.hasNextPage,loadingMore:d.isFetchingNextPage,loadMore:()=>d.fetchNextPage().then(()=>void 0)}}export{xt as a,bt as i,yt as n,vt as o,St as r,Et as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { K as emptyStateClass, m as cx } from "./ui-
|
|
1
|
+
import { K as emptyStateClass, m as cx } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
//#region src/components/BrandMark.tsx
|
|
4
4
|
function BirdclawMark({ animated = false, className }) {
|
package/dist/server/assets/{ProfileAnalysisStream-CLjrYzEx.js → ProfileAnalysisStream-1CHrSLNN.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { q as errorCopyClass } from "./ui-
|
|
2
|
-
import { a as useNdjsonRun, o as MarkdownViewer, r as profileAnalysisStreamEventSchema, t as isTerminalStreamEvent } from "./client-stream-contracts-
|
|
1
|
+
import { q as errorCopyClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { a as useNdjsonRun, o as MarkdownViewer, r as profileAnalysisStreamEventSchema, t as isTerminalStreamEvent } from "./client-stream-contracts-DVzk8DzM.js";
|
|
3
3
|
import { n as normalizeProfileHydrationHandle, t as hydrateProfileHandles } from "./profile-hydration-client-GJ4kwJS8.js";
|
|
4
4
|
import { useCallback, useState } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Bt as profilePreviewTriggerClass, Ft as profilePreviewClass, It as profilePreviewHandleClass, Lt as profilePreviewHeaderClass, Nt as profilePreviewBioClass, Pt as profilePreviewCardClass, Rt as profilePreviewMetaClass, gn as tweetLinkClass, m as cx, zt as profilePreviewNameClass } from "./ui-
|
|
2
|
-
import { n as avatarPath, r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
1
|
+
import { Bt as profilePreviewTriggerClass, Ft as profilePreviewClass, It as profilePreviewHandleClass, Lt as profilePreviewHeaderClass, Nt as profilePreviewBioClass, Pt as profilePreviewCardClass, Rt as profilePreviewMetaClass, gn as tweetLinkClass, m as cx, zt as profilePreviewNameClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { n as avatarPath, r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
3
3
|
import { Fragment, useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region src/lib/tweet-render.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as SyncNowButton } from "./SyncNowButton-
|
|
2
|
-
import { a as TimelineSearchField, i as TimelineHeaderSubtitle, n as TimelineFeedHeader, o as TimelineCard, r as TimelineFeedShell, t as useTimelineRouteData } from "./useTimelineRouteData-
|
|
1
|
+
import { t as SyncNowButton } from "./SyncNowButton-CsgOFaO_.js";
|
|
2
|
+
import { a as TimelineSearchField, i as TimelineHeaderSubtitle, n as TimelineFeedHeader, o as TimelineCard, r as TimelineFeedShell, t as useTimelineRouteData } from "./useTimelineRouteData-BWxx9yQl.js";
|
|
3
3
|
import { useMemo, useState } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/SavedTimelineView.tsx
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as formatShortTimestamp, i as formatExactTimestamp, o as formatSmartTimestamp } from "./AvatarChip-
|
|
1
|
+
import { a as formatShortTimestamp, i as formatExactTimestamp, o as formatSmartTimestamp } from "./AvatarChip-B5ASnpQ4.js";
|
|
2
2
|
import { useSyncExternalStore } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
//#region src/components/SmartTimestamp.tsx
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Yt as selectFieldClass, m as cx } from "./ui-
|
|
1
|
+
import { Yt as selectFieldClass, m as cx } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { c as postSync } from "./query-client-BdauHBgd.js";
|
|
3
3
|
import { n as setStoredAccountId, r as useSelectedAccountId, t as defaultAccountId } from "./account-selection-CTdFGWRk.js";
|
|
4
4
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
package/dist/server/assets/{TimelineRouteFrame-Bg3e7X_N.js → TimelineRouteFrame-BWWFisJF.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { dn as tabStripClass, ln as tabButtonClass, m as cx, mn as timestampClass, un as tabButtonIndicatorClass } from "./ui-
|
|
2
|
-
import { t as SyncNowButton } from "./SyncNowButton-
|
|
3
|
-
import { a as TimelineSearchField, i as TimelineHeaderSubtitle, n as TimelineFeedHeader, o as TimelineCard, r as TimelineFeedShell, t as useTimelineRouteData } from "./useTimelineRouteData-
|
|
1
|
+
import { dn as tabStripClass, ln as tabButtonClass, m as cx, mn as timestampClass, un as tabButtonIndicatorClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { t as SyncNowButton } from "./SyncNowButton-CsgOFaO_.js";
|
|
3
|
+
import { a as TimelineSearchField, i as TimelineHeaderSubtitle, n as TimelineFeedHeader, o as TimelineCard, r as TimelineFeedShell, t as useTimelineRouteData } from "./useTimelineRouteData-BWxx9yQl.js";
|
|
4
4
|
import { useMemo, useState } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/TimelineRouteFrame.tsx
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { gn as tweetLinkClass, hn as tweetHashtagClass, s as bodyCopyClass, yn as tweetMentionClass } from "./ui-
|
|
2
|
-
import { c as collectTweetSegmentsForText, d as isTweetArticleUrlEntity, f as normalizeTweetUrlEntityRangeForText, s as safeHttpUrl, t as ProfilePreview, u as enrichFallbackUrlEntities } from "./ProfilePreview-
|
|
1
|
+
import { gn as tweetLinkClass, hn as tweetHashtagClass, s as bodyCopyClass, yn as tweetMentionClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { c as collectTweetSegmentsForText, d as isTweetArticleUrlEntity, f as normalizeTweetUrlEntityRangeForText, s as safeHttpUrl, t as ProfilePreview, u as enrichFallbackUrlEntities } from "./ProfilePreview-Dk2CdOOS.js";
|
|
3
3
|
import { Fragment } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/TweetRichText.tsx
|
|
@@ -38,72 +38,72 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
38
38
|
],
|
|
39
39
|
css: ["/assets/index-bpFrQ5yG.css"],
|
|
40
40
|
preloads: [
|
|
41
|
-
"/assets/index-
|
|
41
|
+
"/assets/index-gdLl886E.js",
|
|
42
42
|
"/assets/rolldown-runtime-B-9mzPXz.js",
|
|
43
43
|
"/assets/react-BwGzW7mM.js",
|
|
44
44
|
"/assets/react-dom-DEMAB80t.js",
|
|
45
|
-
"/assets/schemas-
|
|
45
|
+
"/assets/schemas-CMQMhQXI.js",
|
|
46
46
|
"/assets/createLucideIcon-CMLcIxOz.js",
|
|
47
47
|
"/assets/circle-check-BCK_qvXt.js",
|
|
48
|
-
"/assets/client-stream-contracts-
|
|
48
|
+
"/assets/client-stream-contracts-CNz2FSrQ.js",
|
|
49
49
|
"/assets/sparkles-Gx_BHkDX.js",
|
|
50
|
-
"/assets/query-client-
|
|
51
|
-
"/assets/AvatarChip-
|
|
52
|
-
"/assets/ProfilePreview-
|
|
53
|
-
"/assets/SmartTimestamp-
|
|
54
|
-
"/assets/profile-hydration-client-
|
|
50
|
+
"/assets/query-client-CD880OPj.js",
|
|
51
|
+
"/assets/AvatarChip-DsHj3LT7.js",
|
|
52
|
+
"/assets/ProfilePreview-CaaMHV2N.js",
|
|
53
|
+
"/assets/SmartTimestamp-CXaNLqN7.js",
|
|
54
|
+
"/assets/profile-hydration-client-kffyMcqf.js"
|
|
55
55
|
],
|
|
56
56
|
scripts: [{ attrs: {
|
|
57
57
|
type: "module",
|
|
58
58
|
async: !0,
|
|
59
|
-
src: "/assets/index-
|
|
59
|
+
src: "/assets/index-gdLl886E.js"
|
|
60
60
|
} }]
|
|
61
61
|
},
|
|
62
62
|
"/": {
|
|
63
63
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/index.tsx",
|
|
64
64
|
children: void 0,
|
|
65
|
-
preloads: ["/assets/routes-
|
|
65
|
+
preloads: ["/assets/routes-DYUCTi0s.js", "/assets/TimelineRouteFrame-DUF8ETx2.js"]
|
|
66
66
|
},
|
|
67
67
|
"/blocks": {
|
|
68
68
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/blocks.tsx",
|
|
69
69
|
children: void 0,
|
|
70
|
-
preloads: ["/assets/blocks-
|
|
70
|
+
preloads: ["/assets/blocks-CLV8UyL1.js"]
|
|
71
71
|
},
|
|
72
72
|
"/bookmarks": {
|
|
73
73
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/bookmarks.tsx",
|
|
74
74
|
children: void 0,
|
|
75
|
-
preloads: ["/assets/bookmarks-
|
|
75
|
+
preloads: ["/assets/bookmarks-f8mrhE5v.js", "/assets/SavedTimelineView-HNbc1InN.js"]
|
|
76
76
|
},
|
|
77
77
|
"/data-sources": {
|
|
78
78
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/data-sources.tsx",
|
|
79
79
|
children: void 0,
|
|
80
|
-
preloads: ["/assets/data-sources-
|
|
80
|
+
preloads: ["/assets/data-sources-obqEq3vx.js", "/assets/triangle-alert-DJPCW6jQ.js"]
|
|
81
81
|
},
|
|
82
82
|
"/discuss": {
|
|
83
83
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/discuss.tsx",
|
|
84
84
|
children: void 0,
|
|
85
|
-
preloads: ["/assets/discuss-
|
|
85
|
+
preloads: ["/assets/discuss-IVQmzPlf.js", "/assets/search-C_LqodNa.js"]
|
|
86
86
|
},
|
|
87
87
|
"/dms": {
|
|
88
88
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/dms.tsx",
|
|
89
89
|
children: void 0,
|
|
90
|
-
preloads: ["/assets/dms-
|
|
90
|
+
preloads: ["/assets/dms-Dz53c2A8.js", "/assets/search-C_LqodNa.js"]
|
|
91
91
|
},
|
|
92
92
|
"/inbox": {
|
|
93
93
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/inbox.tsx",
|
|
94
94
|
children: void 0,
|
|
95
|
-
preloads: ["/assets/inbox-
|
|
95
|
+
preloads: ["/assets/inbox-OtMwyDqg.js"]
|
|
96
96
|
},
|
|
97
97
|
"/likes": {
|
|
98
98
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/likes.tsx",
|
|
99
99
|
children: void 0,
|
|
100
|
-
preloads: ["/assets/likes-
|
|
100
|
+
preloads: ["/assets/likes-bYLP-Iur.js", "/assets/SavedTimelineView-HNbc1InN.js"]
|
|
101
101
|
},
|
|
102
102
|
"/links": {
|
|
103
103
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/links.tsx",
|
|
104
104
|
children: void 0,
|
|
105
105
|
preloads: [
|
|
106
|
-
"/assets/links-
|
|
106
|
+
"/assets/links-Calv868h.js",
|
|
107
107
|
"/assets/repeat-2-CQ0lek01.js",
|
|
108
108
|
"/assets/search-C_LqodNa.js",
|
|
109
109
|
"/assets/users-DI3w8Mol.js"
|
|
@@ -112,13 +112,13 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
112
112
|
"/mentions": {
|
|
113
113
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/mentions.tsx",
|
|
114
114
|
children: void 0,
|
|
115
|
-
preloads: ["/assets/mentions-
|
|
115
|
+
preloads: ["/assets/mentions-CceV_r9w.js", "/assets/TimelineRouteFrame-DUF8ETx2.js"]
|
|
116
116
|
},
|
|
117
117
|
"/network-map": {
|
|
118
118
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/network-map.tsx",
|
|
119
119
|
children: void 0,
|
|
120
120
|
preloads: [
|
|
121
|
-
"/assets/network-map-
|
|
121
|
+
"/assets/network-map-7r9If3kD.js",
|
|
122
122
|
"/assets/search-C_LqodNa.js",
|
|
123
123
|
"/assets/users-DI3w8Mol.js"
|
|
124
124
|
]
|
|
@@ -126,22 +126,22 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
126
126
|
"/profile-analyze": {
|
|
127
127
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/profile-analyze.tsx",
|
|
128
128
|
children: void 0,
|
|
129
|
-
preloads: ["/assets/profile-analyze-
|
|
129
|
+
preloads: ["/assets/profile-analyze-BeyDxO7C.js", "/assets/search-C_LqodNa.js"]
|
|
130
130
|
},
|
|
131
131
|
"/rate-limits": {
|
|
132
132
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/rate-limits.tsx",
|
|
133
133
|
children: void 0,
|
|
134
|
-
preloads: ["/assets/rate-limits-
|
|
134
|
+
preloads: ["/assets/rate-limits-pf5ibAYx.js", "/assets/triangle-alert-DJPCW6jQ.js"]
|
|
135
135
|
},
|
|
136
136
|
"/today": {
|
|
137
137
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/today.tsx",
|
|
138
138
|
children: void 0,
|
|
139
|
-
preloads: ["/assets/today-
|
|
139
|
+
preloads: ["/assets/today-CwzttriK.js"]
|
|
140
140
|
},
|
|
141
141
|
"/profiles/$handle": {
|
|
142
142
|
filePath: "/Users/steipete/Projects/birdclaw/src/routes/profiles.$handle.tsx",
|
|
143
143
|
children: void 0,
|
|
144
|
-
preloads: ["/assets/profiles._handle-
|
|
144
|
+
preloads: ["/assets/profiles._handle-BH11vR7-.js"]
|
|
145
145
|
}
|
|
146
146
|
} });
|
|
147
147
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./ui-
|
|
1
|
+
import "./ui-CL21-Ku0.js";
|
|
2
2
|
import "./query-client-BdauHBgd.js";
|
|
3
|
-
import "./AvatarChip-
|
|
3
|
+
import "./AvatarChip-B5ASnpQ4.js";
|
|
4
4
|
import { t as validateBlocksSearch } from "./route-search-BUlQ5lGM.js";
|
|
5
5
|
import "./useDebouncedValue-DOnA6Xcy.js";
|
|
6
6
|
import "react";
|
|
@@ -8,7 +8,7 @@ import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
|
8
8
|
import "react/jsx-runtime";
|
|
9
9
|
import "@tanstack/react-query";
|
|
10
10
|
//#region src/routes/blocks.tsx
|
|
11
|
-
var $$splitComponentImporter = () => import("./blocks-
|
|
11
|
+
var $$splitComponentImporter = () => import("./blocks-VXmcBqKD.js");
|
|
12
12
|
var Route = createFileRoute("/blocks")({
|
|
13
13
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
14
14
|
validateSearch: validateBlocksSearch
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, K as emptyStateClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, Yt as selectFieldClass, _t as mutedDotClass, a as blockRowClass, fn as textFieldClass, h as dangerButtonClass, i as blockRowBodyClass, m as cx, mn as timestampClass, pn as textFieldShortClass, q as errorCopyClass, sn as statusCopyClass } from "./ui-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, K as emptyStateClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, Yt as selectFieldClass, _t as mutedDotClass, a as blockRowClass, fn as textFieldClass, h as dangerButtonClass, i as blockRowBodyClass, m as cx, mn as timestampClass, pn as textFieldShortClass, q as errorCopyClass, sn as statusCopyClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { _ as blockListResponseSchema, a as fetchQueryEnvelope, n as queryKeys, r as fetchJson, s as postAction } from "./query-client-BdauHBgd.js";
|
|
3
|
-
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
3
|
+
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
4
4
|
import { t as validateBlocksSearch } from "./route-search-BUlQ5lGM.js";
|
|
5
5
|
import { t as useDebouncedValue } from "./useDebouncedValue-DOnA6Xcy.js";
|
|
6
|
-
import { t as Route } from "./blocks-
|
|
6
|
+
import { t as Route } from "./blocks-DWZAKPAX.js";
|
|
7
7
|
import { useEffect, useMemo, useState } from "react";
|
|
8
8
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { keepPreviousData, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as SavedTimelineView } from "./SavedTimelineView-
|
|
1
|
+
import { t as SavedTimelineView } from "./SavedTimelineView-BGZvQIYS.js";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/routes/bookmarks.tsx?tsr-split=component
|
|
4
4
|
function BookmarksRoute() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { gn as tweetLinkClass, m as cx, yn as tweetMentionClass } from "./ui-
|
|
2
|
-
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
3
|
-
import { m as renderTweetPlainText, n as useFloatingPreview, r as useAvatarPreload, s as safeHttpUrl, t as ProfilePreview } from "./ProfilePreview-
|
|
4
|
-
import { t as SmartTimestamp } from "./SmartTimestamp-
|
|
1
|
+
import { gn as tweetLinkClass, m as cx, yn as tweetMentionClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
3
|
+
import { m as renderTweetPlainText, n as useFloatingPreview, r as useAvatarPreload, s as safeHttpUrl, t as ProfilePreview } from "./ProfilePreview-Dk2CdOOS.js";
|
|
4
|
+
import { t as SmartTimestamp } from "./SmartTimestamp-sxGoy8Uj.js";
|
|
5
5
|
import { Fragment, useCallback, useEffect, useRef, useState } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { z } from "zod";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, m as cx, q as errorCopyClass, sn as statusCopyClass, wt as pageHeaderActionsClass } from "./ui-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, m as cx, q as errorCopyClass, sn as statusCopyClass, wt as pageHeaderActionsClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { S as liveDataSourcesResponseSchema, n as queryKeys, r as fetchJson } from "./query-client-BdauHBgd.js";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, Yt as selectFieldClass, fn as textFieldClass, m as cx, q as errorCopyClass, wt as pageHeaderActionsClass } from "./ui-
|
|
2
|
-
import { a as useNdjsonRun, i as searchDiscussionStreamEventSchema, o as MarkdownViewer, t as isTerminalStreamEvent } from "./client-stream-contracts-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, Yt as selectFieldClass, fn as textFieldClass, m as cx, q as errorCopyClass, wt as pageHeaderActionsClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { a as useNdjsonRun, i as searchDiscussionStreamEventSchema, o as MarkdownViewer, t as isTerminalStreamEvent } from "./client-stream-contracts-DVzk8DzM.js";
|
|
3
3
|
import { n as validateDiscussSearch } from "./route-search-BUlQ5lGM.js";
|
|
4
|
-
import { t as Route$1 } from "./discuss-
|
|
4
|
+
import { t as Route$1 } from "./discuss-CJ_vThu8.js";
|
|
5
5
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { CheckCircle2, ChevronDown, Loader2, RefreshCw, Search, Sparkles } from "lucide-react";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./ui-
|
|
2
|
-
import "./client-stream-contracts-
|
|
1
|
+
import "./ui-CL21-Ku0.js";
|
|
2
|
+
import "./client-stream-contracts-DVzk8DzM.js";
|
|
3
3
|
import { n as validateDiscussSearch } from "./route-search-BUlQ5lGM.js";
|
|
4
4
|
import "react";
|
|
5
5
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
6
6
|
import "react/jsx-runtime";
|
|
7
7
|
import "lucide-react";
|
|
8
8
|
//#region src/routes/discuss.tsx
|
|
9
|
-
var $$splitComponentImporter = () => import("./discuss-
|
|
9
|
+
var $$splitComponentImporter = () => import("./discuss-4b2z14mT.js");
|
|
10
10
|
var Route$1 = createFileRoute("/discuss")({
|
|
11
11
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
12
12
|
validateSearch: validateDiscussSearch
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as dmMessageRowClass, At as pillClass, C as dmListNameClass, D as dmMessageBubbleInboundClass, E as dmMessageBubbleClass, F as dmThreadHeaderClass, I as dmThreadNameClass, L as dmThreadSubtitleClass, M as dmMessagesClass, Mt as primaryButtonClass, N as dmShellClass, O as dmMessageBubbleOutboundClass, P as dmThreadClass, R as dmThreadTitleClass, S as dmListItemClass, T as dmListTimestampClass, _ as dmListBodyClass, b as dmListHeaderClass, c as composerBarClass, d as contextStatRowClass, f as contextStatTermClass, g as dmComposerShellClass, jt as pillSoftClass, k as dmMessageMetaClass, kt as pillAlertClass, l as composerInputClass, m as cx, mn as timestampClass, p as contextStatValueClass, v as dmListClass, w as dmListPreviewClass, y as dmListHandleClass } from "./ui-
|
|
1
|
+
import { A as dmMessageRowClass, At as pillClass, C as dmListNameClass, D as dmMessageBubbleInboundClass, E as dmMessageBubbleClass, F as dmThreadHeaderClass, I as dmThreadNameClass, L as dmThreadSubtitleClass, M as dmMessagesClass, Mt as primaryButtonClass, N as dmShellClass, O as dmMessageBubbleOutboundClass, P as dmThreadClass, R as dmThreadTitleClass, S as dmListItemClass, T as dmListTimestampClass, _ as dmListBodyClass, b as dmListHeaderClass, c as composerBarClass, d as contextStatRowClass, f as contextStatTermClass, g as dmComposerShellClass, jt as pillSoftClass, k as dmMessageMetaClass, kt as pillAlertClass, l as composerInputClass, m as cx, mn as timestampClass, p as contextStatValueClass, v as dmListClass, w as dmListPreviewClass, y as dmListHandleClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import "./query-client-BdauHBgd.js";
|
|
3
|
-
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
3
|
+
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
4
4
|
import "./account-selection-CTdFGWRk.js";
|
|
5
|
-
import { o as BirdclawEmpty } from "./FeedState-
|
|
6
|
-
import { t as SmartTimestamp } from "./SmartTimestamp-
|
|
5
|
+
import { o as BirdclawEmpty } from "./FeedState-YrMZ10Gf.js";
|
|
6
|
+
import { t as SmartTimestamp } from "./SmartTimestamp-sxGoy8Uj.js";
|
|
7
7
|
import { r as validateDmsSearch } from "./route-search-BUlQ5lGM.js";
|
|
8
|
-
import "./SyncNowButton-
|
|
8
|
+
import "./SyncNowButton-CsgOFaO_.js";
|
|
9
9
|
import "./useDebouncedValue-DOnA6Xcy.js";
|
|
10
10
|
import "react";
|
|
11
11
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
@@ -231,7 +231,7 @@ function DmWorkspace({ conversations, selectedConversation, selectedMessages, on
|
|
|
231
231
|
}
|
|
232
232
|
//#endregion
|
|
233
233
|
//#region src/routes/dms.tsx
|
|
234
|
-
var $$splitComponentImporter = () => import("./dms-
|
|
234
|
+
var $$splitComponentImporter = () => import("./dms-BCI8W9u2.js");
|
|
235
235
|
var Route$1 = createFileRoute("/dms")({
|
|
236
236
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
237
237
|
validateSearch: validateDmsSearch
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, dn as tabStripClass, ln as tabButtonClass, m as cx, mn as timestampClass, qt as segmentClass, un as tabButtonIndicatorClass } from "./ui-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, dn as tabStripClass, ln as tabButtonClass, m as cx, mn as timestampClass, qt as segmentClass, un as tabButtonIndicatorClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { a as fetchQueryEnvelope, n as queryKeys, r as fetchJson, s as postAction, v as dmQueryResponseSchema } from "./query-client-BdauHBgd.js";
|
|
3
3
|
import { r as useSelectedAccountId } from "./account-selection-CTdFGWRk.js";
|
|
4
|
-
import { n as FeedError, r as FeedLoading, t as FeedEmpty } from "./FeedState-
|
|
4
|
+
import { n as FeedError, r as FeedLoading, t as FeedEmpty } from "./FeedState-YrMZ10Gf.js";
|
|
5
5
|
import { r as validateDmsSearch } from "./route-search-BUlQ5lGM.js";
|
|
6
|
-
import { n as DmWorkspace, t as Route$1 } from "./dms-
|
|
7
|
-
import { t as SyncNowButton } from "./SyncNowButton-
|
|
6
|
+
import { n as DmWorkspace, t as Route$1 } from "./dms-BAKB1Mia.js";
|
|
7
|
+
import { t as SyncNowButton } from "./SyncNowButton-CsgOFaO_.js";
|
|
8
8
|
import { t as useDebouncedValue } from "./useDebouncedValue-DOnA6Xcy.js";
|
|
9
9
|
import { useEffect, useMemo, useState } from "react";
|
|
10
10
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, K as emptyStateClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, Z as feedClass, dn as tabStripClass, fn as textFieldClass, ln as tabButtonClass, m as cx, mn as timestampClass, pn as textFieldShortClass, un as tabButtonIndicatorClass } from "./ui-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, K as emptyStateClass, Mt as primaryButtonClass, Ot as pageTitleClass, Tt as pageHeaderClass, Wt as secondaryButtonClass, Z as feedClass, dn as tabStripClass, fn as textFieldClass, ln as tabButtonClass, m as cx, mn as timestampClass, pn as textFieldShortClass, un as tabButtonIndicatorClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { a as fetchQueryEnvelope, n as queryKeys, r as fetchJson, s as postAction, y as inboxResponseSchema } from "./query-client-BdauHBgd.js";
|
|
3
3
|
import { r as useSelectedAccountId } from "./account-selection-CTdFGWRk.js";
|
|
4
4
|
import { i as validateInboxSearch } from "./route-search-BUlQ5lGM.js";
|
|
5
|
-
import { n as InboxCard, t as Route$1 } from "./inbox-
|
|
5
|
+
import { n as InboxCard, t as Route$1 } from "./inbox-D607zrwZ.js";
|
|
6
6
|
import { useMemo, useState } from "react";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { Sparkles } from "lucide-react";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { $ as feedRowBodyClass, At as pillClass, Mt as primaryButtonClass, Wt as secondaryButtonClass, _t as mutedDotClass, c as composerBarClass, ct as feedRowTextClass, et as feedRowClass, it as feedRowNameClass, jt as pillSoftClass, kt as pillAlertClass, l as composerInputClass, lt as feedRowTimestampClass, m as cx, mn as timestampClass, nt as feedRowHandleClass, rt as feedRowHeaderClass, tt as feedRowDotClass, u as composerShellClass, ut as inboxAnalysisClass } from "./ui-
|
|
1
|
+
import { $ as feedRowBodyClass, At as pillClass, Mt as primaryButtonClass, Wt as secondaryButtonClass, _t as mutedDotClass, c as composerBarClass, ct as feedRowTextClass, et as feedRowClass, it as feedRowNameClass, jt as pillSoftClass, kt as pillAlertClass, l as composerInputClass, lt as feedRowTimestampClass, m as cx, mn as timestampClass, nt as feedRowHandleClass, rt as feedRowHeaderClass, tt as feedRowDotClass, u as composerShellClass, ut as inboxAnalysisClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import "./query-client-BdauHBgd.js";
|
|
3
|
-
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
3
|
+
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
4
4
|
import "./account-selection-CTdFGWRk.js";
|
|
5
|
-
import { t as SmartTimestamp } from "./SmartTimestamp-
|
|
5
|
+
import { t as SmartTimestamp } from "./SmartTimestamp-sxGoy8Uj.js";
|
|
6
6
|
import { i as validateInboxSearch } from "./route-search-BUlQ5lGM.js";
|
|
7
7
|
import "react";
|
|
8
8
|
import { Link, createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
@@ -137,7 +137,7 @@ function InboxCard({ item, isReplying, replyDraft, onReplyChange, onReplyToggle,
|
|
|
137
137
|
}
|
|
138
138
|
//#endregion
|
|
139
139
|
//#region src/routes/inbox.tsx
|
|
140
|
-
var $$splitComponentImporter = () => import("./inbox-
|
|
140
|
+
var $$splitComponentImporter = () => import("./inbox-BJzEE8Aa.js");
|
|
141
141
|
var Route$1 = createFileRoute("/inbox")({
|
|
142
142
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
143
143
|
validateSearch: validateInboxSearch
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./ui-
|
|
1
|
+
import "./ui-CL21-Ku0.js";
|
|
2
2
|
import { b as linkInsightResponseSchema, n as queryKeys, r as fetchJson } from "./query-client-BdauHBgd.js";
|
|
3
|
-
import { r as formatCompactNumber } from "./AvatarChip-
|
|
4
|
-
import "./FeedState-
|
|
5
|
-
import "./ProfilePreview-
|
|
6
|
-
import "./SmartTimestamp-
|
|
3
|
+
import { r as formatCompactNumber } from "./AvatarChip-B5ASnpQ4.js";
|
|
4
|
+
import "./FeedState-YrMZ10Gf.js";
|
|
5
|
+
import "./ProfilePreview-Dk2CdOOS.js";
|
|
6
|
+
import "./SmartTimestamp-sxGoy8Uj.js";
|
|
7
7
|
import { t as hydrateProfileHandles } from "./profile-hydration-client-GJ4kwJS8.js";
|
|
8
8
|
import { a as validateLinksSearch } from "./route-search-BUlQ5lGM.js";
|
|
9
9
|
import { useEffect, useMemo } from "react";
|
|
@@ -231,7 +231,7 @@ function useLinksController(filters, onFiltersChange) {
|
|
|
231
231
|
}
|
|
232
232
|
//#endregion
|
|
233
233
|
//#region src/routes/links.tsx
|
|
234
|
-
var $$splitComponentImporter = () => import("./links-
|
|
234
|
+
var $$splitComponentImporter = () => import("./links-Dz-6bmkg.js");
|
|
235
235
|
var Route$1 = createFileRoute("/links")({
|
|
236
236
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
237
237
|
validateSearch: validateLinksSearch
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, m as cx, qt as segmentClass } from "./ui-
|
|
2
|
-
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-
|
|
3
|
-
import { i as LinkSkeletonRows, n as FeedError, r as FeedLoading, t as FeedEmpty } from "./FeedState-
|
|
4
|
-
import { t as ProfilePreview } from "./ProfilePreview-
|
|
5
|
-
import { t as SmartTimestamp } from "./SmartTimestamp-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, m as cx, qt as segmentClass } from "./ui-CL21-Ku0.js";
|
|
2
|
+
import { r as formatCompactNumber, t as AvatarChip } from "./AvatarChip-B5ASnpQ4.js";
|
|
3
|
+
import { i as LinkSkeletonRows, n as FeedError, r as FeedLoading, t as FeedEmpty } from "./FeedState-YrMZ10Gf.js";
|
|
4
|
+
import { t as ProfilePreview } from "./ProfilePreview-Dk2CdOOS.js";
|
|
5
|
+
import { t as SmartTimestamp } from "./SmartTimestamp-sxGoy8Uj.js";
|
|
6
6
|
import { a as validateLinksSearch } from "./route-search-BUlQ5lGM.js";
|
|
7
|
-
import { a as itemSubtitle, c as mentionCopy, d as ranges, f as youtubeThumbnailUrl, i as isSameProfile, l as mentionHref, n as useLinksController, o as itemTitle, r as commentCount, s as mediaImage, t as Route$1, u as pureShareCount } from "./links-
|
|
7
|
+
import { a as itemSubtitle, c as mentionCopy, d as ranges, f as youtubeThumbnailUrl, i as isSameProfile, l as mentionHref, n as useLinksController, o as itemTitle, r as commentCount, s as mediaImage, t as Route$1, u as pureShareCount } from "./links-BU_FRxcz.js";
|
|
8
8
|
import { useState } from "react";
|
|
9
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { ChevronDown, ChevronUp, ExternalLink, MessageCircle, Play, Repeat2, Search, Users } from "lucide-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as TimelineRouteFrame } from "./TimelineRouteFrame-
|
|
1
|
+
import { t as TimelineRouteFrame } from "./TimelineRouteFrame-BWWFisJF.js";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/routes/mentions.tsx?tsr-split=component
|
|
4
4
|
function mentionsSubtitle(meta) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, m as cx, q as errorCopyClass, qt as segmentClass, sn as statusCopyClass, wt as pageHeaderActionsClass } from "./ui-
|
|
1
|
+
import { Dt as pageSubtitleClass, Et as pageHeaderRowClass, Ht as searchFieldInputClass, Jt as segmentedClass, Ot as pageTitleClass, Tt as pageHeaderClass, Ut as searchFieldShellClass, Vt as searchFieldIconClass, Wt as secondaryButtonClass, m as cx, q as errorCopyClass, qt as segmentClass, sn as statusCopyClass, wt as pageHeaderActionsClass } from "./ui-CL21-Ku0.js";
|
|
2
2
|
import { o as validateNetworkMapSearch } from "./route-search-BUlQ5lGM.js";
|
|
3
|
-
import { a as avatarPath, c as compareClusterFeatures, d as getClusterDisplayAnchor, f as isCluster, i as avatarInitial, l as formatNumber, m as relationshipColor, n as useNetworkMapController, o as buildClusterIndex, p as readViewport, r as WORLD_VIEWPORT, s as clusterGradient, t as Route$1, u as formatRelationship } from "./network-map-
|
|
3
|
+
import { a as avatarPath, c as compareClusterFeatures, d as getClusterDisplayAnchor, f as isCluster, i as avatarInitial, l as formatNumber, m as relationshipColor, n as useNetworkMapController, o as buildClusterIndex, p as readViewport, r as WORLD_VIEWPORT, s as clusterGradient, t as Route$1, u as formatRelationship } from "./network-map-DvfpJQy1.js";
|
|
4
4
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { Globe2, MapPin, RefreshCw, Search, Users, WifiOff } from "lucide-react";
|