PageSourceSearch

https://nfldrafthq.com/assets/draftControl-C6_XKQLB.js

js nfldrafthq.com collected 2026-10-05 19:58:03 UTC 13,102 bytes, 1 lines download raw bytes

1import{A as F,d as $,w as V,z as H,y as z,am as U,x as Y}from"./index-Ba4BgsO5.js";function q(t,e){return e===2?15:t<=8?6:t<=16?7:t<=24?8:t<=32?9:t<=48?10:t<=64?12:t<=100?15:20}function _(t){return[...t].sort((e,u)=>{var r,n;return parseInt(((r=e.rank)==null?void 0:r.toString())||"999")-parseInt(((n=u.rank)==null?void 0:n.toString())||"999")})}function K(t,e,u,r,n,a){const C=new Set(e.map(d=>d.id)),s=[...t].sort((d,D)=>Number(d.rank||999)-Number(D.rank||999)),I=_(e).slice(0,q(n,a)).filter(d=>a!==2||Number(d.rank||999)<=n+15),P=d=>C.has(d.id)&&(a!==2||Number(d.rank||999)<=n+15),i=F(s,u,n,P,a),h=F(s,r,n,P,a),S=[{players:i.players,needs:i.needs},...a>=4?[{players:h.players,needs:h.needs}]:[]];let A=null;for(const d of S){for(const D of d.needs){const k=d.players.find(w=>{var E;return(E=w.position)==null?void 0:E.startsWith(D)});if(k){A=k;break}}if(A)break}return A||(A=I[0]??null),{player:A,selectionPool:I,needLookaheadPlayers:i.players}}let J=[];const X=async()=>{try{const t=await fetch("/api/players");if(t.ok){const e=await t.json();return console.log("Draft data: Loaded",e.length,"players"),J=e,e}}catch(t){console.error("Failed to fetch players from API:",t)}return[]};X();const Z=[100,92.5,85,77.5,70,60,55,50,45,40,35,30],L={3:14,4:17,5:20,6:22,7:25};function R(t){return typeof t=="number"&&Number.isFinite(t)&&t>0&&t<999}function j(t){const e=Math.max(1,Math.floor(t)),u={1:100,2:93,3:90,4:87,5:85};return e<=5?u[e]:e<=10?85-(e-5)*2:Math.max(50,75-1.25*(e-10))}function ee(t,e){return e===1?t>=99?"A+":t>=94?"A":t>=89?"A-":t>=84?"B+":t>=79?"B":t>=74?"B-":t>=69?"C+":t>=64?"C":t>=59?"C-":t>=54?"D+":"D":e===2?t>=99?"A+":t>=92?"A":t>=87?"A-":t>=82?"B+":t>=77?"B":t>=72?"B-":t>=67?"C+":t>=62?"C":t>=57?"C-":t>=52?"D+":"D":t>=97?"A":t>=95?"A-":t>=93?"B+":t>=89?"B":t>=81?"B-":t>=78?"C+":t>=77?"C":t>=76?"C-":t>=64?"D+":"D"}function te(t,e,u,r,n,a,C,s=1,m){const I=[...C||[]].sort((l,f)=>{const v=R(l==null?void 0:l.rank)?l.rank:Number.POSITIVE_INFINITY,N=R(f==null?void 0:f.rank)?f.rank:Number.POSITIVE_INFINITY;return v-N});let P=m===void 0?-1:I.findIndex(l=>(l==null?void 0:l.id)===m);P<0&&R(t)&&(P=I.findIndex(l=>R(l==null?void 0:l.rank)&&l.rank===t)),P<0&&a&&I.length>0&&(P=0),P<0&&!R(t)&&(P=I.findIndex(l=>!R(l==null?void 0:l.rank)));const i=P>=0?P+1:void 0,h=R(t)?t:i??1,S=s<=2?i??(R(t)?t:1):Math.max(1,Math.max(0,h-e)-(L[s]??L[7])+1),A=u.replace(/[0-9]/g,"").toUpperCase(),D=[...r,...n].slice(0,12).map(l=>l.replace(/[0-9]/g,"").toUpperCase()).indexOf(A),k=D<0?40:Z[D],w=j(S),E=Math.round(w*.7+k*.3);let M=0;if(s>=4&&s<=7){const l=h-e,f=L[s];l<0?M=Math.min(8,Math.round(Math.abs(l)*.5)):l<=f&&(M=-Math.round(l/f*8))}const o=Math.min(100,Math.max(0,E+M));return{grade:ee(o,s),totalScore:o,valueScore:w,needScore:k}}class b{constructor(){this.draftInterval=null,this.isActive=!1,this.currentSpeed=1,this.isProcessingImmediately=!1}static getInstance(){if(!b.instance){b.instance=new b;const e=$.getState().draftSpeed;b.instance.currentSpeed=b.convertSpeedToNumber(e)}return b.instance}static convertSpeedToNumber(e){const u=parseInt(e);if(!isNaN(u))return u;switch(e){case"slow":return 3;case"medium":return 1;case"fast":return 0;default:return 1}}setSpeed(e){if(typeof e=="string"){const u=parseInt(e);isNaN(u)?this.currentSpeed=b.convertSpeedToNumber(e):this.currentSpeed=u}else this.currentSpeed=e;console.log("Draft speed set to:",this.currentSpeed,"interval time:",this.getIntervalTime()),this.isActive&&(console.log("Restarting draft with new speed:",this.currentSpeed),this.pauseDraft(),setTimeout(()=>{this.startDraft()},50))}continueDraft(){this.isActive?(console.log("Draft already active, trigger next processing step"),this.currentSpeed===0&&this.processPicksImmediately()):(console.log("Continuing draft..."),this.startDraft())}getIsActive(){return this.isActive}getIntervalTime(){return{0:0,1:1e3,2:2e3,3:3e3}[this.currentSpeed]||1e3}startDraft(){if(console.log("Starting draft with speed:",this.currentSpeed),this.draftInterval&&clearInterval(this.draftInterval),this.isActive=!0,this.currentSpeed===0)console.log("Using 0s speed - processing picks immediately"),this.processPicksImmediately();else{const e=this.getIntervalTime();console.log("Using interval time:",e),this.draftInterval=setInterval(()=>{this.processDraftPick()},e)}}async processPicksImmediately(){if(!this.isProcessingImmediately){this.isProcessingImmediately=!0;try{for(;this.isActive;){const e=$.getState(),u=e.draftPicks.filter(s=>s.round===e.currentRound),r=u.filter(s=>s.playerId!==null);if(u.length>0&&r.length===u.length){console.log(`processPicksImmediately: Round ${e.currentRound} is complete. Pausing draft for summary.`),this.pauseDraft(),document.dispatchEvent(new CustomEvent("roundCompleted",{detail:{round:e.currentRound}}));return}const n=e.draftPicks.find(s=>s.round===e.currentRound&&s.pick===e.currentPick);if(!n||n.playerId!==null){const s=u.find(m=>m.playerId===null);s&&$.setState({currentPick:s.pick}),await new Promise(m=>setTimeout(m,50));continue}const a=e.getCurrentOwner(n.round,n.pick,n.team);
1if(e.selectedTeams.has(a)){if(console.log(`User team ${a} on the clock - waiting for selection`),e.currentTab.startsWith("Round")){const s=new CustomEvent("showPlayerSelection",{detail:{round:e.currentRound,pick:e.currentPick,team:a}});document.dispatchEvent(s)}return}if(await this.makeAutoPick(n,a),!this.isActive)return;await new Promise(s=>setTimeout(s,50))}}finally{this.isProcessingImmediately=!1}}}pauseDraft(){console.log("Pausing draft..."),this.isActive=!1,this.draftInterval&&(clearInterval(this.draftInterval),this.draftInterval=null)}stopDraft(){console.log("Stopping draft..."),this.isActive=!1,this.draftInterval&&(clearInterval(this.draftInterval),this.draftInterval=null)}async processDraftPick(){if(!this.isActive)return;const e=$.getState(),u=e.draftPicks.filter(s=>s.round===e.currentRound),r=u.filter(s=>s.playerId!==null);if(u.length>0&&r.length===u.length){console.log(`processDraftPick: Round ${e.currentRound} is complete. Pausing for summary.`),this.pauseDraft(),document.dispatchEvent(new CustomEvent("roundCompleted",{detail:{round:e.currentRound}}));return}const n=e.draftPicks.find(s=>s.round===e.currentRound&&s.pick===e.currentPick);if(!n||n.playerId!==null){this.checkRoundCompletion();return}const a=e.getCurrentOwner(n.round,n.pick,n.team);if(e.selectedTeams.has(a)){if(console.log(`User team ${a} on the clock - waiting for selection`),e.currentTab.startsWith("Round")){const s=new CustomEvent("showPlayerSelection",{detail:{round:e.currentRound,pick:e.currentPick,team:a}});document.dispatchEvent(s)}return}await this.makeAutoPick(n,a)}async makeAutoPick(e,u){var M;const r=$.getState(),n=u||r.getCurrentOwner(e.round,e.pick,e.team);let a;r.usingMyBigBoard&&r.myBigBoardOrder&&r.myBigBoardOrder.length>0?(console.log(`DraftController: Using Custom Board for auto-pick for ${n} (pick originally ${e.team}) in Round ${r.currentRound}`),console.log("Custom Board has",r.myBigBoardOrder.length,"players"),console.log("Drafted players:",r.draftedPlayers.length),a=r.myBigBoardOrder.filter(o=>!r.draftedPlayers.some(y=>y.id===o.id)),console.log("Available players from Custom Board:",a.length)):(console.log(`DraftController: Using HQ Board for auto-pick for ${n} (pick originally ${e.team}) in Round ${r.currentRound}`),a=r.availablePlayers,console.log("Available players from HQ Board:",a.length));const C=[...a],s=V(r.draftPicks,r.players,r.getCurrentOwner,n),m=e.round;a=a.filter(o=>H(o,s,m)),a=z(a);const I=a.filter(o=>!U(o,r.availablePlayers));I.length>0&&(a=I);const P=new Set(a.map(o=>o.id));if(a.length===0){console.log("No available players - stopping draft"),console.log("State availablePlayers length:",r.availablePlayers.length),console.log("State players length:",r.players.length),r.players.length===0&&(console.log("Players array is empty, attempting to load..."),r.loadPlayers().then(o=>{o&&console.log("Players loaded successfully on-the-fly")})),this.stopDraft();return}let i=null,h=[],S=[],A=[];try{const o=r.structuredTeamNeeds[n];if(o){const y=Y(o.primaryNeeds||[],o.secondaryNeeds||[],s,m);h=y.primaryNeeds,S=y.secondaryNeeds,A=[...h,...S]}}catch(o){console.error("Failed to load team needs:",o)}if(h.length===0&&S.length===0&&!r.structuredTeamNeeds[n]){console.error(`DraftController: Google Sheets team-needs data is unavailable for ${n}; stopping auto-pick`),this.stopDraft();return}console.log(`DraftController: Team needs for ${n}:`,{primaryNeeds:h,secondaryNeeds:S});const d=Number(e.pick),D=o=>P.has(o.id)&&(m!==2||Number(o.rank||999)<=d+15);let k=[],w=[];const E=(o,y)=>{for(const l of y){const f=o.find(v=>{var N;return(N=v.position)==null?void 0:N.startsWith(l)});if(f)return{player:f,need:l}}return null};if(r.usingMyBigBoard&&r.myBigBoardOrder&&r.myBigBoardOrder.length>0){let o=6;m===2?o=15:d<=8?o=6:d<=16?o=7:d<=24?o=8:d<=32?o=9:d<=48?o=10:d<=64?o=12:d<=100?o=15:o=20;const y=a.slice(0,o).filter(c=>m!==2||Number(c.rank||999)<=d+15);k=y;const l=F(C,h,d,D,m),f=F(C,S,d,D,m),v=l.needs,N=f.needs,x=l.players;w=x,console.log(`DraftController: Using Custom Board (Pick ${d}) - Top ${o} available players:`,y.map((c,p)=>`${p+1}. ${c.name} (${c.position})`));const B=[{label:"PRIMARY",pool:x,needs:v},...m>=4?[{label:"SECONDARY",pool:x,needs:N}]:[]];for(const c of B){const p=E(c.pool,c.needs);if(p){i=p.player,console.log(`DraftController: ✓ ${c.label} MATCH! Selected ${i.name} (${i.position}) for: ${p.need}`);break}}!i&&k.length>0&&(m<=3&&h.length>0&&console.log("DraftController: No primary-need match in the early-round look-ahead; skipping secondary-need reach and using BPA"),i=k[0],console.log(`DraftController: No match in any needs, taking HIGHEST RANKED BPA: ${i.name} (${i.position})`))}else{const o=K(C,a,h,S,d,m);k=o.selectionPool,w=o.needLookaheadPlayers,i=o.player,console.log(`DraftController: Using HQ Board (Pick ${d}); candidate pool contains ${k.length} players`),i&&console.log(`DraftController: Selected ${i.name} (${i.position}, rank ${i.rank}
1) from the HQ-board auto-pick rules`)}if(m===2&&k.length===0){console.error(`DraftController: No eligible player is available within 15 ranks of Round 2 pick ${d}; stopping instead of reaching for a distant need`),this.stopDraft();return}if(i){const o=(M=r.availablePlayers.slice().sort((f,v)=>Number(f.rank||999)-Number(v.rank||999))[0])==null?void 0:M.id,y=f=>te(Number(f.rank||999),d,f.position||"",h,S,f.id===o,r.availablePlayers,m,f.id);if(y(i).grade==="F"){const f=w,v=S.flatMap((c,p)=>f.filter(T=>{var O;return(O=T.position)==null?void 0:O.startsWith(c)}).map(T=>({player:T,grade:y(T),needIndex:p}))).sort((c,p)=>c.needIndex-p.needIndex||p.grade.totalScore-c.grade.totalScore||Number(c.player.rank||999)-Number(p.player.rank||999)),N=v.filter(c=>c.grade.grade!=="F"),x=k.filter(c=>c.id!==i.id).map(c=>({player:c,grade:y(c)})).filter(c=>c.grade.grade!=="F").sort((c,p)=>p.grade.totalScore-c.grade.totalScore||Number(c.player.rank||999)-Number(p.player.rank||999)),B=N[0]||x[0]||v.find(c=>c.player.id!==i.id);B?(i=B.player,console.log(`DraftController: Replacing F-grade need reach with ${i.name} (${i.position}, rank ${i.rank}, grade ${B.grade.grade})`)):console.warn(`DraftController: All eligible candidates grade F; keeping the best in-window option ${i.name} (rank ${i.rank})`)}console.log(`DraftController: Auto-picking ${i.name} (${i.position}) for ${n} (pick originally ${e.team})`);try{const f=e.round,N=z(r.availablePlayers.filter(g=>H(g,s,m))).filter(g=>!U(g,r.availablePlayers)).filter(g=>m!==2||Number(g.rank||999)<=d+15),B=[i,...m===2?k:a,...N].filter((g,G,W)=>g&&W.findIndex(Q=>Q.id===g.id)===G);let c=!1;for(const g of B){if(U(g,r.availablePlayers))continue;if(await $.getState().makePick(g.id,e.id)){c=!0,g.id!==i.id&&console.warn(`DraftController: Primary auto-pick was rejected; committed fallback ${g.name} (${g.position})`);break}}if(!c){console.error(`DraftController: Could not commit any valid auto-pick for ${n} at Round ${e.round}, Pick ${e.pick}`),this.stopDraft();return}const T=$.getState().draftPicks.filter(g=>g.round===f);T.filter(g=>g.playerId!==null).length===T.length&&(console.log(`DraftController: Round ${f} completed with pick ${e.pick}. Pausing for summary.`),this.pauseDraft(),document.dispatchEvent(new CustomEvent("roundCompleted",{detail:{round:f}})))}catch(f){console.error("Failed to make auto pick:",f),this.stopDraft()}}else console.log("DraftController: No suitable player found - stopping draft"),this.stopDraft()}checkRoundCompletion(){const e=$.getState(),u=e.draftPicks.filter(n=>n.round===e.currentRound);if(u.filter(n=>n.playerId!==null).length===u.length&&u.length>0)console.log(`Round ${e.currentRound} complete! Pausing draft for summary. Stay on current page.`),this.pauseDraft(),document.dispatchEvent(new CustomEvent("roundCompleted",{detail:{round:e.currentRound}}));else{const n=u.find(a=>a.playerId===null);n&&$.setState({currentPick:n.pick})}}isRunning(){return this.isActive}}const re=b.getInstance(),oe=Object.freeze(Object.defineProperty({__proto__:null,DraftController:b,draftController:re},Symbol.toStringTag,{value:"Module"}));export{b as D,oe as a,te as c,re as d};

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.