1import{a as e,n as t}from"./utils-j19nf4rh.js";import{t as n}from"./datetime-o1oa8kab.js";import{r}from"./parse-iso-nsurqr8m.js";import{n as i,o as a,t as o}from"./registry-jjmq0p36.js";var s=a.metricIds,c=[`sleep`,`hrv`,`steps`],l=[`sleep`,`hrv`],u=s,d={up:`â²`,down:`â¼`,flat:`â`},f=`yyyy-MM-dd'T'HH:mm:ss`;function p(){return n.now().toFormat(f)}var m={isMetric:!0};function h(e,t){let n=r(e),i=r(t);return n===null||i===null?null:Math.round(i.startOf(`day`).diff(n.startOf(`day`),`days`).days)}function g(e,t){return e.cumulative===!0?t.date:t.measuredAt??t.date}function _(e){let t=r(e);return t?t.toFormat(`LLL d`):``}function v(e){let t=r(e);return t?`${t.toFormat(`ccc`)} · ${t.toFormat(`LLL d`)}`:``}function ee(e){let t=r(e);return t?t.toFormat(`LLL`):``}function te(e,t,n){let i=r(e),a=r(t);if(i===null||a===null)return``;let o=Math.floor(a.diff(i,`minutes`).minutes);if(o<0)return``;if(o<1)return n(`just now`);if(o<60)return o===1?n(`1 minute ago`):n(`{n} minutes ago`,{n:o});let s=Math.floor(o/60);if(s<24)return s===1?n(`1 hour ago`):n(`{n} hours ago`,{n:s});let c=Math.floor(s/24);return c===1?n(`1 day ago`):n(`{n} days ago`,{n:c})}function ne(e,t){switch(e){case`weight`:return t(`This morning`);case`steps`:case`dailyhr`:case`calories`:case`bp`:return t(`Today`);default:return t(`Last night`)}}function re(e,t,n,r){if(t!==null&&t>=0&&t<3)return t===0?ne(e,r):t===1?r(`Yesterday`):r(`{daysFromToday} days ago`,{daysFromToday:t});let i=_(n);return i===``?`â`:i}var y={Apple:`Apple Health`,HealthKit:`Apple Health`,Garmin:`Garmin Connect`,GarminHealth:`Garmin Connect`,HealthConnect:`Health Connect`,Android:`Health Connect`,Rouvy:`ROUVY`,Whoop:`Whoop`,Oura:`Oura`,Withings:`Withings`};function b(e){return e?y[e]??e:``}function ie(e,t){return b(e)===b(t)}var ae=new Set([`Manual`,`Simulated`]);function oe(e){return!!e&&!ae.has(e)}function x(e,t,n){let r=null,i=``;for(let n of e){let e=t(n)??``;(r===null||e>i)&&(r=n,i=e)}return r===null?null:n(r)}function S(e,t){return e[t.daySummaryKey]??[]}function C(e){let t=e?.id;return typeof t==`number`?t:0}function w(e,t){let n=null,r=``;for(let i of e){let e=t.measuredAtOf(i)??``;(n===null||e>r||e===r&&C(i)>C(n))&&(n=i,r=e)}return n}function T(e,t){let n=null,r=-1/0,i=``;for(let a of e){let e=t.extractValue(a);if(e===null)continue;let o=t.measuredAtOf(a)??``;(n===null||e>r||e===r&&o>i||e===r&&o===i&&C(a)>C(n))&&(n=a,r=e,i=o)}return n}function E(e,t){return t.featuredBy===`value`?T(e,t)??w(e,t):w(e,t)}function D(e,t){return e.map(e=>{let n=E(S(e,t),t),r={date:e.date,value:n===null?null:t.extractValue(n),source:n===null?null:Y(n)};return t.metricTypeOf?{...r,metricType:n===null?null:t.metricTypeOf(n)}:r})}function se(e,t){if(!t.pairedExtractValue)return null;let n=E(S(e,t),t);return n===null?null:t.pairedExtractValue(n)}function O(e,t){return e.map(e=>({date:e.date,value:se(e,t)}))}function k(e){return e.map(e=>e.value).filter(e=>e!==null)}function A(e){let t=k(e);return t.length===0?null:t.reduce((e,t)=>e+t,0)/t.length}function j(e,t){return e.slice(-t)}function M(e,t,r){let i=new Map;for(let t of e)i.set(t.date.slice(0,10),t);let a=n.fromISO(t),o=[];for(let e=r-1;e>=0;e--){let t=a.minus({days:e}).toFormat(`yyyy-MM-dd`),n=i.get(t);o.push(n?{...n,date:t}:{date:t,value:null})}return o}function ce(e){let t=null;for(let n=e.length-1;n>=0;n--){let r=e[n];if(!(r.value===null||r.metricType==null)){if(t===null)t=r.metricType;else if(r.metricType!==t)return n+1}}return 0}function N(e,t){return t.metricTypeOf?ce(e):0}function P(e,t){return e.map((e,n)=>n<t&&e.value!==null?{...e,value:null}:e)}function le(e,t){return P(e,N(e,t))}function ue(e,t,n,r=90){let i=M(D(e,t),n,r),a=N(i,t),o=P(i,a),s;if(t.paired&&t.pairedExtractValue){let i=P(M(O(e,t),n,r),a);s={mean14:A(j(i,14)),mean90:A(i)}}return{calendar:i,comparable:o,mean14:A(j(o,14)),mean90:A(o),secondary:s}}function de(e){return e.filter(e=>e.value!==null).length}function F(e,t,n,r){let i=t-n,a=i>0?`up`:i<0?`down`:`flat`,o=a===`up`?`+`:a===`down`?`â`:``;if(e.deltaIsPercent){let e=n===0?0:Math.round(i/n*100);return{direction:a,display:`${o}${Math.abs(e)}%`}}return{direction:a,display:`${o}${e.formatDelta(Math.abs(i),r)}`}}function I(e,t,n,r,i=m){if(t===null||n===null)return null;let a=F(e,t,n,i);if(e.paired&&r&&r.mean14!==null&&r.mean90!==null){let t=F(e,r.mean14,r.mean90,i),o=e.formatPaired?e.formatPaired(n,r.mean90,i):e.formatValue(n,i);return{direction:a.direction,display:`${a.display}/${t.display}`,baselineDisplay:o}}return{direction:a.direction,display:a.display,baselineDisplay:e.formatValue(n,i)}}function L(e,t,n,r=m){return t===null?null:e.paired&&e.formatPaired&&n!=null?e.formatPaired(t,n,r):e.formatValue(t,r)}function R(e,t){return e.displayWindow?e.displayWindow([...t]):[0,t.length?Math.max(...t):0]}function z(e,t,n){if(e===null)return 0;let r=n-t;return r<=0?+(e>0):Ae((e-t)/r)}function B(e,t){return R(t,k(e))}function V(e,t,n,r,i=m,a){let o=D(e,t);if(k(o).length===0)return[];let s=Math.max(1,Math.floor(a?.windowDays??14)),c=M(o,n,s),l=U(e,t,n,s),u=e=>a?.rangeStart!==void 0&&X(e)<a.rangeStart,[d,f]=B(c.filter(e=>!u(e.date)),t),p=r?X(r):null,h=c.map((e,n)=>{let r=e.value,o=p!==null&&X(e.date)===p;return u(e.date)?{date:e.date,value:null,valueDisplay:`â`,barFraction:0,incompleteToday:!1,anchored:a?.anchorDate!==void 0&&X(e.date)===a.anchorDate,preWindow:!0}:{date:e.date,value:r,valueDisplay:r===null?`â`:W(t,r,l?.[n]?.value??null,i),barFraction:z(r,d,f),incompleteToday:o&&t.cumulative===!0&&r!==null,anchored:a?.anchorDate!==void 0&&X(e.date)===a.anchorDate}}).reverse();if(a?.includeToday===!0&&p!==null&&p>X(n)){let n=o.find(e=>X(e.date)===p)?.value??null,r=U(e,t,p,1)?.[0]?.value??null;h.unshift({date:p,value:n,valueDisplay:n===null?`â`:W(t,n,r,i),barFraction:z(n,d,f),incompleteToday:t.cumulative===!0&&n!==null,isToday:!0,anchored:a?.anchorDate===p})}return h}function H(e,t,n){let r=Math.floor(e/n)*n,i=Math.ceil(t/n)*n,a=[];for(let e=r;e<=i+n/1e6;e+=n)a.push(Math.round(e*1e6)/1e6);return{lo:r,hi:i,ticks:a}}function fe(e,t,n,r){t>e||(t=e+1);let i=n;if(i===void 0||i<=0){let n=(t-e)/3,a=10**Math.floor(Math.log10(n)),o=r??(Number.isInteger(e)&&Number.isInteger(t)),s=+!!o;i=[1,2,2.5,5,10].map(e=>e*a).filter(e=>!o||Number.isInteger(e)).find(e=>e>=n&&e>=s)??Math.max(10*a,s)}let a=H(e,t,i);for(;a.ticks.length>7;)i*=2,a=H(e,t,i);return a}function U(e,t,n,r){return t.pairedExtractValue&&t.formatPaired?M(O(e,t),n,r):null}function W(e,t,n,r){return n!==null&&e.formatPaired?e.formatPaired(t,n,r):e.formatValue(t,r)}function G(e,t,n,r){let i=M(D(e,t),n,r),a=k(i);return a.length===0?null:{series:i,scale:fe(Math.min(...a),Math.max(...a),t.axisStep,a.every(Number.isInteger))}}function K(e,t){return t>1?e/(t-1):.5}function pe(e,t,n,r={}){let{highlightLastDays:i=14,anchorDate:a,bandEndDate:o,rangeDays:s=90,ctx:c=m}=r,l=G(e,t,n,s);if(l===null)return[];let{series:u,scale:{lo:d,hi:f}}=l,p=U(e,t,n,s),h=o===void 0?-1:u.findIndex(e=>X(e.date)===o),g=h>=0?h:u.length-1,_=Math.max(0,g-i+1);return u.map((e,n)=>({date:e.date,value:e.value,metricType:e.metricType??null,source:e.source??null,x:K(n,u.length),y:e.value===null?null:z(e.value,d,f),valueDisplay:e.value===null?null:W(t,e.value,p?.[n]?.value??null,c),highlighted:n>=_&&n<=g,anchored:a!==void 0&&X(e.date)===a}))}var me=.92;function he(e,t,n,r={}){let{rangeDays:i=90}=r,a=G(e,t,n,i);if(a===null)return null;let{series:o,scale:s}=a,c=s.ticks.map(e=>({value:e,y:z(e,s.lo,s.hi)})),l=[];return o.forEach((e,t)=>{let n=K(t,o.length);e.date.slice(8,10)===`01`&&n<=me&&l.push({date:e.date,x:n})}),{yTicks:c,monthTicks:l}}function ge(e,t,n,r={}){let{rangeDays:i=90}=r,a=G(e,t,n,i);if(a===null)return null;let{series:o,scale:s}=a,c=le(o,t),l=e=>(e-s.lo)/(s.hi-s.lo),u=A(c),d=u===null?null:l(u),f=[];
1c.forEach((e,t)=>{e.value!==null&&f.push({i:t,v:e.value})});let p=null;if(f.length>=2){let e=f.length,t=f.reduce((e,t)=>e+t.i,0),n=f.reduce((e,t)=>e+t.v,0),r=f.reduce((e,t)=>e+t.i*t.v,0),i=e*f.reduce((e,t)=>e+t.i*t.i,0)-t*t;if(i!==0){let a=(e*r-t*n)/i,s=(n-a*t)/e,c=f[0].i,u=f[e-1].i;p={x1:K(c,o.length),y1:l(s+a*c),x2:K(u,o.length),y2:l(s+a*u)}}}return{trend:p,averageY:d}}function _e(e){let t=[],n=[];for(let r of e){let e=n[n.length-1],i=e!==void 0&&e.metricType!=null&&r.metricType!=null&&e.metricType!==r.metricType;(r.y===null||i)&&n.length>0&&(t.push(n),n=[]),r.y!==null&&n.push(r)}return n.length>0&&t.push(n),t}function ve(e){let t=[],n=null;for(let r of e)if(r.y!==null){if(n!==null){let e=n.metricType!=null&&r.metricType!=null&&n.metricType!==r.metricType?{from:n.metricType,to:r.metricType}:void 0,i=n.source!=null&&r.source!=null&&!ie(n.source,r.source)?{from:n.source,to:r.source}:void 0;(e||i)&&t.push({x:(n.x+r.x)/2,date:r.date,...e?{metricChange:e}:{},...i?{sourceChange:i}:{}})}n=r}return t}function ye(e,t,n){let r=e.find(e=>X(e.date)===n);return r?S(r,t):[]}var be=e=>e;function xe(e,t,n=m,r,i){let a=r?ye(e,t,r):[];if(i?.anchoredGapFallback===`em-dash`&&r){let e=E(a,t);
1if((e===null?null:t.extractValue(e))===null)return{date:r,valueDisplay:`â`,meta:null,source:``,measuredAt:null,metricType:null}}let o=a.length>0?a:e.flatMap(e=>S(e,t)),s=a.length>0?E(a,t):w(e.map(e=>E(S(e,t),t)).filter(e=>e!==null),t);if(s===null)return null;let c=t.extractValue(s);if(c===null)return null;let l=W(t,c,t.pairedExtractValue?.(s)??null,n),u=w(o,t)??s,d=x(o,e=>t.measuredAtOf(e),e=>Y(e))??Y(u);return{date:Oe(s),valueDisplay:l,meta:t.formatRecentMeta(s,i?.t??be),source:d,measuredAt:t.measuredAtOf(u),metricType:t.metricTypeOf?t.metricTypeOf(s):null}}function Se(e){let t=new Map;for(let e of o){let n=i(e);n&&t.set(n.daySummaryKey,n.measuredAtOf)}let n=[];for(let r of e)for(let[e,i]of Object.entries(r)){if(!Array.isArray(i))continue;let r=t.get(e);for(let e of i){let t=Y(e);t!==``&&n.push({recency:r?.(e)??ke(e),source:t})}}return x(n,e=>e.recency,e=>e.source)}var Ce=`Simulated`;function q(e){return e===Ce}function J(e){let t=!1,n=!1;for(let r of e)if(r.value!==null&&(q(r.source)?n=!0:t=!0,t&&n))return`mixed`;return n?`simulated`:t?`real`:`empty`}function we(e){let t=!1,n=!1;for(let r of e){if(r===`mixed`)return`mixed`;t||(t=r===`real`),n||(n=r===`simulated`)}return t&&n?`mixed`:n?`simulated`:t?`real`:`empty`}function Te(e,t,r){let i=n.fromISO(t);if(!i.isValid)return e;let a=i.minus({days:r-1}).toFormat(`yyyy-MM-dd`),o=i.toFormat(`yyyy-MM-dd`);return e.filter(e=>{let t=e.date.slice(0,10);return t>=a&&t<=o})}function Ee(e){let t=!1;for(let n of e)for(let e of Object.values(n))if(Array.isArray(e))for(let n of e){let e=Y(n);if(e){if(!q(e))return!1;t=!0}}return t}function De(e,t,n,r){return J(M(D(e,t),n,r))}function Y(e){return e.source??``}function Oe(e){return e.date}function ke(e){let t=e;return t.measuredAt??t.date??``}function X(e){return e.slice(0,10)}function Ae(e){return e<0?0:e>1?1:e}var Z={sleep:`sleep`,hrv:`hrv`,steps:`steps`,rhr:`rhr`,pulseox:`spo2`,weight:`weight`,skintemp:`skintemperature`,dailyhr:`dailyheartrate`,resprate:`respiratoryrate`,bp:`bloodpressure`,calories:`calories`},je=e=>[...new Set(e.map(e=>Z[e]))].join(`,`),Q=t(`/api/member-health`,!0),Me=async(t,n,r)=>{let i=r===void 0?``:`&types=${encodeURIComponent(r)}`,a=`summary?startDate=${encodeURIComponent(t)}&endDate=${encodeURIComponent(n)}${i}`;try{let{data:e}=await Q.get(a);return e}catch(t){throw e(a,t),t}},Ne=(e,t)=>{let n={};for(let r of t){let t=i(r);if(!t)continue;let a=E(e[t.daySummaryKey]??[],t);if(a===null)continue;let o=t.extractValue(a);o!==null&&(n[r]={value:o,secondary:t.pairedExtractValue?.(a)??null,source:Y(a)})}return n},$=(e,t)=>t[e]?.value??null,Pe=(e,t)=>t[e]?.secondary??null,Fe=(e,t)=>t.some(t=>e[t]!==void 0),Ie=(e,t)=>e===null?[]:t?s.filter(t=>$(t,e)!==null):s,Le=(e,t)=>t[e]?.source??null;export{oe as A,p as B,j as C,xe as D,J as E,h as F,u as G,te as H,v as I,s as K,ee as L,m as M,d as N,A as O,f as P,re as R,q as S,de as T,l as U,g as V,c as W,I as _,Ne as a,L as b,$ as c,he as d,ge as f,we as g,ve as h,Fe as i,b as j,De as k,je as l,_e as m,Ie as n,Pe as o,pe as p,Me as r,Le as s,Z as t,V as u,Te as v,ue as w,Ee as x,Se as y,_ as z}; 2//# sourceMappingURL=health-summary.api-ibf8tb4n.js.map
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.