Files
2026-08-17 13:59:12 +08:00

3 lines
7.7 KiB
JavaScript

"use strict";const e=require("../../common/vendor.js"),he=require("../hooks/useMetronome.js");Math||ye();const ye=()=>"./components/crush-canvas.js",be="https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/video/20260528/20260528173911bf6f93386.mp4",P="https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/images/20260529/202605291030231aed12802.jpg",_e="https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260528/20260528093709c669f4659.mp3",Q=e.defineComponent({__name:"grip-ring",setup(Re){const S=[{id:"light",bpm:60,met:2.5,label:"轻度",desc:"热身 · 恢复"},{id:"medium",bpm:80,met:3.5,label:"中度",desc:"日常 · 锻炼"},{id:"heavy",bpm:100,met:4.5,label:"重度",desc:"强化 · 挑战"}],B=[{minutes:0,label:"自由"},{minutes:5,label:"5 分钟"},{minutes:10,label:"10 分钟"},{minutes:15,label:"15 分钟"}],m=[{emoji:"🥚",title:"捏碎鸡蛋",desc:"握力不错!",itemType:"egg",sound:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260528/202605280937077bad76716.mp3",minReps:8,maxReps:12},{emoji:"🌰",title:"捏碎核桃",desc:"力量惊人!",itemType:"walnut",sound:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260528/20260528093707b021f5794.mp3",minReps:15,maxReps:20},{emoji:"🥫",title:"捏扁易拉罐",desc:"太强了!",itemType:"can",sound:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260528/20260528093707ebd4d5733.mp3",minReps:25,maxReps:30},{emoji:"🎈",title:"捏爆气球",desc:"完美!",itemType:"balloon",sound:"https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/file/20260528/20260528093707016f07427.mp3",minReps:40,maxReps:50}],X=[{emoji:"🍬",name:"糖果",sugar:95,unit:"颗",weight:5},{emoji:"🍪",name:"饼干",sugar:65,unit:"块",weight:10},{emoji:"🍫",name:"巧克力",sugar:51.5,unit:"块",weight:50},{emoji:"🍎",name:"苹果",sugar:10.3,unit:"个",weight:200},{emoji:"🍌",name:"香蕉",sugar:12.2,unit:"根",weight:120},{emoji:"🍚",name:"米饭",sugar:25.9,unit:"碗",weight:150},{emoji:"🥤",name:"可乐",sugar:10.6,unit:"罐",weight:330}],w=e.ref("medium"),i=e.ref(0),q=e.ref(null),x=e.ref(!1),c=e.ref(!1),R=e.ref(m[0]),r=e.ref(null),o=e.ref(null),h=e.ref(!0),l=e.ref(0),v=e.ref(0),f=e.ref(0),M=e.ref(0),p=e.ref(0),j=e.ref(0),z=e.ref(0),y=e.ref(null),I=e.computed(()=>S.find(t=>t.id===w.value)||S[1]),A=e.computed(()=>I.value.bpm),Y=e.computed(()=>I.value.met),b=e.ref(!1),Z=e.computed(()=>{const t=B.find(a=>a.minutes===i.value);return t?t.label:"自由"}),_=e.ref(!1),D={muscles:["前臂屈肌","手部小肌群","握力"],effect:"增强握力与前臂肌肉耐力,促进手部血液循环,缓解手指与腕部僵硬,适合日常碎片化锻炼及手部功能康复。"},d=he.useMetronome({initialBpm:A.value,accentEvery:2,silent:!0,onBeat:ne}),{isPlaying:n}=d;e.watch(n,t=>{const a=e.index.createVideoContext("gripDemoVideo");a&&(t?a.play():a.pause())});const ee=e.computed(()=>6e4/A.value),U=e.computed(()=>n.value||l.value>0),g=e.computed(()=>!n.value&&l.value>0&&!c.value),C=e.computed(()=>{if(i.value===0)return null;const t=i.value*60;return Math.max(0,t-v.value)}),te=e.computed(()=>g.value?"点击继续":"点击开始"),ae=e.computed(()=>n.value?"训练中":g.value?"已暂停":"待开始"),k=e.computed(()=>l.value===0?"握力环训练 · 一起练起来":`刚刚完成 ${l.value} 次握力训练,约消耗 ${f.value.toFixed(1)}g 糖分 💪`),ue=e.computed(()=>({"--beat-duration":`${ee.value}ms`})),E=e.computed(()=>{if(f.value===0)return[];const t=[];for(const a of X){const u=a.sugar*a.weight/100,s=f.value/u;s>=.1&&s<=50&&t.push({emoji:a.emoji,name:a.name,count:s>=10?Math.round(s).toString():s.toFixed(1),unit:a.unit})}return t.slice(0,3)});function ne(){M.value++,M.value%2===0&&(l.value++,l.value>=j.value&&p.value<m.length&&le())}function oe(t){const a=t/3600;return Y.value*60*a/4}function $(t){const a=Math.floor(t/60),u=t%60;return`${a}:${u.toString().padStart(2,"0")}`}function le(){const t=m[p.value];if(R.value=t,q.value={type:t.itemType,nonce:Date.now()},se(t.sound),re(),p.value++,p.value<m.length){const a=m[p.value],u=a.maxReps-a.minReps;j.value=l.value+a.minReps+Math.floor(Math.random()*(u+1))}setTimeout(()=>{x.value=!0},1200)}function L(){x.value=!1}function re(){const t=a=>{e.index.vibrateShort({type:a,fail:()=>{try{e.index.vibrateShort({})}catch{}}})};t("heavy"),setTimeout(()=>t("medium"),120)}function se(t){if(t){if(r.value)try{r.value.destroy()}catch{}r.value=e.index.createInnerAudioContext(),r.value.src=t,r.value.obeyMuteSwitch=!1,r.value.volume=.6;try{r.value.play()}catch{}}}function F(){if(h.value){if(o.value){try{o.value.play()}catch{}return}o.value=e.index.createInnerAudioContext(),o.value.src=_e,o.value.loop=!0,o.value.obeyMuteSwitch=!1,o.value.volume=.4;try{o.value.play()}catch{}}}function G(){if(o.value)try{o.value.pause()}catch{}}function ie(){h.value=!h.value,h.value&&n.value?F():G()}function ce(t){n.value||(w.value=t,d.setBpm(I.value.bpm))}function ve(t){n.value||(i.value=t)}function V(){n.value?N():(l.value===0&&T(),H())}function H(){d.start(),F(),de(),e.index.setKeepScreenOn({keepScreenOn:!0})}function N(){d.stop(),G(),W(),e.index.setKeepScreenOn({keepScreenOn:!1})}function K(){l.value!==0&&(N(),c.value=!0)}function me(){c.value=!1,T()}function fe(){c.value=!1,T()}function pe(){c.value=!1,T(),H()}function T(){l.value=0,v.value=0,f.value=0,M.value=0,p.value=0,z.value=Date.now();const t=m[0],a=t.maxReps-t.minReps;j.value=t.minReps+Math.floor(Math.random()*(a+1))}function de(){y.value||(z.value=Date.now()-v.value*1e3,y.value=setInterval(()=>{v.value=Math.floor((Date.now()-z.value)/1e3),f.value=oe(v.value),i.value>0&&v.value>=i.value*60&&K()},1e3))}function W(){y.value&&(clearInterval(y.value),y.value=null)}e.onShow(()=>{d.preload()}),e.onShareAppMessage(()=>({title:k.value,path:"/training/pages/grip-ring",imageUrl:P})),e.onShareTimeline(()=>({title:k.value,imageUrl:P}));function J(){var t;try{d.stop()}catch{}W(),e.index.setKeepScreenOn({keepScreenOn:!1});try{(t=e.index.createVideoContext("gripDemoVideo"))==null||t.pause()}catch{}if(o.value){try{o.value.stop()}catch{}try{o.value.destroy()}catch{}o.value=null}if(r.value){try{r.value.stop()}catch{}try{r.value.destroy()}catch{}r.value=null}}return e.onHide(J),e.onUnload(J),(t,a)=>e.e({a:e.t(ae.value),b:e.unref(n)?1:"",c:g.value?1:"",d:e.p({"crush-signal":q.value}),e:be,f:P,g:!e.unref(n)},e.unref(n)?{i:e.t(A.value)}:{h:e.t(te.value)},{j:e.o(V,"9b"),k:e.unref(n)?1:"",l:e.t(h.value?"🎵":"🔇"),m:e.o(ie,"6e"),n:C.value!==null&&U.value},C.value!==null&&U.value?{o:e.t($(C.value))}:{},{p:e.unref(n)},e.unref(n)?{}:{},{q:e.f(S,(u,s,O)=>({a:e.t(u.label),b:e.t(u.bpm),c:u.id,d:w.value===u.id?1:"",e:e.o(ge=>ce(u.id),u.id)})),r:e.unref(n)?1:"",s:e.t(Z.value),t:e.t(b.value?"▲":"▼"),v:e.o(u=>b.value=!b.value,"16"),w:b.value},b.value?{x:e.f(B,(u,s,O)=>({a:e.t(u.label),b:u.minutes,c:i.value===u.minutes?1:"",d:e.o(ge=>ve(u.minutes),u.minutes)})),y:e.unref(n)?1:""}:{},{z:e.t(_.value?"收起 ▲":"展开 ▼"),A:e.o(u=>_.value=!_.value,"ee"),B:_.value},_.value?{C:e.f(D.muscles,(u,s,O)=>({a:e.t(u),b:u})),D:e.t(D.effect)}:{},{E:g.value},g.value?{F:e.o(V,"8a"),G:e.o(K,"d0")}:{},{H:e.unref(n)?1:"",I:g.value?1:"",J:e.s(ue.value),K:x.value},x.value?{L:e.t(R.value.emoji),M:e.t(R.value.title),N:e.t(R.value.desc),O:e.t(l.value),P:e.o(L,"ae"),Q:e.o(()=>{},"5b"),R:e.o(L,"1a")}:{},{S:c.value},c.value?e.e({T:e.t(l.value),U:e.t($(v.value)),V:e.t(f.value.toFixed(1)),W:E.value.length>0},E.value.length>0?{X:e.f(E.value,(u,s,O)=>({a:e.t(u.emoji),b:e.t(u.count),c:e.t(u.unit),d:e.t(u.name),e:s}))}:{},{Y:e.o(pe,"78"),Z:e.o(fe,"a1"),aa:e.o(()=>{},"c4"),ab:e.o(me,"77")}):{})}});Q.__runtimeHooks=6;const xe=e._export_sfc(Q,[["__scopeId","data-v-cebdebdc"]]);wx.createPage(xe);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/training/pages/grip-ring.js.map