birdclaw 0.9.4 → 0.10.0
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 +31 -0
- package/README.md +22 -7
- package/dist/cli/birdclaw.js +6360 -4395
- package/dist/client/assets/{AvatarChip-C8zELEVt.js → AvatarChip-DsHj3LT7.js} +1 -1
- package/dist/client/assets/FeedState-DhMv4zXD.js +1 -0
- package/dist/client/assets/ProfileAnalysisStream-B8zyyye-.js +1 -0
- package/dist/client/assets/{ProfilePreview-CsiLpFrb.js → ProfilePreview-CaaMHV2N.js} +1 -1
- package/dist/client/assets/SavedTimelineView-4QYaZ4CU.js +1 -0
- package/dist/client/assets/{SmartTimestamp-BypN4KPq.js → SmartTimestamp-CXaNLqN7.js} +1 -1
- package/dist/client/assets/SyncNowButton-DDYT2jQT.js +1 -0
- package/dist/client/assets/TimelineRouteFrame-DJdUR7DX.js +1 -0
- package/dist/client/assets/TweetRichText-D-amgcEl.js +1 -0
- package/dist/client/assets/account-selection-h7m9xmzU.js +1 -0
- package/dist/client/assets/blocks-BpjvGwYq.js +2 -0
- package/dist/client/assets/blocks-C84MpzHq.js +1 -0
- package/dist/client/assets/{bookmarks-B2I0kAWY.js → bookmarks-Gy6MvAc9.js} +1 -1
- package/dist/client/assets/chevron-down-e-c5H12y.js +1 -0
- package/dist/client/assets/circle-DiJUdlek.js +1 -0
- package/dist/client/assets/{client-stream-contracts-D1QUdWfh.js → client-stream-contracts-CNz2FSrQ.js} +1 -1
- package/dist/client/assets/data-sources-CqxgDfE3.js +1 -0
- package/dist/client/assets/database-Dl3XWRaa.js +1 -0
- package/dist/client/assets/discuss-C0CUMn6v.js +1 -0
- package/dist/client/assets/discuss-DKC6H1fN.js +2 -0
- package/dist/client/assets/dms-DWA5tvJS.js +1 -0
- package/dist/client/assets/dms-Q1a1kZ_P.js +2 -0
- package/dist/client/assets/external-link-CfdTAkvn.js +1 -0
- package/dist/client/assets/gauge-DP2ku9zz.js +1 -0
- package/dist/client/assets/heart-D-ERjZPN.js +1 -0
- package/dist/client/assets/inbox-C9zFrQ76.js +1 -0
- package/dist/client/assets/inbox-DjlVjj3K.js +2 -0
- package/dist/client/assets/index-B8hO98gL.js +31 -0
- package/dist/client/assets/lazyRouteComponent-CLLbUvMd.js +1 -0
- package/dist/client/assets/likes-BXANVRCj.js +1 -0
- package/dist/client/assets/links-6tWeHun_.js +2 -0
- package/dist/client/assets/links-D3Ut-aUB.js +1 -0
- package/dist/client/assets/mapbox-DfIoNJn2.js +2 -0
- package/dist/client/assets/mapbox-gl-BdaHQI9U.js +3220 -0
- package/dist/client/assets/{mentions-B6BXntri.js → mentions-BKO40XiK.js} +1 -1
- package/dist/client/assets/message-circle-79LZr2oN.js +1 -0
- package/dist/client/assets/network-map-2EPsbMIT.js +2 -0
- package/dist/client/assets/network-map-CrXvY--k.css +1 -0
- package/dist/client/assets/network-map-DUpppygD.js +2 -0
- package/dist/client/assets/preload-helper-MpqUbZCn.js +1 -0
- package/dist/client/assets/profile-analyze-B5Rr41WP.js +2 -0
- package/dist/client/assets/profile-analyze-BqvM9hSa.js +1 -0
- package/dist/client/assets/{profile-hydration-client-BQyC5--e.js → profile-hydration-client-DoFW3yKH.js} +1 -1
- package/dist/client/assets/profiles._handle-DWyWAGG8.js +1 -0
- package/dist/client/assets/profiles._handle-DdZ9wAT-.js +2 -0
- package/dist/client/assets/query-client-CA-do_IS.js +17 -0
- package/dist/client/assets/rate-limits-DyRTb_U4.js +1 -0
- package/dist/client/assets/refresh-cw-IUfM9D_1.js +1 -0
- package/dist/client/assets/route-search-CmZT7pGD.js +1 -0
- package/dist/client/assets/{routes-6U4Cc79j.js → routes-ARIEjgq-.js} +1 -1
- package/dist/client/assets/{schemas-CntsNLmN.js → schemas-CMQMhQXI.js} +1 -1
- package/dist/client/assets/styles-CjeA43Ci.css +2 -0
- package/dist/client/assets/today-DNAg-wnA.js +2 -0
- package/dist/client/assets/today-Q3xFx4cl.js +1 -0
- package/dist/client/assets/useDebouncedValue-BJLRInUq.js +1 -0
- package/dist/client/assets/useQuery-CL_NXLnc.js +1 -0
- package/dist/client/assets/useTimelineRouteData-DYhYLZY4.js +1 -0
- package/dist/client/assets/user-search-DL5_6EZd.js +1 -0
- 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-Ern3q7LW.js} +2 -2
- package/dist/server/assets/{SmartTimestamp-C06w_f9J.js → SmartTimestamp-sxGoy8Uj.js} +1 -1
- package/dist/server/assets/{SyncNowButton-CKuXKYcd.js → SyncNowButton-C3OQghU4.js} +6 -4
- package/dist/server/assets/{TimelineRouteFrame-Bg3e7X_N.js → TimelineRouteFrame-CYD-qMuy.js} +3 -3
- package/dist/server/assets/{TweetRichText-wzUAtbPS.js → TweetRichText-BEo_OCEM.js} +2 -2
- package/dist/server/assets/_tanstack-start-manifest_v-CHtuH75x.js +221 -0
- 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-DVCjWQPu.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-vbEumuuO.js → dms-Cr5heLhm.js} +4 -4
- package/dist/server/assets/{dms-7NzdyQZQ.js → dms-DbJk33XB.js} +6 -6
- package/dist/server/assets/{empty-plugin-adapters-D9UWiqvJ.js → empty-plugin-adapters-YdH6Vqte.js} +1 -1
- 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-C3EpsPbF.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-BHd6N_OL.js} +1 -1
- package/dist/server/assets/{network-map-CcOz-T9O.js → network-map-S3bgKEDj.js} +2 -2
- package/dist/server/assets/{network-map-B9iOapuB.js → network-map-rmU1NSHD.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-BMfpBcBM.js} +2734 -2127
- package/dist/server/assets/{routes-D9226vKz.js → routes-Cyokiwx1.js} +1 -1
- package/dist/server/assets/start-P4i55asu.js +4 -0
- 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 +3515 -51
- package/package.json +19 -19
- package/dist/client/assets/SavedTimelineView-BSnwnujP.js +0 -1
- package/dist/client/assets/TimelineRouteFrame-H3D4R0Xu.js +0 -1
- package/dist/client/assets/blocks-WsAOmHsv.js +0 -1
- package/dist/client/assets/data-sources-DI5W9oVq.js +0 -1
- package/dist/client/assets/discuss-t2QxXK0h.js +0 -1
- package/dist/client/assets/dms-DjyXURaJ.js +0 -1
- package/dist/client/assets/inbox-CkHVoykL.js +0 -1
- package/dist/client/assets/index-BR860w88.js +0 -31
- package/dist/client/assets/index-bpFrQ5yG.css +0 -1
- package/dist/client/assets/likes-CenHqxQG.js +0 -1
- package/dist/client/assets/links-lDqy93u8.js +0 -1
- package/dist/client/assets/mapbox-CVPXIYUZ.js +0 -2
- package/dist/client/assets/mapbox-gl-DRRiLKWb.js +0 -3215
- package/dist/client/assets/network-map-BCUtBk8G.js +0 -2
- package/dist/client/assets/profile-analyze-YExKd6Lx.js +0 -1
- package/dist/client/assets/profiles._handle-idhd3kYo.js +0 -1
- package/dist/client/assets/query-client-DZ5C7UNo.js +0 -17
- package/dist/client/assets/rate-limits-jGxIfvUD.js +0 -1
- package/dist/client/assets/styles-DT4Pxoi-.css +0 -2
- package/dist/client/assets/today-COmNSYaE.js +0 -1
- package/dist/client/assets/useTimelineRouteData-BpQzU16P.js +0 -1
- package/dist/server/assets/_tanstack-start-manifest_v-mm-2VYBo.js +0 -148
- package/dist/server/assets/start-5Z2QO8AU.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{M as n,Rn as r,y as i}from"./schemas-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{M as n,Rn as r,y as i}from"./schemas-CMQMhQXI.js";var a=e(t(),1);function o(e){return new Intl.NumberFormat(`en`,{notation:`compact`}).format(e)}var s=1e3,c=60*s,l=60*c,u=24*l,d=new Intl.DateTimeFormat(`en`,{hour:`numeric`,minute:`2-digit`}),f=new Intl.DateTimeFormat(`en`,{weekday:`long`}),p=new Intl.DateTimeFormat(`en`,{month:`short`,day:`numeric`}),m=new Intl.DateTimeFormat(`en`,{year:`numeric`,month:`short`,day:`numeric`}),h=new Intl.DateTimeFormat(`en`,{year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`2-digit`,second:`2-digit`,timeZoneName:`short`});function g(e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function _(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/u}function v(e,t){let n=d.format(e),r=_(t)-_(e);return r===1?`Yesterday at ${n}`:r>=2&&r<=6?`${f.format(e)} at ${n}`:`${(e.getFullYear()===t.getFullYear()?p:m).format(e)} at ${n}`}function y(e){let t=g(e);return t?new Intl.DateTimeFormat(`en`,{hour:`numeric`,minute:`2-digit`,month:`short`,day:`numeric`}).format(t):e}function b(e){let t=g(e);return t?h.format(t):e}function x(e,t=Date.now()){let n=g(e),r=new Date(t);if(!n||Number.isNaN(r.getTime()))return e;let i=r.getTime()-n.getTime();if(i>=-45*s&&i<45*s)return`just now`;if(i<0)return v(n,r);if(i<l)return`${Math.max(1,Math.floor(i/c))} min ago`;if(i<u){let e=Math.max(1,Math.floor(i/l));return`${e} ${e===1?`hour`:`hours`} ago`}return v(n,r)}function S(e){return e.split(` `).map(e=>e[0]??``).join(``).slice(0,2)}var C=r();function w({profileId:e,avatarUrl:t,name:r,hue:o,size:s=`default`}){let c=e&&t?T(e,t):null,[l,u]=(0,a.useState)(null),d=c&&l!==c;return(0,C.jsx)(`span`,{className:n(i,s===`large`&&`avatar-chip-large size-16 text-[18px]`,s===`small`&&`avatar-chip-small size-8 text-[12px]`),style:{backgroundColor:`hsl(${String(o)} 72% 50%)`},children:d?(0,C.jsx)(`img`,{alt:r,className:`size-full rounded-[inherit] object-cover`,loading:`lazy`,onError:()=>u(c),src:c}):S(r)})}function T(e,t){return`/api/avatar?${new URLSearchParams({profileId:e,v:t}).toString()}`}export{y as a,b as i,T as n,x as o,o as r,w as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as e,Rn as t,ut as n}from"./schemas-CMQMhQXI.js";var r=t();function i({animated:t=!1,className:n}){return(0,r.jsx)(`span`,{"aria-hidden":`true`,className:e(`birdclaw-mark relative inline-grid shrink-0 place-items-center`,t&&`birdclaw-mark-animated`,n),children:(0,r.jsx)(`img`,{alt:``,className:`size-full object-contain drop-shadow-[0_10px_22px_var(--brand-shadow)]`,draggable:!1,src:`/birdclaw-mark.png`})})}function a({label:t,detail:a}){return(0,r.jsxs)(`div`,{className:e(n,`birdclaw-state`),children:[(0,r.jsx)(i,{animated:!0,className:`size-16`}),(0,r.jsx)(`div`,{className:`mt-3 text-[14px] font-semibold text-[var(--ink)]`,children:t}),a?(0,r.jsx)(`div`,{className:`mt-1 text-[13px] text-[var(--ink-soft)]`,children:a}):null]})}function o({label:t,detail:a}){return(0,r.jsxs)(`div`,{className:e(n,`birdclaw-state`),children:[(0,r.jsx)(i,{className:`size-12 opacity-75`}),(0,r.jsx)(`div`,{className:`mt-3 text-[14px] font-semibold text-[var(--ink)]`,children:t}),a?(0,r.jsx)(`div`,{className:`mt-1 text-[13px] text-[var(--ink-soft)]`,children:a}):null]})}function s({className:e,muted:t=!1}){return(0,r.jsx)(`span`,{"aria-hidden":`true`,className:`block animate-pulse rounded-full ${t?`bg-[color:color-mix(in_srgb,var(--ink-soft)_16%,transparent)]`:`bg-[color:color-mix(in_srgb,var(--ink-soft)_24%,transparent)]`} ${e}`})}function c({count:e=4}){return(0,r.jsx)(`div`,{"aria-hidden":`true`,className:`divide-y divide-[var(--line)]`,children:Array.from({length:e},(e,t)=>{let n=t%3==0,i=t%4==2;return(0,r.jsxs)(`article`,{className:`flex gap-3 px-4 py-3`,"data-perf":`tweet-skeleton-row`,children:[(0,r.jsx)(s,{className:`size-10 shrink-0 rounded-full`}),(0,r.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(s,{className:`h-3.5 w-32`}),(0,r.jsx)(s,{className:`h-3 w-20`,muted:!0}),(0,r.jsx)(s,{className:`ml-auto h-5 w-16`,muted:!0})]}),(0,r.jsxs)(`div`,{className:`space-y-2`,children:[(0,r.jsx)(s,{className:`h-3 w-full`}),(0,r.jsx)(s,{className:`h-3 w-11/12`,muted:!0}),t%2==0?(0,r.jsx)(s,{className:`h-3 w-7/12`,muted:!0}):null]}),n?(0,r.jsx)(s,{className:`h-32 w-full rounded-2xl`,muted:!0}):null,i?(0,r.jsxs)(`div`,{className:`space-y-2 rounded-2xl border border-[var(--line)] px-3 py-2`,children:[(0,r.jsx)(s,{className:`h-3 w-28`,muted:!0}),(0,r.jsx)(s,{className:`h-3 w-full`,muted:!0})]}):null,(0,r.jsx)(`div`,{className:`flex max-w-md items-center justify-between`,children:[`thread`,`reply`,`repost`,`like`].map(e=>(0,r.jsx)(s,{className:`h-3 w-11`,muted:!0},e))})]})]},`tweet-skeleton-${t}`)})})}function l({count:e=4}){return(0,r.jsx)(`div`,{"aria-hidden":`true`,className:`divide-y divide-[var(--line)]`,children:Array.from({length:e},(e,t)=>(0,r.jsxs)(`article`,{className:`flex gap-3 px-4 py-3`,"data-perf":`link-skeleton-row`,children:[(0,r.jsx)(s,{className:`size-9 shrink-0 rounded-full`,muted:!0}),(0,r.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[(0,r.jsx)(s,{className:`h-3.5 w-8/12`}),(0,r.jsx)(s,{className:`h-3 w-6/12`,muted:!0}),(0,r.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,r.jsx)(s,{className:`h-3 w-20`,muted:!0}),(0,r.jsx)(s,{className:`h-3 w-14`,muted:!0}),(0,r.jsx)(s,{className:`h-3 w-24`,muted:!0})]}),t%2==0?(0,r.jsx)(s,{className:`h-20 w-72 max-w-full rounded-2xl`,muted:!0}):null]})]},`link-skeleton-${t}`))})}function u({children:e,detail:t,label:n}){return(0,r.jsxs)(`div`,{className:`border-b border-[var(--line)]`,children:[(0,r.jsx)(a,{detail:t,label:n}),e]})}function d({action:e,message:t,title:n=`Could not load this view`}){return(0,r.jsx)(`div`,{className:`border-b border-[var(--line)] px-6 py-10 text-center`,children:(0,r.jsxs)(`div`,{className:`mx-auto max-w-sm`,children:[(0,r.jsx)(`div`,{className:`text-[14px] font-bold text-[var(--alert)]`,children:n}),(0,r.jsx)(`p`,{className:`mt-2 text-[13px] leading-[1.45] text-[var(--ink-soft)]`,children:t}),e?(0,r.jsx)(`div`,{className:`mt-4 flex justify-center`,children:e}):null]})})}function f({detail:e,label:t}){return(0,r.jsx)(o,{detail:e,label:t})}export{c as a,i as c,l as i,d as n,o,u as r,a as s,f as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Rn as n,dt as r}from"./schemas-CMQMhQXI.js";import{t as i}from"./circle-check-BCK_qvXt.js";import{a,o,r as s,s as c,t as l}from"./client-stream-contracts-CNz2FSrQ.js";import{t as u}from"./sparkles-Gx_BHkDX.js";import{b as d}from"./query-client-CA-do_IS.js";import{n as f,t as p}from"./profile-hydration-client-DoFW3yKH.js";var m=e(t(),1),h={maxTweets:1e4,maxPages:100,maxConversations:80,maxConversationPages:3},g=/(^|[^\w@./])@([A-Za-z0-9_]{1,15})\b/g,_=f;function v(e){return Array.from(e.matchAll(g)).map(e=>e[2])}function y(e){let t=new Set;t.add(_(e.profile.handle));for(let n of e.profiles??[])t.add(_(n.handle));for(let n of e.conversations)t.add(_(n.author));return t}function b({context:e,analysis:t,markdown:n}){let r=new Set,i=y(e),a=e=>{if(!e)return;let t=_(e);!/^[a-z0-9_]{1,15}$/.test(t)||i.has(t)||r.add(t)};for(let e of t?.sourceHandles??[])a(e);for(let e of t?.themes??[])for(let t of e.handles)a(t);if(n)for(let e of v(n))a(e);for(let t of v(e.profile.bio))a(t);for(let t of e.tweets)for(let e of v(t.text))a(e);for(let t of e.conversations){for(let e of v(t.text))a(e);for(let e of v(t.bio))a(e)}return[...r]}function x(e,t){let n=new Map;for(let t of e.profiles??[])n.set(_(t.handle),t);for(let e of t)n.set(_(e.handle),e);return{...e,profiles:[...n.values()]}}async function S({queryClient:e,context:t,analysis:n,markdown:r}){let{profiles:i}=await p(e,b({context:t,analysis:n,markdown:r}),{limit:50});return i}function C(e,t){let n=new URLSearchParams;return n.set(`handle`,e),n.set(`maxTweets`,String(t.maxTweets)),n.set(`maxPages`,String(t.maxPages)),n.set(`maxConversations`,String(t.maxConversations)),n.set(`maxConversationPages`,String(t.maxConversationPages)),t.refresh&&n.set(`refresh`,`true`),`/api/profile-analysis?${n.toString()}`}function w(e){return e?[e.fetchCached?`cached backfill`:`fresh xurl backfill`,`${String(e.counts.tweets)} tweets`,`${String(e.counts.conversationTweets)} conversation tweets`,`${String(e.counts.conversationsScanned)} conversations`].join(` · `):`xurl profile backfill with cached AI analysis.`}function T(e){return e.trim().replace(/^@/,``)}var E=n();function D(){return Error(`Profile analysis connection closed before completion. Retry to continue.`)}function O(e){return e instanceof Error?e.message:`Analysis failed`}function k(e){let t=d(),[n,r]=(0,m.useState)(``),[i,o]=(0,m.useState)(null),[c,u]=(0,m.useState)(null),[f,p]=(0,m.useState)(`Ready`),g=(0,m.useCallback)(()=>{r(``),o(null),u(null),p(`Starting profile analysis`)},[]),{error:_,loading:v,run:y}=a({schema:s,request:(0,m.useCallback)((e,t,n)=>fetch(C(t,{refresh:n,...h}),{signal:e}),[]),onStart:g,onEvent:(0,m.useCallback)((e,n)=>{let i=(e,r)=>{S({queryClient:t,context:e,analysis:r?.analysis,markdown:r?.markdown}).then(e=>{n.isActive()&&e.length!==0&&(o(t=>t&&x(t,e)),u(t=>{if(!t)return t;let n=x(t.context,e);return n===t.context?t:{...t,context:n}}))}).catch(()=>{})};if(e.type===`status`)p(e.detail?`${e.label} · ${e.detail}`:e.label);else if(e.type===`start`)o(e.context),p(e.cached?`Loading cached analysis`:`Summarizing profile`),i(e.context);else if(e.type===`delta`)r(t=>t+e.delta);else if(e.type===`done`)u(e.result),o(e.result.context),r(e.result.markdown),p(e.result.cached?`Cached`:`Complete`),i(e.result.context,e.result);else if(e.type===`error`)throw Error(e.error)},[t]),isTerminal:l,errorLabel:`Profile analysis failed`,emptyBodyMessage:`Profile analysis failed: empty response body`,prematureEofError:D,formatError:O});return{context:i,error:_,loading:v,markdown:n,result:c,run:(0,m.useCallback)((t=!1,n)=>{let r=T(n??e);r&&y(r,t)},[e,y]),status:f}}function A({analysis:e,className:t=``}){return(0,E.jsxs)(`div`,{className:`flex items-center gap-2 text-[13px] font-medium text-[var(--ink-soft)] ${t}`,children:[e.loading?(0,E.jsx)(c,{className:`size-4 animate-spin`,strokeWidth:1.8}):e.result?(0,E.jsx)(i,{className:`size-4`,strokeWidth:1.8}):(0,E.jsx)(u,{className:`size-4`,strokeWidth:1.8}),(0,E.jsx)(`span`,{children:e.status})]})}function j({analysis:e,emptyLabel:t=`No profile selected.`}){return(0,E.jsxs)(E.Fragment,{children:[e.error?(0,E.jsx)(`div`,{className:r,children:e.error}):null,e.markdown?(0,E.jsx)(`div`,{className:`max-w-3xl`,children:(0,E.jsx)(o,{context:e.context,markdown:e.markdown})}):(0,E.jsx)(`div`,{className:`rounded-[8px] border border-[var(--line)] bg-[var(--panel)] p-6 text-[14px] text-[var(--ink-soft)]`,children:t})]})}export{w as a,T as i,A as n,k as r,j as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{$t as n,M as r,Pn as i,Qt as a,Rn as o,Zt as s,en as c,in as l,nn as u,rn as d,tn as f}from"./schemas-CntsNLmN.js";import{n as p,r as m,t as h}from"./AvatarChip-C8zELEVt.js";var g=e(t(),1),_=/https?:\/\/[^\s<>"'`]+/g,v=/[),.;:!?]+$/;function y(e){try{let t=new URL(e),n=t.hostname.replace(/^www\./,``),r=`${t.pathname}${t.search}${t.hash}`;return r===`/`?n:`${n}${r}`}catch{return e}}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.hostname.replace(/^www\./,``)}${t.pathname}`}catch{return e.split(`?`)[0]??e}}function x(e,t){if(b(e.expandedUrl)===b(t.url))return!0;try{let t=new URL(e.expandedUrl),n=t.hostname.replace(/^www\./,``);return(n===`x.com`||n===`twitter.com`)&&t.pathname.startsWith(`/i/article/`)}catch{return!1}}function S(e){return e&&typeof e==`object`?e:{}}function ee(e){let t=S(e),n=Array.isArray(t.mentions)?t.mentions:[],r=Array.isArray(t.urls)?t.urls:[],i=Array.isArray(t.hashtags)?t.hashtags:[],a=S(t.article),o=String(a.title??``).trim(),s=String(a.url??``).trim();return{...n.length?{mentions:n.map(e=>{let t=S(e);return{username:String(t.username??``),id:typeof t.id==`string`?String(t.id):void 0,start:Number(t.start??0),end:Number(t.end??0)}})}:{},...r.length?{urls:r.map(e=>{let t=S(e),n=String(t.expandedUrl??t.expanded_url??t.url??``);return{url:String(t.url??``),expandedUrl:n,displayUrl:String(t.displayUrl??t.display_url??n??t.url??``),start:Number(t.start??0),end:Number(t.end??0),...typeof t.title==`string`?{title:t.title}:{},...typeof t.description==`string`||t.description===null?{description:t.description}:{},...typeof t.imageUrl==`string`?{imageUrl:t.imageUrl}:typeof t.image_url==`string`?{imageUrl:t.image_url}:{},...typeof t.siteName==`string`?{siteName:t.siteName}:typeof t.site_name==`string`?{siteName:t.site_name}:{}}})}:{},...i.length?{hashtags:i.map(e=>{let t=S(e);return{tag:String(t.tag??t.text??``),start:Number(t.start??0),end:Number(t.end??0)}})}:{},...o&&s?{article:{title:o,url:s,...typeof(a.previewText??a.preview_text)==`string`&&String(a.previewText??a.preview_text).trim()?{previewText:String(a.previewText??a.preview_text).trim()}:{},...typeof(a.coverImageUrl??a.cover_image_url)==`string`&&String(a.coverImageUrl??a.cover_image_url).trim()?{coverImageUrl:String(a.coverImageUrl??a.cover_image_url).trim()}:{}}}:{}}}function C(e){return ee(S(e).description)}function te(e,t,n,r){return e<r&&n<t}function w(e,t){if(t<=0)return 0;let n=0,r=0;for(let i of e){if(r>=t)break;n+=i.length,r+=1}return n}function T(e,t,n,r){let i=e.slice(n,r);return t.kind===`mention`?i.toLowerCase()===`@${t.username}`.toLowerCase():t.kind===`hashtag`?i.toLowerCase()===`#${t.tag}`.toLowerCase():i===t.url}function E(e,t){if(t.start>=0&&t.end>t.start&&t.end<=e.length&&T(e,t,t.start,t.end))return t;let n=w(e,t.start),r=w(e,t.end);return n>=0&&r>n&&r<=e.length&&T(e,t,n,r)?{...t,start:n,end:r}:t}function ne(e,t){let n=E(e,{...t,kind:`url`});return{start:n.start,end:n.end}}function D(e,t,n){let r=(t.urls??[]).map(e=>{let t=n?.(e.url),r=t?.expandedUrl||e.expandedUrl||e.url;return{...e,expandedUrl:r,displayUrl:t?.displayUrl||e.displayUrl||y(r),...t?.title?{title:t.title}:{},...t&&`description`in t?{description:t.description??null}:{},...t?.imageUrl?{imageUrl:t.imageUrl}:{},...t?.siteName?{siteName:t.siteName}:{}}}),i=[];for(let t of e.matchAll(_)){let e=t[0].replace(v,``),a=t.index??0,o=a+e.length;if(!e||r.some(e=>te(a,o,e.start,e.end)))continue;let s=n?.(e),c=s?.expandedUrl||e;i.push({url:e,expandedUrl:c,displayUrl:s?.displayUrl||y(c),start:a,end:o,...s?.title?{title:s.title}:{},...s&&`description`in s?{description:s.description??null}:{},...s?.imageUrl?{imageUrl:s.imageUrl}:{},...s?.siteName?{siteName:s.siteName}:{}})}return i.length===0?{...t,urls:r}:{...t,urls:[...r,...i].sort((e,t)=>e.start-t.start)}}function O(e){return[...e.mentions?.map(e=>({...e,kind:`mention`}))??[],...e.urls?.map(e=>({...e,kind:`url`}))??[],...e.hashtags?.map(e=>({...e,kind:`hashtag`}))??[]].sort((e,t)=>e.start-t.start)}function k(e,t){return O(t).map(t=>E(e,t)).sort((e,t)=>e.start-t.start)}function re(e,t,n){let r=k(e,t),i=0,a=``;for(let t of r){if(t.start<i||t.end<=t.start||t.end>e.length)continue;a+=e.slice(i,t.start);let r=e.slice(t.start,t.end);a+=n(t,r),i=t.end}return a+=e.slice(i),a}function ie(e,t){return re(e,t,(e,t)=>e.kind===`url`?e.expandedUrl:e.kind===`mention`?`@${e.username}`:e.kind===`hashtag`?`#${e.tag}`:t)}function A(e){if(!e)return null;try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`?null:t.toString()}catch{return null}}var j=4,M=2500,N=`800px 0px`,P=[],F=new Set,I=new Set,L=0,R=!1,z=null,B=null;function V(e){I.delete(e)&&(--L,H())}function H(){for(;L<j&&P.length>0;){let e=P.shift();if(!e)return;let t=new Image;L+=1,I.add(t),t.decoding=`async`,t.onerror=()=>V(t),t.onload=()=>{if(typeof t.decode!=`function`){V(t);return}t.decode().catch(()=>void 0).finally(()=>V(t))},t.src=e}}function U(){z=null,B=null,H()}function W(){if(P.length===0||z!==null||B!==null)return;let e=window.requestIdleCallback?.bind(window);if(e){z=e(U,{timeout:M});return}B=window.setTimeout(U,0)}function G(){R=!1,W()}function K(){if(document.readyState===`complete`){W();return}R||(R=!0,window.addEventListener(`load`,G,{once:!0}))}function q(e,t){if(!e||!t||typeof window>`u`)return;let n=p(e,t);F.has(n)||(F.add(n),P.push(n),K())}function J(e,t,n){(0,g.useEffect)(()=>{if(!t||!n)return;let r=e.current;if(!r||typeof IntersectionObserver>`u`){q(t,n);return}let i=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(i.disconnect(),q(t,n))},{rootMargin:N});return i.observe(r),()=>i.disconnect()},[n,t,e])}var ae=10,oe=12,se=120,Y={top:0,left:0,maxWidth:0,maxHeight:0,side:`bottom`,measured:!1,ready:!1};function ce(e,t){return e.reduce((e,n)=>t===`bottom`?n.bottom>e.bottom||n.bottom===e.bottom&&n.width>e.width?n:e:n.top<e.top||n.top===e.top&&n.width>e.width?n:e)}function le(e,t,n){return n<t?t:Math.min(Math.max(e,t),n)}function ue({referenceRects:e,floatingWidth:t,floatingHeight:n,viewport:r,gap:i=ae,gutter:a=oe}){let o=Math.min(...e.map(e=>e.top)),s=Math.max(...e.map(e=>e.bottom)),c=Math.max(0,r.bottom-a-s-i),l=Math.max(0,o-r.top-a-i),u=c>=n||c>=l?`bottom`:`top`,d=u===`bottom`?c:l,f=Math.min(n,d),p=ce(e,u),m=Math.max(0,r.width-a*2),h=Math.min(t,m),g=r.left+a,_=r.right-a-h,v=le(p.left+p.width/2-h/2,g,_);return{top:u===`bottom`?s+i:o-i-f,left:v,maxWidth:m,maxHeight:d,side:u,measured:!0,ready:!0}}function de(){let e=window.visualViewport,t=e?.offsetLeft??0,n=e?.offsetTop??0,r=e?.width??window.innerWidth,i=e?.height??window.innerHeight;return{top:n,right:t+r,bottom:n+i,left:t,width:r,height:i}}function fe(e){let t=Array.from(e.getClientRects()).filter(e=>e.width>0||e.height>0);return t.length>0?t:[e.getBoundingClientRect()]}function pe(e,t){return e.some(e=>e.right>=t.left&&e.left<=t.right&&e.bottom>=t.top&&e.top<=t.bottom)}function me(e,t){return e.top===t.top&&e.left===t.left&&e.maxWidth===t.maxWidth&&e.maxHeight===t.maxHeight&&e.side===t.side&&e.measured===t.measured&&e.ready===t.ready}function X(e){return{position:`fixed`,top:e.top,left:e.left,maxWidth:e.measured?e.maxWidth:void 0,maxHeight:e.measured?e.maxHeight:void 0,visibility:e.ready?`visible`:`hidden`}}function Z(e,...t){return e instanceof Node&&t.some(t=>t?.contains(e))}function Q(e={}){let t=e.closeDelayMs??se,[n,r]=(0,g.useState)(!1),[i,a]=(0,g.useState)(Y),o=(0,g.useId)(),s=(0,g.useRef)(null),c=(0,g.useRef)(null),l=(0,g.useRef)(null),u=(0,g.useCallback)(()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)},[]),d=(0,g.useCallback)(()=>{u(),n||a(Y),r(!0)},[u,n]),f=(0,g.useCallback)(()=>{u(),r(!1)},[u]),p=(0,g.useCallback)(()=>{u(),l.current=window.setTimeout(()=>{l.current=null;let e=s.current,t=c.current,n=Z(document.activeElement,e,t),i=!!e?.matches(`:hover`)||!!t?.matches(`:hover`);!n&&!i&&r(!1)},t)},[u,t]),m=(0,g.useCallback)(e=>{Z(e.relatedTarget,s.current,c.current)||p()},[p]),h=(0,g.useCallback)(e=>{e.key===`Escape`&&(f(),s.current?.querySelector(`a,button`)?.focus())},[f]),_=(0,g.useCallback)(()=>{let e=s.current,t=c.current;if(!e||!t)return;let n=de(),r=fe(e);if(!pe(r,n)){a(e=>e.ready?{...e,ready:!1}:e);return}let i=t.getBoundingClientRect(),o=t.querySelector(`[data-floating-preview-content]`),l=window.getComputedStyle(t),u=[l.paddingTop,l.paddingBottom,l.borderTopWidth,l.borderBottomWidth].reduce((e,t)=>e+(Number.parseFloat(t)||0),0),d=Math.max(i.height,(o?.getBoundingClientRect().height??0)+u),f=ue({referenceRects:r,floatingWidth:i.width,floatingHeight:d,viewport:n});i.width>f.maxWidth+.5&&(f.ready=!1),a(e=>me(e,f)?e:f)},[]);(0,g.useLayoutEffect)(()=>{if(!n)return;_();let e=0,t=()=>{_(),e=window.requestAnimationFrame(t)};e=window.requestAnimationFrame(t);let r=window.visualViewport;window.addEventListener(`resize`,_),window.addEventListener(`scroll`,_,!0),r?.addEventListener(`resize`,_),r?.addEventListener(`scroll`,_);let i=typeof ResizeObserver>`u`?null:new ResizeObserver(_);return s.current&&i?.observe(s.current),c.current&&i?.observe(c.current),()=>{window.cancelAnimationFrame(e),window.removeEventListener(`resize`,_),window.removeEventListener(`scroll`,_,!0),r?.removeEventListener(`resize`,_),r?.removeEventListener(`scroll`,_),i?.disconnect()}},[n,_]),(0,g.useEffect)(()=>()=>u(),[u]);let v={onPointerEnter:e=>d(),onPointerLeave:e=>p(),onFocus:e=>d(),onBlur:m,onKeyDown:h};return{open:n,referenceRef:s,floatingRef:c,floatingStyle:X(i),referenceProps:v,floatingProps:v,floatingId:o,closePreview:f}}var $=o();function he({profile:e}){let t=k(e.bio,C(e.entities)),n=0;return(0,$.jsxs)(`span`,{className:s,children:[t.map((t,r)=>{if(t.kind!==`url`||t.start<n||t.end<=t.start||t.end>e.bio.length)return null;let a=e.bio.slice(n,t.start);n=t.end;let o=A(t.expandedUrl);return(0,$.jsxs)(g.Fragment,{children:[a,o?(0,$.jsx)(`a`,{className:i,href:o,rel:`noreferrer`,target:`_blank`,children:t.expandedUrl}):e.bio.slice(t.start,t.end)]},`${t.url}-${String(r)}`)}),e.bio.slice(n)]})}function ge({profile:e,children:t,className:i=``}){let o=Q();return J(o.referenceRef,e.id,e.avatarUrl),(0,$.jsxs)(`span`,{ref:o.referenceRef,className:r(n,i),...o.referenceProps,children:[(0,$.jsx)(`a`,{"aria-controls":o.open?o.floatingId:void 0,"aria-expanded":o.open,className:l,href:`/profiles/${encodeURIComponent(e.handle)}`,children:t}),o.open?(0,$.jsx)(`span`,{"aria-label":`${e.displayName} profile preview`,id:o.floatingId,ref:o.floatingRef,className:a,role:`group`,style:o.floatingStyle,...o.floatingProps,children:(0,$.jsxs)(`span`,{className:`grid gap-2`,"data-floating-preview-content":!0,children:[(0,$.jsxs)(`span`,{className:f,children:[(0,$.jsx)(h,{avatarUrl:e.avatarUrl,hue:e.avatarHue,name:e.displayName,profileId:e.id}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{className:d,children:e.displayName}),(0,$.jsxs)(`span`,{className:c,children:[`@`,e.handle]})]})]}),e.bio?(0,$.jsx)(he,{profile:e}):null,(0,$.jsxs)(`span`,{className:u,children:[m(e.followersCount),` followers`]})]})}):null]})}export{k as a,ne as c,A as i,C as l,Q as n,D as o,J as r,x as s,ge as t,ie as u};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{$t as n,M as r,Pn as i,Qt as a,Rn as o,Zt as s,en as c,in as l,nn as u,rn as d,tn as f}from"./schemas-CMQMhQXI.js";import{n as p,r as m,t as h}from"./AvatarChip-DsHj3LT7.js";var g=e(t(),1),_=/https?:\/\/[^\s<>"'`]+/g,v=/[),.;:!?]+$/;function y(e){try{let t=new URL(e),n=t.hostname.replace(/^www\./,``),r=`${t.pathname}${t.search}${t.hash}`;return r===`/`?n:`${n}${r}`}catch{return e}}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.hostname.replace(/^www\./,``)}${t.pathname}`}catch{return e.split(`?`)[0]??e}}function x(e,t){if(b(e.expandedUrl)===b(t.url))return!0;try{let t=new URL(e.expandedUrl),n=t.hostname.replace(/^www\./,``);return(n===`x.com`||n===`twitter.com`)&&t.pathname.startsWith(`/i/article/`)}catch{return!1}}function S(e){return e&&typeof e==`object`?e:{}}function ee(e){let t=S(e),n=Array.isArray(t.mentions)?t.mentions:[],r=Array.isArray(t.urls)?t.urls:[],i=Array.isArray(t.hashtags)?t.hashtags:[],a=S(t.article),o=String(a.title??``).trim(),s=String(a.url??``).trim();return{...n.length?{mentions:n.map(e=>{let t=S(e);return{username:String(t.username??``),id:typeof t.id==`string`?String(t.id):void 0,start:Number(t.start??0),end:Number(t.end??0)}})}:{},...r.length?{urls:r.map(e=>{let t=S(e),n=String(t.expandedUrl??t.expanded_url??t.url??``);return{url:String(t.url??``),expandedUrl:n,displayUrl:String(t.displayUrl??t.display_url??n??t.url??``),start:Number(t.start??0),end:Number(t.end??0),...typeof t.title==`string`?{title:t.title}:{},...typeof t.description==`string`||t.description===null?{description:t.description}:{},...typeof t.imageUrl==`string`?{imageUrl:t.imageUrl}:typeof t.image_url==`string`?{imageUrl:t.image_url}:{},...typeof t.siteName==`string`?{siteName:t.siteName}:typeof t.site_name==`string`?{siteName:t.site_name}:{}}})}:{},...i.length?{hashtags:i.map(e=>{let t=S(e);return{tag:String(t.tag??t.text??``),start:Number(t.start??0),end:Number(t.end??0)}})}:{},...o&&s?{article:{title:o,url:s,...typeof(a.previewText??a.preview_text)==`string`&&String(a.previewText??a.preview_text).trim()?{previewText:String(a.previewText??a.preview_text).trim()}:{},...typeof(a.coverImageUrl??a.cover_image_url)==`string`&&String(a.coverImageUrl??a.cover_image_url).trim()?{coverImageUrl:String(a.coverImageUrl??a.cover_image_url).trim()}:{}}}:{}}}function C(e){return ee(S(e).description)}function te(e,t,n,r){return e<r&&n<t}function w(e,t){if(t<=0)return 0;let n=0,r=0;for(let i of e){if(r>=t)break;n+=i.length,r+=1}return n}function T(e,t,n,r){let i=e.slice(n,r);return t.kind===`mention`?i.toLowerCase()===`@${t.username}`.toLowerCase():t.kind===`hashtag`?i.toLowerCase()===`#${t.tag}`.toLowerCase():i===t.url}function E(e,t){if(t.start>=0&&t.end>t.start&&t.end<=e.length&&T(e,t,t.start,t.end))return t;let n=w(e,t.start),r=w(e,t.end);return n>=0&&r>n&&r<=e.length&&T(e,t,n,r)?{...t,start:n,end:r}:t}function ne(e,t){let n=E(e,{...t,kind:`url`});return{start:n.start,end:n.end}}function D(e,t,n){let r=(t.urls??[]).map(e=>{let t=n?.(e.url),r=t?.expandedUrl||e.expandedUrl||e.url;return{...e,expandedUrl:r,displayUrl:t?.displayUrl||e.displayUrl||y(r),...t?.title?{title:t.title}:{},...t&&`description`in t?{description:t.description??null}:{},...t?.imageUrl?{imageUrl:t.imageUrl}:{},...t?.siteName?{siteName:t.siteName}:{}}}),i=[];for(let t of e.matchAll(_)){let e=t[0].replace(v,``),a=t.index??0,o=a+e.length;if(!e||r.some(e=>te(a,o,e.start,e.end)))continue;let s=n?.(e),c=s?.expandedUrl||e;i.push({url:e,expandedUrl:c,displayUrl:s?.displayUrl||y(c),start:a,end:o,...s?.title?{title:s.title}:{},...s&&`description`in s?{description:s.description??null}:{},...s?.imageUrl?{imageUrl:s.imageUrl}:{},...s?.siteName?{siteName:s.siteName}:{}})}return i.length===0?{...t,urls:r}:{...t,urls:[...r,...i].sort((e,t)=>e.start-t.start)}}function O(e){return[...e.mentions?.map(e=>({...e,kind:`mention`}))??[],...e.urls?.map(e=>({...e,kind:`url`}))??[],...e.hashtags?.map(e=>({...e,kind:`hashtag`}))??[]].sort((e,t)=>e.start-t.start)}function k(e,t){return O(t).map(t=>E(e,t)).sort((e,t)=>e.start-t.start)}function re(e,t,n){let r=k(e,t),i=0,a=``;for(let t of r){if(t.start<i||t.end<=t.start||t.end>e.length)continue;a+=e.slice(i,t.start);let r=e.slice(t.start,t.end);a+=n(t,r),i=t.end}return a+=e.slice(i),a}function ie(e,t){return re(e,t,(e,t)=>e.kind===`url`?e.expandedUrl:e.kind===`mention`?`@${e.username}`:e.kind===`hashtag`?`#${e.tag}`:t)}function A(e){if(!e)return null;try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`?null:t.toString()}catch{return null}}var j=4,M=2500,N=`800px 0px`,P=[],F=new Set,I=new Set,L=0,R=!1,z=null,B=null;function V(e){I.delete(e)&&(--L,H())}function H(){for(;L<j&&P.length>0;){let e=P.shift();if(!e)return;let t=new Image;L+=1,I.add(t),t.decoding=`async`,t.onerror=()=>V(t),t.onload=()=>{if(typeof t.decode!=`function`){V(t);return}t.decode().catch(()=>void 0).finally(()=>V(t))},t.src=e}}function U(){z=null,B=null,H()}function W(){if(P.length===0||z!==null||B!==null)return;let e=window.requestIdleCallback?.bind(window);if(e){z=e(U,{timeout:M});return}B=window.setTimeout(U,0)}function G(){R=!1,W()}function K(){if(document.readyState===`complete`){W();return}R||(R=!0,window.addEventListener(`load`,G,{once:!0}))}function q(e,t){if(!e||!t||typeof window>`u`)return;let n=p(e,t);F.has(n)||(F.add(n),P.push(n),K())}function J(e,t,n){(0,g.useEffect)(()=>{if(!t||!n)return;let r=e.current;if(!r||typeof IntersectionObserver>`u`){q(t,n);return}let i=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(i.disconnect(),q(t,n))},{rootMargin:N});return i.observe(r),()=>i.disconnect()},[n,t,e])}var ae=10,oe=12,se=120,Y={top:0,left:0,maxWidth:0,maxHeight:0,side:`bottom`,measured:!1,ready:!1};function ce(e,t){return e.reduce((e,n)=>t===`bottom`?n.bottom>e.bottom||n.bottom===e.bottom&&n.width>e.width?n:e:n.top<e.top||n.top===e.top&&n.width>e.width?n:e)}function le(e,t,n){return n<t?t:Math.min(Math.max(e,t),n)}function ue({referenceRects:e,floatingWidth:t,floatingHeight:n,viewport:r,gap:i=ae,gutter:a=oe}){let o=Math.min(...e.map(e=>e.top)),s=Math.max(...e.map(e=>e.bottom)),c=Math.max(0,r.bottom-a-s-i),l=Math.max(0,o-r.top-a-i),u=c>=n||c>=l?`bottom`:`top`,d=u===`bottom`?c:l,f=Math.min(n,d),p=ce(e,u),m=Math.max(0,r.width-a*2),h=Math.min(t,m),g=r.left+a,_=r.right-a-h,v=le(p.left+p.width/2-h/2,g,_);return{top:u===`bottom`?s+i:o-i-f,left:v,maxWidth:m,maxHeight:d,side:u,measured:!0,ready:!0}}function de(){let e=window.visualViewport,t=e?.offsetLeft??0,n=e?.offsetTop??0,r=e?.width??window.innerWidth,i=e?.height??window.innerHeight;return{top:n,right:t+r,bottom:n+i,left:t,width:r,height:i}}function fe(e){let t=Array.from(e.getClientRects()).filter(e=>e.width>0||e.height>0);return t.length>0?t:[e.getBoundingClientRect()]}function pe(e,t){return e.some(e=>e.right>=t.left&&e.left<=t.right&&e.bottom>=t.top&&e.top<=t.bottom)}function me(e,t){return e.top===t.top&&e.left===t.left&&e.maxWidth===t.maxWidth&&e.maxHeight===t.maxHeight&&e.side===t.side&&e.measured===t.measured&&e.ready===t.ready}function X(e){return{position:`fixed`,top:e.top,left:e.left,maxWidth:e.measured?e.maxWidth:void 0,maxHeight:e.measured?e.maxHeight:void 0,visibility:e.ready?`visible`:`hidden`}}function Z(e,...t){return e instanceof Node&&t.some(t=>t?.contains(e))}function Q(e={}){let t=e.closeDelayMs??se,[n,r]=(0,g.useState)(!1),[i,a]=(0,g.useState)(Y),o=(0,g.useId)(),s=(0,g.useRef)(null),c=(0,g.useRef)(null),l=(0,g.useRef)(null),u=(0,g.useCallback)(()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)},[]),d=(0,g.useCallback)(()=>{u(),n||a(Y),r(!0)},[u,n]),f=(0,g.useCallback)(()=>{u(),r(!1)},[u]),p=(0,g.useCallback)(()=>{u(),l.current=window.setTimeout(()=>{l.current=null;let e=s.current,t=c.current,n=Z(document.activeElement,e,t),i=!!e?.matches(`:hover`)||!!t?.matches(`:hover`);!n&&!i&&r(!1)},t)},[u,t]),m=(0,g.useCallback)(e=>{Z(e.relatedTarget,s.current,c.current)||p()},[p]),h=(0,g.useCallback)(e=>{e.key===`Escape`&&(f(),s.current?.querySelector(`a,button`)?.focus())},[f]),_=(0,g.useCallback)(()=>{let e=s.current,t=c.current;if(!e||!t)return;let n=de(),r=fe(e);if(!pe(r,n)){a(e=>e.ready?{...e,ready:!1}:e);return}let i=t.getBoundingClientRect(),o=t.querySelector(`[data-floating-preview-content]`),l=window.getComputedStyle(t),u=[l.paddingTop,l.paddingBottom,l.borderTopWidth,l.borderBottomWidth].reduce((e,t)=>e+(Number.parseFloat(t)||0),0),d=Math.max(i.height,(o?.getBoundingClientRect().height??0)+u),f=ue({referenceRects:r,floatingWidth:i.width,floatingHeight:d,viewport:n});i.width>f.maxWidth+.5&&(f.ready=!1),a(e=>me(e,f)?e:f)},[]);(0,g.useLayoutEffect)(()=>{if(!n)return;_();let e=0,t=()=>{_(),e=window.requestAnimationFrame(t)};e=window.requestAnimationFrame(t);let r=window.visualViewport;window.addEventListener(`resize`,_),window.addEventListener(`scroll`,_,!0),r?.addEventListener(`resize`,_),r?.addEventListener(`scroll`,_);let i=typeof ResizeObserver>`u`?null:new ResizeObserver(_);return s.current&&i?.observe(s.current),c.current&&i?.observe(c.current),()=>{window.cancelAnimationFrame(e),window.removeEventListener(`resize`,_),window.removeEventListener(`scroll`,_,!0),r?.removeEventListener(`resize`,_),r?.removeEventListener(`scroll`,_),i?.disconnect()}},[n,_]),(0,g.useEffect)(()=>()=>u(),[u]);let v={onPointerEnter:e=>d(),onPointerLeave:e=>p(),onFocus:e=>d(),onBlur:m,onKeyDown:h};return{open:n,referenceRef:s,floatingRef:c,floatingStyle:X(i),referenceProps:v,floatingProps:v,floatingId:o,closePreview:f}}var $=o();function he({profile:e}){let t=k(e.bio,C(e.entities)),n=0;return(0,$.jsxs)(`span`,{className:s,children:[t.map((t,r)=>{if(t.kind!==`url`||t.start<n||t.end<=t.start||t.end>e.bio.length)return null;let a=e.bio.slice(n,t.start);n=t.end;let o=A(t.expandedUrl);return(0,$.jsxs)(g.Fragment,{children:[a,o?(0,$.jsx)(`a`,{className:i,href:o,rel:`noreferrer`,target:`_blank`,children:t.expandedUrl}):e.bio.slice(t.start,t.end)]},`${t.url}-${String(r)}`)}),e.bio.slice(n)]})}function ge({profile:e,children:t,className:i=``}){let o=Q();return J(o.referenceRef,e.id,e.avatarUrl),(0,$.jsxs)(`span`,{ref:o.referenceRef,className:r(n,i),...o.referenceProps,children:[(0,$.jsx)(`a`,{"aria-controls":o.open?o.floatingId:void 0,"aria-expanded":o.open,className:l,href:`/profiles/${encodeURIComponent(e.handle)}`,children:t}),o.open?(0,$.jsx)(`span`,{"aria-label":`${e.displayName} profile preview`,id:o.floatingId,ref:o.floatingRef,className:a,role:`group`,style:o.floatingStyle,...o.floatingProps,children:(0,$.jsxs)(`span`,{className:`grid gap-2`,"data-floating-preview-content":!0,children:[(0,$.jsxs)(`span`,{className:f,children:[(0,$.jsx)(h,{avatarUrl:e.avatarUrl,hue:e.avatarHue,name:e.displayName,profileId:e.id}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{className:d,children:e.displayName}),(0,$.jsxs)(`span`,{className:c,children:[`@`,e.handle]})]})]}),e.bio?(0,$.jsx)(he,{profile:e}):null,(0,$.jsxs)(`span`,{className:u,children:[m(e.followersCount),` followers`]})]})}):null]})}export{k as a,ne as c,A as i,C as l,Q as n,D as o,J as r,x as s,ge as t,ie as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Rn as n}from"./schemas-CMQMhQXI.js";import{a as r,i,n as a,o,r as s,t as c}from"./useTimelineRouteData-DYhYLZY4.js";import{t as l}from"./SyncNowButton-DDYT2jQT.js";var u=e(t(),1),d=n(),f={liked:`Likes`,bookmarked:`Bookmarks`};function p({filter:e,title:t,loadingLabel:n,searchPlaceholder:p}){let[m,h]=(0,u.useState)(``),{meta:g,items:_,loading:v,error:y,retry:b,refreshLocalView:x,replyToTweet:S,hasMore:C,loadingMore:w,loadMore:T}=c({resource:`home`,search:m,errorFallback:`${f[e]} unavailable`,likedOnly:e===`liked`,bookmarkedOnly:e===`bookmarked`}),E=(0,u.useMemo)(()=>g?`${String(_.length)} visible · ${g.transport.statusText}`:_.length>0?`${String(_.length)} visible`:n,[_.length,n,g]),D=e===`liked`?`likes`:`bookmarks`;return(0,d.jsx)(s,{header:(0,d.jsx)(a,{title:f[e],subtitles:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{children:t}),(0,d.jsx)(i,{children:E})]}),action:(0,d.jsx)(l,{accounts:g?.accounts,kind:D,label:e===`liked`?`Sync likes`:`Sync bookmarks`,onSynced:x}),controls:(0,d.jsx)(r,{onChange:h,placeholder:p,value:m})}),loading:v,loadingLabel:n,loadingDetail:`Reading local ${f[e].toLowerCase()}`,error:y,errorTitle:`Could not load ${f[e].toLowerCase()}`,onRetry:b,empty:_.length===0,emptyLabel:`Nothing saved here yet`,emptyDetail:`Sync this collection or broaden the search.`,hasMore:C,loadingMore:w,onLoadMore:T,children:_.map(e=>(0,d.jsx)(o,{item:e,onReply:S,showReplyControls:!1},e.id))})}export{p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Rn as n}from"./schemas-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Rn as n}from"./schemas-CMQMhQXI.js";import{a as r,i,o as a}from"./AvatarChip-DsHj3LT7.js";var o=e(t(),1),s=n(),c=3e4,l=new Set,u=Date.now(),d=null;function f(){u=Date.now();for(let e of l)e()}function p(e){return l.add(e),d===null&&(u=Date.now(),d=setInterval(f,c)),()=>{l.delete(e),l.size===0&&d!==null&&(clearInterval(d),d=null)}}function m(){return u}function h(){return null}function g({className:e,value:t}){let n=(0,o.useSyncExternalStore)(p,m,h),c=i(t);return(0,s.jsx)(`time`,{"aria-label":c,className:e,dateTime:t,title:c,children:n===null?r(t):a(t,n)})}export{g as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{M as n,Rn as r,pn as i}from"./schemas-CMQMhQXI.js";import{t as a}from"./refresh-cw-IUfM9D_1.js";import{c as o}from"./query-client-CA-do_IS.js";import{n as s,r as ee,t as c}from"./account-selection-h7m9xmzU.js";var l=e(t(),1),u=r(),d=[{label:`5m`,value:5*6e4},{label:`10m`,value:10*6e4},{label:`15m`,value:15*6e4},{label:`30m`,value:30*6e4},{label:`1h`,value:60*6e4}],f=10*6e4,p=60*6e4;function m(e,t){return`birdclaw:auto-sync:${e}:${t??`default`}`}function h(e){return d.some(t=>t.value===e)}function g(e){try{let t=JSON.parse(window.localStorage.getItem(e)??`null`);return{enabled:t?.enabled===!0,intervalMs:h(t?.intervalMs)?t.intervalMs:f}}catch{return{enabled:!1,intervalMs:f}}}function _({kind:e,label:t,accounts:r,onSynced:h,allowAutoSync:_=!1,autoSyncBlocked:v=!1,showAccountPicker:y=!1,syncOptions:b}){let[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(null),[T,E]=(0,l.useState)(null),D=(0,l.useRef)(!1),O=(0,l.useRef)(h),[k,A]=(0,l.useState)(!1),[j,M]=(0,l.useState)(null),[N,P]=(0,l.useState)(0),[F,I]=(0,l.useState)(0),[L,R]=(0,l.useState)(null),[z,B]=(0,l.useState)(null),V=r??[],te=ee(r),H=(0,l.useMemo)(()=>c(r),[r]),U=te??H,W=m(e,U),G=(0,l.useRef)(W);G.current=W;let[K,q]=(0,l.useState)({key:``,enabled:!1,intervalMs:f}),J=K.key===W,Y=e!==`dms`,X=Y&&r===void 0&&(y||e!==`timeline`),Z=!Y&&U!==void 0&&H!==void 0&&U!==H,ne=x||X||Z,re=Z?`Switch to default to sync`:X?`Loading account`:T??C??``,ie=j?`Auto sync failed: ${j}`:k?`Auto syncing...`:L?`Last auto sync ${new Date(L).toLocaleTimeString()}`:z?`Next sync ${new Date(z).toLocaleTimeString()}`:K.enabled?`Auto sync waiting`:`Auto sync off`;(0,l.useEffect)(()=>{O.current=h},[h]),(0,l.useEffect)(()=>{let e=g(W);q({key:W,...e}),M(null),A(!1),P(0),R(null),B(null),I(e=>e+1)},[W]);function ae(e){s(e)}let Q=(0,l.useCallback)(async t=>{if(D.current||X||Z||t===`auto`&&v)return!1;let n=t===`auto`?G.current:null;D.current=!0,S(!0),t===`auto`?(A(!0),M(null)):(E(null),w(null));try{let r=await o(e,Y?U:void 0,b);if(!r.ok)throw Error(r.summary);return n!==null&&G.current!==n?!1:(t===`auto`?(R(Date.now()),P(0)):w(r.summary),O.current(r),!0)}catch(e){if(n!==null&&G.current!==n)return!1;let r=e instanceof Error?e.message:`Sync failed`;return t===`auto`?(M(r),P(e=>e+1)):E(r),!1}finally{D.current=!1,S(!1),t===`auto`&&A(!1)}},[Y,U,v,Z,e,b,X]);(0,l.useEffect)(()=>{if(!_||!J||!K.enabled||v||X||Z){B(null);return}let e=Math.min(K.intervalMs*2**N,p);B(Date.now()+e);let t=window.setTimeout(()=>{if(document.visibilityState===`hidden`||D.current){I(e=>e+1);return}Q(`auto`).finally(()=>{I(e=>e+1)})},e);return()=>window.clearTimeout(t)},[_,F,N,K.enabled,K.intervalMs,J,v,Z,Q,X]);function $(e){let t={key:W,...e};q(t),window.localStorage.setItem(W,JSON.stringify({enabled:e.enabled,intervalMs:e.intervalMs})),M(null),P(0),R(null),I(e=>e+1)}return(0,u.jsxs)(`div`,{className:n(`flex shrink-0 flex-wrap items-center justify-end gap-2`,_&&`w-full lg:w-auto`),children:[y&&Y&&V.length>1?(0,u.jsx)(`select`,{"aria-label":`Sync account`,className:n(i,`h-9 w-[132px]!`),disabled:x,onChange:e=>ae(e.target.value),value:U??``,children:V.map(e=>(0,u.jsx)(`option`,{value:e.id,children:e.handle},e.id))}):null,(0,u.jsxs)(`button`,{type:`button`,className:n(`inline-flex h-9 shrink-0 items-center gap-1.5 rounded-full border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] font-semibold text-[var(--ink)] transition-[background,border-color,color,transform] duration-150 hover:border-[color:color-mix(in_srgb,var(--accent)_45%,var(--line))] hover:bg-[var(--accent-soft)] hover:text-[var(--accent)] active:scale-[0.98] disabled:opacity-65`,x&&`text-[var(--ink-soft)]`,Z?`disabled:cursor-not-allowed`:`disabled:cursor-wait`),"aria-label":Z?`${t}: default account only`:x?`${t}: syncing`:t,disabled:ne,onClick:()=>void Q(`manual`),children:[(0,u.jsx)(a,{className:n(`size-4`,x&&`animate-spin`),strokeWidth:2}),(0,u.jsx)(`span`,{className:`hidden sm:inline`,children:x?`Syncing...`:t})]}),(0,u.jsx)(`span`,{className:n(`hidden max-w-[190px] truncate text-[12px] sm:inline`,T?`text-[var(--alert)]`:`text-[var(--ink-soft)]`),role:`status`,children:re}),_&&J?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`label`,{className:`inline-flex h-9 items-center gap-1.5 rounded-full border border-[var(--line)] bg-[var(--bg)] px-2.5 text-[12px] font-medium text-[var(--ink-soft)]`,children:[(0,u.jsx)(`input`,{"aria-label":`Auto sync ${e}`,type:`checkbox`,checked:K.enabled,disabled:X||Z,onChange:e=>$({enabled:e.currentTarget.checked,intervalMs:K.intervalMs})}),`Auto sync`]}),(0,u.jsx)(`select`,{"aria-label":`${t} auto-sync interval`,className:n(i,`h-9 w-[70px]!`),disabled:!K.enabled,onChange:e=>$({enabled:K.enabled,intervalMs:Number(e.currentTarget.value)}),value:K.intervalMs,children:d.map(e=>(0,u.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,u.jsx)(`span`,{className:n(`max-w-[190px] truncate text-[12px]`,j?`text-[var(--alert)]`:`text-[var(--ink-soft)]`),role:`status`,children:ie})]}):null]})}export{_ as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Dn as n,M as r,Mn as i,On as a,Rn as o,kn as s}from"./schemas-CMQMhQXI.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./useTimelineRouteData-DYhYLZY4.js";import{t as m}from"./SyncNowButton-DDYT2jQT.js";var h=e(t(),1),g=o(),_=[{value:`all`,label:`All`},{value:`unreplied`,label:`Unreplied`},{value:`replied`,label:`Replied`}];function v({title:e,resource:t,initialReplyFilter:o,searchPlaceholder:v,syncKind:y,syncLabel:b,loadingLabel:x,loadingDetail:S,errorTitle:C,errorFallback:w,emptyLabel:T,emptyDetail:E,subtitle:D}){let[O,k]=(0,h.useState)(o),[A,j]=(0,h.useState)(``),{meta:M,items:N,loading:P,error:F,replyError:I,retry:L,refreshLocalView:R,replyToTweet:z,hasMore:B,loadingMore:V,loadMore:H}=p({resource:t,replyFilter:O,search:A,errorFallback:w});return(0,g.jsx)(f,{header:(0,g.jsx)(u,{title:e,subtitles:(0,g.jsx)(l,{children:(0,h.useMemo)(()=>D(M),[M,D])}),action:(0,g.jsx)(m,{accounts:M?.accounts,allowAutoSync:!0,autoSyncBlocked:P,kind:y,label:b,onSynced:R,showAccountPicker:!0}),controls:(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(c,{onChange:j,placeholder:v,value:A}),(0,g.jsx)(`div`,{className:s,children:_.map(e=>{let t=O===e.value;return(0,g.jsx)(`button`,{type:`button`,"aria-pressed":t,className:r(n,t&&`text-[var(--ink)] font-bold`),onClick:()=>k(e.value),children:(0,g.jsxs)(`span`,{className:`relative inline-flex flex-col items-center justify-center py-1`,children:[e.label,t?(0,g.jsx)(`span`,{className:a}):null]})},e.value)})})]})}),notice:I?(0,g.jsx)(`p`,{className:r(i,`px-4 py-2 text-red-500`),children:I}):null,loading:P,loadingLabel:x,loadingDetail:S,error:F,errorTitle:C,onRetry:L,empty:N.length===0,emptyLabel:T,emptyDetail:E,hasMore:B,loadingMore:V,onLoadMore:H,children:N.map(e=>(0,g.jsx)(d,{item:e,onReply:z},e.id))})}export{v as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Ln as n,Nn as r,Pn as i,Rn as a,T as o}from"./schemas-CMQMhQXI.js";import{a as s,c,i as l,o as u,s as d,t as f}from"./ProfilePreview-CaaMHV2N.js";var p=e(t(),1),m=a();function h(e){return`${e.start}:${e.end}`}function g(e){try{return new URL(e).hostname.replace(/^www\./,``)===`t.co`}catch{return!1}}function _({text:e,entities:t,className:a=`body-copy`,hiddenUrlRanges:_=[],urlLabel:v=`display`,as:y=`p`}){let b=u(e,t),x=s(e,b),S=new Set(_.map(h)),C=t.article;if(C){let e=b.urls??[],t=e.filter(e=>d(e,C)),n=e[0];t.length===0&&e.length===1&&n&&(g(n.url)||g(n.expandedUrl))&&t.push(n);for(let e of t)S.add(h(e))}let w=new Set(S);for(let t of b.urls??[])S.has(h(t))&&w.add(h(c(e,t)));let T=y,E=0,D=t.article&&e.trim()===t.article.title.trim();return(0,m.jsxs)(T,{className:a===`body-copy`?o:a,children:[(D?[]:x).map((t,a)=>{if(t.start<E||t.end<=t.start||t.end>e.length)return null;let o=e.slice(E,t.start);E=t.end;let s=(0,m.jsx)(p.Fragment,{children:e.slice(t.start,t.end)},`segment-${String(a)}`);if(t.kind===`url`&&w.has(h(t)))s=null;else if(t.kind===`mention`&&t.profile)s=(0,m.jsx)(f,{profile:t.profile,children:(0,m.jsxs)(`span`,{className:n,children:[`@`,t.username]})},`segment-${String(a)}`);else if(t.kind===`mention`)s=(0,m.jsxs)(`a`,{className:n,href:`/profiles/${encodeURIComponent(t.username)}`,children:[`@`,t.username]},`segment-${String(a)}`);else if(t.kind===`url`){let e=l(t.expandedUrl);e&&(s=(0,m.jsx)(`a`,{className:i,href:e,rel:`noreferrer`,target:`_blank`,children:v===`expanded`?t.expandedUrl:t.displayUrl},`segment-${String(a)}`))}else t.kind===`hashtag`&&(s=(0,m.jsxs)(`span`,{className:r,children:[`#`,t.tag]},`segment-${String(a)}`));return(0,m.jsxs)(p.Fragment,{children:[o,s]},`piece-${String(a)}`)}),D?null:e.slice(E)]})}export{_ as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{B as n,F as r,I as i,O as a,T as o,b as s,j as c,x as l}from"./query-client-CA-do_IS.js";var u=class extends n{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),r(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&a(t.mutationKey)!==a(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??l();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){o.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},d=e(t(),1);function f(e,t){let n=s(t),[r]=d.useState(()=>new u(n,e));d.useEffect(()=>{r.setOptions(e)},[r,e]);let a=d.useSyncExternalStore(d.useCallback(e=>r.subscribe(o.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),l=d.useCallback((e,t)=>{r.mutate(e,t).catch(c)},[r]);if(a.error&&i(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:l,mutateAsync:a.mutate}}var p=`birdclaw:selected-account-id`,m=`birdclaw-account-change`;function h(e){if(e?.length)return e.find(e=>e.isDefault)?.id??e[0]?.id}function g(){if(!(typeof window>`u`))return window.localStorage.getItem(p)??void 0}function _(e){typeof window>`u`||(window.localStorage.setItem(p,e),window.dispatchEvent(new CustomEvent(m,{detail:{accountId:e}})))}function v(e){let t=(0,d.useMemo)(()=>h(e),[e]),[n,r]=(0,d.useState)(()=>g());return(0,d.useEffect)(()=>{let e=e=>{r(e.detail?.accountId??g())},t=()=>r(g());return window.addEventListener(m,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(m,e),window.removeEventListener(`storage`,t)}},[]),(0,d.useEffect)(()=>{if(!e?.length||!t)return;let n=g();n&&e.some(e=>e.id===n)||(_(t),r(t))},[e,t]),n&&e?.some(e=>e.id===n)?n:t}export{f as i,_ as n,v as r,h as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/blocks-C84MpzHq.js","assets/rolldown-runtime-B-9mzPXz.js","assets/react-BwGzW7mM.js","assets/schemas-CMQMhQXI.js","assets/query-client-CA-do_IS.js","assets/useQuery-CL_NXLnc.js","assets/AvatarChip-DsHj3LT7.js","assets/route-search-CmZT7pGD.js","assets/useDebouncedValue-BJLRInUq.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import"./rolldown-runtime-B-9mzPXz.js";import{t as e}from"./react-BwGzW7mM.js";import{n as t,t as n}from"./lazyRouteComponent-CLLbUvMd.js";import{Rn as r}from"./schemas-CMQMhQXI.js";import"./query-client-CA-do_IS.js";import"./AvatarChip-DsHj3LT7.js";import{t as i}from"./route-search-CmZT7pGD.js";import{n as a,t as o}from"./preload-helper-MpqUbZCn.js";import"./useDebouncedValue-BJLRInUq.js";r(),e(),a();var s=t(`/blocks`)({component:n(()=>o(()=>import(`./blocks-C84MpzHq.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),`component`),validateSearch:i});export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{An as n,C as r,Ft as i,Gt as a,Kt as ee,M as o,Mn as te,N as s,Rn as c,S as l,Tn as u,Ut as d,Wt as f,Xt as p,cn as m,dt as h,jn as ne,pn as re,ut as g}from"./schemas-CMQMhQXI.js";import{A as _,a as v,b as y,n as b,r as ie,s as x,u as ae}from"./query-client-CA-do_IS.js";import{t as S}from"./useQuery-CL_NXLnc.js";import{r as C,t as w}from"./AvatarChip-DsHj3LT7.js";import{t as T}from"./route-search-CmZT7pGD.js";import{t as E}from"./useDebouncedValue-BJLRInUq.js";import{t as D}from"./blocks-BpjvGwYq.js";var O=e(t()),k=c();function A(){let e=D.useSearch(),t=D.useNavigate();return(0,k.jsx)(j,{searchState:e,onSearchChange:(e,n)=>void t({search:e,replace:n?.replace})})}function j({searchState:e,onSearchChange:t}={}){let c=y(),[D,A]=(0,O.useState)(()=>T({})),j=e??D,M=(e,n)=>t?t(e,n):A(e),N=j.account,P=j.q,[F,I]=(0,O.useState)(!1),[L,R]=(0,O.useState)(``),[z,B]=(0,O.useState)(``),V=S({queryKey:b.status,queryFn:({signal:e})=>v({signal:e})}),H=V.data??null,U=E(P,180),W=N.trim().length>0,G=!!H,K=S({queryKey:[...b.blocks,{accountId:N,search:U}],enabled:W,queryFn:async({signal:e})=>{let t=new URLSearchParams({account:N,limit:`12`});return U.trim()&&t.set(`search`,U.trim()),ie(`/api/blocks?${t.toString()}`,{signal:e},ae,`Blocklist request failed`)},placeholderData:_,staleTime:5*6e4}),q=K.data?.items??[],J=K.data?.matches??[],Y=S({queryKey:[...b.blockSync,N],enabled:W,retry:!1,queryFn:async()=>{let e=await x({kind:`syncBlocks`,accountId:N});if(e.ok===!1||e.transport?.ok===!1)throw Error(e.transport?.output??`Block sync failed`);return await c.invalidateQueries({queryKey:b.blocks}),e},staleTime:5*6e4}),X=Y.isFetching,Z=V.error??K.error??Y.error??null,Q=z||(Z instanceof Error?Z.message:Z?`Unable to load blocklist`:``);(0,O.useEffect)(()=>{H?.accounts.length&&(H.accounts.some(e=>e.id===N)||M({...j,account:H.accounts[0]?.id??`acct_primary`},{replace:!0}))},[N,H]),(0,O.useEffect)(()=>{let e=Y.data;!e||e.transport?.output?.includes(`disabled`)||R(e.transport?.output??`Synced ${String(e.syncedCount??0)} remote blocks`)},[Y.data]);let oe=(0,O.useMemo)(()=>H?X?`Syncing remote blocklist · ${H.transport.statusText}`:`${String(q.length)} blocked profiles · ${H.transport.statusText}`:q.length>0?`${String(q.length)} blocked profiles · loading transport...`:`Loading local blocklist...`,[X,q.length,H]);async function $(e,t){let n=t.trim();if(n){I(!0),B(``),R(``);try{let t=await x({kind:e,accountId:N,query:n});if(t.ok===!1||t.transport?.ok===!1){B(t.transport?.output??`Blocklist action failed`);return}R(`${e===`blockProfile`?`Blocked`:`Unblocked`} @${t.profile?.handle??n.replace(/^@/,``)} · ${t.transport?.output??`local`}`),await c.invalidateQueries({queryKey:b.blocks})}catch(e){B(e instanceof Error?e.message:`Blocklist action failed`)}finally{I(!1)}}}return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`header`,{className:d,children:[(0,k.jsx)(`div`,{className:f,children:(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,k.jsx)(`h1`,{className:ee,children:`Blocks`}),(0,k.jsx)(`h2`,{className:o(a,`text-[14px]`),children:`Maintain a clean blocklist locally.`}),(0,k.jsx)(`p`,{className:a,children:oe})]})}),(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 px-4 pb-3`,children:[(0,k.jsx)(`select`,{className:o(re,ne),disabled:!G,onChange:e=>M({...j,account:e.target.value}),value:N,children:H?.accounts.map(e=>(0,k.jsx)(`option`,{value:e.id,children:e.handle},e.id))}),(0,k.jsx)(`input`,{className:o(n,`flex-1 min-w-[200px]`),disabled:!W,onChange:e=>M({...j,q:e.target.value},{replace:!0}),placeholder:`Handle, name, bio, or Twitter URL`,value:P}),(0,k.jsx)(`button`,{className:p,disabled:!W||F||!P.trim(),onClick:()=>void $(`blockProfile`,P),type:`button`,children:F?`Working...`:`Block`})]})]}),L?(0,k.jsx)(`p`,{className:u,children:L}):null,Q?(0,k.jsx)(`p`,{className:h,children:Q}):null,J.length>0?(0,k.jsxs)(`section`,{className:`flex flex-col`,children:[(0,k.jsx)(`h2`,{className:`px-4 pt-3 pb-1 text-[13px] font-semibold uppercase tracking-wide text-[var(--ink-soft)]`,children:`Search matches`}),J.map(e=>(0,k.jsxs)(`article`,{className:r,children:[(0,k.jsx)(w,{avatarUrl:e.profile.avatarUrl,hue:e.profile.avatarHue,name:e.profile.displayName,profileId:e.profile.id}),(0,k.jsxs)(`div`,{className:l,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,k.jsx)(`strong`,{className:`truncate text-[15px] text-[var(--ink)]`,children:e.profile.displayName}),(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-[13px] text-[var(--ink-soft)]`,children:[(0,k.jsxs)(`span`,{children:[`@`,e.profile.handle]}),(0,k.jsx)(`span`,{className:i}),(0,k.jsxs)(`span`,{children:[C(e.profile.followersCount),` `,`followers`]})]})]}),(0,k.jsx)(`button`,{className:e.isBlocked?m:s,onClick:()=>void $(e.isBlocked?`unblockProfile`:`blockProfile`,e.profile.id),type:`button`,children:e.isBlocked?`Unblock`:`Block`})]}),(0,k.jsx)(`p`,{className:`text-[14px] leading-[1.4] text-[var(--ink)]`,children:e.profile.bio})]})]},e.profile.id))]}):null,(0,k.jsxs)(`section`,{className:`flex flex-col`,children:[q.length===0&&J.length===0?(0,k.jsx)(`div`,{className:g,children:`No blocks in this account.`}):null,q.map(e=>(0,k.jsxs)(`article`,{className:r,children:[(0,k.jsx)(w,{avatarUrl:e.profile.avatarUrl,hue:e.profile.avatarHue,name:e.profile.displayName,profileId:e.profile.id}),(0,k.jsxs)(`div`,{className:l,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,k.jsx)(`strong`,{className:`truncate text-[15px] text-[var(--ink)]`,children:e.profile.displayName}),(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 text-[13px] text-[var(--ink-soft)]`,children:[(0,k.jsxs)(`span`,{children:[`@`,e.profile.handle]}),(0,k.jsx)(`span`,{className:i}),(0,k.jsx)(`span`,{children:e.accountHandle}),(0,k.jsx)(`span`,{className:i}),(0,k.jsxs)(`span`,{children:[C(e.profile.followersCount),` `,`followers`]})]})]}),(0,k.jsx)(`button`,{className:m,onClick:()=>void $(`unblockProfile`,e.profile.id),type:`button`,children:`Unblock`})]}),e.profile.bio?(0,k.jsx)(`p`,{className:`text-[14px] leading-[1.4] text-[var(--ink)]`,children:e.profile.bio}):null,(0,k.jsxs)(`p`,{className:te,children:[`Blocked `,new Date(e.blockedAt).toLocaleString(),` ·`,` `,e.source]})]})]},e.accountId+e.profile.id))]})]})}export{j as BlocksRouteView,A as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Rn as e}from"./schemas-
|
|
1
|
+
import{Rn as e}from"./schemas-CMQMhQXI.js";import{t}from"./SavedTimelineView-4QYaZ4CU.js";var n=e();function r(){return(0,n.jsx)(t,{eyebrow:`bookmarks`,filter:`bookmarked`,loadingLabel:`Loading bookmarks...`,searchPlaceholder:`Search bookmarks`,title:`Saved threads, receipts, and future rabbit holes.`})}export{r as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]);export{t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Ln as n,M as r,Pn as i,Rn as a,_ as o,a as s,c,d as l,i as u,l as d,m as f,s as p,u as m}from"./schemas-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Ln as n,M as r,Pn as i,Rn as a,_ as o,a as s,c,d as l,i as u,l as d,m as f,s as p,u as m}from"./schemas-CMQMhQXI.js";import{t as h}from"./createLucideIcon-CMLcIxOz.js";import{r as g,t as _}from"./AvatarChip-DsHj3LT7.js";import{i as v,n as y,r as ee,t as b,u as te}from"./ProfilePreview-CaaMHV2N.js";import{t as ne}from"./SmartTimestamp-CXaNLqN7.js";var x=h(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),S=e(t(),1),C=a();function w(e){return e.trim().replace(/^\(/,``).replace(/\)$/,``).replace(/^tweet_/,``)}function T(e){return/^\d{12,25}$/.test(w(e))}function E(e){return Array.from(e.matchAll(/\b(?:tweet_)?[A-Za-z0-9_:-]{3,}\b/g)).map(e=>e[0]).filter(e=>e.startsWith(`tweet_`)||/^\d{12,25}$/.test(e))}function D(e,t){let n=[],r=t;for(;r<e.length;){let t=/^\s+\((?:\s*(?:tweet_[A-Za-z0-9_:-]+|\d{12,25})\s*,?)+\)/.exec(e.slice(r));if(!t)break;n.push(...E(t[0])),r+=t[0].length}return{references:n,cursor:r}}function O(e,t={}){let n=0;for(let t of[`. `,`? `,`! `,`; `,`: `]){let r=e.lastIndexOf(t);r>=0&&(n=Math.max(n,r+t.length))}let r=e.length;for(;n<r&&/\s/.test(e[n]??``);)n+=1;for(;r>n&&/\s/.test(e[r-1]??``);)--r;let i=n;for(let t of[`, with `,`, while `,`, and `]){let a=e.lastIndexOf(t,r);if(a>=n){i=a+2;break}}if(t.preferClause!==!1&&(i>n||r-n>140)){for(;i<r&&/\s/.test(e[i]??``);)i+=1;r>i&&(n=i)}return r>n?{start:n,end:r}:null}function re(e){return e.replace(/^[-*]\s+/,``)}function k(e,t){let n=/^((?:\s+source\b)+)(?=\s*(?:[.,;:!?)]|$))/i.exec(e.slice(t));return n?t+n[0].length:t}function ie(e){return e.url||`https://x.com/${e.author}/status/${e.id}`}function A(e){return`https://x.com/i/status/${w(e)}`}function j(e){try{let t=new URL(e);return`${t.protocol}//${t.hostname}${t.pathname}`}catch{return e.split(`?`)[0]??e}}function ae(e,t){try{let n=new URL(e),r=n.hostname.replace(/^www\./,``);return r!==`x.com`&&r!==`twitter.com`?!1:RegExp(`/status/${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}/(?:photo|video)(?:/|$)`).test(n.pathname)}catch{return!1}}function M(e,t,n){if(n.length===0)return e;let r=/(https?:\/\/[^\s]+)\s*$/.exec(e);if(!r)return e;let i=r[1];if(!i)return e;let a=new Set(n.flatMap(e=>e.thumbnailUrl?[e.url,e.thumbnailUrl]:[e.url])),o=j(i),s=[...a].some(e=>j(e)===o),c=(t.entities?.urls??[]).some(e=>e.end>e.start?!1:[...a].some(t=>j(t)===j(e.expandedUrl))),l=(()=>{try{return new URL(i).hostname.replace(/^www\./,``)===`t.co`}catch{return!1}})();return!s&&!ae(i,t.id)&&!(l&&c)?e:e.slice(0,r.index).trimEnd()}function N({items:e}){let t=e.flatMap(e=>{let t=e.type===`image`?v(e.thumbnailUrl??e.url):v(e.thumbnailUrl);return t?[{item:e,url:t}]:[]}).slice(0,4);return t.length===0?null:(0,C.jsx)(`span`,{className:t.length===1?`mt-2 block overflow-hidden rounded-xl border border-[var(--line)] bg-[var(--bg-active)]`:`mt-2 grid grid-cols-2 gap-1.5 overflow-hidden rounded-xl`,children:t.map(({item:e,url:n},r)=>(0,C.jsx)(`img`,{alt:e.altText??`Tweet media ${String(r+1)}`,className:t.length===1?`block max-h-64 w-full object-contain`:`block aspect-square size-full rounded-lg border border-[var(--line)] object-cover`,decoding:`async`,src:n},`${n}-${String(r)}`))})}function P({children:e,href:t,onClick:n,describedBy:r}){return(0,C.jsx)(`a`,{"aria-describedby":r,className:`rounded-sm px-0.5 text-[var(--accent)] hover:bg-[var(--accent-soft)] hover:no-underline`,href:t,onClick:n,rel:`noreferrer`,target:`_blank`,children:e})}function F({tweet:e,children:t}){let n=y();ee(n.referenceRef,e.authorProfile.id,e.authorProfile.avatarUrl);let r=e.entities?.article,i=e.media??[],a=te(e.text,e.entities??{}),o=r?[r.title,r.previewText].filter((e,t,n)=>!!e&&n.indexOf(e)===t).join(`
|
|
2
2
|
|
|
3
3
|
`):M(a,e,i);return(0,C.jsxs)(`span`,{ref:n.referenceRef,className:`inline align-baseline`,...n.referenceProps,children:[(0,C.jsx)(P,{describedBy:n.open?n.floatingId:void 0,href:ie(e),onClick:e=>{n.closePreview(),e.currentTarget.blur()},children:t}),n.open?(0,C.jsx)(`span`,{id:n.floatingId,ref:n.floatingRef,className:`fixed z-40 w-[360px] overflow-y-auto rounded-2xl border border-[var(--line)] bg-[var(--bg-elevated)] p-3 text-left text-[14px] leading-[1.4] text-[var(--ink)] shadow-[0_14px_40px_var(--shadow-strong)]`,role:`tooltip`,style:n.floatingStyle,...n.floatingProps,children:(0,C.jsxs)(`span`,{className:`block`,"data-floating-preview-content":!0,children:[(0,C.jsxs)(`span`,{className:`mb-2 flex items-center gap-2`,children:[(0,C.jsx)(_,{avatarUrl:e.authorProfile.avatarUrl,hue:e.authorProfile.avatarHue,name:e.name,profileId:e.authorProfile.id,size:`small`}),(0,C.jsxs)(`span`,{className:`min-w-0`,children:[(0,C.jsx)(`span`,{className:`block truncate font-bold`,children:e.name}),(0,C.jsxs)(`span`,{className:`block truncate text-[12px] text-[var(--ink-soft)]`,children:[`@`,e.author,` · `,(0,C.jsx)(ne,{value:e.createdAt})]})]})]}),(0,C.jsx)(`span`,{className:`whitespace-pre-wrap [overflow-wrap:anywhere]`,children:o}),(0,C.jsx)(N,{items:i}),(0,C.jsxs)(`span`,{className:`mt-2 flex gap-3 text-[12px] text-[var(--ink-soft)]`,children:[(0,C.jsx)(`span`,{children:e.source}),e.likeCount>0?(0,C.jsxs)(`span`,{children:[g(e.likeCount),` likes`]}):null,e.needsReply?(0,C.jsx)(`span`,{children:`reply open`}):null]})]})}):null]})}function oe(e,t){return e.slice(1).flatMap((e,n)=>[n===0?` `:`, `,(0,C.jsx)(P,{href:A(e),children:`source ${String(n+2)}`},`${t}-direct-source-${String(n+2)}`)])}function I(e,t){if(t<2)return null;let n=Array.from(e.matchAll(/,\s+and\s+|,\s+or\s+|;\s+|,\s+|\s+and\s+|\s+or\s+/g));if(n.length<t-1)return null;let r=n.slice(-(t-1)),i=[],a=0;for(let t of r){let n=t.index;if(n===void 0)return null;let r=e.slice(a,n);if(!r.trim())return null;i.push({text:r,separatorAfter:t[0]}),a=n+t[0].length}let o=e.slice(a);return o.trim()?(i.push({text:o,separatorAfter:``}),i.length===t?i:null):null}function se(e,t,n){let r=I(e,t.length);if(!r){let r=t[0];return r?[(0,C.jsx)(F,{tweet:r,children:e},n),...L(t,n)]:[]}return r.flatMap((e,r)=>{let i=t[r];return i?[(0,C.jsx)(F,{tweet:i,children:e.text},`${n}-part-${String(r)}`),e.separatorAfter]:[]})}function ce(e,t,n){let r=I(e,t.length);if(!r){let r=t[0];return r?[(0,C.jsx)(P,{href:A(r),children:e},n),...oe(t,n)]:[]}return r.flatMap((e,r)=>{let i=t[r];return i?[(0,C.jsx)(P,{href:A(i),children:e.text},`${n}-direct-part-${String(r)}`),e.separatorAfter]:[]})}function L(e,t){return e.slice(1).flatMap((e,n)=>[n===0?` `:`, `,(0,C.jsx)(F,{tweet:e,children:`source ${String(n+2)}`},`${t}-source-${String(n+2)}`)])}function R(e,t){return e.flatMap((n,r)=>[r===0?``:`, `,(0,C.jsx)(F,{tweet:n,children:e.length===1?`source`:`source ${String(r+1)}`},`${t}-fallback-${String(r+1)}`)])}function z(e,t,n){let r=t[0];if(!r)return!1;let i=e.at(-1);if(typeof i!=`string`)return!1;let a=/(["“][^"”]+["”])(\s*)$/.exec(i);if(a){let o=a[1],s=a[2]??``,c=i.slice(0,a.index);return e[e.length-1]=c,e.push((0,C.jsx)(F,{tweet:r,children:o},n),...L(t,n),/^\s*$/.test(s)?``:s),!0}let o=O(i,{preferClause:t.length===1});if(!o)return!1;let s=i.slice(0,o.start),c=i.slice(o.start,o.end),l=i.slice(o.end);return e[e.length-1]=s,e.push(...se(c,t,n),/^\s*$/.test(l)?``:l),!0}function B(e,t,n){if(!t[0])return!1;let r=e.at(-1);if(typeof r!=`string`)return!1;let i=O(r,{preferClause:t.length===1});if(!i)return!1;let a=r.slice(0,i.start),o=r.slice(i.start,i.end),s=r.slice(i.end);return e[e.length-1]=a,e.push(...ce(o,t,n),/^\s*$/.test(s)?``:s),!0}function V(e,t){let r=/(\[[^\]\n]+\]\s*\(https?:\/\/[^\s)]+\)|\*\*[^*]+\*\*|@[A-Za-z0-9_]{1,20}|\((?:\s*(?:tweet_[A-Za-z0-9_:-]+|\d{12,25})\s*,?)+\)|\btweet_[A-Za-z0-9_:-]+\b|\b\d{12,25}\b)/g,a=[],o=0,s;for(;s=r.exec(e);){let c=s[0],l=`${c}-${String(s.index)}`;if(s.index>o&&a.push(e.slice(o,s.index)),o=s.index+c.length,c.startsWith(`**`)&&c.endsWith(`**`)){a.push((0,C.jsx)(`strong`,{children:c.slice(2,-2)},l));continue}let u=/^\[([^\]\n]+)\]\s*\((https?:\/\/[^\s)]+)\)$/.exec(c);if(u){let e=v(u[2]);a.push(e?(0,C.jsx)(`a`,{className:i,href:e,rel:`noreferrer`,target:`_blank`,children:u[1]},l):u[1]);continue}if(c.startsWith(`@`)){let e=t.profilesByHandle.get(c.slice(1).toLowerCase());a.push(e?(0,C.jsx)(b,{profile:e,children:(0,C.jsx)(`span`,{className:n,children:c})},l):(0,C.jsx)(`a`,{className:n,href:`/profiles/${encodeURIComponent(c.slice(1))}`,children:c},l));continue}let d=c.startsWith(`(`)&&c.endsWith(`)`),f=E(c);if(d){let t=D(e,o),n=[...f,...t.references];t.references.length>0&&n.every(T)&&(f=n,o=t.cursor,r.lastIndex=o)}let p=f.map(e=>t.tweetsById.get(w(e))),m=f.length>0&&p.every(Boolean),h=p.filter(e=>!!e),g=h[0];if(d&&f.length>1&&!m){if(f.every(T)){let t=k(e,o);if(B(a,f,l)){o=t;continue}a.push(...f.flatMap((e,t)=>[t===0?``:`, `,(0,C.jsx)(P,{href:A(e),children:`source ${String(t+1)}`},`${l}-direct-${String(t)}`)])),o=t;continue}a.push(c);continue}if(g&&d&&m&&z(a,h,l)){o=k(e,o);continue}if(g&&d&&m){a.push(...R(h,l)),o=k(e,o);continue}if(g)a.push((0,C.jsx)(F,{tweet:g,children:d?`source`:c},l));else if(d&&f.length===1&&T(f[0]??``)){let t=k(e,o);if(B(a,f,l)){o=t;continue}a.push((0,C.jsx)(P,{href:A(f[0]),children:`source`},`${l}-direct`)),o=t;continue}else a.push(c)}return o<e.length&&a.push(e.slice(o)),a.map((e,t)=>(0,C.jsx)(S.Fragment,{children:e},typeof e==`string`?`${e}-${String(t)}`:t))}function H(e){return`conversations`in e&&`profile`in e}function U(e,t,n){let r=w(n.id);e.set(r,n),e.set(`tweet_${r}`,n),t.set(n.author.toLowerCase(),n.authorProfile)}function W(e){return{id:e.profileId,handle:e.author,displayName:e.name||e.author,bio:e.bio,followersCount:e.followersCount,avatarHue:210,avatarUrl:e.avatarUrl,createdAt:e.createdAt}}function le(e,t){return{id:e.id,url:e.url,source:`authored`,author:t.handle,name:t.displayName,authorProfile:t,createdAt:e.createdAt,text:e.text,entities:e.entities,likeCount:e.likeCount,liked:!1,bookmarked:!1,needsReply:!1,media:[]}}function G(e){let t=W(e);return{id:e.id,url:e.url,source:`mentions`,author:e.author,name:e.name||e.author,authorProfile:t,createdAt:e.createdAt,text:e.text,entities:e.entities,likeCount:e.likeCount,liked:!1,bookmarked:!1,needsReply:!1,media:[]}}function ue(e){let t=new Map,n=new Map;if(!e)return{tweetsById:t,profilesByHandle:n};if(H(e)){n.set(e.profile.handle.toLowerCase(),e.profile);for(let t of e.profiles??[])n.set(t.handle.toLowerCase(),t);for(let r of e.tweets)U(t,n,le(r,e.profile));for(let r of e.conversations)U(t,n,G(r));return{tweetsById:t,profilesByHandle:n}}for(let r of e.tweets)U(t,n,r);return{tweetsById:t,profilesByHandle:n}}function de({markdown:e,context:t,className:n}){let i=ue(t),a=e.replace(/\]\s*\r?\n\s*\((https?:\/\/[^\s)]+)\)/g,`]($1)`).split(/\r?\n/),o=[],s=[],c=()=>{s.length!==0&&(o.push((0,C.jsx)(`ul`,{className:`my-2.5 flex list-disc flex-col gap-1.5 pl-5 first:mt-0 marker:text-[var(--ink-soft)]`,children:s.map((e,t)=>(0,C.jsx)(`li`,{children:e},String(t)))},`list-${String(o.length)}`)),s=[])};for(let e of a){let t=e.trim();if(!t){c();continue}if(t.startsWith(`### `)){c(),o.push((0,C.jsx)(`h3`,{className:`mt-5 mb-1.5 text-[14px] font-bold uppercase tracking-wide text-[var(--ink-soft)] first:mt-0`,children:V(t.slice(4),i)},`h3-${String(o.length)}`));continue}if(t.startsWith(`## `)){c(),o.push((0,C.jsx)(`h2`,{className:`mt-6 mb-2 text-[18px] font-bold text-[var(--ink)] first:mt-0`,children:V(t.slice(3),i)},`h2-${String(o.length)}`));continue}if(t.startsWith(`# `)){c(),o.push((0,C.jsx)(`h1`,{className:`mt-0 mb-2.5 text-[20px] font-bold text-[var(--ink)]`,children:V(t.slice(2),i)},`h1-${String(o.length)}`));continue}if(/^[-*]\s+/.test(t)){s.push(V(re(t),i));continue}c(),o.push((0,C.jsx)(`p`,{className:`my-2.5 whitespace-pre-wrap first:mt-0 [overflow-wrap:anywhere]`,children:V(t,i)},`p-${String(o.length)}`))}return c(),(0,C.jsx)(`article`,{className:r(`max-w-none px-4 py-3 text-[15px] leading-[1.55] text-[var(--ink)]`,n),children:o})}async function fe(e,{label:t,statusMessages:n}){let r=n?.[e.status];if(r)return Error(r);let i=`${String(e.status)}${e.statusText?` ${e.statusText}`:``}`,a=``;try{if((e.headers.get(`content-type`)??``).includes(`application/json`)){let t=await e.json();if(t&&typeof t==`object`){let e=t;typeof e.message==`string`?a=e.message:typeof e.error==`string`&&(a=e.error)}}else a=(await e.text()).trim()}catch{a=``}return Error(a?`${t} (${i}): ${a}`:`${t} (${i})`)}function K(e){return e.reason instanceof Error?e.reason:new DOMException(`The operation was aborted`,`AbortError`)}async function pe(e,t){if(!t)return e.read();if(t.aborted)throw K(t);return new Promise((n,r)=>{let i=()=>{e.cancel(t.reason).catch(()=>void 0),r(K(t))};t.addEventListener(`abort`,i,{once:!0}),e.read().then(n,r).finally(()=>{t.removeEventListener(`abort`,i)})})}async function me({body:e,schema:t,onEvent:n,isTerminal:r=()=>!1,signal:i,prematureEofError:a=()=>Error(`Stream closed before a terminal event was received`)}){let o=e.getReader(),s=new TextDecoder,c=``,l=!1,u=async e=>{let i=e.trim();if(!i)return;let a=t.parse(JSON.parse(i));await n(a),r(a)&&(l=!0)};try{for(;;){let{done:e,value:t}=await pe(o,i);if(e)break;c+=s.decode(t,{stream:!0});let n=c.indexOf(`
|
|
4
4
|
`);for(;n>=0;)await u(c.slice(0,n)),c=c.slice(n+1),n=c.indexOf(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Gt as n,Ht as r,Kt as i,M as a,Rn as o,Tn as s,Ut as c,Wt as l,cn as u,dt as d}from"./schemas-CMQMhQXI.js";import{t as f}from"./createLucideIcon-CMLcIxOz.js";import{t as p}from"./circle-check-BCK_qvXt.js";import{t as m}from"./database-Dl3XWRaa.js";import{t as h}from"./refresh-cw-IUfM9D_1.js";import{t as g}from"./triangle-alert-DJPCW6jQ.js";import{h as _,n as v,r as y}from"./query-client-CA-do_IS.js";import{t as b}from"./useQuery-CL_NXLnc.js";var x=f(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),S=f(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),C=f(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),w=e(t()),T=o();async function E(){return y(`/api/data-sources`,void 0,_,`Data source status failed`)}function D(e){return e===`birdclaw`?m:e===`bird`?C:S}function O(e){return e===`ok`?`border-[color:color-mix(in_srgb,#22c55e_45%,var(--line))] bg-[color:color-mix(in_srgb,#22c55e_10%,var(--bg))] text-[color:color-mix(in_srgb,#22c55e_82%,var(--ink))]`:e===`warning`?`border-[color:color-mix(in_srgb,#f59e0b_50%,var(--line))] bg-[color:color-mix(in_srgb,#f59e0b_12%,var(--bg))] text-[color:color-mix(in_srgb,#f59e0b_82%,var(--ink))]`:`border-[color:color-mix(in_srgb,var(--alert)_55%,var(--line))] bg-[var(--alert-soft)] text-[var(--alert)]`}function k(e){return e===`ok`?p:e===`warning`?g:x}function A(e){return e===`birdclaw`?`local`:e}function j({source:e}){let t=D(e.source),n=k(e.status);return(0,T.jsxs)(`section`,{className:`min-w-0 border-b border-[var(--line)] px-4 py-4`,children:[(0,T.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,T.jsx)(`div`,{className:`grid size-10 shrink-0 place-items-center rounded-md border border-[var(--line)] bg-[var(--bg-active)] text-[var(--ink)]`,children:(0,T.jsx)(t,{className:`size-5`,strokeWidth:1.9})}),(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`h2`,{className:`truncate text-[16px] font-bold text-[var(--ink)]`,children:e.label}),(0,T.jsx)(`p`,{className:`truncate text-[13px] text-[var(--ink-soft)]`,children:e.installed===!1?`not installed`:e.detail})]})]}),(0,T.jsxs)(`span`,{className:a(`inline-flex shrink-0 items-center gap-1 rounded-full border px-2 py-0.5 text-[12px] font-bold`,O(e.status)),children:[(0,T.jsx)(n,{className:`size-3.5`,strokeWidth:2}),e.works?`works`:e.status]})]}),(0,T.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:e.accounts.length>0?e.accounts.map((e,t)=>(0,T.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-1.5 rounded-full border border-[var(--line)] bg-[var(--bg)] px-2.5 py-1 text-[12px] font-semibold text-[var(--ink-soft)]`,children:[e.app?(0,T.jsx)(`span`,{className:`text-[var(--ink-faint)]`,children:e.app}):null,(0,T.jsx)(`span`,{className:`truncate`,children:e.handle??(e.username?`@${e.username}`:e.id)}),e.isDefault?(0,T.jsx)(`span`,{className:`text-[var(--accent)]`,children:`default`}):null]},`${e.app??``}:${e.username??e.handle??e.id??String(t)}`)):(0,T.jsx)(`span`,{className:`text-[13px] text-[var(--ink-soft)]`,children:`no authenticated account detected`})})]})}function M({capability:e,sourcesByKind:t}){let n=[e.primary,...e.fallbacks];return(0,T.jsxs)(`div`,{className:`grid gap-3 border-b border-[var(--line)] px-4 py-4 min-[840px]:grid-cols-[220px_minmax(0,1fr)]`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`div`,{className:`font-bold text-[var(--ink)]`,children:e.label}),e.notes?(0,T.jsx)(`div`,{className:`mt-1 text-[12px] text-[var(--ink-soft)]`,children:e.notes}):null]}),(0,T.jsx)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:n.map((n,r)=>{let i=t.get(n);return(0,T.jsxs)(`div`,{className:a(`inline-flex items-center gap-2 rounded-full border px-3 py-1 text-[13px] font-semibold`,i?.works?`border-[color:color-mix(in_srgb,#22c55e_38%,var(--line))] text-[var(--ink)]`:`border-[var(--line)] text-[var(--ink-soft)]`),children:[(0,T.jsx)(`span`,{className:`text-[12px] text-[var(--ink-faint)]`,children:r===0?`primary`:`fallback ${String(r)}`}),(0,T.jsx)(`span`,{children:A(n)})]},`${e.key}:${n}:${String(r)}`)})})]})}function N(){let e=b({queryKey:v.dataSources,queryFn:E,staleTime:5*6e4}),t=e.data??null,o=e.isFetching,f=e.error,p=(0,w.useMemo)(()=>new Map((t?.sources??[]).map(e=>[e.source,e])),[t]);return(0,T.jsxs)(`section`,{className:`flex min-h-screen flex-col`,children:[(0,T.jsx)(`header`,{className:c,children:(0,T.jsxs)(`div`,{className:l,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h1`,{className:i,children:`Data Sources`}),(0,T.jsx)(`p`,{className:n,children:`Live auth, local archive, and automatic fallback order`})]}),(0,T.jsx)(`div`,{className:r,children:(0,T.jsxs)(`button`,{className:u,type:`button`,onClick:()=>void e.refetch(),disabled:o,children:[(0,T.jsx)(h,{className:a(`size-4`,o&&`animate-spin`)}),`Refresh`]})})]})}),f?(0,T.jsx)(`div`,{className:d,children:f instanceof Error?f.message:`Data sources unavailable`}):null,t?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`grid border-t border-[var(--line)]`,children:t.sources.map(e=>(0,T.jsx)(j,{source:e},e.source))}),(0,T.jsxs)(`section`,{className:`min-h-0 flex-1`,children:[(0,T.jsxs)(`header`,{className:`border-b border-[var(--line)] px-4 py-3`,children:[(0,T.jsx)(`h2`,{className:`text-[16px] font-bold text-[var(--ink)]`,children:`Fallbacks`}),(0,T.jsx)(`p`,{className:`text-[13px] text-[var(--ink-soft)]`,children:`Calls try the next source when the current source cannot serve the request.`})]}),t.capabilities.map(e=>(0,T.jsx)(M,{capability:e,sourcesByKind:p},e.key))]})]}):o?(0,T.jsx)(`div`,{className:s,children:`Checking data sources...`}):null]})}export{N as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{An as n,Gt as r,Ht as i,Kt as a,M as o,Rn as s,Ut as c,Wt as l,Xt as u,an as d,cn as f,dt as p,on as m,pn as h,sn as g}from"./schemas-CMQMhQXI.js";import{t as _}from"./chevron-down-e-c5H12y.js";import{t as v}from"./circle-check-BCK_qvXt.js";import{a as y,i as b,o as x,s as S,t as C}from"./client-stream-contracts-CNz2FSrQ.js";import{t as w}from"./refresh-cw-IUfM9D_1.js";import{t as T}from"./search-C_LqodNa.js";import{t as E}from"./sparkles-Gx_BHkDX.js";import{n as D}from"./route-search-CmZT7pGD.js";import{t as O}from"./discuss-DKC6H1fN.js";var k=e(t()),A=s(),j=[{value:`search`,label:`Live search`},{value:`all`,label:`All local`},{value:`home`,label:`Home`},{value:`mentions`,label:`Mentions`},{value:`authored`,label:`Authored`},{value:`likes`,label:`Likes`},{value:`bookmarks`,label:`Bookmarks`}],M=[{value:`auto`,label:`Auto`},{value:`bird`,label:`Bird`},{value:`xurl`,label:`xurl`},{value:`local`,label:`Local`}],N=2e4,P=200;function F(){return Error(`Discussion connection closed before completion. Retry to continue.`)}function I(e){return e instanceof Error?e.message:`Discussion failed`}function L(e,t){let n=new URL(`/api/search-discussion`,window.location.origin);return n.searchParams.set(`query`,e),n.searchParams.set(`source`,t.source),n.searchParams.set(`mode`,t.mode),n.searchParams.set(`includeDms`,String(t.includeDms)),n.searchParams.set(`limit`,String(N)),n.searchParams.set(`maxPages`,String(P)),t.question.trim()&&n.searchParams.set(`question`,t.question.trim()),t.refresh&&n.searchParams.set(`refresh`,`true`),n}function R({label:e,value:t,options:n,onChange:r}){return(0,A.jsxs)(`label`,{className:`relative min-w-0`,children:[(0,A.jsx)(`span`,{className:`pointer-events-none absolute left-3 top-1.5 z-10 text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--ink-soft)]`,children:e}),(0,A.jsx)(`select`,{"aria-label":e,className:o(h,`h-[54px] rounded-2xl bg-[var(--bg)] pb-1 pl-3 pr-9 pt-5 font-semibold text-[var(--ink)]`),value:t,onChange:e=>r(e.currentTarget.value),children:n.map(e=>(0,A.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,A.jsx)(_,{"aria-hidden":`true`,className:`pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-[var(--ink-soft)]`,strokeWidth:2})]})}function z(e){if(!e)return`Live keyword search with local memory.`;let t=e.counts;return[e.liveSearch?e.liveSearch.ok?`${e.liveSearch.source} ${String(e.liveSearch.count)} fetched`:`${e.liveSearch.source} failed`:`local`,`${String(t.search)} search`,`${String(t.home+t.mentions+t.authored)} timeline`,`${String(t.likes+t.bookmarks)} saved`,e.includeDms?`${String(t.dms)} DMs`:null].filter(Boolean).join(` · `)}function B(e,t,n,r,i){let[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(null),[l,u]=(0,k.useState)(null),d=(0,k.useCallback)(()=>{o(``),c(null),u(null)},[]),{error:f,loading:p,run:m}=y({schema:b,request:(0,k.useCallback)((a,o)=>{let s=e.trim();return fetch(L(s,{source:t,mode:n,includeDms:r,question:i,refresh:o}),{signal:a})},[r,n,e,i,t]),onStart:d,onEvent:(0,k.useCallback)(e=>{if(e.type===`start`)c(e.context);else if(e.type===`delta`)o(t=>t+e.delta);else if(e.type===`done`)u(e.result),c(e.result.context),o(e.result.markdown);else if(e.type===`error`)throw Error(e.error)},[]),isTerminal:C,errorLabel:`Discussion request failed`,emptyBodyMessage:`Discussion request failed: empty response body`,prematureEofError:F,formatError:I});return{context:s,error:f,loading:p,markdown:a,result:l,run:(0,k.useCallback)((t=!1)=>{e.trim()&&m(t)},[e,m])}}function V(){let e=O.useSearch(),t=O.useNavigate();return(0,A.jsx)(H,{searchState:e,onSearchChange:(e,n)=>void t({search:e,replace:n?.replace})})}function H({searchState:e,onSearchChange:t}={}){let[s,h]=(0,k.useState)(()=>D({})),_=e??s,y=(e,n)=>t?t(e,n):h(e),{q:b,question:C,source:O,mode:N,includeDms:P}=_,[F,I]=(0,k.useState)(``),L=(0,k.useRef)(!1),{context:V,error:H,loading:U,markdown:W,result:G,run:K}=B(F,O,N,P,C),q=(0,k.useMemo)(()=>z(G?.context??V),[V,G]);function J(e){e.preventDefault();let t=b.trim();t&&(L.current=!0,I(t),t===F&&(L.current=!1,K(!1)))}return(0,k.useEffect)(()=>{!F||!L.current||(L.current=!1,K(!1))},[K,F]),(0,A.jsxs)(`div`,{className:`flex min-h-screen flex-col`,children:[(0,A.jsxs)(`header`,{className:c,children:[(0,A.jsxs)(`div`,{className:l,children:[(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsx)(`h1`,{className:a,children:`Discuss`}),(0,A.jsx)(`p`,{className:r,children:q})]}),(0,A.jsx)(`div`,{className:i,children:(0,A.jsxs)(`button`,{type:`button`,className:f,onClick:()=>K(!0),disabled:U||!F,children:[(0,A.jsx)(w,{className:o(`size-4`,U&&`animate-spin`),"aria-hidden":`true`}),`Refresh`]})})]}),(0,A.jsxs)(`form`,{className:`grid gap-2 px-4 pb-3 md:grid-cols-[minmax(220px,1fr)_minmax(180px,0.8fr)_auto]`,onSubmit:J,children:[(0,A.jsxs)(`label`,{className:g,children:[(0,A.jsx)(T,{className:d,strokeWidth:2}),(0,A.jsx)(`input`,{className:m,placeholder:`Keywords`,value:b,onChange:e=>y({..._,q:e.currentTarget.value},{replace:!0})})]}),(0,A.jsx)(`input`,{className:n,placeholder:`Optional question`,value:C,onChange:e=>y({..._,question:e.currentTarget.value},{replace:!0})}),(0,A.jsxs)(`button`,{type:`submit`,className:u,disabled:U||!b.trim(),children:[(0,A.jsx)(E,{className:`size-4`,"aria-hidden":`true`}),`Discuss`]}),(0,A.jsxs)(`div`,{className:`grid gap-2 md:col-span-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]`,children:[(0,A.jsx)(R,{label:`Source`,options:j,value:O,onChange:e=>y({..._,source:e})}),(0,A.jsx)(R,{label:`Mode`,options:M,value:N,onChange:e=>y({..._,mode:e})}),(0,A.jsxs)(`label`,{className:`inline-flex h-[54px] items-center gap-2 rounded-2xl border border-[var(--line)] bg-[var(--bg)] px-3 text-[13px] font-medium text-[var(--ink-soft)]`,children:[(0,A.jsx)(`input`,{type:`checkbox`,checked:P,onChange:e=>y({..._,includeDms:e.currentTarget.checked})}),`DMs`]})]})]})]}),H?(0,A.jsx)(`div`,{className:p,children:H}):null,(0,A.jsx)(`div`,{className:`border-b border-[var(--line)] px-4 py-2 text-[13px] text-[var(--ink-soft)]`,children:(0,A.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[U?(0,A.jsx)(S,{className:`size-4 animate-spin`,"aria-hidden":`true`}):W?(0,A.jsx)(v,{className:`size-4`,"aria-hidden":`true`}):(0,A.jsx)(E,{className:`size-4`,"aria-hidden":`true`}),U?`Searching and streaming`:G?`${G.cached?`Cached`:`Ready`} · ${G.context.query}`:`Ready`]})}),W?(0,A.jsx)(x,{context:G?.context??V,markdown:W}):(0,A.jsx)(`div`,{className:`px-4 py-5 text-[14px] text-[var(--ink-soft)]`,children:U?`Waiting for the first tokens...`:`Search to begin.`})]})}export{H as DiscussRouteView,V as component};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/discuss-C0CUMn6v.js","assets/rolldown-runtime-B-9mzPXz.js","assets/react-BwGzW7mM.js","assets/schemas-CMQMhQXI.js","assets/chevron-down-e-c5H12y.js","assets/createLucideIcon-CMLcIxOz.js","assets/circle-check-BCK_qvXt.js","assets/client-stream-contracts-CNz2FSrQ.js","assets/AvatarChip-DsHj3LT7.js","assets/ProfilePreview-CaaMHV2N.js","assets/SmartTimestamp-CXaNLqN7.js","assets/refresh-cw-IUfM9D_1.js","assets/search-C_LqodNa.js","assets/sparkles-Gx_BHkDX.js","assets/route-search-CmZT7pGD.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import"./rolldown-runtime-B-9mzPXz.js";import{t as e}from"./react-BwGzW7mM.js";import{n as t,t as n}from"./lazyRouteComponent-CLLbUvMd.js";import{Rn as r}from"./schemas-CMQMhQXI.js";import"./client-stream-contracts-CNz2FSrQ.js";import{n as i}from"./route-search-CmZT7pGD.js";import{n as a,t as o}from"./preload-helper-MpqUbZCn.js";r(),e(),a();var s=t(`/discuss`)({component:n(()=>o(()=>import(`./discuss-C0CUMn6v.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])),`component`),validateSearch:i});export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{Dn as n,Gt as r,Kt as i,M as a,Mn as o,On as s,Rn as c,Ut as l,Wt as u,an as d,dn as f,fn as p,kn as ee,on as te,sn as ne}from"./schemas-CMQMhQXI.js";import{t as re}from"./search-C_LqodNa.js";import{A as ie,a as ae,b as oe,d as m,n as h,r as g,s as _}from"./query-client-CA-do_IS.js";import{t as v}from"./useQuery-CL_NXLnc.js";import{i as y,r as se}from"./account-selection-h7m9xmzU.js";import{n as ce,r as le,t as ue}from"./FeedState-DhMv4zXD.js";import{r as de}from"./route-search-CmZT7pGD.js";import{n as b,t as x}from"./dms-Q1a1kZ_P.js";import{t as S}from"./SyncNowButton-DDYT2jQT.js";import{t as C}from"./useDebouncedValue-BJLRInUq.js";var w=e(t()),T=c(),E=[{value:`all`,label:`All`},{value:`unreplied`,label:`Unreplied`},{value:`replied`,label:`Replied`}],fe=[{value:`recent`,label:`Newest`},{value:`followers`,label:`Followers`}],pe=[{value:`all`,label:`All`},{value:`accepted`,label:`Accepted`},{value:`requests`,label:`Requests`}],D=`flex h-[46px] shrink-0 items-center gap-2 rounded-md border border-[var(--line)] bg-[var(--bg)] px-3 py-0 text-[14px] text-[var(--ink)] outline-none transition-colors duration-150 focus-within:border-[var(--accent)] focus-within:shadow-[0_0_0_1px_var(--accent)]`;function O(){let e=x.useSearch(),t=x.useNavigate();return(0,T.jsx)(k,{searchState:e,onSearchChange:(e,n)=>void t({search:e,replace:n?.replace})})}function k({searchState:e,onSearchChange:t}={}){let c=oe(),[x,O]=(0,w.useState)(()=>de({})),k=e??x,A=(e,n)=>t?t(e,n):O(e),j=k.inbox,M=k.reply,N=k.minFollowers,P=k.minInfluence,F=k.sort,I=k.q,L=k.conversation||void 0,[R,z]=(0,w.useState)(``),B=v({queryKey:h.status,queryFn:({signal:e})=>ae({signal:e})}).data??null,V=se(B?.accounts),H=C(I,180),U=[...h.dms,{inboxFilter:j,replyFilter:M,minFollowers:N,minInfluenceScore:P,sort:F,search:H,selectedAccountId:V??null,selectedConversationId:L??null}],W=v({queryKey:U,queryFn:({signal:e})=>{let t=new URL(`/api/query`,window.location.origin);return t.searchParams.set(`resource`,`dms`),t.searchParams.set(`inbox`,j),t.searchParams.set(`replyFilter`,M),t.searchParams.set(`sort`,F),N.trim()&&t.searchParams.set(`minFollowers`,N.trim()),P.trim()&&t.searchParams.set(`minInfluenceScore`,P.trim()),V&&j!==`requests`&&t.searchParams.set(`account`,V),L&&t.searchParams.set(`conversationId`,L),H.trim()&&t.searchParams.set(`search`,H.trim()),g(t,{signal:e},m,`Direct messages unavailable`)},placeholderData:ie,staleTime:5*6e4}),G=W.data,K=G?.resource===`dms`?G:null,q=K?.items??[],me=K?.selectedConversation?.messages??[],J=K?.selectedConversation?.conversation.id;(0,w.useEffect)(()=>{if(!W.data)return;let e=J??q[0]?.id,t=L&&q.some(e=>e.id===L)?L:e;t&&t!==L&&A({...k,conversation:t},{replace:!0})},[W.data,q,J]);let Y=q.find(e=>e.id===L)??null,he=!!(!W.isError&&L&&J&&L!==J),X=(0,w.useMemo)(()=>B?`${String(B.stats.dms)} conversations cached locally`:`Loading direct messages...`,[B]),Z=y({mutationFn:({conversationId:e,text:t})=>_({kind:`replyDm`,conversationId:e,text:t}),onMutate:async({conversationId:e,text:t})=>{await c.cancelQueries({queryKey:U});let n=c.getQueryData(U);if(!n||n.resource!==`dms`||!Y)return{previous:n};let r=new Date().toISOString(),i=B?.accounts.find(e=>e.id===Y.accountId),a=(i?.handle??Y.accountHandle).replace(/^@/,``),o={id:`optimistic-${r}`,conversationId:e,text:t,createdAt:r,direction:`outbound`,isReplied:!0,mediaCount:0,sender:{id:`local-${Y.accountId}`,handle:a,displayName:i?.name??a,bio:``,followersCount:0,avatarHue:18,createdAt:r}};return c.setQueryData(U,{...n,items:n.items.map(n=>n.id===e?{...n,lastMessageAt:r,lastMessagePreview:t,needsReply:!1,unreadCount:0}:n),selectedConversation:n.selectedConversation?{...n.selectedConversation,messages:[...n.selectedConversation.messages,o]}:n.selectedConversation}),{previous:n}},onError:(e,t,n)=>{n?.previous&&c.setQueryData(U,n.previous)},onSettled:()=>Promise.all([c.invalidateQueries({queryKey:h.dms}),c.invalidateQueries({queryKey:h.status})])});async function ge(e){let t=R.trim();if(!(!t||!Y)){z(``);try{await Z.mutateAsync({conversationId:e,text:t}),A({...k,conversation:e})}catch{z(t)}}}function _e(){Promise.all([c.invalidateQueries({queryKey:h.dms}),c.invalidateQueries({queryKey:h.status})])}let ve=W.isPending,Q=W.error?W.error instanceof Error?W.error.message:`Messages unavailable`:null,$=Z.error?Z.error instanceof Error?Z.error.message:`Reply failed`:null;return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`header`,{className:l,children:[(0,T.jsxs)(`div`,{className:u,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,T.jsx)(`h1`,{className:i,children:`Messages`}),(0,T.jsx)(`p`,{className:r,children:X})]}),(0,T.jsx)(S,{accounts:B?.accounts,kind:`dms`,label:`Sync DMs`,onSynced:_e,syncOptions:{inbox:j,limit:j===`requests`?200:50,maxPages:j===`requests`?3:1}})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 px-4 pb-3`,children:[(0,T.jsx)(`div`,{className:p,"aria-label":`DM inbox`,children:pe.map(e=>(0,T.jsx)(`button`,{"aria-pressed":j===e.value,className:a(f,j===e.value&&`bg-[var(--bg-active)] text-[var(--ink)]`),onClick:()=>A({...k,inbox:e.value}),type:`button`,children:e.label},e.value))}),(0,T.jsxs)(`label`,{className:a(ne,`flex-1 min-w-[200px]`),children:[(0,T.jsx)(re,{className:d,strokeWidth:2}),(0,T.jsx)(`input`,{className:te,onChange:e=>A({...k,q:e.target.value},{replace:!0}),placeholder:`Search DMs`,value:I})]}),(0,T.jsxs)(`label`,{className:a(D,`w-[156px]`),children:[(0,T.jsx)(`span`,{className:`shrink-0 text-[12px] font-semibold text-[var(--ink-soft)]`,children:`Followers`}),(0,T.jsx)(`input`,{className:`min-w-0 flex-1 border-0 bg-transparent text-right text-[14px] text-[var(--ink)] outline-none placeholder:text-[var(--ink-soft)]`,inputMode:`numeric`,onChange:e=>A({...k,minFollowers:e.target.value},{replace:!0}),placeholder:`Any`,value:N})]}),(0,T.jsxs)(`label`,{className:a(D,`w-[132px]`),children:[(0,T.jsx)(`span`,{className:`shrink-0 text-[12px] font-semibold text-[var(--ink-soft)]`,children:`Score`}),(0,T.jsx)(`input`,{className:`min-w-0 flex-1 border-0 bg-transparent text-right text-[14px] text-[var(--ink)] outline-none placeholder:text-[var(--ink-soft)]`,inputMode:`numeric`,onChange:e=>A({...k,minInfluence:e.target.value},{replace:!0}),placeholder:`Any`,value:P})]}),(0,T.jsx)(`div`,{className:p,children:fe.map(e=>(0,T.jsx)(`button`,{className:a(f,e.value===F&&`bg-[var(--bg-active)] text-[var(--ink)]`),onClick:()=>A({...k,sort:e.value}),type:`button`,children:e.label},e.value))})]}),(0,T.jsx)(`div`,{className:ee,"aria-label":`DM reply filter`,children:E.map(e=>{let t=M===e.value;return(0,T.jsx)(`button`,{type:`button`,"aria-pressed":t,className:a(n,t&&`text-[var(--ink)] font-bold`),onClick:()=>A({...k,reply:e.value}),children:(0,T.jsxs)(`span`,{className:`relative inline-flex flex-col items-center justify-center py-1`,children:[e.value,t?(0,T.jsx)(`span`,{className:s}):null]})},e.value)})})]}),$?(0,T.jsx)(`p`,{className:a(o,`px-4 py-2 text-red-500`),children:$}):null,ve&&q.length===0||he?(0,T.jsx)(le,{detail:`Reading local conversations and reply state`,label:`Loading messages`}):Q?(0,T.jsx)(ce,{action:(0,T.jsx)(`button`,{className:`rounded-full bg-[var(--accent)] px-4 py-1.5 text-[14px] font-bold text-white`,onClick:()=>void W.refetch(),type:`button`,children:`Retry`}),message:Q,title:`Could not load messages`}):q.length===0?(0,T.jsx)(ue,{detail:`Sync DMs or broaden the filters to find a conversation.`,label:`No conversations in this view`}):(0,T.jsx)(b,{conversations:q,onReplyDraftChange:z,onReplySend:ge,onSelectConversation:e=>A({...k,conversation:e}),replyDraft:R,selectedConversation:Y,selectedMessages:me})]})}export{k as DmsRouteView,O as component};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dms-DWA5tvJS.js","assets/rolldown-runtime-B-9mzPXz.js","assets/react-BwGzW7mM.js","assets/schemas-CMQMhQXI.js","assets/search-C_LqodNa.js","assets/createLucideIcon-CMLcIxOz.js","assets/query-client-CA-do_IS.js","assets/useQuery-CL_NXLnc.js","assets/account-selection-h7m9xmzU.js","assets/FeedState-DhMv4zXD.js","assets/route-search-CmZT7pGD.js","assets/SyncNowButton-DDYT2jQT.js","assets/refresh-cw-IUfM9D_1.js","assets/useDebouncedValue-BJLRInUq.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import"./rolldown-runtime-B-9mzPXz.js";import{t as e}from"./react-BwGzW7mM.js";import{n as t,t as n}from"./lazyRouteComponent-CLLbUvMd.js";import{$ as r,A as i,B as a,D as o,E as s,F as c,G as l,H as u,I as d,J as f,Jt as p,K as m,L as h,M as g,Mn as _,P as v,Q as y,R as b,Rn as x,U as S,V as C,W as w,X as T,Xt as E,Yt as D,Z as O,et as k,j as A,k as j,nt as M,q as N,qt as P,tt as F}from"./schemas-CMQMhQXI.js";import{t as I}from"./circle-check-BCK_qvXt.js";import{t as L}from"./circle-DiJUdlek.js";import"./query-client-CA-do_IS.js";import"./account-selection-h7m9xmzU.js";import{r as R,t as z}from"./AvatarChip-DsHj3LT7.js";import{o as B}from"./FeedState-DhMv4zXD.js";import{t as V}from"./SmartTimestamp-CXaNLqN7.js";import{r as H}from"./route-search-CmZT7pGD.js";import{n as U,t as W}from"./preload-helper-MpqUbZCn.js";import"./SyncNowButton-DDYT2jQT.js";import"./useDebouncedValue-BJLRInUq.js";e();var G=x();function K({message:e}){let t=e.direction===`outbound`;return(0,G.jsxs)(`div`,{className:g(f,t&&`self-end items-end`),children:[(0,G.jsx)(`div`,{className:g(w,t?m:l),children:e.text}),(0,G.jsxs)(`div`,{className:N,children:[(0,G.jsx)(`span`,{children:e.sender.displayName}),(0,G.jsx)(`span`,{children:`·`}),(0,G.jsx)(V,{value:e.createdAt})]})]})}function q({conversations:e,selectedConversation:t,selectedMessages:n,onSelectConversation:l,replyDraft:f,onReplyDraftChange:m,onReplySend:x}){let w=t?.participant??null,N=t?t.isMessageRequest?`Message request`:t.needsReply?`Reply open`:`We replied`:null;return(0,G.jsxs)(`section`,{"aria-label":`DM workspace`,className:O,children:[(0,G.jsxs)(`aside`,{className:d,children:[e.length===0?(0,G.jsx)(B,{detail:`Sync DMs to populate this lane.`,label:`No conversations`}):null,e.map(e=>(0,G.jsxs)(`button`,{className:g(a,e.id===t?.id&&`bg-[var(--bg-active)]`),onClick:()=>l(e.id),type:`button`,children:[(0,G.jsx)(z,{avatarUrl:e.participant.avatarUrl,hue:e.participant.avatarHue,name:e.participant.displayName,profileId:e.participant.id}),(0,G.jsxs)(`div`,{className:c,children:[(0,G.jsxs)(`div`,{className:b,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:C,children:e.participant.displayName}),(0,G.jsxs)(`span`,{className:h,children:[`@`,e.participant.handle]})]}),(0,G.jsx)(V,{className:S,value:e.lastMessageAt})]}),(0,G.jsx)(`p`,{className:u,children:e.lastMessagePreview}),(0,G.jsxs)(`div`,{className:`mt-1 flex items-center gap-1.5`,children:[(0,G.jsxs)(`span`,{className:g(p,e.needsReply?P:D),"aria-label":e.needsReply?`Reply open`:`We replied`,children:[e.needsReply?(0,G.jsx)(L,{className:`size-3`,strokeWidth:2.2}):(0,G.jsx)(I,{className:`size-3.5`,strokeWidth:2}),e.needsReply?`open`:`replied`]}),e.isMessageRequest?(0,G.jsx)(`span`,{className:g(p,P),children:`request`}):null,(0,G.jsxs)(`span`,{className:g(p,D),children:[R(e.participant.followersCount),` `,`followers`]})]})]})]},e.id))]}),(0,G.jsx)(`div`,{className:y,children:t?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`header`,{className:r,children:[(0,G.jsxs)(`div`,{className:M,children:[(0,G.jsx)(z,{avatarUrl:w?.avatarUrl,hue:w?.avatarHue??18,name:w?.displayName??`Unknown`,profileId:w?.id??void 0}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:k,children:t.participant.displayName}),(0,G.jsx)(`div`,{className:F,children:N&&t?(0,G.jsxs)(G.Fragment,{children:[N,` · last message`,` `,(0,G.jsx)(V,{value:t.lastMessageAt})]}):`No conversation selected`})]})]}),(0,G.jsx)(`button`,{className:E,onClick:()=>x(t.id),type:`button`,children:`Reply`})]}),w?.bio||w?.followersCount?(0,G.jsxs)(`div`,{className:`border-b border-[var(--line)] px-4 py-3`,children:[w?.bio?(0,G.jsx)(`p`,{className:`text-[14px] leading-[1.4] text-[var(--ink)]`,children:w.bio}):null,(0,G.jsxs)(`dl`,{className:`mt-2 grid grid-cols-2 gap-1 text-[13px]`,children:[(0,G.jsxs)(`div`,{className:j,children:[(0,G.jsx)(`dt`,{className:i,children:`Followers`}),(0,G.jsx)(`dd`,{className:A,children:R(w?.followersCount??0)})]}),(0,G.jsxs)(`div`,{className:j,children:[(0,G.jsx)(`dt`,{className:i,children:`Influence`}),(0,G.jsxs)(`dd`,{className:A,children:[t.influenceScore,` ·`,` `,t.influenceLabel]})]}),(0,G.jsxs)(`div`,{className:j,children:[(0,G.jsx)(`dt`,{className:i,children:`Reply state`}),(0,G.jsx)(`dd`,{className:A,children:t.isMessageRequest?`Message request`:t.needsReply?`Reply open`:`We replied`})]}),(0,G.jsxs)(`div`,{className:j,children:[(0,G.jsx)(`dt`,{className:i,children:`Account`}),(0,G.jsx)(`dd`,{className:A,children:t.accountHandle})]})]})]}):null,(0,G.jsx)(`div`,{className:T,children:n.map(e=>(0,G.jsx)(K,{message:e},e.id))}),(0,G.jsxs)(`div`,{className:v,children:[(0,G.jsx)(`textarea`,{className:o,onChange:e=>m(e.target.value),placeholder:`Reply to @${t.participant.handle}`,rows:3,value:f}),(0,G.jsxs)(`div`,{className:s,children:[(0,G.jsx)(`span`,{className:_,children:t.needsReply?`Reply open`:`We replied`}),(0,G.jsx)(`button`,{className:E,disabled:!f.trim(),onClick:()=>x(t.id),type:`button`,children:`Send reply`})]})]})]}):(0,G.jsx)(B,{detail:`Pick a conversation to read the thread.`,label:`No DM selected`})})]})}U();var J=t(`/dms`)({component:n(()=>W(()=>import(`./dms-DWA5tvJS.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])),`component`),validateSearch:H});export{q as n,J as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CMLcIxOz.js";var t=e(`heart`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-B-9mzPXz.js";import{t}from"./react-BwGzW7mM.js";import{An as n,Dn as r,Gt as i,Kt as a,M as o,Mn as s,On as c,Rn as l,Ut as u,Wt as d,Xt as f,cn as p,ht as m,jn as h,kn as g,ut as _}from"./schemas-CMQMhQXI.js";import{t as v}from"./sparkles-Gx_BHkDX.js";import{A as y,a as b,b as ee,f as x,n as S,r as C,s as w}from"./query-client-CA-do_IS.js";import{t as T}from"./useQuery-CL_NXLnc.js";import{i as E,r as D}from"./account-selection-h7m9xmzU.js";import{i as O}from"./route-search-CmZT7pGD.js";import{n as k,t as A}from"./inbox-DjlVjj3K.js";var j=e(t()),M=l(),N=[{value:`mixed`,label:`Mixed`},{value:`mentions`,label:`Mentions`},{value:`dms`,label:`DMs`}];function P(){let e=A.useSearch(),t=A.useNavigate();return(0,M.jsx)(F,{searchState:e,onSearchChange:(e,n)=>void t({search:e,replace:n?.replace})})}function F({searchState:e,onSearchChange:t}={}){let l=ee(),[A,P]=(0,j.useState)(()=>O({})),F=e??A,I=(e,n)=>t?t(e,n):P(e),{kind:L,minScore:R,hideLowSignal:z}=F,[B,V]=(0,j.useState)(null),[H,U]=(0,j.useState)(``),[W,G]=(0,j.useState)(!1),[K,q]=(0,j.useState)(null),J=T({queryKey:S.status,queryFn:({signal:e})=>b({signal:e})}).data??null,Y=D(J?.accounts),X=T({queryKey:[...S.inbox,{hideLowSignal:z,kind:L,minScore:R,selectedAccountId:Y??null}],queryFn:async({signal:e})=>{let t=new URL(`/api/inbox`,window.location.origin);return t.searchParams.set(`kind`,L),t.searchParams.set(`minScore`,R),Y&&t.searchParams.set(`account`,Y),z&&t.searchParams.set(`hideLowSignal`,`1`),C(t,{signal:e},x,`Inbox request failed`)},placeholderData:y,staleTime:5*6e4}),Z=X.data?.items??[],Q=X.data?.stats??null,$=E({mutationFn:()=>w({kind:`scoreInbox`,scoreKind:L,account:Y,limit:8}),onSuccess:()=>l.invalidateQueries({queryKey:S.inbox})}),te=(0,j.useMemo)(()=>!J||!Q?`Ranking unreplied mentions and DMs...`:`${String(Q.total)} in queue · ${String(Q.openai)} OpenAI scored · ${J.transport.statusText}`,[J,Q]);async function ne(){await $.mutateAsync()}async function re(e){if(H.trim()){G(!0),q(null);try{await w(e.entityKind===`dm`?{kind:`replyDm`,conversationId:e.entityId,text:H}:{kind:`replyTweet`,accountId:e.accountId,tweetId:e.entityId,text:H}),U(``),V(null),await l.invalidateQueries({queryKey:S.inbox})}catch(e){q(e instanceof Error?e.message:`Reply failed`)}finally{G(!1)}}}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`header`,{className:u,children:[(0,M.jsxs)(`div`,{className:d,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,M.jsx)(`h1`,{className:a,children:`Inbox`}),(0,M.jsx)(`p`,{className:i,children:te})]}),(0,M.jsxs)(`button`,{className:f,disabled:$.isPending,onClick:()=>void ne(),type:`button`,children:[(0,M.jsx)(v,{className:`size-4`,strokeWidth:2.2}),$.isPending?`Scoring...`:`Score with OpenAI`]})]}),(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 px-4 pb-3`,children:[(0,M.jsx)(`input`,{className:o(n,h),inputMode:`numeric`,onChange:e=>I({...F,minScore:e.target.value},{replace:!0}),placeholder:`Min AI score`,value:R}),(0,M.jsx)(`button`,{className:p,onClick:()=>I({...F,hideLowSignal:!z}),type:`button`,"aria-pressed":z,children:z?`Hide low-signal`:`Show all`})]}),(0,M.jsx)(`div`,{className:g,children:N.map(e=>{let t=L===e.value;return(0,M.jsx)(`button`,{type:`button`,"aria-pressed":t,className:o(r,t&&`text-[var(--ink)] font-bold`),onClick:()=>I({...F,kind:e.value}),children:(0,M.jsxs)(`span`,{className:`relative inline-flex flex-col items-center justify-center py-1`,children:[e.value,t?(0,M.jsx)(`span`,{className:c}):null]})},e.value)})})]}),K?(0,M.jsx)(`p`,{className:o(s,`px-4 py-2 text-red-500`),children:K}):null,(0,M.jsxs)(`section`,{className:m,children:[Z.length===0?(0,M.jsx)(`div`,{className:_,children:`Inbox clear.`}):null,Z.map(e=>(0,M.jsx)(k,{isReplying:B===e.id,item:e,onReplyChange:U,onReplySend:()=>void re(e),onReplyToggle:()=>{if(q(null),B===e.id){V(null),U(``);return}V(e.id),U(``)},replyDraft:B===e.id?H:``},e.id))]}),W?(0,M.jsx)(`p`,{className:o(s,`px-4 py-2`),children:`Sending reply...`}):null]})}export{F as InboxRouteView,P as component};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/inbox-C9zFrQ76.js","assets/rolldown-runtime-B-9mzPXz.js","assets/react-BwGzW7mM.js","assets/schemas-CMQMhQXI.js","assets/sparkles-Gx_BHkDX.js","assets/createLucideIcon-CMLcIxOz.js","assets/query-client-CA-do_IS.js","assets/useQuery-CL_NXLnc.js","assets/account-selection-h7m9xmzU.js","assets/route-search-CmZT7pGD.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import"./rolldown-runtime-B-9mzPXz.js";import{t as e}from"./react-BwGzW7mM.js";import{i as t,n,t as r}from"./lazyRouteComponent-CLLbUvMd.js";import{D as i,Dt as a,E as o,Et as s,Ft as c,Jt as l,M as u,Mn as d,O as f,Ot as p,Rn as m,St as h,Xt as g,Yt as _,_t as v,bt as y,cn as b,qt as x,vt as S,xt as C,yt as w}from"./schemas-CMQMhQXI.js";import{t as T}from"./circle-check-BCK_qvXt.js";import{t as E}from"./circle-DiJUdlek.js";import{t as D}from"./external-link-CfdTAkvn.js";import{t as O}from"./message-circle-79LZr2oN.js";import"./query-client-CA-do_IS.js";import"./account-selection-h7m9xmzU.js";import{r as k,t as A}from"./AvatarChip-DsHj3LT7.js";import{t as j}from"./SmartTimestamp-CXaNLqN7.js";import{i as M}from"./route-search-CmZT7pGD.js";import{n as N,t as P}from"./preload-helper-MpqUbZCn.js";e();var F=m();function I({item:e,isReplying:n,replyDraft:r,onReplyChange:m,onReplyToggle:M,onReplySend:N}){return(0,F.jsxs)(`article`,{className:u(S,`items-start`),children:[(0,F.jsx)(A,{avatarUrl:e.participant.avatarUrl,hue:e.participant.avatarHue,name:e.participant.displayName,profileId:e.participant.id}),(0,F.jsxs)(`div`,{className:v,children:[(0,F.jsxs)(`header`,{className:C,children:[(0,F.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,F.jsx)(`span`,{className:h,children:e.participant.displayName}),(0,F.jsxs)(`span`,{className:y,children:[`@`,e.participant.handle]})]}),(0,F.jsx)(`span`,{className:w,children:`·`}),(0,F.jsx)(j,{className:a,value:e.createdAt}),(0,F.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,F.jsx)(`span`,{className:u(l,_),children:e.entityKind}),(0,F.jsxs)(`span`,{className:u(l,x),children:[`score `,e.score]})]})]}),(0,F.jsx)(`h3`,{className:`text-[15px] font-bold text-[var(--ink)]`,children:e.title}),(0,F.jsx)(`p`,{className:s,children:e.text}),(0,F.jsxs)(`div`,{className:p,children:[(0,F.jsx)(`strong`,{className:`text-[var(--ink)]`,children:e.summary}),(0,F.jsx)(`p`,{children:e.reasoning})]}),(0,F.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-3 text-[13px] text-[var(--ink-soft)]`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{children:e.source}),(0,F.jsx)(`span`,{className:c}),(0,F.jsxs)(`span`,{children:[`influence `,k(e.influenceScore)]}),(0,F.jsx)(`span`,{className:c}),(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[e.needsReply?(0,F.jsx)(E,{className:`size-3`,strokeWidth:2.2}):(0,F.jsx)(T,{className:`size-3.5`,strokeWidth:2}),e.needsReply?`open`:`replied`]})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsxs)(`button`,{className:b,onClick:M,type:`button`,children:[(0,F.jsx)(O,{className:`size-4`,strokeWidth:2}),n?`Close reply`:`Reply`]}),(0,F.jsxs)(t,{className:u(b,`gap-1.5`),to:e.entityKind===`dm`?`/dms`:`/mentions`,children:[(0,F.jsx)(D,{className:`size-4`,strokeWidth:2}),`Open`]})]})]}),n?(0,F.jsxs)(`div`,{className:f,children:[(0,F.jsx)(`textarea`,{className:i,onChange:e=>m(e.target.value),placeholder:e.entityKind===`dm`?`Reply to @${e.participant.handle}`:`Reply to mention from @${e.participant.handle}`,rows:4,value:r}),(0,F.jsxs)(`div`,{className:o,children:[(0,F.jsx)(`span`,{className:d,children:`Send from inbox`}),(0,F.jsx)(`button`,{className:g,disabled:!r.trim(),onClick:N,type:`button`,children:`Send`})]})]}):null]})]})}N();var L=n(`/inbox`)({component:r(()=>P(()=>import(`./inbox-C9zFrQ76.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`component`),validateSearch:M});export{I as n,L as t};
|