1import{j as t,r as v}from"./react-CwhCO-JW.js";import{b as A,E as D,D as O}from"./primitives-CZrJAQ64.js";import{g as J,n as V,a as U}from"./minimap-DLGg1n9L.js";import{x as ee,y as q,b as te,z as ne,A as oe,C as ie}from"./balance-sheet-view-Dzd3Eo_p.js";import"./typeRoles-Ciw2i6Ez.js";import"./ChartHoverTooltip-BBYNehFF.js";import"./displayDates-L8MlSDdT.js";import"./index-FXoqiwLN.js";import"./supabase-CpRTRdvQ.js";import"./memberTokens-DMhXi4mb.js";import"./UpcomingEventsCard-DlaxNSY4.js";import"./EventAnalyticsDrawer-D55RCVSX.js";import"./CitationRenderer-B9eRF3li.js";import"./Tabs-BK_S_EvU.js";import"./RangeSelectorChips-DseqhS-G.js";import"./useChartHover-CQpPkOh2.js";function se(e){if(typeof e=="string")return e.trim();const o=e?.quote||e?.text;return typeof o=="string"?o.trim():""}function re(e){return!e||typeof e!="object"?"":e.component||e.signal||e.type||""}function R(e){return Array.isArray(e)?e.flatMap(R):typeof e=="string"?[e]:!e||typeof e!="object"?[]:typeof e.quote=="string"||typeof e.text=="string"?[e]:Array.isArray(e.quotes)?R(e.quotes):Array.isArray(e.items)?R(e.items):Object.values(e).flatMap(R)}function ae({tags:e=[],theme:o,maxTags:r=4}){const i=Array.isArray(e)?e.filter(Boolean).slice(0,r):[];return i.length?t.jsx("span",{style:{display:"flex",flexWrap:"wrap",gap:4},children:i.map(h=>t.jsx("span",{style:{border:`1px solid ${o.border}`,borderRadius:4,color:o.muted,fontFamily:o.font,fontSize:"var(--fs-micro)",padding:"2px 6px"},children:h},h))}):null}function le({speech:e,theme:o,maxQuotes:r=2,maxTags:i=4,fallbackText:h=""}){const n=[...R(e?.key_quotes),...R(e?.evidence_quotes)].map(a=>({text:se(a),meta:re(a)})).filter(a=>a.text).slice(0,r),m=Array.isArray(e?.topic_tags)?e.topic_tags:[],u=String(h||e?.reason||e?.text||"").replace(/\s+/g," ").trim().slice(0,220),d=e?.policy_signal||e?.policySignal||null;return!n.length&&!m.length&&!u&&!d?null:t.jsxs("div",{style:{display:"grid",gap:6,marginTop:8},children:[d?t.jsx("div",{style:{fontFamily:o.font,fontSize:"var(--fs-micro)",color:o.accent,letterSpacing:1,textTransform:"uppercase"},children:d}):null,n.length?n.map((a,w)=>t.jsxs("div",{style:{color:o.text,fontFamily:o.font,fontSize:"var(--fs-sm)",lineHeight:1.5,borderLeft:`2px solid ${o.accent}44`,paddingLeft:10},children:[t.jsxs("span",{style:{fontStyle:"italic"},children:['"',a.text,'"']}),a.meta?t.jsx("span",{style:{color:o.muted,marginLeft:6,fontSize:"var(--fs-micro)"},children:a.meta}):null]},`${a.text}-${w}`)):u?t.jsx("div",{style:{color:o.muted,fontSize:"var(--fs-sm)",lineHeight:1.5},children:u}):null,t.jsx(ae,{tags:m,theme:o,maxTags:i})]})}const ce=["1Y","3Y","5Y","ALL"];function E(e){return e!=null&&e!==""&&Number.isFinite(Number(e))}function Y(e,o="",r="T"){return E(e)?`${o}${Number(e).toFixed(2)}${r}`:"-"}function C(e,o="",r="T"){if(!E(e))return"-";const i=Number(e);return`${i>0?"+":i<0?"-":""}${o}${Math.abs(i).toFixed(2)}${r}`}function de(e){if(!E(e))return"-";const o=Number(e);return`${o>0?"+":""}${o.toFixed(1)}`}function he(e,o=[-1,1]){const r=e.map(Number).filter(Number.isFinite);if(!r.length)return o;const i=Math.min(...r),h=Math.max(...r);if(i===h)return[i-1,h+1];const n=(h-i)*.08;return[i-n,h+n]}function Z(e,o,r,i){let h=!1;return e.map((n,m)=>{const u=o(n);if(!Number.isFinite(u))return null;const d=h?"L":"M";return h=!0,`${d}${r(m).toFixed(1)} ${i(u).toFixed(1)}`}).filter(Boolean).join(" ")}function ue({rows:e,theme:o,bankLabel:r}){const n={top:20,right:54,bottom:34,left:54}
1,m=900-n.left-n.right,u=300-n.top-n.bottom,[d,a]=he(e.map(f=>f.bsSize)),j=Z(e,f=>Number(f.bsSize),f=>n.left+(e.length<=1?m/2:f/(e.length-1)*m),f=>n.top+(1-(f-d)/(a-d||1))*u),g=e[0]?.date||"",x=e[e.length-1]?.date||"";return t.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 900 300",role:"img","aria-label":`${r} balance sheet stock`,children:[t.jsxs("title",{children:[r," balance sheet stock"]}),t.jsx("desc",{children:"Balance-sheet stock observations over the selected window."}),[0,.25,.5,.75,1].map(f=>{const l=n.top+f*u;return t.jsx("line",{x1:n.left,x2:900-n.right,y1:l,y2:l,stroke:o.border,strokeWidth:"1",strokeDasharray:"3 4"},f)}),t.jsx("line",{x1:n.left,x2:900-n.right,y1:300-n.bottom,y2:300-n.bottom,stroke:o.border}),t.jsx("line",{x1:n.left,x2:n.left,y1:n.top,y2:300-n.bottom,stroke:o.border}),t.jsx("line",{x1:900-n.right,x2:900-n.right,y1:n.top,y2:300-n.bottom,stroke:o.border}),j?t.jsx("path",{d:j,fill:"none",stroke:o.accent,strokeWidth:"2.4",strokeLinejoin:"round",strokeLinecap:"round"}):null,t.jsx("text",{x:n.left,y:290,fill:o.muted,fontSize:"11",fontFamily:o.font,children:g}),t.jsx("text",{x:900-n.right,y:290,fill:o.muted,fontSize:"11",fontFamily:o.font,textAnchor:"end",children:x}),t.jsx("text",{x:n.left,y:14,fill:o.accent,fontSize:"11",fontFamily:o.font,children:"Size"})]})}function pe({rows:e,theme:o,bankLabel:r}){const n={top:18,right:46,bottom:34,left:46}
1,m=900-n.left-n.right,u=230-n.top-n.bottom,d=e.map(p=>Number(p.bsTone)).filter(Number.isFinite),a=Math.max(10,...d.map(p=>Math.abs(p))),w=p=>n.left+(e.length<=1?m/2:p/(e.length-1)*m),b=p=>n.top+(1-(p+a)/(a*2||1))*u,j=Z(e,p=>Number(p.bsTone),w,b),g=b(0),x=e[0]?.date||"",f=e[e.length-1]?.date||"",l=o.hawkSoft||o.hawk;return t.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 900 230",role:"img","aria-label":`${r} balance-sheet speech tone index`,children:[t.jsxs("title",{children:[r," balance-sheet speech tone index"]}),t.jsx("desc",{children:"Composite score from speeches tagged as balance-sheet, liquidity, or reserve-management communications."}),[0,.25,.5,.75,1].map(p=>{const $=n.top+p*u;return t.jsx("line",{x1:n.left,x2:900-n.right,y1:$,y2:$,stroke:o.border,strokeWidth:"1",strokeDasharray:"3 4"},p)}),t.jsx("line",{x1:n.left,x2:900-n.right,y1:g,y2:g,stroke:o.muted,strokeWidth:"1.2"}),t.jsx("line",{x1:n.left,x2:900-n.right,y1:230-n.bottom,y2:230-n.bottom,stroke:o.border}),t.jsx("line",{x1:n.left,x2:n.left,y1:n.top,y2:230-n.bottom,stroke:o.border}),t.jsx("line",{x1:900-n.right,x2:900-n.right,y1:n.top,y2:230-n.bottom,stroke:o.border}),j?t.jsx("path",{d:j,fill:"none",stroke:l,strokeWidth:"2.4",strokeLinejoin:"round",strokeLinecap:"round"}):null,e.map((p,$)=>{const F=Number(p.bsTone);return Number.isFinite(F)?t.jsx("circle",{cx:w($),cy:b(F),r:"3",fill:l,opacity:"0.9"},`${p.date}-${$}`):null}),t.jsx("text",{x:n.left,y:220,fill:o.muted,fontSize:"11",fontFamily:o.font,children:x}),t.jsx("text",{x:900-n.right,y:220,fill:o.muted,fontSize:"11",fontFamily:o.font,textAnchor:"end",children:f}),t.jsx("text",{x:n.left,y:14,fill:l,fontSize:"11",fontFamily:o.font,children:"Balance-sheet speech tone"})]})}function fe({rows:e,range:o,setRange:r,dragging:i,setDragging:h,dragStart:n,setDragStart:m,theme:u}){const d=v.useRef(null),[a,w]=v.useState(100),{range:b,minSpan:j,zoomable:g}=V(o,e.length),x=e.map(c=>c.bsSize??c.bsTone).map(Number).filter(Number.isFinite),f=x.length?Math.min(...x):0,p=(x.length?Math.max(...x):1)-f||1,$=e.map((c,y)=>{const S=Number(c.bsSize??c.bsTone),k=U(y,e.length,a),z=Number.isFinite(S)?44-(S-f)/p*38:44;return`${k},${z}`});v.useEffect(()=>{const c=d.current;if(!c)return;const y=()=>{const k=c.getBoundingClientRect().width;w(Number.isFinite(k)&&k>0?k:100)};if(y(),typeof ResizeObserver>"u")return;const S=new ResizeObserver(y);return S.observe(c),()=>S.disconnect()},[]);const F=(c,y)=>{if(!g||!d.current)return;y.preventDefault(),y.stopPropagation();const S=d.current.getBoundingClientRect();S.width&&(h(c),m({x:(y.clientX-S.left)/S.width,range:[...b]}))},_=c=>{if(!g||!i||!n||!d.current)return;const y=d.current.getBoundingClientRect();if(!y.width)return;const S=(c.clientX-y.left)/y.width,[k,z]=n.range,L=S-n.x;if(i==="left")r([Math.max(0,Math.min(k+L,z-j)),z]);else if(i==="right")r([k,Math.max(k+j,Math.min(1,z+L))]);else{const T=z-k,B=Math.max(0,Math.min(1-T,k+L));r([B,B+T])}};return t.jsx("div",{children:t.jsxs("div",{ref:d,"data-testid":"balance-sheet-minimap",onMouseMove:_,onMouseUp:()=>{h(null),m(null)},onMouseLeave:()=>{h(null),m(null)},style:{position:"relative",height:48,cursor:i?"grabbing":"default",userSelect:"none"},children:[t.jsxs("svg",{width:"100%",height:"48",viewBox:`0 0 ${a} 48`,"aria-hidden":"true",style:{position:"absolute",inset:0},children:[t.jsx("polygon",{points:`0,44 ${$.join(" ")} ${a},44`,fill:u.accent,opacity:"0.08"}),t.jsx("polyline",{points:$.join(" "),fill:"none",stroke:u.accent,strokeWidth:"1",strokeOpacity:"0.65",vectorEffect:"non-scaling-stroke"})]}),t.jsx("div",{style:{position:"absolute",top:0,left:0,width:`${b[0]*100}%`,height:"100%",background:u.bg,opacity:.62}}),t.jsx("div",{style:{position:"absolute",top:0,right:0,width:`${(1-b[1])*100}%`,height:"100%",background:u.bg,opacity:.62}}),t.jsxs("div",{onMouseDown:c=>F("window",c),style:{position:"absolute",top:0,left:`${b[0]*100}%`,width:`${(b[1]-b[0])*100}%`,height:"100%",border:`1px solid ${u.accent}88`,borderRadius:3,cursor:g?"grab":"default"},children:[t.jsx("div",{onMouseDown:c=>F("left",c),style:{position:"absolute",left:-4,top:"50%",transform:"translateY(-50%)",width:8,height:24,borderRadius:3,background:u.accent,cursor:"ew-resize"}}),t.jsx("div",{onMouseDown:c=>F("right",c),style:{position:"absolute",right:-4,top:"50%",transform:"translateY(-50%)",width:8,height:24,borderRadius:3,background:u.accent,cursor:"ew-resize"}})]})]})})}function ge(e){const o=e?.quote||e?.text||e?.excerpt||"";return String(o).replace(/\s+/g," ").trim().slice(0,180)}function P(e){return e?.score??e?.composite_score??e?.composite??null}function Re({data:e,bankId:o,bankLabel:r,theme:i,sizeRowsKey:h,title:n="Balance Sheet",subtitle:m="Balance-sheet size, tone, line items, and tagged communications.",isMobile:u=!1,sizeUnitPrefix:d="",sizeUnitSuffix:a="T",detailUnitPrefix:w=d,detailUnitSuffix:b=a}){const j=ee(o),g=v.useMemo(()=>q(e?.[h],e?.BS_TONE_SIZE).filter(s=>s.bsSize!=null),[e,h]),x=v.useMemo(()=>te(e?.BS_TONE_SIZE),[e?.BS_TONE_SIZE]),f=v.useMemo(()=>q(g,x),[g,x]),l=v.useMemo(()=>ne(f),[f]),p=v.useMemo(()=>oe(e?.BS_DETAIL),[e?.BS_DETAIL]),$=v.useMemo(()=>ie(e?.BS_CORPUS).sort((s,M)=>String(M.date||"").localeCompare(String(s.date||""))),[e?.BS_CORPUS]),[F,_]=v.useState("5Y"),[c,y]=v.useState(null),[S,k]=v.useState(null),[z,L]=v.useState(null),T=g.length;let B=0,W=Math.max(0,T-1);if(T>0&&c)({startIndex:B,endIndex:W}=J(c,T));else if(T>0&&F!=="ALL"){const s=Number.parseInt(F,10),M=new Date;M.setFullYear(M.getFullYear()-s);const Q=M.toISOString().slice(0,7),I=g.findIndex(G=>G.date>=Q);B=I>=0?I:0}const N=g.slice(B,W+1),H=T>1?[B/Math.max(1,T-1),W/Math.max(1,T-1)]:[0,1],K=l.latestToneLabel?`${l.latestToneLabel}${l.speechCount!=null?` / ${l.speechCount} speeches`:""}`:j.toneLabel,X=[{label:"BS speech tone",value:de(l.latestTone),sub:K,color:E(l.latestTone)&&l.latestTone>0?i.hawk:i.dove},{label:"Latest stock",value:Y(l.latestSize,d,a),sub:l.latestSizeDate||j.stockLabel,color:i.accent},{label:"Peak",value:Y(l.peakSize,d,a),sub:"Series max",color:i.text},{label:"Drawdown",value:C(l.drawdown,d,a),sub:l.peakSize?"vs peak":"No peak available",color:i.hawk},{label:"Period pace",value:C(l.periodPace,d,a),sub:"Latest change",color:!E(l.periodPace)||l.periodPace===0?i.muted:l.periodPace<0?i.hawk:i.green}];return t.jsxs("div",{style:{display:"grid",gap:16},children:[t.jsx("div",{"data-testid":`${o}-balance-sheet-hero-kpis`,style:{display:"grid",gridTemplateColumns:u?"1fr":"repeat(5, minmax(0, 1fr))",gap:10},children:X.map(s=>t.jsxs("div",{style:{background:i.surface,border:`1px solid ${i.border}`,borderRadius:8,padding:"10px 14px",minWidth:0},children:[t.jsx("div",{style:{fontFamily:i.font,fontSize:9,color:i.muted,letterSpacing:1,textTransform:"uppercase"},children:s.label}),t.jsx("div",{style:{fontFamily:"var(--app-font-sans)",fontSize:"var(--fs-xl)",color:s.color,marginTop:2},children:s.value}),t.jsx("div",{style:{fontFamily:i.font,fontSize:9,color:i.muted,marginTop:1},children:s.sub})]},s.label))}),t.jsx(A,{title:n,kicker:r,height:430,description:m,summary:`${N.length} visible observations from ${N[0]?.date||"the first observation"} to ${N[N.length-1]?.date||"the latest observation"}.`,right:t.jsx("div",{style:{display:"flex",gap:4},children:ce.map(s=>{const M=!c&&F===s;return t.jsx("button",{type:"button",onClick:()=>{_(s),y(null)},style:{padding:"3px 7px",fontSize:"var(--fs-micro)",fontWeight:700,fontFamily:i.font,cursor:"pointer",background:M?`${i.accent}22`:"transparent",color:M?i.accent:i.muted,border:`1px solid ${M?i.accent:i.border}`,borderRadius:4},children:s},s)})}),children:N.length?t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{height:315},children:t.jsx(ue,{rows:N,theme:i,bankLabel:r})}),t.jsx("div",{style:{display:"flex",gap:16,flexWrap:"wrap",padding:"0 12px 6px",fontFamily:i.font,fontSize:9,color:i.muted},children:t.jsxs("span",{children:[t.jsx("span",{style:{color:i.accent},children:"--"})," ",j.stockLabel]})}),t.jsx(fe,{rows:g,range:c||H,setRange:s=>{y(s),_("CUSTOM")},dragging:S,setDragging:k,dragStart:z,setDragStart:L,theme:i}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 4px 0",fontSize:9,color:i.muted,pointerEvents:"none"},children:[t.jsx("span",{children:g[B]?.date||""}),t.jsxs("span",{style:{color:i.accent,fontWeight:700},children:[N.length," months · drag handles to zoom"]}),t.jsx("span",{children:g[W]?.date||""})]})]}):t.jsx(D,{title:"No balance-sheet series",body:"No stock history for this bank yet."})}),t.jsx(A,{title:"Balance-Sheet Tone Index",kicker:r,height:300,description:"Composite score from balance-sheet, liquidity, and reserve-management communications. This is separate from the rate-policy composite.",summary:`${x.length} tone observations from ${x[0]?.date||"the first observation"} to ${x[x.length-1]?.date||"the latest observation"}.`,children:x.length?t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{height:230},children:t.jsx(pe,{rows:x,theme:i,bankLabel:r})}),t.jsxs("div",{style:{display:"flex",gap:16,flexWrap:"wrap",padding:"0 12px 6px",fontFamily:i.font,fontSize:9,color:i.muted},children:[t.jsxs("span",{children:[t.jsx("span",{style:{color:i.hawkSoft||i.hawk},children:"--"})," ",j.toneLabel]}),t.jsx("span",{children:"Positive = tighter runoff bias; negative = easier liquidity/QE bias"})]})]}):t.jsx(D,{title:"No balance-sheet tone index",body:"No scored balance-sheet, liquidity, or reserve-management communications are available for this bank."})}),t.jsx(A,{title:"Latest Balance-Sheet Breakdown",kicker:r,height:p.length?170:220,description:"Canonical line-item stocks and 1M/3M/6M flows.",contentRole:"table",children:p.length?t.jsx(O,{rows:p,getRowKey:s=>s.key,columns:[{key:"label",label:"Line Item"},{key:"value",label:"Latest",align:"right",render:s=>`${w}
1${Number(s.value).toLocaleString(void 0,{maximumFractionDigits:2})}${b}`},{key:"m1",label:"1M Flow",align:"right",render:s=>C(s.m1,w,b)},{key:"m3",label:"3M Flow",align:"right",render:s=>C(s.m3,w,b)},{key:"m6",label:"6M Flow",align:"right",render:s=>C(s.m6,w,b)},{key:"date",label:"Date",render:s=>s.date||"-"}]}):t.jsx(D,{title:"No line-item breakdown",body:"No line-item observations for this bank yet."})}),t.jsx(A,{title:"Balance-Sheet Communications",kicker:r,height:$.length?160:220,description:"Scored speeches tagged as balance-sheet communications.",contentRole:"table",children:$.length?t.jsx(O,{rows:$,getRowKey:(s,M)=>s.id||`${s.date}-${M}`,columns:[{key:"date",label:"Date",render:s=>String(s.date||"").slice(0,10)||"-"},{key:"member_name",label:"Speaker",render:s=>s.member_name||s.member_id||s.speaker||"-"},{key:"score",label:"Score",align:"right",render:s=>E(P(s))?Number(P(s)).toFixed(1):"-"},{key:"evidence",label:"Title / Evidence",render:s=>t.jsxs("div",{style:{display:"grid",gap:4},children:[t.jsx("span",{style:{color:i.text,fontWeight:700},children:s.title||"Untitled balance-sheet communication"}),t.jsx(le,{speech:s,theme:i,fallbackText:ge(s)||s.title||"",maxQuotes:2,maxTags:4})]})}]}):t.jsx(D,{title:"No balance-sheet communications",body:"No scored balance-sheet-tagged speeches are available for this bank."})})]})}export{Re as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.