PageSourceSearch

https://joinfightcamp.com/_nuxt/BoczABUE.js

js joinfightcamp.com collected 2026-09-24 09:51:26 UTC 16,457 bytes, 1 lines download raw bytes

1import{_ as R}from"./DfPdA-Jl.js";import{_ as I}from"./DEMqpmzW.js";import{d as y,c as p,o as d,k as e,F as L,A as k,a9 as O,e as x,b as f,z as w,l as P,m as M,B as v,Q as F,r as $,s as j,P as V,t as D,u as U}from"./CbHni8p8.js";import B from"./CWzD0OWc.js";import{u as z}from"./lpfcK98x.js";import"./CqTuANn5.js";import"./Bxn10RF7.js";import"./VvdfUIBF.js";import"./C17fSPIB.js";const H={class:"punch-overlay"},N=["src","alt"],W={class:"punch-overlay__svg",viewBox:"0 0 642 667",preserveAspectRatio:"xMidYMid slice","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"},G=["y1","y2"],Y=["d"],K={class:"punch-overlay__dots"},Z=["cx","cy","r"],q=["cx","cy"],Q=["cx","cy"],J={class:"punch-overlay__device"},X=["x","y"],ee=["cx","cy"],te={class:"punch-overlay__wifi"},oe=["d"],se=["d"],ie=["d"],ae=y({__name:"PunchTrackingOverlay",props:{imageSrc:{type:String,required:!0},imageAlt:{type:String,default:"A boxer in black attire throws a punch with white gloves in a dimly lit gym, focusing on a hanging heavy bag."}},setup(u){const a=[{cx:118,cy:232,r:2},{cx:140,cy:244,r:2.5},{cx:165,cy:254,r:3},{cx:194,cy:262,r:3.5},{cx:228,cy:270,r:4.5},{cx:269,cy:279,r:5.5},{cx:318,cy:287,r:6.5}],t={x:392,y:287};return(i,_)=>(d(),p("figure",H,[e("img",{class:"punch-overlay__image",src:u.imageSrc,alt:u.imageAlt},null,8,N),(d(),p("svg",W,[e("defs",null,[e("linearGradient",{id:"punch-path-fade",gradientUnits:"userSpaceOnUse",x1:"0",y1:t.y,x2:"0",y2:t.y+300},[..._[0]||(_[0]=[e("stop",{offset:"0","stop-color":"#ff2e2e","stop-opacity":"0.9"},null,-1),e("stop",{offset:"0.55","stop-color":"#ff2e2e","stop-opacity":"0.35"},null,-1),e("stop",{offset:"1","stop-color":"#ff2e2e","stop-opacity":"0"},null,-1)])],8,G)]),e("path",{class:"punch-overlay__path",d:`M${t.x} ${t.y+32} L 310 620`,fill:"none"},null,8,Y),e("g",K,[(d(),p(L,null,k(a,(n,l)=>e("g",{key:l},[e("circle",{class:"punch-overlay__dot",cx:n.cx,cy:n.cy,r:n.r,style:O({"--i":l})},null,12,Z)])),64))]),e("circle",{class:"punch-overlay__ring-fill",cx:t.x,cy:t.y,r:"32"},null,8,q),e("circle",{class:"punch-overlay__ring",cx:t.x,cy:t.y,r:"32",fill:"none"},null,8,Q),e("g",J,[e("rect",{x:t.x-16,y:t.y+1,width:"32",height:"9",rx:"2.5",class:"punch-overlay__device-body"},null,8,X),e("circle",{cx:t.x,cy:t.y+6,r:"1.5",class:"punch-overlay__device-led"},null,8,ee),e("g",te,[e("path",{class:"punch-overlay__wave punch-overlay__wave--1",d:`M${t.x-5} ${t.y-7} A 7 7 0 0 1 ${t.x+5} ${t.y-7}`,fill:"none"},null,8,oe),e("path",{class:"punch-overlay__wave punch-overlay__wave--2",d:`M${t.x-9} ${t.y-11} A 12 12 0 0 1 ${t.x+9} ${t.y-11}`,fill:"none"},null,8,se),e("path",{class:"punch-overlay__wave punch-overlay__wave--3",d:`M${t.x-13} ${t.y-15} A 17 17 0 0 1 ${t.x+13} ${t.y-15}`,fill:"none"},null,8,ie)])])]))]))}}),ce=Object.assign(x(ae,[["__scopeId","data-v-d1065986"]]),{__name:"PunchTrackingOverlay"}),ne=""+new URL("network-burst.DOkITyZ7.svg",import.meta.url).href,le={class:"ai-tech-flow"},re={class:"ai-tech-flow__container"},de={class:"ai-tech-flow__columns"},_e={class:"ai-tech-flow__step"},he={class:"ai-tech-flow__column ai-tech-flow__column--bleed"},pe={class:"ai-tech-flow__step ai-tech-flow__step--last"},fe={class:"ai-tech-flow__column"},ue={class:"ai-tech-flow__readouts"},ve=["innerHTML"],me={class:"ai-tech-flow__readout-title"},ge={class:"ai-tech-flow__readout-description"},we=y({__name:"AiTechFlowSection",setup(u){const a=[{svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" fill="currentColor"><path d="M144 96C117.5 96 96 117.5 96 144C96 170.5 117.5 192 144 192L296 192L296 232L248 280L176 280C136.2 280 104 312.2 104 352L104 416L96 416C78.3 416 64 430.3 64 448L64 512C64 529.7 78.3 544 96 544L160 544C177.7 544 192 529.7 192 512L192 448C192 430.3 177.7 416 160 416L152 416L152 352C152 338.7 162.7 328 176 328L248 328L296 376L296 416L288 416C270.3 416 256 430.3 256 448L256 512C256 529.7 270.3 544 288 544L352 544C369.7 544 384 529.7 384 512L384 448C384 430.3 369.7 416 352 416L344 416L344 376L392 328L464 328C477.3 328 488 338.7 488 352L488 416L480 416C462.3 416 448 430.3 448 448L448 512C448 529.7 462.3 544 480 544L544 544C561.7 544 576 529.7 576 512L576 448C576 430.3 561.7 416 544 416L536 416L536 352C536 312.2 503.8 280 464 280L392 280L344 232L344 192L496 192C522.5 192 544 170.5 544 144C544 117.5 522.5 96 496 96L144 96z"/></svg>',title:"Punch Type",description:"Left & Right Straight and Power Punches"},{svg:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9"/><polyline points="12 7 12 12 15 15"/></svg>',title:"Timestamp",description:"Exact moment each punch was thrown"},{svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15l3.5-3.5"/><path d="M20.3 18c.4-1 .7-2.2.7-3.4C21 9.8 17 6 12 6s-9 3.8-9 8.6c0 1.2.3 2.4.7 3.4"/></svg>',title:"Punch Speed",description:"Max speed reached during the punch motion"},{svg:'<svg fill="currentColor" viewBox="0 0 56 56" xmlns="http://www.w3.org/2000/svg"><path d="M 1.9205 50.6968 L 5.3687 54.1450 C 7.2673 56 9.4279 55.8472 11.3484 53.7303 L 34.1981 28.8511 C 35.1365 29.5058 36.0094 29.4840 37.0788 29.2658 L 39.4140 28.7856 L 40.9636 30.3351 L 40.8545 31.4918 C 40.7017 32.6921 41.0508 33.6087 42.1637 34.7217 L 43.9971 36.5331 C 45.1100 37.6679 46.5939 37.7334 47.6634 36.6640 L 54.9309 29.3967 C 56.0000 28.3273 55.9347 26.8651 54.8218 25.7303 L 52.9884 23.8971 C 51.8755 22.7840 50.9369 22.3912 49.7583 22.5658 L 48.5801 22.6967 L 47.0958 21.2127 L 47.7506 18.6593 C 48.0563 17.3936 47.7287 16.3678 46.3539 15.0147 L 40.9636 9.6461 C 33.0414 1.7677 22.8933 2.0077 15.9532 9.0132 C 14.9930 9.9734 14.9057 11.2829 15.5168 12.2431 C 16.0187 13.0724 17.0881 13.5744 18.5503 13.2034 C 21.9330 12.3522 25.3157 12.6141 28.6330 14.8620 L 27.2362 18.3975 C 26.7124 19.7069 26.7561 20.7762 27.2799 21.7583 L 2.3352 44.7171 C .2401 46.6594 0 48.7763 1.9205 50.6968 Z M 19.4233 9.8861 C 25.3812 5.4341 32.8013 6.1542 38.1700 11.5229 L 44.0404 17.3499 C 44.5643 17.8737 44.6300 18.2883 44.4771 18.9431 L 43.6480 22.4349 L 47.1615 25.9485 L 49.3002 25.7521 C 49.9331 25.6866 50.1293 25.7303 50.6531 26.2322 L 52.0284 27.6290 L 45.8957 33.7833 L 44.4990 32.3866 C 43.9971 31.8846 43.9533 31.6882 44.0190 31.0553 L 44.2152 28.8947 L 40.7236 25.4029 L 37.
11006 26.1013 C 36.4677 26.2322 36.1404 26.2322 35.5948 25.6866 L 30.7499 20.8199 C 30.2261 20.2961 30.1606 19.9906 30.4443 19.2922 L 32.5831 14.1855 C 29.0040 10.7591 24.2682 8.8604 19.7070 10.3226 C 19.5106 10.3881 19.3796 10.3444 19.3142 10.2571 C 19.2487 10.1480 19.2487 10.0389 19.4233 9.8861 Z M 4.7576 49.1255 C 3.6446 48.0125 4.0374 47.3359 4.7794 46.6594 L 29.2877 24.0499 L 32.0156 26.7996 L 9.3406 51.2206 C 8.6641 51.9626 7.8130 52.1808 6.8964 51.2861 Z"/></svg>',title:"Punch Output",description:"Proprietary metric correlated to the total power exerted by the punch"}];return(t,i)=>{const _=I,n=ce,l=F("FontAwesomeIcon");return d(),p("section",le,[f(_,{title:"Try To Fool It.",description:"Slip the jab. Roll under the hook. Parry, pivot, feint, reset your guard. Trained on 100,000+ punches at 1,200 data points a second, the AI knows the difference between moving and throwing.",alignment:"center",theme:"dark","max-width":"850px"}),e("div",re,[i[6]||(i[6]=w('<div class="ai-tech-flow__timeline" data-v-fd70e66d><div class="ai-tech-flow__timeline-dot" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-line" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-arrow" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-line" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-dot" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-line" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-arrow" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-line" data-v-fd70e66d></div><div class="ai-tech-flow__timeline-dot" data-v-fd70e66d></div></div>',1)),e("div",de,[e("div",_e,[i[2]||(i[2]=w('<div class="ai-tech-flow__step-rail" data-v-fd70e66d><div class="ai-tech-flow__timeline-dot" data-v-fd70e66d></div><div class="ai-tech-flow__rail-line" data-v-fd70e66d></div><div class="ai-tech-flow__rail-arrow" data-v-fd70e66d></div><div class="ai-tech-flow__rail-line" data-v-fd70e66d></div></div>',1)),e("div",he,[i[0]||(i[0]=e("h3",{class:"ai-tech-flow__column-title fc-bold fc-uppercase"}," Raw Motion Data Capture ",-1)),f(n,{"image-src":"https://a.storyblok.com/f/152150/2000x2079/c955bb9424/fc_workshoot_1_web-14-2-2.jpg","image-alt":"A boxer in black attire throws a punch with white gloves in a dimly lit gym, focusing on a hanging heavy bag."}),i[1]||(i[1]=w('<div class="ai-tech-flow__stat fc-bold" data-v-fd70e66d><p class="ai-tech-flow__stat-number fc-margin-0" data-v-fd70e66d><span class="fc-heading-2" data-v-fd70e66d>1,200</span><span class="ai-tech-flow__stat-unit fc-bold" data-v-fd70e66d> data points / sec</span></p><p class="ai-tech-flow__stat-description" data-v-fd70e66d> Tracking hand motion during every punch </p></div>',1))])]),i[5]||(i[5]=w('<div class="ai-tech-flow__step" data-v-fd70e66d><div class="ai-tech-flow__step-rail" data-v-fd70e66d><div class="ai-tech-flow__timeline-dot" data-v-fd70e66d></div><div class="ai-tech-flow__rail-line" data-v-fd70e66d></div><div class="ai-tech-flow__rail-arrow" data-v-fd70e66d></div><div class="ai-tech-flow__rail-line" data-v-fd70e66d></div></div><div class="ai-tech-flow__column ai-tech-flow__column--center" data-v-fd70e66d><h3 class="ai-tech-flow__column-title fc-bold fc-uppercase" data-v-fd70e66d> FightCamp AI Processing </h3><div class="ai-tech-flow__image-placeholder ai-tech-flow__image-placeholder--ai" data-v-fd70e66d><img src="'+ne+'" alt="FightCamp AI network burst" class="ai-tech-flow__ai-graphic" data-v-fd70e66d></div><div data-v-fd70e66d><p class="ai-tech-flow__ai-headline fc-heading-2" data-v-fd70e66d> Trained on </p><p class="ai-tech-flow__ai-headline fc-heading-2" data-v-fd70e66d> 100,000+ Punches </p></div><p class="ai-tech-flow__ai-description" data-v-fd70e66d> A proprietary AI algorithm that learned the signature of every punch and tells them apart in milliseconds. </p></div></div>',1)),e("div",pe,[i[4]||(i[4]=e("div",{class:"ai-tech-flow__step-rail"},[e("div",{class:"ai-tech-flow__timeline-dot"})],-1)),e("div",fe,[i[3]||(i[3]=e("h3",{class:"ai-tech-flow__column-title fc-bold fc-uppercase"}," 4 Readouts for Every Punch ",-1)),e("div",ue,[(d(),p(L,null,k(a,(c,h)=>e("div",{key:h,class:"ai-tech-flow__readout-card"},[c.svg?(d(),p("span",{key:0,class:"ai-tech-flow__readout-icon",innerHTML:c.svg},null,8,ve)):c.icon?(d(),P(l,{key:1,icon:c.icon,class:"ai-tech-flow__readout-icon"},null,8,["icon"])):M("",!0),e("p",me,v(c.title),1),e("p",ge,v(c.description),1)])),64))])])])])])])}}}),ye=Object.assign(x(we,[["__scopeId","data-v-fd70e66d"]]),{__name:"AiTechFlowSection"}),xe={class:"fc-container-lg"},be={class:"steps-grid fc-margin-bottom-8"},Le={class:"step-card__badge-container"},ke={class:"fc-bg-red fc-text-white fc-flex fc-align-center fc-justify-center step-card__badge"},Ce={class:"fc-font-heading fc-font-size-12 md:fc-font-size-14 fc-font-bold"},Te={class:"step-card__video fc-bg-black"},$e=["onEnded"],Ae=["src"],Se={class:"step-card__content"},Ee={class:"fc-font-heading fc-uppercase fc-font-size-12 md:fc-font-size-14 fc-margin-0 fc-margin-bottom-4"},Re={class:"fc-font-regular fc-font-size-6 md:fc-font-size-7 fc-text-grey-600 fc-margin-0"},Ie=y({__name:"TechnologySteps",setup(u){const a=[{number:"01",videoUrl:"https://cdn-b.joinfightcamp.com/videos/9x16_TRACKERSPAIRING_01.mp4",title:"Wake them up.",text:"Double-tap. Phone finds them in seconds. No menus, no codes, no ceremony."},{number:"02",videoUrl:"https://cdn-b.joinfightcamp.com/videos/9x16_TRACKERSWRAPPING_02.mp4",title:"Wrap up like always.",text:"Slide the tracker into the wrist sleeve. Wrap your hands the way you've wrapped them for years. You won't feel a thing. The bag will."},{number:"03",videoUrl:"https://cdn-b.joinfightcamp.com/videos/9x16_TRACKERSWORKING_03_V2.mp4",title:"Throw down.",text:"Hit the bell. Every punch counted, classified and scored in real time. The work was always there. Now it shows up on the screen."}],t=$(null),i=$([]),_=z();let n=!1,l=null,c=[],h=0;const b=new Set,A=(s,o)=>{s&&(i.value[o]=s)},m=async s=>{const o=i.value[s];if(o){o.ended&&(o.currentTime=0,await new Promise(r=>o.addEventListener("seeked",()=>r(),{once:!0})));try{await o.play()}catch{}}},C=s=>{const o=i.value[s];o&&!o.paused&&o.pause()},S=s=>{if(_.value){b.has(s)&&m(s);return}const o=(s+1)%a.length;h=o,m(o)},E=()=>
1{c.forEach(s=>s.disconnect()),c=[],i.value.forEach((s,o)=>{if(!s)return;const r=new IntersectionObserver(g=>{_.value&&(g[0]?.isIntersecting?(b.add(o),h!==o&&(C(h),h=o),m(o)):(b.delete(o),C(o)))},{threshold:.5});r.observe(s.closest(".step-card__video")),c.push(r)})};return j(()=>{V(()=>{i.value.forEach(s=>{if(!s)return;const o=()=>{s.currentTime=.001};s.readyState>=HTMLMediaElement.HAVE_METADATA?o():s.addEventListener("loadedmetadata",o,{once:!0})}),E()}),l=new IntersectionObserver(s=>{s[0]?.isIntersecting&&!n&&!_.value&&(n=!0,h=0,m(0))},{threshold:.1}),t.value&&l.observe(t.value)}),D(()=>{l?.disconnect(),c.forEach(s=>s.disconnect())}),(s,o)=>(d(),p("section",{ref_key:"sectionRef",ref:t,class:"technology-steps"},[e("div",xe,[o[0]||(o[0]=e("h2",{class:"fc-font-size-14 md:fc-font-size-20 fc-font-heading fc-uppercase fc-margin-y-8 fc-flex fc-column fc-text-center"},[e("span",null,"Three Steps."),e("span",null,"Then it's just you and the bag.")],-1)),e("div",be,[(d(),p(L,null,k(a,(r,g)=>e("div",{key:r.number,class:"step-card fc-bg-egg-shell fc-border-black"},[e("div",Le,[e("div",ke,[e("span",Ce,v(r.number),1)])]),e("div",Te,[e("video",{ref_for:!0,ref:T=>A(T,g),muted:"",playsinline:"","webkit-playsinline":"",preload:"metadata",class:"fc-w-full fc-h-full step-card__video-element",onEnded:T=>S(g)},[e("source",{src:r.videoUrl,type:"video/mp4"},null,8,Ae)],40,$e)]),e("div",Se,[e("h3",Ee,v(r.title),1),e("p",Re,v(r.text),1)])])),64))])])],512))}}),Oe=Object.assign(x(Ie,[["__scopeId","data-v-64a99a73"]]),{__name:"TechnologySteps"}),Pe={class:"features-page"},Me=y({__name:"technology",setup(u){const a={title:"The smallest piece",titleSecondLine:"of the hardest sport.",subtitle:"Two trackers. One app. Born in pro corners, built for everyone who trains.",ctaText:"Upgrade Your Training",ctaLink:"/shop/work-packages",videoUrl:"https://cdn-b.joinfightcamp.com/videos/16x9_TECHNOLOGYHEADER_V1.mp4",mobileVideoUrl:"https://cdn-b.joinfightcamp.com/videos/9x16_TECHNOLOGYHEADER_V1.mp4"},t={title:"Put the work on the record.",subtitle:"Two trackers turn every round into volume, speed, and output. A history that grows every session.",videoUrl:"https://cdn-b.joinfightcamp.com/videos/16x9_FOOTER_V1.mp4",ctaText:"Shop Packages",ctaLink:"/shop/work-packages"};return U({title:"Boxing Punch Tracking Technology — FightCamp",ogTitle:"The Science Behind FightCamp Punch Tracking",description:"Two wrist trackers. One app. FightCamp Work captures punch volume, speed, and output from any bag. A decade of pro-corner R&D, now in your wrists.",ogDescription:"Two wrist trackers. One app. FightCamp Work captures punch volume, speed, and output from any bag. A decade of pro-corner R&D, now in your wrists.",ogImage:"https://a.storyblok.com/f/152150/1200x1200/3fecd3c197/phone_preview_2.png",twitterCard:"summary_large_image",twitterTitle:"Boxing Punch Tracking Tech — FightCamp",twitterDescription:"Two trackers. One app. FightCamp Work measures punch volume, speed, and output on any heavy bag. A decade of pro-corner R&D."}),(i,_)=>{const n=R,l=ye,c=B,h=Oe;return d(),p("div",Pe,[f(n,{class:"features-page__atf",title:a.title,"title-second-line":a.titleSecondLine,subtitle:a.subtitle,"cta-text":a.ctaText,"cta-link":a.ctaLink,"video-url":a.videoUrl,"mobile-video-url":a.mobileVideoUrl,"lazy-loaded":!1,"content-position":"center"},null,8,["title","title-second-line","subtitle","cta-text","cta-link","video-url","mobile-video-url"]),f(l),f(c),f(h),f(n,{title:t.title,subtitle:t.subtitle,"video-url":t.videoUrl,"cta-text":t.ctaText,"cta-link":t.ctaLink,"cta-theme":"button-primary","use-static-height":"","content-position":"center"},null,8,["title","subtitle","video-url","cta-text","cta-link"])])}}}),We=x(Me,[["__scopeId","data-v-38787739"]]);export{We as default};

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.