PageSourceSearch

https://latitude64.com/cdn/shop/t/162/compiled_assets/scripts.js?v=164963675493398887951791477632

js latitude64.com collected 2026-10-09 04:57:32 UTC 138,266 bytes, 2 lines download raw bytes

1(function(){var __sections__={};(function(){for(var i=0,s=document.getElementById("sections-script").getAttribute("data-sections").split(",");i<s.length;i++)__sections__[s[i]]=!0})(),(function(){if(!(!__sections__.disc_finder_v2&&!Shopify.designMode))try{(()=>{const FALLBACK_RECOMMENDATIONS={distance_understable:[{model:"Bolt",plastic:"Opto",handle:"opto-bolt",flight:[13,6,-2,3]},{model:"Amber",plastic:"Opto",handle:"opto-amber",flight:[11,6,-3,2]}],distance_neutral:[{model:"Grace",plastic:"Royal Grand",handle:"grand-grace",flight:[11,6,-1,2]},{model:"Flow",plastic:"Opto",handle:"opto-flow",flight:[11,6,-.5,2]},{model:"Ballista",plastic:"Opto",handle:"opto-ballista",flight:[14,5,-1,3]}],distance_overstable:[{model:"Rive",plastic:"Royal Grand",handle:"grand-rive",flight:[13,5,0,3.5]},{model:"Ballista Pro",plastic:"Opto",handle:"opto-ballista-pro",flight:[14,4,0,3]},{model:"Stiletto",plastic:"Opto",handle:"opto-stiletto-1",flight:[13,3,.5,5]}],fairway_understable:[{model:"River",plastic:"Opto",handle:"opto-river-1",flight:[7,7,-1,1]},{model:"Maul",plastic:"Opto",handle:"opto-maul",flight:[7,7,-2,1]},{model:"Diamond",plastic:"Opto",handle:"opto-diamond",flight:[8,6,-3,1]},{model:"Fury",plastic:"Opto",handle:"opto-fury",flight:[9,6,-2,2]}],fairway_neutral:[{model:"Explorer",plastic:"Opto",handle:"opto-explorer",flight:[7,5,0,2]},{model:"Jade",plastic:"Opto",handle:"opto-jade",flight:[9,6,-2,1]},{model:"Sapphire",plastic:"Opto",handle:"opto-sapphire-1",flight:[10,6,-2,1.5]}],fairway_overstable:[{model:"Pioneer",plastic:"Opto",handle:"opto-pioneer",flight:[9,3,0,4]},{model:"Culverin",plastic:"Opto",handle:"opto-culverin-special-edition",flight:[9,5,-.5,3]}],midrange_understable:[{model:"Fuse",plastic:"Opto",handle:"opto-fuse",flight:[5,6,-1,0]},{model:"Pearl",plastic:"Opto",handle:"opto-pearl-3",flight:[4,6,-4,0]}],midrange_neutral:[{model:"Claymore",plastic:"Opto",handle:"opto-claymore",flight:[5,5,-1,1]},{model:"Compass",plastic:"Opto",handle:"opto-compass",flight:[5,5,0,1]}],midrange_overstable:[{model:"Trust",plastic:"Royal Grand",handle:"grand-trust",flight:[5,5,0,2]},{model:"Anchor",plastic:"Opto",handle:"opto-anchor",flight:[5,4,0,3]}],putter_throwing_understable:[{model:"Pure",plastic:"Opto",handle:"opto-pure",flight:[3,3,-1,1]}],putter_throwing_neutral:[{model:"Peak",plastic:"Royal Clear",handle:"clear-peak",flight:[3,3,0,1]},{model:"Peak",plastic:"Royal Grand",handle:"grand-peak",flight:[3,3,0,1]}],putter_throwing_overstable:[{model:"Sinus",plastic:"Opto",handle:"opto-sinus",flight:[2,2,0,2]},{model:"Savior",plastic:"Royal Clear",handle:"clear-savior",flight:[4,4,0,3]},{model:"Savior",plastic:"Royal Grand",handle:"grand-savior",flight:[4,4,0,3]}],putter_understable:[{model:"Keystone",plastic:"Zero Medium",handle:"zero-medium-keystone",flight:[2,5,-1,1]},{model:"Ruby",plastic:"Opto",handle:"opto-ruby",flight:[3,5,-3,1]}],putter_neutral:[{model:"Pure",plastic:"Zero Medium",handle:"zero-medium-pure",flight:[3,3,-1,1]},{model:"Pure",plastic:"Opto",handle:"opto-pure",flight:[3,3,-1,1]}],putter_overstable:[{model:"Sinus",plastic:"Opto",handle:"opto-sinus",flight:[2,2,0,2]},{model:"Caltrop",plastic:"Zero Medium",handle:"zero-medium-caltrop-special-edition",flight:[2,2,0,2]},{model:"Savior",plastic:"Royal Sense",handle:"sense-savior",flight:[4,4,0,3]}],easy_launch_easy:[{model:"Grace",plastic:"Zero Gravity",handle:"zero-gravity-grace",typeKey:"distance",flight:[11,6,-1,2]},{model:"Bolt",plastic:"Zero Gravity",handle:"zero-gravity-bolt",typeKey:"distance",flight:[13,6,-2,3]},{model:"Diamond",plastic:"Zero Gravity",handle:"zero-gravity-diamond",typeKey:"fairway",flight:[8,6,-3,1]},{model:"River",plastic:"Zero Gravity",handle:"zero-gravity-river",typeKey:"fairway",flight:[7,7,-1,1]},{model:"Saint",plastic:"Zero Gravity",handle:"zero-gravity-saint",typeKey:"fairway",flight:[7,5,-1,2]},{model:"Explorer",plastic:"Zero Gravity",handle:"zero-gravity-explorer",typeKey:"fairway",flight:[7,5,0,2]},{model:"Fuse",plastic:"Zero Gravity",handle:"zero-gravity-fuse",typeKey:"midrange",flight:[5,6,-1,0]},{model:"Pure",plastic:"Zero Gravity",handle:"zero-gravity-pure",typeKey:"putter",flight:[3,3,-1,1]}],easy_launch_controlled:[{model:"Amber",plastic:"Opto",handle:"opto-amber",typeKey:"distance",flight:[11,6,-3,2]},{model:"Sapphire",plastic:"Opto",handle:"opto-sapphire-1",typeKey:"distance",flight:[10,6,-2,1.5]},{model:"Jade",plastic:"Opto",handle:"opto-jade",typeKey:"fairway",flight:[9,6,-2,1]},{model:"Diamond",plastic:"Opto",handle:"opto-diamond",typeKey:"fairway",flight:[8,6,-3,1]},{model:"Explorer",plastic:"Zero Gravity",handle:"zero-gravity-explorer",typeKey:"fairway",flight:[7,5,0,2]},{model:"Pearl",plastic:"Opto",handle:"opto-pearl-3",typeKey:"midrange",flight:[4,6,-4,0]},{model:"Fuse",plastic:"Zero Gravity",handle:"zero-gravity-fuse",typeKey:"midrange",flight:[5,6,-1,0]},{model:"Ruby",plastic:"Opto",handle:"opto-ruby",typeKey:"putter",flight:[3,5,-3,1]},{model:"Pure",plastic:"Zero Gravity",handle:"zero-gravity-pure",typeKey:"putter",flight:[3,3,-1,1]}],easy_launch_maximum:[{model:"Amber",plastic:"Opto",handle:"opto-amber",typeKey:"distance",flight:[11,6,-3,2]},{model:"Sapphire",plastic:"Opto",handle:"opto-sapphire-1",typeKey:"distance",flight:[10,6,-2,1.5]},{model:"Grace",plastic:"Zero Gravity",handle:"zero-gravity-grace",typeKey:"distance",flight:[11,6,-1,2]},{model:"Diamond",plastic:"Opto",handle:"opto-diamond",typeKey:"fairway",flight:[8,6,-3,1]},{model:"Jade",plastic:"Opto",handle:"opto-jade",typeKey:"fairway",flight:[9,6,-2,1]},{model:"River",plastic:"Zero Gravity",handle:"zero-gravity-river",typeKey:"fairway",flight:[7,7,-1,1]},{model:"Pearl",plastic:"Opto",handle:"opto-pearl-3",typeKey:"midrange",flight:[4,6,-4,0]},{model:"Fuse",plastic:"Zero Gravity",handle:"zero-gravity-fuse",typeKey:"midrange",flight:[5,6,-1,0]},{model:"Ruby",plastic:"Opto",handle:"opto-ruby",typeKey:"putter",flight:[3,5,-3,1]}],easy_launch_wind:[{model:"Sapphire",plastic:"Opto",handle:"opto-sapphire-1",typeKey:"distance",flight:[10,6,-2,1.5]},{model:"Amber",plastic:"Opto",handle:"opto-amber",typeKey:"distance",flight:[11,6,-3,2]},{model:"Jade",plastic:"Opto",handle:"opto-jade",typeKey:"fairway",flight:[9,6,-2,1]},{model:"Explorer",plastic:"Zero Gravity",handle:"zero-gravity-explorer",typeKey:"fairway",flight:[7,5,0,2]},{model:"Pearl",plastic:"Opto",handle:"opto-pearl-3",typeKey:"midrange",flight:[4,6,-4,0]},{model:"Fuse",plastic:"Zero Gravity",handle:"zero-gravity-fuse",typeKey:"midrange",flight:[5,6,-1,0]},{model:"Ruby",plastic:"Opto",handle:"opto-ruby",typeKey:"putter",flight:[3,5,-3,1]},{model:"Pure",plastic:"Opto",handle:"opto-pure",typeKey:"putter",flight:[3,3,-1,1]}]},compatibility={short:{types:["putter","midrange","fairway","catchplay"],flights:{putter:["understable","straight"],midrange:["understable","straight"],fairway:["understable"]}},medium:{types:["putter","midrange","fairway","distance","catchplay"],flights:{putter:["understable","straight","overstable"],midrange:["understable","straight","overstable"],fairway:["understable","straight","overstable"],distance:["understable","straight"]}},long:{types:["putter","midrange","fairway","distance","catchplay"],flights:{putter:["understable","straight","overstable"],midrange:["understable","straight","overstable"],fairway:["understable","straight","overstable"],distance:["understable","straight","overstable"]}}},parseJson=(element,fallback)=>
1{if(!element)return fallback;try{return JSON.parse(element.textContent||"")}catch{return fallback}},normalizeText=value=>String(value||"").trim().toLowerCase(),normalizeImageUrl=value=>value?typeof value=="string"?value:value.src||value.url||"":"",initFinder=root=>{if(!root||root.dataset.discFinderV2Ready==="true")return;const form=root.querySelector("[data-disc-finder-form]"),distance=root.querySelector("[data-disc-distance]"),type=root.querySelector("[data-disc-type]"),goal=root.querySelector("[data-disc-goal]"),use=root.querySelector("[data-disc-use]"),profile=root.querySelector("[data-disc-profile]"),rim=root.querySelector("[data-disc-rim]"),flight=root.querySelector("[data-disc-flight]"),goalField=root.querySelector("[data-disc-goal-field]"),useField=root.querySelector("[data-disc-use-field]"),profileField=root.querySelector("[data-disc-profile-field]"),rimField=root.querySelector("[data-disc-rim-field]"),flightField=root.querySelector("[data-disc-flight-field]"),flightStep=root.querySelector("[data-flight-step]"),useStep=root.querySelector("[data-use-step]"),profileStep=root.querySelector("[data-profile-step]"),rimStep=root.querySelector("[data-rim-step]"),distanceField=root.querySelector('[data-disc-field="distance"]'),typeField=root.querySelector('[data-disc-field="type"]'),submit=root.querySelector("[data-disc-submit]"),results=root.querySelector("[data-results]"),loading=root.querySelector("[data-loading]"),primaryCard=root.querySelector("[data-primary-card]"),alternativesWrap=root.querySelector("[data-alternatives-wrap]"),alternatives=root.querySelector("[data-alternatives]"),viewAll=root.querySelector("[data-view-all]"),resultContext=root.querySelector("[data-result-context]"),live=root.querySelector("[data-status-live]"),config=parseJson(root.querySelector("[data-disc-finder-config]"),{strings:{}}),curated=parseJson(root.querySelector("[data-disc-finder-curated]"),{}),decodeText=value=>{const textarea=document.createElement("textarea");return textarea.innerHTML=String(value||""),textarea.value},t=Object.fromEntries(Object.entries(config.strings||{}).map(([key,value])=>[key,decodeText(value)]));if(!form||!distance||!type||!goal||!use||!profile||!rim||!flight||!goalField||!useField||!profileField||!rimField||!flightField||!distanceField||!typeField||!submit||!results||!primaryCard||!alternatives||!viewAll)return;root.dataset.discFinderV2Ready="true";const maxResults=Math.max(2,Math.min(5,Number(root.dataset.maxResults||4))),personalizeByDistance=root.dataset.personalizeDistance==="true",enableAnalytics=root.dataset.enableAnalytics==="true",currency=root.dataset.currency||"USD",storefrontLocale=root.dataset.locale||document.documentElement.lang||"en",bundleSaveUrl=root.dataset.bundleSaveUrl||"",zeroGravityUrl=root.dataset.zeroGravityUrl||"",easyToUseUrl=root.dataset.easyToUseUrl||"",finderMode=root.dataset.finderMode||"general",focusedTypeKey={distance_driver:"distance",fairway_driver:"fairway",midrange:"midrange",putt_approach:"putter"}[finderMode]||"",isGoalFocused=["distance","fairway","midrange"].includes(focusedTypeKey),isPuttFocused=focusedTypeKey==="putter",isEasyLaunchFocused=finderMode==="easy_launch",isBeginnerFocused=finderMode==="beginner";let currentChoices=[],currentChoiceIndex=0,currentZone="",currentFlightKey="",viewed=!1;const shopRoot=()=>window.Shopify&&window.Shopify.routes&&window.Shopify.routes.root?window.Shopify.routes.root:root.dataset.rootUrl||"/",announce=message=>{live&&(live.textContent="",window.requestAnimationFrame(()=>{live.textContent=message||""}))},track=(eventName,payload={},klaviyoName="")=>{if(!enableAnalytics)return;const data={...payload,section_id:root.id};try{window.Shopify&&window.Shopify.analytics&&typeof window.Shopify.analytics.publish=="function"&&Promise.resolve(window.Shopify.analytics.publish(`latitude64:disc_finder_${eventName}`,data)).catch(()=>{})}catch{}if(klaviyoName&&window.klaviyo&&typeof window.klaviyo.push=="function")try{window.klaviyo.push(["track",klaviyoName,data])}catch{}};if("IntersectionObserver"in window){const observer=new IntersectionObserver(entries=>{viewed||!entries.some(entry=>entry.isIntersecting)||(viewed=!0,track("viewed",{},"Disc Finder - Viewed"),observer.disconnect())},{threshold:.25}
1);observer.observe(root)}const formatMoney=cents=>{const amount=Number(cents);if(!Number.isFinite(amount))return"";const nordicMoneyLocale={SEK:"sv-SE",NOK:"nb-NO",DKK:"da-DK"},moneyLocale=nordicMoneyLocale[currency]||storefrontLocale,currencyDisplay=nordicMoneyLocale[currency]?"narrowSymbol":"symbol";try{return new Intl.NumberFormat(moneyLocale,{style:"currency",currency,currencyDisplay,minimumFractionDigits:2,maximumFractionDigits:2}).format(amount/100)}catch{return nordicMoneyLocale[currency]?`${(amount/100).toFixed(2)} kr`:`${(amount/100).toFixed(2)} ${currency}`}},selectedOption=select=>select.options[select.selectedIndex]||null,selectedKey=(select,attribute)=>{const option=selectedOption(select);return option&&option.dataset[attribute]||""},typePlaceholder=type.options[0].cloneNode(!0),goalPlaceholder=goal.options[0].cloneNode(!0),flightPlaceholder=flight.options[0].cloneNode(!0),typeOptionBank=Array.from(type.options).slice(1).map(option=>option.cloneNode(!0)),goalOptionBank=Array.from(goal.options).slice(1).map(option=>option.cloneNode(!0)),flightOptionBank=Array.from(flight.options).slice(1).map(option=>option.cloneNode(!0)),rebuildOptions=(select,placeholder,optionBank,allowedKeys,attribute)=>{const options=[placeholder.cloneNode(!0)];optionBank.forEach(option=>{const key=option.dataset[attribute]||"";allowedKeys.includes(key)&&options.push(option.cloneNode(!0))}),select.replaceChildren(...options),select.value=""},currentDistanceKey=()=>selectedKey(distance,"distanceKey"),currentTypeValue=()=>type.value,currentGoalKey=()=>selectedKey(goal,"goalKey"),currentTypeKey=()=>selectedKey(type,"typeKey"),currentUseKey=()=>selectedKey(use,"useKey"),currentProfileValue=()=>selectedOption(profile)?.dataset.profileValue||"",currentRimValue=()=>selectedOption(rim)?.dataset.rimValue||"",currentFlightKeyValue=()=>selectedKey(flight,"flightKey"),setFocusedType=()=>{const focusedOption=typeOptionBank.find(option=>(option.dataset.typeKey||"")===focusedTypeKey),options=[typePlaceholder.cloneNode(!0)];focusedOption&&options.push(focusedOption.cloneNode(!0)),type.replaceChildren(...options),type.value=focusedOption?focusedOption.value:"",type.disabled=!0,typeField.hidden=!0},focusedGoalKeys=distanceKey=>!distanceKey||!isGoalFocused?[]:distanceKey==="short"?focusedTypeKey==="distance"?["easy","controlled"]:["easy","maximum","controlled"]:["easy","maximum","controlled","wind"],focusedFlightKeys=distanceKey=>!distanceKey||!isGoalFocused?[]:distanceKey==="short"?["understable","straight"]:["understable","straight","overstable"],resetFocusedGoalFields=()=>{setAdvancedHidden(),setFocusedType(),rebuildOptions(goal,goalPlaceholder,goalOptionBank,focusedGoalKeys(currentDistanceKey()),"goalKey"),goal.disabled=!distance.value,goalField.hidden=!1,rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!1,flightStep&&(flightStep.textContent="3"),form.classList.remove("is-putter","is-catch-play"),form.classList.add("is-distance-focused")},resetFocusedPutterFields=()=>{setFocusedType(),goal.value="",goal.disabled=!0,goalField.hidden=!0,use.value="",use.disabled=!distance.value,useField.hidden=!1,profile.value="any",profile.disabled=!0,profileField.hidden=!0,rim.value="any",rim.disabled=!0,rimField.hidden=!0,rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!0,useStep&&(useStep.textContent="2"),profileStep&&(profileStep.textContent="3"),rimStep&&(rimStep.textContent="4"),flightStep&&(flightStep.textContent="4"),form.classList.remove("is-catch-play","is-distance-focused"),form.classList.add("is-putter")},resetEasyLaunchFields=()=>{distance.value="",distance.disabled=!0,distanceField.hidden=!0,rebuildOptions(goal,goalPlaceholder,goalOptionBank,["easy","maximum","controlled","wind"],"goalKey"),goal.disabled=!1,goalField.hidden=!1,rebuildOptions(type,typePlaceholder,typeOptionBank,[],"typeKey"),type.disabled=!0,typeField.hidden=!1,rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!0,setAdvancedHidden(),form.classList.remove("is-catch-play","is-putter","is-distance-focused"),form.classList.add("is-easy-launch")},updateEasyLaunchGoal=()=>{const allowedTypes=goal.value?["putter","midrange","fairway","distance"]:[];rebuildOptions(type,typePlaceholder,typeOptionBank,allowedTypes,"typeKey"),type.disabled=allowedTypes.length===0,typeField.hidden=!1,updateSubmit()},setAdvancedHidden=()=>{use.value="",profile.value="any",rim.value="any",use.disabled=!0,profile.disabled=!0,rim.disabled=!0,useField.hidden=!0,profileField.hidden=!0,rimField.hidden=!0},syncFieldStates=()=>{const typeKey=currentTypeKey();if(isEasyLaunchFocused){const goalComplete=!!goal.value,typeComplete2=!!type.value;goalField.classList.toggle("is-complete",goalComplete),goalField.classList.toggle("is-active",!goalComplete),typeField.classList.toggle("is-complete",typeComplete2),typeField.classList.toggle("is-active",goalComplete&&!typeComplete2);return}if(isGoalFocused){const distanceComplete2=!!distance.value,goalComplete=!!goal.value,flightComplete2=!!flight.value;distanceField.classList.toggle("is-complete",distanceComplete2),distanceField.classList.toggle("is-active",!distanceComplete2),goalField.classList.toggle("is-complete",goalComplete),goalField.classList.toggle("is-active",distanceComplete2&&!goalComplete),flightField.classList.toggle("is-complete",flightComplete2),flightField.classList.toggle("is-active",goalComplete&&!flightComplete2);return}if(isBeginnerFocused){const distanceComplete2=!!distance.value,typeComplete2=!!type.value,flightComplete2=!!flight.value;distanceField.classList.toggle("is-complete",distanceComplete2),distanceField.classList.toggle("is-active",!distanceComplete2),typeField.classList.toggle("is-complete",typeComplete2),typeField.classList.toggle("is-active",distanceComplete2&&!typeComplete2),flightField.classList.toggle("is-complete",flightComplete2),flightField.classList.toggle("is-active",typeComplete2&&!flightComplete2);return}if(isPuttFocused){const distanceComplete2=!!distance.value,useKey2=currentUseKey(),useComplete2=!!use.value,flightRequired2=useKey2==="throwing"||useKey2==="approach"||useKey2==="both",flightComplete2=!flightRequired2||!!flight.value;distanceField.classList.toggle("is-complete",distanceComplete2),distanceField.classList.toggle("is-active",!distanceComplete2),useField.classList.toggle("is-complete",useComplete2),useField.classList.toggle("is-active",distanceComplete2&&!useComplete2),profileField.classList.toggle("is-complete",useComplete2),profileField.classList.toggle("is-active",useComplete2),rimField.classList.toggle("is-complete",useKey2==="putt
1ing"),rimField.classList.toggle("is-active",useKey2==="putting"),flightField.classList.toggle("is-complete",flightRequired2&&flightComplete2),flightField.classList.toggle("is-active",flightRequired2&&!flightComplete2);return}const useKey=currentUseKey(),distanceComplete=!!distance.value,typeComplete=!!type.value,useComplete=typeKey!=="putter"||!!use.value,flightRequired=typeKey!=="putter"||useKey==="throwing"||useKey==="approach"||useKey==="both",flightComplete=typeKey==="catchplay"||!flightRequired||!!flight.value;distanceField.classList.toggle("is-complete",distanceComplete),distanceField.classList.toggle("is-active",!distanceComplete),typeField.classList.toggle("is-complete",typeComplete),typeField.classList.toggle("is-active",distanceComplete&&!typeComplete),useField.classList.toggle("is-complete",typeKey==="putter"&&!!use.value),useField.classList.toggle("is-active",typeKey==="putter"&&typeComplete&&!use.value),profileField.classList.toggle("is-complete",typeKey==="putter"&&!!use.value),profileField.classList.toggle("is-active",typeKey==="putter"&&!!use.value),rimField.classList.toggle("is-complete",typeKey==="putter"&&useKey==="putting"),rimField.classList.toggle("is-active",typeKey==="putter"&&useKey==="putting"),flightField.classList.toggle("is-complete",typeComplete&&flightComplete),flightField.classList.toggle("is-active",typeComplete&&flightRequired&&!flight.value)},updateSubmit=()=>{const typeKey=currentTypeKey();if(isEasyLaunchFocused){submit.disabled=!(goal.value&&type.value),syncFieldStates();return}if(isGoalFocused){submit.disabled=!(distance.value&&goal.value&&flight.value),syncFieldStates();return}const useKey=currentUseKey();if(isBeginnerFocused){submit.disabled=!(distance.value&&type.value&&flight.value),syncFieldStates();return}if(typeKey==="catchplay")submit.disabled=!(distance.value&&type.value);else if(typeKey==="putter"){const needsFlight=useKey==="throwing"||useKey==="approach"||useKey==="both";submit.disabled=!(distance.value&&type.value&&use.value&&(!needsFlight||flight.value))}else submit.disabled=!(distance.value&&type.value&&flight.value);syncFieldStates()},updateFocusedDistance=()=>{setFocusedType(),rebuildOptions(goal,goalPlaceholder,goalOptionBank,focusedGoalKeys(currentDistanceKey()),"goalKey"),goal.disabled=!distance.value,rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!1,flightStep&&(flightStep.textContent="3"),updateSubmit()},updateFocusedPutterDistance=()=>{resetFocusedPutterFields(),updateSubmit()},updateFocusedGoal=()=>{const allowed=goal.value?focusedFlightKeys(currentDistanceKey()):[];rebuildOptions(flight,flightPlaceholder,flightOptionBank,allowed,"flightKey"),flight.disabled=allowed.length===0,flightField.hidden=!1,flightStep&&(flightStep.textContent="3"),updateSubmit()},updatePutterUse=()=>{const useKey=currentUseKey();profileField.hidden=!useKey,profile.disabled=!useKey,rim.value="any",rimField.hidden=useKey!=="putting",rim.disabled=useKey!=="putting",useKey==="throwing"||useKey==="approach"||useKey==="both"?(flightField.hidden=!1,flightStep&&(flightStep.textContent=isPuttFocused?"4":"5"),rebuildOptions(flight,flightPlaceholder,flightOptionBank,["understable","straight","overstable"],"flightKey"),flight.disabled=!1):(rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!0),updateSubmit()},updateFlightOptions=()=>{const distanceKey=currentDistanceKey(),typeValue=currentTypeValue(),typeKey=currentTypeKey();if(setAdvancedHidden(),form.classList.remove("is-putter","is-catch-play"),typeKey==="catchplay"){rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!0,form.classList.add("is-catch-play"),updateSubmit();return}if(typeKey==="putter"){if(isBeginnerFocused){setAdvancedHidden(),flightField.hidden=!1,flightStep&&(flightStep.textContent="3"),rebuildOptions(flight,flightPlaceholder,flightOptionBank,distanceKey==="short"?["understable","straight","not_sure"]:["understable","straight","overstable","not_sure"],"flightKey"),flight.disabled=!1,updateSubmit();return}rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),flight.disabled=!0,flightField.hidden=!0,useField.hidden=!1,use.disabled=!1,flightStep&&(flightStep.textContent="5"),form.classList.add("is-putter"),updateSubmit();return}flightField.hidden=!1,flightStep&&(flightStep.textContent="3");let allowed=compatibility[distanceKey]?.flights?.[typeValue]||[];isBeginnerFocused&&typeKey==="beginner_mix"?allowed=distanceKey==="short"?["understable","straight","not_sure"]:["understable","straight","overstable","not_sure"]:isBeginnerFocused&&(allowed=allowed.concat("not_sure")),rebuildOptions(flight,flightPlaceholder,flightOptionBank,allowed,"flightKey"),flight.disabled=allowed.length===0,updateSubmit()},updateTypeOptions=()=>{const distanceKey=currentDistanceKey(),allowed=isBeginnerFocused?distanceKey==="short"?["putter","midrange","fairway","beginner_mix"]:["putter","midrange","fairway","distance","beginner_mix"]:compatibility[distanceKey]?.types||[];rebuildOptions(type,typePlaceholder,typeOptionBank,allowed,"typeKey"),rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),setAdvancedHidden(),type.disabled=allowed.length===0,flight.disabled=!0,flightField.hidden=!1,flightStep&&(flightStep.textContent="3"),form.classList.remove("is-catch-play","is-putter"),updateSubmit()},targetSpeed=(distanceKey,typeKey)=>({short:{putter:2.5,midrange:5,fairway:7},medium:{putter:2.5,midrange:5,fairway:8,distance:11},long:{putter:3,midrange:5.5,fairway:9,distance:13}})[distanceKey]?.[typeKey]||null,recommendationSpeed=recommendation=>{const speed=Number(recommendation&&recommendation.flight&&recommendation.flight.speed);return Number.isFinite(speed)?speed:null},sortByDistance=(items,distanceKey,typeKey)=>{if(!personalizeByDistance||items.length<2)return items.slice();
1const target=targetSpeed(distanceKey,typeKey);return Number.isFinite(target)?items.map((item,index)=>({item,index,speed:recommendationSpeed(item)})).sort((a,b)=>{const aDelta=Number.isFinite(a.speed)?Math.abs(a.speed-target):99,bDelta=Number.isFinite(b.speed)?Math.abs(b.speed-target):99;return aDelta-bDelta||a.index-b.index}).map(entry=>entry.item):items.slice()},flightNumber=(recommendation,key)=>{const value=Number(recommendation?.flight?.[key]);return Number.isFinite(value)?value:null},distanceDriverGoalScore=(recommendation,distanceKey,goalKey)=>{const speed=flightNumber(recommendation,"speed"),glide=flightNumber(recommendation,"glide"),turn=flightNumber(recommendation,"turn"),fade=flightNumber(recommendation,"fade"),baseSpeed={short:10,medium:11.5,long:13}[distanceKey]||11.5,missingPenalty=value=>Number.isFinite(value)?0:12;let score=missingPenalty(speed)+missingPenalty(glide)+missingPenalty(turn)+missingPenalty(fade);if(goalKey==="easy"){const targetSpeed2=baseSpeed-1.5;personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-targetSpeed2)*4),Number.isFinite(glide)&&(score+=(7-glide)*1.4),Number.isFinite(turn)&&(score+=Math.abs(turn-(distanceKey==="long"?-1.5:-2.5))*1.8),Number.isFinite(fade)&&(score+=Math.abs(fade-1.5)*.8)}else if(goalKey==="maximum")personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*3.6),Number.isFinite(glide)&&(score+=(7-glide)*1.5),Number.isFinite(turn)&&(score+=Math.abs(turn+1.5)*1.2),Number.isFinite(fade)&&(score+=Math.abs(fade-2)*.6);else if(goalKey==="controlled"){const targetSpeed2=baseSpeed-.75;personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-targetSpeed2)*4),Number.isFinite(glide)&&(score+=Math.abs(glide-5.5)*.6),Number.isFinite(turn)&&(score+=Math.abs(turn+1)*1.7),Number.isFinite(fade)&&(score+=Math.abs(fade-2.25)*1.1)}else goalKey==="wind"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*2.4),Number.isFinite(turn)&&(score+=Math.abs(turn-0)*2.8),Number.isFinite(fade)&&(score+=Math.abs(fade-3.5)*2.2),Number.isFinite(glide)&&(score+=Math.max(0,glide-5)*.4)):personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*3);return score},fairwayGoalScore=(recommendation,distanceKey,goalKey)=>{const speed=flightNumber(recommendation,"speed"),glide=flightNumber(recommendation,"glide"),turn=flightNumber(recommendation,"turn"),fade=flightNumber(recommendation,"fade"),baseSpeed={short:7,medium:8,long:9}[distanceKey]||8,missingPenalty=value=>Number.isFinite(value)?0:12;let score=missingPenalty(speed)+missingPenalty(glide)+missingPenalty(turn)+missingPenalty(fade);return goalKey==="easy"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-(baseSpeed-.5))*4),Number.isFinite(glide)&&(score+=(7-glide)*1.4),Number.isFinite(turn)&&(score+=Math.abs(turn-(distanceKey==="long"?-1:-2))*1.7),Number.isFinite(fade)&&(score+=Math.abs(fade-1.25)*.8)):goalKey==="maximum"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*3),Number.isFinite(glide)&&(score+=(7-glide)*1.1),Number.isFinite(turn)&&(score+=Math.abs(turn+2)*2),Number.isFinite(fade)&&(score+=Math.abs(fade-1.25)*.8)):goalKey==="controlled"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*3.6),Number.isFinite(glide)&&(score+=Math.abs(glide-5.5)*.6),Number.isFinite(turn)&&(score+=Math.abs(turn+.5)*1.8),Number.isFinite(fade)&&(score+=Math.abs(fade-2)*1.2)):goalKey==="wind"&&(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*2.2),Number.isFinite(turn)&&(score+=Math.abs(turn)*2.8),Number.isFinite(fade)&&(score+=Math.abs(fade-3.25)*2.1),Number.isFinite(glide)&&(score+=Math.max(0,glide-5)*.5)),score},midrangeGoalScore=(recommendation,distanceKey,goalKey)=>{const speed=flightNumber(recommendation,"speed"),glide=flightNumber(recommendation,"glide"),turn=flightNumber(recommendation,"turn"),fade=flightNumber(recommendation,"fade"),baseSpeed={short:4.5,medium:5,long:5.5}[distanceKey]||5,missingPenalty=value=>Number.isFinite(value)?0:12;let score=missingPenalty(speed)+missingPenalty(glide)+missingPenalty(turn)+missingPenalty(fade);return goalKey==="easy"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*4),Number.isFinite(glide)&&(score+=(6.5-glide)*1.3),Number.isFinite(turn)&&(score+=Math.abs(turn+1.5)*1.5),Number.isFinite(fade)&&(score+=Math.abs(fade-1)*.8)):goalKey==="maximum"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*2.6),Number.isFinite(glide)&&(score+=(6.5-glide)*.8),Number.isFinite(turn)&&Number.isFinite(fade)&&(score-=Math.min(3,Math.abs(turn)+fade)*.35)):goalKey==="controlled"?(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*3.5),Number.isFinite(glide)&&(score+=Math.abs(glide-5)*.7),Number.isFinite(turn)&&(score+=Math.abs(turn+.25)*1.8),Number.isFinite(fade)&&(score+=Math.abs(fade-1.5)*1.1)):goalKey==="wind"&&(personalizeByDistance&&Number.isFinite(speed)&&(score+=Math.abs(speed-baseSpeed)*2.3),Number.isFinite(turn)&&(score+=Math.abs(turn)*2.8),Number.isFinite(fade)&&(score+=Math.abs(fade-2.75)*2),Number.isFinite(glide)&&(score+=Math.max(0,glide-5)*.5)),score}
1,focusedGoalScore=(recommendation,distanceKey,typeKey,goalKey)=>typeKey==="distance"?distanceDriverGoalScore(recommendation,distanceKey,goalKey):typeKey==="fairway"?fairwayGoalScore(recommendation,distanceKey,goalKey):typeKey==="midrange"?midrangeGoalScore(recommendation,distanceKey,goalKey):0,prioritizeFocusedCandidates=(items,distanceKey,typeKey,goalKey)=>items.map((item,index)=>({item,index,score:focusedGoalScore(item,distanceKey,typeKey,goalKey)})).sort((a,b)=>a.score-b.score||a.index-b.index).map(entry=>entry.item),normalizeList=value=>{if(Array.isArray(value))return value.map(normalizeText).filter(Boolean);if(typeof value!="string")return[];const trimmed=value.trim();if(!trimmed)return[];if(trimmed.startsWith("["))try{const parsed=JSON.parse(trimmed);if(Array.isArray(parsed))return parsed.map(normalizeText).filter(Boolean)}catch{}return trimmed.split(",").map(normalizeText).filter(Boolean)},putterUseRank=(recommendation,useKey)=>{const uses=normalizeList(recommendation?.discFinderUse);if(!useKey)return 0;if(useKey==="putting"||useKey==="approach")return uses.includes(useKey)?0:uses.length?2:1;if(useKey==="both"){const hasPutting=uses.includes("putting"),hasApproach=uses.includes("approach");return hasPutting&&hasApproach?0:hasPutting||hasApproach?1:uses.length?3:2}return 0},putterProfileRank=(recommendation,requestedProfile)=>{if(!requestedProfile)return 0;const actualProfile=normalizeText(recommendation?.discHeight);return actualProfile===requestedProfile?0:actualProfile?2:1},putterRimRank=(recommendation,requestedRim)=>{if(!requestedRim)return 0;const actualRim=normalizeText(recommendation?.rimType);return actualRim===requestedRim?0:actualRim?2:1},puttingStabilityRank=(recommendation,useKey)=>{if(useKey!=="putting")return 0;const zone=normalizeText(recommendation?.finderZone);return zone==="putter_neutral"?0:zone==="putter_understable"?1:zone==="putter_overstable"?2:1},sourceRank=recommendation=>recommendation?.source==="curated"?0:1,sortPutterCandidates=(items,preferences)=>{const useKey=preferences.useKey||"",requestedProfile=normalizeText(preferences.profileValue),requestedRim=normalizeText(preferences.rimValue);return items.map((item,index)=>({item,index,useRank:preferences.curatedRole?0:putterUseRank(item,useKey),profileRank:putterProfileRank(item,requestedProfile),rimRank:putterRimRank(item,requestedRim),stabilityRank:puttingStabilityRank(item,useKey),sourceRank:sourceRank(item)})).sort((a,b)=>a.useRank-b.useRank||a.profileRank-b.profileRank||a.rimRank-b.rimRank||a.stabilityRank-b.stabilityRank||a.sourceRank-b.sourceRank||a.index-b.index).map(entry=>entry.item)},prioritizePutterCandidates=(items,preferences)=>{if(!items.length)return[];const useKey=preferences.useKey||"",requestedProfile=normalizeText(preferences.profileValue),requestedRim=normalizeText(preferences.rimValue);let usePool=items.slice();if(!preferences.curatedRole&&(useKey==="putting"||useKey==="approach")){const exactUse=items.filter(item=>putterUseRank(item,useKey)===0),unspecifiedUse=items.filter(item=>putterUseRank(item,useKey)===1);exactUse.length?usePool=exactUse:unspecifiedUse.length&&(usePool=unspecifiedUse)}else if(!preferences.curatedRole&&useKey==="both"){const exactBoth=items.filter(item=>putterUseRank(item,useKey)===0),partialBoth=items.filter(item=>putterUseRank(item,useKey)===1),unspecifiedUse=items.filter(item=>putterUseRank(item,useKey)===2);exactBoth.length?usePool=exactBoth:partialBoth.length?usePool=partialBoth:unspecifiedUse.length&&(usePool=unspecifiedUse)}let profilePool=usePool;if(requestedProfile){const exactProfile=usePool.filter(item=>normalizeText(item?.discHeight)===requestedProfile);exactProfile.length&&(profilePool=exactProfile)}let strictPool=profilePool;if(requestedRim){const exactRim=profilePool.filter(item=>normalizeText(item?.rimType)===requestedRim);exactRim.length&&(strictPool=exactRim)}const ordered=[],seen=new Set,appendPool=pool=>{sortPutterCandidates(pool,preferences).forEach(item=>{const key=`${normalizeText(item?.handle)}|${normalizeText(item?.model)}|${normalizeText(item?.plastic)}`;!item||!item.handle||seen.has(key)||(seen.add(key),ordered.push(item))})};return appendPool(strictPool),strictPool!==profilePool&&appendPool(profilePool),profilePool!==usePool&&appendPool(usePool),ordered},easyLaunchRecommendationChoices=(goalKey,typeKey)=>{const zone=`easy_launch_${goalKey}`,curatedPool=Array.isArray(curated[zone])?curated[zone].filter(item=>normalizeText(item?.typeKey)===normalizeText(typeKey)):[],fallbackPool=Array.isArray(FALLBACK_RECOMMENDATIONS[zone])?FALLBACK_RECOMMENDATIONS[zone].filter(item=>normalizeText(item?.typeKey)===normalizeText(typeKey)):[],source=curatedPool.length?curatedPool:fallbackPool.map(item=>({...item,flight:{speed:item.flight[0],glide:item.flight[1],turn:item.flight[2],fade:item.flight[3]},variants:[],loaded:!1,available:!0,bundleSave:!1,customReason:"",discFinderUse:[],rimType:"",discHeight:"",stability:"",priceDisplay:"",image:"",productTitle:item.model,source:"fallback"})),seen=new Set;return source.filter(item=>!item||!item.handle||seen.has(item.handle)?!1:(seen.add(item.handle),!0)).slice(0,Math.min(3,maxResults))},beginnerRecommendationChoices=(distanceKey,typeKey,flightKey)=>{const effectiveDistance=distanceKey||"short",defaultFlight=effectiveDistance==="short"?"understable":"straight",effectiveFlight=flightKey==="not_sure"?defaultFlight:flightKey||defaultFlight,stabilityKey=effectiveFlight==="straight"?"neutral":effectiveFlight;if(typeKey!=="beginner_mix")return typeKey==="putter"?recommendationChoices(`putter_${stabilityKey}`,effectiveDistance,"putter",{useKey:"approach",stabilityKey}):recommendationChoices(`${typeKey}_${stabilityKey}`,effectiveDistance,typeKey,{stabilityKey});const pools=(effectiveDistance==="short"?["midrange","fairway","putter"]:["midrange","fairway","putter","distance"]).map(candidateType=>candidateType==="putter"?recommendationChoices(`putter_${stabilityKey}`,effectiveDistance,"putter",{useKey:"approach",stabilityKey}):recommendationChoices(`${candidateType}_${stabilityKey}`,effectiveDistance,candidateType,{stabilityKey})),mixed=[],seen=new Set;let round=0;for(;mixed.length<maxResults&&pools.some(pool=>round<pool.length);
1)pools.forEach(pool=>{const item=pool[round];if(!item||mixed.length>=maxResults)return;const key=`${normalizeText(item.handle)}|${normalizeText(item.model)}|${normalizeText(item.plastic)}`;seen.has(key)||(seen.add(key),mixed.push(item))}),round+=1;return mixed},recommendationChoices=(zoneId,distanceKey,typeKey,preferences={})=>{let curatedList=[],fallbackItems=[];const resultLimit=distanceKey==="short"&&!isBeginnerFocused?Math.min(2,maxResults):maxResults;let curatedRole=!1;if(typeKey==="putter"&&preferences.useKey==="putting"){const dedicatedPutting=Array.isArray(curated.putter_putting)?curated.putter_putting:[];dedicatedPutting.length?(curatedRole=!0,curatedList=dedicatedPutting.map(item=>({...item,finderZone:"putter_putting"})),fallbackItems=[]):["putter_neutral","putter_understable","putter_overstable"].forEach(zone=>{Array.isArray(curated[zone])&&curatedList.push(...curated[zone].map(item=>({...item,finderZone:zone}))),Array.isArray(FALLBACK_RECOMMENDATIONS[zone])&&fallbackItems.push(...FALLBACK_RECOMMENDATIONS[zone].map(item=>({...item,finderZone:zone})))})}else if(typeKey==="putter"&&preferences.useKey==="throwing"){curatedRole=!0;const throwingZone=`putter_throwing_${preferences.stabilityKey||"neutral"}`;curatedList=Array.isArray(curated[throwingZone])?curated[throwingZone].map(item=>({...item,finderZone:throwingZone})):[],fallbackItems=Array.isArray(FALLBACK_RECOMMENDATIONS[throwingZone])?FALLBACK_RECOMMENDATIONS[throwingZone].map(item=>({...item,finderZone:throwingZone})):[]}else if(typeKey==="putter"&&preferences.useKey==="both"){curatedRole=!0;const stability=preferences.stabilityKey||"neutral",throwingZone=`putter_throwing_${stability}`,approachZone=`putter_${stability}`;[throwingZone,approachZone].forEach(zone=>{Array.isArray(curated[zone])&&curatedList.push(...curated[zone].map(item=>({...item,finderZone:zone}))),Array.isArray(FALLBACK_RECOMMENDATIONS[zone])&&fallbackItems.push(...FALLBACK_RECOMMENDATIONS[zone].map(item=>({...item,finderZone:zone})))})}else typeKey==="putter"&&preferences.useKey==="approach"&&(curatedRole=!0),curatedList=Array.isArray(curated[zoneId])?curated[zoneId].map(item=>({...item,finderZone:zoneId})):[],fallbackItems=Array.isArray(FALLBACK_RECOMMENDATIONS[zoneId])?FALLBACK_RECOMMENDATIONS[zoneId].map(item=>({...item,finderZone:zoneId})):[];const fallbackList=fallbackItems.map(item=>({...item,flight:{speed:item.flight[0],glide:item.flight[1],turn:item.flight[2],fade:item.flight[3]},variants:[],loaded:!1,available:!0,bundleSave:!1,customReason:"",discFinderUse:[],rimType:"",discHeight:"",stability:"",priceDisplay:"",image:"",productTitle:item.model,source:"fallback"})),curatedSorted=sortByDistance(curatedList,distanceKey,typeKey),fallbackSorted=sortByDistance(fallbackList,distanceKey,typeKey),combined=[],seen=new Set;if([...curatedSorted,...fallbackSorted].forEach(item=>{if(!item||!item.handle)return;const key=`${normalizeText(item.handle)}|${normalizeText(item.model)}|${normalizeText(item.plastic)}`;seen.has(key)||(seen.add(key),combined.push(item))}),isGoalFocused&&typeKey===focusedTypeKey){const focusedCandidates=curatedSorted.length?curatedSorted:fallbackSorted;return prioritizeFocusedCandidates(focusedCandidates,distanceKey,typeKey,preferences.goalKey||"").slice(0,resultLimit)}return typeKey!=="putter"?combined.slice(0,resultLimit):prioritizePutterCandidates(combined,{...preferences,curatedRole}).slice(0,resultLimit)},hydrateRecommendation=async recommendation=>{if(!recommendation||recommendation.loaded!==!1||!recommendation.handle)return recommendation;if(recommendation.loadingPromise)return recommendation.loadingPromise;const productUrl=`${shopRoot()}products/${encodeURIComponent(recommendation.handle)}.js`;return recommendation.loadingPromise=window.fetch(productUrl,{headers:{Accept:"application/json"}}).then(response=>{if(!response.ok)throw new Error(t.recommendationError);return response.json()}).then(product=>{const productImage=normalizeImageUrl(product.featured_image)||(Array.isArray(product.images)?normalizeImageUrl(product.images[0]):""),variants=(Array.isArray(product.variants)?product.variants:[]).filter(variant=>variant&&variant.available).map(variant=>({id:variant.id,title:String(variant.title||"").replace(/ \/ /g," - "),priceDisplay:formatMoney(variant.price),image:normalizeImageUrl(variant.featured_image)||normalizeImageUrl(variant.featured_media&&variant.featured_media.preview_image)||productImage}));recommendation.productTitle=product.title||recommendation.model,recommendation.url=`${shopRoot()}products/${encodeURIComponent(product.handle||recommendation.handle)}`,recommendation.image=productImage||recommendation.image||"",recommendation.priceDisplay=product.price_varies?`${formatMoney(product.price_min)} - ${formatMoney(product.price_max)}`:formatMoney(product.price);const bundleSaveFromProduct=(Array.isArray(product.tags)?product.tags:String(product.tags||"").split(",").map(tag=>
1tag.trim()).filter(Boolean)).some(tag=>normalizeText(tag)==="bundle & save");return recommendation.available=variants.length>0,recommendation.bundleSave=recommendation.bundleSave===!0||bundleSaveFromProduct,recommendation.variants=variants,recommendation.loaded=!0,recommendation.loadingPromise=null,recommendation}).catch(error=>{throw recommendation.loadingPromise=null,error}),recommendation.loadingPromise},whyCopy=recommendation=>{const customReason=String(recommendation?.customReason||"").trim();if(customReason)return customReason;if(isBeginnerFocused&&(currentFlightKey==="not_sure"||currentTypeKey()==="beginner_mix"))return t.whyBeginnerDefault||t.whyUnderstable||"";if(isEasyLaunchFocused){const goalKey=currentGoalKey();if(goalKey==="easy")return t.whyEasyLaunchEasy||"";if(goalKey==="controlled")return t.whyEasyLaunchControl||"";if(goalKey==="maximum")return t.whyEasyLaunchDistance||"";if(goalKey==="wind")return t.whyEasyLaunchStepup||""}if(isGoalFocused){const goalKey=currentGoalKey();if(focusedTypeKey==="fairway"){if(goalKey==="easy")return t.whyFairwayGoalEasy||t.whyUnderstable||"";if(goalKey==="maximum")return t.whyFairwayGoalShape||t.whyUnderstable||"";if(goalKey==="controlled")return t.whyFairwayGoalControlled||t.whyStraight||"";if(goalKey==="wind")return t.whyFairwayGoalWind||t.whyOverstable||""}if(focusedTypeKey==="midrange"){if(goalKey==="easy")return t.whyMidrangeGoalEasy||t.whyUnderstable||"";if(goalKey==="maximum")return t.whyMidrangeGoalShape||t.whyStraight||"";if(goalKey==="controlled")return t.whyMidrangeGoalControlled||t.whyStraight||"";if(goalKey==="wind")return t.whyMidrangeGoalWind||t.whyOverstable||""}if(goalKey==="easy")return t.whyGoalEasy||t.whyUnderstable||"";if(goalKey==="maximum")return t.whyGoalMaximum||t.whyStraight||"";if(goalKey==="controlled")return t.whyGoalControlled||t.whyStraight||"";if(goalKey==="wind")return t.whyGoalWind||t.whyOverstable||""}const flightKey=currentFlightKey||normalizeText(recommendation?.stability);return flightKey==="understable"?t.whyUnderstable||"":flightKey==="overstable"?t.whyOverstable||"":t.whyStraight||""},profileDisplay=value=>{const key=normalizeText(value);return key==="low profile"?t.profileLow||value||"":key==="medium profile"?t.profileMedium||value||"":key==="deep rim"?t.profileDeep||value||"":value||""},rimDisplay=value=>{const key=normalizeText(value);return key==="beadless"?t.rimBeadless||value||"":key==="beaded"?t.rimBeaded||value||"":value||""},createFlight=recommendation=>{const values=[recommendation?.flight?.speed,recommendation?.flight?.glide,recommendation?.flight?.turn,recommendation?.flight?.fade];if(values.every(value=>value===""||value===null||value===void 0))return null;const flightNumbers=document.createElement("div");return flightNumbers.className="l64-disc-finder-v2__flight",values.forEach(value=>{const span=document.createElement("span");span.textContent=value===""||value===null||value===void 0?"\u2013":String(value),flightNumbers.append(span)}),flightNumbers},createPutterSpecs=recommendation=>{if(currentTypeKey()!=="putter")return null;const profileValue=profileDisplay(recommendation?.discHeight),rimValue=rimDisplay(recommendation?.rimType);if(!profileValue&&!rimValue)return null;const specs=document.createElement("div");specs.className="l64-disc-finder-v2__putter-specs";const addSpec=(labelText,valueText)=>{if(!valueText)return;const item=document.createElement("span");item.className="l64-disc-finder-v2__putter-spec";const label=document.createElement("strong");label.textContent=labelText||"";const value=document.createElement("span");value.textContent=valueText,item.append(label,value),specs.append(item)};return addSpec(t.profileLabel,profileValue),addSpec(t.rimLabel,rimValue),specs.childElementCount?specs:null},renderPrimary=(recommendation,index)=>{if(primaryCard.replaceChildren(),currentChoiceIndex=index,!recommendation){const empty=document.createElement("div");empty.className="l64-disc-finder-v2__empty",empty.textContent=t.noRecommendations||"",primaryCard.append(empty);return}const card=document.createElement("div");card.className="l64-disc-finder-v2__primary-card",card.dataset.selectedVariantId="",card.dataset.selectedVariantTitle="",card.dataset.quantity="1";const media=document.createElement("div");if(media.className="l64-disc-finder-v2__primary-media",recommendation.image){const image=document.createElement("img");image.className="l64-disc-finder-v2__primary-image",image.src=recommendation.image,image.alt=recommendation.productTitle||recommendation.model||"",image.loading="lazy",image.width=320,image.height=320,image.dataset.primaryImage="",media.append(image)}const content=document.createElement("div");content.className="l64-disc-finder-v2__primary-content";const title=document.createElement("h3");title.className="l64-disc-finder-v2__product-title";const titleLink=document.createElement("a");titleLink.href=recommendation.url||"#",titleLink.textContent=recommendation.model||recommendation.productTitle||"",title.append(titleLink);const plastic=document.createElement("div");plastic.className="l64-disc-finder-v2__product-plastic",plastic.textContent=recommendation.productTitle&&recommendation.productTitle!==recommendation.model?recommendation.productTitle:"";const price=document.createElement("div");price.className="l64-disc-finder-v2__price",price.dataset.primaryPrice="",price.textContent=recommendation.priceDisplay||"",content.append(title),plastic.textContent&&content.append(plastic),price.textContent&&content.append(price);const flightNumbers=createFlight(recommendation);flightNumbers&&content.append(flightNumbers);const putterSpecs=createPutterSpecs(recommendation);
1putterSpecs&&content.append(putterSpecs);const why=document.createElement("div");why.className="l64-disc-finder-v2__why";const whyTitle=document.createElement("strong");whyTitle.textContent=t.whyTitle||"";const whyText=document.createElement("p");whyText.textContent=whyCopy(recommendation),why.append(whyTitle,whyText),content.append(why);const isBundleSavePutter=currentTypeKey()==="putter"&&recommendation.bundleSave===!0;if(isBundleSavePutter){const promo=document.createElement("div");promo.className="l64-disc-finder-v2__bundle-promo";const heading=document.createElement("div");heading.className="l64-disc-finder-v2__bundle-heading";const icon=document.createElement("span");icon.className="l64-disc-finder-v2__bundle-icon",icon.setAttribute("aria-hidden","true"),icon.innerHTML='<svg viewBox="0 0 24 24"><path d="M20 13 11 22 2 13V4h9l9 9Z"></path><circle cx="7.5" cy="9.5" r="1.25"></circle></svg>';const headingText=document.createElement("span");headingText.textContent=t.bundleSaveTitle||"",heading.append(icon,headingText);const copy=document.createElement("p");if(copy.className="l64-disc-finder-v2__bundle-copy",copy.textContent=t.bundleSaveText||"",promo.append(heading,copy),bundleSaveUrl){const link=document.createElement("a");link.className="l64-disc-finder-v2__bundle-link",link.href=bundleSaveUrl,link.textContent=t.bundleSaveLink||"",promo.append(link)}content.append(promo)}const variants=Array.isArray(recommendation.variants)?recommendation.variants:[];if(variants.length>1){const wrap=document.createElement("div");wrap.className="l64-disc-finder-v2__variant-wrap";const label=document.createElement("label");label.className="l64-disc-finder-v2__variant-label",label.textContent=t.colorWeight||"";const select=document.createElement("select");select.dataset.primaryVariant="true",select.setAttribute("aria-label",t.colorWeight||"");const placeholder=document.createElement("option");placeholder.value="",placeholder.textContent=t.chooseColorWeight||t.colorWeight||"",select.append(placeholder),variants.forEac
1h(variant=>{const option=document.createElement("option");option.value=String(variant.id),option.textContent=variant.title||"",option.dataset.image=variant.image||"",option.dataset.priceDisplay=variant.priceDisplay||"",select.append(option)});const chevron=document.createElement("span");chevron.className="l64-disc-finder-v2__variant-chevron",chevron.setAttribute("aria-hidden","true"),wrap.append(label,select,chevron),content.append(wrap)}else variants.length===1&&(card.dataset.selectedVariantId=String(variants[0].id),card.dataset.selectedVariantTitle=variants[0].title||"");if(isBundleSavePutter){const quantityWrap=document.createElement("div");quantityWrap.className="l64-disc-finder-v2__quantity-wrap";const quantityLabel=document.createElement("label");quantityLabel.className="l64-disc-finder-v2__quantity-label",quantityLabel.textContent=t.quantity||"";const quantityControl=document.createElement("div");quantityControl.className="l64-disc-finder-v2__quantity-control";const minus=document.createElement("button");minus.type="button",minus.dataset.quantityStep="-1",minus.setAttribute("aria-label",t.decreaseQuantity||t.quantity||""),minus.textContent="\u2212";const quantityInput=document.createElement("input");quantityInput.type="number",quantityInput.min="1",quantityInput.max="50",quantityInput.step="1",quantityInput.value="1",quantityInput.inputMode="numeric",quantityInput.dataset.primaryQuantity="true",quantityInput.id=`DiscFinderQuantity-${root.id}-${index}`,quantityInput.setAttribute("aria-label",t.quantity||""),quantityLabel.htmlFor=quantityInput.id;const plus=document.createElement("button");plus.type="button",plus.dataset.quantityStep="1",plus.setAttribute("aria-label",t.increaseQuantity||t.quantity||""),plus.textContent="+",quantityControl.append(minus,quantityInput,plus),quantityWrap.append(quantityLabel,quantityControl),content.append(quantityWrap)}const actions=document.createElement("div");actions.className="l64-disc-finder-v2__actions";const productLink=document.createElement("a");productLink.className="l64-disc-finder-v2__secondary-button",productLink.href=recommendation.url||"#",productLink.textContent=t.viewProduct||"";const addButton=document.createElement("button");addButton.type="button",addButton.className="l64-disc-finder-v2__primary-button",addButton.dataset.addPrimary="true",addButton.textContent=recommendation.available?t.addToCart:t.soldOut,addButton.disabled=!recommendation.available||variants.length===0||variants.length>1,actions.append(productLink,addButton),content.append(actions),card.append(media,content),primaryCard.append(card),track("recommendation_viewed",{zone:currentZone,model:recommendation.model||"",plastic:recommendation.plastic||"",source:recommendation.source||"fallback",position:index+1},"Disc Finder - Recommendation Viewed")},renderAlternatives=()=>{alternatives.replaceChildren();const otherChoices=currentChoices.map((choice,index)=>({choice,index})).filter(entry=>entry.index!==currentChoiceIndex);alternativesWrap.hidden=otherChoices.length===0,otherChoices.length&&otherChoices.forEach(({choice,index})=>{const button=document.createElement("button");button.type="button",button.className="l64-disc-finder-v2__alternative",button.dataset.alternativeIndex=String(index);const imageWrap=document.createElement("span");if(imageWrap.className="l64-disc-finder-v2__alternative-image-wrap",choice.image){const image=document.createElement("img");image.className="l64-disc-finder-v2__alternative-image",image.src=choice.image,image.alt="",image.loading="lazy",image.width=88,image.height=88,imageWrap.append(image)}const copy=document.createElement("span"),name=document.createElement("span");name.className="l64-disc-finder-v2__alternative-name",name.textContent=choice.model||choice.productTitle||"";const meta=document.createElement("span");meta.className="l64-disc-finder-v2__alternative-meta",meta.textContent=choice.plastic||"";const numbers=[choice?.flight?.speed,choice?.flight?.glide,choice?.flight?.turn,choice?.flight?.fade].filter(value=>value!==""&&value!==null&&value!==void 0),flightLine=document.createElement("span");flightLine.className="l64-disc-finder-v2__alternative-flight",flightLine.textContent=numbers.length===4?numbers.join(" / "):"";const putterMeta=document.createElement("span");putterMeta.className="l64-disc-finder-v2__alternative-flight",currentTypeKey()==="putter"&&(putterMeta.textContent=[profileDisplay(choice.discHeight),rimDisplay(choice.rimType)].filter(
1Boolean).join(" \xB7 ")),copy.append(name),meta.textContent&&copy.append(meta),flightLine.textContent&&copy.append(flightLine),putterMeta.textContent&&copy.append(putterMeta),button.append(imageWrap,copy),alternatives.append(button)})},renderChoice=async(index,trackChange=!1)=>{const recommendation=currentChoices[index];if(recommendation){currentChoiceIndex=index,loading.hidden=!1,primaryCard.replaceChildren();try{await hydrateRecommendation(recommendation)}catch{loading.hidden=!0;const empty=document.createElement("div");empty.className="l64-disc-finder-v2__empty",empty.textContent=t.recommendationError||"",primaryCard.replaceChildren(empty),renderAlternatives();return}loading.hidden=!0,renderPrimary(recommendation,index),renderAlternatives(),trackChange&&track("recommendation_selected",{zone:currentZone,model:recommendation.model||"",plastic:recommendation.plastic||"",source:recommendation.source||"fallback",position:index+1},"Disc Finder - Recommendation Selected")}},updatePrimaryVariant=select=>{const card=select.closest(".l64-disc-finder-v2__primary-card");if(!card)return;const option=select.options[select.selectedIndex],image=card.querySelector("[data-primary-image]"),price=card.querySelector("[data-primary-price]"),addButton=card.querySelector("[data-add-primary]");if(card.dataset.selectedVariantId=option&&option.value?option.value:"",card.dataset.selectedVariantTitle=option&&option.value?option.textContent:"",addButton&&(addButton.disabled=!option||!option.value),option&&option.value&&option.dataset.image&&image&&(image.src=option.dataset.image),option&&option.value&&option.dataset.priceDisplay&&price&&(price.textContent=option.dataset.priceDisplay),option&&option.value){const recommendation=currentChoices[currentChoiceIndex];track("variant_selected",{zone:currentZone,model:recommendation?.model||"",plastic:recommendation?.plastic||"",variant_id:option.value,variant_title:option.textContent||""},"Disc Finder - Variant Selected")}},addPrimaryToCart=async button=>{const card=button.closest(".l64-disc-finder-v2__primary-card"),recommendation=currentChoices[currentChoiceIndex],variantId=card?.dataset.selectedVariantId||"",quantityInput=card?.querySelector("[data-primary-quantity]"),quantity=Math.min(50,Math.max(1,Number.parseInt(quantityInput?.value||card?.dataset.quantity||"1",10)||1));if(!card||!recommendation||!variantId)return;quantityInput&&(quantityInput.value=String(quantity)),card.dataset.quantity=String(quantity);const originalText=button.textContent;button.disabled=!0,button.textContent=t.adding||originalText;try{const response=await window.fetch(`${shopRoot()}cart/add.js`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:[{id:Number(variantId),quantity}]})});if(!response.ok){const payload=await response.json().catch(()=>({}));throw new Error(payload.description||payload.message||t.cartError)}let cart=null;try{const cartResponse=await window.fetch(`${shopRoot()}cart.js`,{headers:{Accept:"application/json"}});cartResponse.ok&&(cart=await cartResponse.json())}catch{}const items=[{id:Number(variantId),quantity}];cart&&document.dispatchEvent(new CustomEvent("cart:updated",{detail:{cart}})),document.dispatchEvent(new CustomEvent("cart:refresh")),document.dispatchEvent(new CustomEvent("ajaxProduct:added",{detail:{items,cart}})),document.dispatchEvent(new CustomEvent("product:added",{detail:{items,cart}})),button.textContent=t.added||originalText,announce(`${t.added||""} ${recommendation.model||""}`.trim()),track("added_to_cart",{zone:currentZone,model:recommendation.model||"",plastic:recommendation.plastic||"",variant_id:String(variantId),variant_title:card.dataset.selectedVariantTitle||"",quantity,position:currentChoiceIndex+1},"Disc Finder - Added to Cart"),window.setTimeout(()=>{button.disabled=!1,button.textContent=originalText},1500)}catch(error){button.textContent=t.cartError||originalText,announce(error.message||t.cartError||""),window.setTimeout(()=>{button.disabled=!1,button.textContent=originalText},1800)}},buildViewAllUrl=()=>{if(isEasyLaunchFocused){const destination2=currentGoalKey()==="easy"?zeroGravityUrl:easyToUseUrl;if(!destination2)return"#";const url2=new URL(destination2,window.location.href);return`${url2.pathname}${url2.search}`}const selectedType=selectedOption(type),selectedFlight=selectedOption(flight),destination=selectedType?.dataset.url||"";if(!destination)return"#";const url=new URL(destination,window.location.href),filterKey=root.dataset.stabilityFilter,filterValue=selectedFlight?.dataset.f
1ilterValue||"",shouldFilterFlight=currentTypeKey()!=="putter"||currentUseKey()!=="putting";return filterKey&&filterValue&&shouldFilterFlight&&url.searchParams.set(filterKey,filterValue),`${url.pathname}${url.search}`},summaryText=()=>{const distanceText=selectedOption(distance)?.textContent?.trim()||"",typeText=selectedOption(type)?.textContent?.trim()||"";if(isEasyLaunchFocused)return[selectedOption(goal)?.textContent?.trim()||"",typeText].filter(Boolean).join(" \xB7 ");if(isGoalFocused){const goalText=selectedOption(goal)?.textContent?.trim()||"",flightText=selectedOption(flight)?.textContent?.trim()||"";return[distanceText,goalText,flightText].filter(Boolean).join(" \xB7 ")}if(isBeginnerFocused){const flightText=selectedOption(flight)?.textContent?.trim()||"";return[distanceText,typeText,flightText].filter(Boolean).join(" \xB7 ")}if(currentTypeKey()!=="putter"){const flightText=selectedOption(flight)?.textContent?.trim()||"";return[distanceText,typeText,flightText].filter(Boolean).join(" \xB7 ")}const useText=selectedOption(use)?.textContent?.trim()||"",profileText=profile.value!=="any"&&selectedOption(profile)?.textContent?.trim()||"",finalText=currentUseKey()==="putting"?rim.value!=="any"&&selectedOption(rim)?.textContent?.trim()||"":selectedOption(flight)?.textContent?.trim()||"";return[distanceText,isPuttFocused?"":typeText,useText,profileText,finalText].filter(Boolean).join(" \xB7 ")},showResults=async()=>{const distanceKey=currentDistanceKey(),typeKey=currentTypeKey(),useKey=currentUseKey(),goalKey=currentGoalKey(),flightKey=currentFlightKeyValue(),profileValue=currentProfileValue(),rimValue=currentRimValue();if(typeKey==="catchplay"){const destination=selectedOption(type)?.dataset.url||"";destination&&(announce(t.catchPlayRedirect||""),track("catch_play_opened",{distance:distanceKey},"Disc Finder - Catch & Play Opened"),window.location.assign(destination));return}const stabilityKey=flightKey==="straight"?"neutral":flightKey;isEasyLaunchFocused?(currentZone=`easy_launch_${goalKey}_${typeKey}`,currentFlightKey="",currentChoices=easyLaunchRecommendationChoices(goalKey,typeKey)):isBeginnerFocused?(currentZone=`beginner_${typeKey}_${flightKey||"not_sure"}`,currentFlightKey=flightKey,currentChoices=beginnerRecommendationChoices(distanceKey,typeKey,flightKey)):(typeKey==="putter"&&useKey==="putting"?currentZone="putter_putting":typeKey==="putter"&&useKey==="throwing"?currentZone=`putter_throwing_${stabilityKey}`:typeKey==="putter"&&useKey==="both"?currentZone=`putter_both_${stabilityKey}`:currentZone=`${typeKey}_${stabilityKey}`,currentFlightKey=flightKey,currentChoices=recommendationChoices(currentZone,distanceKey,typeKey,{useKey,goalKey,stabilityKey,profileValue,rimValue:useKey==="putting"?rimValue:""})),currentChoiceIndex=0;const summary=summaryText();if(resultContext&&(resultContext.textContent=summary),viewAll.href=buildViewAllUrl(),results.hidden=!1,root.classList.add("has-results"),root.classList.remove("is-editing"),loading.hidden=!1,primaryCard.replaceChildren(),alternatives.replaceChildren(),alternativesWrap.hidden=!0,track("submitted",{distance:distanceKey,disc_type:typeKey,mode:finderMode,use:useKey,goal:goalKey,profile:profileValue,rim:useKey==="putting"?rimValue:"",flight:flightKey,zone:currentZone,recommendation_count:currentChoices.length},"Disc Finder - Submitted"),!currentChoices.length)loading.hidden=!0,renderPrimary(null,0);else{await Promise.allSettled(currentChoices.map(choice=>hydrateRecommendation(choice)));const usable=currentChoices.filter(choice=>choice.loaded!==!1&&choice.handle);currentChoices=usable.length?usable:currentChoices,await renderChoice(0,!1)}window.matchMedia("(max-width: 768px)").matches&&window.setTimeout(()=>results.scrollIntoView({behavior:"smooth",block:"start"}),60)},resetFinder=()=>{distance.selectedIndex=0,isEasyLaunchFocused?resetEasyLaunchFields():isGoalFocused?resetFocusedGoalFields():isPuttFocused?resetFocusedPutterFields():(rebuildOptions(type,typePlaceholder,typeOptionBank,[],"typeKey"),rebuildOptions(goal,goalPlaceholder,goalOptionBank,[],"goalKey"),rebuildOptions(flight,flightPlaceholder,flightOptionBank,[],"flightKey"),setAdvancedHidden(),type.disabled=!0,goal.disabled=!0,goalField.hidden=!0,flight.disabled=!0,flightField.hidden=!1,useStep&&(useStep.textContent="3"),profileStep&&(profileStep.textContent="4"),rimStep&&(rimStep.textContent="5"),flightStep&&(flightStep.textContent="3"),form.classList.remove("is-catch-play","is-putter","is-distance-focused","is-easy-launch")),results.hidden=!0,root.classList.remove("has-results","is-editing"),currentChoices=[],currentChoiceIndex=0,currentZone="",currentFlightKey="",updateSubmit()};distance.addEventListener("change",isGoalFocused?updateFocusedDistance:isPuttFocused?updateFocusedPutterDistance:updateTypeOptions),type.addEventListener("change",isEasyLaunchFocused?updateSubmit:updateFlightOptions),goal.addEventListener("change",isEasyLaunchFocused?updateEasyLaunchGoal:updateFocusedGoal),use.addEventListener("change",updatePutterUse),profile.addEventListener("change",updateSubmit),rim.addEventListener("change",updateSubmit),flight.addEventListener("change",updateSubmit),form.addEventListener("submit",event=>{event.preventDefault(),!submit.disabled&&showResults()}),root.addEventListener("click",event=>{if(event.target.closest("[data-change-choices]")){root.classList.add("is-editing"),results.hidden=!0,window.requestAnimationFrame(()=>{form.scrollIntoView({behavior:"smooth",block:"start"}),window.setTimeout(()=>{[distance,goal,type,use,profile,rim,flight].find(field=>
1field&&!field.disabled&&!field.closest("[hidden]"))?.focus({preventScroll:!0})},420)}),track("choices_edit_started",{distance:currentDistanceKey(),disc_type:currentTypeKey(),mode:finderMode,use:currentUseKey(),goal:currentGoalKey(),profile:currentProfileValue(),rim:currentRimValue(),flight:currentFlightKeyValue()},"Disc Finder - Choices Edit Started");return}const quantityButton=event.target.closest("[data-quantity-step]");if(quantityButton){const card=quantityButton.closest(".l64-disc-finder-v2__primary-card"),input=card?.querySelector("[data-primary-quantity]");if(!card||!input)return;const step=Number.parseInt(quantityButton.dataset.quantityStep||"0",10)||0,current=Number.parseInt(input.value||"1",10)||1,next=Math.min(50,Math.max(1,current+step));input.value=String(next),card.dataset.quantity=String(next);return}const alternative=event.target.closest("[data-alternative-index]");if(alternative){const index=Number(alternative.dataset.alternativeIndex);Number.isInteger(index)&&currentChoices[index]&&renderChoice(index,!0);return}const addButton=event.target.closest("[data-add-primary]");addButton&&addPrimaryToCart(addButton)}),root.addEventListener("change",event=>{const quantityInput=event.target.closest("[data-primary-quantity]");if(quantityInput){const card=quantityInput.closest(".l64-disc-finder-v2__primary-card"),quantity=Math.min(50,Math.max(1,Number.parseInt(quantityInput.value||"1",10)||1));quantityInput.value=String(quantity),card&&(card.dataset.quantity=String(quantity));return}const select=event.target.closest("[data-primary-variant]");select&&updatePrimaryVariant(select)}),viewAll.addEventListener("click",()=>{track("view_all_clicked",{zone:currentZone,href:viewAll.getAttribute("href")||""},"Disc Finder - View All Clicked")}),root.addEventListener("l64:disc-finder-v2:reset",resetFinder),resetFinder()},initWithin=container=>{container.matches&&container.matches("[data-disc-finder-v2]")&&initFinder(container),container.querySelectorAll?.("[data-disc-finder-v2]").forEach(initFinder)};initWithin(document),document.addEventListener("shopify:section:load",event=>initWithin(event.target)),window.addEventListener("pageshow",event=>{const navigation=window.performance?.getEntriesByType?.("navigation")?.[0];(event.persisted||navigation?.type==="back_forward")&&document.querySelectorAll("[data-disc-finder-v2]").forEach(root=>{root.dispatchEvent(new CustomEvent("l64:disc-finder-v2:reset"))})})})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["main-product-high-variant"]&&!Shopify.designMode))try{document.addEventListener("product-form:cart:navigate",event=>{theme.settings.cartType!=="page"&&event.preventDefault()}),document.addEventListener("product-form:submit:success",()=>{document.dispatchEvent(new CustomEvent("ajaxProduct:added"))})}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["min-bag"]&&!Shopify.designMode))try{(()=>{const STORAGE_KEY="lat64_user_bag",PROFILE_KEY="lat64_user_bag_distance",DISC_DATABASE=[{brand:"Latitude 64\xB0",mold:"Bolt",speed:13,glide:6,turn:-2,fade:3,stability:"understable"},{brand:"Latitude 64\xB0",mold:"Grace",speed:11,glide:6,turn:-1,fade:2,stability:"neutral"},{brand:"Latitude 64\xB0",mold:"Rive",speed:13,glide:5,turn:0,fade:3.5,stability:"overstable"},{brand:"Latitude 64\xB0",mold:"River",speed:7,glide:7,turn:-1,fade:1,stability:"understable"},{brand:"Latitude 64\xB0",mold:"Saint",speed:9,glide:7,turn:-1,fade:2,stability:"understable"},{brand:"Latitude 64\xB0",mold:"Explorer",speed:7,glide:5,turn:0,fade:2,stability:"neutral"},{brand:"Latitude 64\xB0",mold:"Fuse",speed:5,glide:6,turn:-1,fade:0,stability:"understable"},{brand:"Latitude 64\xB0",mold:"Claymore",speed:5,glide:5,turn:-1,fade:1,stability:"neutral"},{brand:"Latitude 64\xB0",mold:"Trust",speed:5,glide:5,turn:0,fade:2,stability:"overstable"},{brand:"Latitude 64\xB0",mold:"Pure",speed:3,glide:3,turn:-1,fade:1,stability:"neutral"},{brand:"Latitude 64\xB0",mold:"Keystone",speed:2,glide:5,turn:-1,fade:1,stability:"understable"},{brand:"Latitude 64\xB0",mold:"Hope",speed:2,glide:3,turn:0,fade:1,stability:"overstable"},{brand:"Innova",mold:"Destroyer",speed:12,glide:5,turn:-1,fade:3,stability:"overstable"},{brand:"Innova",mold:"Wraith",speed:11,glide:5,turn:-1,fade:3,stability:"overstable"},{brand:"Innova",mold:"Leopard3",speed:7,glide:5,turn:-2,fade:1,stability:"understable"},{brand:"Innova",mold:"Teebird",speed:7,glide:5,turn:0,fade:2,stability:"neutral"},{brand:"Innova",mold:"Mako3",speed:5,glide:5,turn:0,fade:0,stability:"neutral"},{brand:"Innova",mold:"Aviar",speed:2,glide:3,turn:0,fade:1,stability:"neutral"},{brand:"Discraft",mold:"Hades",speed:12,glide:6,turn:-3,fade:2,stability:"understable"},{brand:"Discraft",mold:"Undertaker",speed:9,glide:5,turn:-1,fade:2,stability:"neutral"},{brand:"Discraft",mold:"Buzzz",speed:5,glide:4,turn:-1,fade:1,stability:"neutral"},{brand:"Discraft",mold:"Zone",speed:4,glide:3,turn:0,fade:3,stability:"overstable"},{brand:"MVP",mold:"Wave",speed:11,glide:5,turn:-2,fade:2,stability:"understable"},{brand:"MVP",mold:"Tesla",speed:9,glide:5,turn:-1,fade:2,stability:"neutral"},{brand:"MVP",mold:"Hex",speed:5,glide:5,turn:-1,fade:1,stability:"neutral"},{brand:"MVP",mold:"Envy",speed:3,glide:3,turn:0,fade:2,stability:"neutral"},{brand:"Discmania",mold:"DD3",speed:12,glide:5,turn:-1,fade:3,stability:"overstable"},{brand:"Discmania",mold:"FD",speed:7,glide:6,turn:0,fade:1,stability:"neutral"},{brand:"Discmania",mold:"Essence",speed:8,glide:6,turn:-2,fade:1,stability:"understable"},{brand:"Discmania",mold:"MD3",speed:5,glide:5,turn:0,fade:1,stability:"neutral"},{brand:"Discmania",mold:"P2",speed:2,glide:3,turn:0,fade:1,stability:"neutral"},{brand:"Dynamic Discs",mold:"Verdict",speed:5,glide:4,turn:0,fade:3.5,stability:"overstable"},{brand:"Dynamic Discs",mold:"EMac Truth",speed:5,glide:5,turn:0,fade:2,stability:"neutral"},{brand:"Dynamic Discs",mold:"Truth",speed:5,glide:5,turn:-1,fade:1,stability:"neutral"},{brand:"Dynamic Discs",mold:"Escape",speed:9,glide:5,turn:-1,fade:2,stability:"neutral"},{brand:"Dynamic Discs",mold:"Felon",speed:9,glide:3,turn:.5,fade:4,stability:"overstable"},{brand:"Dynamic Discs",mold:"Trespass",speed:12,glide:5,turn:-.5,fade:3,stability:"neutral"},{brand:"Dynamic Discs",mold:"Judge",speed:2,glide:4,turn:0,fade:1,stability:"neutral"},{brand:"Dynamic Discs",mold:"Justice",speed:5,glide:1,turn:.5,fade:4,stability:"overstable"},{brand:"Westside Discs",mold:"Underworld",speed:7,glide:6,turn:-3,fade:1,stability:"understable"},{brand:"Westside Discs",mold:"Hatchet",speed:9,glide:6,turn:-2,fade:1,stability:"understable"},{brand:"Westside Discs",mold:"Stag",speed:8,glide:6,turn:-1,fade:2,stability:"neutral"},{brand:"Westside Discs",mold:"Bear",speed:8,glide:6,turn:-.5,fade:2.5,stability:"overstable"},{brand:"Westside Discs",mold:"Warship",speed:5,glide:6,turn:0,fade:1,stability:"neutral"},{brand:"Westside Discs",mold:"Tursas",speed:5,glide:5,turn:-2,fade:1,stability:"understable"},{brand:"Westside Discs",mold:"Harp",speed:4,glide:3,turn:0,fade:3,stability:"overstable"},{brand:"Westside Discs",mold:"Sword",speed:12,glide:5,turn:-.5,fade:2,stability:"neutral"},{brand:"Westside Discs",mold:"Maiden",speed:3,glide:4,turn:0,fade:1,stability:"neutral"},{brand:"Kastaplast",mold:"Berg",speed:1,glide:1,turn:0,fade:2,stability:"neutral"},{brand:"Kastaplast",mold:"Reko",speed:3,glide:3,turn:0,fade:1,stability:"neutral"},{brand:"Kastaplast",mold:"Reko X",speed:3,glide:3,turn:0,fade:2,stability:"overstable"},{brand:"Kastaplast",mold:"Lots",speed:9,glide:5,turn:-1,fade:2,stability:"neutral"},{brand:"Kastaplast",mold:"Falk",speed:9,glide:6,turn:-2,fade:1,stability:"understable"},{brand:"Kastaplast",mold:"St\xE5l",speed:9,glide:4,turn:0,fade:3,stability:"overstable"},{brand:"Kastaplast",mold:"Svea",speed:5,glide:6,turn:-1,fade:0,stability:"understable"},{brand:"Kastaplast",mold:"Stig",speed:6,glide:5,turn:-2,fade:1,stability:"understable"},{brand:"Kastaplast",mold:"J\xE4rn",speed:4.5,glide:3,turn:0,fade:3,stability:"overstable"},{brand:"Kastaplast",mold:"Guld",speed:13,glide:5,turn:-.5,fade:3,stability:"overstable"}],LAT64_STABILITY_BY_MOLD={bolt:"understable",grace:"neutral",rive:"overstable",river:"understable",saint:"understable",explorer:"neutral",pioneer:"overstable",fuse:"understable",claymore:"neutral",trust:"overstable",keystone:"understable",pure:"neutral",hope:"overstable",amber:"understable",flow:"neutral","ballista pro":"overstable",ballista:"neutral",maul:"understable",brave:"understable",jade:"neutral",culverin:"overstable",pearl:"understable",compass:"neutral",anchor:"overstable",ruby:"understable",sinus:"overstable",diamond:"understable",fury:"understable",stiletto:"overstable",sapphire:"neutral",savior:"overstable"},CATEGORY_CONFIG=[{id:"distance",labelKey:"distance",range:"11-14"},{id:"fairway",labelKey:"fairway",range:"7-10"},{id:"midrange",labelKey:"midrange",range:"4-6"},{id:"putter",labelKey:"putter",range:"1-3"}],STABILITY_CONFIG=[{id:"understable",labelKey:"understable",short:"U"},{id:"neutral",labelKey:"neutral",short:"N"},{id:"overstable",labelKey:"overstable",short:"O"}],ZONE_IDS=CATEGORY_CONFIG.flatMap(category=>STABILITY_CONFIG.map(stability=>`${category.id}_${stability.id}`)),FALLBACK_EXTRA_CATALOG=[{model:"Saint",plastic:"Opto",handle:"opto-saint",stability:"understable",flight:{speed:9,glide:7,turn:-1,fade:2},loaded:!1,variants:[],available:!0},{model:"Brave",plastic:"Royal Grand",handle:"grand-brave",stability:"understable",flight:{speed:7,glide:6,turn:-1,fade:2},loaded:!1,variants:[],available:!0},{model:"Diamond",plastic:"Opto",handle:"opto-diamond",stability:"understable",flight:{speed:8,glide:6,turn:-3,fade:1},loaded:!1,variants:[],available:!0},{model:"Fury",plastic:"Opto",handle:"opto-fury",stability:"understable",flight:{speed:9,glide:6,turn:-2,fade:2},loaded:!1,variants:[],available:!0},{model:"Ballista",plastic:"Opto",handle:"opto-ballista",stability:"neutral",flight:{speed:14,glide:5,turn:-1,fade:3},loaded:!1,variants:[],available:!0},{model:"Stiletto",plastic:"Opto",handle:"opto-stiletto-1",stability:"overstable",flight:{speed:13,glide:3,turn:.5,fade:5},loaded:!1,variants:[],available:!0},{model:"Jade",plastic:"Opto",handle:"opto-jade",stability:"neutral",flight:{speed:9,glide:6,turn:-2,fade:1},loaded:!1,variants:[],available:!0},{model:"Sapphire",plastic:"Opto",handle:"opto-sapphire-1",stability:"neutral",flight:{speed:10,glide:6,turn:-2,fade:1.5},loaded:!1,variants:[],available:!0},{model:"Savior",plastic:"Royal Sense",handle:"sense-savior",stability:"overstable",flight:{speed:4,glide:4,turn:0,fade:3},loaded:!1,variants:[],available:!0}],normalizeText=value=>String(value||"").trim().toLowerCase(),normalizeSearchText=value=>normalizeText(value).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/°/g,"").replace(/[^a-z0-9]+/g," ").replace(/\s+/g," ").trim(),compactSearchText=value=>normalizeSearchText(value).replace(/\s+/g,""),BRAND_ALIASES=[{brand:"Latitude 64\xB0",aliases:["latitude 64","latitude64","lat64","latitude"]},{brand:"Dynamic Discs",aliases:["dynamic discs","dynamic","dd"]},{brand:"Westside Discs",aliases:["westside discs","westside"]},{brand:"Kastaplast",aliases:["kastaplast","kasta"]},{brand:"Innova",aliases:["innova"]},{brand:"Discraft",aliases:["discraft"]},{brand:"MVP",aliases:["mvp"]},{brand:"Axiom",aliases:["axiom"]},{brand:"Discmania",aliases:["discmania","dm"]},{brand:"Prodigy",aliases:["prodigy"]},{brand:"Clash Discs",aliases:["clash discs","clash"]},{brand:"Gateway",aliases:["gateway"]}],getSearchScore=(disc,rawQuery)=>{const query=normalizeSearchText(rawQuery),compactQuery=compactSearchText(rawQuery);if(!query)return 0;const mold=normalizeSearchText(disc.mold),compactMold=compactSearchText(disc.mold),brand=normalizeSearchText(disc.brand),compactBrand=compactSearchText(disc.brand),combined=`${brand} ${mold}`,compactCombined=`${compactBrand}${compactMold}`,brandAliasEntry=BRAND_ALIASES.find(entry=>normalizeSearchText(entry.brand)===brand),aliasCombined=brandAliasEntry?brandAliasEntry.aliases.map(alias=>`${normalizeSearchText(alias)} ${mold}`):[],compactAliasCombined=aliasCombined.map(value=>
1compactSearchText(value)),tokens=query.split(" ").filter(Boolean);return compactMold===compactQuery?120:compactCombined===compactQuery||compactAliasCombined.includes(compactQuery)?115:compactMold.startsWith(compactQuery)?100:mold.startsWith(query)?95:compactMold.includes(compactQuery)?80:compactBrand===compactQuery||brandAliasEntry&&brandAliasEntry.aliases.some(alias=>compactSearchText(alias)===compactQuery)?72:brand.startsWith(query)||aliasCombined.some(value=>value.startsWith(query))?68:compactCombined.includes(compactQuery)||compactAliasCombined.some(value=>value.includes(compactQuery))?60:tokens.every(token=>combined.includes(token)||aliasCombined.some(value=>value.includes(token)))?50:0},inferManualPrefill=rawQuery=>{const original=String(rawQuery||"").trim(),normalized=normalizeSearchText(original);if(!normalized)return{brand:"",mold:""};const aliasMatch=BRAND_ALIASES.flatMap(entry=>entry.aliases.map(alias=>({...entry,alias:normalizeSearchText(alias)}))).sort((a,b)=>b.alias.length-a.alias.length).find(entry=>normalized===entry.alias||normalized.startsWith(`${entry.alias} `));if(!aliasMatch)return{brand:"",mold:original};const wordsToRemove=aliasMatch.alias.split(" ").length,mold=original.split(/\s+/).slice(wordsToRemove).join(" ").trim();return{brand:aliasMatch.brand,mold}},createInstanceId=()=>window.crypto&&typeof window.crypto.randomUUID=="function"?window.crypto.randomUUID():`disc-${Date.now()}-${Math.random().toString(16).slice(2)}`,classifyCategory=speed=>{const value=Number(speed);return value>=11?"distance":value>=7?"fairway":value>=4?"midrange":"putter"},classifyStability=(turn,fade)=>{const turnValue=Number(turn),fadeValue=Number(fade),net=turnValue+fadeValue;return turnValue<=-2||net<0?"understable":fadeValue>=2.5||net>=3?"overstable":"neutral"},normalizeStabilityId=value=>{const key=normalizeText(value);return key?key==="understable"||key==="understabil"?"understable":key==="overstable"||key==="\xF6verstabil"||key==="overstabil"?"overstable":key==="stable"||key==="straight"||key==="neutral"||key==="stabil"||key==="rak"?"neutral":"":""},getDatabaseDisc=(brand,mold)=>{const brandKey=normalizeText(brand).replace(/\u00b0/g,""),moldKey=normalizeText(mold);return DISC_DATABASE.find(candidate=>normalizeText(candidate.brand).replace(/\u00b0/g,"")===brandKey&&normalizeText(candidate.mold)===moldKey)||null},resolveDiscStability=disc=>{const explicit=normalizeStabilityId(disc&&disc.stability);return explicit||classifyStability(disc.turn,disc.fade)},getZoneId=disc=>disc&&ZONE_IDS.includes(disc.slotOverride)?disc.slotOverride:`${classifyCategory(disc.speed)}_${resolveDiscStability(disc)}`,sanitizeDisc=disc=>{if(!disc||typeof disc!="object")return null;const brand=String(disc.brand||"").trim(),mold=String(disc.mold||"").trim(),speed=Number(disc.speed),glide=Number(disc.glide),turn=Number(disc.turn),fade=Number(disc.fade);if(!brand||!mold||![speed,glide,turn,fade].every(Number.isFinite)||speed<1||speed>14)return null;const databaseDisc=getDatabaseDisc(brand,mold),brandKey=normalizeText(brand).replace(/\u00b0/g,""),moldKey=normalizeText(mold),lat64FallbackStability=brandKey.includes("latitude 64")?LAT64_STABILITY_BY_MOLD[moldKey]:"",stability=normalizeStabilityId(disc.stability)||normalizeStabilityId(databaseDisc&&databaseDisc.stability)||normalizeStabilityId(lat64FallbackStability),slotOverride=ZONE_IDS.includes(String(disc.slotOverride||""))?String(disc.slotOverride):"";return{instanceId:String(disc.instanceId||createInstanceId()),brand,mold,speed,glide,turn,fade,stability,slotOverride}},loadBag=()=>{try{const stored=JSON.parse(window.localStorage.getItem(STORAGE_KEY)||"[]");return Array.isArray(stored)?stored.map(sanitizeDisc).filter(Boolean):[]}catch{return[]}},initMinBag=root=>{if(!root||root.dataset.minBagReady==="true")return;root.dataset.minBagReady="true";const controller=new AbortController;root._minBagController=controller;const listen=(target,type,handler,options={})=>{target&&target.addEventListener(type,handler,{...options,signal:controller.signal})},configEl=root.querySelector("[data-min-bag-config]"),recommendationsEl=root.querySelector("[data-min-bag-recommendations]"),curatedEl=root.querySelector("[data-min-bag-curated]"),catalogEl=root.querySelector("[data-min-bag-catalog]"),searchWra
1p=root.querySelector(".min-bag__search-wrap"),searchInput=root.querySelector("[data-search-input]"),distanceSelect=root.querySelector("[data-distance-profile]"),resultsEl=root.querySelector("[data-search-results]"),matrixEl=root.querySelector("[data-matrix]"),summaryEl=root.querySelector("[data-bag-summary]"),liveEl=root.querySelector("[data-status-live]"),customToggle=root.querySelector("[data-custom-toggle]"),customForm=root.querySelector("[data-custom-form]"),customBrandInput=root.querySelector("[data-custom-brand]"),customMoldInput=root.querySelector("[data-custom-mold]"),customFlightInputs=Array.from(root.querySelectorAll("[data-custom-flight]")),customPreview=root.querySelector("[data-custom-preview]"),customCancels=Array.from(root.querySelectorAll("[data-custom-cancel]")),customBackdrop=root.querySelector("[data-custom-backdrop]"),mobileMedia=window.matchMedia("(max-width: 768px)"),hideMobileChat=root.dataset.hideMobileChat!=="false",desktopBagList=root.querySelector("[data-desktop-bag-list]"),sheetBagList=root.querySelector("[data-sheet-bag-list]"),sheet=root.querySelector("[data-bag-sheet]"),showFlightNumbers=root.dataset.showFlightNumbers!=="false";let config={strings:{}},recommendations={},curatedRecommendations={},recommendationCatalog=[],bag=loadBag(),searchMatches=[],activeResultIndex=-1,activeCategory=bag.length?getZoneId(bag[0]).split("_")[0]:"distance",previousFocus=null,previousCustomFocus=null,distanceProfile="auto",sectionInView=!1,hasTrackedOpen=!1,chatObserver=null,recommendationViewObserver=null;const hiddenChatNodes=new Map,viewedRecommendationKeys=new Set;try{config=JSON.parse(configEl.textContent||"{}")}catch{config={strings:{}}}try{recommendations=JSON.parse(recommendationsEl.textContent||"{}")}catch{recommendations={}}try{curatedRecommendations=JSON.parse(curatedEl&&curatedEl.textContent||"{}"),(!curatedRecommendations||typeof curatedRecommendations!="object"||Array.isArray(curatedRecommendations))&&(curatedRecommendations={})}catch{curatedRecommendations={}}try{recommendationCatalog=JSON.parse(catalogEl&&catalogEl.textContent||"[]"),Array.isArray(recommendationCatalog)||(recommendationCatalog=[])}catch{recommendationCatalog=[]}bag=bag.map(disc=>{if(disc.stability||!normalizeText(disc.brand).replace(/\u00b0/g,"").includes("latitude 64"))return disc;const match=recommendationCatalog.find(candidate=>normalizeText(candidate.model)===normalizeText(disc.mold)),stability=normalizeStabilityId(match&&match.stability);return stability?{...disc,stability}:disc}),bag.length&&(activeCategory=getZoneId(bag[0]).split("_")[0]||activeCategory);try{const savedProfile=window.localStorage.getItem(PROFILE_KEY);["auto","short","medium","long"].includes(savedProfile)&&(distanceProfile=savedProfile)}catch{}distanceSelect&&(distanceSelect.value=distanceProfile);const maxRecommendations=Math.max(2,Math.min(5,Number(config.maxRecommendations)||4)),decodeHtml=value=>{const element=document.createElement("textarea");return element.innerHTML=String(value??""),element.value},t=Object.fromEntries(Object.entries(config.strings||{}).map(([key,value])=>[key,decodeHtml(value)])),announce=message=>{liveEl&&(liveEl.textContent="",window.setTimeout(()=>{liveEl.textContent=message},20))},chatSelectors=["#ShopifyChat","#shopify-chat","shopify-chat","shopify-inbox","[data-shopify-chat]","[data-shopify-inbox]",'[id*="shopify-chat" i]','[class*="shopify-chat" i]','iframe[title*="chat" i]','iframe[title*="inbox" i]','iframe[name*="chat" i]','iframe[src*="shopifychat" i]','iframe[src*="shopifyinbox" i]','[id*="chat-button" i]','[class*="chat-button" i]'],hideChatNodes=()=>{if(!hideMobileChat)return;let nodes=[];try{nodes=Array.from(document.querySelectorAll(chatSelectors.join(",")))}catch{nodes=[]}nodes.forEach(node=>{!(node instanceof HTMLElement)||root.contains(node)||(hiddenChatNodes.has(node)||hiddenChatNodes.set(node,node.getAttribute("style")),node.style.setProperty("display","none","important"),node.style.setProperty("visibility","hidden","important"),node.style.setProperty("pointer-events","none","important"))})},restoreChatNodes=()=>
1{hiddenChatNodes.forEach((styleValue,node)=>{node instanceof HTMLElement&&(styleValue===null?node.removeAttribute("style"):node.setAttribute("style",styleValue))}),hiddenChatNodes.clear()},isOverlayOpen=()=>{const bagSheetOpen=sheet&&!sheet.hidden,customSheetOpen=customForm&&!customForm.hidden;return!!(bagSheetOpen||customSheetOpen)},syncChatSuppression=()=>{const shouldHide=hideMobileChat&&mobileMedia.matches&&(sectionInView||isOverlayOpen());if(document.body.classList.toggle("l64-min-bag-chat-hidden",shouldHide),shouldHide){hideChatNodes(),!chatObserver&&document.body&&"MutationObserver"in window&&(chatObserver=new MutationObserver(()=>hideChatNodes()),chatObserver.observe(document.body,{childList:!0,subtree:!0}));return}chatObserver&&(chatObserver.disconnect(),chatObserver=null),restoreChatNodes()},saveBag=()=>{try{window.localStorage.setItem(STORAGE_KEY,JSON.stringify(bag))}catch{}},getGroupedBag=()=>{const grouped=Object.fromEntries(ZONE_IDS.map(zoneId=>[zoneId,[]]));return bag.forEach(disc=>{const zoneId=getZoneId(disc);grouped[zoneId]&&grouped[zoneId].push(disc)}),grouped},getMissingSlots=()=>{const grouped=getGroupedBag();return ZONE_IDS.filter(zoneId=>grouped[zoneId].length===0)},analyticsEnabled=root.dataset.enableAnalytics!=="false",analyticsPayload=(payload={})=>({...payload,total_discs:bag.length,gaps:getMissingSlots(),throwing_distance:distanceProfile,device:mobileMedia.matches?"mobile":"desktop"}),trackInteraction=(eventName,payload={},klaviyoName="")=>{if(!analyticsEnabled)return;const data=analyticsPayload(payload);if(window.Shopify&&window.Shopify.analytics&&typeof window.Shopify.analytics.publish=="function")try{const result=window.Shopify.analytics.publish(`latitude64:min_bag_${eventName}`,data);result&&typeof result.catch=="function"&&result.catch(()=>{})}catch{}if(klaviyoName&&window.klaviyo&&typeof window.klaviyo.push=="function")try{window.klaviyo.push(["track",klaviyoName,data])}catch{}},trackBagUpdated=()=>{const data=analyticsPayload();if(analyticsEnabled&&window.Shopify&&window.Shopify.analytics&&typeof window.Shopify.analytics.publish=="function")try{const result=window.Shopify.analytics.publish("latitude64:min_bag_updated",data);result&&typeof result.catch=="function"&&result.catch(()=>{})}catch{}if(window.klaviyo&&typeof window.klaviyo.push=="function")try{window.klaviyo.push(["track","Bag Updated",{total_discs:bag.length,gaps:getMissingSlots()}])}catch{}},observeRecommendationCards=()=>{!analyticsEnabled||!("IntersectionObserver"in window)||(recommendationViewObserver?recommendationViewObserver.disconnect():recommendationViewObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(!entry.isIntersecting)return;const card=entry.target,zone=card.dataset.recommendationCard||"",model=card.dataset.selectedModel||"",plastic=card.dataset.selectedPlastic||"",source=card.dataset.selectedSource||"fallback",position=Number(card.dataset.recommendationIndex||"0")+1,state=card.classList.contains("is-gap")?"gap":card.classList.contains("is-match")?"match":"alternative",key=`${zone}|${normalizeText(model)}|${position}|${state}`;viewedRecommendationKeys.has(key)||(viewedRecommendationKeys.add(key),trackInteraction("recommendation_viewed",{zone,model,plastic,source,position,state},"Min Bag - Recommendation Viewed")),recommendationViewObserver.unobserve(card)})},{threshold:.35}),root.querySelectorAll("[data-recommendation-card]").forEach(card=>{recommendationViewObserver.observe(card)}))},discWord=count=>count===1?t.discOne:t.discOther,slotWord=count=>count===1?t.slotOne:t.slotOther,updateCounts=()=>{const gaps=getMissingSlots().length;summaryEl&&(summaryEl.textContent=`${bag.length} ${discWord(bag.length)} - ${gaps} ${slotWord(gaps)}`),root.querySelectorAll("[data-desktop-bag-count], [data-mobile-bag-count], [data-sheet-bag-count]").forEach(node=>{node.textContent=String(bag.length)}),root.querySelectorAll("[data-desktop-bag-word], [data-mobile-bag-word], [data-sheet-bag-word]").forEach(node=>{node.textContent=discWord(bag.length)}),root.querySelectorAll("[data-desktop-gap-count], [data-mobile-gap-count], [data-sheet-gap-count]").forEach(node=>{node.textContent=String(gaps)}),CATEGORY_CONFIG.forEach(category=>{const count=bag.filter(disc=>getZoneId(disc).split("_")[0]===category.id).length;root.querySelectorAll(`[data-category-count="${category.id}"]`).forEach(node=>{node.textContent=String(count)})})},applyCategoryState=(scrollToStart=!1)=>
1{if(root.querySelectorAll("[data-category-tab]").forEach(button=>{const isActive=button.dataset.categoryTab===activeCategory;button.classList.toggle("is-active",isActive),button.setAttribute("aria-selected",String(isActive))}),root.querySelectorAll("[data-category-row]").forEach(row=>{row.classList.toggle("is-mobile-active",row.dataset.categoryRow===activeCategory)}),scrollToStart&&mobileMedia.matches){const row=root.querySelector(`[data-category-row="${activeCategory}"]`),cells=row?row.querySelector(".min-bag__cells"):null;cells&&cells.scrollTo({left:0,behavior:"smooth"})}},jumpToZone=zoneId=>{const categoryId=String(zoneId||"").split("_")[0];CATEGORY_CONFIG.some(category=>category.id===categoryId)&&(activeCategory=categoryId),applyCategoryState(!1),window.requestAnimationFrame(()=>{const target=root.querySelector(`[data-zone-id="${zoneId}"]`);target&&target.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})})},removeDisc=instanceId=>{const disc=bag.find(item=>item.instanceId===instanceId);bag=bag.filter(item=>item.instanceId!==instanceId),saveBag(),renderAll(),trackBagUpdated(),disc&&(trackInteraction("disc_removed",{brand:disc.brand,mold:disc.mold,zone:getZoneId(disc)},"Min Bag - Disc Removed"),announce(`${t.removedFromBag}: ${disc.mold}`))},createDiscElement=disc=>{const item=document.createElement("div");item.className="min-bag__disc",item.dataset.discInstance=disc.instanceId;const copy=document.createElement("div"),name=document.createElement("span");name.className="min-bag__disc-name",name.textContent=disc.mold;const meta=document.createElement("span");if(meta.className="min-bag__disc-meta",meta.textContent=`${disc.brand} - ${disc.speed}/${disc.glide}/${disc.turn}/${disc.fade}`,copy.append(name,meta),disc.slotOverride){const manual=document.createElement("span");manual.className="min-bag__manual-slot",manual.textContent=t.manualSlot,copy.append(manual)}const actions=document.createElement("div");actions.className="min-bag__disc-actions";const editButton=document.createElement("button");editButton.type="button",editButton.className="min-bag__disc-edit",editButton.textContent=t.changeSlot,editButton.dataset.editSlot=disc.instanceId,editButton.setAttribute("aria-label",`${t.changeSlot}: ${disc.mold}`);const removeButton=document.createElement("button");return removeButton.type="button",removeButton.className="min-bag__remove",removeButton.textContent="\xD7",removeButton.dataset.removeDisc=disc.instanceId,removeButton.setAttribute("aria-label",`${t.remove} ${disc.mold}`),actions.append(editButton,removeButton),item.append(copy,actions),item},openSlotEditor=(item,disc)=>{if(!item||!disc)return;const existing=item.querySelector("[data-slot-editor]");if(existing){existing.remove();return}root.querySelectorAll("[data-slot-editor]").forEach(editor2=>editor2.remove());const zoneId=getZoneId(disc),[currentCategory,currentStability]=zoneId.split("_"),editor=document.createElement("div");editor.className="min-bag__slot-editor",editor.dataset.slotEditor=disc.instanceId;const categoryField=document.createElement("label");categoryField.className="min-bag__slot-editor-field";const categoryLabel=document.createElement("span");categoryLabel.className="min-bag__label",categoryLabel.textContent=t.slotCategory;const categorySelect=document.createElement("select");categorySelect.dataset.slotCategory="",CATEGORY_CONFIG.forEach(category=>{const option=document.createElement("option");option.value=category.id,option.textContent=t[category.labelKey],option.selected=category.id===currentCategory,categorySelect.append(option)}),categoryField.append(categoryLabel,categorySelect);const stabilityField=document.createElement("label");stabilityField.className="min-bag__slot-editor-field";const stabilityLabel=document.createElement("span");stabilityLabel.className="min-bag__label",stabilityLabel.textContent=t.slotStability;const stabilitySelect=document.createElement("select");stabilitySelect.dataset.slotStability="",STABILITY_CONFIG.forEach(stability=>{const option=document.createElement("option");option.value=stability.id,option.textContent=t[stability.labelKey],option.selected=stability.id===currentStability,stabilitySelect.append(option)}),stabilityField.append(stabilityLabel,stabilitySelect);const editorActions=document.createElement("div");editorActions.className="min-bag__slot-editor-actions";const saveButton=document.createElement("button");saveButton.type="button",saveButton.className="min-bag__button min-bag__button--primary",saveButton.textContent=t.saveSlot,saveButton.dataset.saveSlot=disc.instanceId;const autoButton=document.createElement("button");
1autoButton.type="button",autoButton.className="min-bag__button min-bag__button--secondary",autoButton.textContent=t.autoSlot,autoButton.dataset.autoSlot=disc.instanceId;const cancelButton=document.createElement("button");cancelButton.type="button",cancelButton.className="min-bag__button min-bag__button--secondary",cancelButton.textContent=t.cancel,cancelButton.dataset.cancelSlot="",editorActions.append(saveButton,autoButton,cancelButton),editor.append(categoryField,stabilityField,editorActions),item.append(editor)},setDiscSlot=(instanceId,zoneId)=>{const disc=bag.find(item=>item.instanceId===instanceId);if(!disc)return;const previousZone=getZoneId(disc);disc.slotOverride=ZONE_IDS.includes(zoneId)?zoneId:"";const nextZone=getZoneId(disc);activeCategory=nextZone.split("_")[0]||activeCategory,saveBag(),renderAll(),trackBagUpdated(),trackInteraction("slot_changed",{brand:disc.brand,mold:disc.mold,previous_zone:previousZone,zone:nextZone,mode:disc.slotOverride?"manual":"automatic"},"Min Bag - Slot Changed")},getRecommendationZone=candidate=>{if(!candidate||!candidate.flight)return"";const stability=normalizeStabilityId(candidate.stability)||classifyStability(candidate.flight.turn,candidate.flight.fade);return`${classifyCategory(candidate.flight.speed)}_${stability}`},distanceTargets={short:{distance:11,fairway:7,midrange:4.5,putter:2.5},medium:{distance:11.5,fairway:8.5,midrange:5,putter:3},long:{distance:13,fairway:9.5,midrange:5.5,putter:3}},recommendationChoices=(recommendation,zoneId)=>{const curated=Array.isArray(curatedRecommendations[zoneId])?curatedRecommendations[zoneId]:[],manualChoices=[],autoCandidates=[],seenProducts=new Set,seenModels=new Set;let order=0;const productKey=candidate=>candidate?normalizeText(candidate.handle||`${candidate.model||""}|${candidate.plastic||""}`):"",addCurated=candidate=>{if(!candidate||!candidate.model)return;const key=productKey(candidate);!key||seenProducts.has(key)||(seenProducts.add(key),seenModels.add(normalizeText(candidate.model)),manualChoices.push(candidate))},addAutomatic=(candidate,priority,forcedZone="")=>{if(!candidate||!candidate.model||(forcedZone||getRecommendationZone(candidate))!==zoneId)return;const modelKey=normalizeText(candidate.model),key=productKey(candidate);!key||seenProducts.has(key)||seenModels.has(modelKey)||(seenProducts.add(key),seenModels.add(modelKey),autoCandidates.push({candidate,priority,order:order++}))};curated.forEach(addCurated),addAutomatic(recommendation,0,zoneId),recommendation&&recommendation.alternative&&addAutomatic(recommendation.alternative,1,zoneId),FALLBACK_EXTRA_CATALOG.forEach(candidate=>addAutomatic(candidate,2)),recommendationCatalog.forEach(candidate=>addAutomatic(candidate,3));const categoryId=String(zoneId||"").split("_")[0],target=distanceTargets[distanceProfile]&&distanceTargets[distanceProfile][categoryId];return autoCandidates.sort((a,b)=>{if(target!==void 0){const aSpeed=Number(a.candidate.flight&&a.candidate.flight.speed),bSpeed=Number(b.candidate.flight&&b.candidate.flight.speed),aDistance=Number.isFinite(aSpeed)?Math.abs(aSpeed-target):99,bDistance=Number.isFinite(bSpeed)?Math.abs(bSpeed-target):99;if(aDistance!==bDistance)return aDistance-bDistance}return a.priority!==b.priority?a.priority-b.priority:a.order-b.order}),[...manualChoices,...autoCandidates.map(entry=>entry.candidate)].slice(0,maxRecommendations)},hasExactLatitudeMatch=zoneDiscs=>zoneDiscs.some(disc=>normalizeText(disc.brand).replace(/\u00b0/g,"").includes("latitude 64")),createFlight=recommendation=>{if(!showFlightNumbers||!recommendation||!recommendation.flight)return null;const values=[recommendation.flight.speed,recommendation.flight.glide,recommendation.flight.turn,recommendation.flight.fade];if(values.every(value=>value==null||value===""))return null;const flight=document.createElement("div");return flight.className="min-bag__flight",values.forEach(value=>{const span=document.createElement("span");span.textContent=value==null?"-":String(value),flight.append(span)}),flight},getShopRoot=()=>window.Shopify&&window.Shopify.routes&&window.Shopify.routes.root?window.Shopify.routes.root:"/",currency=root.dataset.currency||"USD",storefrontLocale=root.dataset.locale||document.documentElement.lang||"en",formatMoney=cents=>{const amount=Number(cents);if(!Number.isFinite(amount))return"";try{return new Intl.NumberFormat(storefrontLocale,{style:"currency",currency,minimumFractionDigits:2,maximumFractionDigits:2}).format(amount/100)}catch{return`${(amount/100).toFixed(2)} ${currency}`}},normalizeImageUrl=value=>value?typeof value=="string"?value:value.src||value.url||"":"",hydrateRecommendation=async recommendation=>{if(!recommendation||recommendation.loaded!==!1||!recommendation.handle)return recommendation;if(recommendation.loadingPromise)return recommendation.loadingPromise;const productUrl=`${getShopRoot()}products/${encodeURIComponent(recommendation.handle)}.js`;return recommendation.loadingPromise=window.fetch(productUrl,{headers:{Accept:"application/json"}}).then(response=>{if(!response.ok)throw new Error(t.recommendationUnavailable);return response.json()}).then(product=>{const productImage=normalizeImageUrl(product.featured_image)||(Array.isArray(product.images)?normalizeImageUrl(product.images[0]):""),variants=(Array.isArray(product.variants)?product.variants:[]).filter(variant=>variant&&variant.available).map(variant=>({id:variant.id,title:String(variant.title||t.standard).replace(/ \/ /g," - "),priceDisplay:formatMoney(variant.price),image:normalizeImageUrl(variant.featured_image)||normalizeImageUrl(variant.featured_media&&variant.featured_media.preview_image)||productImage}));return recommendation.productTitle=product.title||recommendation.model,recommendation.url=`${getShopRoot()}products/${encodeURIComponent(product.handle||recommendation.handle)}`,recommendation.image=productImage,recommendation.priceDisplay=product.price_varies?`${formatMoney(product.price_min)} - ${formatMoney(product.price_max)}`:formatMoney(product.price),recommendation.available=variants.length>0,recommendation.variants=variants,recommendation.loaded=!0,recommendation.loadingPromise=null,recommendation}).catch(error=>
1{throw recommendation.loadingPromise=null,error}),recommendation.loadingPromise},renderRecommendationBody=(card,recommendation)=>{const body=card.querySelector("[data-recommendation-body]");if(!body)return;if(body.classList.remove("is-loading"),body.replaceChildren(),card.dataset.selectedVariantId="",card.dataset.selectedVariantTitle="",card.dataset.selectedModel=recommendation&&recommendation.model?recommendation.model:"",card.dataset.selectedPlastic=recommendation&&recommendation.plastic?recommendation.plastic:"",card.dataset.selectedSource=recommendation&&recommendation.source?recommendation.source:"fallback",!recommendation){const unavailable=document.createElement("strong");unavailable.className="min-bag__recommendation-title",unavailable.textContent=t.recommendationUnavailable,body.append(unavailable);return}const media=document.createElement("div");media.className="min-bag__recommendation-media";const imageWrap=document.createElement("a");if(imageWrap.className="min-bag__recommendation-image-wrap",imageWrap.href=recommendation.url||"#",imageWrap.setAttribute("aria-label",recommendation.model),recommendation.image){const image=document.createElement("img");image.className="min-bag__recommendation-image",image.src=recommendation.image,image.alt=recommendation.productTitle||recommendation.model,image.loading="lazy",image.width=156,image.height=156,image.dataset.recommendationImage="",imageWrap.append(image)}const info=document.createElement("div"),title=document.createElement("h4");title.className="min-bag__recommendation-title";const titleLink=document.createElement("a");titleLink.href=recommendation.url||"#",titleLink.textContent=recommendation.model,title.append(titleLink);const meta=document.createElement("div");meta.className="min-bag__recommendation-meta",meta.textContent=`Latitude 64\xB0 - ${recommendation.plastic}`;const price=document.createElement("div");price.className="min-bag__recommendation-price",price.dataset.recommendationPrice="",price.textContent=recommendation.priceDisplay||"",info.append(title,meta,price),media.append(imageWrap,info),body.append(media);const flight=createFlight(recommendation);flight&&body.append(flight);const variants=Array.isArray(recommendation.variants)?recommendation.variants:[];if(variants.length>1){const wrap=document.createElement("div");wrap.className="min-bag__variant-wrap";const selectLabel=document.createElement("span");selectLabel.className="min-bag__variant-label",selectLabel.textContent=t.colorWeight;const select=document.createElement("select");select.className="min-bag__variant-select",select.dataset.recommendationVariant="true",select.setAttribute("aria-label",t.colorWeight);const placeholder=document.createElement("option");placeholder.value="",placeholder.textContent=t.chooseColorWeight||t.colorWeight,select.append(placeholder),variants.forEac
1h(variant=>{const option=document.createElement("option");option.value=String(variant.id),option.textContent=variant.title||t.standard,option.dataset.image=variant.image||"",option.dataset.priceDisplay=variant.priceDisplay||"",select.append(option)});const icon=document.createElement("span");icon.className="min-bag__variant-icon",icon.setAttribute("aria-hidden","true"),icon.textContent="\u2304",wrap.append(selectLabel,select,icon),body.append(wrap)}else variants.length===1&&(card.dataset.selectedVariantId=String(variants[0].id),card.dataset.selectedVariantTitle=variants[0].title||"");const actions=document.createElement("div");actions.className="min-bag__recommendation-actions";const productLink=document.createElement("a");productLink.className="min-bag__product-link",productLink.href=recommendation.url||"#",productLink.textContent=t.viewProduct;const addButton=document.createElement("button");addButton.type="button",addButton.className="min-bag__button min-bag__button--primary",addButton.dataset.addRecommendation="true",addButton.textContent=recommendation.available?t.addToCart:t.soldOut,addButton.disabled=!recommendation.available||variants.length===0||variants.length>1,actions.append(productLink,addButton),body.append(actions)},createRecommendationCard=(zoneId,zoneDiscs)=>{const recommendation=recommendations[zoneId],choices=recommendationChoices(recommendation,zoneId),card=document.createElement("div");card.className="min-bag__recommendation",card.dataset.recommendationCard=zoneId,card.dataset.recommendationIndex="0";const label=document.createElement("span");label.className="min-bag__recommendation-label",zoneDiscs.length===0?(card.classList.add("is-gap"),label.textContent=t.gapFound):hasExactLatitudeMatch(zoneDiscs,recommendation)?(card.classList.add("is-match"),label.textContent=t.lat64Match):(card.classList.add("is-alternative"),label.textContent=t.lat64Alternative),card.append(label);const initialChoice=choices[0]||recommendation;if(!initialChoice){const unavailable=document.createElement("strong");return unavailable.className="min-bag__recommendation-title",unavailable.textContent=t.recommendationUnavailable,card.append(unavailable),card}if(choices.length>1){const picker=document.createElement("div");picker.className="min-bag__recommendation-picker";const pickerLabel=document.createElement("span");pickerLabel.className="min-bag__recommendation-picker-label",pickerLabel.textContent=t.recommendationDisc;const select=document.createElement("select");select.className="min-bag__recommendation-select",select.dataset.recommendationChoice=zoneId,select.setAttribute("aria-label",t.recommendationDisc),choices.forEach((choice,index)=>{const option=document.createElement("option");option.value=String(index),option.textContent=[choice.model,choice.plastic].filter(Boolean).join(" - "),select.append(option)});const icon=document.createElement("span");icon.className="min-bag__recommendation-picker-icon",icon.setAttribute("aria-hidden","true"),icon.textContent="\u2304",picker.append(pickerLabel,select,icon),card.append(picker)}const body=document.createElement("div");return body.className="min-bag__recommendation-body",body.dataset.recommendationBody="",card.append(body),renderRecommendationBody(card,initialChoice),initialChoice.loaded===!1&&window.requestAnimationFrame(()=>{hydrateRecommendation(initialChoice).then(()=>{card.isConnected&&Number(card.dataset.recommendationIndex||"0")===0&&renderRecommendationBody(card,initialChoice)}).catch(()=>{})}),card},renderMatrix=()=>{const grouped=getGroupedBag();matrixEl.replaceChildren(),CATEGORY_CONFIG.forEach(category=>{const row=document.createElement("section");row.className="min-bag__row",row.dataset.categoryRow=category.id,category.id===activeCategory&&row.classList.add("is-mobile-active");const rowHead=document.createElement("div");rowHead.className="min-bag__row-head";const rowTitle=document.createElement("h3");rowTitle.className="min-bag__row-title",rowTitle.textContent=t[category.labelKey];const range=document.createElement("span");range.className="min-bag__row-range",range.textContent=`${t.speed} ${category.range}`,rowHead.append(rowTitle,range);const cells=document.createElement("div");cells.className="min-bag__cells",STABILITY_CONFIG.forEach(stability=>{const zoneId=`${category.id}_${stability.id}`,zoneDiscs=grouped[zoneId]||[],cell=document.createElement("article");cell.className="min-bag__cell",cell.dataset.zoneId=zoneId;const cellHead=document.createElement("div");cellHead.className="min-bag__cell-head";const stabilityLabel=document.createElement("span");stabilityLabel.className="min-bag__stability",stabilityLabel.textContent=t[stability.labelKey];const count=document.createElement("span");count.className="min-bag__count",count.textContent=String(zoneDiscs.length),cellHead.append(stabilityLabel,count),cell.a
1ppend(cellHead);const owned=document.createElement("div");owned.className="min-bag__owned";const ownedLabel=document.createElement("span");if(ownedLabel.className="min-bag__owned-label",ownedLabel.textContent=t.yourDiscs,owned.append(ownedLabel),zoneDiscs.length){const discList=document.createElement("div");discList.className="min-bag__disc-list",zoneDiscs.forEach(disc=>discList.append(createDiscElement(disc))),owned.append(discList)}else{const empty=document.createElement("div");empty.className="min-bag__owned-empty",empty.textContent=t.noDiscAdded,owned.append(empty)}cell.append(owned,createRecommendationCard(zoneId,zoneDiscs)),cells.append(cell)}),row.append(rowHead,cells),matrixEl.append(row)})},createSummaryLine=disc=>{const line=document.createElement("div");line.className="min-bag__summary-line";const zoneId=getZoneId(disc),[categoryId,stabilityId]=zoneId.split("_"),stabilityConfig=STABILITY_CONFIG.find(item=>item.id===stabilityId),badge=document.createElement("span");badge.className="min-bag__summary-stability",badge.textContent=stabilityConfig?stabilityConfig.short:"",badge.title=stabilityConfig?t[stabilityConfig.labelKey]:"";const copy=document.createElement("button");copy.type="button",copy.className="min-bag__summary-copy",copy.dataset.jumpZone=zoneId,copy.setAttribute("aria-label",`${disc.mold}, ${t[stabilityConfig?stabilityConfig.labelKey:"neutral"]}`);const name=document.createElement("span");name.className="min-bag__summary-name",name.textContent=disc.mold;const meta=document.createElement("span");meta.className="min-bag__summary-meta",meta.textContent=`${disc.brand} - ${disc.speed}/${disc.glide}/${disc.turn}/${disc.fade}`,copy.append(name,meta);const removeButton=document.createElement("button");return removeButton.type="button",removeButton.className="min-bag__remove",removeButton.textContent="\xD7",removeButton.dataset.removeDisc=disc.instanceId,removeButton.setAttribute("aria-label",`${t.remove} ${disc.mold}`),line.append(badge,copy,removeButton),line},renderBagList=target=>{if(target){if(target.replaceChildren(),!bag.length){const empty=document.createElement("div");empty.className="min-bag__summary-empty",empty.textContent=t.emptyBag,target.append(empty);return}CATEGORY_CONFIG.forEach(category=>{const categoryDiscs=bag.filter(disc=>getZoneId(disc).split("_")[0]===category.id),group=document.createElement("section");group.className="min-bag__summary-group";const head=document.createElement("div");head.className="min-bag__summary-group-head";const title=document.createElement("span");title.className="min-bag__summary-group-title",title.textContent=t[category.labelKey];const count=document.createElement("span");if(count.className="min-bag__summary-group-count",count.textContent=String(categoryDiscs.length),head.append(title,count),group.append(head),categoryDiscs.length)categoryDiscs.forEach(disc=>group.append(createSummaryLine(disc)));else{const empty=document.createElement("div");empty.className="min-bag__owned-empty",empty.textContent=t.noDiscsCategory,group.append(empty)}target.append(group)})}},renderAll=()=>{renderMatrix(),renderBagList(desktopBagList),renderBagList(sheetBagList),updateCounts(),applyCategoryState(!1),observeRecommendationCards()},addDisc=disc=>{const sanitized=sanitizeDisc({...disc,instanceId:createInstanceId()});sanitized&&(activeCategory=getZoneId(sanitized).split("_")[0]||activeCategory,bag.push(sanitized),saveBag(),renderAll(),trackBagUpdated(),trackInteraction("disc_added",{brand:sanitized.brand,mold:sanitized.mold,zone:getZoneId(sanitized)},"Min Bag - Disc Added"),announce(`${t.addedToBag}: ${sanitized.mold}`))},closeSearchResults=()=>{searchMatches=[],activeResultIndex=-1,resultsEl.hidden=!0,resultsEl.replaceChildren(),searchInput.setAttribute("aria-expanded","false"),searchInput.removeAttribute("aria-activedescendant")},setActiveResult=index=>{const resultButtons=Array.from(resultsEl.querySelectorAll("[data-result-index]"));if(!resultButtons.length)return;activeResultIndex=Math.max(0,Math.min(index,resultButtons.length-1)),resultButtons.forEach((button,buttonIndex)=>{button.classList.toggle("is-active",buttonIndex===activeResultIndex)});const activeButton=resultButtons[activeResultIndex];activeButton&&(searchInput.setAttribute("aria-activedescendant",activeButton.id
1),activeButton.scrollIntoView({block:"nearest"}))},renderSearchResults=()=>{resultsEl.replaceChildren(),activeResultIndex=-1;const rawQuery=searchInput.value.trim();if(searchMatches.length)searchMatches.forEach((disc,index)=>{const button=document.createElement("button");button.type="button",button.className="min-bag__result",button.id=`${root.id}-Result-${index}`,button.dataset.resultIndex=String(index),button.setAttribute("role","option");const copy=document.createElement("span"),name=document.createElement("span");name.className="min-bag__result-name",name.textContent=disc.mold;const meta=document.createElement("span");meta.className="min-bag__result-meta",meta.textContent=disc.brand;const flight=document.createElement("span");flight.className="min-bag__result-flight",flight.textContent=`${disc.speed}/${disc.glide}/${disc.turn}/${disc.fade}`,copy.append(name,meta),button.append(copy,flight),resultsEl.append(button)});else{const empty=document.createElement("div");empty.className="min-bag__result",empty.textContent=t.noResults,resultsEl.append(empty)}if(rawQuery){const manualButton=document.createElement("button");manualButton.type="button",manualButton.className="min-bag__result min-bag__result--manual",manualButton.dataset.openManualSearch="true";const copy=document.createElement("span"),name=document.createElement("span");name.className="min-bag__result-name",name.textContent=t.addManually;const meta=document.createElement("span");meta.className="min-bag__result-meta",meta.textContent=rawQuery,copy.append(name,meta),manualButton.append(copy),resultsEl.append(manualButton)}resultsEl.hidden=!1,searchInput.setAttribute("aria-expanded","true")},updateSearch=()=>{const query=searchInput.value.trim();if(!query){closeSearchResults();return}searchMatches=DISC_DATABASE.map(disc=>({disc,score:getSearchScore(disc,query)})).filter(item=>item.score>0).sort((a,b)=>b.score-a.score||a.disc.mold.localeCompare(b.disc.mold)).slice(0,12).map(item=>item.disc),renderSearchResults()},updateRecommendationVariant=select=>{const card=select.closest("[data-recommendation-card]");if(!card)return;const option=select.options[select.selectedIndex],addButton=card.querySelector("[data-add-recommendation]"),image=card.querySelector("[data-recommendation-image]"),price=card.querySelector("[data-recommendation-price]");card.dataset.selectedVariantId=option&&option.value?option.value:"",card.dataset.selectedVariantTitle=option&&option.value?option.textContent:"",addButton&&(addButton.disabled=!option||!option.value),option&&option.value&&option.dataset.image&&image&&(image.src=option.dataset.image),option&&option.value&&option.dataset.priceDisplay&&price&&(price.textContent=option.dataset.priceDisplay),option&&option.value&&trackInteraction("variant_selected",{zone:card.dataset.recommendationCard||"",model:card.dataset.selectedModel||"",plastic:card.dataset.selectedPlastic||"",source:card.dataset.selectedSource||"fallback",position:Number(card.dataset.recommendationIndex||"0")+1,variant_id:option.value,variant_title:option.textContent||""},"Min Bag - Variant Selected")},updateRecommendationChoice=async select=>{const card=select.closest("[data-recommendation-card]");if(!card)return;const zoneId=card.dataset.recommendationCard,set=recommendations[zoneId],choices=recommendationChoices(set,zoneId),index=Number(select.value),choice=Number.isInteger(index)?choices[index]:null;if(!choice)return;card.dataset.recommendationIndex=String(index),card.dataset.selectedVariantId="",card.dataset.selectedVariantTitle="",card.dataset.selectedModel=choice.model||"",card.dataset.selectedPlastic=choice.plastic||"",card.dataset.selectedSource=choice.source||"fallback",trackInteraction("recommendation_changed",{zone:zoneId,model:choice.model||"",plastic:choice.plastic||"",source:choice.source||"fallback",position:index+1},"Min Bag - Recommendation Changed");const body=card.querySelector("[data-recommendation-body]");if(choice.loaded===!1&&body){body.replaceChildren(),body.classList.add("is-loading"),body.textContent=t.loadingRecommendation,select.disabled=!0;try{await hydrateRecommendation(choice)}catch(error){body.classList.remove("is-loading"),body.textContent=t.recommendationUnavailable,announce(error.message||t.recommendationUnavailable),select.disabled=!1;return}select.disabled=!1}Number(card.dataset.recommendationIndex)===index&&renderRecommendationBody(card,choice)},addRecommendationToCart=async button=>{const card=button.closest("[data-recommendation-card]");if(!card)return;const zoneId=card.dataset.recommendationCard,set=recommendations[zoneId],choices=recommendationChoices(set,zoneId),choiceIndex=Number(card.dataset.recommendationIndex||"0"),recommendation=ch
1oices[choiceIndex]||choices[0],variantId=card.dataset.selectedVariantId;if(!recommendation||!variantId)return;const originalText=button.textContent;button.disabled=!0,button.textContent=t.adding;const rootUrl=getShopRoot();try{const response=await window.fetch(`${rootUrl}cart/add.js`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:[{id:Number(variantId),quantity:1}]})});if(!response.ok){const payload=await response.json().catch(()=>({}));throw new Error(payload.description||payload.message||t.cartError)}let cart=null;try{const cartResponse=await window.fetch(`${rootUrl}cart.js`,{headers:{Accept:"application/json"}});cartResponse.ok&&(cart=await cartResponse.json())}catch{}const items=[{id:Number(variantId),quantity:1}];cart&&document.dispatchEvent(new CustomEvent("cart:updated",{detail:{cart}})),document.dispatchEvent(new CustomEvent("cart:refresh")),document.dispatchEvent(new CustomEvent("ajaxProduct:added",{detail:{items,cart}})),document.dispatchEvent(new CustomEvent("product:added",{detail:{items,cart}})),button.textContent=t.added,trackInteraction("recommendation_added_to_cart",{zone:zoneId,model:recommendation.model||"",plastic:recommendation.plastic||"",source:recommendation.source||"fallback",position:Number(card.dataset.recommendationIndex||"0")+1,variant_id:String(variantId),variant_title:card.dataset.selectedVariantTitle||""},"Min Bag - Recommendation Added to Cart"),announce(`${t.addedToCart}: ${recommendation.model}`),window.setTimeout(()=>{button.disabled=!1,button.textContent=originalText},1600)}catch(error){button.textContent=t.cartError,announce(error.message||t.cartError),window.setTimeout(()=>{button.disabled=!1,button.textContent=originalText},2200)}},updateCustomPreview=()=>{if(!customForm||!customPreview)return;const formData=new FormData(customForm),speed=Number(formData.get("speed")),glide=Number(formData.get("glide")),turn=Number(formData.get("turn")),fade=Number(formData.get("fade"));if(![speed,glide,turn,fade].every(Number.isFinite)||!formData.get("speed")||!formData.get("glide")||formData.get("turn")===""||formData.get("fade")===""){customPreview.hidden=!0,customPreview.textContent="";return}const category=classifyCategory(speed),stability=classifyStability(turn,fade);customPreview.textContent=`${t.manualPreview}: ${t[category]} \xB7 ${t[stability]} \xB7 ${speed}/${glide}/${turn}/${fade}`,customPreview.hidden=!1},openCustomForm=(prefillQuery="")=>{if(!customForm||customForm.hidden===!1)return;if(previousCustomFocus=document.activeElement,prefillQuery){const prefill=inferManualPrefill(prefillQuery);customBrandInput&&prefill.brand&&(customBrandInput.value=prefill.brand),customMoldInput&&prefill.mold&&(customMoldInput.value=prefill.mold)}customForm.hidden=!1,customToggle.setAttribute("aria-expanded","true"),mobileMedia.matches&&(customBackdrop&&(customBackdrop.hidden=!1),document.documentElement.classList.add("min-bag-custom-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag-custom",paused:!0}}))),syncChatSuppression();const firstInput=customForm.querySelector("input");firstInput&&window.setTimeout(()=>firstInput.focus(),20)},closeCustomForm=(restoreFocus=!0)=>{!customForm||customForm.hidden||(customForm.hidden=!0,customToggle.setAttribute("aria-expanded","false"),customPreview&&(customPreview.hidden=!0,customPreview.textContent=""),customBackdrop&&(customBackdrop.hidden=!0),document.documentElement.classList.remove("min-bag-custom-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag-custom",paused:!1}})),syncChatSuppression(),restoreFocus&&previousCustomFocus&&typeof previousCustomFocus.focus=="function"&&previousCustomFocus.focus())},openSheet=()=>{if(!sheet||!sheet.hidden)return;previousFocus=document.activeElement,sheet.hidden=!1,document.documentElement.classList.add("min-bag-sheet-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag",paused:!0}})),syncChatSuppression();const closeButton=sheet.querySelector(".min-bag__sheet-close");closeButton&&closeButton.focus()},closeSheet=()=>{!sheet||sheet.hidden||(sheet.hidden=!0,document.documentElement.classList.remove("min-bag-sheet-open"),document.documentElement.classList.remove("min-bag-custom-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag",paused:!1}})),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag-custom",paused:!1}})),syncChatSuppression(),previousFocus&&typeof previousFocus.focus=="function"&&previousFocus.focus())};listen(searchInput,"input",updateSearch),listen(searchInput,"focus",()=>{searchInput.value.trim()&&updateSearch()}),listen(searchInput,"keydown",event=>{resultsEl.hidden&&["ArrowDown","ArrowUp"].includes(event.key)&&searchInput.value.trim()&&updateSearch(),event.key==="ArrowDown"?(event.preventDefault(),setActiveResult(activeResultIndex+1)):event.key==="ArrowUp"?(event.preventDefault(),setActiveResult(activeResultIndex<=0?searchMatches.length-1:activeResultIndex-1)):event.key==="Enter"&&activeResultIndex>=0&&searchMatches[activeResultIndex]?(event.preventDefault(),addDisc(searchMatches[activeResultIndex]),searchInput.value="",closeSearchResults()):event.key==="Escape"&&closeSearchResults()}),listen(resultsEl,"click",event=>{if(event.target.closest("[data-open-manual-search]")){const query=searchInput.value.trim();closeSearchResults(),openCustomForm(query),trackInteraction("manual_search_fallback",{query},"Min Bag - Manual Search Fallback");return}const button=event.target.closest("[data-result-index]");if(!button)return;const index=Number(button.dataset.resultIndex);!Number.isInteger(index)||!searchMatches[index]||(addDisc(searchMatches[index]),searchInput.value="",closeSearchResults())}),listen(document,"click",event=>
1{searchWrap&&!searchWrap.contains(event.target)&&closeSearchResults()}),listen(customToggle,"click",()=>{customForm.hidden?openCustomForm():closeCustomForm()}),customCancels.forEach(button=>listen(button,"click",()=>closeCustomForm())),listen(customBackdrop,"click",()=>closeCustomForm()),customFlightInputs.forEach(field=>listen(field,"change",updateCustomPreview)),listen(customForm,"submit",event=>{event.preventDefault();const formData=new FormData(customForm),disc=sanitizeDisc({brand:formData.get("brand"),mold:formData.get("mold"),speed:formData.get("speed"),glide:formData.get("glide"),turn:formData.get("turn"),fade:formData.get("fade")});disc&&(addDisc(disc),customForm.reset(),updateCustomPreview(),closeCustomForm(!1))}),listen(distanceSelect,"change",()=>{distanceProfile=["auto","short","medium","long"].includes(distanceSelect.value)?distanceSelect.value:"auto";try{window.localStorage.setItem(PROFILE_KEY,distanceProfile)}catch{}renderAll(),trackInteraction("throwing_distance_selected",{value:distanceProfile},"Min Bag - Throwing Distance Selected")}),listen(root,"change",event=>{const choiceSelect=event.target.closest("[data-recommendation-choice]");if(choiceSelect){updateRecommendationChoice(choiceSelect);return}const select=event.target.closest("[data-recommendation-variant]");select&&updateRecommendationVariant(select)}),listen(root,"click",event=>{const categoryTab=event.target.closest("[data-category-tab]");if(categoryTab){activeCategory=categoryTab.dataset.categoryTab||activeCategory,applyCategoryState(!0),trackInteraction("category_viewed",{category:activeCategory},"Min Bag - Category Viewed");return}const jumpButton=event.target.closest("[data-jump-zone]");if(jumpButton){const zoneId=jumpButton.dataset.jumpZone;sheet&&!sheet.hidden&&closeSheet(),window.setTimeout(()=>jumpToZone(zoneId),30);return}const editSlotButton=event.target.closest("[data-edit-slot]");if(editSlotButton){const disc=bag.find(item2=>item2.instanceId===editSlotButton.dataset.editSlot),item=editSlotButton.closest("[data-disc-instance]");disc&&item&&openSlotEditor(item,disc);return}const saveSlotButton=event.target.closest("[data-save-slot]");if(saveSlotButton){const editor=saveSlotButton.closest("[data-slot-editor]"),categorySelect=editor&&editor.querySelector("[data-slot-category]"),stabilitySelect=editor&&editor.querySelector("[data-slot-stability]");categorySelect&&stabilitySelect&&setDiscSlot(saveSlotButton.dataset.saveSlot,`${categorySelect.value}_${stabilitySelect.value}`);return}const autoSlotButton=event.target.closest("[data-auto-slot]");if(autoSlotButton){setDiscSlot(autoSlotButton.dataset.autoSlot,"");return}const cancelSlotButton=event.target.closest("[data-cancel-slot]");if(cancelSlotButton){const editor=cancelSlotButton.closest("[data-slot-editor]");editor&&editor.remove();return}const removeButton=event.target.closest("[data-remove-disc]");if(removeButton){removeDisc(removeButton.dataset.removeDisc);return}const addButton=event.target.closest("[data-add-recommendation]");if(addButton){addRecommendationToCart(addButton);return}if(event.target.closest("[data-open-bag-sheet]")){openSheet();return}event.target.closest("[data-close-bag-sheet]")&&closeSheet()}),listen(document,"keydown",event=>{if(event.key==="Escape"){if(customForm&&!customForm.hidden){closeCustomForm();return}sheet&&!sheet.hidden&&closeSheet()}}),listen(mobileMedia,"change",()=>{!mobileMedia.matches&&customBackdrop&&(customBackdrop.hidden=!0,document.documentElement.classList.remove("min-bag-custom-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag-custom",paused:!1}}))),applyCategoryState(!1),syncChatSuppression()}),listen(window,"storage",event=>{if(event.key===STORAGE_KEY){bag=loadBag(),renderAll();return}event.key===PROFILE_KEY&&(distanceProfile=["auto","short","medium","long"].includes(event.newValue)?event.newValue:"auto",distanceSelect&&(distanceSelect.value=distanceProfile),renderAll())});let observer=null;const trackOpenOnce=()=>{hasTrackedOpen||(hasTrackedOpen=!0,trackInteraction("opened",{initial_discs:bag.length},"Min Bag - Opened"))};"IntersectionObserver"in window?(observer=new IntersectionObserver(entries=>{sectionInView=entries.some(entry=>entry.isIntersecting),syncChatSuppression(),sectionInView&&trackOpenOnce()},{threshold:.01}),observer.observe(root)):(sectionInView=!0,syncChatSuppression(),trackOpenOnce()),root._minBagCleanup=()=>{observer&&observer.disconnect(),chatObserver&&chatObserver.disconnect(),recommendationViewObserver&&recommendationViewObserver.disconnect(),chatObserver=null,recommendationViewObserver=null,sectionInView=!1,document.body.classList.remove("l64-min-bag-chat-hidden"),restoreChatNodes(),document.documentElement.classList.remove("min-bag-sheet-open"),document.documentElement.classList.remove("min-bag-custom-open"),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag",paused:!1}})),window.dispatchEvent(new CustomEvent("lat64:sticky-atc:pause",{detail:{source:"min-bag-custom",paused:!1}}))},renderAll()},initAllMinBagSections=(scope=document)=>{scope.matches&&scope.matches("[data-min-bag]")&&initMinBag(scope),scope.querySelectorAll?.("[data-min-bag]").forEach(initMinBag)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAllMinBagSections(),{once:!0}):initAllMinBagSections(),document.addEventListener("shopify:section:load",event=>{initAllMinBagSections(event.target)}),document.addEventListener("shopify:section:unload",event=>{const roots=[];event.target.matches&&event.target.matches("[data-min-bag]")&&roots.push(event.target),event.target.querySelectorAll?.("[data-min-bag]").forEach(root=>
1roots.push(root)),roots.forEach(root=>{root._minBagController&&root._minBagController.abort(),root._minBagCleanup&&root._minBagCleanup()})})})()}catch(e){console.error(e)}})(),(function(){if(__sections__["product-recommendations"])try{(()=>{const rootSelector="[data-l64-discovery]",cardCache=new Map;function wakeDynamicImages(scope){if(scope){if(scope.querySelectorAll("[data-aos]").forEach(element=>{element.removeAttribute("data-aos-delay"),element.removeAttribute("data-aos-duration"),element.getAttribute("data-aos")==="image-fade-in"&&element.classList.add("aos-animate")}),scope.querySelectorAll("img.image-element, img.lazyload, img[data-src], img[data-srcset]").forEach(image=>{image.dataset.src&&!image.getAttribute("src")&&image.setAttribute("src",image.dataset.src),image.dataset.srcset&&!image.getAttribute("srcset")&&image.setAttribute("srcset",image.dataset.srcset),image.setAttribute("loading","eager"),image.style.opacity="1",image.style.animation="none",image.classList.remove("lazyload","lazyloading"),image.classList.add("lazyloaded")}),window.lazySizes&&window.lazySizes.loader&&typeof window.lazySizes.loader.unveil=="function"&&scope.querySelectorAll("img.image-element").forEach(image=>{try{window.lazySizes.loader.unveil(image)}catch{return}}),window.theme&&typeof window.theme.reinitProductGridItem=="function")try{window.theme.reinitProductGridItem(scope)}catch{return}requestAnimationFrame(()=>{scope.querySelectorAll("img.image-element").forEach(image=>{image.style.opacity="1"}),window.dispatchEvent(new Event("resize"))})}}function getVisibleTabs(root){return Array.from(root.querySelectorAll("[data-l64-tab]")).filter(button=>!button.hidden)}function activateTab(root,requestedTab,loadContent=!0){let button=root.querySelector(`[data-l64-tab="${requestedTab}"]`);if((!button||button.hidden)&&(button=getVisibleTabs(root)[0]),!button){root.hidden=!0;return}const tabName=button.dataset.l64Tab;root.querySelectorAll("[data-l64-tab]").forEach(tab=>{const active=tab===button;tab.setAttribute("aria-selected",active?"true":"false"),tab.tabIndex=active?0:-1}),root.querySelectorAll("[data-l64-panel]").forEach(panel=>{panel.hidden=panel.dataset.l64Panel!==tabName}),loadContent&&tabName==="recommended"&&loadRelated(root),tabName==="recently_viewed"&&wakeDynamicImages(root.querySelector('[data-l64-panel="recently_viewed"]'))}function hideTab(root,tabName){const button=root.querySelector(`[data-l64-tab="${tabName}"]`);if(!button)return;const wasActive=button.getAttribute("aria-selected")==="true";if(button.hidden=!0,wasActive){const fallback=getVisibleTabs(root)[0];fallback?activateTab(root,fallback.dataset.l64Tab):root.hidden=!0}}async function loadRelated(root){if(!root.querySelector('[data-l64-tab="recommended"]'))return;const state=root.dataset.l64RelatedState;if(state==="loading"||state==="loaded"||state==="empty")return;const panel=root.querySelector('[data-l64-panel="recommended"]'),url=root.dataset.relatedUrl;if(!(!panel||!url)){root.dataset.l64RelatedState="loading",panel.setAttribute("aria-busy","true");try{const response=await fetch(url,{credentials:"same-origin"});if(!response.ok)throw new Error(`Recommendations request failed: ${response.status}`);const text=await response.text(),source=new DOMParser().parseFromString(text,"text/html").querySelector("[data-l64-related-source]");if(!(source&&source.querySelector(".grid-product"))){root.dataset.l64RelatedState="empty",hideTab(root,"recommended");return}panel.innerHTML=source.innerHTML,wakeDynamicImages(panel),root.dataset.l64RelatedState="loaded"}catch{root.dataset.l64RelatedState="empty",hideTab(root,"recommended")}finally{panel.removeAttribute("aria-busy")}}}function getHandleFromCard(card){if(!card)return"";if(card.dataset.productHandle)return card.dataset.productHandle;const link=card.querySelector('a[href*="/products/"]');if(!link)return"";try{const match=new URL(link.href,window.location.origin).pathname.match(/\/products\/([^/?#]+)/);return match&&match[1]?decodeURIComponent(match[1]):""}catch{return""}}function findNativeRecentSource(root){const ownSource=root.querySelector("[data-l64-recent-source]");return ownSource&&ownSource.querySelector(".grid-product")?ownSource:Array.from(document.querySelectorAll('[id^="RecentlyViewed-"]')).find(source=>source!==ownSource&&source.querySelector(".grid-product"))||ownSource}async function fetchStyledCard(root,handle){if(!handle)return"";if(cardCache.has(handle))return cardCache.get(handle);const sectionId=root.dataset.sectionId;if(!sectionId)return"";const shopRoot=window.Shopify&&window.Shopify.routes&&window.Shopify.routes.root?window.Shopify.routes.root:"/",url=`${shopRoot.endsWith("/")?shopRoot:`${shopRoot}/`}products/${encodeURIComponent(handle)}?section_id=${encodeURIComponent(sectionId)}`;try{const response=await fetch(url,{credentials:"same-origin"});if(!response.ok)return"";const text=await response.text(),template=new DOMParser().parseFromString(text,"text/html").querySelector("template[data-l64-current-product-card-template]");if(!template)return"";let card=template.content?template.content.querySelector(".grid-product"):null;if(!card&&template.innerHTML){const holder=document.createElement("div");holder.innerHTML=template.innerHTML,card=holder.querySelector(".grid-product")}const html=card?card.outerHTML:"";return html&&cardCache.set(handle,html),html}catch{return""}}async function syncRecentlyViewed(root){const tab=root.querySelector('[data-l64-tab="recently_viewed"]'),panel=root.querySelector('[data-l64-panel="recently_viewed"]'),target=root.querySelector("[data-l64-recent-target]"),source=findNativeRecentSource(root);if(!tab||!panel||!target||!source)return;const cards=Array.from(source.querySelectorAll(".grid-product"));if(!cards.length)return;const limit=Math.max(1,Number.parseInt(root.dataset.recentLimit||"4",10)),entries=cards.slice(0,limit).map(card=>({handle:getHandleFromCard(card),fallback:card.outerHTML})),signature=entries.map(entry=>entry.handle||entry.fallback.length).join("|");if(target.dataset.l64RecentSignature===signature&&target.children.length){tab.hidden=!1;return}panel.setAttribute("aria-busy","true");try{const validCards=(await Promise.all(entries.map(async entry=>entry.handle&&await fetchStyledCard(root,entry.handle)||entry.fallback))).filter(
1Boolean);if(!validCards.length)return;target.innerHTML=validCards.join(""),target.dataset.l64RecentSignature=signature,wakeDynamicImages(target),tab.hidden=!1,root.dataset.defaultTab==="recently_viewed"&&!root.querySelector('[data-l64-tab][aria-selected="true"]')&&activateTab(root,"recently_viewed",!1)}finally{panel.removeAttribute("aria-busy")}}function setupRecentlyViewed(root){const tab=root.querySelector('[data-l64-tab="recently_viewed"]'),ownSource=root.querySelector("[data-l64-recent-source]");if(!tab||!ownSource)return;tab.hidden=!0,new MutationObserver(()=>{syncRecentlyViewed(root)}).observe(ownSource,{childList:!0,subtree:!0}),[250,750,1500,3e3].forEach(delay=>{window.setTimeout(()=>syncRecentlyViewed(root),delay)})}function init(root){if(!(!root||root.dataset.l64Initialized==="true")&&(root.dataset.l64Initialized="true",setupRecentlyViewed(root),root.addEventListener("click",event=>{const button=event.target.closest("[data-l64-tab]");!button||!root.contains(button)||activateTab(root,button.dataset.l64Tab)}),root.addEventListener("keydown",event=>{const current=event.target.closest("[data-l64-tab]");if(!current||!root.contains(current)||event.key!=="ArrowLeft"&&event.key!=="ArrowRight")return;const tabs=getVisibleTabs(root),index=tabs.indexOf(current);if(index<0)return;event.preventDefault();const direction=event.key==="ArrowRight"?1:-1,next=tabs[(index+direction+tabs.length)%tabs.length];next.focus(),activateTab(root,next.dataset.l64Tab)}),activateTab(root,root.dataset.defaultTab||"recommended",!1),root.querySelector('[data-l64-tab="recommended"]'))){const loadDeferredContent=()=>loadRelated(root);if("IntersectionObserver"in window){const observer=new IntersectionObserver(entries=>{entries.some(entry=>entry.isIntersecting)&&(observer.disconnect(),loadDeferredContent())},{rootMargin:"400px 0px"});observer.observe(root)}else loadDeferredContent()}}function initAll(scope=document){scope.matches&&scope.matches(rootSelector)&&init(scope),scope.querySelectorAll(rootSelector).forEach(init)}initAll(),document.addEventListener("shopify:section:load",event=>initAll(event.target))})()}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["shoppable-hero"]&&!Shopify.designMode))try{class KitShoppableHero extends HTMLElement{connectedCallback(){this.abortController=new AbortController;const signal=this.abortController.signal;window.theme&&window.theme.sections?this.initQuickShop():document.addEventListener("page:loaded",()=>this.initQuickShop(),{once:!0,signal}),this.querySelector("kit-popover")&&window.addEventListener("scroll",()=>{this.querySelectorAll("kit-popover:popover-open").forEach(p=>p.hidePopover())},{passive:!0,signal}),Shopify.designMode&&(document.addEventListener("shopify:section:load",event=>{event.target.contains(this)&&this.initQuickShop()},{signal}),this.addEventListener("shopify:block:select",event=>{this.initQuickShop();const btn=event.target.querySelector("button");btn&&btn.click()},{signal}),this.addEventListener("shopify:block:deselect",event=>{const popover=event.target.querySelector("kit-popover");popover&&popover.hidePopover?.()},{signal}))}disconnectedCallback(){this.abortController?.abort()}initQuickShop(){if(theme.settings.quickView){var sectionEl=this.closest('[id^="shopify-section-"]'),links=this.querySelectorAll(".shoppable-hero__popover-link[data-product-handle]");links.length&&links.forEach(link=>{if(link.dataset.shoppableHeroBound!=="true"){link.dataset.shoppableHeroBound="true";var handle=link.dataset.productHandle,productId=link.dataset.productId;if(document.getElementById("QuickShopModal-"+productId)){link.addEventListener("click",event=>{if(theme.config.bpSmall){event.stopImmediatePropagation();return}const popover=event.target.closest("kit-popover");popover&&popover.hidePopover?.()},!0);var hotspot=link.closest(".kit-shoppable-hero__hotspot");if(hotspot){var preloadOnce=function(){if(link.dataset.shoppableHeroPreloaded!=="true"&&!theme.config.bpSmall){var holder=document.getElementById("QuickShopHolder-"+handle);if(holder&&sectionEl){var holderSection=holder.closest('[id^="shopify-section-"]');if(holderSection&&holderSection!==sectionEl){var duplicate=sectionEl.querySelector("#QuickShopModal-"+productId);duplicate&&duplicate.remove()}}link.dataset.shoppableHeroPreloaded="true",link.classList.add("js-modal-open-quick-modal-"+productId),theme.preloadProductModal(handle,productId,link),hotspot.removeEventListener("mouseover",preloadOnce),hotspot.removeEventListener("focusin",preloadOnce)}};hotspot.addEventListener("mouseover",preloadOnce),hotspot.addEventListener("focusin",preloadOnce)}}}})}}}customElements.define("kit-shoppable-hero",KitShoppableHero)}catch(e){console.error(e)}})()})();
2//# sourceMappingURL=/cdn/shop/t/162/compiled_assets/scripts.js.map?v=164963675493398887951791477632

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.