react-native-nitro-pose-exercises 1.0.8 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroPoseExercises.podspec +2 -1
- package/README.md +137 -92
- package/android/build.gradle +9 -10
- package/android/src/main/java/com/margelo/nitro/nitroposeexercises/NitroPoseExercises.kt +148 -125
- package/ios/NitroPoseExercises.swift +113 -88
- package/lib/module/config/bicep-curl.js +61 -0
- package/lib/module/config/bicep-curl.js.map +1 -0
- package/lib/module/config/chair-pose.js +64 -0
- package/lib/module/config/chair-pose.js.map +1 -0
- package/lib/module/config/cobra-pose.js +57 -0
- package/lib/module/config/cobra-pose.js.map +1 -0
- package/lib/module/config/downward-dog.js +65 -0
- package/lib/module/config/downward-dog.js.map +1 -0
- package/lib/module/config/lunge.js +62 -0
- package/lib/module/config/lunge.js.map +1 -0
- package/lib/module/config/plank.js +57 -0
- package/lib/module/config/plank.js.map +1 -0
- package/lib/module/config/shoulder-press.js +62 -0
- package/lib/module/config/shoulder-press.js.map +1 -0
- package/lib/module/config/situp.js +48 -0
- package/lib/module/config/situp.js.map +1 -0
- package/lib/module/config/squat.js +69 -0
- package/lib/module/config/squat.js.map +1 -0
- package/lib/module/config/tree-pose.js +57 -0
- package/lib/module/config/tree-pose.js.map +1 -0
- package/lib/module/config/tricep-dip.js +55 -0
- package/lib/module/config/tricep-dip.js.map +1 -0
- package/lib/module/config/wall-sit.js +57 -0
- package/lib/module/config/wall-sit.js.map +1 -0
- package/lib/module/config/warrior-i.js +79 -0
- package/lib/module/config/warrior-i.js.map +1 -0
- package/lib/module/config/warrior-ii.js +86 -0
- package/lib/module/config/warrior-ii.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/config/bicep-curl.d.ts +3 -0
- package/lib/typescript/src/config/bicep-curl.d.ts.map +1 -0
- package/lib/typescript/src/config/chair-pose.d.ts +3 -0
- package/lib/typescript/src/config/chair-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/cobra-pose.d.ts +3 -0
- package/lib/typescript/src/config/cobra-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/downward-dog.d.ts +3 -0
- package/lib/typescript/src/config/downward-dog.d.ts.map +1 -0
- package/lib/typescript/src/config/lunge.d.ts +3 -0
- package/lib/typescript/src/config/lunge.d.ts.map +1 -0
- package/lib/typescript/src/config/plank.d.ts +3 -0
- package/lib/typescript/src/config/plank.d.ts.map +1 -0
- package/lib/typescript/src/config/shoulder-press.d.ts +3 -0
- package/lib/typescript/src/config/shoulder-press.d.ts.map +1 -0
- package/lib/typescript/src/config/situp.d.ts +3 -0
- package/lib/typescript/src/config/situp.d.ts.map +1 -0
- package/lib/typescript/src/config/squat.d.ts +3 -0
- package/lib/typescript/src/config/squat.d.ts.map +1 -0
- package/lib/typescript/src/config/tree-pose.d.ts +3 -0
- package/lib/typescript/src/config/tree-pose.d.ts.map +1 -0
- package/lib/typescript/src/config/tricep-dip.d.ts +3 -0
- package/lib/typescript/src/config/tricep-dip.d.ts.map +1 -0
- package/lib/typescript/src/config/wall-sit.d.ts +3 -0
- package/lib/typescript/src/config/wall-sit.d.ts.map +1 -0
- package/lib/typescript/src/config/warrior-i.d.ts +3 -0
- package/lib/typescript/src/config/warrior-i.d.ts.map +1 -0
- package/lib/typescript/src/config/warrior-ii.d.ts +3 -0
- package/lib/typescript/src/config/warrior-ii.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +14 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/nitro.json +8 -1
- package/package.json +10 -10
- package/src/config/bicep-curl.ts +64 -0
- package/src/config/chair-pose.ts +67 -0
- package/src/config/cobra-pose.ts +59 -0
- package/src/config/downward-dog.ts +68 -0
- package/src/config/lunge.ts +65 -0
- package/src/config/plank.ts +59 -0
- package/src/config/shoulder-press.ts +63 -0
- package/src/config/situp.ts +51 -0
- package/src/config/squat.ts +71 -0
- package/src/config/tree-pose.ts +59 -0
- package/src/config/tricep-dip.ts +58 -0
- package/src/config/wall-sit.ts +59 -0
- package/src/config/warrior-i.ts +82 -0
- package/src/config/warrior-ii.ts +88 -0
- package/src/index.tsx +19 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 13 = left elbow, 15 = left wrist
|
|
5
|
+
// 23 = left hip, 27 = left ankle
|
|
6
|
+
// 12 = right shoulder, 24 = right hip, 28 = right ankle
|
|
7
|
+
|
|
8
|
+
export const PLANK_CONFIG = {
|
|
9
|
+
name: 'Plank',
|
|
10
|
+
type: 'hold',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftHip',
|
|
13
|
+
landmarkA: 11,
|
|
14
|
+
// left shoulder
|
|
15
|
+
landmarkB: 23,
|
|
16
|
+
// left hip (vertex)
|
|
17
|
+
landmarkC: 27 // left ankle
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightHip',
|
|
20
|
+
landmarkA: 12,
|
|
21
|
+
// right shoulder
|
|
22
|
+
landmarkB: 24,
|
|
23
|
+
// right hip (vertex)
|
|
24
|
+
landmarkC: 28 // right ankle
|
|
25
|
+
}, {
|
|
26
|
+
name: 'leftElbow',
|
|
27
|
+
landmarkA: 11,
|
|
28
|
+
// left shoulder
|
|
29
|
+
landmarkB: 13,
|
|
30
|
+
// left elbow (vertex)
|
|
31
|
+
landmarkC: 15 // left wrist
|
|
32
|
+
}],
|
|
33
|
+
phases: [{
|
|
34
|
+
phase: 'hold',
|
|
35
|
+
angleName: 'leftHip',
|
|
36
|
+
minAngle: 155,
|
|
37
|
+
maxAngle: 180
|
|
38
|
+
}],
|
|
39
|
+
repSequence: [],
|
|
40
|
+
formRules: [{
|
|
41
|
+
name: 'hipSag',
|
|
42
|
+
message: 'Hips are dropping — tighten your core',
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
angleName: 'leftHip',
|
|
45
|
+
minAngle: 155,
|
|
46
|
+
maxAngle: 180
|
|
47
|
+
}, {
|
|
48
|
+
name: 'hipPike',
|
|
49
|
+
message: "Lower your hips — you're piking up",
|
|
50
|
+
severity: 'warning',
|
|
51
|
+
angleName: 'leftHip',
|
|
52
|
+
minAngle: 155,
|
|
53
|
+
maxAngle: 180
|
|
54
|
+
}],
|
|
55
|
+
holdDurationMs: 60000 // 60 seconds default
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=plank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PLANK_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/plank.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,YAA4B,GAAG;EAC1CC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,QAAQ;IACda,OAAO,EAAE,uCAAuC;IAChDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,SAAS;IACfa,OAAO,EAAE,oCAAoC;IAC7CC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE,KAAK,CAAE;AACzB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 13 = left elbow, 15 = left wrist
|
|
5
|
+
// 12 = right shoulder, 14 = right elbow, 16 = right wrist
|
|
6
|
+
// 23 = left hip
|
|
7
|
+
|
|
8
|
+
export const SHOULDER_PRESS_CONFIG = {
|
|
9
|
+
name: 'Shoulder Press',
|
|
10
|
+
type: 'rep',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftElbow',
|
|
13
|
+
landmarkA: 11,
|
|
14
|
+
// left shoulder
|
|
15
|
+
landmarkB: 13,
|
|
16
|
+
// left elbow (vertex)
|
|
17
|
+
landmarkC: 15 // left wrist
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightElbow',
|
|
20
|
+
landmarkA: 12,
|
|
21
|
+
// right shoulder
|
|
22
|
+
landmarkB: 14,
|
|
23
|
+
// right elbow (vertex)
|
|
24
|
+
landmarkC: 16 // right wrist
|
|
25
|
+
}, {
|
|
26
|
+
name: 'leftShoulderAngle',
|
|
27
|
+
landmarkA: 23,
|
|
28
|
+
// left hip
|
|
29
|
+
landmarkB: 11,
|
|
30
|
+
// left shoulder (vertex)
|
|
31
|
+
landmarkC: 13 // left elbow
|
|
32
|
+
}, {
|
|
33
|
+
name: 'rightShoulderAngle',
|
|
34
|
+
landmarkA: 24,
|
|
35
|
+
// right hip
|
|
36
|
+
landmarkB: 12,
|
|
37
|
+
// right shoulder (vertex)
|
|
38
|
+
landmarkC: 14 // right elbow
|
|
39
|
+
}],
|
|
40
|
+
phases: [{
|
|
41
|
+
phase: 'up',
|
|
42
|
+
angleName: 'leftElbow',
|
|
43
|
+
minAngle: 155,
|
|
44
|
+
maxAngle: 180
|
|
45
|
+
}, {
|
|
46
|
+
phase: 'down',
|
|
47
|
+
angleName: 'leftElbow',
|
|
48
|
+
minAngle: 60,
|
|
49
|
+
maxAngle: 100
|
|
50
|
+
}],
|
|
51
|
+
repSequence: ['down', 'up', 'down'],
|
|
52
|
+
formRules: [{
|
|
53
|
+
name: 'backArch',
|
|
54
|
+
message: "Keep your core tight — don't arch your back",
|
|
55
|
+
severity: 'warning',
|
|
56
|
+
angleName: 'leftShoulderAngle',
|
|
57
|
+
minAngle: 80,
|
|
58
|
+
maxAngle: 180
|
|
59
|
+
}],
|
|
60
|
+
holdDurationMs: 0
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=shoulder-press.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SHOULDER_PRESS_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/shoulder-press.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,qBAAqC,GAAG;EACnDC,IAAI,EAAE,gBAAgB;EACtBC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,YAAY;IAClBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,mBAAmB;IACzBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,oBAAoB;IAC1BG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,IAAI;IACXC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEH,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;EACnCC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,UAAU;IAChBa,OAAO,EAAE,6CAA6C;IACtDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,mBAAmB;IAC9BC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE;AAClB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 12 = right shoulder
|
|
5
|
+
// 23 = left hip, 24 = right hip
|
|
6
|
+
// 25 = left knee, 26 = right knee
|
|
7
|
+
|
|
8
|
+
export const SITUP_CONFIG = {
|
|
9
|
+
name: 'Sit-Up',
|
|
10
|
+
type: 'rep',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftHip',
|
|
13
|
+
landmarkA: 11,
|
|
14
|
+
// left shoulder
|
|
15
|
+
landmarkB: 23,
|
|
16
|
+
// left hip (vertex)
|
|
17
|
+
landmarkC: 25 // left knee
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightHip',
|
|
20
|
+
landmarkA: 12,
|
|
21
|
+
// right shoulder
|
|
22
|
+
landmarkB: 24,
|
|
23
|
+
// right hip (vertex)
|
|
24
|
+
landmarkC: 26 // right knee
|
|
25
|
+
}],
|
|
26
|
+
phases: [{
|
|
27
|
+
phase: 'down',
|
|
28
|
+
angleName: 'leftHip',
|
|
29
|
+
minAngle: 130,
|
|
30
|
+
maxAngle: 180
|
|
31
|
+
}, {
|
|
32
|
+
phase: 'up',
|
|
33
|
+
angleName: 'leftHip',
|
|
34
|
+
minAngle: 40,
|
|
35
|
+
maxAngle: 90
|
|
36
|
+
}],
|
|
37
|
+
repSequence: ['down', 'up', 'down'],
|
|
38
|
+
formRules: [{
|
|
39
|
+
name: 'neckStrain',
|
|
40
|
+
message: "Don't pull on your neck — lead with your chest",
|
|
41
|
+
severity: 'warning',
|
|
42
|
+
angleName: 'leftHip',
|
|
43
|
+
minAngle: 30,
|
|
44
|
+
maxAngle: 180
|
|
45
|
+
}],
|
|
46
|
+
holdDurationMs: 0
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=situp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SITUP_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/situp.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,YAA4B,GAAG;EAC1CC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEH,KAAK,EAAE,IAAI;IACXC,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;EACnCC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,YAAY;IAClBa,OAAO,EAAE,gDAAgD;IACzDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE;AAClB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 23 = left hip, 25 = left knee, 27 = left ankle
|
|
5
|
+
// 24 = right hip, 26 = right knee, 28 = right ankle
|
|
6
|
+
// 11 = left shoulder, 12 = right shoulder
|
|
7
|
+
|
|
8
|
+
export const SQUAT_CONFIG = {
|
|
9
|
+
name: 'Squat',
|
|
10
|
+
type: 'rep',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftKnee',
|
|
13
|
+
landmarkA: 23,
|
|
14
|
+
// left hip
|
|
15
|
+
landmarkB: 25,
|
|
16
|
+
// left knee (vertex)
|
|
17
|
+
landmarkC: 27 // left ankle
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightKnee',
|
|
20
|
+
landmarkA: 24,
|
|
21
|
+
// right hip
|
|
22
|
+
landmarkB: 26,
|
|
23
|
+
// right knee (vertex)
|
|
24
|
+
landmarkC: 28 // right ankle
|
|
25
|
+
}, {
|
|
26
|
+
name: 'leftHip',
|
|
27
|
+
landmarkA: 11,
|
|
28
|
+
// left shoulder
|
|
29
|
+
landmarkB: 23,
|
|
30
|
+
// left hip (vertex)
|
|
31
|
+
landmarkC: 25 // left knee
|
|
32
|
+
}, {
|
|
33
|
+
name: 'rightHip',
|
|
34
|
+
landmarkA: 12,
|
|
35
|
+
// right shoulder
|
|
36
|
+
landmarkB: 24,
|
|
37
|
+
// right hip (vertex)
|
|
38
|
+
landmarkC: 26 // right knee
|
|
39
|
+
}],
|
|
40
|
+
phases: [{
|
|
41
|
+
phase: 'up',
|
|
42
|
+
angleName: 'leftKnee',
|
|
43
|
+
minAngle: 155,
|
|
44
|
+
maxAngle: 180
|
|
45
|
+
}, {
|
|
46
|
+
phase: 'down',
|
|
47
|
+
angleName: 'leftKnee',
|
|
48
|
+
minAngle: 50,
|
|
49
|
+
maxAngle: 105
|
|
50
|
+
}],
|
|
51
|
+
repSequence: ['up', 'down', 'up'],
|
|
52
|
+
formRules: [{
|
|
53
|
+
name: 'kneesCaving',
|
|
54
|
+
message: 'Push your knees out over your toes',
|
|
55
|
+
severity: 'warning',
|
|
56
|
+
angleName: 'leftKnee',
|
|
57
|
+
minAngle: 40,
|
|
58
|
+
maxAngle: 180
|
|
59
|
+
}, {
|
|
60
|
+
name: 'leaningForward',
|
|
61
|
+
message: "Keep your torso upright — don't lean too far forward",
|
|
62
|
+
severity: 'warning',
|
|
63
|
+
angleName: 'leftHip',
|
|
64
|
+
minAngle: 70,
|
|
65
|
+
maxAngle: 180
|
|
66
|
+
}],
|
|
67
|
+
holdDurationMs: 0
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=squat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SQUAT_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/squat.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,YAA4B,GAAG;EAC1CC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,IAAI;IACXC,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEH,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;EACjCC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,aAAa;IACnBa,OAAO,EAAE,oCAAoC;IAC7CC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,gBAAgB;IACtBa,OAAO,EAAE,sDAAsD;IAC/DC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE;AAClB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 23 = left hip, 25 = left knee, 27 = left ankle
|
|
5
|
+
// 24 = right hip, 26 = right knee, 28 = right ankle
|
|
6
|
+
// 11 = left shoulder, 12 = right shoulder
|
|
7
|
+
|
|
8
|
+
export const TREE_POSE_CONFIG = {
|
|
9
|
+
name: 'Tree Pose (Vrksasana)',
|
|
10
|
+
type: 'hold',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'standingLeg',
|
|
13
|
+
landmarkA: 23,
|
|
14
|
+
// left hip
|
|
15
|
+
landmarkB: 25,
|
|
16
|
+
// left knee (vertex)
|
|
17
|
+
landmarkC: 27 // left ankle
|
|
18
|
+
}, {
|
|
19
|
+
name: 'raisedKnee',
|
|
20
|
+
landmarkA: 24,
|
|
21
|
+
// right hip
|
|
22
|
+
landmarkB: 26,
|
|
23
|
+
// right knee (vertex)
|
|
24
|
+
landmarkC: 28 // right ankle
|
|
25
|
+
}, {
|
|
26
|
+
name: 'torso',
|
|
27
|
+
landmarkA: 11,
|
|
28
|
+
// left shoulder
|
|
29
|
+
landmarkB: 23,
|
|
30
|
+
// left hip (vertex)
|
|
31
|
+
landmarkC: 25 // left knee
|
|
32
|
+
}],
|
|
33
|
+
phases: [{
|
|
34
|
+
phase: 'hold',
|
|
35
|
+
angleName: 'standingLeg',
|
|
36
|
+
minAngle: 165,
|
|
37
|
+
maxAngle: 180
|
|
38
|
+
}],
|
|
39
|
+
repSequence: [],
|
|
40
|
+
formRules: [{
|
|
41
|
+
name: 'standingLegBent',
|
|
42
|
+
message: 'Straighten your standing leg',
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
angleName: 'standingLeg',
|
|
45
|
+
minAngle: 165,
|
|
46
|
+
maxAngle: 180
|
|
47
|
+
}, {
|
|
48
|
+
name: 'leaningTorso',
|
|
49
|
+
message: 'Keep your torso straight and centered',
|
|
50
|
+
severity: 'warning',
|
|
51
|
+
angleName: 'torso',
|
|
52
|
+
minAngle: 160,
|
|
53
|
+
maxAngle: 180
|
|
54
|
+
}],
|
|
55
|
+
holdDurationMs: 30000 // 30 seconds per side
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=tree-pose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TREE_POSE_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/tree-pose.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,gBAAgC,GAAG;EAC9CC,IAAI,EAAE,uBAAuB;EAC7BC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,aAAa;IACnBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,YAAY;IAClBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,OAAO;IACbG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,aAAa;IACxBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,iBAAiB;IACvBa,OAAO,EAAE,8BAA8B;IACvCC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,aAAa;IACxBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,cAAc;IACpBa,OAAO,EAAE,uCAAuC;IAChDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,OAAO;IAClBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE,KAAK,CAAE;AACzB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 13 = left elbow, 15 = left wrist
|
|
5
|
+
// 12 = right shoulder, 14 = right elbow, 16 = right wrist
|
|
6
|
+
// 23 = left hip
|
|
7
|
+
|
|
8
|
+
export const TRICEP_DIP_CONFIG = {
|
|
9
|
+
name: 'Tricep Dip',
|
|
10
|
+
type: 'rep',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftElbow',
|
|
13
|
+
landmarkA: 11,
|
|
14
|
+
// left shoulder
|
|
15
|
+
landmarkB: 13,
|
|
16
|
+
// left elbow (vertex)
|
|
17
|
+
landmarkC: 15 // left wrist
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightElbow',
|
|
20
|
+
landmarkA: 12,
|
|
21
|
+
// right shoulder
|
|
22
|
+
landmarkB: 14,
|
|
23
|
+
// right elbow (vertex)
|
|
24
|
+
landmarkC: 16 // right wrist
|
|
25
|
+
}, {
|
|
26
|
+
name: 'shoulderDrop',
|
|
27
|
+
landmarkA: 23,
|
|
28
|
+
// left hip
|
|
29
|
+
landmarkB: 11,
|
|
30
|
+
// left shoulder (vertex)
|
|
31
|
+
landmarkC: 13 // left elbow
|
|
32
|
+
}],
|
|
33
|
+
phases: [{
|
|
34
|
+
phase: 'up',
|
|
35
|
+
angleName: 'leftElbow',
|
|
36
|
+
minAngle: 150,
|
|
37
|
+
maxAngle: 180
|
|
38
|
+
}, {
|
|
39
|
+
phase: 'down',
|
|
40
|
+
angleName: 'leftElbow',
|
|
41
|
+
minAngle: 60,
|
|
42
|
+
maxAngle: 100
|
|
43
|
+
}],
|
|
44
|
+
repSequence: ['up', 'down', 'up'],
|
|
45
|
+
formRules: [{
|
|
46
|
+
name: 'goingTooDeep',
|
|
47
|
+
message: "Don't go too deep — stop at 90 degrees to protect your shoulders",
|
|
48
|
+
severity: 'error',
|
|
49
|
+
angleName: 'leftElbow',
|
|
50
|
+
minAngle: 55,
|
|
51
|
+
maxAngle: 180
|
|
52
|
+
}],
|
|
53
|
+
holdDurationMs: 0
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=tricep-dip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TRICEP_DIP_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/tricep-dip.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,iBAAiC,GAAG;EAC/CC,IAAI,EAAE,YAAY;EAClBC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,YAAY;IAClBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,cAAc;IACpBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,IAAI;IACXC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEH,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;EACjCC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,cAAc;IACpBa,OAAO,EACL,kEAAkE;IACpEC,QAAQ,EAAE,OAAO;IACjBN,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE;AAClB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 23 = left hip, 25 = left knee, 27 = left ankle
|
|
5
|
+
// 24 = right hip, 26 = right knee, 28 = right ankle
|
|
6
|
+
// 11 = left shoulder, 12 = right shoulder
|
|
7
|
+
|
|
8
|
+
export const WALL_SIT_CONFIG = {
|
|
9
|
+
name: 'Wall Sit',
|
|
10
|
+
type: 'hold',
|
|
11
|
+
angles: [{
|
|
12
|
+
name: 'leftKnee',
|
|
13
|
+
landmarkA: 23,
|
|
14
|
+
// left hip
|
|
15
|
+
landmarkB: 25,
|
|
16
|
+
// left knee (vertex)
|
|
17
|
+
landmarkC: 27 // left ankle
|
|
18
|
+
}, {
|
|
19
|
+
name: 'rightKnee',
|
|
20
|
+
landmarkA: 24,
|
|
21
|
+
// right hip
|
|
22
|
+
landmarkB: 26,
|
|
23
|
+
// right knee (vertex)
|
|
24
|
+
landmarkC: 28 // right ankle
|
|
25
|
+
}, {
|
|
26
|
+
name: 'leftHip',
|
|
27
|
+
landmarkA: 11,
|
|
28
|
+
// left shoulder
|
|
29
|
+
landmarkB: 23,
|
|
30
|
+
// left hip (vertex)
|
|
31
|
+
landmarkC: 25 // left knee
|
|
32
|
+
}],
|
|
33
|
+
phases: [{
|
|
34
|
+
phase: 'hold',
|
|
35
|
+
angleName: 'leftKnee',
|
|
36
|
+
minAngle: 80,
|
|
37
|
+
maxAngle: 110
|
|
38
|
+
}],
|
|
39
|
+
repSequence: [],
|
|
40
|
+
formRules: [{
|
|
41
|
+
name: 'tooHigh',
|
|
42
|
+
message: 'Sit lower — your thighs should be parallel to the ground',
|
|
43
|
+
severity: 'warning',
|
|
44
|
+
angleName: 'leftKnee',
|
|
45
|
+
minAngle: 80,
|
|
46
|
+
maxAngle: 110
|
|
47
|
+
}, {
|
|
48
|
+
name: 'leaningForward',
|
|
49
|
+
message: 'Press your back flat against the wall',
|
|
50
|
+
severity: 'warning',
|
|
51
|
+
angleName: 'leftHip',
|
|
52
|
+
minAngle: 80,
|
|
53
|
+
maxAngle: 110
|
|
54
|
+
}],
|
|
55
|
+
holdDurationMs: 45000 // 45 seconds default
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=wall-sit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WALL_SIT_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/wall-sit.ts"],"mappings":";;AAEA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,eAA+B,GAAG;EAC7CC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,SAAS;IACfa,OAAO,EAAE,0DAA0D;IACnEC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,gBAAgB;IACtBa,OAAO,EAAE,uCAAuC;IAChDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE,KAAK,CAAE;AACzB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 13 = left elbow, 15 = left wrist
|
|
5
|
+
// 12 = right shoulder, 14 = right elbow, 16 = right wrist
|
|
6
|
+
// 23 = left hip, 25 = left knee, 27 = left ankle
|
|
7
|
+
// 24 = right hip, 26 = right knee, 28 = right ankle
|
|
8
|
+
|
|
9
|
+
export const WARRIOR_I_CONFIG = {
|
|
10
|
+
name: 'Warrior I (Virabhadrasana I)',
|
|
11
|
+
type: 'hold',
|
|
12
|
+
angles: [{
|
|
13
|
+
name: 'frontKnee',
|
|
14
|
+
landmarkA: 23,
|
|
15
|
+
// left hip
|
|
16
|
+
landmarkB: 25,
|
|
17
|
+
// left knee (vertex)
|
|
18
|
+
landmarkC: 27 // left ankle
|
|
19
|
+
}, {
|
|
20
|
+
name: 'backLeg',
|
|
21
|
+
landmarkA: 24,
|
|
22
|
+
// right hip
|
|
23
|
+
landmarkB: 26,
|
|
24
|
+
// right knee (vertex)
|
|
25
|
+
landmarkC: 28 // right ankle
|
|
26
|
+
}, {
|
|
27
|
+
name: 'leftArm',
|
|
28
|
+
landmarkA: 11,
|
|
29
|
+
// left shoulder
|
|
30
|
+
landmarkB: 13,
|
|
31
|
+
// left elbow (vertex)
|
|
32
|
+
landmarkC: 15 // left wrist
|
|
33
|
+
}, {
|
|
34
|
+
name: 'torso',
|
|
35
|
+
landmarkA: 11,
|
|
36
|
+
// left shoulder
|
|
37
|
+
landmarkB: 23,
|
|
38
|
+
// left hip (vertex)
|
|
39
|
+
landmarkC: 25 // left knee
|
|
40
|
+
}],
|
|
41
|
+
phases: [{
|
|
42
|
+
phase: 'hold',
|
|
43
|
+
angleName: 'frontKnee',
|
|
44
|
+
minAngle: 80,
|
|
45
|
+
maxAngle: 110
|
|
46
|
+
}],
|
|
47
|
+
repSequence: [],
|
|
48
|
+
formRules: [{
|
|
49
|
+
name: 'frontKneeTooStraight',
|
|
50
|
+
message: 'Bend your front knee deeper — aim for 90 degrees',
|
|
51
|
+
severity: 'warning',
|
|
52
|
+
angleName: 'frontKnee',
|
|
53
|
+
minAngle: 80,
|
|
54
|
+
maxAngle: 110
|
|
55
|
+
}, {
|
|
56
|
+
name: 'backLegBent',
|
|
57
|
+
message: 'Keep your back leg straight and strong',
|
|
58
|
+
severity: 'warning',
|
|
59
|
+
angleName: 'backLeg',
|
|
60
|
+
minAngle: 155,
|
|
61
|
+
maxAngle: 180
|
|
62
|
+
}, {
|
|
63
|
+
name: 'armsNotExtended',
|
|
64
|
+
message: 'Reach your arms up fully — straighten your elbows',
|
|
65
|
+
severity: 'info',
|
|
66
|
+
angleName: 'leftArm',
|
|
67
|
+
minAngle: 160,
|
|
68
|
+
maxAngle: 180
|
|
69
|
+
}, {
|
|
70
|
+
name: 'torsoLeaning',
|
|
71
|
+
message: 'Keep your torso upright over your hips',
|
|
72
|
+
severity: 'warning',
|
|
73
|
+
angleName: 'torso',
|
|
74
|
+
minAngle: 80,
|
|
75
|
+
maxAngle: 110
|
|
76
|
+
}],
|
|
77
|
+
holdDurationMs: 30000 // 30 seconds per side
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=warrior-i.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WARRIOR_I_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/warrior-i.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,gBAAgC,GAAG;EAC9CC,IAAI,EAAE,8BAA8B;EACpCC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,OAAO;IACbG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,sBAAsB;IAC5Ba,OAAO,EAAE,kDAAkD;IAC3DC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,aAAa;IACnBa,OAAO,EAAE,wCAAwC;IACjDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,iBAAiB;IACvBa,OAAO,EAAE,mDAAmD;IAC5DC,QAAQ,EAAE,MAAM;IAChBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,cAAc;IACpBa,OAAO,EAAE,wCAAwC;IACjDC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,OAAO;IAClBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE,KAAK,CAAE;AACzB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// MediaPipe Pose Landmark indices
|
|
4
|
+
// 11 = left shoulder, 13 = left elbow, 15 = left wrist
|
|
5
|
+
// 12 = right shoulder, 14 = right elbow, 16 = right wrist
|
|
6
|
+
// 23 = left hip, 25 = left knee, 27 = left ankle
|
|
7
|
+
// 24 = right hip, 26 = right knee, 28 = right ankle
|
|
8
|
+
|
|
9
|
+
export const WARRIOR_II_CONFIG = {
|
|
10
|
+
name: 'Warrior II (Virabhadrasana II)',
|
|
11
|
+
type: 'hold',
|
|
12
|
+
angles: [{
|
|
13
|
+
name: 'frontKnee',
|
|
14
|
+
landmarkA: 23,
|
|
15
|
+
// left hip
|
|
16
|
+
landmarkB: 25,
|
|
17
|
+
// left knee (vertex)
|
|
18
|
+
landmarkC: 27 // left ankle
|
|
19
|
+
}, {
|
|
20
|
+
name: 'backLeg',
|
|
21
|
+
landmarkA: 24,
|
|
22
|
+
// right hip
|
|
23
|
+
landmarkB: 26,
|
|
24
|
+
// right knee (vertex)
|
|
25
|
+
landmarkC: 28 // right ankle
|
|
26
|
+
}, {
|
|
27
|
+
name: 'leftArm',
|
|
28
|
+
landmarkA: 11,
|
|
29
|
+
// left shoulder
|
|
30
|
+
landmarkB: 13,
|
|
31
|
+
// left elbow (vertex)
|
|
32
|
+
landmarkC: 15 // left wrist
|
|
33
|
+
}, {
|
|
34
|
+
name: 'rightArm',
|
|
35
|
+
landmarkA: 12,
|
|
36
|
+
// right shoulder
|
|
37
|
+
landmarkB: 14,
|
|
38
|
+
// right elbow (vertex)
|
|
39
|
+
landmarkC: 16 // right wrist
|
|
40
|
+
}, {
|
|
41
|
+
name: 'torso',
|
|
42
|
+
landmarkA: 11,
|
|
43
|
+
// left shoulder
|
|
44
|
+
landmarkB: 23,
|
|
45
|
+
// left hip (vertex)
|
|
46
|
+
landmarkC: 25 // left knee
|
|
47
|
+
}],
|
|
48
|
+
phases: [{
|
|
49
|
+
phase: 'hold',
|
|
50
|
+
angleName: 'frontKnee',
|
|
51
|
+
minAngle: 80,
|
|
52
|
+
maxAngle: 110
|
|
53
|
+
}],
|
|
54
|
+
repSequence: [],
|
|
55
|
+
formRules: [{
|
|
56
|
+
name: 'frontKneeTooStraight',
|
|
57
|
+
message: 'Bend your front knee deeper — stack it over your ankle',
|
|
58
|
+
severity: 'warning',
|
|
59
|
+
angleName: 'frontKnee',
|
|
60
|
+
minAngle: 80,
|
|
61
|
+
maxAngle: 110
|
|
62
|
+
}, {
|
|
63
|
+
name: 'backLegBent',
|
|
64
|
+
message: 'Straighten your back leg fully',
|
|
65
|
+
severity: 'warning',
|
|
66
|
+
angleName: 'backLeg',
|
|
67
|
+
minAngle: 160,
|
|
68
|
+
maxAngle: 180
|
|
69
|
+
}, {
|
|
70
|
+
name: 'leftArmDrooping',
|
|
71
|
+
message: 'Extend your arms out fully — keep them level',
|
|
72
|
+
severity: 'info',
|
|
73
|
+
angleName: 'leftArm',
|
|
74
|
+
minAngle: 160,
|
|
75
|
+
maxAngle: 180
|
|
76
|
+
}, {
|
|
77
|
+
name: 'rightArmDrooping',
|
|
78
|
+
message: 'Extend your back arm out fully',
|
|
79
|
+
severity: 'info',
|
|
80
|
+
angleName: 'rightArm',
|
|
81
|
+
minAngle: 160,
|
|
82
|
+
maxAngle: 180
|
|
83
|
+
}],
|
|
84
|
+
holdDurationMs: 30000 // 30 seconds per side
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=warrior-ii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WARRIOR_II_CONFIG","name","type","angles","landmarkA","landmarkB","landmarkC","phases","phase","angleName","minAngle","maxAngle","repSequence","formRules","message","severity","holdDurationMs"],"sourceRoot":"../../../src","sources":["config/warrior-ii.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMA,iBAAiC,GAAG;EAC/CC,IAAI,EAAE,gCAAgC;EACtCC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,CACN;IACEF,IAAI,EAAE,WAAW;IACjBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,SAAS;IACfG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,UAAU;IAChBG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,EACD;IACEL,IAAI,EAAE,OAAO;IACbG,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE;IAAE;IACfC,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC,CACF;EACDC,MAAM,EAAE,CACN;IACEC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE,CACT;IACEZ,IAAI,EAAE,sBAAsB;IAC5Ba,OAAO,EAAE,wDAAwD;IACjEC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,WAAW;IACtBC,QAAQ,EAAE,EAAE;IACZC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,aAAa;IACnBa,OAAO,EAAE,gCAAgC;IACzCC,QAAQ,EAAE,SAAS;IACnBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,iBAAiB;IACvBa,OAAO,EAAE,8CAA8C;IACvDC,QAAQ,EAAE,MAAM;IAChBN,SAAS,EAAE,SAAS;IACpBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,EACD;IACEV,IAAI,EAAE,kBAAkB;IACxBa,OAAO,EAAE,gCAAgC;IACzCC,QAAQ,EAAE,MAAM;IAChBN,SAAS,EAAE,UAAU;IACrBC,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE;EACZ,CAAC,CACF;EACDK,cAAc,EAAE,KAAK,CAAE;AACzB,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -3,5 +3,24 @@
|
|
|
3
3
|
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
4
|
const nitroPoseExercises = NitroModules.createHybridObject('NitroPoseExercises');
|
|
5
5
|
export { nitroPoseExercises };
|
|
6
|
+
// ─── Rep-Based Exercises ─────────────────────────────────────
|
|
6
7
|
export { PUSHUP_CONFIG } from "./config/pushup.js";
|
|
8
|
+
export { SQUAT_CONFIG } from "./config/squat.js";
|
|
9
|
+
export { BICEP_CURL_CONFIG } from "./config/bicep-curl.js";
|
|
10
|
+
export { SHOULDER_PRESS_CONFIG } from "./config/shoulder-press.js";
|
|
11
|
+
export { LUNGE_CONFIG } from "./config/lunge.js";
|
|
12
|
+
export { SITUP_CONFIG } from "./config/situp.js";
|
|
13
|
+
export { TRICEP_DIP_CONFIG } from "./config/tricep-dip.js";
|
|
14
|
+
|
|
15
|
+
// ─── Hold-Based Exercises ────────────────────────────────────
|
|
16
|
+
export { PLANK_CONFIG } from "./config/plank.js";
|
|
17
|
+
export { WALL_SIT_CONFIG } from "./config/wall-sit.js";
|
|
18
|
+
|
|
19
|
+
// ─── Yoga Poses ──────────────────────────────────────────────
|
|
20
|
+
export { TREE_POSE_CONFIG } from "./config/tree-pose.js";
|
|
21
|
+
export { WARRIOR_I_CONFIG } from "./config/warrior-i.js";
|
|
22
|
+
export { WARRIOR_II_CONFIG } from "./config/warrior-ii.js";
|
|
23
|
+
export { DOWNWARD_DOG_CONFIG } from "./config/downward-dog.js";
|
|
24
|
+
export { CHAIR_POSE_CONFIG } from "./config/chair-pose.js";
|
|
25
|
+
export { COBRA_POSE_CONFIG } from "./config/cobra-pose.js";
|
|
7
26
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroModules","nitroPoseExercises","createHybridObject","PUSHUP_CONFIG"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAIzD,MAAMC,kBAAkB,GACtBD,YAAY,CAACE,kBAAkB,CAAqB,oBAAoB,CAAC;AAE3E,SAASD,kBAAkB;AAoB3B,SAASE,aAAa,QAAQ,oBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["NitroModules","nitroPoseExercises","createHybridObject","PUSHUP_CONFIG","SQUAT_CONFIG","BICEP_CURL_CONFIG","SHOULDER_PRESS_CONFIG","LUNGE_CONFIG","SITUP_CONFIG","TRICEP_DIP_CONFIG","PLANK_CONFIG","WALL_SIT_CONFIG","TREE_POSE_CONFIG","WARRIOR_I_CONFIG","WARRIOR_II_CONFIG","DOWNWARD_DOG_CONFIG","CHAIR_POSE_CONFIG","COBRA_POSE_CONFIG"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAIzD,MAAMC,kBAAkB,GACtBD,YAAY,CAACE,kBAAkB,CAAqB,oBAAoB,CAAC;AAE3E,SAASD,kBAAkB;AAoB3B;AACA,SAASE,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,iBAAiB,QAAQ,wBAAqB;;AAEvD;AACA,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,eAAe,QAAQ,sBAAmB;;AAEnD;AACA,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,iBAAiB,QAAQ,wBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bicep-curl.d.ts","sourceRoot":"","sources":["../../../../src/config/bicep-curl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMlE,eAAO,MAAM,iBAAiB,EAAE,cAyD/B,CAAC"}
|