PageSourceSearch

https://dhqfootball.com/js/widgets/gap-plan.js?v=cc0e7f7a06

js dhqfootball.com collected 2026-10-04 08:02:57 UTC 12,015 bytes, 2 lines download raw bytes

1(function(){"use strict";function Q({size:c,myRoster:f,currentLeague:h,playersData:y,sleeperUserId:Z,setActiveTab:P,navigateWidget:O}){var W,_,M,z,I,j,C,U;const D=((_=(W=window.WrTheme)==null?void 0:W.get)==null?void 0:_.call(W))||{},n=D.colors||{},a=D.fonts||{},N=((z=(M=window.WrTheme)==null?void 0:M.cardStyle)==null?void 0:z.call(M))||{},w=t=>{var e,r;return((r=(e=window.WrTheme)==null?void 0:e.fontSize)==null?void 0:r.call(e,t))||t+"rem"},q=((j=(I=window.App)==null?void 0:I.getRosterDataState)==null?void 0:j.call(I,{roster:f,currentLeague:h,rosters:h==null?void 0:h.rosters}))||{isUsable:!0},v=t=>{var e,r;return((r=(e=window.App)==null?void 0:e.posLabel)==null?void 0:r.call(e,t))||t},B=window.WR.GmMode.useGmEffects(h).targetPositions||new Set,Y=t=>B.has(String(t)),S=(t,e)=>{var r;(r=e==null?void 0:e.stopPropagation)==null||r.call(e),O?O(t):P&&P(t)},H=t=>{window.WR&&typeof window.WR.openPlayerCard=="function"?window.WR.openPlayerCard(t):typeof window.openPlayerModal=="function"&&window.openPlayerModal(t)},J=c==="sm",T=React.useMemo(()=>typeof window.assessTeamFromGlobal=="function"&&(f!=null&&f.roster_id)?window.assessTeamFromGlobal(f.roster_id):null,[f==null?void 0:f.roster_id]),b=React.useMemo(()=>typeof window.assessAllTeamsFromGlobal=="function"?window.assessAllTeamsFromGlobal()||[]:[],[]),F=React.useMemo(()=>{const t=(T==null?void 0:T.posAssessment)||{},e=Object.entries(t);if(!e.length)return[];let r=b.filter(p=>p.tier==="ELITE"||p.tier==="CONTENDER");r.length||(r=[...b].sort((p,l)=>(l.powerScore||0)-(p.powerScore||0)).slice(0,Math.max(1,Math.ceil(b.length/4))));const m={deficit:0,thin:1,ok:2,surplus:3};return e.map(([p,l])=>{const x=Math.max(0,(l.minQuality||l.startingReq||1)-(l.nflStarters||0)),E=Math.max(0,(l.ideal||0)-(l.actual||0)),i=r.map(d=>{var u,g;return(g=(u=d.posAssessment)==null?void 0:u[p])==null?void 0:g.nflStarters}).filter(d=>Number.isFinite(d)),s=i.length?i.reduce((d,u)=>d+u,0)/i.length:null;return{pos:p,status:l.status,need:x,depthShort:E,mine:l.nflStarters||0,required:l.minQuality||l.startingReq||1,eliteAvg:s,isTarget:Y(p)}}).sort((p,l)=>{var s,d;const x=p.status==="deficit"?0:1,E=l.status==="deficit"?0:1;if(x!==E)return x-E;if(x===1){const u=p.isTarget?0:1,g=l.isTarget?0:1;if(u!==g)return u-g}const i=((s=m[p.status])!=null?s:2)-((d=m[l.status])!=null?d:2);return i!==0?i:l.need-p.need||l.depthShort-p.depthShort})},[T,b,B]),A=F.filter(t=>t.status==="deficit"||t.status==="thin"),o=A[0]||null,k=t=>t==="deficit"?n.negative:t==="thin"?n.warn:t==="surplus"?n.positive:n.textMuted,G=t=>t.need>0?"Need "+t.need+" more":t.depthShort>0?"Thin \u2014 add "+t.depthShort+" depth":t.status==="surplus"?"Surplus":"Covered",R=React.useMemo(()=>{var l,x,E;if(!o||c!=="lg")return{fas:[],partner:null};const t=((x=(l=window.App)==null?void 0:l.LI)==null?void 0:x.playerScores)||{},e=((E=window.App)==null?void 0:E.normPos)||(i=>i),r=new Set;((h==null?void 0:h.rosters)||[]).forEach(i=>(i.players||[]).concat(i.taxi||[],i.reserve||[]).forEach(s=>r.add(String(s))));const m=Object.entries(t).filter(([i,s])=>{var d;return!r.has(i)&&s>500&&e((d=y==null?void 0:y[i])==null?void 0:d.position)===o.pos}).map(([i,s])=>{var d;return{pid:i,dhq:s,name:((d=y==null?void 0:y[i])==null?void 0:d.full_name)||i}}).sort((i,s)=>s.dhq-i.dhq).slice(0,2),p=b.filter(i=>i.rosterId!==(f==null?void 0:f.roster_id)).filter(i=>(i.strengths||[]).some(s=>(typeof s=="string"?s:s==null?void 0:s.pos)===o.pos)).sort((i,s)=>{var d,u,g,K;return(((u=(d=s.posAssessment)==null?void 0:d[o.pos])==null?void 0:u.nflStarters)||0)-(((K=(g=i.posAssessment)==null?void 0:g[o.pos])==null?void 0:K.nflStarters)||0)})[0]||null;return{fas:m,partner:p}},[o==null?void 0:o.pos,c,h,y,b,f==null?void 0:f.roster_id]);if(!q.isUsable)return(U=(C=window.App)==null?void 0:C.renderRosterDataBlocker)==null?void 0:U.call(C,q,{title:c==="sm"?"Gaps paused":"Gap Plan paused",message:"Gap analysis needs complete roster IDs.",detail:q.detail,compact:c==="sm"||c==="md",fill:!0,actionLabel:c==="sm"?null:"Open Roster",onAction:t=>S("myteam",t),style:{cursor:J?"pointer":"default"}});function V(t={}){return React.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px",flexShrink:0}},React.createElement("span",{style:{fontSize:t.large?"1.05rem":"0.95rem"}},"\u{1F9E9}"),React.createElement("span",{style:{fontFamily:a.display,fontSize:w(t.large?1:.9),fontWeight:700,color:n.negative||"var(--k-e74c3c, #e74c3c)",letterSpacing:"0.06em",textTransform:"uppercase",flex:1,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},"Gap Plan"),React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textMuted,fontFamily:a.ui,whiteSpace:"nowrap"}},A.length?A.length+" open gap"+(A.length!==1?"s":""):"all covered"),React.createElement("button",{onClick:e=>S("fa",e),title:"Open Free Agency",style:{padding:"3px 8px",minHeight:"44px",marginTop:"-10px",marginBottom:"-10px",display:"inline-flex",alignItems:"center",background:wrAlpha(n.info||"var(--k-3498db, #3498db)","1A"),color:n.info||"var(--k-3498db, #3498db)",border:"1px solid "+wrAlpha(n.info||"var(--k-3498db, #3498db)","47"),borderRadius:"5px",cursor:"pointer",fontSize:"var(--text-micro, 0.6875rem)",fontFamily:a.ui,fontWeight:700,whiteSpace:"nowrap"}},"FA"))}function X(t){const e=Math.max(t.required,t.mine,Math.ceil(t.eliteAvg||0)),r=[];for(let m=0;m<Math.min(e,6);m++)r.push(React.createElement("span",{key:m,style:{width:8,height:8,borderRadius:"50%",background:m<t.mine?k(t.status):"var(--ov-4, rgba(255,255,255,0.06))",border:"1px solid "+(m<t.required?wrAlpha(k(t.status),"66"):"var(--ov-5, rgba(255,255,255,0.08))"),flexShrink:0}}));return React.createElement("div",{style:{display:"flex",gap:"3px",alignItems:"center"}},r)}if(c==="sm")return React.createElement("div",{onClick:t=>S(o?"fa":"myteam",t),style:{...N,padding:"var(--card-pad, 14px 16px)",cursor:"pointer",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",textAlign:"center",gap:"4px"}},React.createElement("div",{style:{fontSize:w(.6),color:n.negative||"var(--k-e74c3c, #e74c3c)",textTransform:"uppercase",letterSpacing:"0.1em",fontWeight:700,fontFamily:a.ui}},"\u{1F9E9} Biggest Gap"),React.createElement("div",{style:{fontFamily:a.mono,fontSize:w(1.7),fontWeight:700,color:o?k(o.status):n.positive,lineHeight:1},className:"wr-data-value"},o?(o.need>0?"+"+o.need+" ":"")+v(o.pos):"\u2713"),React.createElement("div",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textMuted,fontFamily:a.ui,borderTop:"1px solid "+(n.border||"var(--ov-4, rgba(255,255,255,0.06))"),paddingTop:"4px",marginTop:"2px",width:"100%"}},o?o.need>0?G(o)+" starter-quality "+v(o.pos):G(o)+" at "+v(o.pos):"No open gaps \u2014 every position covered"));if(c==="md"||c==="lg"||c==="narrow"){const t=c==="md"?F.slice(0,4):c==="narrow"?F:F.slice(0,7);return React.createElement("div",{style:{...N,padding:"var(--card-pad, 12px 14px)",display:"flex",flexDirection:"column",overflow:"hidden"}},V({large:c==="lg"}),React.createElement("div",{style:{flex:c==="lg"?"0 0 auto":1,minHeight:0,display:"flex",flexDirection:"column",gap:"4px",overflow:"hidden"}},t.length===0&&React.createElement("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",fontSize:w(.7),color:n.textFaint,fontStyle:"italic",fontFamily:a.ui}},"No assessment yet"),t.map(e=>React.createElement("div",{key:e.pos,role:"button",tabIndex:0,title:(e.isTarget?"Strategy target \u2014 ":"")+"Open "+(e.need>0||e.depthShort>0?"Free Agency":"My Roster"),onClick:r=>S(e.need>0||e.depthShort>0?"fa":"myteam",r),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),S(e.need>0||e.depthShort>0?"fa":"myteam",r))},style:{display:"flex",alignItems:"center",gap:"8px",padding:"3px 6px",minHeight:"26px",borderRadius:"4px",background:e.isTarget?wrAlpha(n.gold||"var(--gold, #d4af37)","0F"):"var(--ov-1, rgba(255,255,255,0.02))",borderLeft:"2px s
1olid "+(e.isTarget?n.gold||"var(--gold, #d4af37)":k(e.status)),cursor:"pointer"}},React.createElement("span",{style:{display:"flex",alignItems:"center",gap:"3px",width:30,flexShrink:0}},e.isTarget&&React.createElement("span",{title:"Strategy target",style:{width:5,height:5,borderRadius:"50%",background:n.gold||"var(--gold, #d4af37)",flexShrink:0,boxShadow:"0 0 4px "+wrAlpha(n.gold||"var(--gold, #d4af37)","99")}}),React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",fontWeight:700,color:e.isTarget?n.gold||"var(--gold, #d4af37)":n.text,fontFamily:a.ui}},v(e.pos))),React.createElement("span",{style:{flex:1,minWidth:0,fontSize:"var(--text-micro, 0.6875rem)",fontWeight:700,color:k(e.status),fontFamily:a.ui,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},G(e)),X(e),React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textFaint,fontFamily:a.mono,minWidth:52,textAlign:"right"},title:"Your starter-quality count vs elite tier teams average"},e.mine,e.eliteAvg!==null?" vs "+Math.round(e.eliteAvg*10)/10:""))),c==="md"&&F.length>t.length&&React.createElement("div",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textFaint,fontFamily:a.ui,opacity:.7}},"+",F.length-t.length," more positions")),(c==="md"||c==="narrow")&&React.createElement("div",{style:{flexShrink:0,fontSize:"var(--text-micro, 0.6875rem)",color:n.textFaint,fontFamily:a.ui,opacity:.65,marginTop:"4px"}},"count = starter-quality players \xB7 vs elite tier teams"),c==="lg"&&React.createElement("div",{style:{flex:1,minHeight:0,marginTop:"8px",overflow:"hidden",display:"flex",flexDirection:"column"}},React.createElement("div",{style:{fontSize:w(.6),fontWeight:700,color:n.accent,textTransform:"uppercase",letterSpacing:"0.08em",marginBottom:"4px",flexShrink:0,fontFamily:a.ui}},o?"Fill the "+v(o.pos)+" gap":"Roster covered"),!o&&React.createElement("div",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textFaint,fontStyle:"italic",fontFamily:a.ui}},"Use your surplus to stack picks or upgrade elites."),o&&R.fas.map(e=>React.createElement("div",{key:e.pid,role:"button",tabIndex:0,title:"Open player card",onClick:()=>H(e.pid),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),H(e.pid))},style:{display:"flex",alignItems:"center",gap:"6px",padding:"3px 0",minHeight:"24px",borderBottom:"1px solid var(--ov-2, rgba(255,255,255,0.03))",cursor:"pointer"}},React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",fontWeight:700,color:n.info||"var(--k-3498db, #3498db)",width:24,fontFamily:a.ui}},"FA"),React.createElement("span",{style:{flex:1,minWidth:0,fontSize:w(.7),fontWeight:600,color:n.text,fontFamily:a.ui,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.name),React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",fontWeight:700,color:n.accent,fontFamily:a.mono,minWidth:32,textAlign:"right"}},e.dhq>=1e3?(e.dhq/1e3).toFixed(1)+"k":e.dhq))),o&&!R.fas.length&&React.createElement("div",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textFaint,fontFamily:a.ui,padding:"2px 0"}},"Wire is dry at ",v(o.pos)," \u2014 trade for it."),o&&R.partner&&React.createElement("div",{role:"button",tabIndex:0,title:"Open Trade Center",onClick:e=>S("trades",e),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),S("trades",e))},style:{display:"flex",alignItems:"center",gap:"6px",padding:"3px 0",minHeight:"24px",cursor:"pointer"}},React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",fontWeight:700,color:n.purple||"var(--k-7c6bf8, #7c6bf8)",width:24,fontFamily:a.ui}},"TR"),React.createElement("span",{style:{flex:1,minWidth:0,fontSize:w(.7),fontWeight:600,color:n.text,fontFamily:a.ui,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},R.partner.ownerName||R.partner.teamName||"League partner"),React.createElement("span",{style:{fontSize:"var(--text-micro, 0.6875rem)",color:n.textMuted,fontFamily:a.ui,whiteSpace:"nowrap"}},"has ",v(o.pos)," surplus \u2192"))))}return null}window.GapPlanWidget=Q})();
2

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.