1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3818],{839:e=>{e.exports={container:"commanderDamageWidget_container__KZbxT",row:"commanderDamageWidget_row___6Dbb"}},1062:(e,t,a)=>{"use strict";a.d(t,{s:()=>n});var r=a(12804);let n=(e,t)=>{let a=t.flipped?e.back?.types||[]:e.front?.types||e.types,n=t.flipped?e.back?.subTypes||[]:e.front?.subTypes||e.subTypes;return a.find(e=>r.fz.includes(e))||n.find(e=>r.tb.includes(e))}},1281:e=>{e.exports={turnLog:"gameLogTurnLog_turnLog__F_YyL",singleTurn:"gameLogTurnLog_singleTurn__5MkJ6"}},2817:(e,t,a)=>{"use strict";a.d(t,{$c:()=>s,DZ:()=>l,wd:()=>n});var r=a(3388);let n=(e={})=>({type:r.yG,payload:e}),l=()=>({type:r.iR,payload:void 0}),s=()=>({type:r.eA,payload:void 0})},6022:e=>{e.exports={flex:"toolbar_flex___zthY",bar:"toolbar_bar__jQSBW",options:"toolbar_options__qAKc3",lifeTotal:"toolbar_lifeTotal__jgcI3",button:"toolbar_button__PDCEP",extraOptionsLarge:"toolbar_extraOptionsLarge__FlUsx",smallMenu:"toolbar_smallMenu__DpwRR",trigger:"toolbar_trigger__WI6OH",highlightOnHover:"toolbar_highlightOnHover___nwtq",menu:"toolbar_menu__JVl1F",shareDesktopMenu:"toolbar_shareDesktopMenu__3XBVl",fullHeight:"toolbar_fullHeight__ExnOW",connected:"toolbar_connected__sOlNb",extraOptionsSmall:"toolbar_extraOptionsSmall__y1ov1"}},6658:e=>{e.exports={container:"lowerThird_container__faM07",hand:"lowerThird_hand__k8vNz",otherZonesTrigger:"lowerThird_otherZonesTrigger__RP_ab",otherZonesContainer:"lowerThird_otherZonesContainer__Oefdy",otherZones:"lowerThird_otherZones__SdKdc",fixedOverlay:"lowerThird_fixedOverlay__iu0uV",flip:"lowerThird_flip__AfDFz"}},6958:e=>{e.exports={container:"playtesterCard_container__Lzfv_",contextMenu:"playtesterCard_contextMenu__Mkxv8",label:"playtesterCard_label__JCzzT",powerToughnessLabel:"playtesterCard_powerToughnessLabel__RKLal",castingCostLabel:"playtesterCard_castingCostLabel__3ZGcj",nameLabel:"playtesterCard_nameLabel__LJQYq",multiSelectIndicator:"playtesterCard_multiSelectIndicator__3gS2u"}},8570:e=>{e.exports={container:"gameLogExportOverlay_container__CDAj4",dropdown:"gameLogExportOverlay_dropdown__Rk_lx",left:"gameLogExportOverlay_left__iYEU9",right:"gameLogExportOverlay_right__e6pvg"}},12651:e=>{e.exports={container:"countersWidget_container__IM38V",row:"countersWidget_row__H9RvW",option:"countersWidget_option____YsT",icon:"countersWidget_icon__2MqwB",value:"countersWidget_value___WIBk"}},12969:e=>{e.exports={container:"allTokens_container__79IF4",backButton:"allTokens_backButton__MAbER",content:"allTokens_content__EEzAf",cards:"allTokens_cards__7zMES",more:"allTokens_more__HuhE2"}},13423:e=>{e.exports={container:"focusedCardOverlay_container__T1pRc",backButton:"focusedCardOverlay_backButton__tAqbv",content:"focusedCardOverlay_content__c228v",card:"focusedCardOverlay_card__iNoW9",rotated:"focusedCardOverlay_rotated__bjYQ9",image:"focusedCardOverlay_image__vCMto",viewAll:"focusedCardOverlay_viewAll__XIhEh",info:"focusedCardOverlay_info__edcHg",notes:"focusedCardOverlay_notes__ssn5t"}},13476:e=>{e.exports={wrapper:"interactionChanceUserSelector_wrapper__ogQDM",container:"interactionChanceUserSelector_container__AfXsA",label:"interactionChanceUserSelector_label__T8j0P",button:"interactionChanceUserSelector_button__ViVFE",selected:"interactionChanceUserSelector_selected__NCROF",disabled:"interactionChanceUserSelector_disabled__z4EnN",separator:"interactionChanceUserSelector_separator__OGiTR"}},15507:e=>{e.exports={mobileBar:"backButton_mobileBar__RQpiR",mobileBarContent:"backButton_mobileBarContent__cGDwL",desktopBar:"backButton_desktopBar__JlW5x",backButton:"backButton_backButton__fbHw7"}},21760:e=>{e.exports={chartContainer:"gameLogChart_chartContainer__o1tN1",controls:"gameLogChart_controls__a0KGV",header:"gameLogChart_header__gGo_o",barChart:"gameLogChart_barChart__wZTvO",barChartBar:"gameLogChart_barChartBar__bF6KS",tooltip:"gameLogChart_tooltip__lnbMl"}},24138:e=>{e.exports={container:"interactionLog_container__RkdIs",latestCard:"interactionLog_latestCard__DNWxN",button:"interactionLog_button__Kv77C"}},24765:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(75038);a(76430);var n=a(67574),l=a(49502),s=a(701),o=a(35308),i=a(32071);let c=({children:e,options:t,backend:a,delayTouchStart:c=0,touchSlop:d=0})=>{let u={backends:[]};return i.Ay.getIsFirefox()&&u.backends.push({id:"html5",backend:o.t2,transition:l.v8,preview:!1}),u.backends.push({id:"touch",backend:s.qi,options:{enableMouseEvents:!0,touchSlop:5},transition:l.lr}),(0,r.jsx)(n.Q,{context:window,backend:a||l.U2,options:t||u,children:e})}},26463:e=>{e.exports={flex:"countersOverlay_flex__ad3ES",content:"countersOverlay_content__g3s9P",container:"countersOverlay_container__UV66l",iconGrid:"countersOverlay_iconGrid__EaJNQ",iconOption:"countersOverlay_iconOption__PHflU",customCounter:"countersOverlay_customCounter__uO4qx"}},30402:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(75038),n=a(76430),l=a(54569),s=a(92031),o=a.n(s);let i=100,c=({data:e,onGlobalBarClick:t,maxChartHeight:a=i,relativeMaximum:n,containerClassName:l="",className:s="",labelContainerClassName:c="",style:u,handleFormatCount:p})=>{let m=n||e.reduce((e,{count:t})=>t>e?t:e,0),h=e.map(({count:e})=>e/m);
1return(0,r.jsxs)("div",{className:`${o().container} ${l}`,style:u,children:[(0,r.jsx)("div",{className:`${o().chart} ${s}`,children:e.map((e,n)=>{let l=h[n];return(0,r.jsxs)("div",{className:o().barContainer,children:[!!e.count&&(0,r.jsx)("label",{className:o().totalCount,children:p?p(e.count):e.count}),(0,r.jsx)(d,{bar:e,onGlobalBarClick:t,maxChartHeight:a,relativeChartHeight:l},e.label)]},e.label)})}),(0,r.jsx)("div",{className:o().axis}),(0,r.jsx)("div",{className:`${o().key} ${c}`,children:e.map(({label:e},t)=>(0,r.jsx)("div",{className:o().barContainer,children:(0,r.jsx)("label",{children:e})},e))})]})},d=({bar:e,onGlobalBarClick:t,maxChartHeight:a,relativeChartHeight:s})=>{let[i,c]=(0,n.useState)(!1),[d,u]=(0,n.useState)(!1),p=(0,n.useRef)(!1),m=(0,n.useRef)(null),h=(0,n.useRef)(null),y=(0,n.useCallback)(e=>{if(!h.current)return;let t=h.current.clientWidth,a=h.current.clientHeight,r=window.innerWidth||0,n=window.innerHeight||0,l=e.clientX,s=e.clientY;if(0===l&&0===s)return;let o=e.clientX>r-t,i=e.clientY>n-a,c=`translate(${l+(o?-1*t-25:25)}px, ${(i?s-a-25:s)+25}px)`;h.current.style.display="unset",h.current.style.transform=c},[i]);return(0,n.useEffect)(()=>{if(!i)return()=>document.removeEventListener("mousemove",y);document.addEventListener("mousemove",y,!1)},[i]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onMouseOver:e=>{p.current||i||(m.current=setTimeout(()=>{y(e.nativeEvent),u(!0)},250),c(!0))},onMouseLeave:()=>{u(!1),c(!1)},onTouchStart:()=>p.current=!0,onTouchEnd:()=>setTimeout(()=>p.current=!1,100),className:o().bar,onClick:a=>e.onBarClick?e.onBarClick(a,e.label):t?t(a,e.label):void 0,style:{height:`${a*s}px`,display:e.count>0?void 0:"none",backgroundColor:e.color||void 0}}),i&&l.createPortal((0,r.jsx)("div",{ref:h,className:o().tooltip,style:{opacity:d&&h?.current?.style?.transform?1:0},children:e.tooltip||e.count}),document.body)]})}},31966:e=>{e.exports={container:"battlefield_container__NL0X7",label:"battlefield_label__GGhrf",labelContainer:"battlefield_labelContainer___8kgN",controls:"battlefield_controls__hj_9j",close:"battlefield_close__6TUEU"}},33208:e=>{e.exports={container:"randomInteractionQuantitySelector_container__3fFgZ",label:"randomInteractionQuantitySelector_label__CZWFH",button:"randomInteractionQuantitySelector_button__bbOdA",selected:"randomInteractionQuantitySelector_selected__0n_y1",disabled:"randomInteractionQuantitySelector_disabled__oS8TC"}},33818:(e,t,a)=>{"use strict";let r;a.r(t),a.d(t,{PLAYTESTER_CLASS_NAME:()=>n6,__N_SSP:()=>n5,default:()=>n4,generateInitialPlaytesterData:()=>n8});var n=a(75038),l=a(76430),s=a(88398),o=a.n(s),i=a(34783),c=a.n(i),d=a(89532),u=a(12804),p=a(82185),m=a(3388),h=a(87880),y=a(37621),g=a(34763),b=a(60634),x=a(85785),f=a(98279),_=a(59816),v=a(19975),C=a(54072),j=a.n(C),k=a(59245),w=a.n(k),V=a(32071),O=a(87860),N=a(2817);let S="play-area-v2",A="snap-to-card-on-hover";function M(e,t,a){return e<t?t:e>a?a:e}let G=(e,t=!1)=>{let[a,r]=u.jo[e],n=document.getElementById(S),l=[];if(!n)return[[0,0]];let s=n.offsetWidth,o=n.offsetHeight,i=a+20,c=Math.floor(s/i),d=Math.floor(o/r),p=e=>e*i/s*100,m=(e,t)=>
1{let a=t?(o-(1+e)*r)/o*100:e*r/o*100;return 0===a?2:a};for(let e=0;e<d;e++){let a=Math.floor(c/2);for(let r=0;r<c;r++)a+=(r%2==0?1:-1)*r,l.push([m(e,t),p(a)])}return l},D=(e,t,a)=>{let[r,n]=u.jo[a],l=document.getElementById(S);if(!l)return!0;let s=l.offsetWidth,o=l.offsetHeight,i=n/2/s*100,c=[e[0],e[1]-i],d=[e[0]+n/2/o*100,e[1]+i];for(let e of Object.values(t))if(!(e[0]<c[0])&&!(e[1]<c[1])&&!(e[0]>d[0])&&!(e[1]>d[1]))return!1;return!0},T=(e,t,a,r,n=!0)=>{let[l,s]=a,[o,i]=u.jo[e],c=document.getElementById(S);if(!c)return[0,0];let d=r%10,p=Math.floor(r/10),m=c.offsetWidth,h=c.offsetHeight,y=n?1:-1,g=0,b=0,x=i/h*100,f=o/m*100;return"vertical-adjacent"===t&&(g=y*x*d+l,b=y*p*f+s),"horizontal-adjacent"===t&&(g=y*p*x+l,b=y*f*d+s),"diagonal"===t&&(g=y*x*.11*d+l,b=y*f*.15*d+y*f*p+s),"vertical"===t&&(g=y*x*.11*d+l,b=y*f*p+s),"horizontal"===t&&(g=y*x*.11*p+l,b=y*f*.15*d+s),[M(g,0,100-x),M(b,0,100-f)]},L=(e,t,a)=>{for(let r of a)if(D(r,t,e))return r;return[0,50]},I=(e,t,a=1,r,n)=>{let l=d.M.getState().playtesterV2,s=Array.isArray(e)?e:[e],{cardSize:o}=l,i=[...Array(a).keys()],u=[];for(let e of s){let t=l.allCards[e.cardId],a=i.map(()=>({...(0,b.uS)(t),id:c().generate(),cardId:e.cardId,token:e.token,tokenCopy:e.tokenCopy}));u.push(...a)}let p=[...u,...l[t]],m={...l.allCards},h={...l.cardCoordinates},y=+!!h[Array.isArray(e)?e[0]?.id:e.id],g=G(o),x=L(o,h,g);for(let e=0;e<u.length;e++)h[u[e].id]=T(o,"diagonal",r||x,e+y);return n&&(m[n.id]=n),(0,N.wd)({[t]:p,allCards:m,cardCoordinates:h})},$=(e,t,a,r,n=!1)=>{let{cardCoordinates:l,cardSize:s,battlefield:o}=d.M.getState().playtesterV2,i=o.findIndex(e=>e.id===a),c=o.find(e=>e.id===a);if(!c)return(0,N.wd)();let u=l[c?.id],p=e.map((e,t)=>T(s,r,u,t+1,n));return(0,h.aR)(e,t,"battlefield",n?0:i+1,p)};var B=a(1062);function z(e,t,a,r,n){let l={},[s,o]=u.jo[r];for(let r in e){let i=n.find(e=>e.id===r),[c,d]=e[r],u=c/100*a,p=d/100*t,[m,h]=function(e,t,a,r){let n=e+a/2,l=t+r/2,s=Math.PI/2,o=Math.cos(s),i=Math.sin(s);return[i*(e-n)+o*(t-l)+l,o*(e-n)-i*(t-l)+n-r]}(p,u,s,o);l[r]=[i?.tapped?[m,h]:[u,p],i?.tapped?[m+s,h+o]:[u+o,p+s]]}return l}function P(e,t){let[[a,r],[n,l]]=e,[[s,o],[i,c]]=t;return r!==l&&a!==n&&c!==o&&s!==i&&!(r>c)&&!(o>l)&&!(a>i)&&!(s>n)&&!0}function R(e,t,a){if(!a||!e.metaData||!e.currentZone)return[null,!1];let r=t.getClientOffset(),n=a?.getBoundingClientRect();if(!r||!n)return[null,!1];let{x:l,y:s}=r,{right:o,left:i,bottom:c,top:d}=n,u=o-i,p=c-d,m=d+.33333*p,h=d+.66666*p,y=i+.333333*u,g=i+.5*u,b=i+.666666*u;return l<y&&s<m?["diagonal",!1]:y<l&&s<m?["vertical",!1]:l<g&&m<s&&s<h?["horizontal",!1]:g<l&&m<s&&s<h?["horizontal",!0]:l<b&&h<s?["vertical",!0]:b<l&&h<s?["diagonal",!0]:[null,!1]}let H=(e,t)=>{let a=(t.counters["+1 / +1"]?.count||0)-(t.counters["-1 / -1"]?.count||0);if(t.faceDown)return[a+t.customPowerOffset,a+t.customToughnessOffset];let r=parseInt((t.flipped?e.back?.power:e.front?.power||e.power)||"0")||0,n=parseInt((t.flipped?e.back?.toughness:e.front?.toughness||e.toughness)||"0")||0;return[r+a+t.customPowerOffset,n+a+t.customToughnessOffset]},F={counterspell:"Counterspell",spotRemoval:"Spot removal",massRemoval:"Mass removal",attackers:"Attackers",mill:"Mill",stax:"Stax",discard:"Discard",nothing:"No interaction"},E={counterspell:'otag:counterspell -is:permanent o:"counter target spell." id:blue -o:permanent -o:gain -o:clash',spotRemoval:"otag:spot-removal -otag:attack-trigger -kw:ward",massRemoval:"otag:mass-removal",attackers:'t:token -t:legendary -kw:defender -kw:"double strike" (otag:french-vanilla or is:vanilla)',mill:'o:"Target player mills X"',stax:"(otag:cost-increaser or otag:hate-tutor or otag:kismet-effect or otag:hate-etb or otag:hate-storm or otag:rule-of-law)",discard:'otag:discard -"Maha, Its Feathers Night" -"Painful Quandary"',nothing:""},W={counterspell:45,spotRemoval:65,massRemoval:40,attackers:100,mill:100,stax:15,discard:30,nothing:600},Z={counterspell:3,spotRemoval:3,massRemoval:3,attackers:2,mill:2,stax:2,discard:3,nothing:2},U={1:75,2:2,3:1},X={nothing:[{card:x.o5}]},Y=()=>{let{interactionLog:e,turnCounter:t}=d.M.getState().playtesterV2;return e.reduce((e,a,r)=>{let n=t-(r+1);for(let t in a)e[t]=n;return e},{})},K=()=>{let{turnCounter:e,interactionChances:t,playVsMill:a}=d.M.getState().playtesterV2,r=.5*Math.random()+.5;return Math.ceil(Math.pow(e,2.5)/6*(.1*t.attackers)*r*(a?2:1))},J=()=>{let{interactionChances:e,turnCounter:t,playVsMill:a}=d.M.getState().playtesterV2,r=Y(),n=(()=>{let{battlefield:e,hand:t,allCards:a,turnCounter:r,playVsMill:n}=d.M.getState().playtesterV2,l=Y(),s={counterspell:0,spotRemoval:0,massRemoval:0,attackers:0,massLandDestruction:0,mill:0,stax:0,discard:0,nothing:0},o=e.map(e=>a[e.cardId]).filter(e=>e.types.includes("Creature")).length,i=e.filter(e=>!e.tapped).map(e=>a[e.cardId]).filter(e=>e.types.includes("Creature")).length,c=t.map(e=>a[e.cardId]).reduce((e,t)=>
1t.cmc>e?t.cmc:e,0),u=r>6,p=o>=4,m=i<=1;return p&&(s.massRemoval+=Math.ceil(o/4*1.5),s.counterspell-=Math.ceil(o/4),i>=4&&(s.attackers-=Math.ceil(o/4))),c>7&&u&&!p&&(s.counterspell+=1),m&&(s.massRemoval-=u?1:2,u&&(s.attackers+=2,l.massRemoval>1&&(s.counterspell+=1))),p||m||!u||(s.spotRemoval+=1),n&&(s.mill=s.attackers),s})();return Object.keys(e).reduce((l,s)=>{let o=e[s],i=W[s],c=r[s]??4,u=n[s];if("massRemoval"===s&&t<5||"mill"===s&&!a||"attackers"===s&&a)return{...l,[s]:0};let p=1/Math.max(Z[s]-c+1,1);return l[s]=Math.floor((o?Math.max(o+u,0):0)*i*(e=>{let{turnCounter:t,interactionStartTurn:a}=d.M.getState().playtesterV2;return"nothing"===e?t>=8?0:t<=a?1:Math.max(1-Math.log10(t),0):"attackers"===e&&t<6?1.5:1})(s)*p),l},{})},Q=e=>{let t="",a=Math.floor(Math.random()*Object.values(e).reduce((e,t)=>e+=t,0)),r=Object.keys(e).sort((t,a)=>e[t]-e[a]>0?1:-1),n=0,l=r.reduce((t,a)=>(n+=e[a],t[a]=n,t),{});for(let e of r)if(l[e]>a){t=e;break}return t},q=async()=>{let e,{turnCounter:t,interactionsEnabled:a,interactionStartTurn:r,maxNumberOfPullsForTurn:n,interactionIncludesGameChangers:l}=d.M.getState().playtesterV2;if(a&&t>=r&&ee({interactionsOverlay:"log"}),!a||t<r)return X;let s=(e=Number(Q(Object.keys(U).reduce((e,a)=>{let r=Number(a);return e[r]=Math.floor(U[r]+t*r),e},{}))))>n?n:e,o={};for(let e=0;e<s;e++){let e,a="nothing",r=x.o5,n=0;if(a=Q(J()),Object.keys(o).includes(a)||(o[a]=[]),"nothing"===a){o[a]?.push({card:r});continue}if("attackers"===a||"mill"===a){let t=Math.random()>.5;e=K(),n=t?Math.ceil(Math.min(e/2,8)):1}let s=`${E[a]} game:paper ${l?"":"-is:gamechanger"}`;"attackers"!==a?(s+=` mv<${t+2} is:spell -is:flip -is:transform -is:mdfc format:commander`,"mill"!==a&&"counterspell"!==a&&(s+=" edhrec<2000")):s+=` power>=${n} power<${t}`,r=await _.Ay.scryfallRandomCard(s),o[a]?.push({card:r,totalDamage:e})}return o},ee=e=>d.M.dispatch((0,N.wd)(e)),et=(e,t)=>d.M.dispatch(((e,t)=>{let a=d.M.getState().playtesterV2,r=a.allCards[e.cardId],n=a.cardCoordinates,l=a.cardSize;if(!r)return(0,N.wd)({});let s=G(l,r.types.includes("Land")||!e.flipped&&r.front?.types.includes("Land")||e.flipped&&r.back?.types.includes("Land")),o=L(l,n,s);return(0,h.aR)(e,t,"battlefield",0,o)})(e,t)),ea=e=>d.M.dispatch((0,h.MK)(e)),er=(e=1,t=!1)=>d.M.dispatch((0,h.kX)(e,t)),en=()=>{let{upkeepReminderActive:e}=d.M.getState().playtesterV2;ee({upkeepReminderActive:!e})},el=(e,t)=>d.M.dispatch((0,h.Xj)(e,t)),es=(e,t)=>d.M.dispatch((0,h.J9)(e,t)),eo=(e,t,a,r)=>d.M.dispatch((0,h.aR)(e,t,a,r)),ei=(e,t,a)=>d.M.dispatch(((e,t,a=[0,0])=>{let{cardCoordinates:r,cardSize:n,battlefield:l}=d.M.getState().playtesterV2,s={...r},o=l.filter(t=>e.includes(t.id)).reverse();for(let e=0;e<o.length;e++){let r=o[e],l=T(n,t,a,e);s[r.id]=l}return(0,N.wd)({cardCoordinates:s})})(e,t,a)),ec=(e,t,a)=>d.M.dispatch(((e,t,a=[0,0])=>{let{cardCoordinates:r,battlefield:n}=d.M.getState().playtesterV2,l={...r},s=n.filter(t=>e.includes(t.id)).reverse(),[o,i]=a;for(let e=0;e<s.length;e++){let a=s[e],[n,c]=r[a.id]||[0,0];"vertical"===t&&(l[a.id]=[n,i]),"horizontal"===t&&(l[a.id]=[o,c])}return(0,N.wd)({cardCoordinates:l})})(e,t,a)),ed=(e,t,a,r)=>d.M.dispatch(I(e,t,r,a)),eu=()=>{let{turnCounter:e,interactionsEnabled:t,fetchingRandomCards:a,onOpponentsTurn:r}=d.M.getState().playtesterV2;if(!a)return t&&!r&&e>0?ep():em(!0)},ep=()=>{let{turnCounter:e,interactionStartTurn:t}=d.M.getState().playtesterV2,a=e>=t;ee({onOpponentsTurn:a,...(()=>{let{interactionsEnabled:e,interactionStartTurn:t,interactionLog:a,turnCounter:r,fetchingRandomCards:n,interactionsOverlay:l}=d.M.getState().playtesterV2,s=j()(a);if(n)return s.push(X),{interactionLog:s};(!e||r<Number(t))&&s.push(X);let o=e&&r>=t;return{interactionsOverlay:o?"log":l,fetchingRandomCards:o,interactionLog:s}})()}),a||em(!0)},em=(e=!1)=>{let{upkeepReminderActive:t,battlefield:a,turnCounter:r,multiplayerFormat:n,allCards:l,onOpponentsTurn:s}=d.M.getState().playtesterV2;ee({onOpponentsTurn:!e&&s,turnCounter:r+ +!!e,battlefield:a.map(e=>{let t=l[e.cardId],a=(0,B.s)(t,e);return{...e,tapped:!!a}})}),!t&&(0!==r||n)&&e&&er(1)},eh=(e,t,a)=>{let{battlefield:r,cardCoordinates:n,cardSize:l}=d.M.getState().playtesterV2,s=document.getElementById(S);if(!s||!r.find(t=>
1t.id===e.id))return;let o=z(n,s.clientWidth,s.clientHeight,l,r),i=Object.keys(o).reduce((t,a)=>{let r=P(o[e.id],o[a]);return r?{...t,[a]:r}:t},{}),c=r.reduce((e,t,a)=>(i[t.id]&&e.push({id:t.id,index:a}),e),[]);if(c.length<2)return;let u=c.findIndex(t=>t.id===e.id);u===c.length-1&&t>0&&(a=0),0===u&&t<0&&(a=r.length-1);let p=c[u].index,m=void 0!==a?a:c[u+t].index,h=j()(r),y=h.splice(p,1);h.splice(m,0,...y),ee({battlefield:h})},ey=()=>d.M.dispatch((0,N.DZ)());var eg=a(40120),eb=a(75313),ex=a(21890),ef=a(96029),e_=a(56068),ev=a(80869),eC=a.n(ev);let ej=({title:e})=>(0,n.jsx)("div",{className:eC().container,children:(0,n.jsxs)("div",{className:eC().titleBox,children:["Token - ",e]})});var ek=a(61849),ew=a(83330),eV=a.n(ew);let eO=({counters:e,moveCountersToRight:t})=>{let a=(0,p.GV)(e=>e.playtesterV2.countersOverTextBoxes);return Object.keys(e).length?(0,n.jsx)("div",{className:`${eV().container} ${a?eV().reverseContainer:""}`,children:(0,n.jsx)("div",{className:`${eV().counters} ${t?eV().rightCounters:""} ${a?eV().reverseCounters:""}`,children:Object.keys(e).map((t,a)=>{let r=e[t];return(0,n.jsxs)("span",{className:eV().counter,children:[r.count,": ",r.icon?(0,n.jsx)(ek.A,{icon:r.icon}):t]},`${t}-${a}`)})})}):null};var eN=a(94397),eS=a.n(eN);let eA=({card:e,customPowerOffset:t,customToughnessOffset:a,isFlipped:r})=>{if(!t&&!a)return null;let l=!!e.front&&e.back,s=Number(r&&l?e.back?.power:e.power||e.front?.power)||0,o=Number(r&&l?e.back?.toughness:e.toughness||e.front?.toughness)||0;return(0,n.jsx)("div",{className:eS().container,children:(0,n.jsxs)("div",{className:eS().titleBox,children:[(0,n.jsx)(ek.A,{icon:"power"})," ",t+s,"/",(0,n.jsx)(ek.A,{icon:"toughness"})," ",a+o]})})};var eM=a(56774),eG=a.n(eM);let eD=({commandTax:e})=>e?(0,n.jsx)("div",{className:eG().container,children:(0,n.jsxs)("div",{className:eG().counters,children:[(0,n.jsxs)("span",{className:eG().counter,children:[e,": ",(0,n.jsx)(eg.A,{name:"money"})]}),")"]})}):null;var eT=a(75009),eL=a.n(eT);let eI=({dropPreviewLocation:e,tapped:t,dropDirection:a,style:r={}})=>{let l=(0,p.GV)(e=>e.playtesterV2.isCtrlHeldDown);if(document.body.classList.remove(A),null===e||!l)return null;let s=a?"":"-",o={},i="";return("horizontal"===e||"diagonal"===e)&&(i+=` translateX(${s+"15%"})`),("vertical"===e||"diagonal"===e)&&(i+=` translateY(${s+"11%"})`),t&&(i+=" rotate(90deg)"),o.transform=i,a&&(o.zIndex=1),document.body.classList.add(A),(0,n.jsx)("div",{style:{...r,...o},className:eL().cardDropPreview})};var e$=a(50094),eB=a.n(e$);let ez=({showSleeves:e})=>{let t=(0,p.GV)(e=>e.playtesterV2.sleevesColor),a=(0,p.GV)(e=>e.playtesterV2.sleevesUrl);if(!e||!t&&!a)return null;let r={};return t&&(r.backgroundColor=t),(0,n.jsx)(ef.TT,{className:eB().sleeve,style:r})};var eP=a(83127),eR=a.n(eP),eH=a(43903),eF=a(84806),eE=a(64205);let eW=(e,t)=>({label:"Play Card",icon:"play",onClick:()=>et(e,t)}),eZ=e=>{let t={hand:"H",graveyard:"Y",library:"F"}[e]||void 0;return{label:`Search ${eR()(e)}`,icon:"search",keybind:t?`Ctrl + ${t}`:void 0,onClick:()=>ee({searching:e})}},eU=(e,t="hand",a)=>{let{[e]:r}=d.M.getState().playtesterV2,n=Math.floor(Math.random()*r.length),l=r[n];return{label:a||`Random card to ${t}`,icon:"th",onClick:()=>eo(l,e,t)}},eX=(e,t,a,r)=>{let n=Array.isArray(e),l={battlefield:"B",hand:"H",graveyard:"G",exile:"E"},s=n?e:[e?.id];if(!s)return{icon:"arrow right",label:"Move all cards to",onClick:()=>null,disabled:!0};let o=["battlefield","hand","graveyard","exile","commandZone"].filter(e=>e!==t&&(!a||"battlefield"!==e)).map(a=>({label:eR()(a),keybind:l[a],onClick:()=>"battlefield"===a?et(e,t):eo(e,t,a)})),i=r?[]:[{label:"Top of library",onClick:()=>eo(e,t,"library",0),keybind:"Y"},{label:"Bottom of library",onClick:()=>
1eo(e,t,"library",-1),keybind:"L"},{label:"Bottom of library shuffled",hidden:!Array.isArray(e),onClick:()=>eo((0,eE.$)(e),t,"library",-1)},{label:"X of library",onClick:()=>ee({xinputField:"X from top",xinputMetaIds:s,xinputZone:t}),hidden:r},{label:"Shuffle into library",onClick:()=>{eo(e,t,"library",0),ea("library")},hidden:r}];return{type:"extras",label:n?"Move all cards to":"Move to",id:"move-to-extras",icon:"arrow right",options:[...o,{type:"spacer",hidden:r},...i]}},eY=(e,t)=>({label:"Card actions",icon:"weight",type:"extras",id:"card-action-extras",options:[((e,t)=>{let{allCards:a}=d.M.getState().playtesterV2;return{label:"Flip card",manaFontIcon:"ability-transform",hidden:!e.map(e=>a[e?.cardId]).reduce((e,t)=>!!e&&eF.Yp.includes(t?.layout),!0),keybind:"F",onClick:()=>el(e.map(e=>({...e,flipped:!e.flipped})),t)}})(e,t),{label:e[0]?.faceDown?"Flip face up":"Flip face down",icon:e[0]?.faceDown?"arrow alternate circle up outline":"arrow alternate circle down outline",keybind:"M",onClick:()=>el(e.map(e=>({...e,faceDown:!e.faceDown})),t)},{label:"Flip card 180\xb0",icon:"refresh",keybind:"J",onClick:()=>el(e.map(e=>({...e,upsideDown:!e.upsideDown})),t)},{label:e[0]?.dimmed?"Un-dim card":"Dim card",icon:e[0]?.dimmed?"circle":"circle outline",keybind:"P",onClick:()=>el(e.map(e=>({...e,dimmed:!e.dimmed})),t)}]}),eK=(e,t)=>({label:"Add counters",icon:"add",id:"add-counters-extra",type:"extras",options:[...Object.keys(eH.FX).map(a=>({label:a,manaFontIcon:eH.FX[a].icon,noCloseOnClick:!0,onClick:()=>el(e.map(e=>{let t={...e.counters};return t[a]?t[a].count++:t[a]={...eH.FX[a]},{...e,counters:t}}),t)})),{type:"spacer"},{label:"View all counters",manaFontIcon:"ability-party",onClick:()=>ee({counterModal:!0,counterMetaIds:e.map(e=>e.id),counterModalFrom:t})}]}),eJ=(e,t)=>({label:"View card notes / details",icon:"external alternate",onClick:()=>ee({focusedCardMetaId:e.id,focusedFrom:t})}),eQ=[-3,-2,-1,1,2,3,4,5,6],eq=[1,2,3,4,5,6,7,8,9],e0=(e,t)=>({label:"Add / subtract power",manaFontIcon:"power",type:"extras",id:"custom-power-extras",options:[{label:"Clear custom power",onClick:()=>el(e.map(e=>({...e,customPowerOffset:0})),t)},{type:"spacer"},...eQ.map(a=>({label:`Power ${a>0?"+":""}${a}`,onClick:()=>el(e.map(e=>({...e,customPowerOffset:e.customPowerOffset+a})),t)})),{type:"spacer"},{label:"Power + X",onClick:()=>ee({xinputField:"Add power",xinputZone:t,xinputMetaIds:e.map(e=>e.id)})}]}),e1=(e,t)=>({label:"Add / subtract toughness",manaFontIcon:"toughness",type:"extras",id:"custom-toughness-extras",options:[{label:"Clear custom toughness",onClick:()=>el(e.map(e=>({...e,customToughnessOffset:0})),t)},{type:"spacer"},...eQ.map(a=>({label:`Toughness ${a>0?"+":""}${a}`,onClick:()=>el(e.map(e=>({...e,customToughnessOffset:e.customToughnessOffset+a})),t)})),{type:"spacer"},{label:"Toughness + X",onClick:()=>ee({xinputField:"Add toughness",xinputZone:t,xinputMetaIds:e.map(e=>e.id)})}]}),e2=(e,t)=>({label:"Add / subtract +X/+X",manaFontIcon:"counter-pin",type:"extras",id:"custom-power-toughness-extras",options:[{label:"Clear custom +X/+X",onClick:()=>el(e.map(e=>({...e,customToughnessOffset:0,customPowerOffset:0})),t)},{type:"spacer"},...eQ.map(a=>({label:`${a>0?"+":""}${a}/${a>0?"+":""}${a}`,onClick:()=>el(e.map(e=>({...e,customToughnessOffset:e.customToughnessOffset+a,customPowerOffset:e.customPowerOffset+a})),t)})),{type:"spacer"},{label:"+X/+X",onClick:()=>ee({xinputField:"Add +X/+X",xinputZone:t,xinputMetaIds:e.map(e=>e.id)})}]}),e3=(e,t,a=[0,0])=>({label:"Create token copy",manaFontIcon:"token",type:"extras",options:eq.map(r=>({label:`Create ${r} ${r>1?"copies":"copy"}`,keybind:1===r?"C":void 0,onClick:()=>ed(e.map(e=>({...e,tokenCopy:!e?.token})),t,a,r)})),id:"create-token-copy-extras"}),e5=(e,t)=>[{...eJ(e,t||"miscCards"),disabled:e.faceDown}],e6=(e,t)=>{let a=t||"library",r=d.M.getState().playtesterV2;if(r.sharedWindow&&e?.revealed)return e5(e,a);if(r.sharedWindow)return[];let n=[...[...Array(10).keys()].map(e=>e+1).map(e=>({label:`Draw ${e} card${e>1?"s":""}`,onClick:()=>er(e)})),{type:"spacer"},{label:"Choose X value",onClick:()=>ee({xinputField:"Draw"})}],l=[...[...Array(10).keys()].map(e=>e+1).map(e=>({label:`Peek ${e} card${e>1?"s":""}`,keybind:`Alt + ${e}`,onClick:()=>ee({peeking:e})})),{type:"spacer"},{label:"Peek X cards",onClick:()=>ee({xinputField:"Peeking"})}],s=[...[...[,,,,,].keys()].map(e=>e+1).map(e=>({label:`Peek ${e} bottom card${e>1?"s":""}`,onClick:()=>ee({peeking:-1*e})}))],o=[...[...Array(10).keys()].map(e=>e+1).map(e=>({label:`Mill ${e} card${e>1?"s":""}`,onClick:()=>((e=1)=>d.M.dispatch((0,h.q)(e)))(e)})),{label:"Mill X cards",onClick:()=>ee({xinputField:"Milling"})}];return[{label:"Draw",keybind:"D",icon:"arrow right",onClick:()=>eo(e,a,"hand")},{label:"Draw X",icon:"arrow right",type:"extras",id:"draw-x-extras",options:n},eX(e,a),{type:"spacer"},eZ(a),{label:`Shuffle ${eR()(a)}`,icon:"shuffle",keybind:t?void 0:"Ctrl + S",onClick:()=>ea(t)},eU("library","hand","Draw random card"),{type:"spacer"},{label:e?.revealed?"Hide":"Reveal",icon:e?.revealed?"eye slash":"eye",onClick:()=>el({...e,revealed:!e?.revealed},a)},{type:"extras",label:"Peek top X cards...",icon:"eye dropper",id:"peek-card-extras",options:l},{type:"extras",label:"Peek bottom X cards...",icon:"eye dropper",id:"peek-card-extras-bottom",options:s},{type:"extras",label:"Mill X cards...",icon:"eye dropper",id:"mill-x-cards-extras-",options:o}
1,eY([e],a),{type:"spacer"},{type:"extras",label:"Misc options",id:"misc-options",icon:"arrow right",options:[{label:"Toggle upkeep reminder",onClick:en},{label:"Draw from bottom of library",onClick:()=>er(1,!0)}]}]};var e4=a(31966),e8=a.n(e4);let e7=({cardMetaId:e,counterName:t})=>{let a=(0,p.GV)(e=>e.playtesterV2.battlefield).find(t=>t.id===e),[r]=(0,p.dN)(h.Xj),l=a?.counters[t],s=e=>{if(!l||!a)return;let n={...l,count:e>-1?e:0},s={...a.counters,[t]:n};r({...a,counters:s},"battlefield")};return a&&l?(0,n.jsxs)("div",{className:e8().container,children:[(0,n.jsx)("div",{className:e8().labelContainer,children:(0,n.jsxs)("div",{className:e8().label,children:[l.icon&&(0,n.jsx)(ek.A,{icon:l.icon}),t]})}),(0,n.jsxs)("div",{className:e8().controls,children:[(0,n.jsx)("button",{onClick:()=>s((l?.count||0)-1),children:"-"}),(0,n.jsx)("input",{value:l.count||0,type:"number",onChange:e=>s(Number(e.target.value)||0)}),(0,n.jsx)("button",{onClick:()=>s((l?.count||0)+1),children:"+"})]}),(0,n.jsx)("button",{className:e8().close,onClick:()=>{if(!a)return;let e={...a.counters};delete e[t],r({...a,counters:e},"battlefield")},children:(0,n.jsx)(eg.A,{name:"trash"})})]}):null},e9=(e,t,a)=>{let r=t||"miscCards",n=d.M.getState().playtesterV2.allCards[e.cardId],l=eF.Yp.includes(n?.layout);return d.M.getState().playtesterV2.sharedWindow?[]:[eW(e,r),{type:"extras",label:"Play as",icon:"play",id:"play-as-extras",options:[{label:"Play tapped",manaFontIcon:"tap",onClick:()=>et({...e,tapped:!0},r)},{label:"Play flipped",manaFontIcon:"ability-transform",onClick:()=>et({...e,flipped:!0},r),hidden:!l},{label:"Play face down",icon:"arrow alternate circle down outline",onClick:()=>et({...e,faceDown:!0},r)}]},eX(e,r,void 0,a),eY([e],r)]};var te=a(92937),tt=a.n(te);let ta=({cardMetaId:e})=>{let t=(0,p.GV)(e=>e.playtesterV2.commandZone).find(t=>t.id===e),[a]=(0,p.dN)(h.Xj),r=e=>{t&&a({...t,commandTax:e>-1?e:0},"commandZone")};return t?(0,n.jsxs)("div",{className:tt().container,children:[(0,n.jsx)("div",{className:tt().label,children:"Command Tax"}),(0,n.jsxs)("div",{className:tt().controls,children:[(0,n.jsx)("button",{onClick:()=>r((t?.commandTax||0)-1),children:"-"}),(0,n.jsx)("input",{value:t.commandTax||0,type:"number",onChange:e=>r(Number(e.target.value)||0)}),(0,n.jsx)("button",{onClick:()=>r((t?.commandTax||0)+1),children:"+"})]})]}):null},tr=(e,t)=>[eZ(t),eU(t),eJ(e,t)],tn={battlefield:e=>{let t="battlefield",a=d.M.getState().playtesterV2,r=a.cardCoordinates[e.id]||[0,0];if(a.sharedWindow)return e5(e,t);let l=Object.keys(e.counters).map((t,a)=>({type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(e7,{cardMetaId:e.id,counterName:t},`${t}-${a}`)}));return[{label:e.tapped?"Untap":"Tap",keybind:"T",manaFontIcon:e.tapped?"untap":"tap",onClick:()=>el({...e,tapped:!e.tapped},t)},eX(e,t),eY([e],t),{type:"spacer"},eK([e],t),...l,{type:"spacer"},e0([e],t),e1([e],t),e2([e],t),{type:"spacer"},eJ(e,t),{type:"spacer"},e3([e],t,r),{type:"spacer"},{label:"Delete card from game",icon:"trash",onClick:()=>es(e,t)}]},hand:e=>{let t="hand",a=d.M.getState().playtesterV2,r=a.allCards[e.cardId],n=eF.Yp.includes(r?.layout);return a.sharedWindow&&!a.showPopoutHand?[]:a.sharedWindow?e5(e,t):[eW(e,t),{type:"extras",label:"Play as",icon:"play",id:"play-as-extras",options:[{label:"Play tapped",manaFontIcon:"tap",onClick:()=>et({...e,tapped:!0},t)},{label:"Play flipped",manaFontIcon:"ability-transform",onClick:()=>et({...e,flipped:!0},t),hidden:!n},{label:"Play face down",icon:"arrow alternate circle down outline",onClick:()=>et({...e,faceDown:!0},t)}]},eX(e,t),eY([e],t),{type:"spacer"},eJ(e,t)]},library:e6,commandZone:(e,t)=>{let a=t||"commandZone";return d.M.getState().playtesterV2.sharedWindow?tr(e,a):e?[eW(e,a),eX(e,a),{type:"spacer"},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(ta,{cardMetaId:e.id})},{type:"spacer"},eZ(a),eY([e],a),{type:"spacer"},eJ(e,a)]:[]},exile:e=>tr(e,"exile"),graveyard:e=>tr(e,"graveyard"),sideboard:e=>tr(e,"sideboard"),attractions:(e,t)=>e6(e,t||"attractions"),junkyard:e=>tr(e,"junkyard"),planes:(e,t)=>e6(e,t||"planes"),miscCards:e9,opponentsCards:e=>tr(e,"opponentsCards")};var tl=a(57146),ts=a(6958),to=a.n(ts);let ti=({metaData:e,currentZone:t,index:a,onDragOver:r,onDrop:s,onDragOut:o,onMouseDown:i,onMouseUp:c,onWheel:h,cardProps:y={},style:g,className:b="",useMiscCardsOptions:x=!1,cardSizeOverride:f,draggedCard:_,skipLibraryOptions:C})=>{let j=(0,l.useRef)(null),[k,w]=(0,l.useState)(null),[N,S]=(0,l.useState)(!1),[A,M]=(0,l.useState)(!1),[G,D]=(0,l.useState)(!1),T=(0,p.GV)(t=>t.playtesterV2.allCards[e.cardId]),L=(0,p.GV)(e=>e.playtesterV2.cardSize),I=(0,p.GV)(e=>e.playtesterV2.cardLabelShown),$=(0,p.GV)(t=>t.playtesterV2.selected[e.id]),B=(0,p.GV)(e=>e.playtesterV2.defaultActionOnClick),z=(0,p.GV)(e=>e.playtesterV2.currentlyDraggedCards),P=(0,p.GV)(e=>e.playtesterV2.hideFoilOverlay),H=(0,p.GV)(e=>e.playtesterV2.sleevesColor),F=(0,p.GV)(e=>e.playtesterV2.sleevesUrl),E=(0,p.GV)(e=>e.playtesterV2.isCtrlHeldDown),W=(0,p.GV)(e=>e.playtesterV2.multiSelectingWithoutControl),Z=(0,p.GV)(e=>e.playtesterV2.globalCardTransform),U=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[X]=(0,p.zU)(m.yG),[Y,K,J,Q,q]=u.jo[f||L],et=z[e.id];u.HQ.includes(t);let[{handlerId:ea,isOver:er},en]=(0,v.H)({accept:O.U.CARD,collect:e=>({handlerId:e.getHandlerId(),isOver:e.isOver()}),hover:(e,n)=>{"battlefield"===t&&((e,t,a)=>{let[r,n]=R(e,t,a);!r||!a||e.metaData&&e.currentZone&&(M(n),S(e.metaData.tapped),w(r))})(e,n,j.current),r&&r(e,n,j.current,a)},drop:(t,a)=>{s&&s(t,a,j.current,e.id)}},[e,a,t,T,y]);if((0,l.useEffect)(()=>{!er&&(w(null),o&&o(j.current))},[er]),en(j),!T)return null;let el=(0,tn[t])(e,t);if(x)el=e9(e,t,C);else{let t,a,r,n,l,s,o,i,c,u;$&&(t="battlefield",r=(a=d.M.getState().playtesterV2).battlefield,l=Object.keys(n=a.selected),s=a.cardCoordinates[e.id]||[0,0],o=r.filter(e=>n[e.id]),i=e=>{ee({[t]:r.map(t=>n[t.id]?{...t,...e}:t)})},c={label:"Tap all selected",keybind:"T",manaFontIcon:"tap",onClick:()=>i({tapped:!0})},u={label:"Untap all selected",manaFontIcon:"untap",onClick:()=>i({tapped:!1})},el=[...e.tapped?[u,c]:[c,u],{type:"spacer"},eX(l,t),{label:"Group cards",icon:"group",id:"group-cards-extras",type:"extras",options:[{label:"Diagonally",onClick:()=>ei(l,"diagonal",s),keybind:"Ctrl + 1"},{label:"Vertically",onClick:()=>ei(l,"vertical",s),keybind:"Ctrl + 2"},{label:"Horizontally",onClick:()=>ei(l,"horizontal",s),keybind:"Ctrl + 3"},{type:"spacer"},{label:"Horizontally adjacent",onClick:()=>ei(l,"horizontal-adjacent",s)},{label:"Vertically adjacent",onClick:()=>ei(l,"vertical-adjacent",s)}]},{label:"Align Cards",icon:"align left",id:"align-cards-extras",type:"extras",options:[{label:"Horizontally",onClick:()=>ec(l,"horizontal",s)},{label:"Vertically",onClick:()=>ec(l,"vertical",s)}]},eY(o,t),{type:"spacer"},eK(o,t),{type:"spacer"},e0(o,t),e1(o,t),e2(o,t),{type:"spacer"},e3(o,t),{type:"spacer"},{label:"Delete card from game",icon:"trash",onClick:()=>es(l,t)}])}let eo={},ed=e.faceDown?tl.U0:void 0,eu=y.overrideImageUrl||ed,ep=!!eu||e.faceDown,em=ep&&(H||F)?0:J,eh=T.types.find(e=>u.fz.includes(e))&&!ep;return e.tapped&&(eo.transform="rotate(90deg)"),e.upsideDown&&(eo.transform="rotate(180deg)"),e.tapped&&e.upsideDown&&(eo.transform="rotate(270deg)"),e.dimmed&&(eo.opacity=.4),et&&!_&&(eo.opacity=0,eo.pointerEvents="none",eo.userSelect="none",eo.position="absolute",eo.zIndex=-1),Object.keys(z).length&&!E&&"battlefield"===t&&(eo.pointerEvents="none"),(Z===e.id||G)&&("battlefield"===t&&(eo.position="fixed",eo.top=j.current?.offsetTop||0,eo.left=j.current?.offsetLeft||0),eo.zIndex=10,eo.transform="scale(2)",eh&&(eo.transform="scale(2) rotate(90deg)")),(0,n.jsxs)(e_.A,{noBrowserContextMenuWithNoOptions:!0,options:el,skipPinningOnLeftClickAction:!0,openOnLeftClick:(!B||x)&&!W,menuClassName:to().contextMenu,children:["battlefield"===t&&(0,n.jsx)(eI,{style:{...g,height:K,width:Y,borderRadius:J},dropPreviewLocation:k,dropDirection:A,tapped:N}),(0,n.jsxs)("div",{ref:j,"data-handler-id":ea,onMouseOver:()=>X({cursorOverCard:e.id,cursorOverCardZone:t}),onMouseLeave:()=>X({cursorOverCard:null,cursorOverCardZone:null}),onWheel:e=>{h&&h(e)},className:`${to().container} ${b}}`,style:{...g,...eo,borderRadius:em,transformOrigin:"hand"!==t||eh?"center center"
1:"bottom right"},children:[(0,n.jsx)(ex.A,{...y,forceOnlyShowFaceUpSide:!0,checkCanDrag:()=>!U||"battlefield"===t,onClick:e=>{if(y.onClick&&y.onClick(e),(V.Ay.getOnMac()?e.metaKey:e.ctrlKey)||W||!d.M.getState().playtesterV2.defaultActionOnClick||x)return;let t=el.find(e=>e.onClick&&!e.disabled);t&&t.onClick&&t.onClick()},onMouseDown:t=>{let a=V.Ay.getOnMac()?t.metaKey:t.ctrlKey;i&&i(t),1!==t.button||a||D(!0),1===t.button&&a&&X({globalCardTransform:e.id})},onMouseUp:e=>{c&&c(e),D(!1),X({globalCardTransform:null})},skipPlaceholder:!0,card:T,flipped:y.flipped||e.flipped,overrideImageUrl:eu,overrideFoil:!ep&&!P&&void 0,style:{height:K,width:Y,minHeight:K,minWidth:Y,borderRadius:em},dragItem:{card:T,index:a,currentZone:t,metaData:e,insertAtIndex:"battlefield"===t,isMultiSelected:$}}),e.tokenCopy&&(0,n.jsx)(ej,{title:T.name}),!Z&&(0,n.jsx)(eO,{counters:e.counters,moveCountersToRight:T.subTypes.includes("Saga")}),"commandZone"===t&&!Z&&(0,n.jsx)(eD,{commandTax:e.commandTax}),!Z&&(0,n.jsx)(eA,{card:T,isFlipped:e.flipped,customPowerOffset:e.customPowerOffset,customToughnessOffset:e.customToughnessOffset}),I&&!$&&!U&&(e.revealed||"library"!==t)&&(e.revealed||"attractions"!==t)&&(e.revealed||"planes"!==t)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:to().nameLabel,style:{fontSize:Q,padding:q},children:T.name}),!!T.castingCost.length&&(0,n.jsx)("div",{className:to().castingCostLabel,style:{fontSize:Q,padding:q},children:(0,eb.MA)(T.castingCost.map(e=>`{${e}}`).join(""))}),(T.types||T.faces[0].types).includes("Creature")&&(0,n.jsxs)("div",{className:to().powerToughnessLabel,style:{fontSize:Q,padding:q},children:[T.power,"/",T.toughness]})]}),(0,n.jsx)(ez,{showSleeves:ep}),$&&(0,n.jsx)(ef.xh,{simple:!0,className:to().multiSelectIndicator,style:{borderRadius:em}})]})]})};var tc=a(8682),td=a(68835),tu=a(68529),tp=a.n(tu);let tm=({})=>(0,p.GV)(e=>e.playtesterV2.onOpponentsTurn)?(0,n.jsxs)("div",{className:tp().container,children:[(0,n.jsxs)("div",{className:tp().text,children:[(0,n.jsxs)("span",{className:tp().desktopText,children:["It's not your turn yet! Resolve any interaction that would've occured on your opponents' turns. Click here or"," ",(0,n.jsx)(eg.A,{name:"magic"}),(0,n.jsx)("b",{children:"Next turn"})," again to continue"]}),(0,n.jsx)("span",{className:tp().mobileText,children:"Wait! Resolve any interaction that would've occured on your opponents' turns."})]}),(0,n.jsx)(td.A,{className:tp().button,color:"orange",onClick:eu,children:"Continue to your turn (untap & draw)"})]}):null;var th=a(48535),ty=a.n(th);let tg=e=>{let t=["Artifact","Creature","Enchantment","Planeswalker","Land"],{battlefield:a,selected:r,allCards:n}=d.M.getState().playtesterV2,l={...r};for(let r of a){let a=n[r.cardId];if(!a)continue;let s=(r.flipped?a.back?.types:a.front?.types)||a.types,o=!!s.filter(e=>t.includes(e)).length;("creatures"===e&&s.includes("Creature")||"lands"===e&&s.includes("Land")||"artifacts"===e&&s.includes("Artifact")||"enchantments"===e&&s.includes("Enchantment")||"permanents"===e&&o||"nonland permanents"===e&&o&&!s.includes("Land")||"tokens"===e&&(r.token||r.tokenCopy))&&(l[r.id]=!0)}ee({selected:l})};var tb=a(61649),tx=a.n(tb);let tf=({className:e=""})=>{let t=(0,p.GV)(e=>e.playtesterV2.battlefield),a=(0,p.GV)(e=>e.playtesterV2.cardSize),r=(0,p.GV)(e=>e.playtesterV2.cardCoordinates),s=(0,p.GV)(e=>e.playtesterV2.selected),o=(0,p.GV)(e=>e.playtesterV2.playmatColor),i=(0,p.GV)(e=>e.playtesterV2.allCards),c=(0,p.GV)(e=>e.playtesterV2.multiSelectingWithoutControl),y=(0,p.GV)(e=>e.playtesterV2.sharedWindow);(0,p.GV)(e=>e.playtesterV2.interactionsEnabled),(0,p.GV)(e=>e.playtesterV2.interactionLog),(0,p.GV)(e=>e.playtesterV2.turnCounter);let[g,x]=(0,p.dN)(h.aR,$),[f]=(0,p.zU)(m.yG),[_,C]=(0,l.useState)(null),[k,N]=(0,l.useState)(null),[A,G]=(0,l.useState)([]),D=(0,l.useRef)(null),[T,L]=u.jo[a],I=e=>{let n=D?.current?.getBoundingClientRect();if(!n||!_)return;e.preventDefault&&e.preventDefault();let[l,o]=_,[i,c]=[e.clientX,e.clientY],d=o<c?o-n.y:c-n.y,u=l<i?l-n.x:i-n.x,p=Math.abs(i-l),m=Math.abs(c-o),h=[[d,u],[d+m,u+p]],y={...s},g=z(r,n.width,n.height,a,t),b=Object.keys(g).map(e=>({cardId:e,isOverlapped:P(h,g[e])})),x=[];for(let{cardId:e,isOverlapped:t}of b)if(t){if(x.push(e),A.includes(e))continue;y[e]?delete y[e]:y[e]=!0}else A.includes(e)&&(y[e]?delete y[e]:y[e]=!0);N([[d,u],[m,p]]),G(x),y&&f({selected:y})},B=({metaData:e,currentZone:a,isMultiSelected:n},l)=>{let s=D?.current?.getBoundingClientRect(),o=l.getClientOffset(),i=l.getInitialClientOffset(),c=l.getInitialSourceClientOffset();if(!a||!s||!o||!e||!i||!c)return;let u=D?.current?.clientWidth||0,p=100-L/(D?.current?.clientHeight||0)*100,m=100-T/u*100,h=o.x-s.x,y=o.y-s.y;if(h-=i.x-c.x,y-=i.y-c.y,e.tapped){let e=(L-T)/2;h+=e,y-=e}h=h/s.width*100,y=y/s.height*100;let b=!!r[e.id],x=j()(r);if(n){let t=d.M.getState().playtesterV2.selected,[a,n]=x[e.id],l=h-n,s=y-a;for(let e of Object.keys(t)){let t=r[e][1],a=r[e][0],n=Number(M(t+l,0,m).toFixed(10)),o=Number(M(a+s,0,p).toFixed(10));x[e]=[o,n]}}let _=M(y,0,p),v=M(h,0,m);if(b){x[e.id]=[_,v];let a=t.findIndex(t=>t.id===e.id),r=t[a];f({battlefield:n?t:[r,...t.filter((e,t)=>
1a!==t)],cardCoordinates:x})}b||g(e,a,"battlefield",0,[_,v])},[{isOver:F},E]=(0,v.H)(()=>({accept:O.U.CARD,drop:B,collect:e=>({isOver:e.isOver()})}),[t,r,a]),W=(0,l.useMemo)(()=>{let e=w()(I,15);return t=>(t.persist(),e(t))},[_]),Z=(e,t,a,r)=>{let[n,l]=R(e,t,a);if(n&&e.metaData&&e.currentZone){if(e.isMultiSelected)return x([...Object.keys(s)],"battlefield",r,n,l);x([e.metaData.id],e.currentZone,r,n,l)}};E(D);let[[U,X],[Y,K]]=k||[[],[]],J=(()=>{let{battlefield:e,tokens:t,allCards:a,multiSelectingWithoutControl:r,undo:n}=d.M.getState().playtesterV2;return[{label:"Tap all",manaFontIcon:"tap",onClick:()=>ee({battlefield:e.map(e=>({...e,tapped:!0}))})},{label:"Untap all",manaFontIcon:"untap",keybind:"U",onClick:()=>em(!1)},{type:"spacer"},{label:"New turn (untap + draw)",icon:"wizard",keybind:"N",onClick:()=>eu()},{label:"Proliferate all counters",icon:"circle-plus",onClick:()=>{let{battlefield:e,experiance:t}=d.M.getState().playtesterV2;ee({battlefield:e.map(e=>{let t=j()(e.counters);for(let e in t){let a=t[e];a.count>0&&a.count++}return{...e,counters:t}}),experiance:t?t+1:0})}},{type:"spacer"},{label:"Add token / extra",manaFontIcon:"token",type:"extras",id:"token-options",className:ty().tokenOptions,options:[...t.map(e=>{let t=a[e.cardId];if(!t)return{label:"Unknown token",onClick:()=>{}};let r=t.power&&t.toughness?`(${t.power}/${t.toughness})`:void 0;return{label:t?.name,keybind:r,onClick:()=>ed({...(0,b.uS)(),token:!0,...e},"battlefield")}}),{type:"spacer"},{label:`View all tokens (${t.length})`,onClick:()=>ee({allTokensOverlay:!0})},{label:"Search for token...",icon:"search",onClick:()=>ee({cardSearch:"tokens"})}]},{label:"Add card from search",icon:"search",onClick:()=>ee({cardSearch:"cards"})},{label:"Create custom card",icon:"add",onClick:()=>ee({customCardCreationOverlay:!0})},{type:"spacer"},{label:"Select all",icon:"arrow right",type:"extras",id:"select-all-extras",options:[{label:"Creatures",onClick:()=>tg("creatures")},{label:"Nonland permanents",onClick:()=>tg("nonland permanents")},{label:"Permanents",onClick:()=>tg("permanents")},{type:"spacer"},{label:"Lands",onClick:()=>tg("lands")},{label:"Artifacts",onClick:()=>tg("artifacts")},{label:"Enchantments",onClick:()=>tg("enchantments")},{type:"spacer"},{label:"Tokens",onClick:()=>tg("tokens")}]},{label:r?"Exit select on click":"Select on click",icon:"hand point up outline",onClick:()=>ee({multiSelectingWithoutControl:!r})},{type:"spacer"},{label:"Undo action",icon:"undo",onClick:ey,disabled:!n.length,noCloseOnClick:!0,keybind:"Ctrl + Z"}]})(),Q=Object.keys(s).length,[q,et]=t.reduce((e,t)=>{if(!s[t.id])return e;let[a,r]=H(i[t.cardId],t);return[e[0]+a,e[1]+r]},[0,0]);return(0,n.jsxs)(e_.A,{id:S,ref:D,style:{backgroundColor:o||void 0},className:`${tx().container} ${e}`,onMouseDown:e=>{if(2===e.button)return;let t=V.Ay.getOnMac()?e.metaKey:e.ctrlKey;e.target===e.currentTarget&&(!t&&Object.keys(s).length&&f({selected:{}}),G([]),N(null),C([e.clientX,e.clientY]))},onMouseMove:W,onMouseUp:()=>{C(null),N(null),G([])},menuClassName:tx().menu,options:J,children:[_&&(0,n.jsx)("div",{className:tx().dragSelectionOverlay,style:{left:X,top:U,width:K,height:Y}}),t.map(e=>{let[t,a]=r[e.id]||[0,0];return(0,n.jsx)(ti,{currentZone:"battlefield",metaData:e,cardProps:{onClick:t=>((e,t)=>{if(!(V.Ay.getOnMac()?e.metaKey:e.ctrlKey)&&!c)return;let a={...s};s[t]?delete a[t]:a[t]=!0,f({selected:a})})(t,e.id)},onWheel:t=>{eh(e,t.deltaY>0?-1:1)},onDrop:Z,style:{position:"absolute",top:`${t}%`,left:`${a}%`}},e.id)}).reverse(),!V.Ay.getIsFirefox()&&(0,n.jsxs)("div",{className:`${tx().cardLockPrompt} ${F?tx().showCardLockPrompt:""}`,children:["(",V.Ay.getOnMac()?"Cmd":"Ctrl"," + drag to group onto already placed cards)"]}),(0,n.jsx)(tm,{}),!y&&(0,n.jsx)(tc.A,{options:J,triggerClassName:tx().trigger,menuClassName:tx().notContextMenu,children:(0,n.jsxs)("button",{className:tx().triggerButton,children:[(0,n.jsx)(eg.A,{name:"ellipsis vertical"})," Playtester actions"]})}),!!Q&&(0,n.jsxs)("div",{className:tx().selectedInfo,children:[(0,n.jsxs)("div",{children:["Cards selected: ",Q]}),(0,n.jsxs)("div",{children:["Sum of power: ",q]}),(0,n.jsxs)("div",{children:["Sum of toughness: ",et]})]})]})};var t_=a(60781),tv=a(92520),tC=a.n(tv);let tj=()=>{let e=(0,p.GV)(e=>e.playtesterV2.selected),t=(0,p.GV)(e=>e.playtesterV2.battlefield),a=(0,p.GV)(e=>e.playtesterV2.allCards),r=(0,p.GV)(e=>e.playtesterV2.cardCoordinates),s=(0,p.GV)(e=>e.playtesterV2.cardSize),[o]=(0,p.zU)(m.yG),i=(0,l.useRef)(null),c=(0,l.useRef)({}),{isDragging:d,item:h}=(0,t_.V)(t=>({item:t.getItem(),isDragging:t.isDragging(),onOffsetChange:(t=>{let a=t.getItem();if(!i.current||!a||!a.metaData)return;let n=t.getInitialClientOffset(),l=t.getInitialSourceClientOffset(),o=t.getClientOffset();if(!o||!n||!l)return i.current.style.transform="";let d=n.x-l.x,p=n.y-l.y,m=o.x-d,h=o.y-p,[y,g]=u.jo[s],b=(g-y)/2,x=a.metaData.tapped?`translate(${m+b}px, ${h-b}px)`:`translate(${m}px, ${h}px)`;if(i.current.style.transform=x,!a.isMultiSelected)return;let f=r[a.metaData.id],_=document.getElementById(S);if(!f||!_)return;let[v,C]=f,j=e=>e/100*_.clientWidth,k=e=>e/100*_.clientHeight,w=j(C),V=k(v);for(let t of Object.keys(e)){let e=r[t];if(t===a.metaData.id||!e||!c.current[t])continue;let n=j(e[1])-w,l=k(e[0])-V;c.current[t].style.transform=`translate(${n}px, ${l}px)`}}
1)(t)}));(0,l.useEffect)(()=>{let t={};d&&h.metaData&&(h.isMultiSelected?Object.keys(e).forEach(e=>t[e]=!0):t[h.metaData.id]=!0),o({currentlyDraggedCards:t})},[d]);let y=h?.card||null,g=h?.isMultiSelected?Object.keys(e).length:0;return d&&(y||g)?(0,n.jsxs)("div",{className:tC().layerContainer,ref:i,id:y.id,children:[!!g&&t.map(t=>{if(!e[t.id])return null;let r=a[t.cardId];return t&&r?(0,n.jsx)("div",{className:tC().card,ref:e=>{c.current[t.id]=e},children:(0,n.jsx)(ti,{draggedCard:!0,metaData:t,currentZone:"battlefield"})},t.id):null}).reverse(),!g&&h.metaData&&(0,n.jsx)("div",{className:tC().card,children:(0,n.jsx)(ti,{draggedCard:!0,metaData:h.metaData,currentZone:"battlefield"})})]}):null};var tk=a(60119),tw=a(21159);function tV(e=globalThis){let[t,a]=(0,l.useState)([0,0]);return(0,l.useEffect)(()=>{function t(){a([e.innerWidth,e.innerHeight])}return e.addEventListener("resize",t),t(),()=>e.removeEventListener("resize",t)},[]),t}var tO=a(65884),tN=a(37716),tS=a(58198),tA=a.n(tS);let tM=({label:e,value:t,onChange:a,disabled:r})=>(0,n.jsxs)("div",{className:r?tA().disabled:void 0,children:[e&&(0,n.jsx)("label",{className:tA().label,children:e}),(0,n.jsxs)("div",{className:tA().container,children:[(0,n.jsx)("button",{disabled:r,onClick:()=>a("x-small"),className:`${tA().button} ${"x-small"===t?tA().selected:""}`,children:"1"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a("small"),className:`${tA().button} ${"small"===t?tA().selected:""}`,children:"2"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a("small-normal"),className:`${tA().button} ${"small-normal"===t?tA().selected:""}`,children:"3"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a("normal"),className:`${tA().button} ${"normal"===t?tA().selected:""}`,children:"4"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a("normal-large"),className:`${tA().button} ${"normal-large"===t?tA().selected:""}`,children:"5"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a("large"),className:`${tA().button} ${"large"===t?tA().selected:""}`,children:"6"})]})]});var tG=a(98610),tD=a(90922),tT=a(98859),tL=a.n(tT);let tI="playtester-redux-state",t$=()=>{let[e,t]=l.useState(!1),[a,r]=l.useState(!1),[s]=(0,p.zU)(m.yG);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:tL().actions,children:[(0,n.jsx)(td.A,{color:"green",onClick:()=>t(!0),icon:"save outline",children:"Save existing playtester state"}),(0,n.jsx)(td.A,{color:"blue",onClick:()=>r(!0),icon:"upload",children:"Restore playtester state"})]}),(0,n.jsx)(tD.A,{open:e,onConfirm:()=>{let e=d.M.getState().playtesterV2;tG.Ay.setObject(tI,e),t(!1),tw.A.create("Playtester state saved to local storage","Playtester","success")},onClose:()=>t(!1),header:"Save playtester state",message:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{children:"Are you sure you want to save the current playtester state?"}),(0,n.jsxs)("ul",{className:tL().list,children:[(0,n.jsxs)("li",{children:["You may only ever have"," ",(0,n.jsx)("u",{children:(0,n.jsx)("b",{children:"one deck saved"})})]}),(0,n.jsx)("li",{children:"Saving will overwrite any existing cache regardless of what deck or playtester state is currently saved"}),(0,n.jsx)("li",{children:"This state is stored locally in your browser. Clearing your browser data will make this go away"}),(0,n.jsx)("li",{children:"This allows users to refresh or close their browser and come back later without losing their game state"})]})]}),buttonText:"Save Playtester state"}),(0,n.jsx)(tD.A,{open:a,onConfirm:()=>{let e=tG.Ay.getObject(tI);if(!e)return tw.A.create("No saved playtester state found in local storage","Playtester","warning");r(!1),s(e)},onClose:()=>r(!1),header:"Restore playtester state",message:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{children:"Are you sure you want to restore the saved playtester state?"}),(0,n.jsxs)("ul",{className:tL().list,children:[(0,n.jsx)("li",{children:"This will overwrite the current playtester state"}),(0,n.jsx)("li",{children:"The deck data used will come from the cached state regardless of what is currently loaded"})]})]}),buttonText:"Restore Playteser state"})]})};var tB=a(4444),tz=a(65293),tP=a(56771),tR=a(75023),tH=a.n(tR);let tF=({open:e,onClose:t})=>{let a=(0,p.GV)(e=>e.playtesterV2.cardLabelShown),r=(0,p.GV)(e=>e.playtesterV2.handRotation),l=(0,p.GV)(e=>e.playtesterV2.upkeepReminderActive),s=(0,p.GV)(e=>e.playtesterV2.viewLargeCardOnCursorOver),o=(0,p.GV)(e=>e.playtesterV2.countersWidget),i=(0,p.GV)(e=>e.playtesterV2.commanderDamageWidget),c=(0,p.GV)(e=>e.playtesterV2.gameStatsWidget),d=(0,p.GV)(e=>e.playtesterV2.interactionsWidget),u=(0,p.GV)(e=>e.playtesterV2.hideFoilOverlay),h=(0,p.GV)(e=>e.playtesterV2.sleevesColor),y=(0,p.GV)(e=>e.playtesterV2.playmatColor),g=(0,p.GV)(e=>e.playtesterV2.playmatColorExtendsToLowerThird),b=(0,p.GV)(e=>e.playtesterV2.manualCardSize),x=(0,p.GV)(e=>e.playtesterV2.manualHandSize),f=(0,p.GV)(e=>e.playtesterV2.maxCardsShownInHand),_=(0,p.GV)(e=>e.playtesterV2.disabledFancyZoneHoverEffect),v=(0,p.GV)(e=>e.playtesterV2.disableMuliganMenu),C=(0,p.GV)(e=>e.playtesterV2.disableReloadStop),j=(0,p.GV)(e=>e.playtesterV2.hideFancyZoneArrows),k=(0,p.GV)(e=>e.playtesterV2.fancyZoneScrollDisabled),w=(0,p.GV)(e=>e.playtesterV2.countersOverTextBoxes),V=(0,p.GV)(e=>e.playtesterV2.autoCardSizeEnabled),O=(0,p.GV)(e=>e.playtesterV2.autoHandSizeEnabled),N=(0,p.GV)(e=>e.playtesterV2.autoCardSize),S=(0,p.GV)(e=>e.playtesterV2.autoHandSize),[A]=(0,p.zU)(m.yG);return(0,n.jsxs)(tB.A,{open:e,onClose:t,className:tH().container,children:[(0,n.jsx)("h1",{children:"Playtester Settings"}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Card size options"}),(0,n.jsxs)("div",{className:tH().sizeSelectors,children:[(0,n.jsx)(tM,{label:"Card Size (disabled
1when auto card size enabled)",value:b,onChange:e=>A({manualCardSize:e}),disabled:V}),(0,n.jsx)(tM,{label:"Hand Size (disabled when auto hand size enabled)",value:x,onChange:e=>A({manualHandSize:e}),disabled:O})]}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:V,onClick:()=>A({autoCardSizeEnabled:!V}),header:`Enable auto card size (${N})`,description:"The size of the cards in play automatically change based on screen size"}),(0,n.jsx)(tz.A,{checked:O,onClick:()=>A({autoHandSizeEnabled:!O}),header:`Enable auto hand size (${S})`,description:"The size of the cards in the lower third automatically change based on screen size"})]})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Hand options"}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:!r,onClick:()=>A({handRotation:!r}),header:"Disable hand rotation",description:"Remove the subtle curve from the hand (saves vertical space)"}),(0,n.jsx)(tz.A,{checked:_,onClick:()=>A({disabledFancyZoneHoverEffect:!_}),header:"Disable hand hover effect",description:'Disable the "jump" effect when mousing over cards in the hand'}),(0,n.jsx)(tz.A,{checked:j,onClick:()=>A({hideFancyZoneArrows:!j,fancyZoneScrollDisabled:!1}),header:"Hide hand scroll buttons",description:'Hides the scroll buttons "above" the hand. They are not needed if you have a scroll wheel'}),(0,n.jsx)(tz.A,{checked:k,onClick:()=>
1A({fancyZoneScrollDisabled:!k,hideFancyZoneArrows:!1}),header:"Disable hand scrolls via mouse",description:"Prevents the hand scrolling using a scroll wheel. Can be useful with some trackpads"})]}),(0,n.jsx)(tP.A,{containerClassName:tH().numericInput,header:"Max cards shown in hand",type:"number",value:f,onChange:e=>{let t=Number(e)||0;A({maxCardsShownInHand:t>=0?t:0})}})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Accessability options"}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:a,onClick:()=>A({cardLabelShown:!a}),header:"Show card labels",description:"Labels are shown for card name, mana cost, etc"}),(0,n.jsx)(tz.A,{checked:u,onClick:()=>A({hideFoilOverlay:!u}),header:"Disable foil layer",description:'Foil cards will not have the "shiny" overlay displayed'}),(0,n.jsx)(tz.A,{checked:w,onClick:()=>A({countersOverTextBoxes:!w}),header:"Move counters to text box",description:"Card counters (+1/+1 Counters, etc) are moved above the text box, rather than the art"})]})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Widgets"}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:s,onClick:()=>A({viewLargeCardOnCursorOver:!s,gameStatsWidget:!1}),header:"Static card widget",description:"Populates when hovering over a card. Useful if you want to have the cards extremely small, but still readable"}),(0,n.jsx)(tz.A,{checked:o,onClick:()=>A({countersWidget:!o,gameStatsWidget:!1,interactionsWidget:!1}),header:"Counters widget",description:"Shows the toolbar counter content in the play area. Only useful if your monitor is both narrow and tall"}),(0,n.jsx)(tz.A,{checked:i,onClick:()=>A({commanderDamageWidget:!i,gameStatsWidget:!1,interactionsWidget:!1}),header:"Commander damage widget",description:"Shows commander damage counters the play area. Only useful if your monitor is both narrow and tall"}),(0,n.jsx)(tz.A,{checked:d,onClick:()=>A({interactionsWidget:!d,gameStatsWidget:!1,countersWidget:!1,commanderDamageWidget:!1}),header:"Interactions widget",description:"Shows basic info from the interactions simulator feature (cannot be used with other widgets besides the static card)"}),(0,n.jsx)(tz.A,{checked:c,onClick:()=>A({gameStatsWidget:!c,viewLargeCardOnCursorOver:!1,countersWidget:!1,commanderDamageWidget:!1,interactionsWidget:!1}),header:"Game stats widget",description:"Shows gameplay information about the play session (cannot be used with other widgets)"})]})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Warnings/ popups"}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:l,onClick:()=>A({upkeepReminderActive:!l}),header:"Enable upkeep reminder",description:"When you use the next turn action, prompt the user to remind them that it's their upkeep"}),(0,n.jsx)(tz.A,{checked:v,onClick:()=>A({disableMuliganMenu:!v}),header:"Disable opening hand (mulligan) menu",description:"When starting a new game, prevent the opening hand overlay from opening"}),(0,n.jsx)(tz.A,{checked:C,onClick:()=>A({disableReloadStop:!C}),header:"Disable reload warning",description:"Do not open popup that prevents the page from reloading (use with caution)"})]})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Asthetic options"}),(0,n.jsx)(tN.Ay,{fullDropdown:!0,className:tH().themeDropdown}),(0,n.jsxs)("div",{className:tH().checkboxes,children:[(0,n.jsx)(tz.A,{checked:!!h,onClick:()=>A({sleevesColor:h?null:"#FFFFFF"}),header:"Enable sleeve color",description:"Shows a color when looking at the back of a card"}),(0,n.jsx)(tz.A,{checked:!!y,onClick:()=>A({playmatColor:y?null:"#FFFFFF"}),header:"Enable playmat color",description:"Change the background color of the play area"}),(0,n.jsx)(tz.A,{disabled:!y,checked:!!g,onClick:()=>A({playmatColorExtendsToLowerThird:!g}),header:"Playmat color extends to the lower third",description:"Extend the playmat color below the hand & library"})]}),h&&(0,n.jsxs)("div",{className:tH().colorPicker,children:[(0,n.jsx)("h5",{children:"Sleeve color"}),(0,n.jsx)(tO.xk,{disableAlpha:!0,color:h,onChangeComplete:e=>A({sleevesColor:e.hex})})]}),y&&(0,n.jsxs)("div",{className:tH().colorPicker,children:[(0,n.jsx)("h5",{children:"Playmat color"}),(0,n.jsx)(tO.xk,{disableAlpha:!0,color:y,onChangeComplete:e=>A({playmatColor:e.hex})})]})]}),(0,n.jsxs)("div",{className:tH().fancyGroup,children:[(0,n.jsx)("h3",{children:"Save playtester options"}),(0,n.jsx)(t$,{})]})]})};var tE=a(46587),tW=a.n(tE);let tZ=({onFocus:e,onBlur:t,disabled:a})=>{let[r]=(0,p.zU)(m.yG),l=(0,p.GV)(e=>e.playtesterV2.whiteMana),s=(0,p.GV)(e=>e.playtesterV2.blueMana),o=(0,p.GV)(e=>e.playtesterV2.blackMana),i=(0,p.GV)(e=>e.playtesterV2.redMana),c=(0,p.GV)(e=>e.playtesterV2.greenMana),d=(0,p.GV)(e=>e.playtesterV2.colorlessMana),u=(0,p.GV)(e=>e.playtesterV2.energy),h=(0,p.GV)(e=>e.playtesterV2.isCtrlHeldDown);return(0,n.jsxs)(tc.A,{onFocus:e,onBlur:t,disabled:h,menuClassName:tW().menu,options:[{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"White",icon:"w",counterName:"whiteMana",value:l,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Blue",icon:"u",counterName:"blueMana",value:s,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Black",icon:"b",counterName:"blackMana",value:o,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Red",icon:"r",counterName:"redMana",value:i,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Green",icon:"g",counterName:"greenMana",value:c,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Colorless",icon:"c",counterName:"colorlessMana",value:d,disabled:a})},{type:"custom",noCloseOnClick:!1,customChild:(0,n.jsx)(tX,{label:"Energy",icon:"e",counterName:"energy",value:u,disabled:a})},{type:"spacer"},{label:"Empty mana pool",disabled:a,onClick:()=>r({whiteMana:0,blueMana:0,blackMana:0,redMana:0,greenMana:0,colorlessMana:0,energy:0})},{type:"message",hidden:a,label:(0,n.jsx)("div",{children:(0,n.jsx)("div",{children:"Ctrl + Click below to increment "})})}],direction:"up",triggerClassName:`${tW().manaPoolDropdown}
1 ${!h&&!a?tW().highlightOnHover:""}`,children:[(0,n.jsxs)("div",{className:tW().primaryTriggerContent,children:[(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"w",label:"White",counterName:"whiteMana",value:l}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"u",label:"Blue",counterName:"blueMana",value:s}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"b",label:"Black",counterName:"blackMana",value:o}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"r",label:"Red",counterName:"redMana",value:i}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"g",label:"Green",counterName:"greenMana",value:c}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"c",label:"Colorless",counterName:"colorlessMana",value:d}),(0,n.jsx)(tU,{psudoDisabled:!h||a,className:tW().energy,icon:"e",label:"Energy",counterName:"energy",value:u})]}),(0,n.jsxs)("div",{className:tW().smallTriggerContent,children:[(0,n.jsx)(ek.A,{icon:"c"})," Mana Pool"]})]})},tU=({icon:e,semanticIcon:t,counterName:a,value:r,psudoDisabled:l,className:s})=>{let[o]=(0,p.zU)(m.yG);return(0,n.jsxs)("button",{className:`${tW().triggerGroup} ${s}`,onClick:()=>{l||o({[a]:r+1})},onContextMenu:e=>{l||(e.preventDefault(),o({[a]:r>0?r-1:0}))},children:[e&&(0,n.jsx)(ek.A,{icon:e}),t&&(0,n.jsx)(eg.A,{name:t}),": ",r]})},tX=({icon:e,semanticIcon:t,label:a,counterName:r,value:s,disabled:o})=>{let i=(0,l.useRef)(null),[c,d]=(0,l.useState)(s),[u]=(0,p.zU)(m.yG);return(0,l.useEffect)(()=>{s!==c&&d(s)},[s]),(0,n.jsxs)("div",{className:tW().manaListOption,children:[(0,n.jsxs)("span",{className:tW().label,children:[e&&(0,n.jsx)(ek.A,{icon:e}),t&&(0,n.jsx)(eg.A,{name:t}),a]}),(0,n.jsxs)("span",{className:tW().manaListOptionControls,children:[(0,n.jsx)("button",{onClick:()=>u({[r]:s>0?s-1:0}),disabled:o,children:"-"}),(0,n.jsx)("input",{ref:i,type:"number",inputMode:"numeric",min:0,className:tW().numericField,value:c,onFocus:()=>i.current?.select(),onChange:e=>d(Number(e.target.value)||0),onBlur:()=>u({[r]:c}),disabled:o}),(0,n.jsx)("button",{onClick:()=>u({[r]:s+1}),disabled:o,children:"+"})]})]})};var tY=a(55366),tK=a.n(tY);let tJ=({onFocus:e,onBlur:t,disabled:a})=>{let r=(0,p.GV)(e=>e.playtesterV2.turnCounter),l=(0,p.GV)(e=>e.playtesterV2.lifeTotal),s=(0,p.GV)(e=>e.playtesterV2.lifeTotal2),o=(0,p.GV)(e=>e.playtesterV2.commanderDamangeOne),i=(0,p.GV)(e=>e.playtesterV2.commanderDamangeTwo),c=(0,p.GV)(e=>e.playtesterV2.commanderDamangeThree),d=(0,p.GV)(e=>e.playtesterV2.commanderDamangeFour),u=(0,p.GV)(e=>e.playtesterV2.infectDamage),m=(0,p.GV)(e=>e.playtesterV2.experiance),h=(0,p.GV)(e=>e.playtesterV2.isCtrlHeldDown),y=(0,p.GV)(e=>e.playtesterV2.startingLifeTotal);return(0,n.jsx)(tc.A,{onFocus:e,onBlur:t,disabled:h,triggerClassName:tK().fullHeight,menuClassName:tK().menu,direction:"up",options:[{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Turn Count",icon:"saga",counterName:"turnCounter",value:r,disabled:a})},{type:"spacer"},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Life",semanticIcon:"heart outline",counterName:"lifeTotal",value:l,disabled:a})},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Life 2",semanticIcon:"heart outline",counterName:"lifeTotal2",value:s,disabled:a})},{type:"extras",label:"Other damage",id:"commander-damage",manaFontIcon:"counter-pin",options:[{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Infect",icon:"p",counterName:"infectDamage",value:u,disabled:a})},{type:"spacer"},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Player one",counterName:"commanderDamangeOne",value:o,disabled:a})},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Player two",counterName:"commanderDamangeTwo",value:i,disabled:a})},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Player three",counterName:"commanderDamangeThree",value:c,disabled:a})},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Player four",counterName:"commanderDamangeFour",value:d,disabled:a})}]},{type:"spacer"},{type:"custom",noCloseOnClick:!0,customChild:(0,n.jsx)(tX,{label:"Experience",icon:"rarity",counterName:"experiance",value:m,disabled:a})},{type:"message",label:(0,n.jsx)("div",{children:(0,n.jsx)("div",{children:"Ctrl + Click below to increment "})})}],children:(0,n.jsxs)("div",{className:`${tK().trigger} ${!h?tK().highlightOnHover:""}`,children:[(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"saga",label:"Turn Count",counterName:"turnCounter",value:r}),(0,n.jsx)(tU,{psudoDisabled:!h||a,semanticIcon:"heart outline",label:"Life Total",counterName:"lifeTotal",value:l}),y!==s&&(0,n.jsx)(tU,{psudoDisabled:!h||a,semanticIcon:"heart outline",label:"Life Total 2",counterName:"lifeTotal2",value:s}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"p",label:"infectDamage",counterName:"infectDamage",value:u}),(0,n.jsx)(tU,{psudoDisabled:!h||a,icon:"rarity",label:"Experience",counterName:"experiance",value:m})]})})};var tQ=a(33879),tq=a(76975),t0=a(94681),t1=a.n(t0);let t2=({open:e,onClose:t})=>{let a=(0,p.GV)(e=>e.playtesterV2.stackedDeckCardIds),[r,l,s]=(0,p.dN)(h.kX,h.xU,h.aR),[o]=(0,p.zU)(m.yG),i=!!Object.keys(a).length;return(0,n.jsxs)(tq.A,{open:e,onClose:t,closeButton:!0,modalClassName:t1().modal,children:[(0,n.jsx)("h3",{children:"Start new game options"}),(0,n.jsx)("p",{children:"Options for starting a new game in the playtester."}),(0,n.jsxs)("div",{className:t1().controls,children:[(0,n.jsxs)("div",{className:t1().block,children:[(0,n.jsx)("h4",{children:"New game"}),(0,n.jsx)("p",{children:'Deletes all state and logs from this "game". Restarts the playtester as if reloading the page.'}),(0,n.jsx)(td.A,{color:"red",onClick:()=>{l(),r(7),t()},children:"Start new game immediately"})]}),(0,n.jsxs)("div",{className:t1().block,children:[(0,n.jsx)("h4",{children:"Restart game"}),(0,n.jsx)("p",{children:'Deletes all state and logs and restarts the "game" using the same starting hand (the library is shuffled). Useful for attempting to find a better line of play from the same starting hand.'}),(0,n.jsx)(td.A,{color:"blue",onClick:()=>{let{gameLog:e}=d.M.getState().playtesterV2,a=e[0].slice(0,7).map(e=>e.id);l(),s(a,"library","hand"),t()},children:"Restart game (same hand)"})]}),(0,n.jsxs)("div",{className:t1().block,children:[(0,n.jsx)("h4",{children:"New game (keep stacked cards)"}),(0,n.jsx)("p",{children:'Deletes all state and logs and restarts the "game" while maintaining any existing "stacked cards" from the start of the last game. Useful for testing with new cards (you must stack the deck from the mulligan menu first).'}),(0,n.jsx)(td.A,{color:"blue",onClick:()=>{l(!0);let{library:e}=d.M.getState().playtesterV2,[n,s]=e.reduce((e,t)=>
1(a[t.id]?e[0].push(t):e[1].push(t),e),[[],[]]);o({stackDeckOverlay:!1,library:[...(0,eE.$)(n),...s]}),r(7),t()},disabled:!i,children:"Restart game (keep stacked cards)"})]}),(0,n.jsxs)("div",{className:t1().block,children:[(0,n.jsx)("h4",{children:"Playtester logs"}),(0,n.jsx)("p",{children:'Show logs for this "game". View cards cast, mana spent, cards drawn, etc.'}),(0,n.jsx)(td.A,{color:"blue",onClick:()=>{o({gameLogOverlay:!0}),t()},children:"View deck testing logs"})]})]})]})};var t3=a(65718),t5=a(95317),t6=a.n(t5);let t4=({deckId:e,isSnapshot:t=!1})=>{let[a,r]=(0,l.useState)(!1),[s,o]=(0,l.useState)(1),[i,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(!1),h=(0,p.GV)(e=>e.playtesterV2.defaultActionOnClick),y=(0,p.GV)(e=>e.playtesterV2.multiplayerFormat),[g]=(0,p.zU)(m.yG);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(tF,{open:a,onClose:()=>r(!1)}),(0,n.jsx)(t2,{open:d,onClose:()=>u(!1)}),(0,n.jsxs)("div",{className:t6().bar,children:[(0,n.jsx)("button",{disabled:0===s,onClick:()=>o(s-1),children:(0,n.jsx)(eg.A,{name:"chevron left"})}),(0,n.jsxs)(tQ.Ay,{enableMouseEvents:!0,index:s,onChangeIndex:o,className:i?t6().swipeBarOverride:t6().swipeBar,children:[(0,n.jsxs)("div",{className:t6().row,children:[(0,n.jsxs)("button",{onClick:()=>r(!0),children:[(0,n.jsx)(eg.A,{name:"cog"})," Settings"]}),(0,n.jsx)(tJ,{onFocus:()=>c(!0),onBlur:()=>c(!1)})]}),(0,n.jsxs)("div",{className:t6().row,children:[(0,n.jsxs)("button",{onClick:()=>g({defaultActionOnClick:!h}),children:[(0,n.jsx)(eg.A,{name:"hand point up outline"})," ",h?"Actions click":"Options click"]}),(0,n.jsxs)("button",{onClick:eu,children:[(0,n.jsx)(eg.A,{name:"magic"})," Next Turn"]}),(0,n.jsxs)("button",{onClick:()=>g({randomGeneratorOverlay:!0}),children:[(0,n.jsx)(ek.A,{icon:"ability-d20"})," Random"]}),(0,n.jsx)(tc.A,{onFocus:()=>c(!0),onBlur:()=>c(!1),menuClassName:t6().menu,options:[{label:"Homepage",icon:"home",to:"/"},{label:"Back to deck",icon:"arrow left",to:"sandbox"===e?"/sandbox":t?(0,t3.n)(e):(0,t3.cR)(e)},{type:"spacer"},{label:"Start new game",icon:"undo",onClick:()=>u(!0)},{label:"Game logs",icon:"file outline",onClick:()=>g({gameLogOverlay:!0})},{label:"Interaction simulator",icon:"chess",onClick:()=>g({interactionsOverlay:"settings"}),hidden:!y},{label:"Playtester settings",icon:"cog",onClick:()=>r(!0)}],children:(0,n.jsxs)("button",{className:t6().button,children:[(0,n.jsx)(eg.A,{name:"sliders horizontal"}),"Game options"]})})]}),(0,n.jsx)("div",{className:t6().row,children:(0,n.jsx)(tZ,{onFocus:()=>c(!0),onBlur:()=>c(!1)})})]}),(0,n.jsx)("button",{disabled:2===s,onClick:()=>o(s+1),children:(0,n.jsx)(eg.A,{name:"chevron right"})})]})]})};var t8=a(73461),t7=a(6022),t9=a.n(t7);let ae=({deckId:e,isSnapshot:t=!1})=>{let[a]=tV(),[r,s]=(0,l.useState)(!1),[o,i]=(0,l.useState)(!1),c=(0,p.GV)(e=>e.playtesterV2.defaultActionOnClick),d=(0,p.GV)(e=>e.playtesterV2.sharedWindow),u=(0,p.GV)(e=>e.playtesterV2.shareUrl),h=(0,p.GV)(e=>e.playtesterV2.showOverlaysInPopout),y=(0,p.GV)(e=>e.playtesterV2.showPopoutHand),g=(0,p.GV)(e=>e.playtesterV2.multiplayerFormat),[b]=(0,p.zU)(m.yG),x=()=>{u&&(navigator.clipboard.writeText(u),tw.A.create("Copied share URL to clipboard","Clipboard service","success"))};return a<600?(0,n.jsx)(t4,{deckId:e,isSnapshot:t}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(tF,{open:r,onClose:()=>s(!1)}),(0,n.jsx)(t2,{open:o,onClose:()=>i(!1)}),(0,n.jsxs)("div",{className:t9().bar,children:[(0,n.jsxs)("div",{className:t9().options,children:[(0,n.jsx)(t8.A,{forceSmall:!0,useInternetUrl:!0}),!d&&(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(tc.A,{direction:"up",triggerClassName:t9().fullHeight,menuClassName:t9().menu,options:[{label:"Homepage",icon:"home",to:"/"},{label:"Back to deck",icon:"arrow left",to:"sandbox"===e?"/sandbox":t?(0,t3.n)(e):(0,t3.cR)(e)},{type:"spacer"},{label:"Start new game",icon:"undo",onClick:()=>i(!0)},{label:"Game logs",icon:"file outline",onClick:()=>b({gameLogOverlay:!0})},{label:"Interaction simulator",icon:"chess",onClick:()=>b({interactionsOverlay:"settings"}),hidden:!g},{label:"Playtester settings",icon:"cog",onClick:()=>s(!0)}],children:(0,n.jsxs)("button",{className:`${t9().trigger} ${t9().button}`,children:[(0,n.jsx)(eg.A,{name:"sliders horizontal"}),"Game menu"]})})}),(0,n.jsx)(tJ,{disabled:d})]}),(0,n.jsxs)("div",{className:t9().options,children:[(0,n.jsx)(tZ,{disabled:d}
1),!d&&(0,n.jsxs)("button",{className:t9().button,title:"untap + draw",onClick:eu,children:[(0,n.jsx)(eg.A,{name:"magic"}),"Next turn"]}),!d&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:`${t9().options} ${t9().extraOptionsLarge}`,children:[(0,n.jsxs)("button",{className:t9().button,onClick:()=>b({defaultActionOnClick:!c}),children:[(0,n.jsx)(eg.A,{name:"hand point up outline"}),c?"Actions click":"Options click"]}),!u&&(0,n.jsxs)("button",{className:t9().button,onClick:()=>b({sharePlaytesterOverlay:!0}),children:[(0,n.jsx)(eg.A,{name:"share alternate",className:u?t9().connected:void 0}),"Share playtester"]}),u&&(0,n.jsx)(tc.A,{direction:"up",triggerClassName:t9().fullHeight,menuClassName:t9().shareDesktopMenu,options:[{label:"Copy share link",icon:"copy outline",onClick:x},{type:"spacer"},{label:`${h?"Hide":"Show"} overlays in share window`,onClick:()=>b({showOverlaysInPopout:!h}),icon:h?"eye slash":"eye",noCloseOnClick:!0},{label:`${y?"Hide":"Show"} hand in share window`,onClick:()=>b({showPopoutHand:!y}),icon:y?"eye slash":"eye",noCloseOnClick:!0},{type:"spacer"},{label:"Force disconnect share",icon:"share alternate",onClick:()=>{tk.A.uninitialize(),b({shareUrl:null})}}],children:(0,n.jsxs)("button",{className:t9().button,children:[(0,n.jsx)(eg.A,{name:"circle",className:t9().connected}),"Sharing options"]})}),(0,n.jsxs)("button",{className:t9().button,onClick:()=>b({randomGeneratorOverlay:!0}),children:[(0,n.jsx)(ek.A,{icon:"ability-d20"}),"Dice & coins"]}),(0,n.jsxs)("button",{className:t9().button,onClick:()=>s(!0),children:[(0,n.jsx)(eg.A,{name:"cog"}),"Settings"]})]}),(0,n.jsx)(tc.A,{direction:"up",options:[{label:c?"Actions click":"Options click",onClick:()=>b({defaultActionOnClick:!c}),icon:"hand point up outline"},{label:"Share playtester",onClick:()=>b({sharePlaytesterOverlay:!0}),icon:"share alternate",hidden:!!u},{label:"Sharing options",type:"extras",id:"share-options-overflow",icon:"share alternate",hidden:!u,options:[{label:"Copy share link",icon:"copy outline",onClick:x},{type:"spacer"},{label:"View overlays in popout",onClick:()=>b({showOverlaysInPopout:!h}),icon:h?"eye slash":"eye",noCloseOnClick:!0},{label:"View hand in popout",onClick:()=>b({showPopoutHand:!y}),icon:y?"eye slash":"eye",noCloseOnClick:!0},{type:"spacer"},{label:"Force disconnect share",icon:"share alternate",onClick:()=>{tk.A.uninitialize(),b({shareUrl:null})}}]},{label:"Dice & coins",onClick:()=>b({randomGeneratorOverlay:!0}),manaFontIcon:"ability-d20",hidden:d},{label:"Settings",onClick:()=>s(!0),icon:"cog"}],triggerClassName:`${t9().fullHeight} ${t9().extraOptionsSmall}`,menuClassName:t9().smallMenu,children:(0,n.jsxs)("button",{className:t9().button,children:[(0,n.jsx)(eg.A,{name:"ellipsis vertical"})," More"]})})]}),d&&(0,n.jsxs)("button",{className:t9().button,onClick:()=>s(!0),children:[(0,n.jsx)(eg.A,{name:"cog"}),"Settings"]})]})]})]})};var at=a(36601),aa=a(7761),ar=a(35635);let an=(0,aa.Mz)(e=>e.playtesterV2.battlefield,e=>e.playtesterV2.hand,e=>e.playtesterV2.library,e=>e.playtesterV2.sideboard,e=>e.playtesterV2.graveyard,e=>e.playtesterV2.exile,e=>e.playtesterV2.commandZone,e=>e.playtesterV2.attractions,e=>e.playtesterV2.junkyard,e=>e.playtesterV2.planes,e=>e.playtesterV2.miscCards,e=>e.playtesterV2.opponentsCards,(e,t,a,r,n,l,s,o,i,c,d,u)=>({battlefield:e,hand:t,library:a,sideboard:r,graveyard:n,exile:l,commandZone:s,attractions:o,junkyard:i,planes:c,miscCards:d,opponentsCards:u})),al=(0,aa.Mz)(e=>e.playtesterV2.searching,an,(e,t)=>e?t[e]:null),as=(0,aa.Mz)(e=>e.playtesterV2.allCards,an,(e,t)=>{let a=[...t.battlefield,...t.library,...t.hand,...t.graveyard,...t.exile];return a.sort((t,a)=>{let r=e[t.cardId],n=e[a.cardId];return(0,ar.X4)(r,n)}),a}),ao=(0,aa.Mz)(e=>e.playtesterV2.focusedCardMetaId,e=>e.playtesterV2.focusedFrom,e=>e.playtesterV2.allCards,an,(e,t,a,r)=>{let n=(t?r[t]:[]).find(t=>t.id===e);return n?[a[n.cardId],n]:[void 0,void 0]}),ai=(0,aa.Mz)(e=>e.playtesterV2.cursorOverCard,e=>e.playtesterV2.cursorOverCardZone,e=>e.playtesterV2.allCards,an,(e,t,a,r)=>{let n=(t?r[t]:[]).find(t=>t.id===e);return n?[a[n.cardId],n,t]:[void 0,void 0,t]}),ac=e=>(0,aa.Mz)(e=>e.playtesterV2.gameLog,t=>{let a=[];for(let e=0;e<t.length;e++){let r=t[e],n=Object.values(a[e-1]||{}).map(e=>({...e,fromZone:null,toZone:null})).reduce((e,t)=>
1({...e,[t.id]:t}),{});for(let t of(a[e]={...n},r))a[e][t.id]=t}let r=a.map(e=>Object.values(e));return e?r.map(t=>t.filter(t=>t.zone===e)):r}),ad=(0,aa.Mz)(ac("battlefield"),e=>e.playtesterV2.allCards,(e,t)=>e.map(e=>e.filter(e=>Object.values(t[e.cardId].manaProduction).some(e=>e>0)).map(e=>e.cardId))),au=(0,aa.Mz)(e=>e.playtesterV2.gameLog,e=>e.playtesterV2.allCards,e=>e.map(e=>e.filter(e=>"hand"===e.toZone&&"library"===e.fromZone).map(e=>e.cardId))),ap=(0,aa.Mz)(e=>e.playtesterV2.gameLog,e=>e.playtesterV2.allCards,(e,t)=>e.map(e=>e.filter(e=>"battlefield"===e.toZone).map(e=>{let a=t[e.cardId],r=a.front?.castingCost||a.castingCost;return e.flipped&&a.back?.castingCost&&a.back.castingCost.length&&(r=a.back.castingCost),e.faceDown&&(r=[]),{id:e.cardId,cmc:a.cmc,castingCost:r}}))),am=(0,aa.Mz)((r="graveyard",(0,aa.Mz)(e=>e.playtesterV2.gameLog,e=>{let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(let e of(t[a]={},r))t[a][e.id]=e}let a=t.map(e=>Object.values(e));return r?a.map(e=>e.filter(e=>e.zone===r)):a})),e=>e.map(e=>e.map(e=>e.cardId))),ah=(0,aa.Mz)(ac("battlefield"),e=>e.playtesterV2.allCards,(e,t)=>e.map(e=>e.map(e=>{let[a]=H(t[e.cardId],e);return{id:e.cardId,power:a}})));a(54569);var ay=a(10675),ag=a(15507),ab=a.n(ag),ax=a(69670),af=a.n(ax),a_=a(96807);let av=({open:e=!1,className:t="",openClassName:a="",style:r,children:s=null,onClose:o,fadeTime:i=200,ignoreBehindScrolling:c=!1})=>{let d=(0,l.useRef)(e),[u,p]=(0,l.useState)(e),[m,h]=(0,l.useState)(!1),y=(0,a_.hw)(e),g=e=>{!o||!1===d.current||(0,ay.h_)(e)||"Escape"===e.key&&(e.preventDefault(),o())};return((0,l.useEffect)(()=>(document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)),[]),(0,l.useEffect)(()=>{e&&!c?y(!0):y(!1),d.current=e,i?setTimeout(()=>p(e),i):p(e)},[e,c,i]),!1===e&&!1===u)?null:(0,n.jsxs)("div",{className:`${u&&e&&`${af().open} ${a}`} ${af().overlay} ${t}`,style:{transition:`transform ${i}ms ease-out, opacity ${i/2}ms ease-out, background-color ${i/1.5}ms ease-out`,...r},children:[s,(0,n.jsx)("div",{onMouseDown:e=>{e.target===e.currentTarget?h(!0):h(!1)},onMouseUp:e=>{e.target===e.currentTarget&&m&&o&&o(),h(!1)},className:af().weirdCloseContainer}),(0,n.jsx)("div",{className:af().grid})]})},aC=({onBack:e,children:t,mobileClassName:a="",className:r=""})=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:`${ab().mobileBar} ${a}`,children:(0,n.jsxs)("div",{className:`${ab().mobileBarContent} ${r}`,children:[(0,n.jsxs)("button",{onClick:e,children:[(0,n.jsx)(eg.A,{name:"arrow left"}),(0,n.jsx)("span",{children:"Back"})]}),t]})}),(0,n.jsxs)("div",{className:ab().desktopBar,children:[(0,n.jsxs)("button",{onClick:e,className:`${ab().backButton} ${r}`,children:[(0,n.jsx)(eg.A,{name:"arrow left"}),(0,n.jsx)("span",{children:"Back"})]}),t]})]});var aj=a(75249),ak=a(26975),aw=a(39364),aV=a.n(aw);let aO=()=>{let[e,t]=(0,l.useState)([]),[a,r]=(0,l.useState)(!0),[s,o]=(0,l.useState)(!1),[i,c]=(0,l.useState)(null),[d,y]=(0,l.useState)(!1),g=(0,p.GV)(e=>e.playtesterV2.searchOverlaySearchValue),b=(0,p.GV)(al),x=(0,p.GV)(e=>e.playtesterV2.searching),_=(0,p.GV)(e=>e.playtesterV2.allCards),v=(0,p.GV)(e=>e.playtesterV2.showOverlaysInPopout),C=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[j]=(0,p.dN)(h.MK),[k,w]=(0,p.zU)(m.yG,f.iY),V=u.VS.includes(x||"miscCards"),O=async(e,a)=>{if(!b)return o(!1);at.A.post("/api/cards/scryfall-filter-passthrough/",{q:e,uids:a}).then(({uids:a})=>{let r=b.filter(e=>a.includes(_[e.cardId].uid)).map(e=>e.cardId);e.length<2?t([]):t(r)}).catch(e=>{c(e),console.error(e)}).finally(()=>{o(!1)})},N=e=>{if(!b)return o(!1);if(k({searchOverlaySearchValue:e}),e.length<2)return t([]);let a=b.map(e=>e.cardId).filter(t=>{let a=_[t];return!!a&&!!(a.name.toLowerCase().includes(e.toLowerCase())||a.front?.name.toLowerCase().includes(e.toLowerCase())||a.back?.name.toLowerCase().includes(e.toLowerCase()))});o(!1),t(a)};(0,l.useEffect)(()=>{if(C&&!v)return;if(g.length<2)return t([]),o(!1),c(null),()=>null;o(!0),c(null);let e=setTimeout(()=>(e=>{if(!e.match(/[<>:=()]/g))return N(e);O(e,b?.map(e=>_[e.cardId].uid)||[])})(g),500);return()=>clearTimeout(e)},[g]);let S=()=>{setTimeout(()=>w({hideStackOverlay:!1}),500),k({searching:null}),N(""),a&&x&&u.VS.includes(x)&&j(x)};return C&&V&&!v?(0,n.jsxs)(av,{open:!0,className:aV().emptySearchContainer,children:["Searching ",eR()(`${x}`),"..."]}):(0,n.jsxs)(tB.A,{rootClassName:aV().container,disableSwipeToClose:!0,open:!!b,onClose:S,children:[(0,n.jsxs)("div",{className:aV().hoverToHideButton,children:[(0,n.jsx)(eg.A,{name:"eye slash"}),(0,n.jsx)("span",{children:"Hover for board"})]}),(0,n.jsxs)("div",{className:aV().content,children:[(0,n.jsxs)("h3",{children:["Searching ",`${eR()(`${x||""} `)}...`]}),(0,n.jsxs)("div",{className:aV().filters,children:[(0,n.jsx)(tP.A,{focusOnMount:!0,containerClassName:aV().search,value:C&&!v?"":g,placeholder:"Card name, t:basic, t:creature, etc",onChange:e=>k({searchOverlaySearchValue:e})}),(0,n.jsxs)("div",{className:aV().checkboxes,children:[x&&u.VS.includes(x)&&(0,n.jsx)(ak.A,{className:aV().checkbox,label:`Shuffle ${x} on close`,checked:a,onChange:()=>r(!a)}),(0,n.jsx)(ak.A,{className:aV().checkbox,label:"Don't close overlay on drag",checked:d,onChange:()=>y(!d)})]})]}),s&&(0,n.jsx)(aj.A,{}),(0,n.jsx)("div",{className:aV().cards,children:b?.map(t=>x&&(!(g.length>2)||e.includes(t.cardId))?(0,n.jsx)(ti,{useMiscCardsOptions:!0,metaData:t,currentZone:x,cardProps:{onDragStart:()=>w({hideStackOverlay:!0}),onDragEnd:()=>
1d?w({hideStackOverlay:!1}):S()},cardSizeOverride:"large",skipLibraryOptions:"library"===x},t.id):null)})]})]})};var aN=a(77039),aS=a.n(aN),aA=a(39283),aM=a.n(aA);let aG=({handSize:e,offset:t})=>(0,n.jsx)("div",{className:aM().scrollIndicator,style:{width:e?`calc(100% / ${e})`:"100%",transform:`translateX(${t}px)`}}),aD={"x-small":15,small:20,"small-normal":30,normal:40,"normal-large":60,large:80},aT=function(e,t,a,r){let n=r?0:-50;if(1===a)return[0,n];let l=a>=e?e:a,s=(l-1)/2,o=t/(l-1)*Math.PI;return[(t-s)/s*(10*!r),n*Math.sin(o)]},aL=function(e,t,a,r){if(null===a||e===a)return t;let n=aD[r];return e<a?t+-1*n:t+n},aI=function(e,t){let[a,r]=u.jo[e];return t?r+20:r+50+20};var a$=a(47306),aB=a(95422),az=a.n(aB);let aP=({zone:e,cardMetas:t,onDrop:a,onCardMetasUpdate:r,useMiscCardsOptions:s,disableRotation:o,cardSizeOverride:i,hideCards:c,usePlaymatBackgroundColor:d=!1,skipLibraryOptions:m=!1})=>{var h,y,g,b,x,f,_,C;let[j]=tV(),k=(0,p.GV)(e=>e.playtesterV2.cardSize),w=(0,p.GV)(e=>e.playtesterV2.currentlyDraggedCards),V=(0,p.GV)(e=>e.playtesterV2.maxCardsShownInHand),N=(0,p.GV)(e=>e.playtesterV2.disabledFancyZoneHoverEffect),S=(0,p.GV)(e=>e.playtesterV2.hideFancyZoneArrows),A=(0,p.GV)(e=>e.playtesterV2.fancyZoneScrollDisabled),M=(0,p.GV)(e=>e.playtesterV2.playmatColor),G=i||k,[D,T]=(0,l.useState)(0),[L,I]=(0,l.useState)(null),[$,B]=(0,l.useState)(0),[z,P]=(0,l.useState)(null),[R,H]=(0,l.useState)([...t]),[F,E]=(0,l.useState)(null),W=(0,l.useRef)(null),Z=(0,l.useRef)(!1),U=(0,l.useRef)(),[X]=u.jo[G],Y=e=>{let t=R.filter(e=>null!==e);r&&r(t),a&&a(e)},K=(e=!0)=>{e&&ei&&T(D+1),!e&&ec&&T(D-1)};U.current=K;let J=(e=!0)=>{Z.current&&U.current&&(U.current(e),setTimeout(()=>J(e),200))},Q=(e,t,a,r)=>{let n=e.index;if(void 0===r||!a)return;if(void 0===n){e.index=r,P(r),q(r,r);return}if(n===r)return;let l=a?.getBoundingClientRect(),s=(l.right-l.left)/2,o=t.getClientOffset().x-l.left;n<r&&o<s||n>r&&o>s||void 0!==n&&(e.insertAtIndex||q(n,r),e.index=r,P(r))},q=(e,t)=>{if(void 0===e||e>R.length-1)return;let a=R[e],r=R.filter((t,a)=>e!==a&&null!==t);r.splice(t,0,a),H(r)},ee=()=>E(null),[{isOver:et,item:ea},er]=(0,v.H)(()=>({accept:O.U.CARD,drop:Y,collect:e=>({isOver:!!e.isOver(),item:e.getItem()})}),[t,w,R]);(0,l.useEffect)(()=>{et||P(null)},[et]),(0,l.useEffect)(()=>B(W.current?.clientWidth||0),[j]),(0,l.useEffect)(()=>T(0),[t[0]]),(0,l.useEffect)(()=>H([...t]),[w]),(0,l.useEffect)(()=>{if(!ea||!et||null===z||ea?.currentZone===e)return;let t=[...R.filter(e=>e?.id!==ea?.metaData?.id)];ea.metaData&&t.splice(z,0,ea.metaData),H(t)},[ea,et,z]),(0,l.useEffect)(()=>{E(null),aS()(t,R)||H([...t])},[t]);let en=N||et||!!Object.keys(w).length,el=(h=V,(y=t.length)>=h?Math.floor(h/2):Math.floor(y/2)),es=(g=V,(b=t.length)<=g+1?-1*Math.floor(b/2):-1*(b-Math.floor((g+1)/2))),eo=(x=V,f=t.length,_=D,C=es,(f<=x?Math.abs(_+C):Math.abs(_-Math.floor(x/2)))/f),ei=D<el,ec=D>es,ed="hand"===e&&et&&M&&d?(0,a$.c)(M,.65):void 0,eu=aI(G,o);return er(W),(0,n.jsxs)("div",{onWheel:e=>{A||K(e.deltaY>0)},onMouseUp:ee,className:`${az().container} ${et?az().isOver:""}`,ref:W,style:{height:eu,backgroundColor:ed},children:[t.map((a,r)=>{var l,i,d,u,p,h,y;if(null===a)return null;let g=R.findIndex(e=>e&&e.id===a.id),b=g+D,x=(l=V,i=$,d=t.length,u=b,p=X,0===d?0:(u+1)/((d>=l?l:d)+1)*i-p/2),[f,_]=aT(V,b,R.length,o),v=aL(b,x,en?null:L,G),C=(h=V,(y=b)>h-1||y<0),j=c?tl.U0:void 0,k=v||x,w={opacity:+!C,pointerEvents:C?"none":"unset",transform:`translateX(${k}px) rotate(${f}deg) translateY(${_}px)`};return F===a.id&&(w.zIndex=2),en||(w["&:hover"]={cursor:"grab",zIndex:1,transform:`translateX(${k}px) rotate(${f}deg) translateY(${_-10}px) scale(1.025)`}),(0,n.jsx)("div",{className:az().cardWrapper,style:w,children:(0,n.jsx)(ti,{cardSizeOverride:G,useMiscCardsOptions:s,currentZone:e,metaData:a,onDragOver:Q,index:g,skipLibraryOptions:m,onMouseDown:()=>E(a.id),onMouseUp:ee,cardProps:{className:az().card,overrideImageUrl:j,disableTooltip:c,disableDrag:c,onMouseEnter:()=>I(b),onMouseLeave:()=>I(null),onDragEnd:()=>I(null)}})},a.id)}),!S&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{className:az().forwardButton,disabled:!ei,onContextMenu:e=>e.preventDefault(),onMouseUp:ee,onPointerUp:()=>Z.current=!1,onPointerDown:()=>{Z.current=!0,J(!0)},children:(0,n.jsx)(eg.A,{name:"reply"})}),(0,n.jsx)("button",{className:az().backButton,disabled:!ec,onContextMenu:e=>e.preventDefault(),onMouseUp:ee,onPointerUp:()=>Z.current=!1,onPointerDown:()=>{Z.current=!0,J(!1)},children:(0,n.jsx)(eg.A,{name:"reply"})})]}),(0,n.jsx)(aG,{handSize:t.length,offset:eo*$})]})},aR=({children:e,zone:t,className:a,isOverClassName:r,onDropCallback:s,onIsOverIn:o,onIsOverOut:i,customOnDrop:c,dropAtIndex:u=0})=>{let[m]=(0,p.dN)(h.aR),y=e=>{if(!e.metaData||!e.currentZone)return;if(c)return c(e);let a=Object.keys(d.M.getState().playtesterV2.selected);e.isMultiSelected?m(a,e.currentZone,t,u):m(e.metaData,e.currentZone,t,u),s&&s(e)},[{isOver:g},b]=(0,v.H)(()=>({accept:O.U.CARD,drop:y,collect:e=>({isOver:!!e.isOver(),canDrop:!!e.canDrop()})}),[s]);return(0,l.useEffect)(()=>g&&o?o():!g&&i?i():void 0,[g]),b((0,n.jsx)("div",{className:`${a} ${g?r:""}`,children:e}))};var aH=a(91241),aF=a.n(aH);let aE=()=>{let e=(0,p.GV)(e=>e.playtesterV2.peeking),t=e>0,a=(0,p.GV)(e=>e.playtesterV2.library),r=(0,p.GV)(e=>e.playtesterV2.showOverlaysInPopout),s=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[o]=(0,p.zU)(m.yG),[i]=(0,p.dN)(h.aR),[c,d]=(0,l.useState)([]);(0,l.useEffect)(()=>
1{if(!e)return void setTimeout(()=>d([]),300);let r=Math.abs(e);d((t?[...a]:[...a].reverse()).filter((e,t)=>t<r).map(e=>e.id))},[e]);let u=()=>o({peeking:0}),y=Math.abs(e),g=(t?[...a]:[...a].reverse()).filter((e,t)=>t<y&&c.includes(e.id));return e&&s&&!r?(0,n.jsxs)(av,{open:!0,className:aF().publicMessage,children:["Peeking ",t?"top":"bottom"," ",Math.abs(e)," cards of your library"]}):(0,n.jsxs)(tB.A,{disableSwipeToClose:!0,open:!!e,onClose:u,rootClassName:aF().container,children:[(0,n.jsxs)("div",{className:aF().hoverToHideButton,children:[(0,n.jsx)(eg.A,{name:"eye slash"}),(0,n.jsx)("span",{children:"Hover for board"})]}),(0,n.jsxs)("h3",{children:[t?"Top":"Bottom"," ",Math.abs(e)," cards of your library"]}),(0,n.jsxs)("p",{className:aF().instructions,children:["Drag to reorder the ",e>0?"top":"bottom"," of your library."," ",t?"(Top → Bottom)":"(Bottom → Top)"]}),(!s||r)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(aP,{useMiscCardsOptions:!0,zone:"library",cardMetas:g,onCardMetasUpdate:e=>{let r=[...a];for(let a=0;a<e.length;a++){let n=t?a:r.length-1-a;r[n].id!==e[a].id&&(r[n]={...e[a],revealed:!1})}o({library:r})},skipLibraryOptions:!0}),(0,n.jsx)("p",{className:aF().instructions,children:"Or drag to other zones"}),(0,n.jsxs)("div",{className:aF().otherZones,children:[(0,n.jsx)(aR,{zone:"hand",className:aF().zone,isOverClassName:aF().transparent,children:"Hand"}),(0,n.jsx)(aR,{zone:"graveyard",className:aF().zone,isOverClassName:aF().transparent,children:"Graveyard"}),t?(0,n.jsx)(aR,{zone:"library",className:aF().zone,isOverClassName:aF().transparent,dropAtIndex:-1,children:"Bottom of library"}):(0,n.jsx)(aR,{zone:"library",className:aF().zone,isOverClassName:aF().transparent,dropAtIndex:0,children:"Top of library"})]}),t&&(0,n.jsx)(td.A,{className:aF().bottomShuffled,onClick:()=>void(i((0,eE.$)(c),"library","library",-1),u()),children:"Send cards to bottom of library shuffled"})]})]})};var aW=a(49861),aZ=a.n(aW);let aU=()=>{let e=(0,p.GV)(e=>e.playtesterV2.hand),t=(0,p.GV)(e=>e.playtesterV2.openingHandOverlay),a=(0,p.GV)(e=>e.playtesterV2.muliganCounter),r=(0,p.GV)(e=>e.playtesterV2.sharedWindow),l=(0,p.GV)(e=>e.playtesterV2.interactionsEnabled),s=(0,p.GV)(e=>e.playtesterV2.multiplayerFormat),[o]=(0,p.zU)(m.yG),[i,c,d]=(0,p.dN)(h.xU,h.kX,h.aR),u=()=>{o({openingHandOverlay:!1,undo:[],redo:[],muliganCounter:0})};return(0,n.jsxs)(tB.A,{disableSwipeToClose:!0,open:t,onClose:u,rootClassName:aZ().reducedPadding,children:[(0,n.jsx)("h3",{children:"Opening hand"}),(0,n.jsxs)("div",{className:aZ().controls,children:[(0,n.jsx)(td.A,{color:"green",onClick:u,children:"Keep this"}),(0,n.jsxs)(td.A,{onClick:()=>{i(),c(7),o({muliganCounter:a+1})},children:["Mulligan (",a,")"]}),(0,n.jsx)(tc.A,{options:[{icon:"arrow right",label:"Draw cards",onClick:()=>c(1),noCloseOnClick:!0},{icon:"edit",label:"Stack deck",onClick:()=>o({openingHandOverlay:!1,stackDeckOverlay:!0})}],children:(0,n.jsx)(td.A,{icon:"sliders horizontal",children:"Options"})})]}),s&&(0,n.jsx)("div",{className:aZ().controls,children:(0,n.jsx)(td.A,{color:"orange",icon:"chess",onClick:()=>o({interactionsOverlay:"settings"}),children:`Interaction simulator ${l?"(On)":"(Off)"}`})}),(0,n.jsx)(aP,{useMiscCardsOptions:!0,zone:"hand",cardMetas:e,hideCards:r,onCardMetasUpdate:e=>o({hand:e})}),(0,n.jsxs)("div",{className:aZ().otherZones,children:[(0,n.jsx)(aR,{zone:"library",className:aZ().zone,isOverClassName:aZ().transparent,customOnDrop:e=>{e.metaData&&e.currentZone&&d(e.metaData,"hand","library",-1)},children:"Bottom of library"}),(0,n.jsx)(aR,{zone:"exile",className:aZ().zone,isOverClassName:aZ().transparent,customOnDrop:e=>{e.metaData&&e.currentZone&&d(e.metaData,"hand","exile")},children:"Exile"})]})]})};var aX=a(44398),aY=a.n(aX);let aK=()=>{let e=(0,p.GV)(e=>e.playtesterV2.xinputValue),t=(0,p.GV)(e=>e.playtesterV2.xinputField),a=(0,p.GV)(e=>e.playtesterV2.xinputMetaIds),r=(0,p.GV)(e=>e.playtesterV2.xinputZone),[l]=(0,p.zU)(m.yG),[s,o,i,c]=(0,p.dN)(h.kX,h.Xj,h.aR,h.q),u=()=>{l({xinputField:null,xinputMetaIds:null,xinputZone:null})};return(0,n.jsxs)(tB.A,{open:!!t,onClose:u,children:[(0,n.jsxs)("h3",{children:[t," amount"]}),(0,n.jsxs)("form",{className:aY().form,onSubmit:n=>{if(n.preventDefault(),"Draw"===t&&s(e),"Peeking"===t&&l({peeking:e}),"Milling"===t&&c(e),r&&a){let n=d.M.getState().playtesterV2[r].filter(e=>a.includes(e.id));n.length&&"Add toughness"===t&&o(n.map(t=>({...t,customToughnessOffset:t.customToughnessOffset+e})),r),n.length&&"Add power"===t&&o(n.map(t=>({...t,customPowerOffset:t.customPowerOffset+e})),r),n.length&&"Add +X/+X"===t&&o(n.map(t=>({...t,customPowerOffset:t.customPowerOffset+e,customToughnessOffset:t.customToughnessOffset+e})),r),n.length&&"X from top"===t&&i(a,r,"library",e-1)}setTimeout(()=>u(),100)}
1,children:[(0,n.jsx)(tP.A,{type:"number",focusOnMount:!0,placeholder:`Choose ${t} amount`,onChange:e=>l({xinputValue:Number(e)||0})}),(0,n.jsx)(td.A,{color:"green",children:"Submit"})]})]})};var aJ=a(72714),aQ=a.n(aJ);let aq=()=>{let e=(0,l.useRef)(null),[t,a]=(0,l.useState)(""),[r,s]=(0,l.useState)(!1),o=(0,p.GV)(e=>e.playtesterV2.miscCards),i=(0,p.GV)(e=>e.playtesterV2.cardSearch),[u]=(0,p.zU)(m.yG);(0,l.useEffect)(()=>{i&&e.current?.focus()},[i]);let h=()=>{u({cardSearch:null,miscCards:[]}),a("")};return(0,n.jsxs)(av,{open:!!i,onClose:h,className:aQ().container,children:[(0,n.jsx)(aC,{className:aQ().backButton,mobileClassName:aQ().backButton,onBack:h}),(0,n.jsxs)("div",{className:aQ().content,children:[(0,n.jsxs)("h3",{children:["cards"===i?"Card":"Token"," search"]}),(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),s(!0);let a="cards"===i?t:`(${t}) and is:token`;_.Ay.scryfallCardsOnly(a,void 0,!1,1,"tokens"===i).then(e=>{let t=d.M.getState().playtesterV2.allCards,a=e.reduce((e,t)=>({...e,[t.id]:t}),{}),r=e.map(e=>({...(0,b.uS)(),id:c().generate(),cardId:e.id,token:"tokens"===i}));u({allCards:{...t,...a},miscCards:r})}).catch(()=>tw.A.create("Error fetching cards","Playtester")).finally(()=>s(!1))},className:aQ().form,children:[(0,n.jsx)("input",{ref:e,placeholder:"cards"===i?"Ezuri t:creature ci<=simic":"Zombie or human",value:t,onChange:e=>a(e.target.value)}),(0,n.jsx)("button",{type:"submit",children:(0,n.jsx)(eg.A,{name:"arrow right"})})]}),r&&(0,n.jsx)(aj.A,{}),(0,n.jsx)("div",{className:aQ().cards,children:o.map(e=>(0,n.jsx)(ti,{cardProps:{onDragStart:h},metaData:e,currentZone:"miscCards",cardSizeOverride:"large"},e.id))})]})]})};var a0=a(38076),a1=a(71969),a2=a(550),a3=a(2790),a5=a(13423),a6=a.n(a5);let a4=()=>{let e=(0,p.GV)(e=>e.playtesterV2.focusedFrom),t=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[a,r]=(0,p.GV)(ao),[s,o]=(0,l.useState)("primary"),[i]=(0,p.zU)(m.yG),[c]=(0,p.dN)(h.Xj);return(0,n.jsx)(a1.A,{rightControls:null,open:!!a,onClose:()=>i({focusedCardMetaId:null,focusedFrom:null}),activeTabId:s,onTabChange:o,card:a||x.o5,tabs:[{id:"primary",label:"Card details",body:(0,n.jsx)("div",{className:a6().info,children:a&&r&&(0,n.jsxs)(n.Fragment,{children:[!t&&(0,n.jsxs)("div",{className:a6().notes,children:[(0,n.jsx)("label",{children:"Card notes"}),(0,n.jsx)(a2.A,{placeholder:"Something something reminder about this card",onChange:t=>{var a;return a={...r,notes:t},void(e&&r&&c(a,e))},value:r.notes})]}),a.front&&a.back?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a0.A,{card:a.front}),(0,n.jsx)(a0.A,{card:a.back})]}):(0,n.jsx)(a0.A,{card:a})]})})},{label:"Rulings",id:"rulings",hidden:!!a?.customCard,body:(0,n.jsx)(a3.A,{card:a||x.o5})}]})};var a8=a(55256),a7=a.n(a8);let a9=()=>{let e=(0,p.GV)(e=>e.playtesterV2.generatingRandomValue),t=(0,p.GV)(e=>e.playtesterV2.randomGeneratorOverlay),a=(0,p.GV)(e=>e.playtesterV2.randomGeneratedValues),[r]=(0,p.zU)(m.yG),l=e=>{let t=Math.floor(Math.random()*(e-1+1))+1;return 2===e&&1===t?"Heads":2===e&&2===t?"Tails":`${t}`},s=t=>{if(!e){r({generatingRandomValue:!0});for(let e=1;e<=10;e++)setTimeout(()=>{let n=l(t),s=10!==e;r({randomGeneratedValues:[n,...a].filter((e,t)=>t<10),generatingRandomValue:s})},100*e)}};return(0,n.jsxs)(tB.A,{open:t,onClose:()=>r({randomGeneratorOverlay:!1}),children:[(0,n.jsx)("h3",{children:"Random Generator"}),(0,n.jsxs)("div",{className:a7().triggers,children:[(0,n.jsx)("button",{onClick:()=>s(2),children:"Coin"}),(0,n.jsx)("button",{onClick:()=>s(4),children:"d4"}),(0,n.jsx)("button",{onClick:()=>s(6),children:"d6"}),(0,n.jsx)("button",{onClick:()=>s(8),children:"d8"}),(0,n.jsx)("button",{onClick:()=>s(10),children:"d10"}),(0,n.jsx)("button",{onClick:()=>s(12),children:"d12"}),(0,n.jsx)("button",{onClick:()=>s(20),children:"d20"})]}),(0,n.jsx)("div",{className:a7().arrow,children:(0,n.jsx)(eg.A,{name:"arrow down"})}),(0,n.jsx)("div",{className:`${a7().answer} ${e?a7().generating:""}`,children:a[0]||"N/A"}),a.length>1&&(0,n.jsxs)("div",{className:a7().previousControls,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h4",{children:"Previous results"}),(0,n.jsx)("div",{className:a7().previousAnswers,children:a.map((e,t)=>0===t?null:(0,n.jsx)("div",{children:e},t))})]}),(0,n.jsx)(td.A,{color:"red",onClick:()=>r({randomGeneratedValues:[]}),children:"Clear previous results"})]})]})},re=()=>{let e=(0,p.GV)(e=>e.playtesterV2.turnCounter),t=(0,p.GV)(e=>e.playtesterV2.upkeepReminderActive),[a,r]=(0,l.useState)(e),[s,o]=(0,l.useState)(!1),[i,c]=(0,l.useState)(!0);return(0,l.useEffect)(()=>
1{if(a>=e||!i)return r(e);t&&(o(!0),r(e),c(!1))},[e]),(0,n.jsxs)(tB.A,{open:!!s,onClose:()=>{o(!1),setTimeout(()=>c(!0),3e4)},children:[(0,n.jsx)("h3",{children:"Upkeep Reminder"}),(0,n.jsx)("p",{children:"You've set a reminder for yourself that you have some kind of upkeep trigger. Do that."}),(0,n.jsx)("p",{children:"(This reminder will be skipped for the next 30 seconds regardless of turn changes)"})]})};var rt=a(12969),ra=a.n(rt);let rr=()=>{let e=(0,p.GV)(e=>e.playtesterV2.allTokensOverlay),t=(0,p.GV)(e=>e.playtesterV2.miscCards),a=(0,p.GV)(e=>e.playtesterV2.tokens),[r]=(0,p.zU)(m.yG);(0,l.useEffect)(()=>{e&&r({miscCards:a.map(e=>({...(0,b.uS)(),token:!0,id:e.id,cardId:e.cardId}))})},[e]);let s=e=>{let t={allTokensOverlay:!1};e&&(t.cardSearch="tokens"),r(t)};return(0,n.jsx)(tB.A,{open:!!e,onClose:()=>s(),className:ra().container,children:(0,n.jsxs)("div",{className:ra().content,children:[(0,n.jsx)("h3",{children:"All tokens"}),(0,n.jsx)("div",{className:ra().cards,children:t.map(e=>(0,n.jsx)(ti,{cardProps:{onDragStart:()=>s()},metaData:e,currentZone:"miscCards",cardSizeOverride:"large"},e.id))}),(0,n.jsx)("div",{className:ra().more,children:(0,n.jsxs)(td.A,{onClick:()=>s(!0),children:[(0,n.jsx)(eg.A,{name:"search"})," Search for more tokens"]})})]})})};var rn=a(75423),rl=a.n(rn);let rs=()=>{let e=(0,p.GV)(e=>e.playtesterV2.hand),t=(0,p.GV)(e=>e.playtesterV2.handRotation),a=(0,p.GV)(e=>e.playtesterV2.handSize),r=(0,p.GV)(e=>e.playtesterV2.showPopoutHand),s=(0,p.GV)(e=>e.playtesterV2.playmatColorExtendsToLowerThird),o=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[i]=(0,p.zU)(m.yG),[c]=(0,p.dN)(h.aR),[u,y]=(0,l.useState)(!!o),g=t=>{let a=d.M.getState().playtesterV2.allCards,r=ar.jN[t],n=[0];i({hand:[...e.sort((e,t)=>{let l=a[e.cardId],s=a[t.cardId];return l&&s?r(l,s,n):-1})]})};return(0,n.jsxs)("div",{className:rl().container,children:[(0,n.jsxs)("div",{className:rl().controls,children:[(0,n.jsxs)("label",{children:["Cards in hand: ",(0,n.jsx)("b",{children:e.length})]}),!o&&(0,n.jsxs)(tc.A,{triggerClassName:rl().optionsTrigger,menuClassName:` 2 ${rl().options} 3 ${"x-small"===a||"small"===a?rl().smallOptions:""} 4 `,options:[eX(e.map(e=>e.id),"hand",!0),{type:"spacer"},{label:"View full hand",icon:"search",keybind:"Ctrl + H",onClick:()=>i({searching:"hand"})},{label:`${u?"Show":"Hide"} hand`,icon:u?"eye":"eye slash",onClick:()=>y(!u)},{label:`${r?"Hide":"Show"} hand in share window`,icon:r?"eye slash":"eye",onClick:()=>i({showPopoutHand:!r}),noCloseOnClick:!0},{label:"Discard random card",icon:"balance scale",onClick:()=>{let t=Math.floor(Math.random()*(e.length+1));c(e[t],"hand","graveyard")}},{type:"spacer"},{label:"Order hand",icon:"exchange",type:"extras",id:"order-hand-extras",options:[{label:"Salt",onClick:()=>g(x.fv.SALT)},{label:"Color",onClick:()=>g(x.fv.IDENTITY)},{label:"Name",onClick:()=>g(x.fv.ALPHA)},{label:"Type",onClick:()=>g(x.fv.TYPE)},{label:"Mana value",onClick:()=>g(x.fv.CMC)}]}],children:["Hand options ",(0,n.jsx)(eg.A,{name:"ellipsis vertical"})]})]}),(0,n.jsx)(aP,{zone:"hand",cardMetas:e,hideCards:o?!r:u,onDrop:e=>{if(!e.metaData)return;let t=Object.keys(d.M.getState().playtesterV2.selected);e.isMultiSelected?c(t,e.currentZone||"hand","hand",e.index):c(e?.metaData,e.currentZone||"hand","hand",e.index)}
4,disableRotation:!t,cardSizeOverride:a,usePlaymatBackgroundColor:s})]})};var ro=a(86054),ri=a.n(ro);let rc={hand:"H",graveyard:"Y",library:"F"},rd=({zone:e,className:t="",cardSizeOverride:a,disableScrollingToRotate:r,upkeepReminderActive:s,insideHiddenContainer:o})=>{let[i,c]=(0,l.useState)(!1),m=(0,p.GV)(t=>(0,aa.Mz)(an,t=>{let a=t[e];return a||[]})(t)),y=(0,p.GV)(e=>e.playtesterV2.currentlyDraggedCards),[g]=(0,p.dN)(h.aR),[b,x]=u.jo[a||"small"],f=!!Object.keys(y).length&&i,_=(e=>{let t=d.M.getState().playtesterV2,a=e||"miscCards",r=t[a];rc[a];let n=u.VS.includes(a),l=t.sharedWindow,s=r[0];if(!r.length)return[];let o=tn[a];return l&&s&&!n?e5(s,a):l?[]:[eX(r.map(e=>e.id),a,!0,"library"===a),{type:"spacer",hidden:!s},...o(s,a)]})(e);return(0,n.jsx)("div",{style:{width:b},className:t,onWheel:t=>{if(r||m.length<2)return;let a=t.deltaY<0;g(a?m[m.length-1]:m[0],e,e,a?0:-1)},children:(0,n.jsxs)(aR,{zone:e,className:ri().dropZone,isOverClassName:ri().isDraggedOver,onIsOverIn:()=>document.body.classList.add(A),onIsOverOut:()=>document.body.classList.remove(A),children:[(0,n.jsx)(tc.A,{options:_,disabled:!_.length,triggerClassName:ri().header,menuClassName:`${ri().menu} ${o?"":ri().openMenuUp}`,children:(0,n.jsxs)("button",{className:ri().headerTrigger,disabled:!_.length,title:`${eR()(e)} (${m.length})`,children:[eR()(e)," (",m.length,") ",(0,n.jsx)(eg.A,{name:"ellipsis vertical"})]})}),(0,n.jsxs)("div",{className:ri().stack,children:[m.map((t,r)=>{if(0<r&&!f||1<r&&f)return null;let l=u.VS.includes(e)&&!t.revealed,s=l?tl.U0:void 0;return(0,n.jsx)(ti,{cardSizeOverride:a,metaData:t,currentZone:e,cardProps:{overrideImageUrl:s,disableTooltip:l,onDragStart:()=>c(!0),onDragEnd:()=>c(!1)}},t.id)}),(0===m.length||1===m.length&&f)&&(0,n.jsx)("div",{style:{width:b,height:x},className:ri().dummyCardPlaceholder,children:"No cards"})]}),s&&(0,n.jsx)("div",{className:ri().upkeepReminder,children:"Upkeep reminder active"})]})})};var ru=a(6658),rp=a.n(ru);let rm=()=>{let[e]=tV(),[t,a]=(0,l.useState)(!1),r=(0,p.GV)(e=>e.playtesterV2.cleanGameZones),s=(0,p.GV)(e=>e.playtesterV2.handSize),o=(0,p.GV)(e=>e.playtesterV2.playmatColor),i=(0,p.GV)(e=>e.playtesterV2.playmatColorExtendsToLowerThird),c=(0,p.GV)(e=>e.playtesterV2.upkeepReminderActive);(0,p.GV)(e=>e.playtesterV2.sharedWindow);let[{isOver:d},u]=(0,v.H)(()=>({accept:[O.U.CARD],collect:e=>({isOver:e.isOver()})}),[]);(0,l.useEffect)(()=>{d&&!t&&a(!0)},[d]);let m=s;"large"===s&&(m="normal"),e<800&&"x-small"!==s&&(m="small");let h=[(0,n.jsx)(rd,{upkeepReminderActive:c,disableScrollingToRotate:!0,cardSizeOverride:m,zone:"library"},"library"),(0,n.jsx)(rd,{cardSizeOverride:m,zone:"graveyard"},"graveyard"),(0,n.jsx)(rd,{cardSizeOverride:m,zone:"exile"},"exile"),(0,n.jsx)(rd,{cardSizeOverride:m,zone:"commandZone"},"commandZone")];r.sideboard.length&&h.push((0,n.jsx)(rd,{cardSizeOverride:m,zone:"sideboard"},"sideboard")),r.attractions.length&&(h.push((0,n.jsx)(rd,{disableScrollingToRotate:!0,cardSizeOverride:m,zone:"attractions"},"attractions")),h.push((0,n.jsx)(rd,{cardSizeOverride:m,zone:"junkyard"},"junkyard"))),r.planes.length&&h.push((0,n.jsx)(rd,{disableScrollingToRotate:!0,cardSizeOverride:m,zone:"planes"},"planes"));let y=4;("normal"===s||"large"===s||"normal-large"===s)&&(e<2e3&&(y=3),e<1700&&(y=2),e<1400&&(y=1),e<600&&(y=0)),("small"===s||"small-normal"===s)&&(e<2e3&&(y=4),e<1500&&(y=3),e<1200&&(y=2),e<1e3&&(y=1),e<600&&(y=0)),"x-small"===s&&(e<1e3&&(y=3),e<800&&(y=2),e<600&&(y=1));let g=h.filter((e,t)=>t<y).map(e=>(0,l.cloneElement)(e,{insideHiddenContainer:!1})),b=h.filter((e,t)=>t>=y).map(e=>(0,l.cloneElement)(e,{insideHiddenContainer:!0}));return(0,n.jsxs)("div",{className:rp().container,style:i&&o?{backgroundColor:o,borderTop:`2px solid ${(0,a$.c)(o)}`}:void 0,children:[(0,n.jsx)("div",{className:rp().hand,children:(0,n.jsx)(rs,{})}),g,!!b.length&&(0,n.jsxs)("div",{className:rp().otherZonesContainer,children:[u((0,n.jsx)("button",{onClick:()=>a(!t),className:rp().otherZonesTrigger,children:(0,n.jsxs)("p",{children:[(0,n.jsx)(eg.A,{name:"arrow up",className:`${t?rp().flip:""}`})," ",t?"Hide":"View"," other zones"]}
4)})),t&&(0,n.jsx)("div",{className:rp().otherZones,children:b})]})]})};var rh=a(39355),ry=a.n(rh);let rg=()=>{let[e,t]=(0,l.useState)(!1),a=(0,l.useRef)(()=>null),r=(0,l.useRef)(()=>null),s=(0,l.useRef)(()=>null);return(0,l.useEffect)(()=>(window.removeEventListener("keydown",a.current),window.removeEventListener("keyup",r.current),window.removeEventListener("focus",s.current),a.current=a=>{let r=V.Ay.getOnMac()?a.metaKey:a.ctrlKey,{playtesterV2:n}=d.M.getState();if((0,ay.h_)(a))return;r&&!n.isCtrlHeldDown&&ee({isCtrlHeldDown:!0});let{cursorOverCard:l,cursorOverCardZone:s,selected:o,battlefield:i,cardCoordinates:c,hand:u,allCards:p,focusedCardMetaId:m,focusedFrom:y}=n,g=l&&o[l],b=i.filter(e=>o[e.id]),x=Object.keys(o),f=l&&s?n[s].find(e=>e.id===l):null,_=a.key.toLocaleUpperCase();if(a.altKey){console.log(a.altKey,_);let e=["1","2","3","4","5","6","7","8","9","0"],t={"\xa1":"1","™":"2","\xa3":"3","\xa2":"4","∞":"5","\xa7":"6","\xb6":"7","•":"8",ª:"9",º:"0"}[_];if(!e.includes(_)&&!e.includes(t))return;if(a.preventDefault(),"1"===_||"1"===t)return ee({peeking:1});if("2"===_||"2"===t)return ee({peeking:2});if("3"===_||"3"===t)return ee({peeking:3});if("4"===_||"4"===t)return ee({peeking:4});if("5"===_||"5"===t)return ee({peeking:5});if("6"===_||"6"===t)return ee({peeking:6});if("7"===_||"7"===t)return ee({peeking:7});if("8"===_||"8"===t)return ee({peeking:8});if("9"===_||"9"===t)return ee({peeking:9});if("0"===_||"0"===t)return ee({peeking:10})}if(r){if(!["A","Z","S","F","Y","H","ENTER","O","L","B","1","2","3","4","5"," ","G","M","ARROWUP","ARROWDOWN"].includes(_))return;if(a.preventDefault(),"A"===_)return ee({selected:i.reduce((e,t)=>({...e,[t.id]:!0}),{})});if("Z"===_&&!a.shiftKey)return ey();if("Z"===_&&a.shiftKey)return d.M.dispatch((0,N.$c)());if("S"===_)return ea();if("F"===_)return ee({searching:"library"});if("Y"===_)return ee({searching:"graveyard"});if("H"===_)return ee({searching:"hand"});if("ENTER"===_)return ee({cardSearch:"cards"});if("L"===_)return ee({cardLabelShown:!n.cardLabelShown});if("B"===_)return ee({upkeepReminderActive:!n.upkeepReminderActive});if("O"===_)return ee({viewLargeCardOnCursorOver:!n.viewLargeCardOnCursorOver});if(" "===_)return ee({defaultActionOnClick:!n.defaultActionOnClick});if("G"===_){if(!window.confirm("Start new game?"))return;d.M.dispatch((0,h.xU)()),er(7)}if("M"===_)return ee({gameLogOverlay:!n.gameLogOverlay});if("ARROWUP"===_&&f)return eh(f,-1,0);if("ARROWDOWN"===_&&f)return eh(f,1,i.length-1);if(x.length){let e=c[l||""]||[0,0];if("1"===_)return ei(x,"diagonal",e);if("2"===_)return ei(x,"vertical",e);if("3"===_)return ei(x,"horizontal",e);if("4"===_)return ei(x,"horizontal-adjacent",e);if("5"===_)return ei(x,"vertical-adjacent",e)}}if(r)return;if("?"===_)return t(!e);if("D"===_)return er(1);if("U"===_)return em();if("N"===_)return eu();if("O"===_&&(m||y))return ee({focusedCardMetaId:null,focusedFrom:null});if("1"===_&&u[0])return et(u[0],"hand");if("2"===_&&u[1])return et(u[1],"hand");if("3"===_&&u[2])return et(u[2],"hand");if("4"===_&&u[3])return et(u[3],"hand");if("5"===_&&u[4])return et(u[4],"hand");if("6"===_&&u[5])return et(u[5],"hand");if("7"===_&&u[6])return et(u[6],"hand");if("8"===_&&u[7])return et(u[7],"hand");if("9"===_&&u[8])return et(u[8],"hand");if(!f||!s)return;let v=p[f.cardId],C=c[f.id]||[0,0];if(v){if(!g){if("T"===_&&"battlefield"===s)return el({...f,tapped:!f.tapped},s);if("B"===_&&"battlefield"!==s)return et(f,s);if("Z"===_&&"commandZone"!==s)return eo(f,s,"commandZone");if("H"===_&&"hand"!==s)return eo(f,s,"hand");if("G"===_&&"graveyard"!==s)return eo(f,s,"graveyard");if("E"===_&&"exile"!==s)return eo(f,s,"exile");if("Y"===_&&"library"!==s)return eo(f,s,"library",0);if("L"===_)return eo(f,s,"library",-1);if("DELETE"===_)return es(f,s);if("ARROWUP"===_)return eh(f,-1);if("ARROWDOWN"===_)return eh(f,1);if("O"===_)return ee({focusedCardMetaId:f.id,focusedFrom:s});if("F"===_&&eF.Yp.includes(v.layout))return el({...f,flipped:!f.flipped},s);if("M"===_)return el({...f,faceDown:!f.faceDown},s);if("J"===_)return el({...f,upsideDown:!f.upsideDown},s);if("P"===_)return el({...f,dimmed:!f.dimmed},s);if("battlefield"===s){if("C"===_)return ed({...f,tokenCopy:!f.token},s,C);if("-"===_||"_"===_)return el({...f,customPowerOffset:f.customPowerOffset-1,customToughnessOffset:f.customToughnessOffset-1},s);if("+"===_||"="===_)return el({...f,customPowerOffset:f.customPowerOffset+1,customToughnessOffset:f.customToughnessOffset+1},s)}}if(g&&"battlefield"===s){if("T"===_)return el(b.map(e=>({...e,tapped:!f.tapped})),s);if("Z"===_)return eo(x,s,"commandZone");if("H"===_)return eo(x,s,"hand");if("G"===_)return eo(x,s,"graveyard");if("E"===_)return eo(x,s,"exile");
4if("Y"===_)return eo(x,s,"library",0);if("L"===_)return eo(x,s,"library",-1);if("DELETE"===_)return es(x,s);if("F"===_&&eF.Yp.includes(v.layout))return el({...f,flipped:!f.flipped},s);if("M"===_)return el(b.map(e=>({...e,faceDown:!f.faceDown})),s);if("J"===_)return el(b.map(e=>({...e,upsideDown:!f.upsideDown})),s);if("P"===_)return el(b.map(e=>({...e,dimmed:!f.dimmed})),s);if("C"===_)return ed(b.map(e=>({...e,tokenCopy:!f.token})),s,C);if("-"===_||"_"===_)return el(b.map(e=>({...e,customPowerOffset:e.customPowerOffset-1,customToughnessOffset:e.customToughnessOffset-1})),s);if("+"===_||"="===_)return el(b.map(e=>({...e,customPowerOffset:e.customPowerOffset+1,customToughnessOffset:e.customToughnessOffset+1})),s)}}},r.current=e=>{let t=V.Ay.getOnMac()?e.metaKey:e.ctrlKey,{playtesterV2:a}=d.M.getState();!t&&a.isCtrlHeldDown&&ee({isCtrlHeldDown:!1})},s.current=e=>{let{isCtrlHeldDown:t}=d.M.getState().playtesterV2;t&&ee({isCtrlHeldDown:!1})},window.addEventListener("keydown",a.current),window.addEventListener("keyup",r.current),window.addEventListener("blur",s.current),()=>{window.removeEventListener("keydown",a.current),window.removeEventListener("keyup",r.current),window.removeEventListener("focus",s.current)}),[e]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{className:ry().trigger,onClick:()=>t(!0),children:[(0,n.jsx)(eg.A,{name:"question circle"})," Keybinds"]}),(0,n.jsx)(tB.A,{open:e,onClose:()=>t(!1),className:ry().container,children:(0,n.jsxs)("div",{className:ry().content,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{children:"Playtester keybinds"}),(0,n.jsx)("h4",{children:"Page Actions"}),(0,n.jsx)(ay.tb,{keybind:"?",description:"Show/ hide keybinds"}),(0,n.jsx)(ay.tb,{keybind:"N",description:"Next turn (untap + draw)"}),(0,n.jsx)(ay.tb,{keybind:"U",description:"Untap all"}),(0,n.jsx)(ay.tb,{keybind:"D",description:"Draw a card"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Space",description:"Toggle between action / option click"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + G",description:"New game"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + S",description:"Shuffle library"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + F",description:"Search library"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Y",description:"Search graveyard"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + H",description:"View full hand"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + A",description:"Select all in play cards"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Enter",description:"Open card search"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Z",description:"Undo last card action"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Shift + Z",description:"Redo last card action"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + M",description:"View game metrics"}),(0,n.jsx)("h4",{children:"Quick Settings"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + O",description:"Show / hide static card preview"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + L",description:"Show/ hide card labels"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + B",description:"Toggle upkeep reminder"}),(0,n.jsx)("h4",{children:"Quick Play Actions"}),(0,n.jsx)(ay.tb,{keybind:"1",description:"Play card 1 from hand"}),(0,n.jsx)(ay.tb,{keybind:"2",description:"Play card 2 from hand"}),(0,n.jsx)(ay.tb,{keybind:"Num",description:"Play card Num from hand"}),(0,n.jsx)("h4",{children:"Peek Cards (Scrying kinda)"}),(0,n.jsx)(ay.tb,{keybind:"Alt + 1",description:"Peek top 1 from top of your library"}),(0,n.jsx)(ay.tb,{keybind:"Alt + 2",description:"Peek top 2 from top of your library"}),(0,n.jsx)(ay.tb,{keybind:"Alt + Num",description:"Peek top Num from top of your library"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h4",{children:"Card Actions"}),(0,n.jsx)("p",{children:"Actions that apply to the card that your cursor is hovering over"}),(0,n.jsx)("h5",{children:"Readability helpers"}),(0,n.jsx)(ay.tb,{keybind:"Middle Mouse",description:"Scale card 2x"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + Middle Mouse",description:"Scale card 2x (also in popout)"}),(0,n.jsx)("h5",{children:"Move Cards"}),(0,n.jsx)(ay.tb,{keybind:"B",description:"Move to battlefield"}),(0,n.jsx)(ay.tb,{keybind:"H",description:"Move to hand"}),(0,n.jsx)(ay.tb,{keybind:"G",description:"Move to graveyard"}),(0,n.jsx)(ay.tb,{keybind:"E",description:"Move to exile"}),(0,n.jsx)(ay.tb,{keybind:"Z",description:"Move to command zone"}),(0,n.jsx)(ay.tb,{keybind:"Y",description:"Move to top of your library"}),(0,n.jsx)(ay.tb,{keybind:"L",description:"Move to bottom of your library"}),(0,n.jsx)(ay.tb,{keybind:"Arrow Up",description:"Move a card forward on screen (or scroll up)"}
4),(0,n.jsx)(ay.tb,{keybind:"Arrow Down",description:"Move a card back on screen (or scroll down)"}),(0,n.jsx)("h5",{children:"Battlefield cards"}),(0,n.jsx)(ay.tb,{keybind:"T",description:"Tap/ untap card"}),(0,n.jsx)(ay.tb,{keybind:"O",description:"Open card details / notes"}),(0,n.jsx)(ay.tb,{keybind:"F",description:"Flip card (transform)"}),(0,n.jsx)(ay.tb,{keybind:"M",description:"Flip card face down (morph)"}),(0,n.jsx)(ay.tb,{keybind:"P",description:"Dim / undim card (phase)"}),(0,n.jsx)(ay.tb,{keybind:"J",description:"Flip card 180\xb0"}),(0,n.jsx)(ay.tb,{keybind:"C",description:"Create token copy"}),(0,n.jsx)(ay.tb,{keybind:"+",description:"Add power / toughness"}),(0,n.jsx)(ay.tb,{keybind:"-",description:"Subtract power / toughness"}),(0,n.jsx)(ay.tb,{keybind:"Delete",description:"Delete from play (removes from all zones; use with caution)"}),(0,n.jsx)("h5",{children:"Battlefield cards (multi-selected)"}),(0,n.jsx)("p",{children:"If one of the above actions is performed on a multi-selected card, the action will apply to all multi-selected cards (when applicable)."}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + 1",description:"Group cards diagonally"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + 2",description:"Group cards vertically"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + 3",description:"Group cards horizontally"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + 4",description:"Group cards horizontally adjacent"}),(0,n.jsx)(ay.tb,{keybind:"Ctrl + 5",description:"Group cards vertically adjacnet"})]})]})})]})};var rb=a(79686),rx=a.n(rb);let rf=()=>({...x.o5,name:"",id:c().generate()}),r_=()=>{let[e,t]=(0,l.useState)(rf()),a=(0,p.GV)(e=>e.playtesterV2.customCardCreationOverlay),r=(0,l.useRef)(null),[s]=(0,p.zU)(m.yG),[o]=(0,p.dN)(I);(0,l.useEffect)(()=>{a&&r.current?.focus()},[a]);let i=()=>{s({customCardCreationOverlay:!1}),t(rf())};return(0,n.jsxs)(tB.A,{open:a,onClose:()=>i(),children:[(0,n.jsx)("h3",{children:"Custom card creation"}),(0,n.jsxs)("form",{onSubmit:t=>{t.preventDefault(),o({...(0,b.uS)(),cardId:e.id},"battlefield",1,[0,0],e),i()},className:rx().form,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{children:"Name"}),(0,n.jsx)("input",{ref:r,value:e.name,onChange:a=>t({...e,name:a.target.value}),placeholder:"Super duper awesome card"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{children:"Type line"}),(0,n.jsx)("input",{value:e.types.join(""),onChange:a=>t({...e,types:[a.target.value]}),placeholder:"Legendary Enchantment Creature - Dog"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{children:"Power"}),(0,n.jsx)("input",{value:e.power,onChange:a=>t({...e,power:a.target.value}),placeholder:"7"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{children:"Toughness"}),(0,n.jsx)("input",{value:e.toughness,onChange:a=>t({...e,toughness:a.target.value}),placeholder:"7"})]}),(0,n.jsx)("div",{children:(0,n.jsx)("button",{type:"submit",children:"Add custom card to battlefield"})})]})]})};var rv=a(26463),rC=a.n(rv);let rj=()=>{let[e,t]=(0,l.useState)(""),a=(0,p.GV)(e=>e.playtesterV2.counterModal),r=(0,p.GV)(e=>e.playtesterV2.counterMetaIds),s=(0,p.GV)(e=>e.playtesterV2.counterModalFrom),[o]=(0,p.zU)(m.yG),[i]=(0,p.dN)(h.Xj),c=()=>{o({counterModal:!1,counterMetaIds:null,counterModalFrom:null}),t("")},u=(e,t)=>{r&&s&&(i(d.M.getState().playtesterV2[s].filter(e=>r.includes(e.id)).map(a=>{let r={...a.counters};return r[e]?r[e].count++:r[e]={...t},{...a,counters:r}}),s),c())};return(0,n.jsxs)(tB.A,{open:a,onClose:c,children:[(0,n.jsx)("h3",{children:"All counters"}),(0,n.jsx)("div",{className:rC().iconGrid,children:Object.keys(eH.pM).map(e=>{let t=eH.pM[e];return(0,n.jsxs)("button",{className:rC().iconOption,onClick:()=>u(e,t),children:[t.icon&&(0,n.jsx)(ek.A,{icon:t.icon}),e]},e)})}),(0,n.jsx)("h3",{children:"Custom counter"}),(0,n.jsxs)("form",{onSubmit:t=>{t.preventDefault(),u(e,{...eH.gU})},className:rC().customCounter,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{children:"Counter name"}),(0,n.jsx)("input",{value:e,onChange:e=>t(e.target.value),placeholder:"Counter X"})]}),(0,n.jsx)("button",{type:"submit",children:"Create counter"})]})]})};var rk=a(12651),rw=a.n(rk);let rV=()=>{let e=(0,p.GV)(e=>e.playtesterV2.countersWidget),t=(0,p.GV)(e=>e.playtesterV2.whiteMana),a=(0,p.GV)(e=>e.playtesterV2.blueMana),r=(0,p.GV)(e=>e.playtesterV2.blackMana),l=(0,p.GV)(e=>e.playtesterV2.redMana),s=(0,p.GV)(e=>e.playtesterV2.greenMana),o=(0,p.GV)(e=>e.playtesterV2.colorlessMana),i=(0,p.GV)(e=>e.playtesterV2.energy),c=(0,p.GV)(e=>e.playtesterV2.turnCounter),d=(0,p.GV)(e=>e.playtesterV2.lifeTotal),u=(0,p.GV)(e=>e.playtesterV2.lifeTotal2),m=(0,p.GV)(e=>e.playtesterV2.infectDamage);return e?(0,n.jsxs)("div",{className:rw().container,children:[(0,n.jsxs)("div",{className:rw().row,children:[(0,n.jsx)("div",{className:rw().row,children:(0,n.jsx)(rO,{icon:"saga",tooltip:"Turn Count",counterName:"turnCounter",value:c})}),(0,n.jsxs)("div",{className:rw().row,children:[(0,n.jsx)(rO,{semanticIcon:"heart outline",tooltip:"Life 1",counterName:"lifeTotal",value:d}),(0,n.jsx)(rO,{semanticIcon:"heart outline",tooltip:"Life 2",counterName:"lifeTotal2",value:u})]}),(0,n.jsx)("div",{className:rw().row,children:(0,n.jsx)(rO,{icon:"p",tooltip:"Infect",counterName:"infectDamage",value:m})})]}),(0,n.jsx)("hr",{}),(0,n.jsxs)("div",{className:rw().row,children:[(0,n.jsx)(rO,{icon:"w",tooltip:"White",counterName:"whiteMana",value:t}),(0,n.jsx)(rO,{icon:"u",tooltip:"Blue",counterName:"blueMana",value:a}),(0,n.jsx)(rO,{icon:"b",tooltip:"Black",counterName:"blackMana",value:r}),(0,n.jsx)(rO,{icon:"r",tooltip:"Red",counterName:"redMana",value:l}),(0,n.jsx)(rO,{icon:"g",tooltip:"Green",counterName:"greenMana",value:s})]}),(0,n.jsx)("hr",{}),(0,n.jsx)("div",{className:rw().row,children:(0,n.jsxs)("div",{className:rw().row,children:[(0,n.jsx)(rO,{icon:"c",tooltip:"
4Colorless",counterName:"colorlessMana",value:o}),(0,n.jsx)(rO,{icon:"e",tooltip:"Energy",counterName:"energy",value:i})]})})]}):null},rO=({icon:e,semanticIcon:t,tooltip:a,counterName:r,value:l})=>{let[s]=(0,p.zU)(m.yG),o=()=>s({[r]:l+1}),i=()=>s({[r]:l>0?l-1:0});return(0,n.jsxs)("div",{className:rw().option,children:[(0,n.jsx)("button",{onClick:o,children:(0,n.jsx)(eg.A,{name:"chevron up"})}),(0,n.jsxs)("span",{className:rw().icon,title:a,onClick:o,onContextMenu:e=>{e.ctrlKey||(e.preventDefault(),i())},children:[e&&(0,n.jsx)(ek.A,{icon:e}),t&&(0,n.jsx)(eg.A,{name:t}),(0,n.jsx)("span",{className:rw().value,children:l})]}),(0,n.jsx)("button",{onClick:i,children:(0,n.jsx)(eg.A,{name:"chevron down"})})]})};var rN=a(839),rS=a.n(rN);let rA=()=>{let e=(0,p.GV)(e=>e.playtesterV2.commanderDamageWidget),t=(0,p.GV)(e=>e.playtesterV2.commanderDamangeOne),a=(0,p.GV)(e=>e.playtesterV2.commanderDamangeTwo),r=(0,p.GV)(e=>e.playtesterV2.commanderDamangeThree),l=(0,p.GV)(e=>e.playtesterV2.commanderDamangeFour);return e?(0,n.jsx)("div",{className:rS().container,children:(0,n.jsxs)("div",{className:rS().row,children:[(0,n.jsx)(rO,{icon:"counter-pin",tooltip:"Commander damage - Player 1",counterName:"commanderDamangeOne",value:t}),(0,n.jsx)(rO,{icon:"counter-pin",tooltip:"Commander damage - Player 2",counterName:"commanderDamangeTwo",value:a}),(0,n.jsx)(rO,{icon:"counter-pin",tooltip:"Commander damage - Player 3",counterName:"commanderDamangeThree",value:r}),(0,n.jsx)(rO,{icon:"counter-pin",tooltip:"Commander damage - Player 4",counterName:"commanderDamangeFour",value:l})]})}):null};var rM=a(10993),rG=a(83690),rD=a(43834),rT=a.n(rD);let rL=u.VS.filter(e=>"hand"!==e),rI=()=>{let e=(0,p.GV)(e=>e.playtesterV2.viewLargeCardOnCursorOver),[t,a,r]=(0,p.GV)(ai),[s,o]=(0,l.useState)(null),[i,c]=(0,l.useState)(null),[d,m]=(0,l.useState)(null),[h]=tV();if((0,l.useEffect)(()=>{t&&o(t),a&&c(a),r&&m(r)},[t,a,r]),!e)return null;let[y,g]=u.jo[h>800?"large":"normal"],b=rL.includes(d||"miscCards")&&!i?.revealed;return(0,n.jsx)("div",{className:rT().container,children:s&&!b?(0,n.jsx)(rM.A,{card:s,flipped:a?.flipped}):(0,n.jsx)(rG.A,{loading:!0,style:{width:y,height:g,animation:"none"}})})};var r$=a(62821),rB=a.n(r$);let rz=({data:e,onFilterChange:t,onlyShowOptionsFromCardIds:a=[]})=>{let r=(0,p.GV)(e=>e.playtesterV2.allCards),{cardTypes:s,categories:o}=Object.values(r).reduce((e,t)=>{if(!a.includes(t.id))return e;for(let a of t.types)e.cardTypes[a]=!0;for(let a of t.categories)e.categories[a]=!0;return e},{cardTypes:{},categories:{}}),[i,c]=(0,l.useState)(s),[d,u]=(0,l.useState)(o);(0,l.useEffect)(()=>{let e={},a=Object.keys(s).reduce((e,t)=>({...e,[t]:!i[t]}),{}),n=Object.keys(o).reduce((e,t)=>({...e,[t]:!d[t]}),{});for(let t of Object.values(r))[...t.types,...t.front?.types||[],...t.back?.types||[]].some(e=>a[e])&&(e[t.id]=!0),t.categories.some(e=>n[e])&&(e[t.id]=!0);t(e)},[i,d]);let m=Object.keys(s).map(e=>({label:e,onChange:()=>c({...i,[e]:!i[e]}),noCloseOnClick:!0,type:"checkbox",checked:i[e]})),h=Object.keys(o).map(e=>({label:e,onChange:()=>u({...d,[e]:!d[e]}),noCloseOnClick:!0,type:"checkbox",checked:d[e]})),y=m.every(e=>"checkbox"===e.type&&e.checked),g=h.every(e=>"checkbox"===e.type&&e.checked),b=[{type:"header",label:"Types"},{type:"checkbox",label:"Select all",checked:y,onChange:()=>c(y?{}:s)},...m,{type:"spacer"},{type:"header",label:"Categories"},{type:"checkbox",label:"Select all",checked:g,onChange:()=>u(g?{}:o)},...h];return(0,n.jsx)(tc.A,{menuClassName:rB().menu,options:b,children:(0,n.jsxs)("button",{className:rB().trigger,children:["Chart filters",(0,n.jsx)(eg.A,{name:"chevron down"})]})})};var rP=a(30402),rR=a(21760),rH=a.n(rR);let rF=({chartData:e,chartTitle:t,showFilter:a=!0})=>{let[r,s]=(0,l.useState)({}),o=e.map((e,t)=>({label:`${t}`,count:e.filter(e=>!r[e]).length})),i=e.reduce((e,t)=>e.concat(t),[]),c=Math.max(...e.map(e=>e.length));return(0,n.jsxs)("div",{className:rH().chartContainer,children:[(0,n.jsxs)("div",{className:rH().controls,children:[(0,n.jsx)("div",{className:rH().header,children:t}),a&&(0,n.jsx)(rz,{data:o,onFilterChange:s,onlyShowOptionsFromCardIds:i})]}),(0,n.jsx)(rP.A,{containerClassName:rH().barChart,className:rH().barChartBar,data:o,relativeMaximum:c})]})},rE=({chartData:e,chartTitle:t,showFilter:a=!0})=>{let[r,s]=(0,l.useState)({}),o=e.map((e,t)=>({label:`${t}`,count:e.filter(({id:e})=>!r[e]).reduce((e,{power:t})=>e+t,0)})),i=e.reduce((e,t)=>
4[...e,...t.map(e=>e.id)],[]),c=Math.max(...e.map(e=>e.reduce((e,t)=>e+t.power,0),[]));return(0,n.jsxs)("div",{className:rH().chartContainer,children:[(0,n.jsxs)("div",{className:rH().controls,children:[(0,n.jsx)("div",{className:rH().header,children:t}),a&&(0,n.jsx)(rz,{data:o,onFilterChange:s,onlyShowOptionsFromCardIds:i})]}),(0,n.jsx)(rP.A,{containerClassName:rH().barChart,className:rH().barChartBar,data:o,relativeMaximum:c})]})},rW=({chartData:e,showFilter:t=!0})=>{let[a,r]=(0,l.useState)({}),s=e.map((e,t)=>({label:`${t}`,count:e.filter(e=>!a[e.id]).reduce((e,{cmc:t})=>e+t,0),tooltip:(0,n.jsx)("div",{className:rH().tooltip,children:e.map(e=>(0,eb.Ye)(e.castingCost))})})),o=e.reduce((e,t)=>[...e,...t.map(e=>e.id)],[]),i=Math.max(...e.map(e=>e.reduce((e,t)=>e+t.cmc,0),[]));return(0,n.jsxs)("div",{className:rH().chartContainer,children:[(0,n.jsxs)("div",{className:rH().controls,children:[(0,n.jsx)("div",{className:rH().header,children:'Mana value "played"'}),t&&(0,n.jsx)(rz,{data:s,onFilterChange:r,onlyShowOptionsFromCardIds:o})]}),(0,n.jsx)(rP.A,{containerClassName:rH().barChart,className:rH().barChartBar,data:s,relativeMaximum:i})]})};var rZ=a(57221),rU=a.n(rZ);let rX=()=>{let e=(0,p.GV)(e=>e.playtesterV2.gameStatsWidget),t=(0,p.GV)(ad),a=(0,p.GV)(ah);return e?(0,n.jsxs)("div",{className:rU().container,children:[(0,n.jsx)(rF,{chartData:t,chartTitle:"Total mana producers",showFilter:!1}),(0,n.jsx)(rE,{chartData:a,chartTitle:"Power in play",showFilter:!1})]}):null},rY=e=>e.reduce((e,t)=>{let a=t.totalDamage||0,r=Number(t.card.power||t.card.front?.power)||1;return e+a+(a%r>0?r-a%r:0)},0),rK=e=>Math.ceil((e.totalDamage||0)/(Number(e.card.power||e.card.front?.power)||1)),rJ=e=>{let t=d.M.getState().playtesterV2.opponentsCards.find(t=>t.cardId===e.id);t&&d.M.dispatch({type:m.yG,payload:{focusedCardMetaId:t.id,focusedFrom:"opponentsCards"}})};var rQ=a(89912),rq=a(86691),r0=a.n(rq);let r1=({})=>{let e=(0,l.useRef)(null),{interactionsWidget:t,interactionsEnabled:a,interactionLog:r}=(0,p.GV)(e=>e.playtesterV2),[s]=(0,p.zU)(m.yG);return((0,l.useEffect)(()=>{e.current?.scrollTo({top:e.current.scrollHeight,behavior:"smooth"})},[r]),t&&a)?(0,n.jsxs)("div",{className:r0().container,children:[(0,n.jsx)(td.A,{className:r0().header,onClick:()=>s({interactionsOverlay:"log"}),icon:"external alternate",children:"Full interaction log"}),(0,n.jsx)("div",{className:r0().interactionList,ref:e,children:r.map((e,t)=>(0,n.jsx)(r2,{interaction:e,turnNumber:t+1},t+1))})]}):null},r2=({interaction:e,turnNumber:t})=>(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:r0().turnHeader,children:`Turn ${t}`}),(0,n.jsx)("div",{className:r0().column,children:Object.keys(e).map((t,a)=>(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:r0().interactionHeader,children:((e,t)=>{if("attackers"===t||"mill"===t){let a="attackers"===t,r=rY(e[t]);return`${a?"Attacked":"Milled"} for ${r} ${a?"damage":"cards"} with`}return F[t]})(e,t)}),"nothing"!==t&&(0,n.jsx)(r3,{interaction:e,eventName:t})]},a))})]},`turn-${t}`),r3=({interaction:e,eventName:t})=>(0,n.jsx)("ul",{className:r0().list,children:e[t]?.map((e,a)=>(0,n.jsx)("li",{className:r0().line,children:(0,n.jsx)(rQ.A,{card:e.card,className:r0().cardName,children:(0,n.jsx)("button",{onClick:()=>rJ(e.card),children:`${"attackers"===t?rK(e):""} ${e.card.name} ${"attackers"===t?"tokens":""}`})},`${e.card.name}-${a}`)},`${e.card.name}${a}`))});var r5=a(57097),r6=a.n(r5);let r4=()=>{let e=(0,p.GV)(e=>e.playtesterV2.viewLargeCardOnCursorOver),t=(0,p.GV)(e=>e.playtesterV2.countersWidget),a=(0,p.GV)(e=>e.playtesterV2.commanderDamageWidget),r=(0,p.GV)(e=>e.playtesterV2.gameStatsWidget),l=(0,p.GV)(e=>e.playtesterV2.interactionsEnabled);return e||t||a||r||l?(0,n.jsxs)("div",{className:r6().container,children:[(0,n.jsx)(rI,{}),(0,n.jsx)(rV,{}),(0,n.jsx)(rA,{}),(0,n.jsx)(rX,{}),(0,n.jsx)(r1,{})]}):null};var r8=a(24765),r7=a(7346),r9=a(97930),ne=a(7648);let nt=["cardId","notes"],na=["notes","toZone","fromZone","zone"],nr=e=>e?"tapped":"untapped",nn=e=>`counter:${Object.keys(e).map(t=>`${t}=${e[t].count}`).join(",")}`;var nl=a(79400),ns=a(8570),no=a.n(ns);let ni=({name:e,className:t=""})=>{let a=(0,p.GV)(e=>e.playtesterV2.gameLog),r=(0,p.GV)(e=>e.playtesterV2.allCards),[s,o]=(0,l.useState)(!1),i=s?(function(e,t){let a=[],r={};for(let n=0;n<e.length;n++)for(let l of e[n]){let e=r[l.id],s=t[l.cardId].name;if(e&&e.zone===l.zone)for(let t of Object.keys(e).reduce((t,a)=>{let r=e[a],n=l[a];
4return aS()(r,n)||na.includes(a)||t.push(a),t},[])){let e=l[t],r=`${t}:${e}`;"tapped"===t?r=nr(e):"counters"===t&&(r=nn(e)),a.push(`T${n}; ${s}; ${r}`)}else a.push(`T${n}; ${s}; moved ${l.fromZone||"miscCards"} => ${l.toZone||"miscCards"}`);r[l.id]=l}return a})(a,r).join("\n"):JSON.stringify(function(e,t){let a=[];for(let r of e){let e=[];for(let a of r){let r={name:t[a.cardId].name,...a};for(let e of nt)delete r[e];e.push(r)}a.push(e)}return a}(a,r),null,2);return(0,n.jsxs)("div",{className:`${no().container} ${t}`,children:[(0,n.jsxs)("div",{className:no().left,children:[(0,n.jsx)(ne.A,{icon:"eye",value:s?"simplified-log":"full-log",triggerWrapperClassName:no().dropdown,options:[{label:"Full log",id:"full-log",onClick:()=>o(!1)},{label:"Simplified log",id:"simplified-log",onClick:()=>o(!0)}]}),(0,n.jsx)(td.A,{icon:"copy outline",color:"orange",onClick:()=>{try{navigator.clipboard.writeText(i),tw.A.create("Copied log to clipboard","Export log","success")}catch(e){console.error(e),tw.A.create("Unable to copy log to clipboard","Export log","error")}},children:"Copy to clipboard"}),(0,n.jsx)(td.A,{icon:"download",color:"orange",onClick:()=>(0,nl.R)(`${e}_playtesterLog_${new Date().toISOString().slice(0,-8)}.txt`,i),children:"Download log"})]}),(0,n.jsx)("div",{className:no().right,children:(0,n.jsx)("pre",{children:i})})]})};var nc=a(34405),nd=a.n(nc);let nu=({move:e,turn:t,index:a,remove:r})=>{let{cardId:l,fromZone:s,toZone:o}=e,i=(0,p.GV)(e=>e.playtesterV2.allCards)[l],c=s||o;return i?(0,n.jsx)("div",{className:nd().moveContainer,children:c&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:nd().wordBox,children:[(0,n.jsxs)("div",{className:nd().moveDescription,children:[eR()(s||"Tokens"),(0,n.jsx)(eg.A,{name:"arrow right"}),eR()(o||"Deleted")]}),(0,n.jsx)(rQ.A,{className:nd().cardName,card:i,children:i.name})]}),(0,n.jsx)("button",{className:nd().removeContainer,onClick:()=>r(t,a),children:(0,n.jsx)(eg.A,{name:"close",className:nd().closeButton})})]})}):null};var np=a(1281),nm=a.n(np);let nh=({gameLog:e,removeFromGameLog:t,className:a=""})=>(0,n.jsx)("div",{className:`${nm().turnLog} ${a}`,children:e.map((e,a)=>(0,n.jsxs)("div",{className:nm().singleTurn,children:[(0,n.jsxs)("h4",{children:["Turn ",a
4]}),(0,n.jsx)("div",{children:e.map((e,r)=>(0,n.jsx)(nu,{move:e,turn:a,index:r,remove:t},`${e.cardId}-${r}`))})]},a))});var ny=a(42600),ng=a.n(ny);let nb=({name:e})=>{let t=(0,p.GV)(e=>e.playtesterV2.gameLog),a=(0,p.GV)(e=>e.playtesterV2.gameLogOverlay),[r,s]=(0,l.useState)(!1),[o,i]=(0,l.useState)("charts"),c=(0,p.GV)(ad),d=(0,p.GV)(au),u=(0,p.GV)(am),h=(0,p.GV)(ah),y=(0,p.GV)(ap),[g]=(0,p.zU)(m.yG),b=()=>{g({gameLogOverlay:!1})},x=(e,a)=>{let r=j()(t),n=r[e];n.splice(a,1),r[e]=n,g({gameLog:r})};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(av,{open:a,onClose:b,className:ng().container,children:[(0,n.jsx)(aC,{className:ng().backButton,mobileClassName:ng().backButton,onBack:b,children:(0,n.jsxs)("button",{className:ng().newGameButton,onClick:()=>s(!0),children:[(0,n.jsx)(eg.A,{name:"undo"}),(0,n.jsx)("span",{children:"New game"})]})}),(0,n.jsxs)("div",{className:ng().content,children:[(0,n.jsxs)("div",{className:ng().left,children:[(0,n.jsx)(r9.A,{className:ng().tabContainer,optionsClassName:ng().tabButton,options:[{label:"Charts",selected:"charts"===o,onClick:()=>i("charts")},{label:"Moves",selected:"moves"===o,onClick:()=>i("moves"),className:ng().mobile},{label:"Export",selected:"export"===o,onClick:()=>i("export")}]}),"export"===o&&(0,n.jsx)(ni,{className:ng().exports,name:e}),"moves"===o&&(0,n.jsx)(nh,{gameLog:t,removeFromGameLog:x}),"charts"===o&&(0,n.jsxs)("div",{className:ng().grid,children:[(0,n.jsx)(rF,{chartData:c,chartTitle:"Total mana producers"}),(0,n.jsx)(rF,{chartData:d,chartTitle:"Cards drawn"}),(0,n.jsx)(rF,{chartData:u,chartTitle:"Cards sent to grave"}),(0,n.jsx)(rW,{chartData:y}),(0,n.jsx)(rE,{chartData:h,chartTitle:"Total power in play"})]})]}),(0,n.jsxs)("div",{className:ng().right,children:[(0,n.jsx)(r9.A,{className:ng().tabContainer,optionsClassName:ng().tabButton,options:[{label:"Moves",selected:!1,onClick:()=>null}]}),(0,n.jsx)(nh,{gameLog:t,removeFromGameLog:x,className:ng().desktopGameTurnLog})]})]})]}),(0,n.jsx)(t2,{open:r,onClose:()=>s(!1)})]})};var nx=a(39777),nf=a.n(nx);let n_=()=>{let[e,t]=(0,l.useState)(""),[a,r]=(0,l.useState)([]),[s,o]=(0,l.useState)(!1),[i,c]=(0,l.useState)(0),[u,y]=(0,l.useState)({}),g=(0,p.GV)(e=>e.playtesterV2.stackDeckOverlay),b=(0,p.GV)(e=>e.playtesterV2.allCards),x=(0,p.GV)(as),[f,_]=(0,p.dN)(h.xU,h.kX),[v]=(0,p.zU)(m.yG),C=async(e,t)=>{at.A.post("/api/cards/scryfall-filter-passthrough/",{q:e,uids:t}).then(({uids:t})=>{let a=x.filter(e=>t.includes(b[e.cardId].uid)).map(e=>e.cardId);e.length<2?r([]):r(a)}).catch(e=>{r([]),console.error(e)}).finally(()=>{o(!1)})};(0,l.useEffect)(()=>{if(e.length<2)return r([]),o(!1),()=>null;o(!0);let a=setTimeout(()=>(e=>{if(!e.match(/[<>:=()]/g)){if(t(e),e.length<2)return r([]);let a=x.map(e=>e.cardId).filter(t=>{let a=b[t];return!!a&&!!(a.name.toLowerCase().includes(e.toLowerCase())||a.front?.name.toLowerCase().includes(e.toLowerCase())||a.back?.name.toLowerCase().includes(e.toLowerCase()))});return o(!1),void r(a)}C(e,x?.map(e=>b[e.cardId].uid)||[])})(e),500);return()=>clearTimeout(a)},[e]);let j=()=>{v({openingHandOverlay:!0,stackDeckOverlay:!1}),k()},k=()=>{t(""),r([]),y({}),c(0)};return(0,n.jsxs)(av,{className:nf().container,open:g,onClose:j,children:[(0,n.jsx)(aC,{className:nf().backButton,mobileClassName:nf().backButton,onBack:j}),(0,n.jsxs)("div",{className:nf().content,children:[(0,n.jsx)("h3",{children:"Select cards to appear by turn X"}),(0,n.jsxs)("div",{className:nf().controls,children:[(0,n.jsx)(tP.A,{focusOnMount:!0,containerClassName:nf().search,value:e,placeholder:"Filter cards",onChange:t}),(0,n.jsxs)("div",{className:nf().right,children:[(0,n.jsx)(tP.A,{header:"By turn",type:"number",value:i,onChange:e=>c(Number(e))}),(0,n.jsx)(td.A,{icon:"arrow right",color:"green",onClick:()=>{f(!0);let{library:e}=d.M.getState().playtesterV2,[t,a]=e.reduce((e,t)=>(u[t.id]?e[0].push(t):e[1].push(t),e),[[],[]]),r=7+i-t.length>0?7+i-t.length:0;for(let e=0;e<r;e++){let e=a.pop();e&&t.push(e)}v({stackDeckOverlay:!1,library:[...(0,eE.$)(t),...a],stackedDeckCardIds:u}),_(7),k()},children:"Start game"})]})]}),s&&(0,n.jsx)(aj.A,{}),(0,n.jsx)("div",{className:nf().cards,children:x.map(t=>{let r=b[t.cardId];return r&&(!(e.length>2)||a.includes(t.cardId))?(0,n.jsxs)("button",{className:nf().selectableCard,onClick:()=>{var e;return e=t.id,void y({...u,[e]:!u[e]})},children:[(0,n.jsx)(rM.A,{card:r}),u[t.id]&&(0,n.jsx)("div",{className:nf().selected,children:(0,n.jsx)(eg.A,{name:"check"})})]},t.id):null})})]})]})};var nv=a(98381),nC=a(75840),nj=a.n(nC);let nk=()=>{let e=(0,p.GV)(e=>e.playtesterV2.private),t=(0,p.GV)(e=>e.playtesterV2.sharePlaytesterOverlay),a=(0,l.useRef)(c().generate().replace("_","-")),[r,s]=(0,l.useState)(!1),[o,i]=(0,l.useState)(!0),[d]=(0,p.zU)(m.yG),u=(0,nv.useRouter)();(0,l.useEffect)(()=>()=>{tk.A.uninitialize()},[]);let h=e=>`${window.location.origin}/playtester-v2/${u.query.id}/share/${e}/?${r?"useBrowserDefaults=1":""}`,y=()=>{tw.A.create("Connection errored","Playtester Service","warning"),d({shareUrl:null}),tk.A.uninitialize()},g=()=>{tk.A.initialize(a.current,!0,g,y).then(()=>d({shareUrl:h(a.current)}
4)).catch(()=>{d({shareUrl:null}),tw.A.create("Playtester share stopped hosting","Playtester service","error")})},b=e=>tk.A.initialize(a.current,!0,g,y).then(()=>{o&&d({showOverlaysInPopout:!0,showPopoutHand:!0}),x(a.current),e&&window?.open(h(a.current),"_blank")?.focus(),d({sharePlaytesterOverlay:!1,shareUrl:h(a.current)})}).catch(e=>tw.A.create("Unable to create playtester shared window","Playtester service","error")),x=e=>{navigator.clipboard.writeText(h(e)),tw.A.create("Copied shared URL to clipboard","Playtester service","success")};return(0,n.jsxs)(tq.A,{open:t,onClose:()=>d({sharePlaytesterOverlay:!1}),modalClassName:nj().modal,children:[(0,n.jsx)("h2",{children:"Create share instance"}),(0,n.jsxs)("div",{className:nj().options,children:[(0,n.jsx)(tz.A,{header:"Force share instance settings to match primary window",description:"The shared window will use the exact settings used as the primary (eg: card size, etc)",checked:r,onClick:()=>s(!r)}),(0,n.jsx)(tz.A,{header:"Share page shows all content",description:"The share page shows all hidden information by default (eg: Hand is shown)",checked:o,onClick:()=>i(!o)})]}),e&&(0,n.jsx)("div",{className:nj().warning,children:"This deck is private. If you're sending someone a link who doesn't have access to this deck, it will not load."}),(0,n.jsxs)("div",{className:nj().controls,children:[(0,n.jsx)(td.A,{icon:"copy outline",color:"blue",onClick:()=>b(!1),children:"Create share and copy URL"}),(0,n.jsx)(td.A,{icon:"window maximize outline",color:"green",onClick:()=>b(!0),children:"Create share and open in new tab"})]})]})};var nw=a(69433),nV=a(8364),nO=a(13476),nN=a.n(nO);let nS=({label:e,onChange:t,disabled:a,value:r})=>(0,n.jsxs)("div",{className:`${nN().wrapper} ${a?nN().disabled:void 0}`,children:[e&&(0,n.jsx)("label",{className:nN().label,children:e}),(0,n.jsxs)("div",{className:nN().container,children:[(0,n.jsx)("button",{disabled:a,onClick:()=>t(0),className:`${nN().button} ${0===r?nN().selected:""}`,children:"Off"}),(0,n.jsx)("div",{className:nN().separator}),(0,n.jsx)("button",{disabled:a,onClick:()=>t(1),className:`${nN().button} ${1===r?nN().selected:""}`,children:"1"}),(0,n.jsx)("button",{disabled:a,onClick:()=>t(2),className:`${nN().button} ${2===r?nN().selected:""}`,children:"2"}),(0,n.jsx)("button",{disabled:a,onClick:()=>t(3),className:`${nN().button} ${3===r?nN().selected:""}`,children:"3"}),(0,n.jsx)("button",{disabled:a,onClick:()=>t(4),className:`${nN().button} ${4===r?nN().selected:""}`,children:"4"}),(0,n.jsx)("button",{disabled:a,onClick:()=>t(5),className:`${nN().button} ${5===r?nN().selected:""}`,children:"5"})]})]});var nA=a(33208),nM=a.n(nA);let nG=({label:e,value:t,onChange:a,disabled:r})=>(0,n.jsxs)("div",{className:r?nM().disabled:void 0,children:[e&&(0,n.jsx)("label",{className:nM().label,children:e}),(0,n.jsxs)("div",{className:nM().container,children:[(0,n.jsx)("button",{disabled:r,onClick:()=>a(1),className:`${nM().button} ${1===t?nM().selected:""}`,children:"1"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a(2),className:`${nM().button} ${2===t?nM().selected:""}`,children:"2"}),(0,n.jsx)("button",{disabled:r,onClick:()=>a(3),className:`${nM().button} ${3===t?nM().selected:""}`,children:"3"})]})]}),nD={Control:{counterspell:5,spotRemoval:2,massRemoval:3,attackers:0,mill:0,stax:2,discard:1,nothing:2}
4,Combo:{counterspell:3,spotRemoval:1,massRemoval:2,attackers:0,mill:0,stax:0,discard:1,nothing:4},Midrange:{counterspell:2,spotRemoval:3,massRemoval:2,attackers:3,mill:3,stax:1,discard:2,nothing:2},Stompy:{counterspell:1,spotRemoval:3,massRemoval:2,attackers:5,mill:0,stax:0,discard:2,nothing:2},Balanced:{counterspell:3,spotRemoval:3,massRemoval:3,attackers:3,mill:3,stax:3,discard:3,nothing:3}};var nT=a(58256),nL=a.n(nT);let nI=({})=>{let e=(0,p.GV)(e=>e.playtesterV2.interactionsEnabled),t=(0,p.GV)(e=>e.playtesterV2.interactionStartTurn),a=(0,p.GV)(e=>e.playtesterV2.maxNumberOfPullsForTurn),r=(0,p.GV)(e=>e.playtesterV2.interactionChances),l=(0,p.GV)(e=>e.playtesterV2.interactionArchetypePreset),s=(0,p.GV)(e=>e.playtesterV2.interactionsWidget),o=(0,p.GV)(e=>e.playtesterV2.playVsMill),i=(0,p.GV)(e=>e.playtesterV2.interactionIncludesGameChangers),[c]=(0,p.zU)(m.yG),d=e=>{c(e)};return(0,n.jsxs)("div",{className:nL().content,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)(nV.A,{label:"Enable interaction simulator",onChange:e=>d({interactionsEnabled:e,interactionsWidget:e,countersWidget:!1,gameStatsWidget:!1,commanderDamageWidget:!1}),checked:e}),(0,n.jsx)(nV.A,{label:"Enable interaction widget (disables game stats and counters widgets)",onChange:e=>d({interactionsWidget:e,countersWidget:!1,gameStatsWidget:!1,commanderDamageWidget:!1}),checked:s})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:"This feature simulates interaction from your opponents during a game of Commander."}),(0,n.jsx)("p",{children:"Below you can customize what kinds of interaction are enabled, and the relative chance of each occuring."}),(0,n.jsx)("p",{children:"Alternately, select one of the predefined settings to simulate playing against decks of different archetypes."})]}),(0,n.jsxs)("div",{className:nL().row,children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:`${nL().header} ${!e?nL().disabled:""}`,children:"Interaction starts after turn"}),(0,n.jsx)(tP.A,{value:t>0?t:void 0,placeholder:"No start turn set",onChange:(e,t)=>
4d({interactionStartTurn:e}),disabled:!e,className:nL().turnInput})]}),(0,n.jsx)(nG,{label:"Max number per turn",value:a,onChange:e=>d({maxNumberOfPullsForTurn:e}),disabled:!e})]}),(0,n.jsx)(ne.A,{className:`${!e?nL().labelDisabled:""}`,triggerWrapperClassName:nL().presetTrigger,header:"Archetype presets",value:l,placeholder:"Using custom settings",disabled:!e,options:Object.keys(nD).map(e=>({label:e,id:e,onClick:()=>d({interactionChances:nD[e],interactionArchetypePreset:e})}))}),(0,n.jsxs)("div",{children:[(0,n.jsx)(nV.A,{label:"Play against a mill deck. Your chance of being attacked becomes your chance of being milled.",onChange:e=>d({playVsMill:e}),checked:o,disabled:!e,className:`${e?"":nL().labelDisabled}`}),(0,n.jsx)(nV.A,{label:"Include game changers in possible interaction. (Defaults off if deck is marked Bracket 1 or 2, or unspecified)",onChange:e=>d({interactionIncludesGameChangers:e}),checked:i,disabled:!e,className:`${e?"":nL().labelDisabled}`})]}),(0,n.jsx)("div",{className:nL().settings,children:Object.keys(r).filter(e=>o?"attackers"!==e:"mill"!==e).map(t=>(0,n.jsx)(nS,{label:`${F[t]} chance`,value:r[t],onChange:e=>d({interactionChances:{...r,[t]:e},interactionArchetypePreset:null}),disabled:!e},t))}),(0,n.jsx)(td.A,{className:nL().confirmButton,onClick:()=>c({interactionsOverlay:null}),children:"Confirm Settings"})]})};var n$=a(99714),nB=a.n(n$);let nz=({turnInteraction:e})=>{let t=Object.keys(e).some(e=>"nothing"!==e),a=Object.values(e).reduce((e,t)=>[...e,...t.filter(e=>""!==e.card.name)],[]);return(0,n.jsxs)("div",{className:nB().cardNamesContainer,children:[a.map((e,t)=>(0,n.jsxs)("div",{className:nB().cardName,children:[(0,n.jsx)(rQ.A,{card:e.card,children:(0,n.jsx)("button",{onClick:()=>rJ(e.card),children:e.card.name})},`${e.card.name}-${t}`),e.totalDamage?` x${rK(e)}`:""]},`${t}`)),!t&&(0,n.jsx)("div",{children:"Nothing"})]})};var nP=a(57192),nR=a.n(nP);let nH=({interactionLog:e,setTurnNumber:t})=>(0,n.jsxs)("div",{className:nR().log,children:[!e.length&&(0,n.jsx)("div",{className:nR().nothingHappened,children:"Nothing to show yet"}),e.map((e,a)=>(0,n.jsxs)("div",{className:nR().turnsInteraction,children:[(0,n.jsxs)(td.A,{className:nR().turnHeader,onClick:()=>t(a+1),children:["Turn ",a+1]}),(0,n.jsx)(nz,{turnInteraction:e})]},`turn-${a}-interactions`))]});var nF=a(34618),nE=a.n(nF);let nW={Blue:nE().blueHighlight,Red:nE().redHighlight,Green:nE().greenHighlight,White:nE().whiteHighlight,Black:nE().blackHighlight,Colorless:nE().colorlessHighlight,Multicolor:nE().multicolorHighlight},nZ=({interactions:e})=>{let{fetchingRandomCards:t}=(0,p.GV)(e=>e.playtesterV2),a=Object.keys(e).some(e=>"nothing"!==e);return(0,n.jsx)("div",{className:nE().container,children:Object.keys(e).map((r,l)=>a&&"nothing"===r?null:(0,n.jsxs)("div",{className:nE().interactionBox,children:[(0,n.jsx)("div",{className:nE().cardImages,children:e[r]?.map((e,t)=>{var r;return!a&&t>0?null:(0,n.jsx)(rM.A,{className:`${a?0===(r=e.card.colors).length?nE().colorlessHighlight:r.length>1?nE().multicolorHighlight:nW[r[0]]:""}`,card:e.card},e.card.name)})}),t&&(0,n.jsxs)("div",{className:nE().loading,children:[(0,n.jsx)("div",{children:"Rolling for interaction"}),(0,n.jsx)(aj.A,{})]}),!t&&(0,n.jsx)(nU,{events:e[r],event:r})]},`interaction-turn-${l}`))})},nU=({event:e,events:t})=>{let a,r;return(0,n.jsx)("div",{className:nE().container,children:(0,n.jsx)("div",{className:nE().message,children:(a=t.reduce((e,t)=>[...e,`${rK(t)} ${t.card.name.split("//")[0].trim()} tokens`],[]).join(" and "),r=rY(t),"spotRemoval"===e?"They're targeting your permanent(s) with removal. Protect them if you can, or move them to the appropriate zone.":"counterspell"===e?"They're planning to counter your next spell that's a real threat.":"attackers"===e?`They're attacking with ${a}. Block, use a removal spell, or take ${r}.`:"stax"===e?"They cast a stax card. Remember this restriction as the game continues, or use your own interaction to remove it.":"massRemoval"===e?"They're wiping the board. Protect your permanents or they're destroyed.":"mill"===e?`They're using a spell or effect to mill you. Put the top ${r} cards of your library into your graveyard.`:"discard"===e?"They're making you discard one or more cards. Counter the effect, or discard the appropriate number of cards.":"nothing"===e?"Someone else must be the threat.":"Do as the spell says, unless you can counter it or stop it some other way.")})})};var nX=a(24138),nY=a.n(nX);let nK=({})=>{let e,t,{interactionLog:a,turnCounter:r,onOpponentsTurn:s}=(0,p.GV)(e=>e.playtesterV2),[o,i]=(0,l.useState)(r),[c]=(0,p.zU)(m.yG);(0,l.useEffect)(()=>{i(Math.max(r-!s,0))},[r,s]);let d=(t=o-1>(e=(0,p.GV)(e=>e.playtesterV2.interactionLog)).length?e.length:o,e.at(t-1)||{nothing:[{card:x.o5}]}),u=Object.keys(d).filter(e=>"nothing"!==e);return(0,n.jsxs)("div",{className:nY().container,children:[(0,n.jsxs)("div",{className:nY().latestCard,children:[(0,n.jsxs)("h2",{children:["Opponent's turn ",o]}),nJ(u).map((e,t)=>(0,n.jsx)("h3",{children:e},t)),(0,n.jsx)(nZ,{interactions:d})]}),(0,n.jsx)(nH,{interactionLog:a,setTurnNumber:i}),(0,n.jsx)(td.A,{className:nY().button,color:"green",onClick:()=>c({interactionsOverlay:null}),children:"Close"})]})},nJ=e=>{let t=[];return e.length>0&&e.some(e=>"attackers"!==e&&"counterspell"!==e)&&t.push("An opponent cast the following spell(s)"),e.includes("attackers")&&t.push("Your opponents are attacking"),e.includes("counterspell")&&t.push("An opponent is holding up mana"),0===e.length&&t.push("Your opponents didn't interact"),t};var nQ=a(60519),nq=a.n(nQ);let n0=({})=>{let{interactionsOverlay:e,fetchingRandomCards:t,interactionsEnabled:a}=(0,p.GV)(e=>e.playtesterV2),[r]=(0,p.zU)(m.yG);return(0,l.useEffect)(()=>{nw.A.signalEvent(`Playtester interaction sim - interaction ${a?"enabled":"disabled"}`)},[]),(0,l.useEffect)(()=>{t&&q().then(e=>{let{interactionLog:t,allCards:a,opponentsCards:n}=d.M.getState().playtesterV2,l=j()(t),s=Object.values(e).reduce((e,t)=>
4[...e,...t.map(e=>e.card)],[]).filter(e=>""!==e.name),o=s.reduce((e,t)=>({...e,[t.id]:t}),{});l.push(e),r({allCards:{...a,...o},interactionLog:l,fetchingRandomCards:!1,opponentsCards:[...n,...s.map(e=>({...(0,b.uS)(e),id:c().generate(),cardId:e.id}))]})}).catch(()=>{let{interactionLog:e}=d.M.getState().playtesterV2,t=j()(e);t.push({nothing:[{card:x.o5}]}),r({fetchingRandomCards:!1,interactionLog:t})})},[t]),(0,n.jsxs)(tB.A,{open:!!e,onClose:()=>{r({interactionsOverlay:null})},rootClassName:nq().container,className:nq().content,mobileToolbarOptions:[{label:"Save",icon:"save",onClick:()=>r({interactionsOverlay:null}),hidden:"log"===e}],children:[(0,n.jsx)(r9.A,{className:nq().tabs,options:[{label:"Interaction settings",onClick:()=>r({interactionsOverlay:"settings"}),selected:"settings"===e},{label:"Interaction log",onClick:()=>r({interactionsOverlay:"log"}),selected:"log"===e}]}),"settings"===e&&(0,n.jsx)(nI,{}),"log"===e&&(0,n.jsx)(nK,{})]})};var n1=a(83480),n2=a(34261),n3=a.n(n2),n5=!0;let n6="playtester-v2",n4=({allCards:e,tokens:t,categories:a,multiplayerFormat:r,startingLifeTotal:s,metaInfo:i,deckId:c,isSnapshot:b})=>{let x=(0,p.GV)(e=>e.playtesterV2.sharedWindow),[_,v]=(0,l.useState)(x),[C,j]=(0,p.zU)(f.oc,m.yG),[k,w,V]=(0,p.dN)(h.kX,h.xU,h.Qy);(0,p.GV)(e=>e.playtesterV2.showOverlaysInPopout),(0,l.useEffect)(()=>{document.body.classList.add(n6);let e=()=>{let e=d.M.getState(),{isMobile:t,isMidsize:a}=e.active,{handSize:r,autoHandSizeEnabled:n}=e.playtesterV2,l=window.innerWidth,s=window.innerHeight;l>600&&t?C({target:"isMobile",flag:!1}):l<=600&&!t&&C({target:"isMobile",flag:!0}),l>900&&a?C({target:"isMidsize",flag:!1}):l<=900&&!a&&C({target:"isMidsize",flag:!0});let o="normal";o=s<600?"x-small":s<800?"small":s<1e3?"small-normal":s<1200?"normal":s<1500?"normal-large":"large";let i=n?o:r,[c,p]=u.jo[i],m=e=>l<6*u.jo[e][0]*1.3||s<3*u.jo[e][1]*1.5-p;j({autoCardSize:m("small")?"x-small":m("small-normal")?"small":m("normal")?"small-normal":m("normal-large")?"normal":m("large")?"normal-large":"large",autoHandSize:o})};return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),document.body.classList.remove(n6)}},[]),(0,l.useEffect)(()=>{if(x)return;let e=e=>(e.preventDefault(),e.returnValue="Are you sure you want to close?");return(0,g.q)().disableReloadStop||window.addEventListener("beforeunload",e),()=>{window.removeEventListener("beforeunload",e)}},[]),(0,l.useEffect)(()=>{x?setTimeout(()=>v(!1),100):(j({...(0,y.Z)(),...(0,g.q)(),tokens:t,allCards:e,categories:a,startingLifeTotal:s,multiplayerFormat:r}),V(),w(),k(7),setTimeout(()=>v(!1),100))},[]);let O=x?"Archidekt shared playtester":`Archidekt playtester - ${i?.name||""}`;return(0,n.jsxs)(r8.A,{touchSlop:5,children:[i&&(0,n.jsxs)(o(),{children:[(0,n.jsx)("title",{children:O}),(0,n.jsx)("meta",{property:"og:title",content:O}),(0,n.jsx)("meta",{property:"og:type",content:"article"}),(0,n.jsx)("meta",{property:"article:author",content:i.owner}),(0,n.jsx)("meta",{property:"og:image",content:i.featured}),(0,n.jsx)("meta",{property:"og:image:width",content:"764"}),(0,n.jsx)("meta",{property:"og:image:height",content:"430"}),(0,n.jsx)("meta",{property:"og:image:type",content:"image/jpeg"}),(0,n.jsx)("meta",{name:"author",content:i.owner}),(0,n.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,n.jsx)("meta",{name:"twitter:label1",content:"Created by"}),(0,n.jsx)("meta",{name:"twitter:data1",content:i.owner}),(0,n.jsx)("meta",{name:"twitter:label2",content:"Format"}),(0,n.jsx)("meta",{name:"twitter:data2",content:i.format})]}),(0,n.jsx)("div",{className:`${n3().container} ${_?n3().masked:""}`,children:!_&&(0,n.jsxs)(n.Fragment,{children:[!x&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r4,{}),(0,n.jsx)(re,{}),(0,n.jsx)(r_,{}),(0,n.jsx)(rj,{}),(0,n.jsx)(nb,{name:i?.name}),(0,n.jsx)(nk,{}),(0,n.jsx)(aq,{}),(0,n.jsx)(aK,{}),(0,n.jsx)(rr,{}),(0,n.jsx)(n0,{})]}),(0,n.jsx)(tf,{}),(0,n.jsx)(rm,{}),(0,n.jsx)(ae,{deckId:c,isSnapshot:b}),!x&&(0,n.jsx)(rg,{}),(0,n.jsx)(tj,{}),(0,n.jsx)(r7.A,{}),(0,n.jsx)(n_,{}),(0,n.jsx)(aO,{}),(0,n.jsx)(aE,{}),(0,n.jsx)(a9,{}),(0,n.jsx)(aU,{}),(0,n.jsx)(a4,{}),(0,n.jsx)("div",{className:n3().grid})]})})]})},n8=async(e,t,a)=>{let r=Number(t.req.cookies?.tbId||0),{show_custom_uploads:n=!1}=JSON.parse(t.req.cookies?.settings||"{}"),l={name:e.name,owner:e.owner.username,featured:e.customFeatured||e.featured||"",format:x.hZ[e.deckF
4ormat]},s=(0,n1.PI)(e.customCards,!1,r,n,!0),o=(0,n1.Bw)([...e.cards],void 0,void 0,void 0,!0),i=(e?.categories||[]).reduce((e,t)=>({...e,[t.name]:t}),{}),d=[...o,...s].reduce((e,t)=>({...e,[t.id]:t}),{}),u=o.filter(e=>e.types.includes("Token")),p=s.filter(e=>!!e.customCard&&e.types.includes("Token")),m=u.reduce((e,t)=>({...e,[t.oracleCardId]:!0}),{}),h=Object.values(d).reduce((e,t)=>[...e,...t.tokens.filter(e=>!m[e])],[]),y=x.u0.includes(e.deckFormat),g=20;(e.deckFormat===x.uB.EDH||e.deckFormat===x.uB.ONE_V_ONE_COMMANDER||e.deckFormat===x.uB.DUEL_COMMANDER)&&(g=40),(e.deckFormat===x.uB.BRAWL||e.deckFormat===x.uB.HISTORIC_BRAWL)&&(g=25),e.deckFormat===x.uB.PAUPER_EDH&&(g=30);let f=h.length?await new _.o8(t).listCardsOnly({oracleCardIds:h,includeTokens:!0,includeEmblems:!0,includeArtCards:!0}):[];f.push(...u),f.push(...p);let v={...d},C=f.sort(ar.X4).reduce((e,t)=>{let a=t.types.includes("Token")||t.front?.types.includes("Token")||t.types.includes("Tolkien")||"Morph"===t.name||"Manifest"===t.name,r=t.types.includes("Emblem"),n="Radiation"===t.name,l="Monarch"===t.name||"The Monarch"===t.name,s="City's Blessing"===t.name,o="On an Adventure"===t.name,i="Foretell"===t.name,c="Energy Reserve"===t.name,d=t.types.includes("Dungeon")||t.front?.types.includes("Dungeon")||t.back?.types.includes("Dungeon");return(r||l||s||d||a||o||n||i||c)&&e.push(t),e},[]).map(e=>{let t=Object.keys(d).find(t=>{let a=d[t];return a.name===e.name&&a.oracleCardId===e.oracleCardId});return{id:t||c().generate(),cardId:t?d[t].id:e.id}}),j=f.sort((e,t)=>e.name>t.name?1:-1).reduce((e,t)=>({...e,[t.id]:t}),{});return{deckId:a,metaInfo:l,categories:i,multiplayerFormat:y,startingLifeTotal:g,tokens:C,allCards:{...v,...j},redux:{playtesterV2:{...(0,b.Ay)(e?.edhBracket),private:e.private??!1,sharedWindow:!!t.query.roomId}}}}},34261:e=>{e.exports={container:"playtesterV2_container__27nQy",masked:"playtesterV2_masked__hTiHz",popout:"playtesterV2_popout__SLjLO",content:"playtesterV2_content__4XlT4",grid:"playtesterV2_grid__Dxfk_",dragCard:"playtesterV2_dragCard__Xa8B5",fixedAd:"playtesterV2_fixedAd__5G6LO"}},34405:e=>{e.exports={cardName:"gameLogMove_cardName__LpI9T",closeButton:"gameLogMove_closeButton__lX_iv",moveContainer:"gameLogMove_moveContainer__wg5US",removeContainer:"gameLogMove_removeContainer__fknMZ",wordBox:"gameLogMove_wordBox__s4cj0",moveDescription:"gameLogMove_moveDescription__8xCvq"}},34618:e=>{e.exports={container:"interactionDisplay_container__FLrYa",interactionBox:"interactionDisplay_interactionBox__0sd4E",cardImages:"interactionDisplay_cardImages__CdmQC",loading:"interactionDisplay_loading__IHRB7",cardMessages:"interactionDisplay_cardMessages__T_EDB",whiteHighlight:"interactionDisplay_whiteHighlight__WAigJ",blueHighlight:"interactionDisplay_blueHighlight__Ugm0v",blackHighlight:"interactionDisplay_blackHighlight__KDOX3",redHighlight:"interactionDisplay_redHighlight__utx1g",greenHighlight:"interactionDisplay_greenHighlight__2TmVj",colorlessHighlight:"interactionDisplay_colorlessHighlight___ssCp",multicolorHighlight:"interactionDisplay_multicolorHighlight__J0T4X",message:"interactionDisplay_message__iQeax"}},39283:e=>{e.exports={wrapper:"fancyGroupCardWrapper_wrapper__3i0k4",scrollIndicator:"fancyGroupCardWrapper_scrollIndicator__nMf1c"}},39355:e=>{e.exports={container:"keylistenerOverlay_container__UtHCG",backButton:"keylistenerOverlay_backButton__G7_0A",content:"keylistenerOverlay_content__qtkfZ",trigger:"keylistenerOverlay_trigger__H1UNR",adjustForNoActionsButton:"keylistenerOverlay_adjustForNoActionsButton__LetF4"}},39364:e=>{e.exports={container:"searchZoneOverlay_container__2GWXr",content:"searchZoneOverlay_content__ZA4ok",hoverToHideButton:"searchZoneOverlay_hoverToHideButton__D5n4B",hidden:"searchZoneOverlay_hidden__Zn9mD",filters:"searchZoneOverlay_filters__7TwxX",search:"searchZoneOverlay_search__QbSOR",checkboxes:"searchZoneOverlay_checkboxes__74IZU",checkbox:"searchZoneOverlay_checkbox__si4wB",cards:"searchZoneOverlay_cards__3WANR",emptySearchContainer:"searchZoneOverlay_emptySearchContainer__HKWTw"}},39777:e=>{e.exports={container:"stackDeckOverlay_container__l1JCN",backButton:"stackDeckOverlay_backButton__33zDF",content:"stackDeckOverlay_content__FYGOm",controls:"stackDeckOverlay_controls__mU621",right:"stackDeckOverlay_right__0cb5H",search:"stackDeckOverlay_search__50A9g",cards:"stackDeckOverlay_cards__517GH",selectableCard:"stackDeckOverlay_selectableCard__slV7x",selected:"stackDeckOverlay_selected__p0jqZ"}},42600:e=>{e.exports={container:"gameLogOverlay_container__o9K8P",backButton:"gameLogOverlay_backButton__QlAWB",newGameButton:"gameLogOverlay_newGameButton__gpHzs",content:"gameLogOverlay_content__3aBcQ",left:"gameLogOverlay_left__c6HVB",right:"gameLogOverlay_right__XDCIO",grid:"gameLogOverlay_grid__I3jAX",exports:"gameLogOverlay_exports__rTiw4",tabContainer:"gameLogOverlay_tabContainer__M0NdW",tabButton:"gameLogOverlay_tabButton__ovAMY",desktopGameTurnLog:"gameLogOverlay_desktopGameTurnLog__nP0EV",mobile:"gameLogOverlay_mobile__Y_LDz"}},43834:e=>{e.exports={container:"staticCardOverlay_container__HhDvL"}},43903:(e,t,a)=>{"use strict";a.d(t,{FX:()=>n,gU:()=>r,pM:()=>l});let r={count:1,color:"#ffffff",primary:!1},n={"+1 / +1":{...r},Lifelink:{...r,icon:"ability-lifelink"},Hexproof:{...r,icon:"ability-hexproof"},Indestructible:{...r,icon:"ability-indestructible"},Time:{...r,icon:"counter-time"},Charge:{...r,icon:"counter-charge"},Generic:{...r,icon:"ability-d20"}},l={...n,"-1 / -1":{...r},Loyalty:{...r,icon:"loyalty-start"},Flying:{...r,icon:"ability-flying"},Deathtouch:{...r,icon:"ability-deathtouch"},Menace:{...r,icon:"ability-menace"},Trample:{...r,icon:"ability-trample"},"First Strike":{...r,icon:"ability-first-strike"},"Double Strike":{...r,icon:"ability-double-strike"},Reach:{...r,icon:"ability-reach"},Vigilance:{...r,icon:"ability-vigilance"},Token:{...r,icon:"token"},Time:{...r,icon:"counter-time"},Lore:{...r,icon:"counter-lore"},Shield:{...r,icon:"counter-shield"},Haste:{...r,icon:"ability-haste"}}},44398:e=>{e.exports={flex:"xInputOverlay_flex__KlrYX",content:"xInputOverlay_content__iJhtv",container:"xInputOverlay_container__Xh_9N",backButton:"xInputOverlay_backButton__DZKR3",form:"xInputOverlay_form__do4xY"}},46587:e=>{e.exports={manaPoolDropdown:"manaOptions_manaPoolDropdown__GDxOz",highlightOnHover:"manaOptions_highlightOnHover__HkBsx",primaryTriggerContent:"manaOptions_primaryTriggerContent__MKOyW",smallTriggerContent:"manaOptions_smallTriggerContent__mzXcS",triggerGroup:"manaOptions_triggerGroup__53lv7",manaListOption:"manaOptions_manaListOption__Ck0dt",label:"manaOptions_label__1hmU1",manaListOptionControls:"manaOptions_manaListOptionControls__n_Ccc",energy:"manaOptions_energy__sj7Sk",menu:"manaOptions_menu__uwHFg",numericField:"manaOptions_numericField__VRwyG"}},48535:e=>{e.exports={tokenOptions:"playArea_tokenOptions__z83d1"}},49861:e=>{e.exports={flex:"openingHandOverlay_flex__p2N_f",content:"openingHandOverlay_content__fF6Po",controls:"openingHandOverlay_controls__SECTg",container:"openingHandOverlay_container__6352R",backButton:"openingHandOverlay_backButton__s3Bnn",keep:"openingHandOverlay_keep__r9BTT",muligan:"openingHandOverlay_muligan__NRPIl",instructions:"openingHandOverlay_instructions__xKDEs",otherZones:"openingHandOverlay_otherZones__CuH_F",zone:"openingHandOverlay_zone__Z5Hbn",transparent:"openingHandOverlay_transparent__FeXW9"}},50094:e=>{e.exports={sleeve:"cardSleeves_sleeve__FplOL"}},55256:e=>{e.exports={triggers:"randomGeneratorOverlay_triggers__LeEfv",arrow:"randomGeneratorOverlay_arrow__ejUju",answer:"randomGeneratorOverlay_answer__E6IL5",previousAnswers:"randomGeneratorOverlay_previousAnswers__pOKr4",previousControl
4s:"randomGeneratorOverlay_previousControls__qJANe",clearResults:"randomGeneratorOverlay_clearResults__CXAQL",generating:"randomGeneratorOverlay_generating__Cn6PZ",spin:"randomGeneratorOverlay_spin__dTgcE"}},55366:e=>{e.exports={fullHeight:"lifePlayerCounters_fullHeight__CHSee",trigger:"lifePlayerCounters_trigger__kiKjl",highlightOnHover:"lifePlayerCounters_highlightOnHover__4bqV5",menu:"lifePlayerCounters_menu__rS_SH"}},56774:e=>{e.exports={container:"commandTaxCounters_container__ZLQFQ",counters:"commandTaxCounters_counters__l7_5O",counter:"commandTaxCounters_counter__ruWzM"}},57097:e=>{e.exports={container:"widgets_container__DgCc6"}},57192:e=>{e.exports={log:"interactionList_log__U5rwn",turnsInteraction:"interactionList_turnsInteraction__uBPhI",selectTurnButton:"interactionList_selectTurnButton__q_XZv",turnHeader:"interactionList_turnHeader__0rHLX",nothingHappened:"interactionList_nothingHappened__lMV4y"}},57221:e=>{e.exports={container:"gameStatsWidget_container__wk8cQ"}},58198:e=>{e.exports={container:"sizeSelector_container__q6GIB",label:"sizeSelector_label__YXX_T",button:"sizeSelector_button__8_PCN",selected:"sizeSelector_selected__G8Nqo",disabled:"sizeSelector_disabled__xiWzo"}},58256:e=>{e.exports={content:"interactionSettings_content__tU9Fl",row:"interactionSettings_row__frTzc",turnInput:"interactionSettings_turnInput__ApBME",settings:"interactionSettings_settings__ysGZy",header:"interactionSettings_header__WbsPf",disabled:"interactionSettings_disabled__ArnYv",labelDisabled:"interactionSettings_labelDisabled__XMCjk",presetTrigger:"interactionSettings_presetTrigger__U8BLZ",confirmButton:"interactionSettings_confirmButton__vgNji"}},60519:e=>{e.exports={container:"interactionControlsOverlay_container__fcL92",backButton:"interactionControlsOverlay_backButton__FZNMd",tabs:"interactionControlsOverlay_tabs__ecbIu"}},61649:e=>{e.exports={container:"playArea_container__niGL2",content:"playArea_content__Zyntn",dragSelectionOverlay:"playArea_dragSelectionOverlay__WjRXP",menu:"playArea_menu__vQddh",extendedControlMenu:"playArea_extendedControlMenu__6niLR",notContextMenu:"playArea_notContextMenu__RB0cY",trigger:"playArea_trigger__D0bLZ",extendedControls:"playArea_extendedControls__JtDUH",triggerButton:"playArea_triggerButton__dpsvZ",extendedControlsTriggerButton:"playArea_extendedControlsTriggerButton__ly4xw",oldPlaytesterLink:"playArea_oldPlaytesterLink__fS24I",cardLockPrompt:"playArea_cardLockPrompt__XORWO",showCardLockPrompt:"playArea_showCardLockPrompt__mz24h",selectedInfo:"playArea_selectedInfo__9Zg6v",videoAd:"playArea_videoAd__b4Bvq"}},62821:e=>{e.exports={menu:"gameLogChartFilters_menu__dHaYz",trigger:"gameLogChartFilters_trigger__VD4Ir"}},64205:(e,t,a)=>{"use strict";a.d(t,{$:()=>r});let r=e=>{let t=(e=e.slice()).length,a,r;for(;0!==t;)r=Math.floor(Math.random()*t),t-=1,a=e[t],e[t]=e[r],e[r]=a;return e}},68529:e=>{e.exports={container:"interactionsResolvedButton_container__xKAra",text:"interactionsResolvedButton_text__HaZxu",desktopText:"interactionsResolvedButton_desktopText__4O0pW",mobileText:"interactionsResolvedButton_mobileText__rA1Td",button:"interactionsResolvedButton_button__WtnXG"}},69670:e=>{e.exports={overlay:"overlay_overlay__LFsAs",open:"overlay_open__e9G2j",grid:"overlay_grid__7KPJX",weirdCloseContainer:"overlay_weirdCloseContainer__uSnAF",centerLayoutParentContainer:"overlay_centerLayoutParentContainer__13vJm",centerLayoutContent:"overlay_centerLayoutContent__oBLfv"}},72714:e=>{e.exports={container:"cardSearch_container__gGUKY",backButton:"cardSearch_backButton__e8kS5",content:"cardSearch_content__xcJ73",form:"cardSearch_form__xJZB0",cards:"cardSearch_cards__DXAgw"}},75009:e=>{e.exports={cardDropPreview:"cardDragOverPreview_cardDropPreview__fonkS"}},75023:e=>{e.exports={container:"settings_container__LBcgo",fancyGroup:"settings_fancyGroup__LEgd1",checkboxes:"settings_checkboxes__S3L8v",sizeSelectors:"settings_sizeSelectors__cHYMC",numericInput:"settings_numericInput__egZA7",colorPicker:"settings_colorPicker__8_DR2",themeDropdown:"settings_themeDropdown__VswVi"}},75423:e=>{e.exports={container:"hand_container__4Ge3I",controls:"hand_controls__A_tlm",optionsTrigger:"hand_optionsTrigger__xQ771",options:"hand_options__NCdbb",smallOptions:"hand_smallOptions__5j9j_"}},75840:e=>{e.exports={button:"playtesterShareOverlay_button__vXNoi",options:"playtesterShareOverlay_options__7Y18h",controls:"playtesterShareOverlay_controls__HwdDP",reconnectionToast:"playtesterShareOverlay_reconnectionToast__eTcC2",warning:"playtesterShareOverlay_warning__GbEMa"}},79400:(e,t,a)=>{"use strict";a.d(t,{R:()=>r}),a(23305);let r=(e,t)=>{let a=document.body;if(a){let r=document.createElement("a");r.setAttribute("href","data:pdf/plain;charset=utf-8,"+encodeURIComponent(t)),r.setAttribute("download",e),r.style.display="none",a.appendChild(r),r.click(),a.removeChild(r)}}},79686:e=>{e.exports={form:"customCardCreationOverlay_form__J9mA0"}},80869:e=>{e.exports={container:"tokenLayer_container__8reZW",titleBox:"tokenLayer_titleBox__HlOJl"}},83330:e=>{e.exports={container:"cardCounters_container__h3p_e",rightCounters:"cardCounters_rightCounters__NoJeC",counters:"cardCounters_counters__UxbEP",counter:"cardCounters_counter__0IdQX",reverseContainer:"cardCounters_reverseContainer__5hQbm",reverseCounters:"cardCounters_reverseCounters__uTDbL"}},86054:e=>{e.exports={stack:"genericZoneWrapper_stack__vhW1v",dummyCardPlaceholder:"genericZoneWrapper_dummyCardPlaceholder__FY_Yy",dropZone:"genericZoneWrapper_dropZone__bLZsN",isDraggedOver:"genericZoneWrapper_isDraggedOver__o78kz",headerTrigger:"genericZoneWrapper_headerTrigger__6JNws",menu:"genericZoneWrapper_menu__HVR1z",openMenuUp:"genericZoneWrapper_openMenuUp__TAumB",upkeepReminder:"genericZoneWrapper_upkeepReminder__5WASO"}},86691:e=>{e.exports={container:"interactionWidget_container__3uT01",header:"interactionWidget_header__1KYkm",turnHeader:"interactionWidget_turnHeader__1ecNb",interactionList:"interactionWidget_interactionList__UD7Gm",interactionHeader:"interactionWidget_interactionHeader__MMFen",column:"interactionWidget_column__0gV2t",list:"interactionWidget_list__J1mSM",line:"interactionWidget_line__9J8jE",cardName:"interactionWidget_cardName__v3JH_"}},87880:(e,t,a)=>{"use strict";a.d(t,{J9:()=>_,MK:()=>b,Qy:()=>m,Xj:()=>f,aR:()=>x,kX:()=>y,q:()=>g,xU:()=>h});var r=a(34783),n=a.n(r),l=a(89532),s=a(2817),o=a(60634),i=a(64205),c=a(43903),d=a(1062),u=a(35635);
4let p=["planes","planar deck"],m=()=>{let{allCards:e,categories:t}=l.M.getState().playtesterV2,a=Object.values(e).reduce((e,a)=>{let r=Array(a.qty).fill(a).map(e=>({id:n().generate(),cardId:e.id})),l=a.categories[0]||"",s=t[l]?.isPremier??!1,o=t[l]?.includedInDeck??!0;return s?e.commandZone?.push(...r):"Sideboard"===l?e.sideboard?.push(...r):o?e.library?.push(...r):p.includes(l.toLowerCase())&&!o?e.planes?.push(...r):l.toLowerCase().includes("attraction")&&!o&&e.attractions?.push(...r),e},{sideboard:[],commandZone:[],library:[],attractions:[],planes:[]});return(0,s.wd)({cleanGameZones:a})},h=(e=!1)=>{let{cleanGameZones:t,startingLifeTotal:a,allCards:r}=l.M.getState().playtesterV2,n=e=>{let t=r[e.cardId];return{...(0,o.uS)(t),id:e.id,cardId:e.cardId}},c=t.sideboard.map(n),d=t.commandZone.map(n),p=t.library.map(n),m=t.attractions.map(n),h=t.planes.map(n);return d.sort((e,t)=>{let a=r[e.cardId],n=r[t.cardId];return(0,u.Oj)(a,n)}),(0,s.wd)({...(0,o.p7)(e),sideboard:c,commandZone:d,library:(0,i.$)(p),attractions:(0,i.$)(m),planes:(0,i.$)(h),lifeTotal:a,lifeTotal2:a,gameLog:[],interactionLog:[],onOpponentsTurn:!1})},y=(e,t)=>{let{library:a,hand:r}=l.M.getState().playtesterV2,n=t?a.slice(a.length-e,a.length):a.slice(0,e),o=t?a.filter((t,r)=>r<a.length-e):a.filter((t,a)=>a>e-1),i=[...n,...r];return(0,s.wd)({library:o,hand:i})},g=e=>{let{library:t,graveyard:a}=l.M.getState().playtesterV2,r=t.slice(0,e),n=t.filter((t,a)=>a>e-1),o=[...r.reverse(),...a];return(0,s.wd)({library:n,graveyard:o})},b=(e="library")=>{let t=l.M.getState().playtesterV2[e];return(0,s.wd)({[e]:(0,i.$)(t)})},x=(e,t,a,r=0,n=[0,0])=>{let o=l.M.getState().playtesterV2;if(o.sharedWindow)return(0,s.wd)({});let i=Array.isArray(e)?e.map(e=>o[t].find(t=>t.id===e)).filter(e=>!!e):[e],c=i.map(e=>e.id),u=o[t],p=o[a],m=u.filter(e=>!c.includes(e.id)),h=p.filter(e=>!c.includes(e.id)),y=i.map(e=>{let r=o.allCards[e.cardId],n=(0,d.s)(r,e)&&!e.faceDown;return{...e,tapped:"battlefield"===a&&(n||e.tapped),flipped:"battlefield"===a?e.flipped:r.flippedDefault,upsideDown:"battlefield"===a&&e.upsideDown,faceDown:"battlefield"===a&&e.faceDown,dimmed:"battlefield"===a&&e.dimmed,customPowerOffset:"battlefield"===a?e.customPowerOffset:0,customToughnessOffset:"battlefield"===a?e.customToughnessOffset:0,counters:"battlefield"===a&&"battlefield"===t?e.counters:"battlefield"===a&&"battlefield"!==t?v(e):{}}}).filter(e=>"battlefield"===a||!e.token&&!e.tokenCopy);r>-1?h.splice(r,0,...y):h.push(...y);let g={...o.cardCoordinates};for(let e=0;e<i.length;e++){let r=i[e];"battlefield"===t&&delete g[r.id],"battlefield"===a&&(Array.isArray(n[e])?g[r.id]=n[e]:g[r.id]=n)}return(0,s.wd)({[t]:m,[a]:h,cardCoordinates:g,selected:{}})},f=(e,t)=>{let a=l.M.getState().playtesterV2,r=Array.isArray(e)?e:[e],n=[...a[t]];for(let e of r){let t=n.findIndex(t=>e.id===t.id);-1!==t&&(n[t]=e)}return(0,s.wd)({[t]:n})},_=(e,t)=>{let a=l.M.getState().playtesterV2,r=(Array.isArray(e)?a[t].filter(t=>e.includes(t.id)):[e]).map(e=>e.id),n=a[t].filter(e=>!r.includes(e.id)),o={...a.cardCoordinates};return r.forEach(e=>delete o[e]),(0,s.wd)({[t]:n,cardCoordinates:o})},v=e=>{let t=l.M.getState().playtesterV2.allCards[e.cardId],a=t.subTypes.includes("Saga")||t.front?.subTypes.includes("Saga"),r=t.types.includes("Planeswalker")||t.front?.types.includes("Planeswalker")&&!e.flipped||t.back?.types.includes("Planeswalker")&&e.flipped,n=Number(e.flipped?t.back?.loyalty:t.front?.loyalty||t.loyalty)||1;return t?r?{Loyalty:{...c.pM.Loyalty,count:n}}:a?{Lore:{...c.pM.Lore}}:{}:{}}},91241:e=>{e.exports={flex:"peekingOverlay_flex__icoxS",content:"peekingOverlay_content__E7DeH",container:"peekingOverlay_container__nJop6",hoverToHideButton:"peekingOverlay_hoverToHideButton__qCiCO",bottomShuffled:"peekingOverlay_bottomShuffled__uxEO1",backButton:"peekingOverlay_backButton__PChq1",instructions:"peekingOverlay_instructions__JfE1e",otherZones:"peekingOverlay_otherZones__WXhBh",zone:"peekingOverlay_zone__WWmiF",transparent:"peekingOverlay_transparent__MrBfl",publicMessage:"peekingOverlay_publicMessage__xmYJg"}},92031:e=>{e.exports={container:"barChart_container__ZdMUc",chart:"barChart_chart__
4CQt8F",key:"barChart_key__rYbc_",barContainer:"barChart_barContainer__j4Bw8",bar:"barChart_bar__9LjFs",totalCount:"barChart_totalCount__y3az0",axis:"barChart_axis__IYKuw",tooltip:"barChart_tooltip__DZ9D8"}},92520:e=>{e.exports={layerContainer:"cardDragLayer_layerContainer__kwNYS",tapped:"cardDragLayer_tapped__fE191",multiCardContainer:"cardDragLayer_multiCardContainer__6Aob7",counter:"cardDragLayer_counter__oO_YE",card:"cardDragLayer_card__XmWuM"}},92937:e=>{e.exports={container:"commandZone_container__lemid",label:"commandZone_label__FucW9",controls:"commandZone_controls__EJJZ8"}},94397:e=>{e.exports={container:"cardCustomPowerToughness_container__iTCgL",titleBox:"cardCustomPowerToughness_titleBox__jprp6"}},94681:e=>{e.exports={modal:"confirmNewGameModal_modal__qBwNa",block:"confirmNewGameModal_block__AsROQ",controls:"confirmNewGameModal_controls__pncNL"}},95317:e=>{e.exports={flex:"mobileToolbar_flex__ImmNc",bar:"mobileToolbar_bar__Sji09",row:"mobileToolbar_row__859Wy",button:"mobileToolbar_button__YgrOm",smallMenu:"mobileToolbar_smallMenu__zJkln",swipeBar:"mobileToolbar_swipeBar__PfBIU",swipeBarOverride:"mobileToolbar_swipeBarOverride__mTOTV",menu:"mobileToolbar_menu__R_uh4"}},95422:e=>{e.exports={container:"fancyCardGroup_container__1A3Im",isOver:"fancyCardGroup_isOver___9NZd",arrowButtons:"fancyCardGroup_arrowButtons__x0W0y",forwardButton:"fancyCardGroup_forwardButton__aX5oK",backButton:"fancyCardGroup_backButton__XKMbn",cardWrapper:"fancyCardGroup_cardWrapper__zCKey"}},98859:e=>{e.exports={actions:"playtesterStateSaveContorls_actions__TS1OV",list:"playtesterStateSaveContorls_list__SQkbZ"}},99714:e=>{e.exports={cardNamesContainer:"interactionLogLine_cardNamesContainer__9vczx",cardName:"interactionLogLine_cardName__WgLiA"}}}]); 5//# sourceMappingURL=3818-e80dd0d0c7177d43.js.map
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.