@adminide-stack/yantra-mobile 12.0.142 → 12.0.145-alpha.0
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/lib/features/attachments/displayUserMessageText.js +2 -2
- package/lib/features/attachments/displayUserMessageText.js.map +1 -1
- package/lib/features/devices/readings.js.map +1 -1
- package/lib/features/devices/session.js +2 -22
- package/lib/features/devices/session.js.map +1 -1
- package/lib/features/notion/NotionAgentPanel.js +987 -0
- package/lib/features/notion/NotionAgentPanel.js.map +1 -0
- package/lib/features/notion/NotionAskAiSheet.js +362 -0
- package/lib/features/notion/NotionAskAiSheet.js.map +1 -0
- package/lib/features/notion/NotionBlockView.js +4 -3
- package/lib/features/notion/NotionBlockView.js.map +1 -1
- package/lib/features/notion/NotionConnectionsSheet.js +47 -13
- package/lib/features/notion/NotionConnectionsSheet.js.map +1 -1
- package/lib/features/notion/NotionPageView.js +68 -8
- package/lib/features/notion/NotionPageView.js.map +1 -1
- package/lib/features/notion/NotionSidebarSections.js +1 -1
- package/lib/features/notion/NotionSidebarSections.js.map +1 -1
- package/lib/features/notion/NotionWorkspaceView.js +14 -9
- package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
- package/lib/features/notion/database/DatabaseCells.js +3 -1
- package/lib/features/notion/database/DatabaseCells.js.map +1 -1
- package/lib/features/notion/database/DatabaseDateLayouts.js +1 -1
- package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -1
- package/lib/features/notion/database/NotionDatabaseView.js +1 -1
- package/lib/features/notion/database/NotionDatabaseView.js.map +1 -1
- package/lib/features/notion/notionAgentRunStatus.js +2 -2
- package/lib/features/notion/notionAgentRunStatus.js.map +1 -1
- package/lib/features/notion/notionAgentRuns.js +57 -0
- package/lib/features/notion/notionAgentRuns.js.map +1 -0
- package/lib/features/notion/notionAiContext.js +91 -0
- package/lib/features/notion/notionAiContext.js.map +1 -0
- package/lib/features/notion/notionConnections.js +42 -4
- package/lib/features/notion/notionConnections.js.map +1 -1
- package/lib/features/notion/notionDocuments.js +61 -1
- package/lib/features/notion/notionDocuments.js.map +1 -1
- package/lib/features/notion/notionNotesAgent.js +173 -3
- package/lib/features/notion/notionNotesAgent.js.map +1 -1
- package/lib/features/notion/notionPageKinds.js +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +229 -97
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +33 -7
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/buildJob.js +2 -2
- package/lib/features/webbuilder/buildJob.js.map +1 -1
- package/lib/features/webbuilder/codeFiles.js +18 -1
- package/lib/features/webbuilder/codeFiles.js.map +1 -1
- package/lib/features/webbuilder/components/BottomTabs.js.map +1 -1
- package/lib/features/webbuilder/components/CodeView.js +134 -56
- package/lib/features/webbuilder/components/CodeView.js.map +1 -1
- package/lib/features/webbuilder/components/Composer.js +2 -2
- package/lib/features/webbuilder/components/Composer.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewFrame.js +19 -3
- package/lib/features/webbuilder/components/PreviewFrame.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewScreen.js +310 -46
- package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectChat.js +141 -12
- package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectSheets.js +792 -0
- package/lib/features/webbuilder/components/ProjectSheets.js.map +1 -0
- package/lib/features/webbuilder/components/ProjectsScreen.js +14 -2
- package/lib/features/webbuilder/components/ProjectsScreen.js.map +1 -1
- package/lib/features/webbuilder/components/PublishSheet.js +914 -58
- package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
- package/lib/features/webbuilder/components/TemplateCard.js +9 -6
- package/lib/features/webbuilder/components/TemplateCard.js.map +1 -1
- package/lib/features/webbuilder/components/TemplatesSheet.js +5 -17
- package/lib/features/webbuilder/components/TemplatesSheet.js.map +1 -1
- package/lib/features/webbuilder/connectorTemplates.js +171 -0
- package/lib/features/webbuilder/connectorTemplates.js.map +1 -0
- package/lib/features/webbuilder/fileTree.js +163 -0
- package/lib/features/webbuilder/fileTree.js.map +1 -0
- package/lib/features/webbuilder/followUps.js +67 -0
- package/lib/features/webbuilder/followUps.js.map +1 -0
- package/lib/features/webbuilder/previewProbe.js +49 -0
- package/lib/features/webbuilder/previewProbe.js.map +1 -0
- package/lib/features/webbuilder/previewRoutes.js +156 -0
- package/lib/features/webbuilder/previewRoutes.js.map +1 -0
- package/lib/features/webbuilder/projectTools.js +341 -0
- package/lib/features/webbuilder/projectTools.js.map +1 -0
- package/lib/features/webbuilder/publishTools.js +475 -0
- package/lib/features/webbuilder/publishTools.js.map +1 -0
- package/lib/features/webbuilder/sleepNotice.js +13 -0
- package/lib/features/webbuilder/sleepNotice.js.map +1 -0
- package/lib/features/webbuilder/stepLabels.js +37 -7
- package/lib/features/webbuilder/stepLabels.js.map +1 -1
- package/lib/features/webbuilder/studioCatalog.js +5 -1
- package/lib/features/webbuilder/studioCatalog.js.map +1 -1
- package/lib/features/webbuilder/templateCatalog.js +140 -0
- package/lib/features/webbuilder/templateCatalog.js.map +1 -0
- package/lib/features/webbuilder/webbuilderPrompts.js +31 -5
- package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
- package/lib/features/webbuilder/workflow.js +8 -4
- package/lib/features/webbuilder/workflow.js.map +1 -1
- package/lib/screens/Devices/index.js +3 -205
- package/lib/screens/Devices/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +9 -6
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -1
- package/lib/screens/WebBuilderNative/index.js +1 -1
- package/lib/screens/WebBuilderNative/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/keepAlive.js +53 -3
- package/lib/screens/WebBuilderNative/keepAlive.js.map +1 -1
- package/lib/screens/WebBuilderNative/unreachableRetry.js +23 -0
- package/lib/screens/WebBuilderNative/unreachableRetry.js.map +1 -0
- package/lib/screens/WebBuilderNative/useConnectorTemplates.js +37 -0
- package/lib/screens/WebBuilderNative/useConnectorTemplates.js.map +1 -0
- package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js +6 -0
- package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +302 -40
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderJobs.js +2 -2
- package/lib/screens/WebBuilderNative/useWebBuilderJobs.js.map +1 -1
- package/lib/screens/WebBuilderNative/versionUndo.js +1 -1
- package/lib/screens/WebBuilderNative/versionUndo.js.map +1 -1
- package/lib/screens/WebBuilderNative/webbuilderTransport.js +147 -77
- package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
- package/package.json +4 -4
- package/lib/features/devices/bodyComposition.js +0 -116
- package/lib/features/devices/bodyComposition.js.map +0 -1
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
const WATER_FRACTION_OF_FFM = 0.72;
|
|
2
|
-
const BONE_FRACTION_OF_FFM = 0.0497;
|
|
3
|
-
const round1 = (n) => Math.round(n * 10) / 10;
|
|
4
|
-
const round2 = (n) => Math.round(n * 100) / 100;
|
|
5
|
-
function computeBodyComposition(input) {
|
|
6
|
-
const {
|
|
7
|
-
weightKg,
|
|
8
|
-
bodyFatPct,
|
|
9
|
-
heightCm,
|
|
10
|
-
age
|
|
11
|
-
} = input;
|
|
12
|
-
const male = input.sex === "male";
|
|
13
|
-
const heightM = heightCm / 100;
|
|
14
|
-
const bmi = heightM > 0 ? weightKg / (heightM * heightM) : 0;
|
|
15
|
-
const fat = Math.max(0, Math.min(75, bodyFatPct)) / 100;
|
|
16
|
-
const fatMassKg = weightKg * fat;
|
|
17
|
-
const leanMassKg = weightKg - fatMassKg;
|
|
18
|
-
const boneMassKg = leanMassKg * BONE_FRACTION_OF_FFM;
|
|
19
|
-
const muscleMassKg = leanMassKg - boneMassKg;
|
|
20
|
-
const bodyWaterKg = leanMassKg * WATER_FRACTION_OF_FFM;
|
|
21
|
-
const proteinKg = Math.max(0, leanMassKg - bodyWaterKg - boneMassKg);
|
|
22
|
-
let skeletalMuscleMassKg;
|
|
23
|
-
if (input.impedanceOhm && input.impedanceOhm > 0) {
|
|
24
|
-
const sexTerm = male ? 3.825 : 0;
|
|
25
|
-
skeletalMuscleMassKg = 0.401 * (heightCm * heightCm) / input.impedanceOhm + sexTerm - 0.071 * age + 5.102;
|
|
26
|
-
skeletalMuscleMassKg = Math.max(0, Math.min(muscleMassKg, skeletalMuscleMassKg));
|
|
27
|
-
} else {
|
|
28
|
-
skeletalMuscleMassKg = muscleMassKg * (male ? 0.68 : 0.62);
|
|
29
|
-
}
|
|
30
|
-
const bmr = Math.round(370 + 21.6 * leanMassKg);
|
|
31
|
-
const metabolicAge = estimateMetabolicAge(bmr, heightCm, male, age);
|
|
32
|
-
const visceralFat = Math.max(1, Math.min(59, Math.round(fatMassKg * (male ? 1 : 0.85) / 2.2 + age / 12 - 3)));
|
|
33
|
-
const subcutaneousFatPct = Math.max(0, bodyFatPct - visceralFat * 0.33);
|
|
34
|
-
const pct = (kg) => weightKg > 0 ? kg / weightKg * 100 : 0;
|
|
35
|
-
return {
|
|
36
|
-
bmi: round1(bmi),
|
|
37
|
-
fatMassKg: round2(fatMassKg),
|
|
38
|
-
leanMassKg: round2(leanMassKg),
|
|
39
|
-
muscleMassKg: round2(muscleMassKg),
|
|
40
|
-
musclePct: round1(pct(muscleMassKg)),
|
|
41
|
-
skeletalMuscleMassKg: round2(skeletalMuscleMassKg),
|
|
42
|
-
skeletalMusclePct: round1(pct(skeletalMuscleMassKg)),
|
|
43
|
-
boneMassKg: round2(boneMassKg),
|
|
44
|
-
bonePct: round1(pct(boneMassKg)),
|
|
45
|
-
bodyWaterKg: round2(bodyWaterKg),
|
|
46
|
-
bodyWaterPct: round1(pct(bodyWaterKg)),
|
|
47
|
-
proteinKg: round2(proteinKg),
|
|
48
|
-
proteinPct: round1(pct(proteinKg)),
|
|
49
|
-
bmr,
|
|
50
|
-
metabolicAge,
|
|
51
|
-
visceralFat,
|
|
52
|
-
subcutaneousFatPct: round1(subcutaneousFatPct)
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
function compositionRows(c, units = "metric") {
|
|
56
|
-
const kg = (v) => units === "imperial" ? `${Math.round(v / 0.45359237 * 10) / 10} lb` : `${v} kg`;
|
|
57
|
-
const pct = (v) => `${v}%`;
|
|
58
|
-
return [{
|
|
59
|
-
label: "BMI",
|
|
60
|
-
value: String(c.bmi)
|
|
61
|
-
}, {
|
|
62
|
-
label: "Fat mass",
|
|
63
|
-
value: kg(c.fatMassKg)
|
|
64
|
-
}, {
|
|
65
|
-
label: "Fat-free mass",
|
|
66
|
-
value: kg(c.leanMassKg)
|
|
67
|
-
}, {
|
|
68
|
-
label: "Muscle mass",
|
|
69
|
-
value: kg(c.muscleMassKg)
|
|
70
|
-
}, {
|
|
71
|
-
label: "Muscle",
|
|
72
|
-
value: pct(c.musclePct)
|
|
73
|
-
}, {
|
|
74
|
-
label: "Skeletal muscle",
|
|
75
|
-
value: kg(c.skeletalMuscleMassKg)
|
|
76
|
-
}, {
|
|
77
|
-
label: "Bone mass",
|
|
78
|
-
value: kg(c.boneMassKg)
|
|
79
|
-
}, {
|
|
80
|
-
label: "Body water",
|
|
81
|
-
value: pct(c.bodyWaterPct)
|
|
82
|
-
}, {
|
|
83
|
-
label: "Protein",
|
|
84
|
-
value: pct(c.proteinPct)
|
|
85
|
-
}, {
|
|
86
|
-
label: "BMR",
|
|
87
|
-
value: `${c.bmr} kcal`
|
|
88
|
-
}, {
|
|
89
|
-
label: "Metabolic age",
|
|
90
|
-
value: `${c.metabolicAge} yrs`
|
|
91
|
-
}, {
|
|
92
|
-
label: "Visceral fat",
|
|
93
|
-
value: String(c.visceralFat)
|
|
94
|
-
}, {
|
|
95
|
-
label: "Subcutaneous fat",
|
|
96
|
-
value: pct(c.subcutaneousFatPct)
|
|
97
|
-
}];
|
|
98
|
-
}
|
|
99
|
-
function estimateMetabolicAge(bmr, heightCm, male, age) {
|
|
100
|
-
const ffmAt = (a) => {
|
|
101
|
-
const base = male ? 0.407 * heightCm - 15 : 0.357 * heightCm - 13;
|
|
102
|
-
const decline = a > 25 ? (a - 25) * 0.1 : 0;
|
|
103
|
-
return Math.max(20, base - decline);
|
|
104
|
-
};
|
|
105
|
-
const bmrAt = (a) => 370 + 21.6 * ffmAt(a);
|
|
106
|
-
let best = age;
|
|
107
|
-
let bestDiff = Infinity;
|
|
108
|
-
for (let a = 18; a <= 80; a++) {
|
|
109
|
-
const diff = Math.abs(bmrAt(a) - bmr);
|
|
110
|
-
if (diff < bestDiff) {
|
|
111
|
-
bestDiff = diff;
|
|
112
|
-
best = a;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return best;
|
|
116
|
-
}export{compositionRows,computeBodyComposition};//# sourceMappingURL=bodyComposition.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bodyComposition.js","sources":["../../../src/features/devices/bodyComposition.ts"],"sourcesContent":["/**\n * Full body composition from a scale reading, using established published\n * formulas (not any vendor's proprietary coefficients).\n *\n * A body-fat scale measures weight and bioelectrical impedance and, from the\n * person's height/age/sex, estimates body-fat percentage. Everything else a\n * scale app shows (fat-free mass, muscle, bone, body water, protein, BMR,\n * metabolic age, visceral/subcutaneous fat) is derived from weight and body\n * fat with standard equations:\n *\n * - Fat mass / fat-free mass: definitional.\n * - Total body water: FFM is ~72% water (the standard hydration constant).\n * - Bone mineral: a small, roughly fixed fraction of fat-free mass.\n * - Muscle mass = fat-free mass minus bone mineral; protein is the dry\n * non-mineral remainder.\n * - BMR: Katch-McArdle (370 + 21.6 x FFM), which depends only on lean mass.\n * - Skeletal muscle: Janssen's impedance equation when impedance is known.\n *\n * These reproduce a RENPHO/QN scale's derived numbers closely because the scale\n * uses the same public science; the only vendor-specific step is the body-fat\n * estimate, which the device sends directly, so Yantra does not recompute it.\n */\n\nexport interface BodyCompositionInput {\n weightKg: number;\n bodyFatPct: number;\n heightCm: number;\n age: number;\n sex: 'male' | 'female' | 'unspecified';\n /** Whole-body impedance in ohms, when the scale reported it (for skeletal muscle). */\n impedanceOhm?: number;\n}\n\nexport interface BodyComposition {\n bmi: number;\n fatMassKg: number;\n /** Fat-free (lean) mass. */\n leanMassKg: number;\n muscleMassKg: number;\n musclePct: number;\n skeletalMuscleMassKg: number;\n skeletalMusclePct: number;\n boneMassKg: number;\n bonePct: number;\n bodyWaterKg: number;\n bodyWaterPct: number;\n proteinKg: number;\n proteinPct: number;\n /** Basal metabolic rate, kcal/day. */\n bmr: number;\n metabolicAge: number;\n /** Visceral fat rating (unitless, like the scale's 1-59 scale). */\n visceralFat: number;\n subcutaneousFatPct: number;\n}\n\n/** Fraction of fat-free mass that is water (standard hydration constant). */\nconst WATER_FRACTION_OF_FFM = 0.72;\n/** Fraction of fat-free mass that is bone mineral. */\nconst BONE_FRACTION_OF_FFM = 0.0497;\n\nconst round1 = (n: number) => Math.round(n * 10) / 10;\nconst round2 = (n: number) => Math.round(n * 100) / 100;\n\nexport function computeBodyComposition(input: BodyCompositionInput): BodyComposition {\n const { weightKg, bodyFatPct, heightCm, age } = input;\n const male = input.sex === 'male';\n const heightM = heightCm / 100;\n\n const bmi = heightM > 0 ? weightKg / (heightM * heightM) : 0;\n const fat = Math.max(0, Math.min(75, bodyFatPct)) / 100;\n const fatMassKg = weightKg * fat;\n const leanMassKg = weightKg - fatMassKg;\n\n const boneMassKg = leanMassKg * BONE_FRACTION_OF_FFM;\n const muscleMassKg = leanMassKg - boneMassKg;\n const bodyWaterKg = leanMassKg * WATER_FRACTION_OF_FFM;\n const proteinKg = Math.max(0, leanMassKg - bodyWaterKg - boneMassKg);\n\n // Skeletal muscle: Janssen (2000) when impedance is known, else a fraction of muscle.\n let skeletalMuscleMassKg: number;\n if (input.impedanceOhm && input.impedanceOhm > 0) {\n const sexTerm = male ? 3.825 : 0;\n skeletalMuscleMassKg =\n (0.401 * (heightCm * heightCm)) / input.impedanceOhm + sexTerm - 0.071 * age + 5.102;\n skeletalMuscleMassKg = Math.max(0, Math.min(muscleMassKg, skeletalMuscleMassKg));\n } else {\n skeletalMuscleMassKg = muscleMassKg * (male ? 0.68 : 0.62);\n }\n\n // Katch-McArdle: basal metabolic rate from lean mass.\n const bmr = Math.round(370 + 21.6 * leanMassKg);\n\n // Metabolic age: how old the person's BMR looks against the BMR a lean,\n // average person of their height would have at each age. Clamped to 18-80.\n const metabolicAge = estimateMetabolicAge(bmr, heightCm, male, age);\n\n // Visceral fat rating: rises with body-fat mass and age; a standard-style\n // index (not a clinical measure), clamped to the usual 1-59 range.\n const visceralFat = Math.max(\n 1,\n Math.min(59, Math.round((fatMassKg * (male ? 1.0 : 0.85)) / 2.2 + age / 12 - 3)),\n );\n // Subcutaneous fat is the body fat that is not visceral.\n const subcutaneousFatPct = Math.max(0, bodyFatPct - visceralFat * 0.33);\n\n const pct = (kg: number) => (weightKg > 0 ? (kg / weightKg) * 100 : 0);\n return {\n bmi: round1(bmi),\n fatMassKg: round2(fatMassKg),\n leanMassKg: round2(leanMassKg),\n muscleMassKg: round2(muscleMassKg),\n musclePct: round1(pct(muscleMassKg)),\n skeletalMuscleMassKg: round2(skeletalMuscleMassKg),\n skeletalMusclePct: round1(pct(skeletalMuscleMassKg)),\n boneMassKg: round2(boneMassKg),\n bonePct: round1(pct(boneMassKg)),\n bodyWaterKg: round2(bodyWaterKg),\n bodyWaterPct: round1(pct(bodyWaterKg)),\n proteinKg: round2(proteinKg),\n proteinPct: round1(pct(proteinKg)),\n bmr,\n metabolicAge,\n visceralFat,\n subcutaneousFatPct: round1(subcutaneousFatPct),\n };\n}\n\n/** The composition as labelled rows for a details view, in the person's units. */\nexport function compositionRows(\n c: BodyComposition,\n units: 'metric' | 'imperial' = 'metric',\n): Array<{ label: string; value: string }> {\n const kg = (v: number) =>\n units === 'imperial' ? `${Math.round((v / 0.45359237) * 10) / 10} lb` : `${v} kg`;\n const pct = (v: number) => `${v}%`;\n return [\n { label: 'BMI', value: String(c.bmi) },\n { label: 'Fat mass', value: kg(c.fatMassKg) },\n { label: 'Fat-free mass', value: kg(c.leanMassKg) },\n { label: 'Muscle mass', value: kg(c.muscleMassKg) },\n { label: 'Muscle', value: pct(c.musclePct) },\n { label: 'Skeletal muscle', value: kg(c.skeletalMuscleMassKg) },\n { label: 'Bone mass', value: kg(c.boneMassKg) },\n { label: 'Body water', value: pct(c.bodyWaterPct) },\n { label: 'Protein', value: pct(c.proteinPct) },\n { label: 'BMR', value: `${c.bmr} kcal` },\n { label: 'Metabolic age', value: `${c.metabolicAge} yrs` },\n { label: 'Visceral fat', value: String(c.visceralFat) },\n { label: 'Subcutaneous fat', value: pct(c.subcutaneousFatPct) },\n ];\n}\n\n/** Compare the person's BMR to the typical BMR by age for their height and sex. */\nfunction estimateMetabolicAge(bmr: number, heightCm: number, male: boolean, age: number): number {\n // Typical fat-free mass by age (slow decline past 25), then its Katch-McArdle BMR.\n const ffmAt = (a: number) => {\n const base = male ? 0.407 * heightCm - 15 : 0.357 * heightCm - 13;\n const decline = a > 25 ? (a - 25) * 0.1 : 0;\n return Math.max(20, base - decline);\n };\n const bmrAt = (a: number) => 370 + 21.6 * ffmAt(a);\n let best = age;\n let bestDiff = Infinity;\n for (let a = 18; a <= 80; a++) {\n const diff = Math.abs(bmrAt(a) - bmr);\n if (diff < bestDiff) {\n bestDiff = diff;\n best = a;\n }\n }\n return best;\n}\n"],"names":[],"mappings":"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"}
|