1(()=>{"use strict";const config=JSON.parse(document.getElementById("kf-config").textContent),catalog=config.catalog,t=key=>config.strings[key]||"",root=document.getElementById("ez-vest-finder"),screen=document.getElementById("kf-screen");if(!root||root.dataset.ready)return;root.dataset.ready="true";const status=document.getElementById("kf-status"),state={country:config.country,step:-1,answers:{moves:[]},emailAccepted:!1,picks:{},cart:[]},esc=value=>String(value).replace(/[&<>"']/g,c=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[c]),unit=()=>state.country==="US"?"lb":"kg",capacity=vest=>(unit()==="lb"?{Lite:80,Pro:150,Max:300}:{Lite:36,Pro:68,Max:136})[vest],money=cents=>new Intl.NumberFormat(config.locale,{style:"currency",currency:config.currency}).format(cents/100),questions=[{key:"moves",title:t("how_will_you_use_your_vest"),help:t("select_all_that_apply_including_activities_you_d_l"),multi:!0,options:[["calisthenics",t("weighted_calisthenics"),t("pull_ups_dips_and_muscle_ups")],["strength",t("strength_training"),t("squats_lunges_and_resistance_workouts")],["conditioning",t("conditioning_and_general_fitness"),t("push_ups_burpees_and_crossfit_style_circuits")],["sports",t("sports_and_athletic_training"),t("strength_and_conditioning_for_your_sport")],["walks",t("walking_and_rucking"),t("long_walks_hiking_and_outdoor_adventures")]]},{key:"load",title:t("how_heavy_do_you_plan_to_go"),help:t("total_added_weight_across_the_whole_vest_including"),options:[]},{key:"priority",title:t("what_matters_most_to_you"),help:t("choose_your_main_priority"),options:[["value",t("lowest_price"),t("keep_the_setup_simple")],["comfort",t("padding_and_value"),t("a_balance_of_comfort_and_cost")],["premium",t("premium_build_and_quick_release"),t("easy_on_and_off_between_sets")]]},{key:"plates",title:t("what_plates_will_you_use"),help:t("your_plate_type_helps_us_match_your_accessories"),options:[["olympic",t("olympic_metal_plates"),"2-inch / 50 mm hole"],["bumper",t("olympic_bumper_plates"),"Thicker rubber plates with a 2-inch / 50 mm hole"],["standard",t("standard_plates"),"1-inch / 28 mm hole"],["none",t("i_don_t_have_any_plates"),t("help_me_choose_weights")],["gym","My gym\u2019s plates / not sure",t("i_ll_check_the_size_and_thickness")]]},{key:"stack",title:t("will_you_stack_several_plates_per_side"),help:t("think_about_heavy_sets_and_the_space_your_plates_t"),options:[["yes",t("yes_i_train_heavy_or_stack_several_plates"),t("extra_loading_room_would_be_useful")],["no",t("no_usually_one_plate_per_side"),""],["unsure",t("i_m_not_sure_yet"),""]]}];function optionsFor(q){if(q.key!=="load")return q.options;const values=unit()==="lb"?[80,150,300]:[36,68,136];return[["light",t("up_to")+values[0]+" "+unit(),""],["medium","Over "+values[0]+"\u2013"+values[1]+" "+unit(),""],["heavy","Over "+values[1]+"\u2013"+values[2]+" "+unit(),""],["unsure",t("i_m_not_sure_yet"),""]]}function recommended(){const a=state.answers,vest=a.load==="heavy"||a.priority==="premium"?"Max":a.load==="light"&&a.priority==="value"?"Lite":"Pro",xt=a.moves.includes("conditioning")||a.moves.includes("calisthenics"),extension=a.plates==="bumper"||a.stack==="yes"||a.load==="heavy",tier=vest==="Max"?"MAX":"PRO/LITE",bore=a.plates==="standard"?"1":a.plates==="gym"?null:"2";let why=vest==="Lite"?t("a_simple_entry_option_for_your_load_range_and_pric"):vest==="Max"?a.load==="heavy"?t("capacity_for_your_planned_load_with_a_quick_releas"):t("an_aluminum_frame_and_quick_release_buckle_match_y"):t("padding_and_versatility_with_room_to_progress");a.load==="unsure"&&vest==="Pro"&&(why=t("a_starting_suggestion_for_comfort_and_value_check_"));const list=[{key:"vest",handle:"kensui-ez-vest",name:"EZ-VEST "+vest,why,tag:t("your_vest"),variants:catalog["kensui-ez-vest"].variants.filter(v=>v.title.startsWith(vest+" ")),detail:"Rated capacity: "+capacity(vest)+" "+unit()+" total."}];if(xt&&list.push({key:"xt",handle:"ez-vest-xt-sleeves",name:t("xt_sleeves"),why:t("a_low_profile_option_for_floor_push_ups_burpees_an"),tag:t("optional_for_your_workouts"),variants:catalog["ez-vest-xt-sleeves"].variants.filter(v=>v.options.some(o=>o.name==="Model"&&o.value===tier)&&(!bore||v.options.some(o=>o.name==="Plates"&&o.value.startsWith(bore+'"')))),choose:!bore,detail
1:"For "+tier+" vest."}),extension&&list.push({key:"extension",handle:"ez-vest-max-bumper-plate-sleeve-pair",name:t("extension_sleeves"),why:a.plates==="bumper"?t("extra_loading_room_for_your_thicker_bumper_plates"):t("more_loading_room_for_heavy_sessions_and_multiple_"),tag:t("more_loading_room"),variants:catalog["ez-vest-max-bumper-plate-sleeve-pair"].variants.filter(v=>v.title.startsWith(tier+" (")&&(!bore||v.title.includes("("+bore+'"'))),choose:!bore,detail:t("sold_as_a_pair_adds_space_not_extra_weight_capacit")}),a.plates==="none"){const handle=unit()==="lb"?"versaplates":"versaplates-kg";list.push({key:"plates",handle,name:"VersaPlates \xB7 "+(unit()==="lb"?t("pounds"):t("kilograms")),why:t("complete_your_setup_with_a_pair_of_weights"),tag:t("your_weights"),variants:catalog[handle].variants.filter(v=>parseInt(v.title,10)*2<=capacity(vest)).sort((a2,b)=>parseInt(a2.title,10)-parseInt(b.title,10)),choose:!0,detail:t("choose_the_weight_of_each_plate_each_pair_contains")})}return a.moves.includes("walks")&&list.push({key:"padding",handle:"ez-vest-4-inch-padding",name:t("4_inch_leather_padding"),why:t("extra_padding_for_your_longer_walks_and_rucking_se"),tag:t("for_longer_sessions"),variants:catalog["ez-vest-4-inch-padding"].variants}),a.plates==="standard"&&!xt&&!(extension&&vest==="Max")&&list.push({key:"adapter",handle:"standard-ez-vest-adapter",name:t("standard_plate_adapter"),why:t("use_your_standard_plates_with_the_vest_s_regular_s"),tag:t("plate_compatibility"),variants:catalog["standard-ez-vest-adapter"].variants.filter(v=>v.title===(vest==="Max"?t("ez_vest_max"):"EZ-VEST Lite/Pro")),detail:t("for_the")+tier+t("vest_1_inch_plates")}),{vest,xt,extension,list}}function selected(p){return p.variants.find(v=>v.id===state.picks[p.key])||(!p.choose&&p.variants.length===1?p.variants[0]:null)}function photo(p,v){const product=catalog[p.handle];if(p.key==="extension"&&v?.title.startsWith("PRO")){const clean=product.images.find(src=>src.includes("ez-vest-extension-sleeve-pro"));if(clean)return clean}if(v?.image)return v.image;let marker="";return p.key==="vest"&&v&&(marker=v.title.startsWith("Lite")?"ez-v-lite":v.title.startsWith("Pro")?"ezv-pro":"ezv-max"),p.key==="plates"&&v&&(marker=v.title.startsWith("15")?"15-lb-stacked":v.title.startsWith("35")?"35-lb-stacked":"versa-"+parseInt(v.title,10)+unit()+".png"),p.key==="adapter"&&v&&(marker=v.title.includes("Max")?"adapter-ez-vest-max":"adapter-ez-vest-pro"),p.key==="xt"&&v&&(marker="xt-"+(v.title.startsWith("MAX")?"m":"p")+"-"+(v.title.includes('1"')?v.title.startsWith("MAX")?"1-in":"1in":"2in")),p.key==="extension"&&v&&v.title.startsWith("PRO")&&(marker="ez-vest-extension-sleeve-pro"),marker&&product.images.find(src=>src.includes(marker))||product.image}function variantLabel(p,v){return p.key==="plates"?parseInt(v.title,10)+" "+unit()+" each \xB7 "+parseInt(v.title,10)*2+" "+unit()+" pair"+(v.title.includes("Pre-order")?" \xB7 Pre-order":"")+" \u2014 "+money(v.price.amount):p.key==="vest"||p.key==="padding"?"":(p.key==="xt"?v.title.startsWith("MAX")?"MAX":"PRO/LITE":v.title.replace(/\(.*?\)/g,"").trim())+" \xB7 "+(v.title.includes('1"')?"1-inch / 28 mm":"2-inch / 50 mm")}function progress(label,now){return'<div class="kf-small">'+label+'</div><div class="kf-progress" role="progressbar" aria-label="Quiz progress" aria-valuenow="'+now+'" aria-valuemin="0" aria-valuemax="6"><span style="width:'+now/6*100+'%"></span></div>'}function productCard(p){const v=selected(p),added=v&&state.cart.some(item=>item.id===v.id),disabled=!v||!v.availability.available||added,price=v?money(v.price.amount):p.variants.length?"From "+money(Math.min(...p.variants.map(v2=>v2.price.amount))):"";return'<article class="kf-product" data-product="'+p.key+'"><div class="kf-photo"><img src="'+esc(photo(p,v))+'" alt="'+esc(p.name)+'" width="300" height="300" loading="lazy"></div><div class="kf-product-body"><div class="kf-label">'+p.tag+"</div><h3>"+esc(p.name)+'</h3><p class="kf-product-why">'+p.why+"</p>"+(p.detail?'<p class="kf-note">'+esc(p.detail)+"</p>":"")+(p.choose?'<label class="kf-select-label" for="variant-'+p.key+'">'+(p.key==="plates"?t("plate_weight"):t("plate_hole_size"))+'</label><select id="variant-'+p.key+'" data-pick="'+p.key+'"><option value="">Choose '+(p.key==="plates"?"a weight":t("your_plate_size"))+"</option>"+p.variants.map(option=>'<option value="'+esc(option.id)+'" '+(v?.id===option.id?"selected":"")+" "+(option.availability.available?"":"disabled")+">"+esc(variantLabel(p,option))+"</option>").join("")+"</select>":v&&variantLabel(p,v)?'<p class="kf-fit-label">'+esc(variantLabel(p,v))+"</p>":"")+(v?.title.includes("Pre-order")?'<p class="kf-preorder">'+t("pre_order_ships_in_2_3_weeks")+"</p>":"")+(p.variants.length?'<div class="kf-buy"><strong>'+price+'</strong><button type="button" class="kf-add" data-add="'+p.key+'" aria-label="'+(added?"Added "+p.name:"Add "+p.name+t("to_cart"))+'" '+(disabled?"disabled":"")+">"+(added?"\u2713 Added":v&&!v.availability.available?t("sold_out"):t("add_to_cart"))+"</button></div>":'<p class="kf-note">'+t("a_compatible_extension_for_this_vest_and_plate_siz")+"</p>")+'<a class="kf-details" href="'+esc(catalog[p.handle].url)+(v?"?variant="+encodeURIComponent(v.id.split("/").pop()):"")+('" target="_blank" rel="noopener">'+t("product_details")+"</a></div></article>")}function showResults(){if(!state.emailAccepted){state.step=5,render();return}const result=recommended();screen.innerHTML=progress(t("your_results"),6)+("<h2>"+t("your_training_setup")+'</h2><p class="kf-help">'+t("selected_around_your_workouts_plates_and_prioritie")+'</p><div class="kf-offer">
1'+t("your_10_ez_vest_code")+"<strong>")+esc(config.discount)+'</strong><a class="kf-discount-link" href="'+esc(config.root+"discount/"+config.discount+"?redirect="+encodeURIComponent(config.root+"cart"))+('">'+t("view_cart_amp_apply_10_off")+'</a></div><div class="kf-products">')+result.list.map(productCard).join("")+"</div>"+(result.xt&&result.extension?'<p class="kf-note kf-bottom-note">'+t("two_sleeve_setups_swap_to_xt_sleeves_for_low_profi")+"</p>":"")+(state.answers.plates==="gym"?'<p class="kf-note kf-bottom-note">'+t("check_your_gym_s_plate_hole_size_and_thickness_bef")+"</p>":"")+('<div class="kf-actions"><button class="kf-back" type="button" data-edit>'+t("edit_answers")+'</button><span class="kf-small">')+(unit()==="lb"?t("weights_shown_in_pounds"):t("weights_shown_in_kilograms"))+"</span></div>",screen.querySelector("[data-edit]").addEventListener("click",()=>{state.step=0,render()}),screen.querySelectorAll("[data-pick]").forEach(select=>select.addEventListener("change",()=>{state.picks[select.dataset.pick]=select.value,showResults(),screen.querySelector('[data-pick="'+select.dataset.pick+'"]').focus()})),screen.querySelectorAll("[data-add]").forEach(button=>button.addEventListener("click",()=>{const p=result.list.find(p2=>p2.key===button.dataset.add),v=selected(p);!state.emailAccepted||!v||!v.availability.available||state.cart.some(item=>item.id===v.id)||addProduct(button,p,v)}))}function renderEmail(){screen.innerHTML=progress(t("last_step_your_email"),5)+('<div class="kf-email"><div class="kf-label">'+t("your_setup_is_ready")+"</div><h2>"+t("unlock_your_results")+'</h2><p class="kf-help">'+t("enter_your_email_to_reveal_your_personalized_setup")+'</p><form id="kf-email-form" novalidate><label class="kf-select-label" for="kf-email-input">'+t("email_address")+'</label><input id="kf-email-input" name="email" type="email" autocomplete="email" inputmode="email" placeholder="[email protected]" required maxlength="254" aria-describedby="email-error"><p id="email-error" class="kf-error" role="alert"></p><button type="submit" class="kf-next kf-full">'+t("reveal_my_setup")+'</button></form><p class="kf-note">'+t("by_revealing_your_results_you_agree_to_receive_you")+'<a href="/policies/privacy-policy">'+t("privacy_policy")+'</a></p></div><div class="kf-actions"><button type="button" class="kf-back" data-back>'+t("back")+"</button></div>"),screen.querySelector("[data-back]").addEventListener("click",()=>{state.step=4,render()}),screen.querySelector("form").addEventListener("submit",async e=>{e.preventDefault();const input=screen.querySelector("#kf-email-input");if(input.value=input.value.trim(),!input.checkValidity()||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input.value)){input.setAttribute("aria-invalid","true"),screen.querySelector("#email-error").textContent=t("enter_a_valid_email_address_to_reveal_your_results"),input.focus();return}if(state.submitting)return;state.submitting=!0,screen.querySelector("[data-back]").disabled=!0;const button=screen.querySelector("[type=submit]");button.disabled=!0,button.textContent=t("saving_your_setup"),input.disabled=!0,screen.querySelector("#email-error").textContent="";try{await captureLead(input.value.toLowerCase()),state.emailAccepted=!0,state.step=6,render(),focusHeading()}catch{screen.querySelector("#email-error").textContent=t("we_couldn_t_save_your_email_please_check_your_conn"),button.disabled=!1,button.textContent=t("reveal_my_setup"),input.disabled=!1}finally{state.submitting=!1;const back=screen.querySelector("[data-back]");back&&(back.disabled=!1)}})}function render(){if(state.step===-1){showIntro();return}if(state.step===6){showResults();return}if(state.step===5){state.emailAccepted?(state.step=6,showResults()):renderEmail();return}const q=questions[state.step],selected2=q.multi?state.answers[q.key]||[]:[state.answers[q.key]];screen.innerHTML=progress("QUESTION "+(state.step+1)+" OF 5",state.step)+"<h2>"+q.title+'</h2><p class="kf-help">'+q.help+'</p><div class="kf-options">'+optionsFor(q).map(([value,title,sub])=>'<button type="button" class="kf-choice" data-value="'+value+'" aria-pressed="'+selected2.includes(value)+'"><span class="kf-marker '+(q.multi?"square":"")+'" aria-hidden="true">'+(selected2.includes(value)?"\u2713":"")+"</span><span><strong>"+title+"</strong>"+(sub?"<small>"+sub+"</small>":"")+"</span></button>
1").join("")+'</div><div class="kf-actions"><button type="button" class="kf-back" data-back '+(state.step===0?"disabled":"")+(">"+t("back")+'</button><button type="button" class="kf-next" data-next ')+(selected2.filter(Boolean).length?"":"disabled")+(">"+t("continue")+"</button></div>"),screen.querySelectorAll("[data-value]").forEach(button=>button.addEventListener("click",()=>{const value=button.dataset.value;state.answers[q.key]=q.multi?selected2.includes(value)?selected2.filter(v=>v!==value):[...selected2,value]:value,state.picks={},render(),screen.querySelector('[data-value="'+value+'"]').focus()})),screen.querySelector("[data-back]").addEventListener("click",()=>{state.step>0&&(state.step--,render())}),screen.querySelector("[data-next]").addEventListener("click",()=>{(q.multi?!state.answers[q.key]?.length:!state.answers[q.key])||(state.step++,render(),focusHeading())})}async function sendClient(path,data){const controller=new AbortController,timeout=setTimeout(()=>controller.abort(),15e3);try{if(!(await fetch("https://a.klaviyo.com/client/"+path+"/?company_id="+encodeURIComponent(config.siteId),{method:"POST",headers:{"Content-Type":"application/vnd.api+json",accept:"application/vnd.api+json",revision:"2026-07-15"},body:JSON.stringify({data}),signal:controller.signal,credentials:"omit"})).ok)throw new Error(t("lead_capture_unavailable"))}finally{clearTimeout(timeout)}}async function captureLead(email){state.pendingEmail!==email&&(state.pendingEmail=email,state.responseId=crypto.randomUUID(),state.subscribed=!1),state.subscribed||(await sendClient("subscriptions",{type:"subscription",attributes:{custom_source:"Native EZ-VEST quiz",profile:{data:{type:"profile",attributes:{email,subscriptions:{email:{marketing:{consent:"SUBSCRIBED"}}}}}}},relationships:{list:{data:{type:"list",id:config.listId}}}}),state.subscribed=!0);const result=recommended(),products=result.list.map((p,position)=>{const v=selected(p),item=catalog[p.handle];return{id:Number(item.id.split("/").pop()),name:p.name,url:location.origin+item.url,image_url:new URL(photo(p,v),location.origin).href,position,...v?{variant_id:Number(v.id.split("/").pop()),sku:v.sku,price:String(v.price.amount/100),price_with_currency:money(v.price.amount)}:{}}});await sendClient("events",{type:"event",attributes:{unique_id:state.responseId,metric:{data:{type:"metric",attributes:{name:"New Lead from: Vest quiz"}}},profile:{data:{type:"profile",attributes:{email,properties:{ez_vest_quiz_version:"native-v1",ez_vest_quiz_answers:{...state.answers},ez_vest_quiz_country:state.country,ez_vest_quiz_unit:unit(),ez_vest_quiz_vest:result.vest,ez_vest_quiz_discount:config.discount}}}},properties:{quiz_name:"Vest quiz",quiz_id:"6OH6L9",source:"product_recommendation_quiz",quiz_version:"native-v1",response_id:state.responseId,created_at:new Date().toISOString(),country:state.country,unit:unit(),answers:{...state.answers},discount_code:config.discount,products}}})}async function addProduct(button,p,v){if(!state.adding){state.adding=!0,button.disabled=!0,button.textContent=t("adding");try{const response=await fetch(config.root+"cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({items:[{id:Number(v.id.split("/").pop()),quantity:1}]}),credentials:"same-origin"}),data=await response.json();if(!response.ok)throw new Error(data.description||t("could_not_add_this_item_please_try_again"));state.cart.push({id:v.id}),showResults(),status.textContent=p.name+t("added_to_your_cart"),document.dispatchEvent(new CustomEvent("cart:updated",{detail:{source:"ez-vest-quiz"}}))}catch(error){status.textContent=error.message,button.disabled=!1,button.textContent=t("add_to_cart")}finally{state.adding=!1}}}function showIntro(){root.classList.add("kf-at-intro");const models=["Lite","Pro","Max"].map(name=>{const variant=catalog["kensui-ez-vest"].variants.find(v=>v.title.startsWith(name+" ")),image=photo({key:"vest",handle:"kensui-ez-vest"},variant);return'<figure class="kf-vest-model"><img src="'+esc(image)+'" alt="EZ-VEST '+name+'" width="300" height="300" loading="lazy"><figcaption>EZ-VEST <strong>'+name+"</strong></figcaption></figure>"}).join("");screen.innerHTML='<div class="kf-intro"><div class="kf-intro-copy"><h2>'+t("find_your_ez_vest_setup")+'</h2><p class="kf-help">'+t("from_your_first_weighted_walk_to_your_next_strengt")+'</p></div><div class="kf-vest-lineup">'+models+'</div><div class="kf-intro-action"><p class="kf-intro-meta">'+t("5_quick_questions_about_a_minute")+'</p><button type="button" class="kf-next" data-start>'+t("find_my_setup")+'</button><p class="kf-note">'+t("enter_your_email_at_the_end_to_reveal_your_results")+"</p></div></div>",screen.querySelector("[data-start]").addEventListener("click",()=>{root.classList.remove("kf-at-intro"),state.step=0,render(),focusHeading()})}function focusHeading(){const heading=screen.querySelector("h2");heading&&(heading.tabIndex=-1,heading.focus({preventScroll:!0}),root.scrollIntoView({behavior:matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth",block:"start"}))}render()})(); 2//# sourceMappingURL=/cdn/shop/t/66/assets/kensui-vest-quiz.js.map?v=132709342923660205181791566936
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.