@bitcobblers/wod-wiki-tools 0.0.0-stage → 0.36.2133

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.
Files changed (74) hide show
  1. package/dist/bin/wod.cjs +3532 -0
  2. package/dist/bin/wod.cjs.map +1 -0
  3. package/dist/bin/wod.d.cts +1 -0
  4. package/dist/bin/wod.d.ts +1 -0
  5. package/dist/bin/wod.mjs +17 -0
  6. package/dist/bin/wod.mjs.map +1 -0
  7. package/dist/chunk-6L5ZDZJ7.mjs +15 -0
  8. package/dist/chunk-6L5ZDZJ7.mjs.map +1 -0
  9. package/dist/chunk-DZESCGCM.mjs +123 -0
  10. package/dist/chunk-DZESCGCM.mjs.map +1 -0
  11. package/dist/chunk-EUQWEX6Z.mjs +253 -0
  12. package/dist/chunk-EUQWEX6Z.mjs.map +1 -0
  13. package/dist/chunk-K3GZZFAC.mjs +300 -0
  14. package/dist/chunk-K3GZZFAC.mjs.map +1 -0
  15. package/dist/chunk-OZI2FYPF.mjs +2061 -0
  16. package/dist/chunk-OZI2FYPF.mjs.map +1 -0
  17. package/dist/compiler-KT6P3AC6.mjs +730 -0
  18. package/dist/compiler-KT6P3AC6.mjs.map +1 -0
  19. package/dist/index.cjs +3548 -0
  20. package/dist/index.cjs.map +1 -0
  21. package/dist/index.d.cts +356 -0
  22. package/dist/index.d.ts +356 -0
  23. package/dist/index.mjs +12 -0
  24. package/dist/index.mjs.map +1 -0
  25. package/dist/server/app.cjs +299 -0
  26. package/dist/server/app.cjs.map +1 -0
  27. package/dist/server/app.d.cts +24 -0
  28. package/dist/server/app.d.ts +24 -0
  29. package/dist/server/app.mjs +9 -0
  30. package/dist/server/app.mjs.map +1 -0
  31. package/dist/server-Z2T7IGZX.mjs +11 -0
  32. package/dist/server-Z2T7IGZX.mjs.map +1 -0
  33. package/dist/web/playground/ai-skills/parse.md +656 -0
  34. package/dist/web/playground/assets/main-Bh_mthqc.js +212 -0
  35. package/dist/web/playground/assets/main-Bhn9NHgQ.css +2 -0
  36. package/dist/web/playground/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  37. package/dist/web/playground/assets/statementBuilderFlow-gvzmxfiE.js +2 -0
  38. package/dist/web/playground/assets/vendor-BlJqgFME.js +201 -0
  39. package/dist/web/playground/assets/vendor-codemirror-BtJgoBjf.js +40 -0
  40. package/dist/web/playground/fonts/Inter-Regular.woff2 +0 -0
  41. package/dist/web/playground/fonts/Inter-SemiBold.woff2 +0 -0
  42. package/dist/web/playground/images/hero/editing.png +0 -0
  43. package/dist/web/playground/images/hero/journal.png +0 -0
  44. package/dist/web/playground/images/hero/results.png +0 -0
  45. package/dist/web/playground/images/hero/timer.png +0 -0
  46. package/dist/web/playground/images/wod-wiki-logo-dark.png +0 -0
  47. package/dist/web/playground/images/wod-wiki-logo-light.png +0 -0
  48. package/dist/web/playground/index.html +60 -0
  49. package/dist/web/playground/seed/core/chunks/canvas.d2a5e6e7.json +1 -0
  50. package/dist/web/playground/seed/core/chunks/template.e5e0e82d.json +1 -0
  51. package/dist/web/playground/seed/core/manifest.json +24 -0
  52. package/dist/web/playground/seed/core/report.html +43 -0
  53. package/dist/web/server/ai-skills/parse.md +656 -0
  54. package/dist/web/server/assets/main-Bhn9NHgQ.css +2 -0
  55. package/dist/web/server/assets/main-CPRFCrjV.js +211 -0
  56. package/dist/web/server/assets/rolldown-runtime-C0FnF6B9.js +1 -0
  57. package/dist/web/server/assets/statementBuilderFlow-DT1tyXgc.js +2 -0
  58. package/dist/web/server/assets/vendor-BlJqgFME.js +201 -0
  59. package/dist/web/server/assets/vendor-codemirror-BtJgoBjf.js +40 -0
  60. package/dist/web/server/fonts/Inter-Regular.woff2 +0 -0
  61. package/dist/web/server/fonts/Inter-SemiBold.woff2 +0 -0
  62. package/dist/web/server/images/hero/editing.png +0 -0
  63. package/dist/web/server/images/hero/journal.png +0 -0
  64. package/dist/web/server/images/hero/results.png +0 -0
  65. package/dist/web/server/images/hero/timer.png +0 -0
  66. package/dist/web/server/images/wod-wiki-logo-dark.png +0 -0
  67. package/dist/web/server/images/wod-wiki-logo-light.png +0 -0
  68. package/dist/web/server/index.html +60 -0
  69. package/dist/web/server/seed/core/chunks/canvas.d2a5e6e7.json +1 -0
  70. package/dist/web/server/seed/core/chunks/template.e5e0e82d.json +1 -0
  71. package/dist/web/server/seed/core/manifest.json +24 -0
  72. package/dist/web/server/seed/core/report.html +43 -0
  73. package/package.json +46 -4
  74. package/README.md +0 -3
@@ -0,0 +1,211 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-BlJqgFME.js","assets/rolldown-runtime-C0FnF6B9.js","assets/statementBuilderFlow-DT1tyXgc.js"])))=>i.map(i=>d[i]);
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{$ as n,$n as r,$r as i,$t as a,A as o,An as s,Ar as c,B as l,Bn as u,Br as d,Bt as f,C as p,Cn as m,Cr as h,D as g,Dn as _,Dr as v,Dt as y,E as b,En as x,Er as S,Et as C,F as w,Fn as T,Fr as E,Ft as D,G as O,Gn as k,Gr as A,Gt as j,H as M,Hn as N,Hr as P,Ht as F,I,In as ee,Ir as L,It as te,J as R,Jn as ne,Jr as re,Jt as ie,K as ae,Kn as oe,Kr as se,Kt as ce,L as le,Ln as ue,Lr as de,Lt as fe,M as pe,Mn as me,Mr as he,N as ge,Nn as _e,Nr as ve,O as ye,On as be,Or as xe,P as Se,Pn as Ce,Pr as we,Pt as Te,Q as Ee,Qr as De,Qt as Oe,R as ke,Rn as Ae,Rr as je,Rt as Me,S as Ne,Sn as Pe,Sr as Fe,St as Ie,T as Le,Tn as Re,Tr as ze,U as Be,Un as Ve,Ur as He,Ut as Ue,V as We,Vn as Ge,Vr as Ke,Vt as qe,W as Je,Wn as Ye,Wr as Xe,Wt as Ze,X as Qe,Xn as $e,Xr as et,Xt as tt,Y as nt,Yn as rt,Yr as it,Yt as at,Z as ot,Zn as st,Zr as ct,Zt as lt,_ as ut,_i as dt,_n as ft,_r as pt,_t as mt,a as ht,ai as gt,an as _t,ar as vt,at as yt,b as bt,bn as xt,br as St,bt as Ct,c as wt,ci as Tt,cn as Et,cr as Dt,ct as Ot,d as kt,di as At,dn as jt,dr as Mt,dt as Nt,ei as Pt,en as Ft,er as It,et as Lt,f as Rt,fi as zt,fn as Bt,fr as Vt,ft as Ht,g as Ut,gi as Wt,gn as Gt,gr as Kt,gt as qt,h as Jt,hi as Yt,hn as Xt,hr as Zt,ht as Qt,i as $t,ii as en,in as tn,ir as nn,it as rn,j as an,jn as on,jr as sn,k as cn,kn as ln,kr as un,l as dn,li as fn,ln as pn,lr as mn,lt as hn,m as gn,mi as _n,mn as vn,mr as yn,mt as bn,n as xn,ni as Sn,nn as Cn,nr as wn,nt as Tn,o as En,oi as Dn,on as On,or as kn,ot as An,p as jn,pi as Mn,pn as Nn,pr as Pn,pt as Fn,q as In,qn as Ln,qr as Rn,qt as zn,r as Bn,ri as Vn,rn as Hn,rr as Un,rt as Wn,s as Gn,si as Kn,sn as qn,sr as Jn,st as Yn,t as Xn,ti as Zn,tn as Qn,tr as $n,tt as er,u as tr,ui as z,un as nr,ur as rr,ut as ir,v as ar,vi as or,vn as sr,vr as cr,vt as lr,w as ur,wn as dr,wr as fr,wt as pr,x as mr,xn as hr,xr as gr,xt as _r,y as vr,yi as yr,yn as br,yr as xr,yt as Sr,z as Cr,zn as wr,zr as Tr,zt as Er}from"./vendor-BlJqgFME.js";import{$ as Dr,A as Or,B,C as kr,D as Ar,E as jr,F as Mr,G as Nr,H as Pr,I as Fr,J as Ir,K as Lr,L as Rr,M as zr,N as Br,O as Vr,P as Hr,Q as Ur,R as Wr,S as Gr,T as Kr,U as qr,V as Jr,W as Yr,X as Xr,Y as Zr,Z as Qr,_ as $r,a as ei,at as ti,b as ni,c as ri,ct as ii,d as ai,et as oi,f as si,g as ci,h as li,i as ui,it as di,j as fi,k as pi,l as mi,lt as hi,m as gi,n as _i,nt as vi,o as yi,ot as bi,p as xi,q as Si,r as Ci,rt as wi,s as Ti,st as Ei,t as Di,tt as Oi,u as ki,ut as Ai,v as ji,w as Mi,x as Ni,y as Pi,z as Fi}from"./vendor-codemirror-BtJgoBjf.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ii=dt(),V=e(yr(),1),H=gt(),Li=(0,V.createContext)({theme:`system`,setTheme:()=>null});function Ri({children:e,defaultTheme:t=`system`,storageKey:n=`vite-ui-theme`}){let[r,i]=(0,V.useState)(()=>localStorage.getItem(n)||t);(0,V.useEffect)(()=>{let e=window.document.documentElement,t=()=>{if(e.classList.remove(`light`,`dark`),r===`system`){let t=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`;e.classList.add(t);return}e.classList.add(r)};if(t(),r===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>t();return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)}},[r]);let a=(0,V.useCallback)(e=>{localStorage.setItem(n,e),i(e)},[n]),o=(0,V.useMemo)(()=>({theme:r,setTheme:a}),[r,a]);return(0,H.jsx)(Li.Provider,{value:o,children:e})}var zi=()=>{let e=(0,V.useContext)(Li);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e};function U(...e){return xe(en(e))}function Bi(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t)}var Vi=un(`inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-4 py-2`,sm:`h-9 rounded-md px-3`,lg:`h-11 rounded-md px-8`,icon:`h-10 w-10`}},defaultVariants:{variant:`default`,size:`default`}}),W=V.memo(V.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>{let o=r?c:`button`;return(0,H.jsx)(Vn,{as:o,className:U(Vi({variant:t,size:n,className:e})),ref:a,...i})}));W.displayName=`Button`;var Hi=[`parser`,`dialect`,`user-plan`,`runtime`,`user-entry`],Ui={parser:`parser`,compiler:`dialect`,dialect:`dialect`,hinted:`dialect`,"user-plan":`user-plan`,runtime:`runtime`,tracked:`runtime`,analyzed:`runtime`,"analyzed-estimated":`runtime`,execution:`runtime`,user:`user-entry`,collected:`user-entry`};function Wi(e){return Ui[e??`parser`]??`parser`}var G=function(e){return e.Duration=`duration`,e.Spans=`spans`,e.SystemTime=`system-time`,e.Time=`time`,e.Elapsed=`elapsed`,e.Total=`total`,e.Rep=`rep`,e.Effort=`effort`,e.Distance=`distance`,e.Rounds=`rounds`,e.CurrentRound=`current-round`,e.Action=`action`,e.Increment=`increment`,e.Group=`group`,e.Text=`text`,e.Resistance=`resistance`,e.Sound=`sound`,e.System=`system`,e.Label=`label`,e.Lap=`lap`,e.Metric=`metric`,e.Hint=`hint`,e.Custom=`custom`,e.Volume=`volume`,e.Intensity=`intensity`,e.Grade=`grade`,e.Load=`load`,e.Work=`work`,e.RIR=`rir`,e.SessionRPE=`session-rpe`,e.SessionLoad=`session-load`,e.METScore=`met-score`,e.TIS=`tis`,e.Calculated=`calculated`,e.Choice=`choice`,e}({}),Gi={parser:0,dialect:1,"user-plan":2,runtime:3,"user-entry":4};function Ki(e){return e.ownershipLayer??Wi(e.origin)}function qi(e){return Gi[Ki(e)]??0}function Ji(e){return e.map((e,t)=>{let n=Ki(e);return{metric:e,type:e.type,layer:n,layerRank:Gi[n]??0,index:t,isSuppressor:e.action===`suppress`}})}function Yi(e,t){return t?e.filter(e=>!(t.types&&!t.types.includes(e.type)||t.layers&&!t.layers.includes(e.layer))):[...e]}function Xi(e){let t=new Map;for(let n of e){let e=t.get(n.type);if(e){e.push(n);continue}t.set(n.type,[n])}return t}function Zi(e){let t;for(let n of e)n.isSuppressor||(t==null||n.layerRank>t)&&(t=n.layerRank);return t}function Qi(e,t){return{metric:e.metric,type:e.type,layer:e.layer,outcome:t}}function $i(e,t){return e.index-t.index}function ea(e){let t=Ji(e);return{raw(e){return Yi(t,e).map(e=>e.metric)},visible(e){let n=Xi(Yi(t,e)),r=[];for(let e of n.values()){if(e.some(e=>e.isSuppressor))continue;let t=Zi(e);if(t!=null)for(let n of e)!n.isSuppressor&&n.layerRank===t&&r.push(n)}return r.sort($i),r.map(e=>e.metric)},byLayer(e){let n=Yi(t,e),r={};for(let e of Hi)r[e]=[];for(let e of n)r[e.layer].push(e.metric);for(let e of Hi)r[e]?.length===0&&delete r[e];return r},promotionCandidates(e){let n=Xi(Yi(t,e)),r=[];for(let e of n.values()){let t=e.filter(e=>e.isSuppressor),n=e.filter(e=>!e.isSuppressor);if(n.length===0)continue;if(t.length>0){let e=Math.max(...n.map(e=>e.layerRank)),i=Math.max(...t.map(e=>e.layerRank));for(let t of n)t.layerRank===e&&r.push({metric:t.metric,type:t.type,layer:t.layer,reason:`suppressed`,blockedByLayer:Hi[i]});continue}let i=Zi(n);if(i==null)continue;let a=n.filter(e=>e.layerRank<i);if(a.length===0)continue;let o=Math.max(...a.map(e=>e.layerRank));for(let e of a)e.layerRank===o&&r.push({metric:e.metric,type:e.type,layer:e.layer,reason:`shadowed-by-higher-layer`,blockedByLayer:Hi[i]})}return r.sort((e,t)=>{let n=(Gi[t.layer]??0)-(Gi[e.layer]??0);return n===0?0:n}),r},explain(e){let n=Xi(Yi(t,e)),r=[];for(let[e,t]of n.entries()){let n=t.some(e=>e.isSuppressor),i=n?void 0:Zi(t),a=t.map(e=>e.isSuppressor?Qi(e,`suppressor`):n?Qi(e,`hidden-by-suppressor`):i!=null&&e.layerRank===i?Qi(e,`visible`):Qi(e,`hidden-by-layer`));r.push({type:e,winnerLayer:i==null?void 0:Hi[i],suppressed:n,entries:a})}return r}}}function ta(e,t){let n=[...e];return(t?.types?.includes(G.Hint)??!1)||(n=n.filter(e=>e.type!==G.Hint)),t?(t.origins&&(n=n.filter(e=>t.origins.includes(e.origin??`parser`))),t.types&&(n=n.filter(e=>t.types.includes(e.type))),t.excludeTypes&&(n=n.filter(e=>!t.excludeTypes.includes(e.type))),n):n}var na=class{resolve(e,t){return ea(ta(e,t)).visible()}resolveOne(e,t){return this.resolve(e,{types:[t]})[0]}resolveAll(e,t){let n=e.filter(e=>e.type===t);return n.length<=1?n:[...n].sort((e,t)=>qi(t)-qi(e))}};function ra(e){let t=e.split(/[\s_\-\u2010-\u2015]+/).filter(Boolean),n=[];for(let e of t){let t=e.replace(/([\p{Ll}\p{Nd}])(\p{Lu})/gu,`$1\0$2`).replace(/(\p{Lu})(\p{Lu}\p{Ll})/gu,`$1\0$2`);for(let e of t.split(`\0`))e&&n.push(e)}return n}function ia(e){let t=ra(e);return t.length===0?``:t.map((e,t)=>{let n=e.toLowerCase();return t===0?n:n.charAt(0).toUpperCase()+n.slice(1)}).join(``)}function aa(e){return e.split(`.`).map(ia).filter(e=>e.length>0).join(`.`)}function oa(e){if(e===null)return`null`;if(e===void 0)return`undefined`;if(Array.isArray(e))return`array`;switch(typeof e){case`number`:return`number`;case`string`:return`string`;case`boolean`:return`boolean`;case`object`:return`object`;default:return`undefined`}}function sa(e){return JSON.stringify([e.path,e.kind,e.dimension??null])}var ca=class extends Error{code;constructor(e,t){super(t),this.name=`UnitConversionError`,this.code=e}},la=[{canonical:`m`,dimension:`distance`,factor:1,aliases:[`meter`,`meters`,`metre`,`metres`]},{canonical:`km`,dimension:`distance`,factor:1e3,aliases:[`kilometer`,`kilometers`,`kilometre`,`kilometres`]},{canonical:`cm`,dimension:`distance`,factor:.01,aliases:[`centimeter`,`centimeters`]},{canonical:`mm`,dimension:`distance`,factor:.001,aliases:[`millimeter`,`millimeters`]},{canonical:`ft`,dimension:`distance`,factor:.3048,aliases:[`foot`,`feet`]},{canonical:`in`,dimension:`distance`,factor:.0254,aliases:[`inch`,`inches`]},{canonical:`yd`,dimension:`distance`,factor:.9144,aliases:[`yard`,`yards`]},{canonical:`mi`,dimension:`distance`,factor:1609.344,aliases:[`mile`,`miles`]},{canonical:`kg`,dimension:`mass`,factor:1,aliases:[`kilogram`,`kilograms`,`kilo`,`kilos`]},{canonical:`g`,dimension:`mass`,factor:.001,aliases:[`gram`,`grams`]},{canonical:`lb`,dimension:`mass`,factor:.45359237,aliases:[`lbs`,`pound`,`pounds`]},{canonical:`ms`,dimension:`duration`,factor:.001,aliases:[`millisecond`,`milliseconds`]},{canonical:`s`,dimension:`duration`,factor:1,aliases:[`sec`,`secs`,`second`,`seconds`]},{canonical:`min`,dimension:`duration`,factor:60,aliases:[`mins`,`minute`,`minutes`]},{canonical:`h`,dimension:`duration`,factor:3600,aliases:[`hr`,`hrs`,`hour`,`hours`]},{canonical:`count`,dimension:`count`,factor:1},{canonical:`rep`,dimension:`count`,factor:1,aliases:[`reps`]},{canonical:`pull-up`,dimension:`count`,factor:1},{canonical:`thruster`,dimension:`count`,factor:1},{canonical:`problem`,dimension:`count`,factor:1},{canonical:`count/s`,dimension:`count-rate`,factor:1},{canonical:`bpm`,dimension:`count-rate`,factor:1/60},{canonical:`cal`,dimension:`energy`,factor:1,aliases:[`calorie`,`calories`]},{canonical:`kcal`,dimension:`energy`,factor:1e3,aliases:[`kilocalorie`,`kilocalories`]},{canonical:`m/s`,dimension:`speed`,factor:1},{canonical:`km/h`,dimension:`speed`,factor:1e3/3600,aliases:[`kmh`,`kph`]},{canonical:`mph`,dimension:`speed`,factor:1609.344/3600},{canonical:`min/km`,dimension:`pace`,factor:1},{canonical:`min/mi`,dimension:`pace`,factor:1e3/1609.344},{canonical:`s/m`,dimension:`pace`,factor:1/60},{canonical:`ratio`,dimension:`ratio`,factor:1,aliases:[`x`]},{canonical:`%`,dimension:`ratio`,factor:.01,aliases:[`pct`,`percent`]},{canonical:`au`,dimension:`ratio`,factor:1,aliases:[`AU`]},{canonical:`pts`,dimension:`ratio`,factor:1,aliases:[`point`,`points`]},{canonical:`rating`,dimension:`ratio`,factor:1,aliases:[`ratings`]}],ua=(()=>{let e=new Map;for(let t of la){e.set(t.canonical.toLowerCase(),t);for(let n of t.aliases??[])e.has(n.toLowerCase())||e.set(n.toLowerCase(),t)}return e})();function da(e){if(typeof e==`string`)return ua.get(e.trim().toLowerCase())}function fa(e){return da(e)?.dimension}var pa=Object.freeze({mass:`kg`,distance:`m`,duration:`s`,count:`count`,"count-rate":`count/s`,energy:`cal`,speed:`m/s`,pace:`min/km`,ratio:void 0});function ma(e){return pa[e]}function ha(e,t,n){let r=da(t);if(!r)throw new ca(`unknown-unit`,`Unknown unit "${t}"`);let i=da(n);if(!i)throw new ca(`unknown-unit`,`Unknown unit "${n}"`);if(r.dimension!==i.dimension)throw new ca(`dimension-mismatch`,`Cannot convert ${t} (${r.dimension}) to ${n} (${i.dimension})`);if(r.dimension===`ratio`&&r.canonical!==i.canonical&&r.canonical!==`ratio`&&i.canonical!==`ratio`)throw new ca(`scale-mismatch`,`Named scales ${t} and ${n} are not interchangeable`);if(!Number.isFinite(e))throw new ca(`non-finite`,`Non-finite value cannot be converted`);return e*r.factor/i.factor}var ga=class{line;startOffset;endOffset;length;columnStart;columnEnd;raw;constructor(e,t,n,r,i=0,a=0,o=``){this.line=e,this.startOffset=t,this.endOffset=n,this.length=r,this.columnStart=i,this.columnEnd=a,this.raw=o}},K=class e{_metrics;_indexedLength=0;_resolver=new na;id;constructor(t,n=`metrics`){if(this.id=n,t instanceof e){this._metrics=t.toArray(),this.syncIndexProperties();return}this._metrics=Array.isArray(t)?[...t]:[],this.syncIndexProperties()}static from(t,n=`metrics`){if(t instanceof e)return t.clone(n);if(Array.isArray(t))return new e(t,n);if(typeof t==`object`&&t&&`_metrics`in t){let r=t._metrics;if(Array.isArray(r))return new e(r,n)}return e.empty(n)}static empty(t=`metrics`){return new e(void 0,t)}clone(t=this.id){return new e(this._metrics,t)}get all(){return[...this._metrics]}get length(){return this._metrics.length}get size(){return this._metrics.length}get isEmpty(){return this._metrics.length===0}getByType(e){let t=this._metrics.filter(t=>t.type===e||t.name===e);return t.length<=1?t:[...t].sort((e,t)=>qi(t)-qi(e))}getFirst(e){let t=this.getByType(e);return t.length>0?t[0]:void 0}get(e){return this.getFirst(e)}has(e){return this._metrics.some(t=>t.type===e||t.name===e)}hasMetric(e){return this.has(e)}getDisplayMetrics(e){return this.resolve(e)}getMetric(e){return this._resolver.resolveOne(this._metrics,e)}getAllMetricsByType(e){return this.getByType(e)}get rawMetrics(){return this.toArray()}getAll(){return this.toArray()}getByOrigin(e){return this._metrics.filter(t=>(t.origin??`parser`)===e)}resolve(e){return this._resolver.resolve(this._metrics,e)}add(...e){return this._metrics.push(...e),this.syncIndexProperties(),this}remove(e){let t=[];return this._metrics=this._metrics.filter(n=>!e(n)||(t.push(n),!1)),this.syncIndexProperties(),t}removeByType(e){return this.remove(t=>t.type===e||t.name===e)}clear(){return this._metrics=[],this.syncIndexProperties(),this}replaceByType(e,...t){let n=this.removeByType(e);return this._metrics.push(...t),this.syncIndexProperties(),n}merge(t){let n=t instanceof e?t._metrics:Array.isArray(t)?t:t.metrics.toArray(),r=new Map;for(let e of n){let t=r.get(e.type)??[];t.push(e),r.set(e.type,t)}for(let[e,t]of r){let n=this._metrics.filter(t=>t.type===e);if(n.length===0){this._metrics.push(...t);continue}let r=Math.max(...n.map(e=>qi(e))),i=Math.max(...t.map(e=>qi(e)));i>r?(this._metrics=this._metrics.filter(t=>t.type!==e),this._metrics.push(...t)):i===r&&this._metrics.push(...t)}return this.syncIndexProperties(),this}[Symbol.iterator](){return this._metrics[Symbol.iterator]()}filter(e){return this._metrics.filter(e)}map(e){return this._metrics.map(e)}flatMap(e){return this._metrics.flatMap(e)}find(e){return this._metrics.find(e)}some(e){return this._metrics.some(e)}every(e){return this._metrics.every(e)}toArray(){return[...this._metrics]}get raw(){return this._metrics}syncIndexProperties(){for(let e=0;e<this._indexedLength;e++)delete this[e];for(let e=0;e<this._metrics.length;e++)this[e]=this._metrics[e];this._indexedLength=this._metrics.length}toString(){return`MetricContainer(${this._metrics.length})[${this._metrics.map(e=>e.type).join(`, `)}]`}},_a=class{exerciseId;line;text;raw;dialect;hasMetric(e){return this.metricContainer.hasMetric(e)}getDisplayMetrics(e){return this.metricContainer.getDisplayMetrics(e)}getMetric(e){return this.metricContainer.getMetric(e)}getAllMetricsByType(e){return this.metricContainer.getAllMetricsByType(e)}get rawMetrics(){return this.metricContainer.rawMetrics}get metricContainer(){return this.metrics instanceof K?this.metrics:K.from(this.metrics,this.id)}},va=class extends _a{id=0;parent;children=[];meta=new ga(0,0,0,0);_metrics=K.empty();metricMeta=new Map;isLeaf;get metrics(){return this._metrics}set metrics(e){this._metrics=K.from(e,this.id)}constructor(e){super(),e&&(Object.assign(this,e),e.metrics&&(this.metrics=K.from(e.metrics,this.id)),this.metricMeta||=new Map)}},ya=class e extends _a{static nextId=1e6;id;outputType;timeSpan;sourceStatementId;sourceBlockKey;stackLevel;metrics;metricMeta;completionReason;parent;children;isLeaf;meta;statement;timestamp;constructor(t,n,r){if(super(),t&&`outputType`in t&&`timeSpan`in t){let n=t;this.id=e.nextId++,this.outputType=n.outputType,this.timeSpan=n.timeSpan,this.sourceBlockKey=n.sourceBlockKey??``,this.sourceStatementId=n.sourceStatementId,this.line=n.line,this.text=n.text,this.dialect=n.dialect,this.stackLevel=n.stackLevel??0,this.metrics=K.from(n.metrics,this.id),this.metricMeta=n.metricMeta??new Map,this.completionReason=n.completionReason,this.parent=n.parent,this.children=n.children??[],this.isLeaf=this.children.length===0,this.meta=new ga(0,0,0,0)}else{let i=t;this.id=e.nextId++,this.statement=i,this.outputType=`segment`,this.timeSpan={started:r??Date.now()},this.sourceBlockKey=``,this.sourceStatementId=typeof i?.id==`number`?i.id:void 0,this.stackLevel=0,this.metrics=K.from(n,this.id),this.metricMeta=new Map,this.children=[],this.isLeaf=!0,this.meta=i?.meta??new ga(0,0,0,0),this.line=i?.line,this.text=i?.text,this.dialect=i?.dialect,this.timestamp=r??Date.now()}}static resetIdCounter(t=1e6){e.nextId=t}},ba=class{value;constructor(e){this.value=e??(typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():Math.random().toString(36).slice(2))}toString(){return this.value}valueOf(){return this.value}equals(e){return this.value===e?.value}};function xa(e){let t=e.trim(),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619);return`bc-${(n>>>0).toString(16).padStart(8,`0`)}`}var Sa=[`segment`,`system`,`load`,`event`,`compiler`,`completion`,`analytics`,`wellness`];function Ca(e){return e===`time`?`run`:e===`log`?`log`:null}var wa=[`playground-run-tip`,`attention`,`code-example`,`syntax-group`];function Ta(e){let t=e.match(/^`{3,}(time|log)(?::([\w-]+))?\s*$/i);return t?{dialect:t[1].toLowerCase()===`time`?`time`:`log`,...t[2]?{sport:t[2]}:{}}:null}function Ea(e){let t=e.type?.toLowerCase();if(t===`youtube`||t===`strava`||t===`amazon`||t===`file`||t===`effort`)return t;let n=(e.url||e.link||``).replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(/[/?#:]/,1)[0].toLowerCase();return n===`youtu.be`||n===`youtube.com`||n.endsWith(`.youtube.com`)?`youtube`:n===`strava.com`||n.endsWith(`.strava.com`)?`strava`:n===`amzn.to`||n===`amazon.com`||n.endsWith(`.amazon.com`)?`amazon`:[`baseAttributes`,`discipline`,`effortType`,`targetRPE`,`equipment`,`aliases`,`derivation`].some(t=>t in e)?`effort`:`default`}function Da(e){return/^#{1,6}\s/.test(e)?`heading`:/^[-*+]\s|^\d+\.\s/.test(e)?`list`:/^>\s?/.test(e)?`blockquote`:e.startsWith(`|`)&&/^\|[\s:]*-+/m.test(e)?`table`:`paragraph`}function Oa(e,t={}){if(!e)return[];let n=e.split(/\r\n|\n|\r/),r=[],i=[],a=0;for(let t of n){r.push(a),a+=t.length;let n=e.startsWith(`\r
3
+ `,a)?`\r
4
+ `:/[\r\n]/.test(e[a]??``)?e[a]:``;i.push(n),a+=n.length}let o=[],s=Date.now(),c=!0,l=0;function u(t,a,o){let c=r[a],l=r[o]+n[o].length;return{id:crypto.randomUUID(),type:t,from:c,to:l,rawContent:e.slice(c,l),displayContent:e.slice(c,l),startLine:a,endLine:o,lineCount:o-a+1,version:1,createdAt:s,separatorAfter:i[o]}}for(;l<n.length;){let a=n[l].trim(),d=a.match(/^(`{3,}|~{3,})(.*)$/);if(d){let a=d[1],c=l+1,f=RegExp(`^${a[0]}{${a.length},}\\s*$`);for(;c<n.length&&!f.test(n[c].trim());)c++;let p=c<n.length,m=p?c:n.length-1,h=d[2].trim(),g=a[0]==="`"?Ta(`\`\`\`${h}`):null,_=a[0]==="`"?h.match(/^widget:([\w-]+)$/):null,v=a[0]==="`"?h.match(/^query(?:[:\s](.*))?$/i):null,y=t.registeredWidgets??wa,b=_&&(`has`in y?y.has(_[1]):y.includes(_[1])),x=p&&g?g.dialect:p&&b?`widget`:p&&v?`query`:`code`,S=u(x,l,m);S.contentFrom=r[l]+n[l].length+i[l].length,S.contentTo=p?r[c]:S.to,S.displayContent=e.slice(S.contentFrom,S.contentTo),g&&p&&(S.sport=g.sport,S.contentId=xa(S.displayContent),S.scriptBlock={id:S.id,contentId:S.contentId,dialect:g.dialect,sport:g.sport,startLine:l,endLine:m,content:S.displayContent,state:`idle`,version:1,createdAt:s}),x===`widget`&&_&&(S.widgetName=_[1]),x===`query`&&v&&(S.querySuffix=(v[1]??``).trim()),o.push(S),l=m+1;continue}if(a===`---`&&n[l+1]?.trim()){let t=l+1;for(;t<n.length&&n[t].trim()!==`---`&&!/^(`{3,}|~{3,})/.test(n[t].trim());)t++;let i=n.slice(l+1,t);if(n[t]?.trim()===`---`&&i.some(e=>/^[A-Za-z_][\w-]*\s*:/.test(e.trim()))){let n=u(`frontmatter`,l,t);n.contentFrom=r[l+1],n.contentTo=r[t],n.displayContent=e.slice(n.contentFrom,n.contentTo),n.properties={};for(let e of i){let t=e.match(/^([^:]+):\s*(.*)$/);t&&(n.properties[t[1].trim()]=t[2].trim())}n.frontmatterType=Ea(n.properties),o.push(n),l=t+1;continue}}let f=a.match(/^(!)?\[([^\]]*)\]\((https?:\/\/[^)\s]+|\/[^)\s]+)\)$/);if(f){let e=u(`embed`,l,l),t=!!f[1];e.embed={type:t?`image`:/(?:youtube\.com|youtu\.be)/i.test(f[3])?`youtube`:`link`,label:f[2],url:f[3],isImage:t},o.push(e),l++;continue}let p=l;if(a)for(;p+1<n.length&&n[p+1].trim()&&!/^(?:`{3,}|~{3,}|---\s*$|!?\[[^\]]*\]\()/.test(n[p+1].trim());)p++;let m=u(a&&c?`title`:`markdown`,l,p);m.subtype=Da(m.displayContent.trim()),a&&(c=!1),o.push(m),l=p+1}return o}function ka(e){return e.type===`time`||e.type===`log`?`wod`:e.type===`query`||e.type===`widget`||e.type===`embed`?e.type:null}function Aa(e,t){if(!Number.isSafeInteger(t.sourceRevision)||t.sourceRevision<1)throw Error(`Invalid source revision`);let n=Object.create(null),r=Object.values(t.blocks??{}).filter(e=>e&&typeof e==`object`),i=t.createId??(()=>crypto.randomUUID());for(let a of Oa(e,t)){let e=ka(a);if(!e)continue;let o=r.filter(t=>t.from===a.from&&t.to===a.to&&t.kind===e),s=o.length===1?o[0]:void 0,c=s?.id??i();if(!c||Object.hasOwn(n,c))throw Error(`Duplicate block occurrence ID`);n[c]={id:c,kind:e,from:a.from,to:a.to,sourceRevision:t.sourceRevision,version:s?.version??1,...e===`wod`&&(a.type===`time`||a.type===`log`)?{dialect:a.type,...a.sport?{sport:a.sport}:{}}:{}}}return n}function ja(e,t,n,r={}){if(typeof e!=`string`||!t||typeof t!=`object`||Array.isArray(t))throw Error(`Invalid Note source or blocks`);for(let[e,r]of Object.entries(t))if(!r||r.id!==e||!e||!Number.isSafeInteger(r.version)||r.version<1||r.sourceRevision!==n||!Number.isSafeInteger(r.from)||!Number.isSafeInteger(r.to))throw Error(`Invalid block identity, version or source revision`);let i=Aa(e,{...r,sourceRevision:n,blocks:t});if(Object.keys(i).length!==Object.keys(t).length)throw Error(`Incomplete actionable block map`);for(let[e,n]of Object.entries(t)){let t=i[e];if(!t||t.from!==n.from||t.to!==n.to||t.kind!==n.kind||t.dialect!==n.dialect||t.sport!==n.sport)throw Error(`Block does not match authored source`)}}function Ma(e,t){let n=0;for(let e of t){if(!Number.isSafeInteger(e.from)||!Number.isSafeInteger(e.to)||e.from<n||e.to<e.from||typeof e.insert!=`string`)throw Error(`Invalid source changes`);n=e.to}let r={};for(let n of Object.values(e)){let e=n.from,i=n.to,a=!1;for(let r of t){let t=r.insert.length-(r.to-r.from);if(r.from<=n.from&&r.to>=n.to||r.from<n.from&&r.to>n.from||r.from<n.to&&r.to>n.to){a=!0;break}r.to<=n.from?(e+=t,i+=t):r.from<n.to&&(i+=t)}a||(r[n.id]={...n,from:e,to:i})}return r}var Na=class{items=new Map;constructor(e=[]){for(let t of e)this.items.set(t.id,t)}register(e){this.items.set(e.id,e)}unregister(e){this.items.delete(e)}has(e){return this.items.has(e)}get(e){return this.items.get(e)}list(){return[...this.items.values()].sort((e,t)=>(t.priority??0)-(e.priority??0))}get size(){return this.items.size}},Pa={REPEATING_INTERVAL:`behavior.repeating_interval`,REQUIRED_TIMER:`behavior.required_timer`,INJECT_REST:`behavior.inject_rest`,LABEL_AMRAP:`workout.amrap`,LABEL_EMOM:`workout.emom`,LABEL_TABATA:`workout.tabata`,LABEL_FOR_TIME:`workout.for_time`};Object.values(Pa);function Fa(e){if(!e)return[];if(Array.isArray(e.rawMetrics))return e.rawMetrics;let t=e.metrics;return t?Array.isArray(t)?t:t.rawMetrics??[]:[]}function Ia(e,t=`dialect`,n){return{type:G.Hint,value:e,image:e,origin:t,...n?{icon:n}:{}}}function La(e,t,n=`dialect`){let r=t??K.empty(`dialect`),i=new Set(Ra(r));for(let t of e)i.has(t)||(i.add(t),r.add(Ia(t,n)));return r}function Ra(e){return Fa(e).filter(e=>e.type===G.Hint&&typeof e.value==`string`).map(e=>e.value)}function za(e,t){return Fa(e).some(e=>e.type===G.Hint&&e.value===t)}var Ba=/^([a-zA-Z]+)([\s\S]*)$/,Va=class e{defs;byToken;constructor(e=[]){this.defs=e,this.byToken=new Map;for(let t of e){this.byToken.set(t.canonical.toLowerCase(),t);for(let e of t.aliases)this.byToken.set(e.toLowerCase(),t)}}get(e){return this.byToken.get(e.trim().toLowerCase())}has(e){return this.byToken.has(e.trim().toLowerCase())}consumeLeading(e){let t=Ba.exec(e.trimStart());if(!t)return null;let n=t[1],r=this.get(n);return r?{unit:r,token:n,rest:t[2].trim()}:null}extend(...t){return new e([...this.defs,...t])}toArray(){return[...this.defs]}},Ha=[{canonical:`m`,dimension:`length`,aliases:[`meter`,`meters`,`metre`,`metres`]},{canonical:`km`,dimension:`length`,aliases:[`kilometer`,`kilometers`,`kilometre`,`kilometres`]},{canonical:`cm`,dimension:`length`,aliases:[`centimeter`,`centimeters`,`centimetre`,`centimetres`]},{canonical:`mm`,dimension:`length`,aliases:[`millimeter`,`millimeters`,`millimetre`,`millimetres`]},{canonical:`ft`,dimension:`length`,aliases:[`foot`,`feet`]},{canonical:`in`,dimension:`length`,aliases:[`inch`,`inches`]},{canonical:`yd`,dimension:`length`,aliases:[`yard`,`yards`]},{canonical:`mi`,dimension:`length`,aliases:[`mile`,`miles`]},{canonical:`kg`,dimension:`mass`,aliases:[`kilo`,`kilos`,`kilogram`,`kilograms`]},{canonical:`g`,dimension:`mass`,aliases:[`gram`,`grams`]},{canonical:`lb`,dimension:`mass`,aliases:[`lbs`,`pound`,`pounds`]},{canonical:`bw`,dimension:`mass`,aliases:[`bodyweight`]},{canonical:`cal`,dimension:`energy`,aliases:[`cals`,`calorie`,`calories`]},{canonical:`kcal`,dimension:`energy`,aliases:[`kcals`,`kilocalorie`,`kilocalories`]}],Ua={standard(){return new Va(Ha)},of(e){return new Va(e)}},Wa=e=>{if(e==null||!Number.isFinite(e))return`--:--`;let t=e<0,n=Math.floor(Math.abs(e)/1e3),r=Math.floor(n/60),i=n%60;return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`},Ga=e=>{if(e==null||!Number.isFinite(e))return`--:--:--`;let t=e<0,n=Math.floor(Math.abs(e)/1e3),r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=n%60;return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}:${a.toString().padStart(2,`0`)}`},Ka=e=>e==null||!Number.isFinite(e)?`--:--`:Math.floor(Math.abs(e)/1e3)>=3600?Ga(e):Wa(e),qa=new Set([G.Duration,G.Time,G.Elapsed,G.Total]);function Ja(e){return qa.has(e)}function Ya(e){if(e.image)return e.image;if(e.value===void 0||e.value===null)return e.type;if(typeof e.value==`object`){let t=e.value;return`text`in t?String(t.text):`current`in t?`Round ${t.current}`:JSON.stringify(e.value)}return String(e.value)}function Xa(e,t){if(Ja(e.type)&&typeof e.value==`number`)return Ka(e.value);let n=Ya(e);if(e.type===G.Rounds||e.type===`rounds`){let e=n.trim();if(/^\d+$/.test(e))return`${n} ${Number(e)===1?`Round`:`Rounds`}`}return n}function Za(e){let t=[];return t.push(`Type: ${e.type}`),e.value!==void 0&&t.push(`Value: ${e.value}`),e.origin&&t.push(`Origin: ${e.origin}`),e.sourceBlockKey&&t.push(`Block: ${e.sourceBlockKey}`),e.timestamp&&t.push(`Time: ${e.timestamp.toISOString()}`),t.join(`
5
+ `)}var Qa={duration:`Duration`,rep:`Reps`,effort:`Effort`,distance:`Distance`,rounds:`Rounds`,resistance:`Resistance`,action:`Action`,increment:`Increment`,metric:`Metric`,label:`Label`,text:`Text`,custom:`Custom`,calculated:`Calculated`,"current-round":`Current Round`,volume:`Volume`,intensity:`Intensity`,load:`Load`,work:`Work`,lap:`Lap`,group:`Group`,time:`Time`,elapsed:`Elapsed`,total:`Total`,"system-time":`System Time`,spans:`Spans`,system:`System`,rir:`RIR`,"session-rpe":`Session RPE`,"session-load":`Session Load`,"met-score":`MET Score`,tis:`TIS`,sound:`Sound`};function $a(e){let t=e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).trim();return t.length===0?``:t.split(/\s+/).map(e=>e===e.toUpperCase()||/^[A-Z]{2,}$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function eo(e){let t=String(e).trim();return Qa[t.toLowerCase()]??$a(t)}function to(e){return e.type.toLowerCase()===`effort`&&(e.value??e.image??``).trim().toLowerCase()===`rest`}function no(e,t){return t?`rest`:{time:`time`,duration:`time`,elapsed:`time`,total:`time`,spans:`time`,rep:`rep`,effort:`effort`,distance:`distance`,rounds:`rounds`,increment:`rounds`,"current-round":`rounds`,action:`action`,resistance:`resistance`,text:`muted`,label:`muted`,group:`muted`,lap:`muted`,system:`system`,"system-time":`system`,volume:`rep`,intensity:`effort`,load:`resistance`,work:`effort`,rir:`effort`,"session-rpe":`effort`,"session-load":`resistance`,"met-score":`distance`,tis:`action`,sound:`system`,metric:`effort`,custom:`muted`,calculated:`effort`}[e.type.toLowerCase()]??`unknown`}function ro(){return{isStructural(e){let t=e.type;if(t===G.Group||t===`group`){let t=e.image??``;return t===`+`||t===`-`}return t===G.Lap||t===`lap`},isHidden(e,t){if(this.isStructural(e))return t!==`debug`;let n=e.type;return(n===G.Sound||n===`sound`)&&t!==`debug`||t===`review-grid-column`&&(n===G.Elapsed||n===`elapsed`||n===G.Total||n===`total`||n===G.System||n===`system`)},present(e,t){let n=this.isStructural(e),r=this.isHidden(e,t),i=to(e),a=(e.type===G.Text||e.type===`text`)&&e.origin===`parser`,o=e.origin===`user`,s;return s=r?`hidden`:a?`comment`:t===`timer-subtitle`||t===`history-label`||t===`label-composer`?`plain-text`:t===`review-grid-column`?`column-heading`:`badge`,{metric:e,label:Xa(e,t),tooltip:Za(e),renderKind:s,tone:no(e,i),iconKey:i?`rest`:e.type,visible:!r,structural:n,rest:i,comment:a,userEntered:o,columnLabel:eo(e.type)}},presentGroup(e,t){return e.map(e=>this.present(e,t))},columnLabel(e){return eo(e)}}}var io=ro(),ao=class{effort;value;image;origin=`parser`;constructor(e){this.effort=e,this.value=e,this.image=e}type=G.Effort},oo=class{unit;value;image;origin;constructor(e,t){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`}type=G.Distance},so=class{unit;value;image;origin;constructor(e,t){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`}type=G.Resistance},co=class{unit;dimension;value;image;origin;type;constructor(e,t,n){this.unit=t,this.dimension=n,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`,this.type=n===`energy`?`energy`:G.Custom}};function lo(e,t,n){switch(n){case`length`:return new oo(e,t);case`mass`:return new so(e,t);default:return new co(e,t,n)}}var uo=class{alternatives;type=G.Choice;origin=`parser`;value;image;constructor(e){this.alternatives=e,this.value={alternatives:e},this.image=e.map(e=>e.image??String(e.value??``)).join(` | `)}},fo=class{unit;value;image;origin;constructor(e,t=`%`){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`?${t}`:`${e}${t}`,this.origin=e===void 0?`hinted`:`parser`}type=G.Intensity};function po(e){return e.type===G.Rep&&(typeof e.value==`number`||e.value===void 0)}function mo(e){return e.type===G.Effort&&(typeof e.value==`string`?e.value:e.image)===`/`}function ho(e){return e.type===G.Effort&&(typeof e.value==`string`?e.value:e.image)===`|`}function go(e){return e.type!==G.Effort&&e.type!==G.Text?null:typeof e.value==`string`?e.value:typeof e.image==`string`?e.image:null}function _o(e){if(e.type!==G.Distance&&e.type!==G.Resistance)return!1;let t=e.value;return!!t&&t.amount!==void 0&&(!t.unit||t.unit===``)}function vo(e,t,n){if(!e||!t)return e??t;let r=e.startOffset,i=(t.startOffset??0)+n.length,a=(t.startOffset??0)-(e.endOffset??0),o=e.raw===void 0?void 0:e.raw+` `.repeat(Math.max(0,a))+n,s=r===void 0?void 0:i-r;return{line:e.line,startOffset:r,endOffset:i,columnStart:e.columnStart,columnEnd:e.columnStart!==void 0&&s!==void 0?e.columnStart+s:e.columnEnd,length:s,raw:o}}function yo(e,t){if(!e||e.raw===void 0)return e&&{...e,raw:t};let n=e.raw.indexOf(t),r=n>=0?n:0,i=(e.startOffset??0)+r;return{line:e.line,startOffset:i,endOffset:e.endOffset,columnStart:(e.columnStart??0)+r,columnEnd:e.columnEnd,length:t.length,raw:t}}function bo(e,t){if(!e||!t)return e??t;let n=e.startOffset,r=t.endOffset,i=n!==void 0&&r!==void 0?r-n:void 0;return{line:e.line,startOffset:n,endOffset:r,columnStart:e.columnStart,columnEnd:t.columnEnd,length:i,raw:e.raw}}function xo(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(!(mo(i.metric)||ho(i.metric))){if(a){let t=go(i.metric),o=e[r+2]?go(e[r+2].metric):null;if(t!==null&&ho(a.metric)&&o!==null){let t=[i.metric],a=r+1;for(;a+1<e.length&&ho(e[a].metric)&&go(e[a+1].metric)!==null;)t.push(e[a+1].metric),a+=2;n.push({metric:new uo(t),meta:bo(i.meta,e[a-1].meta)}),r=a-1;continue}}if(a&&e[r+2]&&e[r+3]){let o=e[r+2],s=e[r+3],c=po(i.metric)||_o(i.metric),l=po(o.metric)||_o(o.metric);if(c&&ho(a.metric)&&l){let e=go(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=po(i.metric)?i.metric.value:i.metric.value.amount,t=po(o.metric)?o.metric.value:o.metric.value.amount,c=lo(e,a.token,a.unit.dimension),l=lo(t,a.token,a.unit.dimension);if(c.type===l.type){let e=vo(i.meta,s.meta,a.token);n.push({metric:new uo([c,l]),meta:e}),a.rest&&n.push({metric:new ao(a.rest),meta:yo(s.meta,a.rest)}),r+=3;continue}}}}if(a&&e[r+2]&&e[r+3]){let o=e[r+2],s=e[r+3],c=po(i.metric)||_o(i.metric),l=po(o.metric)||_o(o.metric);if(c&&mo(a.metric)&&l){let e=go(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=po(i.metric)?i.metric.value:i.metric.value.amount,t=po(o.metric)?o.metric.value:o.metric.value.amount;if(e!==void 0&&t!==void 0&&t!==0){let o=lo(e/t,a.token,a.unit.dimension),c=vo(i.meta,s.meta,a.token);n.push({metric:o,meta:c}),a.rest&&n.push({metric:new ao(a.rest),meta:yo(s.meta,a.rest)}),r+=3;continue}}}}if(a&&po(i.metric)){let e=go(a.metric);if(e!==null&&e.trim()===`%`){n.push({metric:new fo(i.metric.value),meta:vo(i.meta,a.meta,`%`)}),r++;continue}}if(a&&(po(i.metric)||_o(i.metric))){let e=go(a.metric),o=e===null?null:t.consumeLeading(e);if(o){let e=po(i.metric)?i.metric.value:i.metric.value.amount;n.push({metric:lo(e,o.token,o.unit.dimension),meta:vo(i.meta,a.meta,o.token)}),o.rest&&n.push({metric:new ao(o.rest),meta:yo(a.meta,o.rest)}),r++;continue}}n.push(i)}}return n}function So(e,t){let n=e.metrics.toArray(),r=xo(n.map(t=>({metric:t,meta:e.metricMeta?.get(t)})),t);if((r.length!==n.length||r.some((e,t)=>e.metric!==n[t]))&&(e.metrics.clear().add(...r.map(e=>e.metric)),e.metricMeta)){let t=new Map(e.metricMeta);for(let e of n)r.some(t=>t.metric===e)||t.delete(e);for(let e of r)e.meta&&t.set(e.metric,e.meta);e.metricMeta=t}}var Co=class{id=`units`;name=`Units Dialect`;units;constructor(e=Ua.standard()){this.units=e}transform(e){So(e,this.units)}analyze(e){return{}}},wo=class{id=`crossfit`;name=`CrossFit Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===G.Action||e.type===G.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t))}hasChildren(e){return e.children&&e.children.length>0}analyze(e){let t=[],n=K.from(e.metrics),r=this.hasKeyword(n,`AMRAP`);r&&(t.push(`behavior.time_bound`),t.push(`workout.amrap`));let i=this.hasKeyword(n,`EMOM`);if(i&&(t.push(`behavior.repeating_interval`),t.push(`workout.emom`)),!i&&!r){let r=n.some(e=>e.type===G.Rounds),i=n.some(e=>e.type===G.Duration),a=this.hasChildren(e);r&&i&&a&&(t.push(`behavior.repeating_interval`),t.push(`workout.emom`),t.push(`workout.implicit_emom`))}return this.hasKeyword(n,`FOR TIME`)&&(t.push(`behavior.time_bound`),t.push(`workout.for_time`)),this.hasKeyword(n,`TABATA`)&&(t.push(`behavior.repeating_interval`),t.push(`workout.tabata`)),{metrics:La(t)}}},To=class{id=`wod`;name=`WOD Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===G.Action||e.type===G.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}analyze(e){let t=[],n=K.from(e.metrics);return this.hasKeyword(n,`STRENGTH`)&&(t.push(`domain.wod`),t.push(`workout.strength`),t.push(`behavior.load_bearing`)),(this.hasKeyword(n,`METCON`)||this.hasKeyword(n,`METABOLIC`))&&(t.push(`domain.wod`),t.push(`workout.metcon`)),(this.hasKeyword(n,`SKILL`)||this.hasKeyword(n,`TECHNIQUE`))&&(t.push(`domain.wod`),t.push(`workout.skills`)),this.hasKeyword(n,`WOD`)&&t.push(`domain.wod`),this.hasKeyword(n,`SUPERSET`)&&(t.push(`domain.wod`),t.push(`workout.superset`)),{metrics:La(t)}}},Eo=class{id=`cardio`;name=`Cardio Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===G.Action||e.type===G.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}hasDistance(e){return e.some(e=>e.type===G.Distance)}analyze(e){let t=[],n=K.from(e.metrics);return(this.hasKeyword(n,`RUN`)||this.hasKeyword(n,`JOG`)||this.hasKeyword(n,`SPRINT`))&&(t.push(`domain.cardio`),t.push(`workout.run`),t.push(`behavior.aerobic`)),(this.hasKeyword(n,`ROW`)||this.hasKeyword(n,`ROWING`))&&(t.push(`domain.cardio`),t.push(`workout.row`),t.push(`behavior.aerobic`)),(this.hasKeyword(n,`BIKE`)||this.hasKeyword(n,`CYCLE`)||this.hasKeyword(n,`CYCLING`))&&(t.push(`domain.cardio`),t.push(`workout.bike`),t.push(`behavior.aerobic`)),(this.hasKeyword(n,`SWIM`)||this.hasKeyword(n,`SWIMMING`))&&(t.push(`domain.cardio`),t.push(`workout.swim`),t.push(`behavior.aerobic`)),(this.hasKeyword(n,`WALK`)||this.hasKeyword(n,`WALKING`))&&(t.push(`domain.cardio`),t.push(`workout.walk`)),t.length===0&&this.hasDistance(n)&&(t.push(`domain.cardio`),t.push(`behavior.distance_based`)),t.includes(`domain.cardio`)&&this.hasDistance(n)&&(t.push(`behavior.distance_based`),t.push(`behavior.pace_based`)),{metrics:La(t)}}},Do=class e{id=`yoga`;name=`Yoga Dialect`;static POSE_KEYWORDS=[`WARRIOR`,`DOWNWARD`,`UPWARD`,`CHILD'S POSE`,`COBRA`,`PIGEON`,`TRIANGLE`,`MOUNTAIN`,`TREE POSE`,`LOTUS`,`CORPSE`,`SAVASANA`,`TADASANA`,`VIRABHADRASANA`,`BALASANA`,`ADHO`,`URDHVA`,`UTTANASANA`,`VRKSASANA`];static FLOW_KEYWORDS=[`SUN SALUTATION`,`VINYASA`,`FLOW`,`SEQUENCE`];static BREATHING_KEYWORDS=[`PRANAYAMA`,`BREATH`,`BREATHING`,`NADI SHODHANA`,`KAPALABHATI`,`UJJAYI`,`BOX BREATH`,`WIM HOF`];static MEDITATION_KEYWORDS=[`MEDITATION`,`MEDITATE`,`MINDFULNESS`,`BODY SCAN`,`VISUALIZATION`];hasAnyKeyword(e,t){return e.some(e=>(e.type===G.Action||e.type===G.Effort||e.type===G.Text)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=K.from(t.metrics),i=r.some(e=>e.type===G.Duration);return this.hasAnyKeyword(r,e.POSE_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.pose`),i&&n.push(`behavior.hold`)),this.hasAnyKeyword(r,e.FLOW_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.flow`)),this.hasAnyKeyword(r,e.BREATHING_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.breathing`),n.push(`behavior.mindful`)),this.hasAnyKeyword(r,e.MEDITATION_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.meditation`),n.push(`behavior.mindful`)),{metrics:La(n)}}},Oo=class e{id=`habits`;name=`Habits Dialect`;static HABIT_KEYWORDS=[`DAILY`,`HABIT`,`STREAK`,`CHECK`,`LOG`,`MORNING`,`EVENING`,`ROUTINE`];static STREAK_KEYWORDS=[`STREAK`,`CONSECUTIVE`,`IN A ROW`];hasAnyKeyword(e,t){return e.some(e=>(e.type===G.Action||e.type===G.Effort||e.type===G.Text||e.type===G.Label)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=K.from(t.metrics),i=r.some(e=>e.type===G.Duration),a=r.some(e=>e.type===G.Rep);return this.hasAnyKeyword(r,e.HABIT_KEYWORDS)&&(n.push(`domain.habits`),n.push(`behavior.completable`),i?n.push(`workout.habit_timed`):a?n.push(`workout.habit_rep`):(n.push(`workout.habit_check`),n.push(`behavior.daily`))),this.hasAnyKeyword(r,e.STREAK_KEYWORDS)&&(n.includes(`domain.habits`)||n.push(`domain.habits`),n.push(`behavior.streak`),n.push(`behavior.recurring`)),{metrics:La(n)}}},ko={Discipline:`climb-discipline`,Grade:`climb-grade`,SendType:`climb-send-type`,AttemptCount:`climb-attempt-count`,RouteName:`climb-route-name`,HighPoint:`climb-high-point`},Ao={onsight:`onsight`,os:`onsight`,flash:`flash`,fl:`flash`,redpoint:`redpoint`,rp:`redpoint`,sent:`redpoint`,send:`redpoint`,repeat:`repeat`,"re-send":`repeat`,resend:`repeat`,dogged:`dogged`,hangdog:`dogged`,a0:`dogged`,tr:`top-rope`,toprope:`top-rope`,"top-rope":`top-rope`,dnf:`did-not-finish`,attempted:`did-not-finish`},jo={boulder:`bouldering`,bouldering:`bouldering`,sport:`sport`,trad:`trad`,"top rope":`top-rope`,toprope:`top-rope`,hangboard:`hangboard`,moonboard:`training-board`,kilter:`training-board`,board:`training-board`};function Mo(e){return e?typeof e.value==`string`?e.value:e.value&&typeof e.value==`object`&&`text`in e.value?String(e.value.text??``):typeof e.value==`number`?String(e.value):``:``}function No(e){return e.toLowerCase().replace(/[_\s]+/g,`-`).trim()}function Po(e,t,n,r){e.add({type:t,value:n,origin:`dialect`,unit:r})}function Fo(e,t){e.includes(t)||e.push(t)}var Io=class{id=`climb`;name=`Climb Dialect`;analyze(e){let t=[],n=K.empty(`climb-dialect`),r=K.from(e.metrics).toArray(),i=r.map(Mo).filter(Boolean).join(` `),a=this.findRouteName(r);a&&Po(n,ko.RouteName,a);let o=this.findGrade(r);o&&Po(n,ko.Grade,o);let s=this.findSendType(i);s&&Po(n,ko.SendType,s);let c=this.findAttemptCount(r);c!==void 0&&Po(n,ko.AttemptCount,c);let l=this.findHighPoint(i);l&&Po(n,ko.HighPoint,l);let u=this.findDisciplines(i,o);for(let e of u)Po(n,ko.Discipline,e);(a||o||s||l||u.length>0)&&(t.push(`domain.climb`),t.push(`behavior.route_based`)),o&&t.push(`behavior.grade_based`),c!==void 0&&t.push(`behavior.attempt_based`),s===`did-not-finish`&&t.push(`climb.project`);for(let e of u)t.push(`climb.${e.replace(`-`,`_`)}`);return{metrics:La(t,n)}}findRouteName(e){let t=e.find(e=>e.type===G.Action&&typeof e.value==`string`);return t?.value?String(t.value):void 0}findGrade(e){for(let t=0;t<e.length;t+=1){let n=e[t],r=Mo(n),i=Mo(e[t+1]),a=r.match(/\bV(\d{1,2})(?:[-+])?\b/i);if(a){let e=Number(a[1]);return{raw:a[0].toUpperCase(),system:`v-scale`,normalizedRank:e}}if(typeof n.value==`number`&&n.value>=5&&n.value<6){let e=i.match(/^\s*([abcd])\b/i)?.[1],t=e?`${n.value}${e}`:String(n.value);if(/^5\.\d{1,2}[abcd]?$/i.test(t))return{raw:t,system:`yds`,normalizedRank:this.ydsRank(t)}}let o=r.match(/\b5\.(\d{1,2})([abcd])?\b/i);if(o)return{raw:o[0],system:`yds`,normalizedRank:this.ydsRank(o[0])};let s=r.match(/\b([3-9][ABC](?:\+)?)\b/);if(s)return{raw:s[1],system:`font`};if(typeof n.value==`number`&&n.value>=3&&n.value<=9){let e=i.match(/^\s*([ABC]\+?)\b/)?.[1];if(e)return{raw:`${n.value}${e}`,system:`font`}}let c=r.match(/\b([3-9][abc](?:\+)?)\b/);if(c)return{raw:c[1],system:`french`}}}ydsRank(e){let t=e.match(/^5\.(\d{1,2})([abcd])?$/i);if(!t)return;let n=Number(t[1]),r=t[2]?.toLowerCase();return n+(r?[`a`,`b`,`c`,`d`].indexOf(r)/4:0)}findSendType(e){let t=e.toLowerCase().match(/[a-z0-9-]+/g)??[];for(let e of t){let t=No(e);if(t in Ao)return Ao[t]}if(/\bnot\s+sent\b/i.test(e))return`did-not-finish`;if(/\bwith\s+falls\b/i.test(e))return`dogged`}findAttemptCount(e){return e.find(e=>{if(e.type!==G.Resistance)return!1;let t=e.value;return t&&typeof t.amount==`number`&&String(t.unit??e.unit??``)===``})?.value?.amount}findHighPoint(e){let t=e.match(/\b(?:bolt|move|crux|high\s*point)\s*\d+\b/i)?.[0];return t?t.toLowerCase().replace(/\s+/g,` `):void 0}findDisciplines(e,t){let n=[],r=e.toLowerCase();for(let[e,t]of Object.entries(jo))r.includes(e)&&Fo(n,t);return(t?.system===`v-scale`||t?.system===`font`)&&Fo(n,`bouldering`),(t?.system===`yds`||t?.system===`french`)&&Fo(n,`sport`),n}};function Lo(e){console.warn(e)}var Ro=`units`,zo={climbing:`climb`},Bo=new Set,Vo=new class{dialects;registry;constructor(e){e instanceof Na?this.registry=e:this.dialects=e}get effectiveDialects(){return this.registry?this.registry.list():this.dialects??[]}dialectsFor(e){let t=this.effectiveDialects;if(!e)return t;let n=zo[e]??e;return t.some(e=>e.id===n)?t.filter(e=>e.id===Ro||e.id===n):(Bo.has(e)||(Bo.add(e),Lo(`[DialectStack] Unknown :sport suffix "${e}" — falling back to the full dialect stack. Known dialect ids: ${t.map(e=>e.id).join(`, `)}.`)),t)}process(e,t){this.applyDialects(e,this.dialectsFor(t))}processAll(e,t){let n=this.dialectsFor(t);for(let t of e)this.applyDialects(t,n)}applyDialects(e,t){for(let n of t){n.transform?.(e);let t=n.analyze(e);t?.metrics?.length&&e.metrics.add(...t.metrics)}}get list(){return this.effectiveDialects}}(new Na([new Co,new wo,new To,new Eo,new Do,new Oo,new Io])),Ho=class{value;image;raw;name;isPinned;origin=`parser`;constructor(e,t={}){this.raw=t.raw??e,this.isPinned=t.isPinned??this.raw.trim().startsWith(`!`),this.name=t.name??(this.raw.trim().replace(/^!/,``)||e),this.value=this.name,this.image=this.raw}type=G.Action},Uo=class{image;forceCountUp;required;value;origin;constructor(e,t=!1,n=!1){if(this.image=e,this.forceCountUp=t,this.required=n,this.image===`:?`)this.days=0,this.hours=0,this.minutes=0,this.seconds=0,this.original=void 0,this.value=void 0,this.origin=`hinted`;else{let e=this.image.split(`:`).map(e=>1*(e===``?0:Number(e))).reverse();for(;e.length<4;)e.push(0);if(this.days=e[3],this.hours=e[2],this.minutes=e[1],this.seconds=e[0],this.seconds<0||this.minutes<0||this.hours<0||this.days<0)throw Error(`Timer components cannot be negative: ${this.image}`);if(this.seconds>59&&(this.minutes>0||this.hours>0||this.days>0))throw Error(`Invalid seconds component: ${this.seconds} (must be < 60 if other components present)`);if(this.minutes>59&&(this.hours>0||this.days>0))throw Error(`Invalid minutes component: ${this.minutes} (must be < 60 if hours/days present)`);this.original=(this.seconds+this.minutes*60+this.hours*60*60+this.days*60*60*24)*1e3,this.value=this.original,this.origin=`parser`}}days;hours;minutes;seconds;original;type=G.Duration;get direction(){return this.forceCountUp||this.value===void 0?`up`:this.value>0?`down`:`up`}},Wo=class{group;image;value;constructor(e,t){this.group=e,this.image=t,this.value=e}type=G.Group;origin=`parser`};function Go(e){return e===null?`null`:String(e)}var Ko=class{key;value;image;origin;constructor(e,t,n={}){this.key=e,this.value=t,this.image=n.image??`${e}: ${Go(t)}`,this.origin=n.origin??`parser`,this.type=n.type??G.Custom;let r=oa(t);this.metadata={originalKey:e,...r!==`object`&&r!==`undefined`?{fieldRef:{path:aa(e),kind:r,...n.dimension?{dimension:n.dimension}:{}}}:{}}}type;metadata},qo=class{reps;value;image;origin;constructor(e){if(this.reps=e,e!==void 0&&e<0)throw Error(`Rep count cannot be negative: ${e}`);this.value=e,this.image=e===void 0?`?`:e.toString(),this.origin=e===void 0?`hinted`:`parser`}type=G.Rep},Jo=class{count;value;image;origin=`parser`;constructor(e){this.count=e,this.value=e,this.image=e.toString()}type=G.Rounds},Yo=class{text;level;value;image;origin=`parser`;constructor(e,t){this.text=e,this.level=t,this.value={text:e,level:t},this.image=e}type=G.Text},Xo={rpe:G.SessionRPE,rir:G.RIR,intensity:G.Intensity,load:G.Load,volume:G.Volume,work:G.Work};function Zo(e){return e.statements.map(e=>{let t=new va,n=[];for(let t of e.primitives)n.push(...Qo(t));let r=$o(n);return t.metrics=r.map(e=>e.metrics),t.metricMeta=new Map(r.map(e=>[e.metrics,e.meta])),t.id=e.id,t.line=e.line,t.text=e.meta.raw,t.raw=e.meta.raw,t.meta=e.meta,t.parent=e.parentId,t.children=e.children,t.isLeaf=e.isLeaf,t})}function Qo(e){switch(e.kind){case`lap`:return[{metrics:new Wo(e.lapType,e.raw),meta:e.meta}];case`duration`:{let t=[];return e.timerRaw&&t.push({metrics:new Uo(e.timerRaw,e.hasTrend,e.isRequired),meta:e.meta}),e.isRequired&&t.push({metrics:Ia(`behavior.required_timer`,`parser`),meta:e.meta}),t}case`rounds`:return e.sequence?e.sequence.length===1?[{metrics:new Jo(e.sequence[0]),meta:e.meta}]:[{metrics:new Jo(e.sequence.length),meta:e.meta},...e.sequence.map(t=>({metrics:new qo(t),meta:e.meta}))]:e.label?[{metrics:new Jo(e.label),meta:e.meta}]:[];case`round_scheme`:return[{metrics:new Jo(e.rounds),meta:e.meta},{metrics:new qo(e.reps),meta:e.meta}];case`action`:{let t=e.hasColonPrefix?e.raw.substring(2,e.raw.length-1).trim():e.raw.substring(1,e.raw.length-1).trim();return[{metrics:new Ho(t,{raw:t}),meta:e.meta}]}case`text`:return[{metrics:new Yo(e.raw.substring(2).trim(),void 0),meta:e.meta}];case`heading`:{let t=e.raw.match(/^(#+)\s*(.*)$/),n=t?String(t[1].length):`1`;return[{metrics:new Yo(t?t[2].trim():e.raw.substring(1).trim(),n),meta:e.meta}]}case`quantity`:return e.hasAtSign?[{metrics:new so(e.value,``),meta:e.meta}]:[{metrics:new qo(e.value),meta:e.meta}];case`effort`:return[{metrics:new ao(e.raw),meta:e.meta}];case`property`:{let t=Xo[e.key.toLowerCase()]??G.Custom;return[{metrics:new Ko(e.key,e.value,{type:t,image:e.raw}),meta:e.meta}]}case`metric_object`:return e.pairs.map(t=>{let n=Xo[t.key.toLowerCase()]??G.Custom;return{metrics:new Ko(t.key,t.value,{type:n,image:`${t.key}: ${t.value}`}),meta:e.meta}});default:return[]}}function $o(e){if(e.length<2)return e;let t=[],n=e[0];for(let r=1;r<e.length;r++){let i=e[r];if(n.metrics instanceof ao&&i.metrics instanceof ao){if(n.metrics.effort===`/`||n.metrics.effort===`|`||i.metrics.effort===`/`||i.metrics.effort===`|`){t.push(n),n=i;continue}let e=i.meta.startOffset-n.meta.endOffset;if(e<=1){let t={...n.meta,endOffset:i.meta.endOffset,columnEnd:i.meta.columnEnd,length:i.meta.endOffset-n.meta.startOffset,raw:n.meta.raw+(e===1?` `:``)+i.meta.raw};n={metrics:new ao(n.metrics.effort+(e===1?` `:``)+i.metrics.effort),meta:t};continue}}if(n.metrics instanceof qo&&(i.metrics instanceof so||i.metrics instanceof oo)){let e=i.meta.startOffset-n.meta.endOffset;if(e<=1){let t={...n.meta,endOffset:i.meta.endOffset,columnEnd:i.meta.columnEnd,length:i.meta.endOffset-n.meta.startOffset,raw:n.meta.raw+(e===1?` `:``)+i.meta.raw};if(i.metrics instanceof so&&i.metrics.value.amount===void 0){n={metrics:new so(n.metrics.reps,i.metrics.unit),meta:t};continue}if(i.metrics instanceof oo&&i.metrics.value.amount===void 0){n={metrics:new oo(n.metrics.reps,i.metrics.unit),meta:t};continue}}}t.push(n),n=i}return t.push(n),t}var es=Ai.deserialize({version:14,states:"(WQVQPOOO!jQPO'#C}O#}QPO'#CcOOQO'#Cc'#CcOOQO'#Cf'#CfOOQO'#Cg'#CgOOQO'#Ce'#CeO%_QPO'#CeO%gQPO'#CiOOQO'#Ck'#CkOOQO'#C}'#C}OOQO'#Ct'#CtO%oQPO'#ClOOQO'#Cm'#CmOOQO'#Cn'#CnOOQO'#Cp'#CpOOQO'#Cq'#CqOOQO'#Co'#CoO%tQPO'#CoOOQO'#Cr'#CrOOQO'#Cs'#CsO&kQPO'#CuOOQO'#Cd'#CdOOQO'#Cz'#CzO(PQPO'#CbO&rQPO'#CbOOQO'#Cy'#CyQVQPOOO(WQPO,58xOOQO,59P,59PO(cQPO'#CjOOQO'#C{'#C{O(qQPO,59TOOQO-E6{-E6{O(|QPO,59WOOQO,59Z,59ZOOQO'#DO'#DOO)XQPO,59aOOQO,59a,59aOOQO-E6x-E6xOOQO,58|,58|O)`QPO,58|OOQO-E6w-E6wOOQO1G.d1G.dO)gQPO'#C|O)lQPO,59UOOQO-E6y-E6yOOQO1G.o1G.oO)zQPO1G.rOOQO-E6|-E6|OOQO1G.{1G.{OOQO1G.h1G.hOOQO,59h,59hOOQO-E6z-E6zOOQO7+$^7+$^",stateData:"*u~OuOS~ORPOTaO[UOwQOxROySOzVO{TO|WO!OXO!PXO!Q[O!RYO!T]O!U^O!V_O!W`O!XcO!YdO!ZeO!^jO~OvlORqXTqX[qXwqXyqXzqX{qX|qX!OqX!PqX!QqX!RqX!TqX!UqX!VqX!WqX!XqX!YqX!ZqX!^qX~ORVXTVX[VXwVXyVXzVX{VX|VX!OVX!PVX!QVX!RVX!TVX!UVX!VVX!WVX!XVX!YVX!ZVX!^qX~O[mO{TO~ORoOTnO~OvrO~OTsO!W`O~ORtOStOTtOjtOktOltOvtO!RtO![tO~O!]vO~P%|ORYOTaO[UOwYOySOzVO{TO|WO!OXO!PXO!Q[O!RYO!T]O!U^O!V_O!W`O!XcO!YdO!ZeO~O!^xO~P&rOR{OS{OT{O~Ow|OR^XT^X}^X~ORoOTnO}!PO~ORYOwYO!RYO~O!]!SO~P%|O!^!TO~P&rOT!UO~Ow|OR^aT^a}^a~ORYOwYO!RYO!S!WO~O!T!U!O!P{[!Vyzv!X!Y!R!Z!]![jklRwxT!^u!R~",goto:`$UsPPtPPPtx|!T![!cP!T!m!T!T!T!T!T!q!x!T!T!T!TPPP#S#Y#e#k#q$OTjOkTiOkZgOhikyZfOhikyZVOhikyYUOhikyRmVToWpZbOhikyYaOhikyRsbQkORzkShOkSwhyRyiQpWR!OpQ}nR!V}YZOhikyQq!QR!QrQueR!Ru`,nodeNames:`⚠ Program Property Identifier String Number Block Lap Fragment Duration Trend CollectibleTimer Timer Rounds Sequence RoundScheme Action Text Heading Quantity AtSign Question Slash Pipe Effort MetricObject True False Null`,maxTerm:60,skippedNodes:[0],repeatNodeCount:6,tokenData:"6k~RvXY#iYZ#z]^$Ppq#iqr$Vrs$}st'dtu$Vuv$Vvw$Vxy(Oyz(Tz{(Y{|)S|})X}!O*R!O!P*W!P!Q+Z!Q![+}![!].Q!_!`$V!a!b.j!b!c.o!c!}/i!}#O/w#O#P$V#P#Q/|#Q#R0R#T#Y/i#Y#Z0{#Z#b/i#b#c2|#c#h/i#h#i4l#i#o/i#o#p6[#p#q6a#q#r6f~#nSu~XY#iYZ#z]^$Ppq#i~$PO!^~~$SPYZ#z~$[Z!R~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~%QXOY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^<%lO$}~%rXS~OY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^<%lO$}~&bRO;'S$};'S;=`&k;=`O$}~&nYOY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^;=`<%l$}<%lO$}~'aP;=`<%l$}~'iT!U~OY'dZ]'d^;'S'd;'S;=`'x<%lO'd~'{P;=`<%l'd~(TO|~~(YO}~~(aZz~!R~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~)XOx~~)`Z!R~![~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~*WOw~~*][!R~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!Q![+R!_!`$V!b!c$V#O#P$V#Q#R$V~+WPT~!Q![+R~+`P!X~!P!Q+c~+hT!T~OY+cZ]+c^;'S+c;'S;=`+w<%lO+c~+zP;=`<%l+c~,SUT~pq,f!O!P-Z!Q![+}![!]-a!z!{-r#l#m-r~,iRpq,f!z!{,r#l#m,r~,uPpq,x~,{Qpq,x!Q![-R~-WP!P~!Q![-R~-^P!Q![+R~-dP!Q![-g~-lQ[~!Q![-g![!]-a~-uP!Q![-x~-}P!O~!Q![-x~.VQv~!Q![.]!a!b.e~.bP[~!Q![.]~.jO{~~.oO!W~~.vZ!V~!R~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~/nRR~!Q![/i!c!}/i#T#o/i~/|O!Q~~0RO!S~~0YZy~!R~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~1QSR~!Q![/i!c!}/i#T#U1^#U#o/i~1cTR~!Q![/i!c!}/i#T#`/i#`#a1r#a#o/i~1wTR~!Q![/i!c!}/i#T#g/i#g#h2W#h#o/i~2]TR~!Q![/i!c!}/i#T#X/i#X#Y2l#Y#o/i~2sRk~R~!Q![/i!c!}/i#T#o/i~3RTR~!Q![/i!c!}/i#T#i/i#i#j3b#j#o/i~3gTR~!Q![/i!c!}/i#T#`/i#`#a3v#a#o/i~3{TR~!Q![/i!c!}/i#T#`/i#`#a4[#a#o/i~4cRl~R~!Q![/i!c!}/i#T#o/i~4qTR~!Q![/i!c!}/i#T#f/i#f#g5Q#g#o/i~5VTR~!Q![/i!c!}/i#T#i/i#i#j5f#j#o/i~5kTR~!Q![/i!c!}/i#T#X/i#X#Y5z#Y#o/i~6RRj~R~!Q![/i!c!}/i#T#o/i~6aO!Z~~6fO!Y~~6kO!]~",tokenizers:[0],topRules:{Program:[0,1]},tokenPrec:424});function ts(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
6
+ `&&t.push(n+1);return e=>{let n=0,r=t.length-1;for(;n<=r;){let i=Math.floor((n+r)/2);t[i]<=e?n=i+1:r=i-1}let i=r>=0?r:0;return{lineNumber:i+1,lineStart:t[i]}}}function ns(e,t){let n=typeof e==`string`?e:e.doc.toString(),r=n.endsWith(`
7
+ `)?n:n+`
8
+ `,i=t??es.parse(r),a=ts(n),o=[],s=null;return i.iterate({enter(e){if(e.name===`⚠`){s&&s.to===e.from&&o.splice(s.index,1),s=null;return}if(e.name===`Property`){let t=rs(a,n,e.from,e.to);if(t){let n=t.meta;o.push({id:o.length,line:n.line,meta:n,primitives:[t],children:[],isLeaf:!0}),s={to:e.to,index:o.length-1}}return}if(e.name!==`Block`)return;s=null;let t=cs(a,e.from,e.to,n.slice(e.from,e.to)),r={id:o.length,line:t.line,meta:t,primitives:[],children:[],isLeaf:!0},i=e.node.cursor();if(i.firstChild())do{let e=i.node,t=n.slice(e.from,e.to);if(e.type.id===7){let n={kind:`lap`,raw:t,meta:cs(a,e.from,e.to,t),lapType:t===`+`?`compose`:`round`};r.primitives.push(n);continue}if(e.type.id!==8||!e.firstChild)continue;let o=e.firstChild,s=as(a,n,o);s&&r.primitives.push(s)}while(i.nextSibling());o.push(r)}}),os(o),{statements:o}}function rs(e,t,n,r){let i=t.slice(n,r),a=cs(e,n,r,i),o=i.match(/^\s*([A-Za-z][A-Za-z0-9]*)\s*:\s*(.*?)\s*$/);if(!o)return null;let[,s,c]=o;return{kind:`property`,raw:i,meta:a,key:s,valueRaw:c,value:is(c)}}function is(e){let t=e.trim();return/^"(?:[^"\\]|\\.)*"$/.test(t)?t.slice(1,-1).replace(/\\(["\\/bfnrt])/g,`$1`):/^-?(?:\d+\.\d+|\d+)$/.test(t)?Number(t):t===`true`?!0:t===`false`?!1:t===`null`?null:t}function as(e,t,n){let r=t.slice(n.from,n.to),i=cs(e,n.from,n.to,r);switch(n.type.id){case 9:{let e=n.getChild(`Trend`),a=n.getChild(`Timer`)||n.getChild(`CollectibleTimer`);return{kind:`duration`,raw:r,meta:i,timerRaw:a?t.slice(a.from,a.to):void 0,hasTrend:!!e,isRequired:r.includes(`*`)}}case 13:{let e=n.getChild(`Sequence`),a=n.getChild(`Identifier`);return{kind:`rounds`,raw:r,meta:i,sequence:e?t.slice(e.from,e.to).split(`-`).map(e=>parseInt(e.trim(),10)):void 0,label:a?t.slice(a.from,a.to):void 0}}case 15:{let e=r.match(/^(\d+)\s*[xX]\s*(\d+)$/);return e?{kind:`round_scheme`,raw:r,meta:i,rounds:parseInt(e[1],10),reps:parseInt(e[2],10)}:null}case 16:return{kind:`action`,raw:r,meta:i,hasColonPrefix:r.startsWith(`[:`)};case 17:return{kind:`text`,raw:r,meta:i};case 18:return{kind:`heading`,raw:r,meta:i};case 19:{let e=!!n.getChild(`AtSign`),a=n.getChild(`Number`);return{kind:`quantity`,raw:r,meta:i,value:a?parseFloat(t.slice(a.from,a.to)):void 0,hasAtSign:e}}case 24:return{kind:`effort`,raw:r,meta:i};case 22:return{kind:`effort`,raw:r,meta:i};case 23:return{kind:`effort`,raw:r,meta:i};case 25:{let e=[];try{let t=JSON.parse(r);t&&typeof t==`object`&&!Array.isArray(t)&&(e=Object.entries(t).map(([e,t])=>({key:e,value:t})))}catch{}return{kind:`metric_object`,raw:r,meta:i,pairs:e}}default:return null}}function os(e){let t=new Map,n=[];for(let r of e){if(n=n.filter(e=>e.columnStart<r.meta.columnStart),n.length>0)for(let e of n)t.has(e.statement.id)||t.set(e.statement.id,[]),t.get(e.statement.id).push(r.id),r.parentId=e.statement.id;n.push({columnStart:r.meta.columnStart,statement:r})}for(let n of e)n.children=ss(t.get(n.id)??[],e),n.isLeaf=n.children.length===0}function ss(e,t){if(e.length===0)return[];let n=new Map(t.map(e=>[e.id,e])),r=[];for(let t of e)n.get(t)?.primitives.find(e=>e.kind===`lap`)?.lapType===`compose`&&r.length>0?r[r.length-1].push(t):r.push([t]);return r}function cs(e,t,n,r){let{lineNumber:i,lineStart:a}=e(t);return{line:i,startOffset:t,endOffset:n,columnStart:t-a,columnEnd:n-a,length:n-t,raw:r}}function ls(e,t){return typeof e==`string`?{source:e,tree:t}:`source`in e?{source:e.source,tree:t??e.tree}:`doc`in e?{source:e.doc.toString(),tree:t}:{source:``}}function us(e,t){let{source:n,tree:r}=ls(e,t);return ms(Zo(ns(n,r)))}function ds(e,t,n){let r,i;typeof t==`string`?r=t:t&&typeof t==`object`&&(i=t,r=n);let a=ls(e,i),o=Zo(ns(a.source,a.tree));return Vo.processAll(o,r),ms(o)}function fs(e){return e.children.length>0?!1:e.metrics.some(e=>e.type===G.Rounds)&&e.metrics.some(e=>e.type===G.Rep)&&!e.metrics.some(e=>e.type===G.Duration)}function ps(e){let t=Object.create(Object.getPrototypeOf(e));return Object.assign(t,e),t}function ms(e){if(!e.some(fs))return e;let t=[],n=new Map,r=new Map,i=new Map,a=new Map;for(let o of e){if(!fs(o)){n.set(o.id,t.length),t.push(o);continue}o.parent!==void 0&&r.set(o.id,o.parent);let e=ps(o),s=ps(o),c=e=>e.type===G.Rounds||e.type===G.Rep;e.metrics=K.from(o.metrics.filter(c),e.id),s.metrics=K.from(o.metrics.filter(e=>!c(e)),s.id),e.metricMeta=new Map([...o.metricMeta].filter(([e])=>c(e))),s.metricMeta=new Map([...o.metricMeta].filter(([e])=>!c(e))),e.isLeaf=!1,s.isLeaf=!0,e.children=[],s.children=[],i.set(s,e),a.set(e,o.id),n.set(o.id,t.length),t.push(e,s)}return t.map((e,t)=>{let o=e.id;if(e.id=t,e.metrics=K.from(e.metrics,e.id),i.get(e))return e.parent=t-1,e;if(a.has(e)){e.children=[[t+1]];let i=r.get(a.get(e));return e.parent=i===void 0?void 0:n.get(i),e}return e.parent=e.parent===void 0?void 0:n.get(e.parent),e.children=e.children.map(e=>e.filter(e=>!r.has(e)||r.get(e)===o).map(e=>n.get(e)??e)).filter(e=>e.length>0),e})}var hs=class{source;statements;errors;_idMap;constructor(e,t,n=[]){this.source=e,this.statements=t,this.errors=n}getIdMap(){return this._idMap||=new Map(this.statements.map(e=>[e.id,e])),this._idMap}getIds(e){let t=this.getIdMap();return e.map(e=>t.get(e)).filter(Boolean)}getId(e){return this.getIdMap().get(e)}getAt(e){return this.statements[e]}getFlatChildren(e){return this.getIds(e.flat())}getChildGroups(e){return e.map(e=>this.getIds(e))}};function gs(e,t={}){if(!e||!e.trim())return new hs(e,[],[]);try{let n=e.endsWith(`
9
+ `)?e:e+`
10
+ `,r=es.parse(n),i=t.sport??t.dialect;return new hs(e,t.withoutDialects?us(e,r):ds(e,r,i),[])}catch(t){return new hs(e,[],[{message:t instanceof Error?t.message:`Unknown parse error`}])}}var _s=class{read(e,t){return gs(e,{sport:t})}readWithoutDialects(e){return gs(e,{withoutDialects:!0})}};function vs(){return new _s}var ys=Br.define({parser:es.configure({props:[Fi({Identifier:B.variableName,String:B.string,Number:B.number,"schemeNumber schemeSpaced":B.number,Timer:B.keyword,collectibleTimer:B.keyword,textComment:B.lineComment,heading:B.heading,minus:B.operator,plus:B.operator,trend:B.operator,atSign:B.operator,"Slash/slash":B.operator,question:B.keyword,actionOpen:B.bracket,actionClose:B.bracket,groupOpen:B.bracket,groupClose:B.bracket,colon:B.punctuation,Property:B.propertyName,"Block/Lap":B.keyword})]}),languageData:{commentTokens:{line:`//`},closeBrackets:{brackets:[`(`,`[`,`'`,`"`]}}}),bs=[`low`,`moderate`,`high`],xs={defaultMet:5,defaultThreshold:2},Ss=[`bodyweight`,`cycling`,`gymnastics`,`kettlebell`,`recovery`,`rowing`,`running`,`strength`,`swimming`,`walking`];function Cs(e){return typeof e==`string`&&Ss.includes(e.toLowerCase())}var ws={strength:1.2,kettlebell:1.2,gymnastics:1.2,recovery:.9,bodyweight:1,cycling:1,rowing:1,running:1,swimming:1,walking:1};function Ts(e){if(!e)return 1;let t=e.toLowerCase();return Cs(t)?ws[t]:1}function Es(e,t){if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;if(e.length>t.length){let n=e;e=t,t=n}let n=e.length,r=t.length,i=new Uint32Array(n+1),a=new Uint32Array(n+1);for(let e=0;e<=n;e++)i[e]=e;for(let o=1;o<=r;o++){a[0]=o;let r=t.charCodeAt(o-1);for(let t=1;t<=n;t++){let n=e.charCodeAt(t-1)===r?0:1;a[t]=Math.min(i[t]+1,a[t-1]+1,i[t-1]+n)}let s=i;i=a,a=s}return i[n]}function Ds(e){return e.toLowerCase().replace(/[^\p{L}\p{N}\s-]/gu,` `).replace(/[-_]+/g,` `).trim().replace(/\s+/g,` `)}function Os(e,t,n){let r=Ds(e),i=null;for(let e of t){let t=Ds(e);if(Math.abs(r.length-t.length)>n)continue;let a=Es(r,t);if(!(a>n)&&(!i||a<i.distance)&&(i={target:e,distance:a},a===0))break}return i}function ks(e){return Ds(e).replace(/\s+/g,`-`)}var As=class{registry;options;constructor(e,t){this.registry=e,this.options={defaultMet:t?.defaultMet??xs.defaultMet,defaultThreshold:t?.defaultThreshold??xs.defaultThreshold}}resolveBySlug(e){return this.registry.resolve(e)}resolveByAlias(e){let t=Ds(e);for(let e of this.registry.list()){if(Ds(e.label)===t)return e;for(let n of e.aliases)if(Ds(n)===t)return e}return null}resolveFuzzy(e,t){let n=t?.threshold??this.options.defaultThreshold,r=Ds(e),i=this.resolveByAlias(e);if(i)return i;let a=[];for(let e of this.registry.list())for(let t of[e.label,...e.aliases])a.push({alias:t,effort:e});let o=Os(r,a.map(e=>e.alias),n);if(o){let e=a.find(e=>Ds(e.alias)===Ds(o.target));if(e)return e.effort}return this.createSyntheticEffort(e)}resolveEffort(e,t){let n=this.resolveBySlug(e)??this.resolveByAlias(e)??this.resolveFuzzy(e,{threshold:t?.threshold});return this.resolveDefinition(n,t)}resolveDefinition(e,t){return this.materialize(e,t?.modifiers??{},new Set)}list(){return this.registry.list()}materialize(e,t,n){if(n.has(e.slug))throw Error(`EffortResolver: circular effort derivation detected at "${e.slug}"`);n.add(e.slug);let r=e.derivation?.parentSlug?this.registry.resolve(e.derivation.parentSlug):null,i=r?this.materialize(r,t,n):null,a=i?.met??e.baseAttributes.met,o=e.derivation?.coefficients??{};for(let[e,n]of Object.entries(o))this.shouldApplyCoefficient(e,t)&&(a*=n);let s=e.derivation?.hardOverrides?.met;typeof s==`number`&&Number.isFinite(s)&&(a=s);let c=e.baseAttributes.discipline??i?.discipline,l=this.resolveDisciplineFactor(e,i),u=e.registrySource,d=u===`user`?`user`:u===`bundled`?`bundled`:`default`,f=u===`synthetic-unresolved`,p={...e,baseAttributes:{...e.baseAttributes,met:a,discipline:c,disciplineFactor:l,intensityTier:e.baseAttributes.intensityTier??i?.intensityTier}};return{effort:p,definition:e,slug:p.slug,label:p.label,met:a,baseAttributes:p.baseAttributes,discipline:c,disciplineFactor:l,intensityTier:p.baseAttributes.intensityTier,modifiers:{...t},registrySource:u,resolvedFrom:d,isEstimated:f}}shouldApplyCoefficient(e,t){if(e===`met`||e===`*`)return!0;for(let[n,r]of Object.entries(t))if(e===n||e===r||e===`${n}:${r}`||e===`${n}=${r}`)return!0;return!1}resolveDisciplineFactor(e,t){let n=e.derivation?.hardOverrides?.disciplineFactor;if(typeof n==`number`&&Number.isFinite(n))return n;let r=e.baseAttributes.disciplineFactor;if(typeof r==`number`&&Number.isFinite(r))return r;let i=e.baseAttributes.discipline??t?.discipline;return!i&&t?t.disciplineFactor:Ts(i)}createSyntheticEffort(e){let t=Ds(e),n=ks(e);return{id:`synthetic-${y()}`,slug:n,label:t,aliases:[t],baseAttributes:{met:this.options.defaultMet,discipline:void 0,intensityTier:void 0},registrySource:`synthetic-unresolved`}}},js=[{id:`fixture-running`,slug:`running-6-mph`,label:`Running (6 mph)`,aliases:[`run`,`jogging`,`treadmill`],baseAttributes:{met:9.8,discipline:`running`,intensityTier:`moderate`},registrySource:`bundled`},{id:`fixture-rowing`,slug:`rowing`,label:`Rowing`,aliases:[`row`,`rower`,`erg`],baseAttributes:{met:7,discipline:`rowing`,intensityTier:`high`},registrySource:`bundled`},{id:`fixture-back-squat`,slug:`back-squat`,label:`Back Squat`,aliases:[`squat`,`barbell squat`,`bs`],baseAttributes:{met:6,discipline:`strength`,intensityTier:`moderate`},registrySource:`bundled`},{id:`fixture-burpee`,slug:`burpee`,label:`Burpee`,aliases:[`burpees`],baseAttributes:{met:10,discipline:`bodyweight`,intensityTier:`high`},registrySource:`bundled`},{id:`fixture-plank`,slug:`plank`,label:`Plank`,aliases:[`planks`],baseAttributes:{met:3.5,discipline:`bodyweight`,intensityTier:`low`},registrySource:`bundled`}];[...js];var Ms=js;Ms.length;var Ns=class{efforts=new Map;sourceFilter=null;initialized=!1;constructor(e){this.sourceFilter=e??null}async loadBundled(){for(let e of Ms)(!this.sourceFilter||e.registrySource===this.sourceFilter)&&this.efforts.set(e.slug,e);this.initialized=!0}isInitialized(){return this.initialized}seed(e){for(let t of e)this.efforts.set(t.slug,t)}clear(){this.efforts.clear(),this.initialized=!1}resolve(e){return this.efforts.get(e)??null}resolveByAlias(e){let t=Ds(e);for(let e of this.efforts.values()){if(Ds(e.label)===t)return e;for(let n of e.aliases)if(Ds(n)===t)return e}return null}list(){return Array.from(this.efforts.values())}listByOrigin(e){return this.list().filter(t=>t.registrySource===e)}async upsert(e){if(e.registrySource!==`user`)throw Error(`InMemoryEffortRegistry.upsert: only user efforts can be written. Received registrySource="${e.registrySource}"`);this.efforts.set(e.slug,e)}async delete(e){let t=this.efforts.get(e);if(t&&t.registrySource!==`user`)throw Error(`InMemoryEffortRegistry.delete: cannot delete non-user effort "${e}"`);this.efforts.delete(e)}},Ps=class{userEfforts=new Map;bundledEfforts=new Map;initialized=!1;initialBundled;storage;constructor(e){e&&(this.initialBundled=e.bundled,this.storage=e.storage)}async loadBundled(e){let t=e??this.initialBundled??Ms;for(let e of t)this.bundledEfforts.set(e.slug,e);if(this.storage)try{let e=await this.storage.load();for(let t of e)t.registrySource===`user`&&this.userEfforts.set(t.slug,t)}catch(e){console.warn(`[CompositeEffortRegistry] Failed to load user efforts from storage adapter:`,e)}this.initialized=!0}isInitialized(){return this.initialized}resolve(e){return this.userEfforts.get(e)??this.bundledEfforts.get(e)??null}resolveByAlias(e){let t=Ds(e);for(let e of this.userEfforts.values()){if(Ds(e.label)===t)return e;for(let n of e.aliases)if(Ds(n)===t)return e}for(let e of this.bundledEfforts.values())if(!this.userEfforts.has(e.slug)){if(Ds(e.label)===t)return e;for(let n of e.aliases)if(Ds(n)===t)return e}return null}list(){let e=new Map(this.bundledEfforts);for(let[t,n]of this.userEfforts)e.set(t,n);return Array.from(e.values())}listByOrigin(e){return e===`user`?Array.from(this.userEfforts.values()):e===`bundled`?Array.from(this.bundledEfforts.values()):this.list().filter(t=>t.registrySource===e)}async upsert(e){if(e.registrySource!==`user`)throw Error(`CompositeEffortRegistry.upsert: only user efforts can be written. Received registrySource="${e.registrySource}"`);if(this.userEfforts.set(e.slug,e),this.storage)try{await this.storage.save(e)}catch(e){console.warn(`[CompositeEffortRegistry] Failed to persist effort to storage adapter:`,e)}}async delete(e){let t=this.resolve(e);if(t&&t.registrySource!==`user`)throw Error(`CompositeEffortRegistry.delete: cannot delete non-user effort "${e}"`);if(this.userEfforts.delete(e),this.storage)try{await this.storage.delete(e)}catch(e){console.warn(`[CompositeEffortRegistry] Failed to delete effort from storage adapter:`,e)}}};async function Fs(e,t,n){let r=n.trim();if(!r)throw Error(`Alias cannot be empty`);let i=e.resolve(t);if(!i)throw Error(`Effort "${t}" not found in registry`);let a=Ds(r);if(Ds(i.label)===a||i.aliases.some(e=>Ds(e)===a))return i;let o=[...i.aliases,r],s=new Date().toISOString();if(i.registrySource===`bundled`){let t=typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`effort-user-${crypto.randomUUID()}`:`effort-user-${Date.now()}`,n={...i,id:t,registrySource:`user`,aliases:o,updatedAt:s,derivation:i.derivation??{parentSlug:i.slug,coefficients:{},hardOverrides:{}}};return await e.upsert(n),n}let c={...i,aliases:o,updatedAt:s};return await e.upsert(c),c}var Is={debugMode:!1,enableLogging:!1,maxActionDepth:20},Ls=class e{started;ended;constructor(e,t){this.started=e,this.ended=t}static fromJSON(t){return new e(t.started,t.ended)}static fromDates(t,n){return new e(t.getTime(),n?.getTime())}get duration(){let e=this.ended??Date.now();return Math.max(0,e-this.started)}get isOpen(){return this.ended===void 0}get startDate(){return new Date(this.started)}get endDate(){return this.ended?new Date(this.ended):void 0}},Rs=class e{_underlying;_frozenTime;constructor(e,t){this._underlying=e,this._frozenTime=t}get currentDate(){return this._frozenTime}now(){return this._frozenTime}nowMs(){return this._frozenTime.getTime()}get elapsed(){return this._underlying.elapsed}get isRunning(){return this._underlying.isRunning}get spans(){return this._underlying.spans}start(){return this._underlying.start()}stop(){return this._underlying.stop()}static at(t,n){return new e(t,n)}static now(t){return new e(t,t.currentDate)}},zs=class{_spans=[];get currentDate(){return new Date}now(){return this.currentDate}nowMs(){return this.currentDate.getTime()}get isRunning(){return this._spans.length!==0&&this._spans[this._spans.length-1].isOpen}get spans(){return this._spans}get elapsed(){return this._spans.reduce((e,t)=>e+t.duration,0)}start(){let e=new Date;return this.isRunning?this._spans[this._spans.length-1].startDate:(this._spans.push(new Ls(e.getTime())),e)}stop(){let e=new Date;return this.isRunning&&(this._spans[this._spans.length-1].ended=e.getTime()),e}reset(){this._spans=[]}},Bs={now:()=>new Date,nowMs:()=>Date.now()},Vs=class{options;now;type=`next`;constructor(e,t=Bs){this.options=e,this.now=t}do(e){if(!this.validateRuntimeState(e))return[];let t=e.stack.current;if(!t)return[];try{let n={...e.clock?{clock:Rs.now(e.clock)}:void 0,...this.options};return t.next(e,n)}catch(n){return e.errors&&Array.isArray(e.errors)&&e.errors.push({error:n,source:`NextAction`,timestamp:this.now.now(),blockKey:t.key.toString()}),[]}}validateRuntimeState(e){return!!e.stack}},Hs=class{error;source;context;type=`error`;constructor(e,t,n){this.error=e,this.source=t,this.context=n}do(e){let t=e;t.errors||=[];let n={error:this.error,source:this.source,timestamp:new Date,context:this.context};t.errors.push(n),console.error(`❌ Runtime Error from ${this.source}:`,this.error.message),this.context&&console.error(` Context:`,this.context)}},Us=class{error;source;type=`throw-error`;constructor(e,t){this.error=e,this.source=t}do(e){new Hs(this.error,this.source).do(e),e.eventBus.dispatch({name:`workout:error`,timestamp:e.clock.currentDate,data:{error:this.error,source:this.source}},e)}};function Ws(e,t){return new Us(e,t)}var Gs=class{_id;_name;constructor(e){this._id=e,this._name=`next-handler`}get id(){return this._id}set id(e){throw Error(`Cannot modify readonly property id`)}get name(){return this._name}set name(e){throw Error(`Cannot modify readonly property name`)}handler(e,t){return e.name===`next`?!t||!t.stack||t.stack.count===0?[Ws(Error(`Invalid runtime state for next event`),`NextEventHandler`)]:[new Vs(void 0,t.nowProvider)]:[]}},Ks=class{type=`abort-session`;do(e){let t=0,n=[];for(;t<100&&e.stack.count>0;){let r=e.stack.current;if(!r)break;!r.isComplete&&typeof r.markComplete==`function`&&r.markComplete(`user-abort`);let i=(r.unmount(e,{createdAt:e.clock.currentDate})??[]).filter(e=>e.type!==`emit-event`);n.push(...i);let a=e.stack.pop();if(!a)break;a.dispose(e),a.context?.release?.(),t++}return n}},qs=class{_id;constructor(e){this._id=e}get id(){return this._id}set id(e){throw Error(`Cannot modify readonly property id`)}get name(){return`abort-handler`}set name(e){throw Error(`Cannot modify readonly property name`)}handler(e,t){return e.name!==`abort`||!t||!t.stack||t.stack.count===0?[]:[new Ks]}},Js=class{message;event;blockKey;blockLabel;stackLevel;extra;type=`emit-system-output`;constructor(e,t,n,r,i,a){this.message=e,this.event=t,this.blockKey=n,this.blockLabel=r,this.stackLevel=i,this.extra=a}do(e){let t=e.clock.currentDate,n={event:this.event,blockKey:this.blockKey,blockLabel:this.blockLabel,...this.extra},r={type:G.System,image:this.message,value:n,origin:`runtime`,timestamp:t},i=new ya({outputType:`system`,timeSpan:new Ls(t.getTime(),t.getTime()),sourceBlockKey:this.blockKey,stackLevel:this.stackLevel??e.stack.count,metrics:[r]});return e.addOutput(i),[]}},Ys=class{_runtime;_workList=[];_iteration=0;_maxIterations;_snapshotClock;constructor(e,t=20){this._runtime=e,this._maxIterations=t,this._snapshotClock=Rs.at(e.clock,e.clock.currentDate)}get script(){return this._runtime.script}get eventBus(){return this._runtime.eventBus}get stack(){return this._runtime.stack}get options(){return this._runtime.options}get jit(){return this._runtime.jit}get errors(){return this._runtime.errors}get analyticsContext(){return this._runtime.analyticsContext}get clock(){return this._snapshotClock}get nowProvider(){return this._runtime.nowProvider}addOutput(e){this._runtime.addOutput(e)}do(e){this._workList.unshift(e)}doAll(e){e.length!==0&&this._workList.unshift(...e)}handle(e){let t=this.eventBus.dispatch(e,this);if(t.length>0){let n=`source`in e&&typeof e.source==`string`?e.source:`event-bus`,r=new Js(`event: ${e.name} → ${t.length} action(s)`,`event-action`,n,void 0,this.stack.count,{eventName:e.name,actionTypes:t.map(e=>e.type)});this.doAll([r,...t])}else this.doAll(t)}execute(e){for(this._workList.push(e);this._workList.length>0;){if(this._iteration>=this._maxIterations)throw Error(`[ExecutionContext] Max iterations reached (${this._maxIterations}). Aborting to prevent infinite loop.`);let e=this._workList.shift();this._iteration++;let t=e.do(this);t&&t.length>0&&this._workList.unshift(...t)}}},Xs=class{_outputStatements=[];_outputListeners=new Set;_analyticsEngine=null;_analyticsFinalized=!1;_liveAnalytics=[];_clock=null;_stack=null;_script=null;attach(e){this._clock=e.clock,this._stack=e.stack,this._script=e.script}_requireClock(){if(!this._clock)throw Error(`[OutputEmitter] emission helper called before attach() — clock is not wired`);return this._clock}add(e){if(e.outputType===`system`&&this._outputListeners.size===0)return;let t=this._analyticsEngine?this._analyticsEngine.run(e):e;this._propagateSourceLine(t),this._outputStatements.push(t);for(let e of this._outputListeners)try{e(t)}catch(e){console.error(`[OutputEmitter] Listener error:`,e)}}subscribe(e){this._outputListeners.add(e);let t=[...this._outputStatements];return t.length>0&&setTimeout(()=>{if(this._outputListeners.has(e))for(let n of t)e(n)},0),()=>this._outputListeners.delete(e)}getAll(){return[...this._outputStatements]}hasListeners(){return this._outputListeners.size>0}setAnalyticsEngine(e){this._analyticsEngine=e,e.setLiveOutputEmitter(e=>this.emitLiveAnalytics(e))}finalizeAnalytics(){if(!this._analyticsEngine||this._analyticsFinalized)return[];this._analyticsFinalized=!0;let e=this._analyticsEngine.finalize(),t=e.length>0?e:this._liveAnalytics;for(let e of t){this._outputStatements.push(e);for(let t of this._outputListeners)try{t(e)}catch(e){console.error(`[OutputEmitter] Finalize listener error:`,e)}}return this._liveAnalytics=[],t}emitLiveAnalytics(e){this._liveAnalytics=e;for(let t of e)for(let e of this._outputListeners)try{e(t)}catch(e){console.error(`[OutputEmitter] Live analytics listener error:`,e)}}getLiveAnalytics(){return[...this._liveAnalytics]}dispose(){this._outputStatements=[],this._outputListeners.clear(),this._analyticsFinalized=!1,this._liveAnalytics=[]}emitLoad(){if(!this._script)throw Error(`[OutputEmitter] emitLoad() called before attach() — script is not wired`);let e=this._script,t=this._requireClock().currentDate;for(let n of e.statements){let r=e.source.substring(n.meta.startOffset,n.meta.endOffset+1),i=K.from(n.metrics,n.id);i.add({type:G.Label,image:r||`Statement`,value:r,origin:`runtime`,timestamp:t});let a=0,o=n.parent,s=new Set;for(;o!==void 0&&!s.has(o);){s.add(o);let t=e.getId(o);if(t)a++,o=t.parent;else break}this.add(new ya({outputType:`load`,timeSpan:new Ls(t.getTime(),t.getTime()),sourceBlockKey:`root`,sourceStatementId:n.id,stackLevel:a,metrics:i}))}}emitStackEvent(e){if(!this.hasListeners())return;let t=this._requireClock().currentDate,n=e.block,r=this._stack?.blocks??[],i={event:e.type,blockKey:n.key.toString(),blockLabel:n.label,actionType:e.type===`push`?`push-block`:`pop-block`};if(e.type===`push`){let e=r.length>1?r[1]:void 0;e&&(i.parentKey=e.key.toString())}else i.completionReason=n.completionReason??`normal`;let a={type:G.System,image:e.type===`push`?`push: ${n.label??n.blockType??`Block`} [${n.key.toString().slice(0,8)}]`:`pop: ${n.label??n.blockType??`Block`} [${n.key.toString().slice(0,8)}] reason=${n.completionReason??`normal`}`,value:i,origin:`runtime`,timestamp:t};this.add(new ya({outputType:`system`,timeSpan:new Ls(t.getTime(),t.getTime()),sourceBlockKey:n.key.toString(),stackLevel:e.depth,metrics:K.empty(n.key.toString()).add(a)}))}emitSegmentFromResultMemory(e,t){let n=e.getMemoryByTag(`metric:result`),r=e.getMemoryByTag(`metric:display`);if(n.length===0)return;let i=this._requireClock().currentDate.getTime();for(let a=0;a<n.length;a++){let o=K.from(n[a].metrics,e.key.toString()),s=K.from(r[a]?.metrics,e.key.toString()),c=K.empty(e.key.toString()).add(...s.toArray()).add(...o.toArray());if(c.length===0)continue;let l=new Ls(e.executionTiming?.startTime?.getTime()??i,i);this.add(new ya({outputType:`segment`,completionReason:e.completionReason,timeSpan:l,sourceBlockKey:e.key.toString(),sourceStatementId:e.sourceIds?.[a]??e.sourceIds?.[0],stackLevel:t,metrics:c}))}}emitRuntimeEvent(e){let t=this._requireClock().currentDate,n=this._stack,r=n?.current?.key.toString()??`root`,i=K.empty(r).add({type:G.System,image:`event: ${e.name}`,value:{name:e.name,data:e.data,blockKey:r},origin:`runtime`,timestamp:t});this.add(new ya({outputType:`event`,timeSpan:new Ls(t.getTime(),t.getTime()),sourceBlockKey:r,stackLevel:n?.count??0,metrics:i}))}emitCompilerBlock(e){let t=this._requireClock().currentDate,n=this._stack?.count??0,r=K.empty(e.key.toString()).add({type:G.Label,image:`Behaviors: ${e.behaviors.map(e=>e.constructor.name).join(`, `)}`,value:e.behaviors.map(e=>e.constructor.name),origin:`runtime`,timestamp:t});this.add(new ya({outputType:`compiler`,timeSpan:new Ls(t.getTime(),t.getTime()),sourceBlockKey:e.key.toString(),stackLevel:n,metrics:r}))}_propagateSourceLine(e){if(e.sourceStatementId===void 0||e.line!==void 0)return;let t=this._script?.getId(e.sourceStatementId);t&&(e.line=t.line,e.text??=t.text,e.dialect??=t.dialect)}},Zs=class{_stackObservers=new Set;_logger;constructor(e){this._logger=e}subscribeToStack(e){return this._stackObservers.add(e),()=>{this._stackObservers.delete(e)}}emitStack(e){if(this._stackObservers.size!==0)for(let t of this._stackObservers)try{t(e)}catch(e){this._logger?.error?.(`[RuntimeObservers] Stack observer error:`,e)}}hasStackObserver(e){return this._stackObservers.has(e)}emitSettled(e,t,n){if(this._stackObservers.size===0||e.length===0)return;let r={type:`initial`,blocks:e,depth:t,clockTime:n};this.emitStack(r)}dispose(){this._stackObservers.clear()}get stackObserverCount(){return this._stackObservers.size}},Qs=new class{_console=console;_enabled=!1;_history=[];_maxHistory=500;STYLES={push:`color: #22c55e; font-weight: bold`,pop:`color: #ef4444; font-weight: bold`,next:`color: #3b82f6; font-weight: bold`,event:`color: #a855f7; font-weight: bold`,memory:`color: #f59e0b; font-weight: bold`,action:`color: #6366f1; font-weight: normal`,origin:`color: #64748b; font-weight: normal`};constructor(){if(typeof window<`u`){let e=window;this._enabled=!!e.__WOD_DEBUG__}}get enabled(){return this._enabled}enable(){this._enabled=!0,this._console.log(`%c[RT] 🔧 Runtime logging ENABLED`,`color: #22c55e; font-weight: bold`)}disable(){this._enabled=!1,this._console.log(`%c[RT] Runtime logging disabled`,`color: #64748b`)}getHistory(){return[...this._history]}clearHistory(){this._history=[]}logPush(e,t){if(!this._enabled)return;let n=this.getBehaviorNames(e),r=e.getAllMemory?.().map(e=>e.tag)??[];this._console.groupCollapsed(`%c[RT] ▶ PUSH %c${e.label||e.blockType||`Block`}%c [${e.key.toString().slice(0,8)}]`,this.STYLES.push,`color: inherit; font-weight: bold`,`color: #64748b; font-weight: normal`),this._console.log(`Key:`,e.key.toString()),t&&this._console.log(`Parent:`,t),this._console.log(`Source IDs:`,e.sourceIds),this._console.log(`Behaviors:`,n),r.length>0&&this._console.log(`Memory Types:`,r),this._console.groupEnd(),this.addToHistory(`info`,`push`,`PUSH ${e.label}`,{key:e.key.toString(),parentKey:t,behaviors:n,sourceIds:e.sourceIds})}logPop(e,t){this._enabled&&(this._console.log(`%c[RT] ◀ POP %c${e.label||e.blockType||`Block`}%c [${e.key.toString().slice(0,8)}]${t?` (${t})`:``}`,this.STYLES.pop,`color: inherit; font-weight: bold`,`color: #64748b; font-weight: normal`),this.addToHistory(`info`,`pop`,`POP ${e.label}`,{key:e.key.toString(),reason:t}))}logNext(e,t){if(!this._enabled)return;let n=t.map(e=>e.type||e.constructor?.name||`Action`);t.length!==0&&(this._console.groupCollapsed(`%c[RT] → NEXT %c${e.label||`Block`}%c → ${t.length} action(s)`,this.STYLES.next,`color: inherit; font-weight: bold`,`color: #64748b; font-weight: normal`),this._console.log(`Block:`,e.key.toString()),this._console.log(`Actions:`,n),this._console.groupEnd(),this.addToHistory(`info`,`next`,`NEXT ${e.label}`,{key:e.key.toString(),actions:n}))}logEvent(e,t){if(!this._enabled||t.length===0)return;let n=t.map(e=>e.type||e.constructor?.name||`Action`);this._console.groupCollapsed(`%c[RT] ⚡ EVENT %c${e.name}%c → ${t.length} action(s)`,this.STYLES.event,`color: inherit; font-weight: bold`,`color: #64748b; font-weight: normal`),this._console.log(`Event Data:`,e.data),this._console.log(`Actions:`,n),this._console.groupEnd(),this.addToHistory(`info`,`event`,`EVENT ${e.name}`,{eventName:e.name,eventData:e.data,actions:n})}logMemoryUpdate(e,t,n){if(!this._enabled)return;let r=n;typeof n==`object`&&n&&(r=this.summarizeObject(n)),this._console.log(`%c[RT] 📝 MEMORY %c${t}%c on [${e.slice(0,8)}]:`,this.STYLES.memory,`color: inherit; font-weight: bold`,`color: #64748b; font-weight: normal`,r),this.addToHistory(`debug`,`memory`,`MEMORY ${t}`,{blockKey:e,memoryType:t,value:r})}logAction(e,t){if(!this._enabled)return;let n=` `.repeat(t),r=e.type||e.constructor?.name||`Action`;this._console.log(`%c[RT] ${n}⚙ %c${r}`,this.STYLES.action,`color: inherit`)}logMessage(e,t,n,r){this._enabled&&(this._console.log(`%c[RT] ${t} %c${n}`,this.styleFor(e),`color: inherit`),this.addToHistory(e,t,n,r))}logAlways(e,t,n,r){this._console.log(`%c[RT] ${t} %c${n}`,this.styleFor(e),`color: inherit`),this.addToHistory(e,t,n,r)}getBehaviorNames(e){let t=e.behaviors;return!t||!Array.isArray(t)?[]:t.map(e=>e.constructor?.name||`Behavior`)}summarizeObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?`[${r.length} items]`:typeof r==`object`&&r?`{...}`:r;return t}styleFor(e){switch(e){case`error`:return`color: #ef4444; font-weight: bold`;case`warn`:return`color: #f59e0b; font-weight: bold`;case`info`:return`color: #3b82f6; font-weight: bold`;default:return`color: #64748b`}}addToHistory(e,t,n,r){this._history.push({timestamp:new Date,level:e,category:t,message:n,data:r}),this._history.length>this._maxHistory&&(this._history=this._history.slice(-this._maxHistory))}};typeof window<`u`&&(window.RuntimeLogger=Qs);var $s=class{block;options;_type=`push-block`;constructor(e,t={}){this.block=e,this.options=t}get type(){return this._type}set type(e){throw Error(`Cannot modify readonly property type`)}do(e){if(!e.stack)return[];try{let t=this.options.startTime,n=this.options.clock??e.clock;!t&&n?.isRunning&&(t=n.currentDate);let r=t?{...this.options,startTime:t}:{...this.options},i=this.block;t&&(i.executionTiming={...i.executionTiming??{},startTime:t}),e.stack.push(this.block);let a=this.block.mount(e,r),o=e.stack.blocks.length>1?e.stack.blocks[1]?.key.toString():void 0;return Qs.logPush(this.block,o),a}catch(t){let n=e;return typeof n.setError==`function`&&n.setError(t),[]}}},ec=class{options;type=`pop-block`;constructor(e={}){this.options=e}do(e){let t=e.stack.current;if(!t)return[];let n=this.options.createdAt??e.clock.currentDate,r={...this.options,createdAt:n};t.executionTiming&&(t.executionTiming.createdAt=n),!t.isComplete&&typeof t.markComplete==`function`&&(t.markComplete(`forced-pop`),Qs.logPop(t,`forced-pop (incomplete block popped without next)`));let i=t.unmount(e,r)??[],a=e.stack.pop();return a?(a.dispose(e),a.context?.release?.(),a.completionReason!==`forced-pop`&&Qs.logPop(a,a.completionReason),e.stack.current?[...i,new Vs(r,e.nowProvider)]:i):[]}},tc=class{script;eventBus;clock;stack;jit;errors=[];options;analyticsContext;_output=new Xs;_observers;_activeContext=null;_now;_stackSubscriptionUnsub=null;_nextHandlerUnsub=null;get nowProvider(){return this._now}_abortHandlerUnsub=null;constructor(e,t,n,r={},i=Bs){this.script=e,this.options={...Is,...r},this._observers=new Zs(this.options.logger),this.stack=n.stack,this.clock=n.clock,this.eventBus=n.eventBus,this._now=i,this._nextHandlerUnsub=this.eventBus.register(`next`,new Gs(`runtime-next-handler`),`runtime`,{scope:`global`}),this._abortHandlerUnsub=this.eventBus.register(`abort`,new qs(`runtime-abort-handler`),`runtime`,{scope:`global`}),this.jit=t,this._output.attach({clock:this.clock,stack:this.stack,script:this.script}),this._stackSubscriptionUnsub=this.stack.subscribe(e=>{e.type===`pop`&&this._output.emitSegmentFromResultMemory(e.block,e.depth),(e.type===`push`||e.type===`pop`)&&this._output.emitStackEvent(e);let t={type:e.type===`initial`?`initial`:e.type,blocks:(e.type,e.blocks),affectedBlock:e.type===`initial`?void 0:e.block,depth:e.type===`initial`?e.blocks.length:e.depth,clockTime:this.clock.currentDate};this._observers.emitStack(t)}),this.clock.start(),this._output.emitLoad()}do(e){if(this._activeContext){this._activeContext.do(e);return}this._activeContext=new Ys(this,this.options.maxActionDepth??20);try{this._activeContext.execute(e)}finally{this._activeContext=null,this._notifyStackSettled()}}_buildInitialSnapshot(){let e=this.stack.blocks;return{type:`initial`,blocks:e,depth:e.length,clockTime:this.clock.currentDate}}_notifyStackSettled(){this._observers.emitSettled(this.stack.blocks,this.stack.count,this.clock.currentDate)}doAll(e){if(e.length!==0){if(this._activeContext){this._activeContext.doAll(e);return}this.do({type:`composite-doAll`,do:()=>e})}}handle(e){let t=this.eventBus.dispatch(e,this);(e.name!==`tick`||t.length>0)&&this._output.emitRuntimeEvent(e),t.length!==0&&this.doAll(t)}subscribeToOutput(e){return this._output.subscribe(e)}getOutputStatements(){return this._output.getAll()}getLiveAnalytics(){return this._output.getLiveAnalytics()}addOutput(e){this._output.add(e)}setAnalyticsEngine(e){this._output.setAnalyticsEngine(e)}finalizeAnalytics(){return this._output.finalizeAnalytics()}subscribeToStack(e){let t=this._observers.subscribeToStack(e);return setTimeout(()=>{if(this._observers.hasStackObserver(e))try{e(this._buildInitialSnapshot())}catch(e){console.error(`[RT] Stack observer error (initial):`,e)}},0),t}dispose(){for(this.clock.stop();this.stack.count>0;){let e=this.stack.current;if(e){try{e.unmount(this)}catch{}this.stack.pop();try{e.dispose(this)}catch{}}else this.stack.pop()}this._nextHandlerUnsub&&=(this._nextHandlerUnsub(),null),this._abortHandlerUnsub&&=(this._abortHandlerUnsub(),null),this._output.dispose(),this._stackSubscriptionUnsub&&=(this._stackSubscriptionUnsub(),null),this._observers.dispose(),this.eventBus.dispose()}pushBlock(e,t){let n=this.stack.current;this.options.hooks?.onBeforePush?.(e,n),this._output.emitCompilerBlock(e);let r=this.options.wrapper?.wrap?.(e,n)??e;this.do(new $s(r,t)),this.options.logger?.debug?.(`runtime.pushBlock`,{blockKey:e.key.toString(),parentKey:n?.key.toString()}),this.options.hooks?.onAfterPush?.(r,n)}popBlock(e){let t=this.stack.current;t&&(this.options.hooks?.onBeforePop?.(t),this.do(new ec(e)),this.options.wrapper?.cleanup?.(t),this.options.hooks?.unregisterByOwner?.(t.key.toString()),this.options.logger?.debug?.(`runtime.popBlock`,{blockKey:t.key.toString(),stackDepth:this.stack.count}),this.options.hooks?.onAfterPop?.(t))}},nc=class{_memory;ownerId;type;visibility;_logger;id=y();_subscriptions=[];constructor(e,t,n,r=`private`,i){this._memory=e,this.ownerId=t,this.type=n,this.visibility=r,this._logger=i}value(){return this.get()}get subscriptions(){return this._subscriptions}get(){return this._memory.get(this)}set(e){this._memory.set(this,e)}subscribe(e,t){let n=y(),r={id:n,callback:e,memoryId:this.id,createdAt:new Date};return this._subscriptions.push(r),t?.immediate&&e(this.get(),void 0),()=>this.unsubscribe(n)}unsubscribe(e){let t=this._subscriptions.findIndex(t=>t.id===e);t>=0&&this._subscriptions.splice(t,1)}hasSubscribers(){return this._subscriptions.length>0}notifySubscribers(e,t){for(let n of this._subscriptions)try{n.callback(e,t)}catch(e){this._logger?.error?.(`Error in memory subscription callback:`,e)}}},rc=class{_references=[];allocate(e,t,n,r=`private`){let i=new nc(this,t,e,r);return this._references.push({ref:i,data:n}),i}get(e){return this._references.find(t=>t.ref.id===e.id)?.data??void 0}set(e,t){let n=this._references.find(t=>t.ref.id===e.id);if(!n)throw Error(`Invalid memory reference: ${e.id}`);let r=n.data;n.data=t,e.hasSubscribers()&&e.notifySubscribers(t,r)}search(e){return this._references.map(e=>e.ref).filter(t=>!(e.id!==null&&e.id!==void 0&&e.id!==t.id||e.ownerId!==null&&e.ownerId!==void 0&&e.ownerId!==t.ownerId||e.type!==null&&e.type!==void 0&&e.type!==t.type||e.visibility!==null&&e.visibility!==void 0&&e.visibility!==t.visibility))}release(e){let t=this._references.findIndex(t=>t.ref.id===e.id);if(t>=0){let e=this._references[t],n=e.data,r=e.ref;r instanceof nc&&r.hasSubscribers()&&r.notifySubscribers(void 0,n),this._references.splice(t,1)}}},ic=function(e){return e.DISPLAY_STACK_STATE=`displaystack`,e.ACTION_STACK_STATE=`actions`,e.TIMER_PREFIX=`timer:`,e.HANDLER_PREFIX=`handler:`,e.METRIC_REPS=`metric:reps`,e.ANCHOR=`anchor`,e}({}),ac=class{timestamp;constructor(e=Bs){this.timestamp=e.now()}},oc=class extends ac{name=`memory:allocate`;data;constructor(e,t,n=Bs){super(n),this.data={ref:e,value:t}}},sc=class extends ac{name=`memory:set`;data;constructor(e,t,n,r=Bs){super(r),this.data={ref:e,value:t,oldValue:n}}},cc=class extends ac{name=`memory:release`;data;constructor(e,t,n=Bs){super(n),this.data={ref:e,lastValue:t}}},lc=class{runtime;ownerId;exerciseId;_references=[];_released=!1;_memory;constructor(e,t,n=``,r=[],i){this.runtime=e,this.ownerId=t,this.exerciseId=n,this._references=[...r],this._memory=i??new rc}get references(){return[...this._references]}allocate(e,t,n=`private`){if(this._released)throw Error(`Cannot allocate on released context (ownerId: ${this.ownerId})`);let r=e,i=this._memory.allocate(r,this.ownerId,t,n);return this._references.push(i),this.runtime.eventBus.dispatch(new oc(i,t,this.runtime.nowProvider),this.runtime),i}get(e){let t=e;return this._references.find(e=>e.type===t)}getAll(e){let t=e;return this._references.filter(e=>e.type===t)}set(e,t){if(this._released)throw Error(`Cannot set on released context (ownerId: ${this.ownerId})`);let n=e.get();this._memory.set(e,t),this.runtime.eventBus.dispatch(new sc(e,t,n,this.runtime.nowProvider),this.runtime)}release(){if(!this._released){for(let e of this._references){let t=e.value();this._memory.release(e),this.runtime.eventBus.dispatch(new cc(e,t,this.runtime.nowProvider),this.runtime)}this._references=[],this._released=!0}}isReleased(){return this._released}getOrCreateAnchor(e){if(this._released)throw Error(`Cannot access anchor on released context (ownerId: ${this.ownerId})`);let t;for(let n of this.runtime.stack.blocks){let r=n.context.references.find(t=>t.id===e&&t.type===ic.ANCHOR);if(r){t=r;break}}if(t)return this._references.find(e=>e.id===t.id)||this._references.push(t),t;let n=this._memory.allocate(ic.ANCHOR,this.ownerId,void 0,`public`);return n.id=e,this._references.push(n),n}},uc=class{tag;_listeners=new Set;_metrics;_isDisposed=!1;constructor(e,t=K.empty()){this.tag=e,this._metrics=K.from(t,e)}get metrics(){return this._metrics}update(e){if(this._isDisposed){console.warn(`Attempted to update disposed MemoryLocation with tag '${this.tag}'`);return}let t=this._metrics;this._metrics=K.from(e,this.tag);for(let e of this._listeners)e(this._metrics,t)}subscribe(e){return this._isDisposed?(console.warn(`Attempted to subscribe to disposed MemoryLocation with tag '${this.tag}'`),()=>{}):(this._listeners.add(e),()=>this._listeners.delete(e))}dispose(){if(this._isDisposed)return;this._isDisposed=!0;let e=this._metrics;this._metrics=K.empty(this.tag);for(let t of this._listeners)t(this._metrics,e);this._listeners.clear()}},dc=class{block;clock;stackLevel;runtime;subscriptions=[];_capabilities;constructor(e,t,n,r,i){this.block=e,this.clock=t,this.stackLevel=n,this.runtime=r,this._capabilities=i??new Set}subscribe(e,t,n){let r=this,i={id:`behavior-${this.block.key.toString()}-${e}-${Date.now()}`,name:`BehaviorHandler-${this.block.label}-${e}`,handler:(e,n)=>t(e,Object.create(r,{clock:{value:n.clock,enumerable:!0,configurable:!0}}))},a=this.runtime.eventBus.register(e,i,this.block.key.toString(),{scope:n?.scope??`active`});return this.subscriptions.push({eventType:e,unsubscribe:a}),a}emitEvent(e){this.runtime.handle(e)}emitOutput(e,t,n){let r=this.clock.currentDate,i=this.block.getMemoryByTag(`time`),a=r.getTime(),o=r.getTime(),s=[];if(i.length>0){let e=i[0].metrics;if(e.length>0){let t=e[0].value;t?.spans&&t.spans.length>0&&(s=[...t.spans],a=s[0].started)}}let c=K.from(t,this.block.key.toString());if(c.length===0){let e=this.block.getMemoryByTag(`metric:display`);e.length>0&&(c=e[0].metrics.clone(this.block.key.toString()))}let l=c.map(e=>({...e,sourceBlockKey:e.sourceBlockKey??this.block.key.toString(),timestamp:e.timestamp??r})),u=new ya({outputType:e,timeSpan:new Ls(a,o),spans:s.length>0?s:void 0,sourceBlockKey:this.block.key.toString(),sourceStatementId:this.block.sourceIds?.[0],stackLevel:this.stackLevel,metrics:l,completionReason:n?.completionReason});this.addOutputToRuntime(u)}addOutputToRuntime(e){this.runtime.addOutput(e)}pushMemory(e,t){let n=new uc(e,t);return this.block.pushMemory(n),n}getMemoryByTag(e){return this.block.getMemoryByTag(e)}updateMemory(e,t){let n=this.block.getMemoryByTag(e);n.length>0&&n[0].update(t)}declareCapability(e){this._capabilities.add(e)}hasCapability(e){return this._capabilities.has(e)}getCapabilities(){return this._capabilities}markComplete(e){this.block.markComplete(e)}dispose(){for(let{unsubscribe:e}of this.subscriptions)try{e()}catch(e){this.runtime.options.logger?.error?.(`[BehaviorContext] Unsubscribe error:`,e)}this.subscriptions=[]}},fc=new Set([`metric:display`]),pc=new Set([`metric:result`]),mc=new Set([`metric:promote`,`metric:rep-target`]),hc=new Set([`metric:tracked`,`metric:label`,`metric:next`]);function gc(e){if(fc.has(e))return`display`;if(pc.has(e))return`result`;if(mc.has(e))return`promote`;if(hc.has(e)||e.startsWith(`metric:`))return`private`}var _c={display:`Display`,result:`Result`,promote:`Promote`,private:`Private`},vc=class{behaviors=[];key;blockType;context;sourceIds;_memory=[];get label(){for(let e of this._memory)for(let t of e.metrics)if(t.type===G.Label)return t.image||t.value?.toString()||this.blockType||`Block`;return this.blockType||`Block`}_behaviorContext;executionTiming={};_isComplete=!1;_completionReason;_eventUnsubscribers=[];_runtime;constructor(e){let{runtime:t,sourceIds:n=[],behaviors:r=[],context:i,key:a,blockType:o,label:s,metrics:c}=e;if(this._runtime=t,this.sourceIds=n,this.behaviors=r,this.key=a??new ba,this.blockType=o,this.context=i??new lc(t,this.key.toString()),s&&this._memory.push(new uc(`metric:label`,[{type:G.Label,image:s,origin:`compiler`,value:s}])),c)for(let e of c)this._memory.push(new uc(`metric:display`,e))}pushMemory(e){this._memory.push(e)}mergeHints(e){if(!e||Object.keys(e).length===0)return;let t=this._memory.find(e=>e.tag===`metric:hint`),n=Object.entries(e).map(([e,t])=>({type:G.Hint,value:e,image:e,origin:`compiler`,timestamp:new Date}));if(t){let e=new Set(n.map(e=>e.value)),r=t.metrics.toArray().filter(t=>!(t.type===G.Hint&&e.has(t.value)));t.update([...r,...n])}else this._memory.push(new uc(`metric:hint`,n))}getMemoryByTag(e){return this._memory.filter(t=>t.tag===e)}getAllMemory(){return[...this._memory]}getMetricMemoryByVisibility(e){return this._memory.filter(t=>gc(t.tag)===e)}registerDefaultHandler(){}mount(e,t){this._runtime=e;let n=t?.clock??e.clock;this.executionTiming.startTime=t?.startTime??n.currentDate,this.registerDefaultHandler();let r=Math.max(0,e.stack.count-1);this._behaviorContext=new dc(this,n,r,e);let i=[];for(let e of this.behaviors)if(e.onMount){let t=e.onMount(this._behaviorContext);t&&i.push(...t)}return i}inspectNext(e,t){if(!this._behaviorContext)return{complete:!1,actions:[]};let n=t?.clock??this._behaviorContext.clock,r=new dc(this,n,this._behaviorContext.stackLevel,e,this._behaviorContext.getCapabilities()),i=this._isComplete,a=this._completionReason;for(let e of this.behaviors){let t=e;typeof t.prepareForNextCycle==`function`&&t.prepareForNextCycle()}let o=[];for(let e of this.behaviors)if(e.onNext){let t=e.onNext(r);t&&o.push(...t)}r.dispose(),this._isComplete&&!o.some(e=>e.type===`pop-block`)&&o.push(new ec);let s={complete:this._isComplete,reason:this._completionReason,actions:o};return this._isComplete=i,this._completionReason=a,s}next(e,t){if(!this._behaviorContext)return Qs.logAlways(`warn`,`RuntimeBlock`,`next() called before mount()`),[];let n=t?.clock??this._behaviorContext.clock;this.emitNextSystemOutput(e,n);let r=this.inspectNext(e,t);return r.complete&&!this._isComplete&&this.markComplete(r.reason),Qs.logNext(this,[...r.actions]),r.actions}unmount(e,t){let n=t?.clock??e.clock;this.executionTiming.endTime=t?.createdAt??n.currentDate;let r=[],i=new dc(this,n,this._behaviorContext?.stackLevel??0,e,this._behaviorContext?.getCapabilities());for(let e of this.behaviors)if(e.onUnmount){let t=e.onUnmount(i);t&&r.push(...t)}i.dispose();let a=e.eventBus.dispatch({name:`unmount`,timestamp:e.clock.currentDate,data:{blockKey:this.key.toString()}},e);a.length>0&&r.push(...a);for(let e of this._eventUnsubscribers)try{e()}catch(e){Qs.logAlways(`error`,`RuntimeBlock`,`Error unsubscribing event handler`,{error:e})}return this._eventUnsubscribers=[],this._behaviorContext&&=(this._behaviorContext.dispose(),void 0),r}dispose(e){let t=this._behaviorContext??new dc(this,e.clock,0,e);for(let e of this.behaviors)e.onDispose&&e.onDispose(t);!this._behaviorContext&&t&&t.dispose();for(let e of this._memory)e.dispose();this._memory=[]}get isComplete(){return this._isComplete}get completionReason(){return this._completionReason}markComplete(e){this._isComplete=!0,this._completionReason=e}getBehavior(e){return this.behaviors.find(t=>t instanceof e)}emitNextSystemOutput(e,t){let n=t.currentDate,r={event:`next`,blockKey:this.key.toString(),blockLabel:this.label,actionType:`next`},i={type:G.System,image:`next: ${this.label??this.blockType??`Block`} [${this.key.toString().slice(0,8)}]`,value:r,origin:`runtime`,timestamp:n},a=new ya({outputType:`system`,timeSpan:new Ls(n.getTime(),n.getTime()),sourceBlockKey:this.key.toString(),stackLevel:e.stack.count,metrics:[i]});e.addOutput(a)}},yc=class{_blocks=[];_listeners=new Set;get blocks(){return[...this._blocks].reverse()}get count(){return this._blocks.length}get current(){if(this._blocks.length!==0)return this._blocks[this._blocks.length-1]}get keys(){return this.blocks.map(e=>e.key)}push(e){this._blocks.push(e),this.notify({type:`push`,block:e,depth:this._blocks.length,blocks:this.blocks})}pop(){let e=this._blocks.pop();return e&&this.notify({type:`pop`,block:e,depth:this._blocks.length,blocks:this.blocks}),e}clear(){for(;this._blocks.length>0;)this.pop()}subscribe(e){return this._listeners.add(e),e({type:`initial`,blocks:this.blocks}),()=>{this._listeners.delete(e)}}notify(e){for(let t of this._listeners)try{t(e)}catch(e){console.error(`Error in stack listener:`,e)}}};function bc(){if(typeof window<`u`){let e=window.__chromecast_senderClockTimeMs;if(typeof e==`function`)try{let t=e();if(Number.isFinite(t))return t}catch{}}return Date.now()}var xc=class{completionTime;wasComplete=!1;onMount(e){return[]}onNext(e){if(e.block.isComplete&&!this.wasComplete&&!this.completionTime){this.completionTime=new Date(e.clock.currentDate),this.wasComplete=!0;let t={type:G.SystemTime,image:this.completionTime.toISOString(),origin:`runtime`,value:{createdAt:this.completionTime.getTime(),timestamp:this.completionTime},sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate};e.pushMemory(`completion`,[t])}return[]}onUnmount(e){return[]}onDispose(e){}getCompletionTime(){return this.completionTime}},Sc=`time`;function Cc(e){return[new Ls(e)]}function wc(e,t){return e.map((n,r)=>r===e.length-1&&n.ended===void 0?new Ls(n.started,t):n)}function Tc(e,t){return[...e,new Ls(t)]}function Ec(e){return e.getMemoryByTag(Sc)[0]?.metrics[0]?.value}function Dc(e,t){let n=e.getMemoryByTag(Sc)[0]?.metrics[0],r=n?.value;if(!r||!n)return!1;let i=t(r.spans,e.clock.currentDate.getTime());return e.updateMemory(Sc,[{...n,value:{...r,spans:i}}]),!0}var Oc=class{onMount(e){let t=e.clock.currentDate.getTime(),n=e.block.label,r={type:G.Time,image:`0:00`,origin:`runtime`,value:{spans:Cc(t),direction:`up`,durationMs:void 0,label:n,role:`hidden`},sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate};return e.pushMemory(`time`,[r]),[]}onNext(e){return[]}onUnmount(e){let t=Ec(e);return!t||t.spans.length===0||Dc(e,wc),[]}onDispose(e){}},kc=class{config;constructor(e={}){this.config=e}subscriptions=[];isPaused=!1;onMount(e){let t=e.clock.currentDate.getTime(),n=this.config.label??e.block.label,r=this.config.role===`hidden`?`auto`:this.config.role??`primary`;return e.pushMemory(`time`,[this.createFragment(e,{spans:Cc(t),direction:`up`,durationMs:void 0,label:n,role:r})]),this.subscriptions.push(e.subscribe(`timer:pause`,(e,t)=>(this.isPaused||Dc(t,wc)&&(this.isPaused=!0),[]))),this.subscriptions.push(e.subscribe(`timer:resume`,(e,t)=>(this.isPaused&&Dc(t,Tc)&&(this.isPaused=!1),[]))),[]}onNext(e){return[]}onUnmount(e){return Dc(e,wc),[]}onDispose(e){for(let e of this.subscriptions)try{e()}catch{}this.subscriptions.length=0}createFragment(e,t){return{type:G.Time,image:`0:00`,origin:`runtime`,value:t,sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate}}},Ac=class{targetBlockKey;type=`clear-children`;constructor(e){this.targetBlockKey=e}do(e){let t=[],n=0;for(;n<20;){let r=e.stack.current;if(!r||r.key.toString()===this.targetBlockKey)break;let i=new ec().do(e);for(let e of i)e.type!==`next`&&t.push(e);n++}return n>=20&&e.options.logger?.error?.(`[ClearChildrenAction] Max iterations reached, possible infinite loop`,Error(`Exceeded 20 pop iterations for target ${this.targetBlockKey}`)),e.stack.current?.key.toString()===this.targetBlockKey&&t.push(new Vs(void 0,e.nowProvider)),t}};function jc(e,t){let n=0;for(let r of e.spans){let e=r.ended??t;n+=e-r.started}return n}function Mc(e){let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}var Nc=class{current;total;sourceBlockKey;timestamp;type=G.CurrentRound;origin=`tracked`;value;image;constructor(e,t,n,r,i){this.current=e,this.total=t,this.sourceBlockKey=n,this.timestamp=r,this.value=e,this.image=i??(t===void 0?`Round ${e}`:`Round ${e} of ${t}`)}},Pc=class{config;constructor(e){this.config=e}subscriptions=[];isPaused=!1;onMount(e){let t=e.clock.currentDate.getTime(),n=this.config.label??e.block.label,r=this.config.role===`hidden`?`auto`:this.config.role??`primary`,i=this.config.mode??`complete-block`;return e.pushMemory(`time`,[this.createFragment(e,{spans:Cc(t),direction:`down`,durationMs:this.config.durationMs,label:n,role:r})]),this.config.durationMs<=0?(this.handleExpiry(e,i),[new Ac(e.block.key.toString())]):(this.subscriptions.push(e.subscribe(`tick`,(e,t)=>{let n=Ec(t);return!n||n.direction!==`down`||n.durationMs===void 0||i===`complete-block`&&t.block.isComplete||jc(n,t.clock.currentDate.getTime())<n.durationMs?[]:(this.handleExpiry(t,i),[new Ac(t.block.key.toString())])},{scope:`bubble`})),this.subscriptions.push(e.subscribe(`timer:reset`,(e,t)=>(i===`reset-interval`&&Dc(t,(e,t)=>Cc(t)),[]))),this.subscriptions.push(e.subscribe(`timer:pause`,(e,t)=>(this.isPaused||Dc(t,wc)&&(this.isPaused=!0),[]))),this.subscriptions.push(e.subscribe(`timer:resume`,(e,t)=>(this.isPaused&&Dc(t,Tc)&&(this.isPaused=!1),[]))),[])}onNext(e){if(this.config.required&&!e.block.isComplete)return e.emitEvent({name:`timer:skip-attempt`,timestamp:e.clock.currentDate,data:{blockKey:e.block.key.toString()}}),[];if(e.hasCapability(`childSelection`)||!this.config.restBlockFactory)return[];let t=Ec(e);if(!t||t.direction!==`down`||!t.durationMs)return[];let n=this.getRemainingCountdownMs(e);return n>1e3?this.config.restBlockFactory(n,`Rest`):[]}onUnmount(e){return Dc(e,wc),[]}onDispose(e){for(let e of this.subscriptions)try{e()}catch{}this.subscriptions.length=0}handleExpiry(e,t){if(e.emitEvent({name:`timer:complete`,timestamp:e.clock.currentDate,data:{blockKey:e.block.key.toString()}}),t===`complete-block`)e.markComplete(`timer-expired`);else{if(Dc(e,(e,t)=>Cc(t)),e.hasCapability(`childSelection`))return;let t=e.getMemoryByTag(`round`)[0]?.metrics[0];if(t){let n=new Nc(t.current+1,t.total,e.block.key.toString(),e.clock.currentDate);e.updateMemory(`round`,[n])}let n=e.getMemoryByTag(`children:status`)[0],r={childIndex:0,totalChildren:n?.metrics[0]?.value?.totalChildren??0,allExecuted:!1,allCompleted:!1};n?.metrics[0]?e.updateMemory(`children:status`,[{...n.metrics[0],value:r}]):e.pushMemory(`children:status`,[{type:`status`,image:``,origin:`runtime`,value:r}])}}getRemainingCountdownMs(e){let t=Ec(e);if(!t||t.direction!==`down`||!t.durationMs)return 0;let n=jc(t,e.clock.currentDate.getTime());return Math.max(0,t.durationMs-n)}createFragment(e,t){return{type:G.Time,image:Fc(t.durationMs),origin:`runtime`,value:t,sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate}}};function Fc(e){if(!e||e===0)return`0:00`;let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}:${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`:`${r}:${i.toString().padStart(2,`0`)}`}var Ic=class{config;_repScheme;_lastPromotedRound;constructor(e){this.config=e,this._repScheme=[...e.repScheme??[]]}get repScheme(){return this._repScheme}getRepsForRound(e){if(this._repScheme.length===0)return;let t=(e-1)%this._repScheme.length;return this._repScheme[t]}getRepsForCurrentRound(){return this._lastPromotedRound===void 0?this._repScheme[0]:this.getRepsForRound(this._lastPromotedRound)}getPromotedFragments(e,t){let n=K.empty(t.key.toString());if(this._repScheme.length>0){let r=t.getMemoryByTag(`round`)[0]?.metrics[0]?.current??1,i=this.getRepsForRound(r);i!==void 0&&n.add({type:G.Rep,image:i.toString(),origin:`compiler`,value:i,sourceBlockKey:t.key.toString(),timestamp:e.clock.currentDate})}for(let e of this.config.promotions){let r=this.findSourceFragmentInBlock(t,e);r&&n.add({...r,origin:e.origin??`compiler`})}return n}onMount(e){if(this._repScheme.length>0){let t=e.getMemoryByTag(`round`)[0]?.metrics[0]?.current??1;this.promoteRepScheme(e,t)}return this.promoteFragments(e,this.config.promotions),[]}onNext(e){if(this._repScheme.length>0){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];t&&t.current!==this._lastPromotedRound&&this.promoteRepScheme(e,t.current)}let t=this.config.promotions.filter(e=>e.enableDynamicUpdates);return this.promoteFragments(e,t),[]}onUnmount(e){return[]}onDispose(e){}promoteFragments(e,t){for(let n of t){let t=this.findSourceFragment(e,n);if(!t)continue;let r={...t,origin:n.origin??`runtime`};this.upsertPromotedFragment(e,r)}}promoteRepScheme(e,t){let n=this.getRepsForRound(t);if(n===void 0)return;this._lastPromotedRound=t;let r={type:G.Rep,image:n.toString(),origin:`runtime`,value:n,sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate};e.block.getMemoryByTag(`metric:rep-target`).length>0?e.updateMemory(`metric:rep-target`,[r]):e.pushMemory(`metric:rep-target`,[r])}findSourceFragment(e,t){return this.findSourceFragmentInBlock(e.block,t)}findSourceFragmentInBlock(e,t){let n=e.getAllMemory();for(let e of n){if(e.tag===`metric:promote`||e.tag===`metric:rep-target`||t.sourceTag&&e.tag!==t.sourceTag)continue;let n=e.metrics.find(e=>e.type===t.metricType);if(n)return n}}upsertPromotedFragment(e,t){let n=e.block.getMemoryByTag(`metric:promote`);if(n.length===0){e.pushMemory(`metric:promote`,[t]);return}let r=n[0].metrics.filter(e=>e.type!==t.type);e.updateMemory(`metric:promote`,[...r,t])}},Lc=class{config;unsubscribers=[];constructor(e){this.config={mode:e.mode,onNext:e.onNext??e.mode===`immediate`,onEvents:e.onEvents??[]}}onMount(e){if(this.config.mode!==`immediate`)return[];for(let t of this.config.onEvents){let n=e.subscribe(t,(e,t)=>(t.markComplete(`event:${e.name}`),[new ec]));this.unsubscribers.push(n)}return[]}onNext(e){return this.config.mode===`deferred`?e.block.isComplete?[new ec]:[]:this.config.onNext?(e.block.isComplete||e.markComplete(`user-advance`),[new ec]):[]}onUnmount(e){return[]}onDispose(e){for(let e of this.unsubscribers)e();this.unsubscribers=[]}},Rc=class{config;constructor(e={}){this.config=e}onMount(e){let t=this.createStaticLabels(e),n=this.createRoundLabel(e),r=t.clone();return n&&r.add(n),r.length>0&&e.pushMemory(`display`,r.toArray()),[]}onNext(e){let t=this.createRoundLabel(e);if(!t)return[];let n=e.block.getMemoryByTag(`display`);if(n.length===0)return e.pushMemory(`display`,[t]),[];let r=n[0].metrics.filter(e=>!this.isRoundRoleFragment(e));return e.updateMemory(`display`,[...r,t]),[]}onUnmount(e){return[]}onDispose(e){}createStaticLabels(e){let t=this.config.label??e.block.label,n=this.config.subtitle,r=this.config.actionDisplay,i=K.empty(e.block.key.toString());return t&&i.add(this.createTextMetric(e,t,`label`)),n&&i.add(this.createTextMetric(e,n,`subtitle`)),r&&i.add(this.createTextMetric(e,r,`action`)),i}createRoundLabel(e){if(this.config.showRoundDisplay===!1)return;let t=e.block.getMemoryByTag(`round`)[0];if(!t||t.metrics.length===0)return;let n=t.metrics[0];if(!n||typeof n.current!=`number`)return;let r=this.formatRound(n.current,n.total);return this.createTextMetric(e,r,`round`)}createTextMetric(e,t,n){return{type:G.Text,image:t,origin:`runtime`,value:{text:t,role:n},sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate}}formatRound(e,t){return this.config.roundFormat?this.config.roundFormat(e,t):typeof t==`number`?`Round ${e} of ${t}`:`Round ${e}`}isRoundRoleFragment(e){return e.value?.role===`round`}},zc=class{blockKey;nextStatementIds;type=`update-next-preview`;target;payload;constructor(e,t){this.blockKey=e,this.nextStatementIds=t,this.target=e,this.payload={nextStatementIds:t}}do(e){let t=e.stack.blocks.find(e=>e.key.toString()===this.blockKey);if(!t)return[];let n=t.getMemoryByTag(`metric:next`);if(this.nextStatementIds.length===0){for(let e of n)e.update([]);return[]}let r=e.script;if(!r)return[];let i=K.empty(this.blockKey);for(let e of this.nextStatementIds){let t=r.getId(e);t&&i.merge(t.metrics)}if(i.removeByType(G.Hint),i.length===0){for(let e of n)e.update([]);return[]}return n.length>0?n[0].update(i):t.pushMemory(new uc(`metric:next`,i)),[]}},Bc=`effort-data`;xs.defaultMet;function Vc(e){return!!e&&typeof e==`object`&&`effort`in e&&`met`in e&&`disciplineFactor`in e}function Hc(e){if(Vc(e))return e;let t=e,n=t.baseAttributes.discipline,r=t.baseAttributes.disciplineFactor??Ts(n);return{effort:t,definition:t,slug:t.slug,label:t.label,met:t.baseAttributes.met,baseAttributes:t.baseAttributes,discipline:n,disciplineFactor:r,intensityTier:t.baseAttributes.intensityTier,modifiers:{},registrySource:t.registrySource,resolvedFrom:t.registrySource===`user`?`user`:t.registrySource===`bundled`?`bundled`:`default`,isEstimated:t.registrySource===`synthetic-unresolved`}}function Uc(e){let t;for(let n of e)if(n.type===`effort-data`&&n.value&&typeof n.value==`object`){let e=Hc(n.value);t={resolved:e,effort:e.effort,origin:n.origin}}return t}var Wc=e=>console.log(e);function Gc(e,t){let{resolver:n,overwrite:r=!1,debug:i=!1}=t;Kc(e,n,r,i)}function Kc(e,t,n,r){let i=e.blockType?.toLowerCase();if(i!==`effort`&&i!==`exercise`)return;let a=e.label;if(!a){r&&Wc(`[EffortEnrichment] Skipping block with no label: ${e.key}`);return}if(e.getAllMemory().find(e=>e.metrics.toArray().some(e=>e.type===`effort-data`))&&!n){r&&Wc(`[EffortEnrichment] Skipping block already enriched: ${a}`);return}try{let i=t.resolveEffort(a),o=i.effort.hints;o&&Object.keys(o).length>0&&e.mergeHints(o),r&&Wc(`[EffortEnrichment] Resolved effort: ${a} → ${i.label} (MET: ${i.met})`);let s={type:Bc,image:i.label,value:i,origin:`compiler`,timestamp:new Date},c=e.getMetricMemoryByVisibility(`private`).find(e=>e.metrics.toArray().some(e=>e.type===Bc));if(c&&n){let e=c.metrics.toArray().filter(e=>e.type!==Bc);e.push(s),c.update(e)}else if(!c){let t=new uc(`metric:tracked`,[s]);e.pushMemory(t)}}catch(e){console.error(`[EffortEnrichment] Failed to resolve effort "${a}":`,e)}}var qc=class{statementIds;options;type=`compile-and-push-block`;constructor(e,t={}){this.statementIds=e,this.options=t}do(e){if(!this.statementIds||this.statementIds.length===0)return[];let t=e.script.getIds(this.statementIds);if(t.length===0)return[];try{let n=e.jit.compile(t,e);return n?(e.analyticsContext?.effortResolver&&Gc(n,{resolver:e.analyticsContext.effortResolver}),[new $s(n,this.options)]):[]}catch(t){return e.options.logger?.error?.(`CompileAndPushBlockAction: Compilation failed`,t),[]}}},Jc=class{durationMs;label;type=`push-rest-block`;constructor(e,t=`Rest`){this.durationMs=e,this.label=t}do(e){return[new $s(new ol(e,{durationMs:this.durationMs,label:this.label}))]}},Yc=class e{config;static DEFAULT_MIN_REST_MS=1e3;childIndex=0;dispatchedOnLastNext=!1;restState=`idle`;constructor(e){this.config=e}onMount(e){this.restState=`idle`,this.dispatchedOnLastNext=!1,e.declareCapability(`childSelection`);let t=[];if(this.config.startRound!==void 0){let t=e.block.key.toString();e.pushMemory(`round`,[new Nc(this.config.startRound,this.config.totalRounds,t,e.clock.currentDate)])}if(this.config.injectRest&&e.subscribe(`timer:complete`,(t,n)=>{if(this.restState!==`idle`)return[];let r=this.advanceRound(e);return this.childIndex=0,this.restState=`idle`,this.writeChildrenStatus(e),r},{scope:`active`}),this.config.skipOnMount)return this.totalChildren>0&&t.push(this.createNextPreview(e,this.config.childGroups[0])),this.writeChildrenStatus(e),t;if(this.totalChildren===0)return this.writeChildrenStatus(e),t;let n=this.dispatchNext(e);return this.writeChildrenStatus(e),[...t,...n]}onNext(e){if(this.dispatchedOnLastNext=!1,e.block.isComplete){let t=[this.createNextPreview(e)];return this.writeChildrenStatus(e),t}let t=[];if(this.config.startRound!==void 0){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];if(t?.total!==void 0&&t.current>t.total)return e.markComplete(`rounds-exhausted`),this.writeChildrenStatus(e),[new ec]}if(this.restState===`active`&&(this.restState=`idle`,this.config.injectRest&&(t.push(...this.advanceRound(e)),this.childIndex=0,e.emitEvent({name:`timer:reset`,timestamp:e.clock.currentDate,data:{blockKey:e.block.key.toString()}}))),this.childIndex>=this.totalChildren){if(!this.shouldLoop(e))return this.writeChildrenStatus(e),e.markComplete(this.isLoopEnabled()?`rounds-exhausted`:`children-complete`),[this.createNextPreview(e)];if(this.shouldInjectRest(e)){this.restState=`pending`;let n=[new Jc(this.getRemainingCountdownMs(e),`Rest`),this.createNextPreview(e,this.config.childGroups[0])];return this.restState=`active`,this.writeChildrenStatus(e),[...t,...n]}t.push(...this.advanceRound(e)),this.childIndex=0}let n=this.dispatchNext(e);return this.writeChildrenStatus(e),[...t,...n]}onUnmount(e){return[]}onDispose(e){this.restState=`idle`}get allChildrenExecuted(){return this.childIndex>=this.totalChildren}get allChildrenCompleted(){return this.allChildrenExecuted&&!this.dispatchedOnLastNext}get totalChildren(){return this.config.childGroups.length}dispatchNext(e){if(this.childIndex>=this.totalChildren)return[this.createNextPreview(e)];let t=this.config.childGroups[this.childIndex];this.childIndex++,this.dispatchedOnLastNext=!0;let n=this.config.childGroups[this.childIndex];return[new qc(t),this.createNextPreview(e,n)]}shouldLoop(e){if(e.block.isComplete||!this.isLoopEnabled())return!1;let t=this.getLoopCondition();if(t===`always`)return!0;if(t===`timer-active`){let t=e.getMemoryByTag(`time`)[0]?.metrics[0]?.value;return t?t.direction===`down`&&t.durationMs?this.getRemainingCountdownMs(e)>0:!0:!1}let n=e.getMemoryByTag(`round`)[0]?.metrics[0];return n?n.total===void 0||n.current<n.total:!1}shouldInjectRest(t){if(!this.config.injectRest)return!1;let n=t.getMemoryByTag(`time`)[0]?.metrics[0]?.value;if(!n||n.direction!==`down`||!n.durationMs)return!1;let r=this.getRemainingCountdownMs(t);return!(r<e.DEFAULT_MIN_REST_MS||r>=n.durationMs)}getRemainingCountdownMs(e){let t=e.getMemoryByTag(`time`)[0]?.metrics[0]?.value;if(!t||t.direction!==`down`||!t.durationMs)return 0;let n=jc(t,e.clock.currentDate.getTime());return Math.max(0,t.durationMs-n)}writeChildrenStatus(e){let t={childIndex:this.childIndex,totalChildren:this.totalChildren,allExecuted:this.allChildrenExecuted,allCompleted:this.allChildrenCompleted},n=e.getMemoryByTag(`children:status`)[0];n?.metrics[0]?e.updateMemory(`children:status`,[{...n.metrics[0],value:t}]):e.pushMemory(`children:status`,[{type:`status`,image:``,origin:`runtime`,value:t}])}advanceRound(e){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];if(!t)return[];if(t.total!==void 0&&t.current>=t.total)return e.markComplete(`rounds-exhausted`),[];let n=e.block.key.toString(),r=t.current+1,i=t.total,a=new Nc(r,i,n,e.clock.currentDate);return e.updateMemory(`round`,[a]),[]}createNextPreview(e,t){return new zc(e.block.key.toString(),t??[])}isLoopEnabled(){return this.config.loop===void 0?!1:typeof this.config.loop!=`boolean`||this.config.loop}getLoopCondition(){return typeof this.config.loop==`object`&&this.config.loop.condition?this.config.loop.condition:`timer-active`}},Xc=class{value;sourceBlockKey;timestamp;type=G.Elapsed;origin=`analyzed`;constructor(e,t,n){this.value=e,this.sourceBlockKey=t,this.timestamp=n}get image(){return Mc(this.value)}},Zc=class{value;sourceBlockKey;timestamp;type=G.Total;origin=`analyzed`;constructor(e,t,n){this.value=e,this.sourceBlockKey=t,this.timestamp=n}get image(){return Mc(this.value)}},Qc=class e{spans;sourceBlockKey;timestamp;type=G.Spans;origin=`tracked`;constructor(e,t,n){this.spans=e,this.sourceBlockKey=t,this.timestamp=n}get value(){return this.spans}get image(){if(this.spans.length===0)return`--:--`;if(this.spans.length===1){let t=this.spans[0];return t.started===t.ended?e.formatTimestamp(t.started):`${e.formatTimestamp(t.started)} – ${e.formatTimestamp(t.ended??Date.now())}`}return`${this.spans.length} spans`}get isOpen(){return this.spans.length!==0&&this.spans[this.spans.length-1].isOpen}static formatTimestamp(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`}},$c=class{value;sourceBlockKey;type=G.SystemTime;origin=`tracked`;constructor(e,t){this.value=e,this.sourceBlockKey=t}get timestamp(){return this.value}get image(){return this.value.toISOString()}},el=class{config;_now;lastEmittedRound;constructor(e={},t=Bs){this.config=e,this._now=t}onMount(e){if(this.config.emitSegmentOnMount??!1){let t=this.collectDisplayFragments(e),n=this.collectStateFragments(e),r=this.mergeFragments(t,n);e.emitOutput(`segment`,r.toArray(),{label:this.formatLabel(e)})}let t=e.getMemoryByTag(`round`)[0]?.metrics[0];return(this.config.emitMilestones??!!t)&&t&&(t.total===void 0||t.total>1)&&(this.lastEmittedRound=t.current,e.emitOutput(`milestone`,this.buildMilestoneFragments(e,t).toArray(),{label:this.formatRoundLabel(t)})),[]}onNext(e){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];return!(this.config.emitMilestones??!!t)||!t||t.total!==void 0&&t.total<=1||t.total!==void 0&&t.current>t.total||this.lastEmittedRound!==void 0&&t.current===this.lastEmittedRound?[]:(this.lastEmittedRound=t.current,e.emitOutput(`milestone`,this.buildMilestoneFragments(e,t).toArray(),{label:this.formatRoundLabel(t)}),[])}onUnmount(e){let t=Ec(e),n=e.getMemoryByTag(`round`)[0]?.metrics[0],r=this.config.computeTimeResults??!0,i=this.config.label??`Completed`;if(this.config.label||(e.block.blockType===`SessionRoot`?i=`Session Completed`:n&&n.total!==void 0&&n.total>1?i=`Completed ${n.total} Round(s)`:n&&n.current>1&&(i=`Completed ${n.current} Round(s)`)),r){let n=e.block.getMemoryByTag(`metric:display`);if(n.length>1){let r=this.computeSplitTimeResults(e,t,n.map(e=>e.metrics),i);return this.writeResultGroups(e,r),[]}}let a=r?this.computeTimeResults(e,t,i):K.from([new $c(this._now.now(),e.block.key.toString())],e.block.key.toString());return this.writeResultMemory(e,a),[]}onDispose(e){}collectDisplayFragments(e){let t=K.empty(e.block.key.toString());for(let n of e.block.getMemoryByTag(`metric:display`))t.merge(n.metrics);return t}collectStateFragments(e){let t=K.empty(e.block.key.toString());for(let n of e.block.getMemoryByTag(`round`))t.merge(n.metrics);for(let n of e.block.getMemoryByTag(`time`))t.merge(n.metrics);return t}mergeFragments(e,t){let n=new Set(e.map(e=>`${e.type}:${e.type}`)),r=t.filter(e=>!n.has(`${e.type}:${e.type}`));return e.clone().add(...r)}buildMilestoneFragments(e,t){let n=K.empty(e.block.key.toString()).add(new Nc(t.current,t.total,e.block.key.toString(),e.clock.currentDate)),r=Ec(e);if(r){let t=jc(r,e.clock.currentDate.getTime());n.add(new Xc(t,e.block.key.toString(),e.clock.currentDate)),r.spans.length>0&&n.add(new Qc([...r.spans],e.block.key.toString(),e.clock.currentDate))}return n}computeTimeResults(e,t,n){let r=e.clock.currentDate,i=r.getTime(),a=e.block.key.toString(),o=e.getMemoryByTag(`round`)[0]?.metrics[0];if(t&&t.spans.length>0){let e=jc(t,i),s=t.spans[0].started,c=t.spans[t.spans.length-1].ended??i,l=Math.max(0,c-s),u=K.empty(a).add(new Xc(e,a,r),new Zc(l,a,r),new Qc([...t.spans],a,r),new $c(this._now.now(),a));return o&&u.add(new Nc(o.current,o.total,a,r,n)),u}let s=new Ls(i,i),c=K.empty(a).add(new Xc(0,a,r),new Zc(0,a,r),new Qc([s],a,r),new $c(this._now.now(),a));return o&&c.add(new Nc(o.current,o.total,a,r,n)),c}computeSplitTimeResults(e,t,n,r){let i=e.clock.currentDate,a=i.getTime(),o=e.block.key.toString(),s=e.getMemoryByTag(`round`)[0]?.metrics[0];if(!t||t.spans.length===0)return n.map(e=>{let t=e.clone().add(new Xc(0,o,i),new Zc(0,o,i),new Qc([new Ls(a,a)],o,i),new $c(this._now.now(),o));return s&&t.add(new Nc(s.current,s.total,o,i,r)),t});let c=jc(t,a),l=t.spans[0].started,u=(t.spans[t.spans.length-1].ended??a)-l,d=n.map(e=>{let t=e.filter(e=>e.type===G.Rep&&typeof e.value==`number`).reduce((e,t)=>e+t.value,0);return t>0?t:1}),f=d.reduce((e,t)=>e+t,0),p=0;return n.map((e,t)=>{let n=d[t]/f,a=Math.round(c*n),m=Math.round(u*n),h=l+p,g=h+m;p+=m;let _=e.clone().add(new Xc(a,o,i),new Zc(m,o,i),new Qc([new Ls(h,g)],o,i),new $c(this._now.now(),o));return s&&_.add(new Nc(s.current,s.total,o,i,r)),_})}writeResultMemory(e,t){if(e.block.getMemoryByTag(`metric:result`).length>0){e.updateMemory(`metric:result`,t.toArray());return}e.pushMemory(`metric:result`,t.toArray())}writeResultGroups(e,t){if(!(e.block.getMemoryByTag(`metric:result`).length>0))for(let n of t)e.pushMemory(`metric:result`,n.toArray())}formatLabel(e){return this.config.label??e.block.label}formatRoundLabel(e){return e.total===void 0?`Round ${e.current}`:`Round ${e.current} of ${e.total}`}},tl=class{sound;trigger;type=G.Sound;origin;value;image;constructor(e,t,n={}){this.sound=e,this.trigger=t,this.origin=n.origin??`tracked`,this.value={sound:e,trigger:t,atSecond:n.atSecond},this.image=n.atSecond===void 0?e:`${e}@${n.atSecond}s`}},nl=class{config;constructor(e){this.config=e}onMount(e){for(let t of this.config.cues)t.trigger===`mount`&&e.emitOutput(`system`,[new tl(t.sound,`mount`)],{label:`Sound: ${t.sound}`});let t=this.config.cues.filter(e=>e.trigger===`countdown`);if(t.length>0){let n=new Set;e.subscribe(`tick`,(e,r)=>{let i=Ec(r);if(!i||i.direction!==`down`||!i.durationMs)return[];let a=r.clock.currentDate.getTime(),o=0;for(let e of i.spans){let t=e.ended??a;o+=t-e.started}let s=i.durationMs-o,c=Math.ceil(s/1e3);for(let e of t)e.atSeconds?.includes(c)&&!n.has(c)&&(n.add(c),r.emitOutput(`system`,[new tl(e.sound,`countdown`,{atSecond:c})],{label:`Countdown: ${c}s`}));return[]},{scope:`bubble`})}return[]}onNext(e){return[]}onUnmount(e){for(let t of this.config.cues)(t.trigger===`unmount`||t.trigger===`complete`)&&e.emitOutput(`system`,[new tl(t.sound,t.trigger)],{label:`Sound: ${t.sound}`});return[]}onDispose(e){}},rl=class{config;constructor(e){this.config=e}onMount(e){let t=K.from(this.config.buttons.map(t=>({type:G.Action,image:t.label,origin:`runtime`,value:{id:t.id,label:t.label,variant:t.variant,visible:t.visible,enabled:t.enabled,eventName:t.eventName},sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate})),e.block.key.toString());return t.length>0&&e.pushMemory(`controls`,t.toArray()),[]}onNext(e){return[]}onUnmount(e){return e.updateMemory(`controls`,[]),[]}onDispose(e){}static updateButton(e,t,n){let r=e.block.getMemoryByTag(`controls`);if(r.length===0)return;let i=r[0].metrics.map(e=>{let r=e.value;return r.id===t?{...e,value:{...r,...n}}:e});e.updateMemory(`controls`,i)}},il=class e extends vc{constructor(t){let n=new ba(`waiting-to-start`),r=new lc(t,n.toString(),`WaitingToStart`),i=e.buildBehaviors();super({runtime:t,sourceIds:[],behaviors:i,context:r,key:n,blockType:`WaitingToStart`,label:`Ready to Start`})}static buildBehaviors(){let e=[];return e.push(new el({label:`Ready to Start`,emitSegmentOnMount:!0})),e.push(new Rc({mode:`clock`,label:`Ready to Start`})),e.push(new rl({buttons:[{id:`start`,label:`Start Workout`,variant:`primary`,visible:!0,enabled:!0,eventName:`next`}]})),e.push(new Lc({mode:`immediate`,onNext:!0})),e}mount(e,t){return super.mount(e,t)}unmount(e,t){return super.unmount(e,t)}dispose(e){super.dispose(e),this.context&&this.context.release()}},al=class{runtime;constructor(e){this.runtime=e}onMount(e){return[new $s(new il(this.runtime))]}onNext(e){return[]}onUnmount(e){return[]}onDispose(e){}},ol=class e extends vc{constructor(t,n){if(n.durationMs<0)throw RangeError(`RestBlock durationMs must be >= 0, got: ${n.durationMs}`);let r=n.label??`Rest`,i=new ba(`rest`),a=new lc(t,i.toString(),`Rest`),o=e.buildBehaviors(n);super({runtime:t,sourceIds:[],behaviors:o,context:a,key:i,blockType:`Rest`,label:r})}static buildBehaviors(e){let t=[],n=e.label??`Rest`;return t.push(new el({label:n})),t.push(new Pc({durationMs:e.durationMs,label:n,role:`primary`,mode:`complete-block`})),t.push(new Lc({mode:`immediate`,onNext:!1,onEvents:[`timer:complete`]})),t.push(new Rc({mode:`timer`,label:n})),t.push(new nl({cues:[{sound:`rest-over`,trigger:`complete`},{sound:`countdown-beep`,trigger:`countdown`,atSeconds:[3,2,1]}]})),t}mount(e,t){return super.mount(e,t)}unmount(e,t){return super.unmount(e,t)}dispose(e){super.dispose(e),this.context&&this.context.release()}},sl=class{runtime;behaviors=new Map;context;key;label=``;blockType=`Block`;metrics;sourceIds=[];pendingRoundConfig;declaredExitMode;constructor(e){this.runtime=e}addBehavior(e){return this.behaviors.set(e.constructor,e),this}addBehaviorIfMissing(e){return this.behaviors.has(e.constructor)||this.behaviors.set(e.constructor,e),this}removeBehavior(e){return this.behaviors.delete(e),this}moveBehaviorLast(e){let t=this.behaviors.get(e);return t?(this.behaviors.delete(e),this.behaviors.set(e,t),this):this}hasBehavior(e){return this.behaviors.has(e)}declareExit(e){return(e===`deferred`||this.declaredExitMode===void 0)&&(this.declaredExitMode=e),this}get exitMode(){return this.declaredExitMode}getBehavior(e){return this.behaviors.get(e)}setContext(e){return this.context=e,this}setKey(e){return this.key=e,this}setLabel(e){return this.label=e,this}setBlockType(e){return this.blockType=e,this}setFragments(e){return this.metrics=e.map(e=>{let t=K.from(e);return t.removeByType(G.Hint),t}),this}setSourceIds(e){return this.sourceIds=e,this}getLabel(){return this.label}getBlockType(){return this.blockType}getFragments(){return this.metrics}getSourceIds(){return this.sourceIds}getContext(){return this.context}getKey(){return this.key}asTimer(e){if(e.direction===`down`&&e.durationMs){let t=e.completionConfig?.completesBlock===!1?`reset-interval`:`complete-block`;this.addBehavior(new Pc({durationMs:e.durationMs,label:e.label,role:e.role,mode:t,required:e.required,restBlockFactory:e.injectRest?(e,t)=>[new $s(new ol(this.runtime,{durationMs:e,label:t}))]:void 0}))}else this.addBehavior(new kc({label:e.label,role:e.role}));return this}hasRoundConfig(){return this.pendingRoundConfig!==void 0}hasTimerBehavior(){return this.behaviors.has(Pc)||this.behaviors.has(kc)||this.behaviors.has(Oc)}asRepeater(e){return this.pendingRoundConfig={totalRounds:e.totalRounds,startRound:e.startRound??1,addCompletion:e.addCompletion},this}asContainer(e){let t=this.pendingRoundConfig;return this.addBehavior(new Yc({childGroups:e.childGroups,loop:e.addLoop?{condition:e.loopConfig?.condition??`timer-active`}:!1,injectRest:e.injectRest,skipOnMount:e.skipOnMount,startRound:t?.startRound,totalRounds:t?.totalRounds})),this}build(){if(!this.context)throw Error(`BlockContext is required`);if(!this.key)throw Error(`BlockKey is required`);this.addBehaviorIfMissing(new xc),this.declaredExitMode&&(this.removeBehavior(Lc),this.addBehavior(new Lc(this.declaredExitMode===`immediate`?{mode:`immediate`,onNext:!0}:{mode:`deferred`}))),this.moveBehaviorLast(Ic);let e=new vc({runtime:this.runtime,sourceIds:this.sourceIds,behaviors:Array.from(this.behaviors.values()),context:this.context,key:this.key,blockType:this.blockType});if(this.metrics&&this.metrics.length>0)for(let t of this.metrics)e.pushMemory(new uc(`metric:display`,t));return this.label&&e.pushMemory(new uc(`metric:label`,[{type:G.Label,image:this.label,origin:`compiler`,value:this.label}])),e}};function cl(e){return typeof e==`object`&&!!e&&`getPromotedFragments`in e&&typeof e.getPromotedFragments==`function`}var ll=class{resolvePromotions(e,t){if(!e)return{promotedFragments:[],hasPromotions:!1};let n=e.getMetricMemoryByVisibility(`promote`).flatMap(e=>e.metrics.toArray());for(let r of e.behaviors){if(!cl(r))continue;let i=r.getPromotedFragments(t,e);for(let e of i){let t=n.findIndex(t=>t.type===e.type);t===-1?n.push(e):n[t]=e}}return{promotedFragments:n,hasPromotions:n.length>0}}},ul=class{strategies;_promotionResolver;constructor(e=[],t){this.strategies=e,this._promotionResolver=t??new ll}registerStrategy(e){this.strategies.push(e)}compile(e,t){if(e.length===0)return;let n=e,r=t.stack?.current,i=this._promotionResolver.resolvePromotions(r,t);if(i.hasPromotions){let e=i.promotedFragments;n=n.map(t=>{let n=Object.create(Object.getPrototypeOf(t));return Object.assign(n,t),n.metrics=t.metrics.clone(t.id).add(...e),n})}let a=this.strategies.filter(e=>e.match(n,t)).sort((e,t)=>(t.priority||0)-(e.priority||0));if(a.length===0)return;let o=new sl(t);for(let e of a)e.apply(o,n,t);try{return o.build()}catch{return}}},dl=class{handlersByEvent=new Map;callbacksByEvent=new Map;register(e,t,n,r={}){let{priority:i=0,scope:a=`active`}=r,o=[...this.handlersByEvent.get(e)??[],{handler:t,ownerId:n,priority:i,scope:a}];return o.sort((e,t)=>t.priority-e.priority),this.handlersByEvent.set(e,o),()=>this.unregisterById(t.id)}on(e,t,n){let r=y(),i=this.callbacksByEvent.get(e)??[];return i.push({id:r,callback:t,ownerId:n}),this.callbacksByEvent.set(e,i),()=>this.unregisterById(r)}unregisterById(e){for(let[t,n]of this.handlersByEvent.entries()){let r=n.filter(t=>t.handler.id!==e);r.length===0?this.handlersByEvent.delete(t):this.handlersByEvent.set(t,r)}for(let[t,n]of this.callbacksByEvent.entries()){let r=n.filter(t=>t.id!==e);r.length===0?this.callbacksByEvent.delete(t):this.callbacksByEvent.set(t,r)}}unregisterByOwner(e){for(let[t,n]of this.handlersByEvent.entries()){let r=n.filter(t=>t.ownerId!==e);r.length===0?this.handlersByEvent.delete(t):this.handlersByEvent.set(t,r)}for(let[t,n]of this.callbacksByEvent.entries()){let r=n.filter(t=>t.ownerId!==e);r.length===0?this.callbacksByEvent.delete(t):this.callbacksByEvent.set(t,r)}}dispatch(e,t){let n=[...this.callbacksByEvent.get(`*`)??[],...this.callbacksByEvent.get(e.name)??[]];for(let r of n)try{r.callback(e,t)}catch(t){console.error(`EventBus callback error for ${e.name}:`,t)}let r=t.stack.current?.key.toString(),i=new Set(t.stack.keys.map(e=>e.toString())),a=[...this.handlersByEvent.get(`*`)??[],...this.handlersByEvent.get(e.name)??[]].filter(e=>{switch(e.scope){case`global`:return!0;case`bubble`:return i.has(e.ownerId);default:return e.ownerId===r}}),o=[];for(let n of a)try{let r=n.handler.handler(e,t);r&&r.length>0&&o.push(...r)}catch(t){console.error(`EventBus handler error for ${e.name}:`,t)}return Qs.logEvent(e,o),o}emit(e,t){t.handle(e)}dispose(){this.handlersByEvent.clear(),this.callbacksByEvent.clear()}},fl=class e extends vc{constructor(t,n){let r=n.label??`Session`,i=new ba(`session-root`),a=new lc(t,i.toString(),`Session`),o=e.buildBehaviors(n,t);super({runtime:t,sourceIds:n.childGroups.flat(),behaviors:o,context:a,key:i,blockType:`SessionRoot`,label:r})}static buildBehaviors(e,t){let n=[],r=e.totalRounds??1,i=e.label??`Session`;return n.push(new kc({label:i,role:`auto`})),n.push(new Yc({childGroups:e.childGroups,loop:r>1&&{condition:`rounds-remaining`},skipOnMount:!0,startRound:1,totalRounds:r})),n.push(new al(t)),n.push(new el({label:i})),n.push(new Rc({mode:`clock`,label:i})),n.push(new rl({buttons:[{id:`pause`,label:`Pause`,variant:`secondary`,visible:!0,enabled:!0,eventName:`timer:pause`},{id:`next`,label:`Next`,variant:`primary`,visible:!0,enabled:!0,eventName:`next`},{id:`stop`,label:`Stop`,variant:`danger`,visible:!0,enabled:!0,eventName:`workout:stop`}]})),n}mount(e,t){return super.mount(e,t)}unmount(e,t){return super.unmount(e,t)}dispose(e){super.dispose(e),this.context&&this.context.release()}},pl=class{priority=100;id=`session-root`;match(e,t){return!1}apply(e,t,n){}build(e,t){return new fl(e,t)}buildFromStatements(e,t,n){let r={childGroups:gl(t),label:n?.label,totalRounds:n?.totalRounds};return this.build(e,r)}};function ml(e){let t=e.metrics;return(!e.children||e.children.length===0)&&!t.some(e=>e.type===G.Effort)&&!t.some(e=>e.type===G.Duration)&&!t.some(e=>e.type===G.Rounds)&&!t.some(e=>e.type===G.Rep)&&t.some(e=>e.type===G.Resistance||e.type===G.Distance)}function hl(e){return!!e.children&&e.children.length>0||e.metrics.some(e=>e.type===G.Rounds)||e.metrics.some(e=>e.type===G.Duration)}function gl(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(ml(r)&&n+1<e.length){let i=e[n+1];if(hl(i)){t.push([i.id,r.id]),n+=2;continue}}t.push([r.id]),n++}return t}var _l=class{options;type=`start-session`;constructor(e={}){this.options=e}do(e){if(e.stack.count>0)return console.warn(`[StartSessionAction] Session already started - stack is not empty`),[];let t=e.script?.statements;if(!t||t.length===0)return console.warn(`[StartSessionAction] No statements in script to start`),[];let n=new Set;for(let e of t)if(e.children)for(let t of e.children)for(let e of t)n.add(e);let r={childGroups:gl(t.filter(e=>!n.has(e.id))),label:this.options.label,totalRounds:this.options.totalRounds};return[new $s(new pl().build(e,r),{startTime:e.clock.currentDate,...this.options.lifecycle})]}},vl=class{realtimeProcessors=[];summaryProcessors=[];outputHistory=[];_onLiveOutput;_lastLiveProjectionSignature;setLiveOutputEmitter(e){this._onLiveOutput=e}addRealtimeProcessor(e){this.realtimeProcessors.push(e)}addSummaryProcessor(e){this.summaryProcessors.push(e)}run(e){let t=e;for(let e of this.realtimeProcessors)try{t=e.process(t)}catch(t){console.error(`[AnalyticsEngine] realtime error in '${e.id}':`,t)}if(t.outputType===`segment`&&(this.outputHistory.push(t),this._onLiveOutput)){let e=Date.now(),t=this._runSummaries(),n=this._projectionSignature(t);if(n!==this._lastLiveProjectionSignature){this._lastLiveProjectionSignature=n;let r=this._buildProjectionOutputs(t,e);this._onLiveOutput(r)}}return t}finalize(){let e=this._runSummaries(),t=this._buildProjectionOutputs(e,Date.now()),n=this._projectionSignature(e);return this._lastLiveProjectionSignature!==void 0&&this._lastLiveProjectionSignature===n?[]:t}_projectionSignature(e){return JSON.stringify(e.map(e=>({name:e.name,value:e.value,unit:e.unit,metricType:e.metricType})))}_buildProjectionOutputs(e,t){return e.map(e=>{let n=K.empty(`projection-${e.name}`).add({type:G.Label,image:e.name,value:e.name,origin:e.origin??`analyzed`,timestamp:new Date(t)},{type:e.metricType||G.Metric,image:`${e.value} ${e.unit}`,value:e.value,unit:e.unit,origin:e.origin??`analyzed`,timestamp:new Date(t),...e.metadata?{metadata:e.metadata}:{}});return new ya({outputType:`analytics`,timeSpan:{started:t,ended:t},sourceBlockKey:`analytics-summary`,stackLevel:0,metrics:n})})}_runSummaries(){let e=[];for(let t of this.summaryProcessors)try{e.push(...t.summarize(this.outputHistory))}catch(e){console.error(`[AnalyticsEngine] summary error in '${t.id}':`,e)}return e}},yl=class{resolver;id=`two-pass-effort-resolution`;fenceTypes=[`time`,`log`];constructor(e){this.resolver=e}process(e){let t=e.getMetric(G.Effort),n=e.getMetric(G.Action),r,i=`analyzed`;if(t&&typeof t.value==`string`?(r=t.value,i=t.origin===`compiler`?`compiler`:`analyzed`):n&&typeof n.value==`string`&&(r=n.value,i=`analyzed`),!r)return e;let{resolved:a,finalOrigin:o}=this.resolve(r,i),s={type:Bc,image:a.label,value:a,origin:o,timestamp:new Date},c=e.metrics.toArray(),l=[],u=!1;for(let e of c)l.push(e),!u&&(e.type===G.Effort||e.type===G.Action)&&(l.push(s),u=!0);u||l.push(s),e.metrics.clear();for(let t of l)e.metrics.add(t);return e}resolve(e,t){let n;if(t===`compiler`&&(n=this.resolver.resolveBySlug(e)??this.resolver.resolveByAlias(e),n))return{resolved:this.resolver.resolveDefinition(n),finalOrigin:`compiler`};let r=this.resolver.resolveEffort(e);return{resolved:r,finalOrigin:r.isEstimated?`analyzed-estimated`:`analyzed`}}},q=[0,0,0,0,0],bl=[1,0,0,0,0],xl=[0,1,0,0,0],Sl=[0,0,1,0,0],Cl=[0,0,0,1,0],wl=[0,0,0,0,1];function Tl(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2],e[3]+t[3],e[4]+t[4]]}function El(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2],e[3]-t[3],e[4]-t[4]]}function Dl(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]}function Ol(e){return Dl(e,q)}var kl=[`L`,`M`,`T`,`C`,`E`];function Al(e){if(Ol(e))return`dimensionless`;let t=[];for(let n=0;n<5;n++){let r=e[n];r!==0&&t.push(r===1?kl[n]:`${kl[n]}^${r}`)}return t.join(`·`)}var jl={pace:{dim:[-1,0,1,0,0],preferredUnits:[`min/km`,`sec/km`,`min/mi`]},speed:{dim:[1,0,-1,0,0],preferredUnits:[`m/s`,`km/h`]},volume:{dim:[0,1,0,1,0],preferredUnits:[`kg`,`lb`]},power:{dim:[0,1,-1,1,0],preferredUnits:[`kg/s`,`lb/s`]},time:{dim:Sl,preferredUnits:[`min`,`s`,`h`]},mass:{dim:xl,preferredUnits:[`kg`,`lb`]},length:{dim:bl,preferredUnits:[`m`,`km`,`mi`]},count:{dim:Cl,preferredUnits:[`reps`]},energy:{dim:wl,preferredUnits:[`cal`,`kcal`]},dimensionless:{dim:q,preferredUnits:[`pts`,`AU`,`MET`,`ratio`]}};function Ml(e){for(let[t,n]of Object.entries(jl))if(Dl(n.dim,e))return t}var Nl={reps:{dim:Cl,metricType:`rep`,unit:`reps`},elapsed:{dim:Sl,metricType:`elapsed`,unit:`ms`},distance:{dim:bl,metricType:`distance`,unit:`m`},resistance:{dim:xl,metricType:`resistance`,unit:`kg`},segmentVolume:{dim:[0,1,0,1,0],metricType:`segmentVolume`,unit:`kg`},metMinutes:{dim:Sl,metricType:`metMinutes`,unit:`min`},effortRpe:{dim:q,metricType:`effortRpe`},metMinutesEstimated:{dim:q,metricType:`metMinutesEstimated`},sessionRpe:{dim:q,metricType:`session-rpe`},climbSend:{dim:Cl,metricType:`climb-send-type`,unit:`count`},climbGrade:{dim:q,metricType:`climb-grade`}},Pl={effort:q,effortLabel:q,sessionRpe:q,"session.duration":Sl,"profile.vo2max":q},Fl={sum:!0,max:!0,min:!0,avg:!0,count:!0,last:!0},Il={AU:!0,pts:!0,"MET-min":!0,ratio:!0},Ll=.45359237,Rl=1609.344,zl={ms:{dim:Sl,factor:1},s:{dim:Sl,factor:1e3},sec:{dim:Sl,factor:1e3},min:{dim:Sl,factor:6e4},h:{dim:Sl,factor:36e5},hr:{dim:Sl,factor:36e5},m:{dim:bl,factor:1},km:{dim:bl,factor:1e3},mi:{dim:bl,factor:Rl},kg:{dim:xl,factor:1},lb:{dim:xl,factor:Ll},lbs:{dim:xl,factor:Ll},rep:{dim:Cl,factor:1},reps:{dim:Cl,factor:1},cal:{dim:wl,factor:1},kcal:{dim:wl,factor:1e3},MET:{dim:q,factor:1},"%":{dim:q,factor:1},rating:{dim:q,factor:1},bpm:{dim:q,factor:1},count:{dim:Cl,factor:1},"m/s":{dim:[1,0,-1,0,0],factor:.001},"km/h":{dim:[1,0,-1,0,0],factor:1e3/36e5},"sec/km":{dim:[-1,0,1,0,0],factor:1},"min/km":{dim:[-1,0,1,0,0],factor:60},"min/mi":{dim:[-1,0,1,0,0],factor:6e4/Rl},"reps/min":{dim:[0,0,-1,1,0],factor:1/6e4},"kg/s":{dim:[0,1,-1,1,0],factor:.001},"lb/s":{dim:[0,1,-1,1,0],factor:Ll/1e3}};function Bl(e){let t=zl[e];if(t)return t;if(Il[e])return{dim:q,factor:1}}function Vl(e,t,n){let r=zl[n];if(!r)throw new Hl(`Unknown unit: ${n}`);if(!t)return e/r.factor;let i=zl[t];if(!i)throw new Hl(`Unknown unit: ${t}`);if(!Dl(i.dim,r.dim))throw new Hl(`Cannot convert from ${t} to ${n}: dimension mismatch`);return e*i.factor/r.factor}var Hl=class extends Error{constructor(e){super(e),this.name=`CalcUnitError`}};function Ul(e,t,n,r,i){if(Dl(i,q))return;let a=[];for(let[i,o]of[[e,t],[n,r]])!i||Dl(o,q)||a.push(i);let o=a.filter(e=>!Dl(zl[e]?.dim??q,Cl)),s=o.length>0?o:a;return s.length>0?s.join(`·`):void 0}function Wl(e,t,n,r){if(!Dl(r,q)){if(!t||Dl(n,q))return e;if(e)return`${e}/${t}`}}var Gl={kind:`absent`};function J(e,t=q,n){return{kind:`number`,value:e,dim:t,unit:n}}function Kl(e){return{kind:`string`,value:e}}function ql(e){return e.kind===`number`?e.value!==0:e.kind===`string`?e.value.length>0:e.kind===`series`?e.points.size>0:e.kind===`period`&&e.days>0}var Jl=class extends Error{constructor(e){super(e),this.name=`CalcEvalError`}};function Yl(e,t){switch(e.kind){case`literal`:return J(e.value);case`period`:return{kind:`period`,days:e.days};case`string`:return Kl(e.value);case`ref`:return t.resolveRef(e.name);case`filter`:throw new Jl(`Exclusion filter is only valid as an aggregate argument`);case`wql`:if(!t.resolveWql)throw new Jl(`WQL atom ${e.aggregator}:${e.metric} is store-scope only`);return t.resolveWql(e);case`unary`:{let n=Yl(e.arg,t);if(e.op===`not`)return J(+!ql(n));if(n.kind===`absent`)return Gl;if(n.kind!==`number`)throw new Jl(`Unary minus requires a number`);return J(-n.value,n.dim,n.unit)}case`binary`:return Xl(e,t);case`call`:return eu(e,t)}}function Xl(e,t){let{op:n}=e;if(n===`and`)return ql(Yl(e.left,t))?J(+!!ql(Yl(e.right,t))):J(0);if(n===`or`)return ql(Yl(e.left,t))?J(1):J(+!!ql(Yl(e.right,t)));let r=Yl(e.left,t),i=Yl(e.right,t);if(r.kind===`series`||i.kind===`series`)return Zl(n,r,i);if(n===`==`||n===`!=`){let e=Ql(r,i);return J(n===`==`?+!!e:+!e)}if(r.kind===`absent`||i.kind===`absent`)return n===`<`||n===`<=`||n===`>`||n===`>=`?J(0):Gl;if(r.kind!==`number`||i.kind!==`number`)throw new Jl(`Operator '${n}' requires numbers`);switch(n){case`+`:case`-`:if(!Dl(r.dim,i.dim))throw new Jl(`Dimension mismatch for '${n}': ${Al(r.dim)} vs ${Al(i.dim)}`);return J(n===`+`?r.value+i.value:r.value-i.value,r.dim,r.unit??i.unit);case`*`:{let e=Tl(r.dim,i.dim);return J(r.value*i.value,e,Ul(r.unit,r.dim,i.unit,i.dim,e))}case`/`:{if(i.value===0)return Gl;let e=El(r.dim,i.dim);return J(r.value/i.value,e,Wl(r.unit,i.unit,i.dim,e))}case`<`:return J(+($l(r)<$l(i)));case`<=`:return J(+($l(r)<=$l(i)));case`>`:return J(+($l(r)>$l(i)));case`>=`:return J(+($l(r)>=$l(i)))}}function Zl(e,t,n){if(e===`and`||e===`or`||e===`==`||e===`!=`||e===`<`||e===`<=`||e===`>`||e===`>=`)throw new Jl(`Operator '${e}' is not defined on series`);if(t.kind===`absent`||n.kind===`absent`)return Gl;let r=t.kind===`series`?t:void 0,i=n.kind===`series`?n:void 0,a=e=>e.kind===`number`?e.value:void 0;if(!r&&a(t)===void 0||!i&&a(n)===void 0)throw new Jl(`Operator '${e}' requires numbers or series`);let o=a(t),s=a(n),c=t.kind===`number`||t.kind===`series`?t.dim:void 0,l=n.kind===`number`||n.kind===`series`?n.dim:void 0;if((e===`+`||e===`-`)&&c&&l&&!Dl(c,l))throw new Jl(`Dimension mismatch for '${e}': ${Al(c)} vs ${Al(l)}`);let u=e===`*`?Tl(c??q,l??q):e===`/`?El(c??q,l??q):c??l??q,d=(t,n)=>{switch(e){case`+`:return t+n;case`-`:return t-n;case`*`:return t*n;case`/`:return n===0?void 0:t/n;default:return}},f=new Map,p=r??i;for(let[e,t]of p.points){let n=r?t:o,a=i?i.points.get(e):s;if(a===void 0)continue;let c=d(n,a);c!==void 0&&Number.isFinite(c)&&f.set(e,c)}return{kind:`series`,points:f,dim:u}}function Ql(e,t){return e.kind===`absent`||t.kind===`absent`?e.kind===t.kind:e.kind===`string`||t.kind===`string`?e.kind===`string`&&t.kind===`string`&&e.value===t.value:e.kind!==`number`||t.kind!==`number`?e.kind===t.kind:Dl(e.dim,t.dim)?$l(e)===$l(t):!1}function $l(e){if(!e.unit)return e.value;let t=zl[e.unit];return t?e.value*t.factor:e.value}function eu(e,t){let{name:n,args:r}=e;if(n===`has`){if(r.length!==1)throw new Jl(`has() takes one argument`);return J(Yl(r[0],t).kind===`absent`?0:1)}if(n===`convert`){if(r.length!==2)throw new Jl(`convert() takes (value, targetUnit)`);let e=ru(r[1]),n=Yl(r[0],t);if(n.kind===`absent`)return Gl;if(n.kind!==`number`)throw new Jl(`convert() requires a number`);let i=zl[e];if(!i)throw new Jl(`Unknown unit: ${e}`);if(!Dl(n.dim,i.dim))throw new Jl(`convert() dimension mismatch: ${Al(n.dim)} is not ${Al(i.dim)}`);return J(Vl(n.value,n.unit,e),i.dim,e)}let i=r.map(e=>e.kind===`filter`?Gl:Yl(e,t));if(tu[n]&&(r[0]?.kind===`ref`||r[0]?.kind===`filter`)){let e=t.callFunction?.(n,i,r);if(e!==void 0)return e}if(n===`windowMean`||n===`windowSum`||n===`windowSd`){let[e,t]=i;if(e?.kind===`absent`)return Gl;if(e?.kind!==`series`||t?.kind!==`period`)throw new Jl(`${n}() takes (series, period)`);return nu(n,e,t.days)}if(n===`windowEwma`){let[e,t]=i;if(e?.kind===`absent`)return Gl;if(e?.kind!==`series`||t?.kind!==`period`)throw new Jl(`windowEwma() takes (series, period)`);let n=1/t.days,r=0,a=new Map;for(let t of[...e.points.keys()].sort((e,t)=>e-t))r+=((e.points.get(t)??0)-r)*n,a.set(t,r);return{kind:`series`,points:a,dim:e.dim,unit:e.unit}}if(i[0]?.kind===`series`&&(n===`sum`||n===`mean`||n===`min`||n===`max`||n===`last`)){let e=i[0],t=[...e.points.values()];if(t.length===0)return Gl;switch(n){case`sum`:return J(t.reduce((e,t)=>e+t,0),e.dim,e.unit);case`mean`:return J(t.reduce((e,t)=>e+t,0)/t.length,e.dim,e.unit);case`min`:return J(Math.min(...t),e.dim,e.unit);case`max`:return J(Math.max(...t),e.dim,e.unit);case`last`:return J(t[t.length-1],e.dim,e.unit)}}switch(n){case`min`:case`max`:{let e=iu(n,i);if(e.length===0)return Gl;let t=e.reduce((e,t)=>(n===`min`?$l(t)<$l(e):$l(t)>$l(e))?t:e);return J(t.value,t.dim,t.unit)}case`abs`:{let[e]=iu(n,i,1);return J(Math.abs(e.value),e.dim,e.unit)}case`round`:{let[e,t]=iu(n,i),r=10**(t?t.value:0);return J(Math.round(e.value*r)/r,e.dim,e.unit)}case`floor`:{let[e]=iu(n,i,1);return J(Math.floor(e.value),e.dim,e.unit)}case`ceil`:{let[e]=iu(n,i,1);return J(Math.ceil(e.value),e.dim,e.unit)}case`clamp`:{let[e,t,r]=iu(n,i,3);return J(Math.min(Math.max(e.value,t.value),r.value),e.dim,e.unit)}}let a=t.callFunction?.(n,i,r);if(a!==void 0)return a;throw new Jl(`Unknown function: ${n}`)}var tu={sum:!0,max:!0,min:!0,avg:!0,count:!0,last:!0};function nu(e,t,n){let r=e=>t.points.get(e)??0,i=new Map;for(let a of t.points.keys()){let t=0;for(let e=0;e<n;e++)t+=r(a-e);if(e===`windowSum`){i.set(a,t);continue}let o=t/n;if(e===`windowMean`){i.set(a,o);continue}let s=0;for(let e=0;e<n;e++){let t=r(a-e)-o;s+=t*t}i.set(a,Math.sqrt(s/n))}return{kind:`series`,points:i,dim:t.dim,unit:t.unit}}function ru(e){if(e.kind===`ref`)return e.name;if(e.kind===`string`)return e.value;throw new Jl(`convert() target unit must be a unit name`)}function iu(e,t,n){let r=[];for(let n of t)if(n.kind!==`absent`){if(n.kind!==`number`)throw new Jl(`${e}() requires numeric arguments`);r.push(n)}if(n!==void 0&&(t.length!==n||r.length!==n))throw new Jl(`${e}() needs ${n} numeric argument(s), got ${r.length}`);return r}var au=class extends Error{constructor(e){super(e),this.name=`CalcRegistrationError`}};function ou(e,t){switch(e.kind){case`literal`:return q;case`period`:return q;case`string`:return q;case`filter`:return q;case`ref`:{let n=t.refDim(e.name);if(!n)throw new au(`Unknown symbol: ${e.name}`);return n}case`wql`:return t.wqlDim?.(e)??q;case`unary`:return e.op===`not`?q:ou(e.arg,t);case`binary`:{let{op:n}=e;if(n===`and`||n===`or`)return ou(e.left,t),ou(e.right,t),q;if(n===`*`)return Tl(ou(e.left,t),ou(e.right,t));if(n===`/`)return El(ou(e.left,t),ou(e.right,t));let r=su(e.left,t),i=su(e.right,t);if(r&&i&&!Dl(r,i))throw new au(`Dimension mismatch for '${n}': ${Al(r)} vs ${Al(i)}`);return n===`+`||n===`-`?r??q:q}case`call`:return lu(e,t)}}function su(e,t){if(e.kind!==`literal`||e.value!==0)return ou(e,t)}function cu(e){return e.kind===`string`?e.value:void 0}function lu(e,t){let{name:n,args:r}=e;if(n===`has`)return q;if(n===`convert`){if(r.length!==2)throw new au(`convert() takes (value, targetUnit)`);let e=r[1],n=e.kind===`ref`?e.name:e.kind===`string`?e.value:void 0,i=n===void 0?void 0:Bl(n);if(!n||!i)throw new au(`convert() target must be a known unit name`);let a=ou(r[0],t);if(!Dl(a,i.dim))throw new au(`convert(x, ${n}) dimension mismatch: ${Al(a)} is not ${Al(i.dim)}`);return i.dim}if(n===`min`||n===`max`||n===`clamp`){let e;for(let i of r){let r=ou(i,t);if(e&&!Dl(e,r))throw new au(`${n}() arguments have mismatched dimensions`);e=r}if(!e)throw new au(`${n}() requires at least one argument`);return e}if(n===`abs`||n===`round`||n===`floor`||n===`ceil`){if(r.length<1)throw new au(`${n}() requires an argument`);return ou(r[0],t)}if(n===`windowMean`||n===`windowSum`||n===`windowSd`||n===`windowEwma`){if(r.length!==2)throw new au(`${n}() takes (series, period)`);return ou(r[0],t)}if(n===`lookup`){if(r.length!==3)throw new au(`lookup() takes (table, key, field)`);let e=cu(r[0]),n=cu(r[2]);if(!e||!n)throw new au(`lookup() table and field must be string literals`);ou(r[1],t);let i=t.lookupDim?.(e,n);if(!i)throw new au(`Unknown lookup field: ${e}.${n}`);return i}let i=r.map(e=>e.kind===`filter`?q:ou(e,t)),a=t.callDim?.(n,i);if(!a)throw new au(`Unknown function: ${n}`);return a}function uu(e,t){if(!t||t===`auto`||Il[t])return;let n=Bl(t);if(!n)throw new au(`Unknown output unit: ${t}`);if(!Dl(n.dim,e))throw new au(`Declared unit ${t} (${Al(n.dim)}) does not match expression dimension ${Al(e)}`)}var du=class extends Error{pos;constructor(e,t){super(`${e} (at ${t})`),this.pos=t,this.name=`CalcParseError`}},fu=/[A-Za-z_]/,pu=/[A-Za-z0-9_.]/;function mu(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
11
+ `||r===`\r`){n++;continue}if(r>=`0`&&r<=`9`||r===`.`&&e[n+1]>=`0`&&e[n+1]<=`9`){let r=/^\d*\.?\d+/.exec(e.slice(n)),i=n+r[0].length;if(e[i]===`d`&&!(i+1<e.length&&pu.test(e[i+1]))){t.push({t:`period`,v:parseFloat(r[0]),pos:n}),n=i+1;continue}t.push({t:`num`,v:parseFloat(r[0]),pos:n}),n=i;continue}if(r===`"`||r===`'`){let i=e.indexOf(r,n+1);if(i<0)throw new du(`Unterminated string literal`,n);t.push({t:`str`,v:e.slice(n+1,i),pos:n}),n=i+1;continue}if(r===`{`){let r=e.indexOf(`}`,n+1);if(r<0)throw new du(`Unterminated filter braces`,n);t.push({t:`brace`,v:e.slice(n+1,r),pos:n}),n=r+1;continue}if(fu.test(r)){let r=n+1;for(;r<e.length&&pu.test(e[r]);)r++;let i=e.slice(n,r);if(i===`without`){let i=/^\s*:\s*([^,)]+)/.exec(e.slice(r));if(i){t.push({t:`filter`,v:i[1].trim(),pos:n}),n=r+i[0].length;continue}}t.push({t:`ident`,v:i,pos:n}),n=r;continue}let i=e.slice(n,n+2);if(i===`==`||i===`!=`||i===`<=`||i===`>=`||i===`->`){t.push({t:`op`,v:i,pos:n}),n+=2;continue}if(`+-*/()<>=,:`.includes(r)){t.push({t:`op`,v:r,pos:n}),n++;continue}throw new du(`Unexpected character '${r}'`,n)}return t.push({t:`eof`,pos:e.length}),t}var hu={or:1,and:2,"==":3,"!=":3,"<":3,"<=":3,">":3,">=":3,"+":4,"-":4,"*":5,"/":5},gu=class{tokens;pos=0;constructor(e){this.tokens=e}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}isOp(e){let t=this.peek();return t.t===`op`&&t.v===e}isIdent(e){let t=this.peek();return t.t===`ident`&&t.v===e}parseTop(){let e=this.parseExpression(),t=this.peek();if(t.t!==`eof`)throw new du(`Unexpected trailing input`,t.pos);return e}expectOp(e){let t=this.next();if(t.t!==`op`||t.v!==e)throw new du(`Expected '${e}'`,t.pos);return t}binaryOp(){let e=this.peek(),t=e.t===`op`||e.t===`ident`&&(e.v===`and`||e.v===`or`)?e.v:void 0;if(t===void 0)return;let n=hu[t];return n===void 0?void 0:{op:t,prec:n}}parseExpression(e=1){let t=this.parseUnary();for(;;){let n=this.binaryOp();if(!n||n.prec<e)return t;this.next();let r=this.parseExpression(n.prec+1);t={kind:`binary`,op:n.op,left:t,right:r}}}parseUnary(){let e=this.peek();return e.t===`op`&&e.v===`-`?(this.next(),{kind:`unary`,op:`-`,arg:this.parseUnary()}):e.t===`ident`&&e.v===`not`?(this.next(),{kind:`unary`,op:`not`,arg:this.parseUnary()}):this.parsePrimary()}parsePrimary(){let e=this.next();if(e.t===`num`)return{kind:`literal`,value:e.v};if(e.t===`period`)return{kind:`period`,days:e.v};if(e.t===`str`)return{kind:`string`,value:e.v};if(e.t===`op`&&e.v===`(`){let e=this.parseExpression();return this.expectOp(`)`),e}if(e.t===`op`&&e.v===`:`)throw new du(`Unexpected ':'`,e.pos);if(e.t===`ident`){if(this.isOp(`:`)){this.next();let t=this.next();if(t.t!==`ident`)throw new du(`Expected metric name after aggregator`,t.pos);let n,r,i=this.peek();if(i.t===`brace`&&(n=i.v,this.next()),this.isIdent(`by`)){this.next();let e=this.next();if(e.t!==`brace`)throw new du(`Expected '{dims}' after 'by'`,e.pos);r=e.v.split(`,`).map(e=>e.trim()).filter(Boolean)}return{kind:`wql`,aggregator:e.v,metric:t.v,filters:n,groupBy:r}}if(this.isOp(`(`)){this.next();let t=[];if(this.isOp(`)`))this.next();else for(;;){t.push(this.parseArg());let e=this.next();if(e.t!==`op`||e.v!==`,`){if(e.t===`op`&&e.v===`)`)break;throw new du(`Expected ',' or ')' in argument list`,e.pos)}}return{kind:`call`,name:e.v,args:t}}return{kind:`ref`,name:e.v}}throw new du(`Expected expression`,e.pos)}parseArg(){let e=this.peek();return e.t===`filter`?(this.next(),{kind:`filter`,value:e.v}):this.parseExpression()}};function _u(e){return new gu(mu(e)).parseTop()}var vu=class{lookups;defs=new Map;libraryDims=new Map;constructor(e){this.lookups=e}byScope(e){return[...this.defs.values()].filter(t=>t.scope===e)}get(e){return this.defs.get(e)}register(e){if(e.variants.length===0)throw new au(`Calc ${e.id}: at least one variant is required`);let t=this.staticEnv();e.when&&(e.whenAst=yu(e.when,e.id,t)),e.variants=[...e.variants].sort((e,t)=>t.priority-e.priority);for(let n of e.variants)this.compileVariant(e,n,t);if(e.kind===`output`&&e.output?.unit&&e.output.unit!==`auto`)for(let t of e.variants)for(let n of Su(e)){let r=t.nodeDims?.[n];r&&uu(r,e.output.unit)}if(e.kind===`library`)for(let t of e.variants)for(let[n,r]of Object.entries(t.nodeDims??{}))this.libraryDims.set(`${e.id}.${n}`,r);this.defs.set(e.id,e)}compileVariant(e,t,n){t.when&&(t.whenAst=yu(t.when,`${e.id}:${t.id}`,n));let r={},i=new Set,a=n=>{if(r[n])return r[n];let a=t.nodes[n];if(!a)throw new au(`Unknown symbol: ${n}`);if(i.has(n))throw new au(`Calc ${e.id}:${t.id}.${n}: cyclic node reference`);i.add(n);try{let i=a.ast??_u(bu(e,t,n,a.expression));a.ast=i;let s=ou(i,this.staticEnv(o));return a.unit&&(uu(s,a.unit),Il[a.unit]&&(s=q)),r[n]=s,s}catch(r){throw xu(e,t,n,r)}finally{i.delete(n)}},o=e=>{if(e in t.nodes)return a(e)};for(let e of Object.keys(t.nodes))a(e);t.nodeDims=r}staticEnv(e=()=>void 0){return{refDim:t=>e(t)??this.libraryDims.get(t)??Nl[t]?.dim??Pl[t],callDim:(e,t)=>{if(e===`count`)return q;if(Fl[e])return t[0]},lookupDim:(e,t)=>this.lookups.fieldDim(e,t)}}};function yu(e,t,n){try{let t=_u(e);return ou(t,n),t}catch(e){throw e instanceof Error?new au(`Calc ${t} predicate: ${e.message}`):e}}function bu(e,t,n,r){if(!r)throw new au(`Calc ${e.id}:${t.id}.${n}: node needs an expression or AST`);return r}function xu(e,t,n,r){return r instanceof Error?new au(`Calc ${e.id}:${t.id}.${n}: ${r.message}`):r}function Su(e){let t=e.output?.nodeId;return t?Array.isArray(t)?t:[t]:[]}var Cu=class{registry;deps;id=`composed-calculations`;fenceTypes=[`time`,`log`];segmentCalcs;workoutCalcs;lastSegmentEffort;constructor(e,t){this.registry=e,this.deps=t;let n=e=>!e.fences||e.fences.includes(t.dialect);this.segmentCalcs=e.byScope(`segment`).filter(n),this.workoutCalcs=e.byScope(`workout`).filter(n)}process(e){if(e.outputType!==`segment`||!e.isLeaf)return e;let t=Uc(e.metrics.rawMetrics);t&&(this.lastSegmentEffort=t.resolved.slug);let n=wu(e,this.lastSegmentEffort),r=Ou(e).slug??this.lastSegmentEffort,i={};if(r){i.effortSlug=r;let e=this.lookupString(r,`discipline`),t=this.lookupString(r,`intensityTier`);e&&(i.effortDiscipline=e),t&&(i.effortIntensityTier=t)}let a=[...e.metrics.rawMetrics].find(e=>e.type===`climb-grade`)?.value;a&&typeof a==`object`&&`raw`in a&&(i.grade=String(a.raw));for(let t of this.segmentCalcs){let r=this.makeContext(n);if(!this.applicable(t.whenAst,r))continue;let a=this.selectVariant(t,r);if(!a)continue;let o=this.evaluateVariant(a,n);if(t.kind===`library`)for(let[t,n]of o)n.kind===`number`&&(this.hasFrozen(e,t)||this.appendAnnotation(e,t,n,a.origin,void 0,i));else for(let n of Su(t)){let r=o.get(n);r?.kind===`number`&&(this.hasFrozen(e,t.output?.emitType??t.id)||this.appendAnnotation(e,t.output?.emitType??t.id,r,a.origin,t.output?.unit,i))}}return e}appendAnnotation(e,t,n,r,i,a){let o=!i||i===`auto`?n.unit:i;e.metrics.add({type:t,image:o?`${Mu(n.value)} ${o}`:Mu(n.value),value:n.value,unit:o,origin:r,timestamp:new Date,...a&&Object.keys(a).length>0?{metadata:a}:{}})}hasFrozen(e,t){return e.metrics.rawMetrics.some(e=>e.type===t&&e.origin===`analyzed-estimated`)}summarize(e){let t=[];for(let n of this.workoutCalcs)n.output?.isGrouped?t.push(...this.summarizeGrouped(n,e)):t.push(...this.summarizeUngrouped(n,e));return t}summarizeUngrouped(e,t){let n=this.buildWorkoutAtoms(t),r=this.makeContext(n);if(!this.applicable(e.whenAst,r))return[];let i=this.selectVariant(e,r);if(!i)return[];let a=this.evaluateVariant(i,n),o=this.toProjection(e,i,a,void 0);return o?[o]:[]}summarizeGrouped(e,t){let n=new Map;for(let e of t){if(e.outputType!==`segment`)continue;let t=Ou(e);if(!t.slug)continue;let r=n.get(t.slug);r||(r={label:t.label,segments:[]},n.set(t.slug,r)),r.segments.push(e)}let r=[];for(let[t,i]of n){let n=this.buildWorkoutAtoms(i.segments),a=this.makeContext(n);if(!this.applicable(e.whenAst,a))continue;let o=this.selectVariant(e,a);if(!o)continue;let s=this.evaluateVariant(o,n),c=this.toProjection(e,o,s,{effortSlug:t,exerciseName:i.label,groupTags:{effort:t},effortDiscipline:this.lookupString(t,`discipline`),effortIntensityTier:this.lookupString(t,`intensityTier`)});c&&r.push(c)}return r}lookupString(e,t){let n=this.deps.lookups.lookup(`effort`,e,t);return n.kind===`string`&&n.value?n.value:void 0}toProjection(e,t,n,r){let i=Su(e)[0],a=n.get(i);if(a?.kind!==`number`)return;let o={canonicalKey:e.output?.key??e.id,...r};for(let t of e.output?.publishMetadataNodes??[]){let e=n.get(t);e?.kind===`number`&&(o[t]=e.value),e?.kind===`string`&&(o[t]=e.value)}return{name:e.output?.key??e.id,value:a.value,unit:!e.output?.unit||e.output.unit===`auto`?a.unit??``:e.output.unit,metricType:e.output?.emitType,timeSpan:{started:Date.now(),ended:Date.now()},origin:t.origin,metadata:o}}applicable(e,t){return!e||ql(Yl(e,t))}selectVariant(e,t){for(let n of e.variants)if(this.applicable(n.whenAst,t))return n}evaluateVariant(e,t){let n=new Map,r=new Set,i=i=>{let o=n.get(i);if(o)return o;let s=e.nodes[i];if(!s?.ast||r.has(i))return Gl;r.add(i);let c=Yl(s.ast,this.makeContext(t,a));return r.delete(i),c.kind===`number`&&s.unit&&Il[s.unit]&&(c=J(c.value,q,s.unit)),n.set(i,c),c},a=t=>t in e.nodes?i(t):void 0;for(let t of Object.keys(e.nodes))i(t);return n}makeContext(e,t){return{resolveRef:n=>t?.(n)??e.resolveRef(n),callFunction:(t,n,r)=>t===`lookup`?this.deps.lookups.callFunction(t,n,r):e.callFunction?.(t,n,r)}}buildWorkoutAtoms(e){let t=new Map,n=e=>{let n=t.get(e);return n||(n=Ou(e),t.set(e,n)),n},r=(t,r)=>{let i=Nl[t],a=i?.metricType??t,o=[],s=i?.unit;for(let t of e)if(t.outputType===`segment`&&!(r&&ku(n(t).slug,r)))for(let e of t.metrics.rawMetrics){if(e.type!==a)continue;let t=Tu(e);t!==void 0&&(o.push(t),s=Eu(e)??e.unit??s)}return{values:o,unit:s}},i=(e,t)=>{let n=t[0];if(n?.kind!==`ref`)return Gl;let i=t[1]?.kind===`filter`?t[1].value:void 0,{values:a,unit:o}=r(n.name,i);if(a.length===0)return Gl;let s=Nl[n.name]?.dim;switch(e){case`sum`:return J(a.reduce((e,t)=>e+t,0),s,o);case`max`:return J(Math.max(...a),s,o);case`min`:return J(Math.min(...a),s,o);case`avg`:return J(a.reduce((e,t)=>e+t,0)/a.length,s,o);case`last`:return J(a[a.length-1],s,o);case`count`:return J(a.length);default:return Gl}},a=new Map,o=(e,t)=>{let n=t.indexOf(`.`);if(n<0)return Gl;let r=a.get(t);if(r)return r;let i=this.registry.get(t.slice(0,n));if(!i||i.kind!==`library`)return Gl;let o=this.makeContext(e);if(!this.applicable(i.whenAst,o))return Gl;let s=this.selectVariant(i,o);if(!s)return Gl;let c=this.evaluateVariant(s,e);for(let[e,t]of c)a.set(`${i.id}.${e}`,t);return a.get(t)??Gl},s={resolveRef:t=>{if(t===`session.duration`){let t=Au(e);return t===void 0?Gl:J(t,Nl.elapsed.dim,`ms`)}if(t===`sessionRpe`){let t=ju(e,G.SessionRPE);return t===void 0?Gl:J(t)}if(t===`profile.vo2max`){let e=this.deps.userProfile?.vo2max;return e===void 0?Gl:J(e)}if(t===`effort`){for(let t=e.length-1;t>=0;t--){let n=Uc(e[t].metrics.rawMetrics);if(n)return Kl(n.resolved.slug)}return Kl(``)}return t.includes(`.`)?o(s,t):Gl},callFunction:(e,t,n)=>{if([`sum`,`max`,`min`,`avg`,`count`,`last`].includes(e))return i(e,n)}};return s}};function wu(e,t){let n=e.metrics.rawMetrics,r=t=>{let n=0,r=!1;for(let i of e.getDisplayMetrics({types:[t]}))typeof i.value==`number`&&(n+=i.value,r=!0);return r?n:void 0},i=t=>{let n=e.getMetric(t);if(!n)return;let r=Tu(n);if(r!==void 0)return{value:r,unit:Eu(n)??n.unit}},a=r(G.Rep),o=typeof e.getMetric(G.Elapsed)?.value==`number`?e.getMetric(G.Elapsed).value:void 0,s=i(G.Distance),c=i(G.Resistance),l=Uc(n),u=[...n].reverse().find(e=>e.type===G.Effort&&typeof e.value==`string`),d=[...n].some(e=>e.type===`climb-send-type`),f=[...n].find(e=>e.type===`climb-grade`)?.value,p=f&&typeof f==`object`&&`raw`in f?String(f.raw):void 0;return{resolveRef:e=>{switch(e){case`reps`:return a===void 0?Gl:J(a,Nl.reps.dim,`reps`);case`elapsed`:return o===void 0?Gl:J(o,Nl.elapsed.dim,`ms`);case`distance`:return s===void 0?Gl:J(s.value,Nl.distance.dim,s.unit??`m`);case`resistance`:return c===void 0?Gl:J(c.value,Nl.resistance.dim,c.unit??`kg`);case`climbSend`:return d?J(1,Nl.reps.dim,`count`):Gl;case`climbGrade`:return p?Kl(p):Gl;case`effort`:return Kl(l?.resolved.slug??t??``);case`effortLabel`:return u?Kl(u.value):Gl;default:return Gl}}}}function Tu(e){if(typeof e.value==`number`)return e.value;let t=e.value;if(t&&typeof t==`object`&&`amount`in t&&typeof t.amount==`number`)return t.amount}function Eu(e){let t=e.value;if(t&&typeof t==`object`&&`units`in t&&typeof t.units==`string`&&t.units)return t.units}function Du(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``)}function Ou(e){let t=Uc(e.metrics.rawMetrics);if(t)return{slug:t.resolved.slug,label:t.resolved.label};let n=[...e.metrics.rawMetrics].reverse().find(e=>e.type===G.Effort&&typeof e.value==`string`);return n?{slug:Du(n.value),label:n.value}:{slug:``,label:``}}function ku(e,t){for(let n of t.split(`|`)){let t=n.trim();if(t){if(t.endsWith(`*`)){if(e.startsWith(t.slice(0,-1)))return!0}else if(e===t)return!0}}return!1}function Au(e){let t=e.filter(e=>e.outputType===`segment`);if(t.length===0)return;let n=t.find(e=>e.stackLevel===0||e.sourceBlockKey===`root`),r=e=>{let t=e.getMetric(G.Elapsed)?.value;return typeof t==`number`?t:0};if(n&&r(n)>0)return r(n);let i=t.filter(e=>e.stackLevel>0),a=(i.length>0?i:t).reduce((e,t)=>e+r(t),0);return a>0?a:void 0}function ju(e,t){let n;for(let r of e)for(let e of r.metrics.rawMetrics){if(e.type!==t)continue;let r=Tu(e);r!==void 0&&(n=r)}return n}function Mu(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/\.?0+$/,``)}var Nu={bundled:0,dialect:1,user:2},Pu=class{tables=new Map;register(e,t=`bundled`){let n=this.tables.get(e.id);n&&Nu[n.layer]>Nu[t]||this.tables.set(e.id,{table:e,layer:t})}get(e){return this.tables.get(e)?.table}fieldDim(e,t){return this.tables.get(e)?.table.fields[t]?.dimension}lookup(e,t,n){let r=this.tables.get(e)?.table;return r?r.get(t,n)??Gl:Gl}callFunction=(e,t)=>{if(e!==`lookup`)return;let[n,r,i]=t;if(n?.kind!==`string`||i?.kind!==`string`)throw new Jl(`lookup() table and field must be strings`);if(r.kind===`absent`||r.kind===`series`||r.kind===`period`)return Gl;let a=r.kind===`string`?r.value:String(r.value);return this.lookup(n.value,a,i.value)}},Fu=`rest|pause|rest-*`,Y=(e,t,n)=>({id:e,kind:`expr`,expression:t,unit:n}),Iu=[{id:`pace-reps`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`elapsed > 0 and has(reps)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{value:Y(`value`,`reps / convert(elapsed, min)`)}}],output:{nodeId:`value`,emitType:`pace`,unit:`reps/min`}},{id:`pace-speed`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`elapsed > 0 and has(distance)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{value:Y(`value`,`distance / convert(elapsed, s)`)}}],output:{nodeId:`value`,emitType:`pace`,unit:`m/s`}},{id:`pace-runner`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`elapsed > 0 and has(distance)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{value:Y(`value`,`convert(elapsed, min) / convert(distance, km)`)}}],output:{nodeId:`value`,emitType:`pace`,unit:`min/km`}},{id:`power`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`elapsed > 0 and has(reps) and has(resistance)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{value:Y(`value`,`reps * resistance / convert(elapsed, s)`)}}],output:{nodeId:`value`,emitType:`power`,unit:`auto`}},{id:`segment-volume`,kind:`library`,scope:`segment`,when:`has(reps) and has(resistance)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{segmentVolume:Y(`segmentVolume`,`reps * resistance`)}}]},{id:`e1rm`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`has(reps) and has(resistance) and reps > 0 and resistance > 0`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{repFactor:Y(`repFactor`,`reps / 30`,`ratio`),value:Y(`value`,`round(resistance * (1 + repFactor), 1)`)}}],output:{nodeId:`value`,emitType:`calc.e1rm`,key:`calc.e1rm`,unit:`auto`,label:`Estimated 1RM`}},{id:`pct1rm`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`has(reps) and has(resistance) and reps > 0`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{repFactor:Y(`repFactor`,`reps / 30`,`ratio`),value:Y(`value`,`100 / (1 + repFactor)`)}}],output:{nodeId:`value`,emitType:`calc.pct1rm`,key:`calc.pct1rm`,unit:`%`,label:`%1RM Intensity`}},{id:`climb-sends`,kind:`output`,scope:`segment`,fences:[`time`,`log`],when:`has(climbSend)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{value:Y(`value`,`climbSend`)}}],output:{nodeId:`value`,emitType:`calc.sends`,key:`calc.sends`,unit:`count`,label:`Sends`}},{id:`effort-rpe`,kind:`library`,scope:`segment`,when:`has(effortLabel)`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{effortRpe:Y(`effortRpe`,`lookup("rpe-labels", effortLabel, "rpe")`)}}]},{id:`met-minutes-segment`,kind:`library`,scope:`segment`,fences:[`time`,`log`],when:`elapsed > 0`,variants:[{id:`resolved`,priority:100,when:`lookup("effort", effort, "resolvedFrom") != "default"`,origin:`analyzed`,nodes:{metMinutes:Y(`metMinutes`,`lookup("effort", effort, "met") * convert(elapsed, min)`)}},{id:`unresolved`,priority:10,origin:`analyzed-estimated`,nodes:{metMinutes:Y(`metMinutes`,`lookup("effort", effort, "met") * convert(elapsed, min)`),metMinutesEstimated:Y(`metMinutesEstimated`,`1`)}}]},{id:`total-reps`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(sum(reps)) and sum(reps) > 0`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`sum(reps)`)}}],output:{nodeId:`total`,key:`reps`,emitType:`rep`,unit:`reps`}},{id:`total-reps-by-effort`,kind:`output`,scope:`workout`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`sum(reps, without: ${Fu})`)}}],output:{nodeId:`total`,key:`reps`,emitType:`rep`,unit:`reps`,isGrouped:!0,groupBy:[`effort`]}},{id:`total-distance`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(sum(distance)) and sum(distance) > 0`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`sum(distance)`)}}],output:{nodeId:`total`,key:`distance`,emitType:`distance`,unit:`auto`}},{id:`total-volume`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(sum(segmentVolume)) and sum(segmentVolume) > 0`,variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`sum(segmentVolume)`)}}],output:{nodeId:`total`,key:`totalVolume`,emitType:`volume`,unit:`auto`}},{id:`total-volume-by-effort`,kind:`output`,scope:`workout`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`sum(segmentVolume)`),totalSets:Y(`totalSets`,`count(segmentVolume)`)}}],output:{nodeId:`total`,key:`totalVolume`,emitType:`volume`,unit:`auto`,isGrouped:!0,groupBy:[`effort`],publishMetadataNodes:[`totalSets`]}},{id:`met-minutes`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(sum(metMinutes))`,variants:[{id:`estimated`,priority:100,when:`sum(metMinutesEstimated) > 0`,origin:`analyzed-estimated`,nodes:{total:Y(`total`,`round(sum(metMinutes))`)}},{id:`resolved`,priority:10,origin:`analyzed`,nodes:{total:Y(`total`,`round(sum(metMinutes))`)}}],output:{nodeId:`total`,key:`calc.metMinutes`,emitType:`work`,unit:`MET-min`}},{id:`rpeSource`,kind:`library`,scope:`workout`,variants:[{id:`captured`,priority:100,when:`has(sessionRpe)`,origin:`analyzed`,nodes:{rpe:Y(`rpe`,`sessionRpe`)}},{id:`label`,priority:50,when:`has(max(effortRpe))`,origin:`analyzed`,nodes:{rpe:Y(`rpe`,`max(effortRpe)`)}},{id:`default`,priority:10,origin:`analyzed-estimated`,nodes:{rpe:Y(`rpe`,`5`)}}]},{id:`session-load`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(session.duration)`,variants:[{id:`captured-rpe`,priority:100,when:`has(sessionRpe)`,origin:`analyzed`,nodes:Lu()},{id:`label-rpe`,priority:50,when:`has(max(effortRpe))`,origin:`analyzed`,nodes:Lu()},{id:`default-rpe`,priority:10,origin:`analyzed-estimated`,nodes:Lu()}],output:{nodeId:`load`,key:`sessionLoad`,emitType:`load`,unit:`AU`,publishMetadataNodes:[`sRPE`,`durationMinutes`]}},{id:`sharedMet`,kind:`library`,scope:`workout`,variants:[{id:`personalized`,priority:100,when:`has(profile.vo2max)`,origin:`analyzed`,nodes:{metMax:Y(`metMax`,`profile.vo2max / 3.5`)}},{id:`population`,priority:10,origin:`analyzed`,nodes:{metMax:Y(`metMax`,`11.4`)}}]},{id:`tis`,kind:`output`,scope:`workout`,fences:[`time`,`log`],when:`has(sum(metMinutes)) and has(sum(elapsed))`,variants:[{id:`resolved`,priority:100,when:`not (sum(metMinutesEstimated) > 0)`,origin:`analyzed`,nodes:Ru()},{id:`estimated`,priority:10,origin:`analyzed-estimated`,nodes:Ru()}],output:{nodeId:`tis`,key:`tis`,emitType:`tis`,unit:`pts`,publishMetadataNodes:[`metScore`,`rpeScore`,`durationScore`,`disciplineFactor`,`metMax`]}}];function Lu(){return{sRPE:Y(`sRPE`,`rpeSource.rpe`),durationMinutes:Y(`durationMinutes`,`convert(session.duration, min)`),load:Y(`load`,`round(rpeSource.rpe * convert(session.duration, min))`)}}function Ru(){return{elapsedMin:Y(`elapsedMin`,`convert(sum(elapsed), min)`),avgMets:Y(`avgMets`,`sum(metMinutes) / elapsedMin`),metMax:Y(`metMax`,`sharedMet.metMax`),metScore:Y(`metScore`,`min(100, avgMets / metMax * 100)`),rpeScore:Y(`rpeScore`,`rpeSource.rpe * 10`),durationScore:Y(`durationScore`,`elapsedMin / 60 * metScore`,`pts`),disciplineFactor:Y(`disciplineFactor`,`lookup("effort", effort, "disciplineFactor")`),tis:Y(`tis`,`round(0.30 * metScore + 0.35 * rpeScore + 0.20 * durationScore + 0.15 * disciplineFactor, 1)`)}}var zu=()=>({id:`daily`,kind:`wql`,expression:`sum:sessionLoad{} by {day}`}),Bu=[{id:`acwr`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),acute:Y(`acute`,`windowMean(daily, 7d)`),chronic:Y(`chronic`,`windowMean(daily, 28d)`),value:Y(`value`,`acute / chronic`)}}],output:{nodeId:`value`,key:`calc.acwr`,unit:`ratio`,label:`Acute:Chronic Workload Ratio`}},{id:`monotony`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),mean7:Y(`mean7`,`windowMean(daily, 7d)`),sd7:Y(`sd7`,`windowSd(daily, 7d)`),value:Y(`value`,`mean7 / sd7`)}}],output:{nodeId:`value`,key:`calc.monotony`,unit:`ratio`,label:`Training Monotony`}},{id:`strain`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),monotony:Y(`monotony`,`windowMean(daily, 7d) / windowSd(daily, 7d)`,`ratio`),weekly:Y(`weekly`,`windowSum(daily, 7d)`),value:Y(`value`,`monotony * weekly`)}}],output:{nodeId:`value`,key:`calc.strain`,unit:`AU`,label:`Training Strain`}},{id:`ctl`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),value:Y(`value`,`windowEwma(daily, 42d)`)}}],output:{nodeId:`value`,key:`calc.ctl`,unit:`AU`,label:`Chronic Training Load (CTL)`}},{id:`atl`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),value:Y(`value`,`windowEwma(daily, 7d)`)}}],output:{nodeId:`value`,key:`calc.atl`,unit:`AU`,label:`Acute Training Load (ATL)`}},{id:`tsb`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{daily:zu(),ctl:Y(`ctl`,`windowEwma(daily, 42d)`),atl:Y(`atl`,`windowEwma(daily, 7d)`),value:Y(`value`,`ctl - atl`)}}],output:{nodeId:`value`,key:`calc.tsb`,unit:`AU`,label:`Training Stress Balance (TSB)`}},{id:`soreness`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`user`,nodes:{daily:{id:`daily`,kind:`wql`,expression:`avg:soreness{} by {day}`},value:Y(`value`,`daily * (daily / daily)`)}}],output:{nodeId:`value`,key:`calc.soreness`,unit:`rating`,label:`Soreness`}},{id:`sleep`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`user`,nodes:{daily:{id:`daily`,kind:`wql`,expression:`avg:sleep{} by {day}`},value:Y(`value`,`daily * (daily / daily)`)}}],output:{nodeId:`value`,key:`calc.sleep`,unit:`pts`,label:`Sleep (h)`}},{id:`hrv`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`user`,nodes:{daily:{id:`daily`,kind:`wql`,expression:`avg:hrv{} by {day}`},value:Y(`value`,`daily * (daily / daily)`)}}],output:{nodeId:`value`,key:`calc.hrv`,unit:`pts`,label:`HRV (ms)`}},{id:`readiness`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{soreness:{id:`soreness`,kind:`wql`,expression:`avg:soreness{} by {day}`},sleep:{id:`sleep`,kind:`wql`,expression:`avg:sleep{} by {day}`},hrv:{id:`hrv`,kind:`wql`,expression:`avg:hrv{} by {day}`},value:Y(`value`,`((10 - soreness) / 10 * 40 + sleep / 8 * 30 + hrv / 90 * 30) * (soreness / soreness) * (sleep / sleep) * (hrv / hrv)`)}}],output:{nodeId:`value`,key:`calc.readiness`,unit:`pts`,label:`Readiness`}},{id:`mvcBw`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{hang:{id:`hang`,kind:`wql`,expression:`max:hang{} by {day}`},weight:{id:`weight`,kind:`wql`,expression:`avg:weight{} by {day}`},value:Y(`value`,`hang / weight * 100`)}}],output:{nodeId:`value`,key:`calc.mvcBw`,unit:`%`,label:`Max Hang %BW`}},{id:`ef`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{dist:{id:`dist`,kind:`wql`,expression:`sum:totalDistance{discipline:running} by {day}`},elapsed:{id:`elapsed`,kind:`wql`,expression:`sum:elapsed{discipline:running} by {day}`},hr:{id:`hr`,kind:`wql`,expression:`avg:hr{} by {day}`},pace:Y(`pace`,`dist / (elapsed / 1000)`,`pts`),value:Y(`value`,`pace / hr * 100000`,`pts`)}}],output:{nodeId:`value`,key:`calc.ef`,unit:`pts`,label:`Efficiency Factor`}},{id:`adherence`,kind:`output`,scope:`store`,fences:[`time`,`log`],variants:[{id:`default`,priority:10,origin:`analyzed`,nodes:{sessions:{id:`sessions`,kind:`wql`,expression:`count:sessionLoad{} by {day}`},planned:{id:`planned`,kind:`wql`,expression:`avg:planned{} by {day}`},value:Y(`value`,`sessions / planned`)}}],output:{nodeId:`value`,key:`calc.adherence`,unit:`ratio`,label:`Plan Adherence`}}],Vu={easy:3,moderate:5,hard:7,"all-out":10,max:10};function Hu(e){return{id:`effort`,missPolicy:`default-row`,fields:{met:{dimension:q,type:`number`},disciplineFactor:{dimension:q,type:`number`},discipline:{dimension:q,type:`string`},intensityTier:{dimension:q,type:`string`},resolvedFrom:{dimension:q,type:`string`},isEstimated:{dimension:q,type:`number`}},get(t,n){if(!t)switch(n){case`met`:return J(xs.defaultMet);case`disciplineFactor`:return J(1);case`resolvedFrom`:return Kl(`default`);case`isEstimated`:return J(1);default:return}let r=e.resolveEffort(t);switch(n){case`met`:return J(r.met);case`disciplineFactor`:return J(r.disciplineFactor);case`discipline`:return r.discipline?Kl(r.discipline):void 0;case`intensityTier`:return r.intensityTier?Kl(r.intensityTier):void 0;case`resolvedFrom`:return Kl(r.resolvedFrom);case`isEstimated`:return J(+!!r.isEstimated);default:return}}}}function Uu(){return{id:`rpe-labels`,missPolicy:`absent`,fields:{rpe:{dimension:q,type:`number`}},get(e,t){if(t!==`rpe`)return;let n=Vu[e.toLowerCase()];return n===void 0?void 0:J(n)}}}function Wu(e){return{id:`profile`,missPolicy:`absent`,fields:{vo2max:{dimension:q,type:`number`}},get(t,n){if(n===`vo2max`)return e?.vo2max===void 0?void 0:J(e.vo2max)}}}function Gu(){return{id:`disciplines`,missPolicy:`default-row`,fields:{disciplineFactor:{dimension:q,type:`number`}},get(e,t){if(t===`disciplineFactor`)return J(Cs(e)?Ts(e):1)}}}function Ku(e){let t=new Pu;t.register(Hu(e.effortResolver)),t.register(Uu()),t.register(Wu(e.userProfile)),t.register(Gu());let n=new vu(t);for(let e of Iu)n.register(e);for(let t of e.calcs??[])n.register(t);return{lookups:t,registry:n}}function qu(e,t){let n=Ku(t);return new Cu(n.registry,{dialect:e,lookups:n.lookups,userProfile:t.userProfile})}var Ju=new Na([]),Yu=new Na([]),Xu=class{build(e){let t=[],n=[];if(e.analyticsContext?.effortResolver){t.push(new yl(e.analyticsContext.effortResolver));let r=qu(e.dialect,{effortResolver:e.analyticsContext.effortResolver,userProfile:e.userProfile,calcs:e.calcs});t.push(r),n.push(r)}return t.push(...Ju.list().filter(t=>this.isApplicable(t,e))),n.push(...Yu.list().filter(t=>this.isApplicable(t,e))),{realtime:t,summary:n}}isApplicable(e,t){if(e.fenceTypes&&e.fenceTypes.length>0&&!e.fenceTypes.includes(t.dialect))return!1;if(e.requiredMetrics&&e.requiredMetrics.length>0){for(let n of e.requiredMetrics)if(!t.scriptMetricTypes.has(n))return!1}return!0}};function Zu(e,t){let n=e.dialect||`time`,r=new Set;if(e.statements)for(let t of e.statements)for(let e of t.metrics)r.add(e.type);let i=t?.effortResolver;if(!i){let e=new Ns;e.seed(Ms),i=new As(e)}let a={effortResolver:i},o={dialect:n,scriptMetricTypes:r,analyticsContext:a,userProfile:t?.userProfile,calcs:t?.calcs},{realtime:s,summary:c}=new Xu().build(o),l=new vl;for(let e of s)l.addRealtimeProcessor(e);for(let e of c)l.addSummaryProcessor(e);return{engine:l,analyticsContext:a}}function Qu(e,t){return!e.metrics.some(e=>e===t)}function $u(e){let t=[];return e.forEach((e,n)=>{for(let r of e.metrics)if(r.type===G.Choice){let i=r;Qu(e,i)||t.push({statementIndex:n,statementId:e.id,choice:i})}}),t}function ed(e,t,n){let r=t[n]??t[0];r&&(e.metrics.remove(e=>e.type===r.type&&e.origin===`user-plan`),e.metrics.remove(e=>e.type===G.Choice&&e.alternatives===t),e.metrics.add({...r,origin:`user-plan`}))}function td(e){let t=$u(e);for(let n of t){let t=e[n.statementIndex],r=n.choice.alternatives[0]?.type;r&&t.metrics.some(e=>e.type===r&&e.origin===`user-plan`)?t.metrics.remove(e=>e===n.choice):ed(t,n.choice.alternatives,0)}return t.length}var nd=class{compiler;nowProvider;constructor(e,t=Bs){this.compiler=e,this.nowProvider=t}createRuntime(e,t){if(!e.statements||e.statements.length===0)return null;let n=new hs(e.content,e.statements);td(n.statements);let r={stack:new yc,clock:new zs,eventBus:new dl},i=new tc(n,this.compiler,r,t,this.nowProvider),{engine:a,analyticsContext:o}=Zu(e,t?.analyticsOptions);return i.analyticsContext=o,i.setAnalyticsEngine(a),i.do(new _l),i}disposeRuntime(e){e.dispose()}},rd=class{static build(e,t={}){let{includeMetric:n=!0,includeLogic:r=!0,includeIdentity:i=!0,includeAttributes:a=!0,defaultLabel:o=`Block`,format:s=`logic-first`}=t,c=K.from(e.flatMap(e=>K.from(e.metrics).toArray()).filter(e=>e.origin!==`runtime`&&e.type!==G.Hint));if(c.length===0)return o;let l=c.find(e=>e.type===G.Label);if(l)return l.image||l.value?.toString()||o;let u=n?this.getPrimaryMetric(c):void 0,d=r?this.getLogicKeyword(e,c):void 0,f=i?this.getIdentityText(c):void 0,p=a?this.getAttributesText(c):void 0,m=[];return s===`logic-first`?(d&&m.push(d),u&&m.push(u),f&&m.push(f),p&&m.push(p)):s===`metric-first`?(u&&m.push(u),d&&m.push(d),f&&m.push(f),p&&m.push(p)):(f&&m.push(f),u&&m.push(u),d&&m.push(d),p&&m.push(p)),m.length===0?c.filter(e=>!!e.image&&!io.isStructural(e)).map(e=>e.image).join(` `)||o:m.join(` `).trim().replace(/\s+/g,` `)}static getPrimaryMetric(e){let t=e.find(e=>e.type===G.Rounds);if(t&&t.image)return t.image;let n=e.find(e=>e.type===G.Duration);if(n&&n.image)return n.image}static getLogicKeyword(e,t){if(e.some(e=>za(e,Pa.LABEL_AMRAP)))return`AMRAP`;if(e.some(e=>za(e,Pa.LABEL_EMOM)))return`EMOM`;if(e.some(e=>za(e,Pa.LABEL_TABATA)))return`TABATA`;if(e.some(e=>za(e,Pa.LABEL_FOR_TIME)))return`FOR TIME`;let n=[`AMRAP`,`EMOM`,`TABATA`,`FOR TIME`];for(let e of t){let t=(e.image||e.value?.toString()||``).toUpperCase();if(n.includes(t))return t}}static getIdentityText(e){let t=[`AMRAP`,`EMOM`,`TABATA`,`FOR TIME`],n=e.filter(e=>{if(e.type===G.Duration||e.type===G.Rounds||e.type===G.Resistance||e.type===G.Distance||e.type===G.Lap||e.type===G.Group)return!1;let n=(e.image||e.value?.toString()||``).toUpperCase();return!t.includes(n)});if(n.length!==0)return n.map(e=>e.image).join(` `).trim()}static getAttributesText(e){let t=e.filter(e=>e.type===G.Resistance||e.type===G.Distance);if(t.length!==0)return t.map(e=>e.image).join(` `).trim()}},id=class{distribute(e,t){return[e.clone()]}},ad=e=>e[0];function od(e,t){let{statements:n,runtime:r,blockType:i,defaultLabel:a}=t,o=(t.pickStatement??ad)(n),s=t.key??new ba,c=t.context??new lc(r,s.toString(),o.exerciseId||``),l=rd.build(n,{defaultLabel:a});e.setContext(c).setKey(s).setBlockType(i).setLabel(l).setSourceIds(n.map(e=>e.id));let u=t.metricDistributorType??i,d=new id,f=t.filterMetrics,p=n.flatMap(e=>{let t=f?K.from(e.metrics.filter(f)):K.from(e.metrics);return d.distribute(t,u)}).filter(e=>e.length>0);if(e.setFragments(p),t.timer){let n=t.timer,r=n.mode===`reset-interval`?{completesBlock:!1}:void 0;e.asTimer({direction:n.direction,durationMs:n.durationMs,label:n.label,role:n.role??`primary`,addCompletion:n.mode!==`reset-interval`,completionConfig:r,injectRest:n.injectRest,required:n.required,...t.countdownTimerConfig??{}})}if(t.repeater){let n=t.repeater;e.asRepeater({totalRounds:n.totalRounds,startRound:n.startRound??1,addCompletion:n.addCompletion})}return l}var sd=class{priority=90;id=`amrap-logic`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.hasMetric(G.Duration)),r=e.some(e=>e.hasMetric(G.Rounds)),i=e.some(e=>e.metrics.some(e=>(e.type===G.Effort||e.type===G.Action)&&typeof e.value==`string`&&(e.value.toLowerCase()===`rounds`||e.value.toLowerCase()===`amrap`)));return n&&(r||i)}apply(e,t,n){let r=(t.find(e=>e.hasMetric(G.Duration))||t[0]).metrics.find(e=>e.type===G.Duration)?.value||0,i=od(e,{blockType:`AMRAP`,defaultLabel:`AMRAP ${Math.round(r/6e4)} min`,statements:t,runtime:n,timer:{direction:`down`,durationMs:r,label:`AMRAP`,role:`primary`,mode:`complete-block`,injectRest:!1},repeater:{totalRounds:void 0,startRound:1,addCompletion:!1},pickStatement:e=>e.find(e=>e.hasMetric(G.Duration))||e[0]});e.addBehavior(new Rc({mode:`countdown`,label:i})),e.addBehavior(new nl({cues:[{sound:`start-beep`,trigger:`mount`},{sound:`countdown-beep`,trigger:`countdown`,atSeconds:[3,2,1]},{sound:`timer-complete`,trigger:`complete`}]}))}},cd=class{priority=90;id=`interval-logic`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.metrics.some(e=>e.type===G.Duration)),r=e.some(e=>za(e,Pa.REPEATING_INTERVAL)),i=e.some(e=>e.metrics.some(e=>(e.type===G.Action||e.type===G.Effort)&&typeof e.value==`string`&&e.value.toLowerCase()===`emom`));return n&&(r||i)}apply(e,t,n){let r=(t.find(e=>e.metrics.some(e=>e.type===G.Duration))||t[0]).metrics.find(e=>e.type===G.Duration),i=t.flatMap(e=>K.from(e.metrics).toArray()).find(e=>e.type===G.Rounds),a=r?.value||6e4,o=typeof i?.value==`number`?i.value:10,s=od(e,{blockType:`EMOM`,defaultLabel:`EMOM ${o}`,statements:t,runtime:n,timer:{direction:`down`,durationMs:a,label:`Interval`,role:`primary`,mode:`reset-interval`,injectRest:!0},repeater:{totalRounds:o,startRound:1,addCompletion:!0},pickStatement:e=>e.find(e=>e.hasMetric(G.Duration))||e[0],metricDistributorType:`EMOM`});e.addBehavior(new Rc({mode:`countdown`,label:s})),e.addBehavior(new nl({cues:[{sound:`interval-start`,trigger:`mount`},{sound:`countdown-beep`,trigger:`countdown`,atSeconds:[3,2,1]},{sound:`interval-complete`,trigger:`complete`}]}));let c=t.some(e=>e.metrics.some(e=>e.type===G.Resistance)),l=t.some(e=>e.metrics.some(e=>e.type===G.Distance)),u=[...c?[{metricType:G.Resistance,origin:`compiler`}]:[],...l?[{metricType:G.Distance,origin:`compiler`}]:[]];u.length>0&&e.addBehavior(new Ic({promotions:u}))}},ld=class{priority=0;id=`effort-fallback`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.metrics.some(e=>e.type===G.Duration&&e.origin!==`runtime`)),r=e.some(e=>e.metrics.some(e=>e.type===G.Rounds&&e.origin!==`runtime`)),i=e.some(e=>e.children&&e.children.length>0);return!n&&!r&&!i}apply(e,t,n){od(e,{blockType:`effort`,defaultLabel:`Effort`,statements:t,runtime:n,timer:{direction:`up`,role:`secondary`,mode:`reset-interval`},filterMetrics:e=>e.origin!==`runtime`}),e.addBehavior(new Lc({mode:`immediate`,onNext:!0}))}},ud=class{priority=50;id=`generic-group`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.children&&e.children.length>0),r=e.some(e=>e.metrics.some(e=>e.type===G.Duration&&e.origin!==`runtime`)),i=e.some(e=>e.metrics.some(e=>e.type===G.Rounds&&e.origin!==`runtime`));return n&&!r&&!i}apply(e,t,n){if(e.hasTimerBehavior()||e.hasRoundConfig())return;let r=od(e,{blockType:`Group`,defaultLabel:`Group`,statements:t,runtime:n});e.addBehavior(new Rc({mode:`clock`,label:r}));let i=t.some(e=>e.metrics.some(e=>e.type===G.Resistance)),a=t.some(e=>e.metrics.some(e=>e.type===G.Distance)),o=[...i?[{metricType:G.Resistance,origin:`compiler`}]:[],...a?[{metricType:G.Distance,origin:`compiler`}]:[]];o.length>0&&e.addBehavior(new Ic({promotions:o}))}},dd=class{priority=50;id=`generic-loop`;match(e,t){return!e||e.length===0?!1:e.some(e=>e.metrics.some(e=>e.type===G.Rounds))}apply(e,t,n){if(e.hasRoundConfig())return;let r=(t.find(e=>e.metrics.some(e=>e.type===G.Rounds))||t[0]).metrics.find(e=>e.type===G.Rounds);if(!r)return;let i=1,a;typeof r.value==`number`&&(i=r.value);let o=t.flatMap(e=>e.metrics.filter(e=>e.type===G.Rep&&typeof e.value==`number`)).map(e=>e.value);o.length>0&&(a=o,i<=1&&(i=a.length));let s=od(e,{blockType:`Rounds`,defaultLabel:a?a.join(`-`):`${i} Rounds`,statements:t,runtime:n,repeater:{totalRounds:i,startRound:1,addCompletion:!0},pickStatement:e=>e.find(e=>e.metrics.some(e=>e.type===G.Rounds))||e[0],filterMetrics:e=>e.type!==G.Rep});e.addBehavior(new Rc({mode:`clock`,label:s}));let c=t.some(e=>e.metrics.some(e=>e.type===G.Resistance)),l=t.some(e=>e.metrics.some(e=>e.type===G.Distance)),u=[...c?[{metricType:G.Resistance,origin:`compiler`}]:[],...l?[{metricType:G.Distance,origin:`compiler`}]:[]];e.addBehavior(new Ic({repScheme:a,promotions:u})),e.declareExit(`immediate`)}},fd=class{priority=50;id=`generic-timer`;match(e,t){return!e||e.length===0?!1:e.some(e=>e.metrics.some(e=>e.type===G.Duration&&e.origin!==`runtime`))}apply(e,t,n){if(e.hasTimerBehavior())return;let r=(t.find(e=>e.metrics.some(e=>e.type===G.Duration&&e.origin!==`runtime`))||t[0]).metrics.find(e=>e.type===G.Duration&&e.origin!==`runtime`),i=r?.direction||`up`,a=r?.value||void 0,o=t.some(e=>za(e,Pa.REQUIRED_TIMER)),s=t.some(e=>za(e,Pa.INJECT_REST)),c=!!(a&&i===`down`),l=od(e,{blockType:`Timer`,defaultLabel:i===`down`?`Countdown`:`For Time`,statements:t,runtime:n,timer:{direction:i,durationMs:a,label:a?`Countdown`:`For Time`,role:`primary`,mode:`complete-block`,injectRest:s,required:o},pickStatement:e=>e.find(e=>e.metrics.some(e=>e.type===G.Duration&&e.origin!==`runtime`))||e[0]});o&&c?e.addBehavior(new Lc({mode:`immediate`,onNext:!1,onEvents:[`timer:complete`]})):e.addBehavior(new Lc({mode:`immediate`,onNext:!0})),c&&e.addBehavior(new nl({cues:[{sound:`countdown-beep`,trigger:`countdown`,atSeconds:[3,2,1]},{sound:`timer-complete`,trigger:`complete`}]})),e.addBehavior(new Rc({mode:a?`countdown`:`clock`,label:l}))}},pd=class{priority=50;id=`children`;match(e,t){return e&&e.length>0&&e[0].children&&e[0].children.length>0}apply(e,t,n){let r=t[0].children.filter(e=>e.length>0),i=e.hasRoundConfig(),a=e.getBehavior(Pc),o=!!a;i||(o?e.asRepeater({totalRounds:void 0,startRound:1,addCompletion:!1}):e.asRepeater({totalRounds:1,startRound:1,addCompletion:!0}));let s=o||i,c=i?`rounds-remaining`:`timer-active`,l=o&&a?.config.mode===`reset-interval`;e.asContainer({childGroups:r,addLoop:s,loopConfig:s?{condition:c}:void 0,injectRest:l}),e.declareExit(`deferred`)}},md=class{priority=15;id=`report-output`;match(e,t){return e&&e.length>0}apply(e,t,n){e.hasBehavior(el)||e.addBehavior(new el)}},hd=class{priority=20;id=`sound`;match(e,t){return e&&e.length>0}apply(e,t,n){if(!e.hasBehavior(nl)){if(e.getBehavior(Pc)){e.addBehavior(new nl({cues:[{sound:`countdown-beep`,trigger:`countdown`,atSeconds:[3,2,1]},{sound:`timer-complete`,trigger:`complete`}]}));return}e.hasBehavior(kc)&&e.addBehavior(new nl({cues:[{sound:`start-beep`,trigger:`mount`}]}))}}},gd=class e{now;name=`next`;timestamp;_data;static _counter=0;constructor(t,n=Bs){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this._data=t}get data(){return this._data}set data(e){this._data=e}toJSON(){return{name:this.name,timestamp:this.timestamp,data:this._data}}},_d=new Na([new sd,new cd,new fd,new dd,new ud,new hd,new md,new pd,new ld]);_d.list();function vd(e){let t=new ul;for(let n of e??_d.list())t.registerStrategy(n);return t}var yd=class{id;onStackSnapshotCallback;onOutputCallback;constructor(e){this.id=e?.id??`local`,this.onStackSnapshotCallback=e?.onStackSnapshot,this.onOutputCallback=e?.onOutput}onStackSnapshot(e){this.onStackSnapshotCallback?.(e)}onOutput(e){this.onOutputCallback?.(e)}dispose(){this.onStackSnapshotCallback=void 0,this.onOutputCallback=void 0}},bd=class{runtime;subscriptions=new Map;stackUnsub=null;outputUnsub=null;disposed=!1;constructor(e){this.runtime=e,this.stackUnsub=this.runtime.subscribeToStack(e=>{for(let t of this.subscriptions.values())try{t.onStackSnapshot(e)}catch(e){console.error(`[SubscriptionManager] Error in subscription '${t.id}' onStackSnapshot:`,e)}}),this.outputUnsub=this.runtime.subscribeToOutput(e=>{for(let t of this.subscriptions.values())try{t.onOutput(e)}catch(e){console.error(`[SubscriptionManager] Error in subscription '${t.id}' onOutput:`,e)}})}add(e){if(this.disposed){console.warn(`[SubscriptionManager] Cannot add subscription after dispose`);return}let t=this.subscriptions.get(e.id);t&&t.dispose(),this.subscriptions.set(e.id,e);try{e.onStackSnapshot({type:`initial`,blocks:[...this.runtime.stack.blocks],depth:this.runtime.stack.count,clockTime:this.runtime.clock.currentDate});let t=this.runtime.getOutputStatements();for(let n of t)e.onOutput(n)}catch(t){console.error(`[SubscriptionManager] Error catching up subscription '${e.id}':`,t)}}remove(e){let t=this.subscriptions.get(e);return t?(t.dispose(),this.subscriptions.delete(e),!0):!1}has(e){return this.subscriptions.has(e)}get count(){return this.subscriptions.size}dispose(){if(!this.disposed){this.disposed=!0,this.stackUnsub?.(),this.stackUnsub=null,this.outputUnsub?.(),this.outputUnsub=null;for(let e of this.subscriptions.values())try{e.dispose()}catch(t){console.error(`[SubscriptionManager] Error disposing subscription '${e.id}':`,t)}this.subscriptions.clear()}}},xd=/^(segment|workout|store)\b/;function Sd(e,t){let n=[],r=[],i=t?.scope,a=t?.fences,o;for(let s of e.split(/\r?\n/)){let e=s.trim();if(!e||e.startsWith(`#`))continue;let c=xd.exec(e);if(c&&/^(on\s|when\s|:)/.test(e.slice(c[0].length).trim())){i=c[1];let t=Cd(e.slice(c[0].length).trim());a=t.fences,o=t.when;continue}n.push(Pd(e,i??t?.scope??`segment`,a,o,r))}return{defs:n,warnings:r}}function Cd(e){let t=e.replace(/^\s*:/,``).trim(),n,r=/^on\s*\[([^\]]*)\]/.exec(t);r&&(n=r[1].split(`,`).map(e=>e.trim()).filter(Boolean),t=t.slice(r[0].length).trim());let i,a=/^when\s+([\s\S]+)$/.exec(t);return a&&(i=a[1].replace(/:\s*$/,``).trim()),{fences:n,when:i}}function wd(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `){n++;continue}if(r===`"`){let r=n+1;for(;r<e.length&&e[r]!==`"`;)r++;t.push({pos:n,word:e.slice(n+1,r),isStr:!0}),n=r<e.length?r+1:r;continue}let i=e.slice(n,n+2);if(i===`->`||i===`==`||i===`!=`||i===`<=`||i===`>=`){t.push({pos:n,op:i}),n+=2;continue}if(`(),[]{}|=<:`.includes(r)){t.push({pos:n,op:r}),n++;continue}if(/[0-9A-Za-z_.]/.test(r)){let r=n+1;for(;r<e.length&&/[0-9A-Za-z_.]/.test(e[r]);)r++;t.push({pos:n,word:e.slice(n,r)}),n=r;continue}n++}return t}function Td(e,t){let n=[],r=0,i=!1;for(let a=0;a<e.length;a++){let o=e[a];if(o===`"`){i=!i;continue}i||(o===`(`||o===`[`||o===`{`?r++:o===`)`||o===`]`||o===`}`?r--:r===0&&e.startsWith(t,a)&&(n.push(a),a+=t.length-1))}return n}function Ed(e,t){let n=wd(e),r=[],i=0;for(let e of n)e.op===`(`?i++:e.op===`)`?i--:i===0&&e.word&&t.includes(e.word)&&r.push(e.pos);return r}function Dd(e){let t=Td(e,`|`),n=Ed(e,[`where`]).find(e=>!t.length||e>t[t.length-1]),r=n??e.length,i=e.slice(0,t.length?t[0]:r).trim(),a=[];for(let n=0;n<t.length;n++){let i=t[n]+1,o=n+1<t.length?t[n+1]:r;a.push(e.slice(i,o).trim())}return{primary:i,variants:a,where:n===void 0?void 0:e.slice(n+5).trim()}}var Od=[`when`,`key`,`label`,`emit`,`meta`,`estimated`];function kd(e){let t=Td(e,`->`),n=Ed(e,Od),r=e.length;t.length&&t[0]<r&&(r=t[0]);for(let e of n)e<r&&(r=e);let i=e.slice(0,r).trim(),a=e.slice(r).trim(),o,s={};if(a.startsWith(`->`)){let e=a.slice(2).trim(),t=/(?:^|\s)(when|key|label|emit|meta|estimated)\b/.exec(e),n=t?t.index+ +(t[0][0]===` `):e.length;o=e.slice(0,n).trim()||void 0,a=e.slice(n).trim()}for(;a=a.trim(),a;){let e=/^(when|key|label|emit|meta|estimated)\b([\s\S]*)$/.exec(a);if(!e)break;let t=e[1],n=e[2].trim(),r=/^(when|key|label|emit|meta|estimated)\b/.exec(n);s[t]=(r?n.slice(0,r.index):n).trim(),a=n.slice(r?r.index:n.length)}return{expr:i,unit:o,clauses:s}}function Ad(e){let t=[],n=0,r=0,i=!1;for(let a=0;a<e.length;a++){let o=e[a];if(o===`"`){i=!i;continue}if(!i){if(o===`(`||o===`[`||o===`{`)r++;else if(o===`)`||o===`]`||o===`}`)r--;else if(r===0&&o===`,`){t.push(e.slice(n,a)),n=a+1;continue}r===0&&e.startsWith(`where`,a)&&!/[A-Za-z0-9_.]/.test(e[a-1]??``)&&!/[A-Za-z0-9_.]/.test(e[a+5]??``)&&(t.push(e.slice(n,a)),n=a+5,a+=4)}}return t.push(e.slice(n)),t.map(e=>e.trim()).filter(Boolean)}function jd(e){let t=[];for(let n of Ad(e)){let e=Td(n,`->`),r=n,i;e.length&&(r=n.slice(0,e[0]).trim(),i=n.slice(e[0]+2).trim()||void 0);let a=wd(r).find(e=>e.op===`=`);if(!a)throw new du(`Invalid where binding: ${n}`,0);t.push({name:r.slice(0,a.pos).trim(),expr:r.slice(a.pos+1).trim(),unit:i})}return t}function Md(e,t){let n=Ed(e,[`when`])[0],r=e,i;n!==void 0&&(i=e.slice(n+4).trim(),r=e.slice(0,n).trim());let a=/\bestimated\b/.test(r),o=r.replace(/\bestimated\b/g,``).trim();if(!o)return{when:i,estimated:a,expr:t};let{expr:s,unit:c}=kd(o);return{expr:s,unit:c,when:i,estimated:a}}function Nd(e,t,n,r,i,a,o){let s={};s.value={id:`value`,kind:`expr`,expression:r,...i?{unit:i}:{}};for(let e of a)s[e.name]={id:e.name,kind:`expr`,expression:e.expr,...e.unit?{unit:e.unit}:{}};let c={id:e,priority:t,origin:n,nodes:s};return o&&(c.when=o),c}function Pd(e,t,n,r,i){let a=/\(library\)/.exec(e),o=!!a,s=o?e.slice(0,a.index)+` `+e.slice(a.index+a[0].length):e,c=wd(s).find(e=>e.op===`=`);if(!c)throw new du(`Missing '=' in calc line: ${e}`,0);let l=s.slice(0,c.pos).trim();if(!l)throw new du(`Missing calc name`,0);let{primary:u,variants:d,where:f}=Dd(s.slice(c.pos+1).trim()),{expr:p,unit:m,clauses:h}=kd(u),g=f?jd(f):[];_u(p);for(let e of g)_u(e.expr);h.when&&_u(h.when);let _=h.when,v=d.length>0,y=[],b=h.estimated===void 0?`analyzed`:`analyzed-estimated`,x=b===`analyzed-estimated`?10:100,S=v?_:void 0;y.push(Nd(`default`,x,b,p,m,g,S??void 0)),d.forEach((e,t)=>{let n=Md(e,p),r=n.estimated?`est-${t+1}`:`alt-${t+1}`,i=t===0?50:10;y.push(Nd(r,i,n.estimated?`analyzed-estimated`:`analyzed`,n.expr??p,n.unit??(t===0?m:void 0),g,n.when))});let C;if(!o){if(C={nodeId:`value`,...m?{unit:m}:{}},h.key){let e=Fd(h.key);C.key=e.key,e.grouped&&(C.isGrouped=!0,C.groupBy=e.groupBy)}h.label&&(C.label=h.label.replace(/^"|"$/g,``)),h.emit&&(C.emitType=h.emit),h.meta&&(C.publishMetadataNodes=h.meta.split(`,`).map(e=>e.trim()).filter(Boolean))}let w=v?r:_??r,T={id:l,kind:o?`library`:`output`,scope:t,variants:y,...n&&n.length?{fences:n}:{},...w?{when:w}:{}};return C&&(T.output=C),T}function Fd(e){let t=/by\s*\{([^}]*)\}/.exec(e),n=e.includes(`grouped`)||!!t,r=t?t[1].split(`,`).map(e=>e.trim()).filter(Boolean):void 0;return{key:e.split(/\s+/).find(e=>e!==`grouped`&&!/^by$/.test(e)&&!e.startsWith(`{`)&&!e.startsWith(`by`))??e,grouped:n,groupBy:r}}function Id(e){let t=e.output?.nodeId;return Array.isArray(t)?t[0]:t}function Ld(e){let t=e.metrics instanceof K?e.metrics.toArray():Array.isArray(e.metrics)?e.metrics:typeof e.metrics.toArray==`function`?e.metrics.toArray():[],n=Ra(e);return{id:e.id,line:e.line??e.statement?.line,text:e.text??e.statement?.text,dialect:e.dialect??e.statement?.dialect,outputType:e.outputType,timeSpan:e.timeSpan?{started:e.timeSpan.started,ended:e.timeSpan.ended}:void 0,metrics:t,hints:n.length>0?n:void 0,sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,parent:e.parent,sourceStatementId:e.sourceStatementId,completionReason:e.completionReason}}var Rd=class e{now;name=`tick`;timestamp;data;static _counter=0;constructor(t,n=Bs){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this.data=t}},zd=20,Bd=e=>{let[t,n]=(0,V.useState)(`idle`),[r,i]=(0,V.useState)(0),[a,o]=(0,V.useState)(0),[s,c]=(0,V.useState)(null),l=(0,V.useRef)(null),u=(0,V.useRef)(null),d=(0,V.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),n(`idle`)},[]),f=(0,V.useCallback)(()=>{if(e)try{let t=new Rd(void 0,e.nowProvider);e.handle(t),o(e=>e+1)}catch{d(),n(`error`)}},[e,d]);(0,V.useEffect)(()=>{if(e)return e.subscribeToStack(e=>{e.blocks.length===0&&t!==`completed`&&(l.current&&=(clearInterval(l.current),null),n(`completed`))})},[e,t]),(0,V.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]);let p=(0,V.useCallback)(()=>{if(!e){console.warn(`useRuntimeExecution: Cannot start execution without a runtime`);return}if(t===`running`){console.warn(`useRuntimeExecution: Runtime is already running`);return}t===`paused`&&e.handle({name:`timer:resume`,timestamp:new Date,data:{}}),n(`running`);let i=e?.nowProvider?.nowMs()??Bs.nowMs();u.current=i-r,r===0&&c(i),l.current=setInterval(f,zd)},[e,t,r,f]),m=(0,V.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),e&&e.handle({name:`timer:pause`,timestamp:new Date,data:{}}),n(`paused`)},[e]),h=(0,V.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),i(0),o(0),n(`idle`),c(null),u.current=null},[e]),g=(0,V.useCallback)(()=>{!e||t===`running`||(n(`paused`),f())},[e,t,f]);return(0,V.useEffect)(()=>{if(t!==`running`||!u.current)return;let n=setInterval(()=>{i((e?.nowProvider?.nowMs()??Bs.nowMs())-u.current)},100);return()=>clearInterval(n)},[t,e?.nowProvider]),(0,V.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]),(0,V.useEffect)(()=>{h()},[e,h]),(0,V.useMemo)(()=>({status:t,elapsedTime:r,stepCount:a,startTime:s,start:p,pause:m,stop:d,reset:h,step:g}),[t,r,a,s,p,m,d,h,g])},Vd=(e,t)=>!e||!Array.isArray(e)?0:e.reduce((e,n)=>{if(`started`in n){let r=n.started,i=n.ended??t;return e+Math.max(0,i-r)}let r=n.start instanceof Date?n.start.getTime():n.start||0,i=n.stop?n.stop instanceof Date?n.stop.getTime():n.stop:t;return e+Math.max(0,i-r)},0);function Hd(e,t){let n=t,r=()=>{let t=e?.getMemoryByTag(n)[0];if(t)return n===`round`?t.metrics[0]:t.metrics[0]?.value},[i,a]=(0,V.useState)(r);return(0,V.useEffect)(()=>{if(!e){a(void 0);return}a(r());let t=e.getMemoryByTag(n)[0];if(t)return t.subscribe(e=>{a(n===`round`?e[0]:e[0]?.value)})},[e,t]),i}function Ud(e){return Hd(e,`round`)}function Wd(e){return Hd(e,`display`)}function Gd(e){let t=Ud(e),n=Wd(e);return(0,V.useMemo)(()=>{if(!t)return null;let e=n?.roundDisplay??(t.total===void 0?`Round ${t.current}`:`Round ${t.current} of ${t.total}`),r=t.total===void 0?void 0:Math.min(1,(t.current-1)/t.total);return{current:t.current,total:t.total,label:e,progress:r}},[t,n?.roundDisplay])}var Kd=(0,V.createContext)(void 0),qd=({runtime:e,children:t})=>(0,H.jsx)(Kd.Provider,{value:e,children:t});function Jd(){let e=(0,V.useContext)(Kd);if(!e)throw Error(`useScriptRuntime must be used within ScriptRuntimeProvider`);return e}function Yd(e){let t=Jd(),n=e===void 0?t:e,[r,i]=(0,V.useState)(()=>n?.getOutputStatements?.()??[]);return(0,V.useEffect)(()=>{if(!n){i([]);return}return i(n.getOutputStatements()),n.subscribeToOutput?.(()=>{i(n.getOutputStatements())})},[n]),(0,V.useMemo)(()=>{let e=new Map,t=new Map,n=[],i=[];for(let a of r){e.set(a.id,a);let r=t.get(a.sourceBlockKey)??[];switch(r.push(a),t.set(a.sourceBlockKey,r),a.outputType){case`segment`:n.push(a);break;case`metric`:i.push(a)}}let a=n.filter(e=>e.completionReason!==void 0);return{outputs:r,byId:e,byBlockKey:t,segments:n,completions:a,metrics:i}},[r])}function Xd(e){let t=Jd(),n=e===void 0?t:e,[r,i]=(0,V.useState)(()=>n?.getLiveAnalytics?.()??[]);return(0,V.useEffect)(()=>{if(!n){i([]);return}return i(n.getLiveAnalytics?.()??[]),n.subscribeToOutput?.(()=>{i(n.getLiveAnalytics?.()??[])})},[n]),r}function Zd(){let e=Jd(),[t,n]=(0,V.useState)({type:`initial`,blocks:e.stack.blocks,depth:e.stack.count,clockTime:e.clock.currentDate});return(0,V.useEffect)(()=>e.subscribeToStack(e=>{n(e)}),[e]),t}function Qd(){return Zd().blocks}function $d(){let e=Qd(),[t,n]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=[];for(let r of e){let e=r.getMemoryByTag(`metric:next`);for(let r of e){let e=r.subscribe(()=>{n(e=>e+1)});t.push(e)}}return()=>{t.forEach(e=>e())}},[e]),(0,V.useMemo)(()=>{for(let t of e){let e=t.getMemoryByTag(`metric:next`);if(e.length===0)continue;let n=K.empty(t.key.toString());for(let t of e)n.merge(t.metrics);if(n.length>0)return{metrics:n,block:t}}return null},[e,t])}function ef(){let e=Qd(),[t,n]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=[];for(let r of e){let e=r.getMemoryByTag(`time`)[0];if(e){let r=e.subscribe(()=>{n(e=>e+1)});t.push(r)}}return()=>{t.forEach(e=>e())}},[e]),(0,V.useMemo)(()=>{let t=[];for(let n of e){let e=n.getMemoryByTag(`time`)[0];if(!e)continue;let r=e.metrics[0]?.value;r&&t.push({block:n,timer:r,isPinned:r.role===`primary`})}return t},[e,t])}function tf(){let e=ef();return(0,V.useMemo)(()=>{if(e.length===0)return;let t=e[0];return t.block.blockType===`Rest`?t:[...e].reverse().find(e=>e.isPinned)||t},[e])}function nf(){let e=ef(),t=tf();return(0,V.useMemo)(()=>t?e.filter(e=>e.block!==t.block):[],[e,t])}function rf(){let e=Qd(),[t,n]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=[];for(let r of e){let e=r.getMemoryByTag(`controls`);for(let r of e){let e=r.subscribe(()=>{n(e=>e+1)});t.push(e)}}return()=>{t.forEach(e=>e())}},[e]),(0,V.useMemo)(()=>{let t=[],n=[];for(let r=0;r<e.length;r++){let i=e[r].getMemoryByTag(`controls`);if(i.length===0)continue;let a=i[0].metrics.map(e=>e.value).filter(Boolean),o=r===e.length-1;for(let e of a)e.isPinned?t.push(e):o&&n.push(e)}let r=new Set,i=[];for(let e of t)r.has(e.id)||(r.add(e.id),i.push(e));for(let e of n)r.has(e.id)||(r.add(e.id),i.push(e));return i},[e,t])}function af(){let e=Qd(),[t,n]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=[];for(let r of e){let e=r.getMemoryByTag(`metric:display`);for(let r of e){let e=r.subscribe(()=>{n(e=>e+1)});t.push(e)}}return()=>{t.forEach(e=>e())}},[e]),(0,V.useMemo)(()=>{if(e.length===0)return;let t=[],n=[...e].reverse();return n.forEach((e,r)=>{if(e.blockType===`Root`&&!e.label)return;let i=e.getMemoryByTag(`metric:display`),a=i.map(e=>e.metrics);if(a.length===0&&!e.label)return;let o=r===n.length-1,s=i.length>1?i.map(e=>e.metrics):void 0;t.push({block:e,displayRows:a,label:e.label,depth:r,isLeaf:o,metricGroups:s})}),t.length>0?t:void 0},[e,t])}function of(e){let t=Jd(),n=(0,V.useMemo)(()=>t.stack.blocks.find(t=>t.key.toString()===e),[t,e]),[r,i]=(0,V.useState)(()=>n?.getMemoryByTag(`time`)[0]?.metrics[0]?.value);(0,V.useEffect)(()=>t.stack.subscribe(()=>{let n=t.stack.blocks.find(t=>t.key.toString()===e);if(n){let e=n.getMemoryByTag(`time`)[0];i(e?.metrics[0]?.value)}else i(void 0)}),[t,e]),(0,V.useEffect)(()=>{if(!n){i(void 0);return}let e=n.getMemoryByTag(`time`)[0];if(i(e?.metrics[0]?.value),e)return e.subscribe(e=>{i(e[0]?.value)})},[n]);let a=(0,V.useMemo)(()=>r?.spans??[],[r]),o=a.length>0&&a[a.length-1].ended===void 0,[s,c]=(0,V.useState)(bc()),l=(0,V.useMemo)(()=>a.length===0?0:Vd(a,s),[a,s]);return(0,V.useEffect)(()=>{if(!o)return;let e,t=()=>{c(bc()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[o]),{elapsed:l,isRunning:o,timeSpans:a}}var sf=[`reps`,`distance`,`resistance`,`elapsed`,`power`,`pace`],cf=[`totalVolume`,`totalDistance`,`tis`,`sessionLoad`],lf=[`sum`,`avg`,`min`,`max`,`count`,`last`,`delta`],uf=[`domain`,`format`,`equipment`,`quality`,`intent`],df=[...uf,`effort`,`discipline`,`intensity`,`grade`,`note`,`page`,`origin`,`grain`,`metric`,`block`,`result`,`tags`],ff=[`type`,`text`,`has`,`source`,`catalog`],pf=[`effort`,`discipline`,`intensity`,`origin`,`text`],mf=[`day`,`week`,`session`,`round`],hf=[`calc.metMinutes`,`calc.acwr`,`calc.monotony`,`calc.strain`,`calc.e1rm`,`calc.ctl`,`calc.atl`,`calc.tsb`,`calc.soreness`,`calc.sleep`,`calc.hrv`,`calc.readiness`,`calc.mvcBw`,`calc.ef`,`calc.adherence`,`calc.pct1rm`,`calc.sends`],gf=[`low`,`moderate`,`high`],_f=[`summary`,`event`],vf=[`note`,`block`,`effort`,`session`,`segment`,`event`],yf=[`journal`,`feeds`,`guides`,`playground`,`dashboards`,`efforts`],bf=[`note`,`block`,`effort`,`session`,`segment`,`event`,`journal`,`feed`,`feeds`,`catalog`,`catalogs`,`playground`,`dashboard`],xf={journal:`journal`,feed:`feeds`,feeds:`feeds`,catalog:`feeds`,catalogs:`feeds`,playground:`playground`},Sf={dashboard:`dashboard`},Cf=[],wf=lf,Tf=[`timeseries`,`bar`,`table`,`donut`,`toplist`,`value`],Ef=[`@session`,`@today`],Df=Sa;[...df];var Of=[`2w`,`4w`],kf=[`kg`,`lb`],Af=[`date`,`day`,`week`,`month`,`year`,`discipline`,`origin`,`source`,`kind`,`type`,`tag`],jf={time:!0,groupby:!0,rollup:!0,unit:!0,where:!0,agg:!0},Mf=df.filter(e=>e!==`metric`),Nf=df.filter(e=>e!==`tags`),Pf=new Set([...Mf.map(e=>e===`tags`?`tag`:e),`time`,`groupby`,`rollup`,`unit`,`where`,`agg`,`metric`]),Ff={note:new Set([`text`,`catalog`,`tag`,`effort`,...uf,`type`,`page`,`source`,`note`,`time`,`groupby`,`where`]),block:new Set([`text`,`catalog`,`tag`,`effort`,`type`,`source`,`note`,`time`,`groupby`,`where`]),effort:new Set([...pf,`groupby`]),session:new Set([`result`,`block`,`note`,`plane`,`time`,`groupby`]),segment:new Set([...Nf,`time`,`groupby`,`unit`]),event:new Set([...Nf,`time`,`groupby`,`unit`])},If=new Set,Lf=df,Rf=Object.fromEntries(Object.entries(Ff).map(([e,t])=>[e,[...t].filter(e=>!jf[e]).map(e=>e===`tag`?`tags`:e)])),zf=[`day`,`week`,`session`,`round`,...df],Bf=[`date`,`effort`,`discipline`,...sf,...cf,...hf];function Vf(e,t){return t===`aggregate`?Pf:Ff[e]??If}function Hf(e,t){return t===`aggregate`?Lf:Rf[e]??[]}function Uf(e,t){return t===`aggregate`?zf:e===`segment`||e===`event`?Bf:Af}function Wf(e,t,n){let r=n===`tag`?`tags`:n;return t===`aggregate`||e===`segment`||e===`event`?!ff.includes(r)&&r!==`plane`&&(t!==`find`||r!==`tags`):Hf(e,t).includes(r)}var Gf=Ai.deserialize({version:14,states:"+^OVQPOOOOQO'#Cb'#CbObQPO'#C`OgQPO'#C`OlQPO'#ClOqQQO'#C_OOQO'#C_'#C_O!SQQO'#CnQOQPOOOOQO,58z,58zO!bQPO,58zOOQO,59W,59WO!gQPO'#CdOOQO,58y,58yOVQPO,58xO!rQPO'#CoO!wQPO'#CrOOQO,59Y,59YO!|QPO,59YO#UQQO'#CcOOQO1G.f1G.fOOQO'#Cg'#CgO#jQPO'#CeO#oQPO'#CeOOQO,59O,59OO#tQPO,59OO#|QPO'#C_O$XQPO1G.dO$aQPO,59ZO$iQQO,59^OOQO1G.t1G.tO$nQPO'#CuO$sQQO,58}O%XQPO,59PO%aQPO,59PO%fQPO'#CxO%nQPO1G.jOOQO1G.j1G.jOVQPO'#CyO%vQPO7+$OOOQO'#Cq'#CqOOQO1G.u1G.uO&OQPO1G.uO&WQPO1G.xOOQO,59a,59aOOQO-E6s-E6sO&]QPO'#CiO&qQPO'#CiO'PQPO'#ChOOQO1G.k1G.kO%XQPO1G.kOOQO,59d,59dOOQO-E6v-E6vOOQO7+$U7+$UO'[QPO'#CcOOQO,59e,59eOOQO-E6w-E6wO'jQPO'#CzO'oQPO7+$aOOQO7+$a7+$aO'wQPO7+$dO'|QPO'#CvO(RQPO,59TOOQO,59T,59TO%XQPO'#CwO(gQPO,59SOOQO7+$V7+$VO(rQPO,58}OOQO,59f,59fOOQO-E6x-E6xOOQO<<G{<<G{OOQO<<HO<<HOOOQO,59b,59bOOQO-E6t-E6tOOQO1G.o1G.oOOQO,59c,59cOOQO-E6u-E6uO)QQPO,58zO)VQPO'#C`",stateData:")[~OqOS~OTPOaSOrQO~OTXO~OrYO~OTZO~Ot[OdRXgRXoRXuRX~Od_Og`Ou^OobX~OTcO~OTeOYgOwhO~OtlO~OxmO~Og`Ooba~OsoOdVXgVXoVXtVXuVX~OrqO~OTeO~OvsOwuO~Ot[OoRXuRX~OuvOoQi~OTxOwyO~Oh{O~OT|O~OsoOdVagVaoVatVauVa~OT!OO_!PO~Or!SO~OTeOYgO~OvsOw!VO~OuvOoQq~Ov!ZOw!]O~OT!^O~O^!aOr!_Os!_Ou]Xv]Xw]X~O^!aOu]Xv]Xw]X~Ou!bOv[Xw[X~OsoOoVXtVXuVX~OTxO~Ov!ZOw!hO~Oy!iO~OT!jO~O^!lOr!_Os!_Ou]av]aw]a~Ou!bOv[aw[a~OsoOoVatVauVa~OT!WO~Or!oO~O",goto:"$^oPPps|P!T![!`!dP!j!q!wPP#OPp#TP#W#^PP#d#n#t#z$Q$WRWOQVOQk^R!XvQTOTj^vQROT!p^vTdY!oT]TjQi[R!TsSf[sRrgQ!RqR!d!SS!Qq!SR!m!bVUO^vRbVQzlR!f!ZQaVRnbQpcS}p!eR!e!WQ!`!OR!k!`Q!c!QR!n!cQtiR!UtQwkR!YwQ![zR!g![",nodeNames:`⚠ Query Pipeline Stage Head Word Aggregator Metric Filters Filter Negate TagKey TagValue Value Star Quoted DatasetReference At Single GroupBy By Dimension Rollup RollupDot Int`,maxTerm:41,skippedNodes:[0],repeatNodeCount:6,tokenData:"'i~RgXY!jYZ!j]^!jpq!jqr!{rs#Qxy#oyz#tz{#y|}$O}!O$T!O!P$i!Q![%f![!]%|!b!c&R!c!}$T#R#S$T#T#U$T#U#V&W#V#o$T#o#p'Y#p#q'_#q#r'd~!oSq~XY!jYZ!j]^!jpq!j~#QOY~~#TTOr#Qrs#ds;'S#Q;'S;=`#i<%lO#Q~#iO_~~#lP;=`<%l#Q~#tOx~~#yOy~~$OO^~~$TOv~P$YTTP}!O$T!Q![$T!c!}$T#R#S$T#T#o$T~$nPs~#f#g$q~$tP#c#d$w~$zP#`#a$}~%QP#`#a%T~%WP#i#j%Z~%^P#d#e%a~%fOg~R%mThQTP}!O$T!Q![%f!c!}$T#R#S$T#T#o$T~&ROr~~&WOa~R&]VTP}!O$T!Q![$T!c!}$T#R#S$T#T#m$T#m#n&r#n#o$TR&yTdQTP}!O$T!Q![$T!c!}$T#R#S$T#T#o$T~'_Ot~~'dOu~~'iOw~",tokenizers:[0,1],topRules:{Query:[0,1]},tokenPrec:0});function Kf(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r===`{`)t++;else if(r===`}`)t=Math.max(0,t-1);else if(t===0&&r===`w`&&e.slice(n,n+5)===`where`&&(n===0||/\s/.test(e[n-1]))&&(n+5>=e.length||/\s/.test(e[n+5])))return{primary:e.slice(0,n).trim(),where:e.slice(n+5).trim()}}return{primary:e.trim()}}var qf=/\s*=>\s*@?([a-zA-Z0-9_-]+)\s*$/,Jf=/^@([a-zA-Z0-9_-]+)\s*(?:\||=>)\s*/,Yf=/\s+(?:in|from)\s+@([a-zA-Z0-9_-]+)\s*$/i,Xf=/\s+in\s+([a-zA-Z0-9_-]+)\s*$/,Zf=/\.rollup\((\d+)?([a-zA-Z]*)\)\s*$/,Qf=/\s+by\s+\{([^}]*)\}\s*$/,$f=/\s+last\s+(\d+)([dw])\s*$/i,ep=/\s+from\s+(\d{4}-\d{2}-\d{2})(?:\s+to\s+(\d{4}-\d{2}-\d{2}))?\s*$/i;function tp(e){let{primary:t,where:n}=Kf(e),r=t.trim(),i,a,o,s,c,l,u,d=[],f=r.match(Jf);f&&(a=`@`+f[1],r=r.slice(f[0].length).trim());let p=r.startsWith(`find:`),m=/^rows(?=[:{]|\s|$)/.test(r),h=e=>{let t=[];for(let n=e.exec(r);n;n=e.exec(r))t.unshift(n),r=r.slice(0,n.index).trim();return t},g=(e,t)=>{t.length>1&&d.push(`Duplicate '${e}' clause: '${t[0][0].trim()}' conflicts with '${t[t.length-1][0].trim()}'`)},_=h(qf);g(`=>`,_),_.length&&(i=`@`+_[_.length-1][1]);let v=h(ep),y=h($f);{let e=[...v.map(e=>({kind:`range`,start:e[1],end:e[2],raw:e[0].trim(),at:e.index})),...y.map(e=>({kind:`relative`,size:parseInt(e[1],10),unit:e[2].toLowerCase(),raw:e[0].trim(),at:e.index}))].sort((e,t)=>e.at-t.at);if(e.length>1&&d.push(`Duplicate 'window' clause: '${e[0].raw}' conflicts with '${e[e.length-1].raw}'`),e.length===1){let t=e[0];l=t.kind===`range`?{kind:`range`,start:t.start,end:t.end,raw:t.raw}:{kind:`relative`,size:t.size,unit:t.unit,raw:t.raw}}}let b=h(Xf);if(g(p||m?`scope`:`display-unit`,b),b.length){let e=b[b.length-1][1];e===`kg`||e===`lb`?o=e:p||m?u=e:o=e}let x=h(Zf);if(g(`.rollup`,x),x.length){let e=x[x.length-1];s={size:e[1]?parseInt(e[1],10):1,unit:e[2]||``,raw:e[1]+e[2]}}let S=h(Qf);g(`by`,S),S.length&&(c=S[S.length-1][1].split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean));let C=h(Yf);return C.length&&(a=`@`+C[C.length-1][1]),{where:n,storedAs:i,sourceRef:a,displayUnit:o,rollup:s,groupBy:c,window:l,legacyScope:u,conflicts:d.length?d:void 0,primaryText:np(r)}}function np(e){let t=e.indexOf(`{`),n=t===-1?-1:e.lastIndexOf(`}`);if(t===-1||n<=t)return e;let r=e.slice(t+1,n);if(!r.includes(`,`))return e;let i=[],a=``,o=!1;for(let e of r)e===`"`&&(o=!o),e===`,`&&!o?(i.push(a),a=``):a+=e;i.push(a);let s=[];for(let e=0;e<i.length;e++){let t=i[e];for(;e+1<i.length;){let n=i[e+1].trim();if(n&&!n.includes(`:`)&&!n.includes(`"`))t=`${t}|${n}`,e++;else break}s.push(t)}return`${e.slice(0,t+1)}${s.join(`,`)}${e.slice(n)}`}function rp(e){let t={},n=e.split(`|`).map(e=>e.trim()).filter(Boolean);for(let e of n){let n=e.toLowerCase();if(n.startsWith(`select`))t.select=e.slice(6).trim().split(`,`).map(e=>{let t=/^([\w-]+)(?:\s+in\s+([\w/%]+))?$/i.exec(e.trim());return t?{col:t[1],...t[2]?{unit:t[2]}:{}}:{col:e.trim()}});else if(n.startsWith(`order by`))t.order=e.slice(8).trim().split(`,`).map(e=>{let t=/^(\S+)(?:\s+(asc|desc))?$/i.exec(e.trim());return{col:t?.[1]??e.trim(),dir:t?.[2]?.toLowerCase()??`asc`}});else if(n.startsWith(`limit`)){let n=/^limit\s+(\d+)(?:\s+offset\s+(\d+))?$/i.exec(e);if(!n)return t.error=`Cannot parse pipe "${e}". Expected limit <n> [offset <m>]`,t;t.limit=Number(n[1]),n[2]&&(t.offset=Number(n[2]))}else if(n.startsWith(`offset`)){let n=/^offset\s+(\d+)$/i.exec(e);if(!n)return t.error=`Cannot parse pipe "${e}". Expected offset <n>`,t;t.offset=Number(n[1])}else return t.error=`Unknown pipe "${e}". Try: select, order by, limit`,t}return t}function ip(e){return e.family===`find`}function ap(e){return e.family===`aggregate`}function op(e){return e.family===`pipeline`}var sp=lf;function cp(e){return`Cannot parse "${e}". Expected agg:metric{filters} by {dims} .rollup(period)`}var lp=/^(.+?)\s*(>=|<=|!=|==|>|<)\s*(-?\d+(?:\.\d+)?)\s*$/;function up(e){return`Cannot parse join "${e}". Expected :source{filters} or find:target{filters}, or agg:metric{filters} <op> <number>`}function dp(e){let t=e.trimStart(),n=/^:?([a-zA-Z0-9_-]+)/.exec(t)?.[1]?.toLowerCase()??``;if(t.startsWith(`find:`)||t.startsWith(`:`)&&bf.includes(n)){let n=Ap(e,{colon:t.startsWith(`:`)});return n.error?{error:n.error}:n.window?.kind===`range`?{error:`Range windows are not supported on join halves — use last <n>d|w`}:{find:{target:n.target,filters:n.filters,last:n.window?.kind===`relative`?{size:n.window.size,unit:n.window.unit}:void 0},advisories:n.advisories}}let r=lp.exec(e.trim());if(!r)return{error:up(e)};let i=Op(r[1].trim(),{colon:r[1].trimStart().startsWith(`:`)});return i.error?{error:i.error}:{metric:{agg:i.agg,metric:i.metric,filters:i.filters,operator:r[2],threshold:parseFloat(r[3])}}}function fp(e){let t=/^rows(?::(\w+))?\{([^}]*)\}/.exec(e);if(!t)return`The "rows:" query family is retired — use :session, :segment, or :event instead.`;let n=t[1]??`all`,r=t[2].trim();return n===`all`||[`note`,`block`,`effort`,`page`].includes(n)?`rows:${n}{…} is retired — use :session{${r}} instead.`:n===`segment`&&!r.includes(`result:`)&&!r.includes(`block:`)&&!r.includes(`note:`)?`rows:segment{…} is retired — use :segment{${r}} instead.`:n===`event`?`rows:event{…} is retired — use :event{${r}} instead.`:`rows:${n}{…} is retired — use :session{${r?`${r}, plane:${n}`:`plane:${n}`}} instead.`}var pp=/^\s*(?:select|order\s+by|limit|offset)\b/i;function mp(e){let t=[],n=0,r=!1,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){o===`"`&&(r=!1);continue}if(o===`"`){r=!0;continue}o===`{`?n++:o===`}`?n=Math.max(0,n-1):o===`|`&&n===0&&(t.push(e.slice(i,a)),i=a+1)}return t.push(e.slice(i)),t}function hp(e){let t=/^\s*([:@])([a-zA-Z0-9_-]+)/.exec(e);return t?{name:t[2].toLowerCase(),dataset:t[1]===`@`}:void 0}function gp(e){return`Cannot parse pipeline "${e}". Expected :source{filters} | :function{metric:key} | :chart{params} or @dataset | :function{…}`}function _p(e){return{family:`find`,raw:e,target:``,filters:[],error:`The "find:" query family is retired — use the :${(/^find:([a-zA-Z0-9_-]*)/.exec(e.trim())?.[1]??``)||`note`}{…} colon head instead.`}}function vp(e){let t=yp(e),n=hp(t.query),r;return r=n&&!n.dataset?wf.includes(n.name)?Op(t.query,{colon:!0}):(bf.includes(n.name),Ap(t.query,{colon:!0})):Op(t.query,{colon:!1}),t.advisories.length&&(r.advisories=[...new Set([...r.advisories??[],...t.advisories])]),r.raw=e,r}function X(e){let t=e.trimStart();if(/^rows(?=[:{]|\s|$)/.test(t))return{family:`find`,raw:e,target:``,filters:[],error:fp(e.trim())};if(/^find:/.test(t))return _p(e);let n=mp(e),r=n[0];if(n.length>1&&!pp.test(r)&&n.slice(1).every(e=>pp.test(e.trim())))return vp(e);let i=hp(r);return n.length>1||i&&(i.dataset||Tf.includes(i.name))?Mp(e,n):vp(e)}function yp(e){let t=[],n=e.trim(),{primary:r,where:i}=Kf(n);if(r.startsWith(`find:`)){let e=tp(r);if(e.legacyScope&&!e.conflicts?.length){t.push(`Legacy 'in <scope>' syntax is deprecated; use 'source:<scope>' filter instead.`);let r=e.legacyScope,a=e.primaryText.trim();if(r!==`all`){let e=a.indexOf(`{`),t=a.lastIndexOf(`}`);if(e!==-1&&t!==-1&&t>e){let n=a.slice(0,e+1),i=a.slice(e+1,t).trim(),o=a.slice(t);a=`${n}${i?`${i},source:${r}`:`source:${r}`}${o}`}else a=`${a}{source:${r}}`}let o=[a];e.groupBy&&o.push(`by {${e.groupBy.join(`, `)}}`),e.rollup&&o.push(`.rollup(${e.rollup.raw})`),e.window&&o.push(e.window.raw),i&&o.push(`where ${i}`),n=o.join(` `)}}return{query:n,advisories:t}}function bp(e){for(let t of e)if(t.key===`source`)for(let e of t.values){let t=e.value;if(t===`page`||t===`pages`)return`source:${t} is retired — page-ness is handled by type: (e.g. type:feed or source:guides).`;if(t===`all`)return`source:all is retired — omit the source: filter to query all sources.`;if(t===`collection`||t===`collections`)return`source:${t} is retired — collections were renamed to feeds; use source:feeds or :feed{}.`;if(!(yf.includes(t)||t===`feed`||t.startsWith(`collection:`)||t.startsWith(`feed:`)))return`Unknown source "${t}". Try: ${yf.join(`, `)} (or collection:<id>, feed:<id>)`}}function xp(e){let t=-1,n=0,r=!1;for(let i=0;i<e.length;i++){let a=e[i];if(r){a===`"`&&(r=!1);continue}if(a===`"`){r=!0;continue}if(a===`{`)n++;else if(a===`}`)n=Math.max(0,n-1);else if(a===`|`&&n===0){t=i;break}}if(t!==-1){let n=e.slice(t+1);return{text:e.slice(0,t).trimEnd(),pipes:rp(n)}}return{text:e}}function Sp(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return!1;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=new Date(n,r-1,i);return a.getFullYear()===n&&a.getMonth()===r-1&&a.getDate()===i}function Cp(e){if(!e)return{};if(e.kind===`relative`)return{window:{kind:`relative`,size:e.size,unit:e.unit}};for(let t of[e.start,e.end])if(t!==void 0&&!Sp(t))return{error:`Invalid window date "${t}" — expected a real calendar date YYYY-MM-DD`};return{window:{kind:`range`,start:e.start,end:e.end}}}function wp(e){if(e.some(e=>e.key===`grain`&&e.values.some(e=>e.value===`rollup`)))return`grain:rollup is retired — rollup grains are never stored; compute them with the .rollup suffix`}function Tp(e,t){let n=[],r=e.getChild(8);if(!r)return n;for(let e of r.getChildren(9)){let r=e.getChild(11),i=e.getChild(12);if(!r||!i)continue;let a=[];for(let e of i.getChildren(13)){let n=t.slice(e.from,e.to),r=e.getChild(15)!==null,i=r?n.slice(1,-1):n,o=!r&&i.endsWith(`*`);o&&(i=i.slice(0,-1)),i&&a.push({value:i,wildcard:o})}a.length!==0&&n.push({key:t.slice(r.from,r.to),negate:e.getChild(10)!==null,values:a})}return n}function Ep(e){return e.getChild(18)?.getChild(3)??e.getChild(3)??void 0}function Dp(e){return`Cannot parse "${e}". Expected :function{metric:<key>, filters} by {dims} .rollup(period) — e.g. :sum{metric:tis}`}function Op(e,t){let n=tp(e),{where:r,displayUnit:i,groupBy:a,rollup:o,window:s,primaryText:c}=n,l=Cp(s),u={family:`aggregate`,raw:e,agg:`sum`,metric:``,filters:[],groupBy:a??[],displayUnit:i,rollup:o?{size:o.size,unit:o.unit}:void 0,window:l.window};if(l.error)return u.error=l.error,u;if(n.conflicts?.length)return u.error=n.conflicts.join(`; `),u;if(o){if(o.unit!==`d`&&o.unit!==`w`)return u.error=cp(c),u;if((o.unit===`d`||o.unit===`w`)&&o.size===1)return u.error=`.rollup(1${o.unit}) is retired — use by {${o.unit===`d`?`day`:`week`}} instead.`,u}let d=Gf.parse(c),f=!1;if(d.iterate({enter(e){e.type.isError&&(f=!0)}}),f)return u.error=cp(c),u;let p=d.topNode,m=Ep(p),h=m?.getChild(4),g=h?.getChild(6),_=h?.getChild(7);if(u.filters=m?Tp(m,c):[],t.colon){let e=h?.getChild(5);if(!h||!e)return u.error=Dp(c),u;let n=c.slice(e.from,e.to).toLowerCase();if(!wf.includes(n))return u.error=`Unknown function ":${n}". Try: ${wf.join(`, `)}`,u;u.agg=n;let r=u.filters.filter(e=>e.key===`metric`);u.filters=u.filters.filter(e=>e.key!==`metric`);let i=r[0];if(!i){if(n!==`count`&&t.inheritedMetric===void 0)return u.error=`:${n} requires 'metric:<key>' — e.g. :${n}{metric:tis}`,u;u.metric=n===`count`?``:t.inheritedMetric}else if(i.negate||r.length>1||i.values.length!==1||i.values[0].wildcard)return u.error=`:${n} takes a single 'metric:<key>' clause — no negation, OR values, or wildcards`,u;else u.metric=i.values[0].value}else{if(!m||!h||!g||!_)return u.error=cp(c),u;let e=c.slice(g.from,g.to);if(!sp.includes(e))return u.error=`Unknown aggregator "${e}". Try: ${sp.join(`, `)}`,u;u.agg=e,u.metric=c.slice(_.from,_.to)}let v=u.filters.map(e=>e.key).filter(e=>ff.includes(e));if(v.length>0)return u.error=`Content filter key(s) ${v.map(e=>`"${e}"`).join(`, `)} cannot narrow an aggregate — facts carry effort/dimension data, not note text. Aggregate dims: ${df.join(`, `)}, plus any custom dimension.`,u;let y=wp(u.filters);if(y)return u.error=y,u;if(r){let e=dp(r);if(e.error)return u.error=e.error,u;if(e.advisories?.length&&(u.advisories=[...u.advisories??[],...e.advisories]),!e.find)return u.error=`Cross-store join on an analytics query must be find:…, got "${r}"`,u;u.join=e.find}return u}function kp(e){return`Cannot parse "${e}". Expected :source{key:value, !key:value}; filters are optional. Optional suffixes include by {dimension}, last <n>d or last <n>w, from YYYY-MM-DD [to YYYY-MM-DD], where <aggregator>:<metric>{filters} <operator> <number>, and | order by <column> | limit <n>. Support depends on the target.`}function Ap(e,t){let{text:n,pipes:r}=xp(e),i=tp(n),{where:a,window:o,legacyScope:s,groupBy:c,displayUnit:l,primaryText:u}=i,d=Cp(o),f=[];s&&f.push(`Legacy 'in <scope>' syntax is deprecated; use 'source:<scope>' filter instead.`);let p={family:`find`,raw:e,target:``,filters:[],window:d.window,...r?{pipes:r}:{},...c?{groupBy:c}:{},...l?{displayUnit:l}:{},...f.length?{advisories:f}:{}};if(d.error)return p.error=d.error,p;if(r?.error)return p.error=r.error,p;if(i.conflicts?.length)return p.error=i.conflicts.join(`; `),p;let m=Gf.parse(u),h=!1;if(m.iterate({enter(e){e.type.isError&&(h=!0)}}),h)return p.error=kp(u),p;let g=Ep(m.topNode),_=g?.getChild(4),v=_?.getChild(6),y=_?.getChild(7),b;if(t?.colon){let e=_?.getChild(5);if(!g||!_||!e)return p.error=kp(u),p;b=u.slice(e.from,e.to).toLowerCase()}else{if(!g||!_||!v||!y)return p.error=kp(u),p;let e=u.slice(v.from,v.to);if(e!==`find`)return p.error=`Expected "find:" but got "${e}:"`,p;b=u.slice(y.from,y.to)}let x=xf[b],S=Sf[b];if(x||S)p.target=`note`;else{if(p.target=b,p.target===`page`)return p.error=`find:page is retired — page-ness is handled by type: (e.g. :note{source:guides} or type:feed).`,p;if(!vf.includes(p.target))return p.error=`Unknown find target "${p.target}". Try: ${vf.join(`, `)}`,p}p.filters=Tp(g,u),S&&p.filters.unshift({key:`type`,negate:!1,values:[{value:S,wildcard:!1}]}),x&&(p.filters.push({key:`source`,negate:!1,values:[{value:x,wildcard:!1}]}),(b===`catalog`||b===`catalogs`)&&p.filters.push({key:`type`,negate:!1,values:[{value:`feed`,wildcard:!1}]}));let C=t?.colon&&p.displayUnit&&p.displayUnit!==`kg`&&p.displayUnit!==`lb`?p.displayUnit:s;t?.colon&&C&&(delete p.displayUnit,f.push(`Legacy 'in <scope>' syntax is deprecated; use 'source:<scope>' filter instead.`)),C&&C!==`all`&&p.filters.push({key:`source`,negate:!1,values:[{value:C,wildcard:!1}]});let w=bp(p.filters);if(w)return p.error=w,p;let T=wp(p.filters);if(T)return p.error=T,p;let E=p.target;if(i.rollup&&f.push(`:${E} ignores '.rollup(...)'; rollup is supported by aggregate queries.`),a){let e=dp(a);if(e.error)return p.error=e.error,p;if(!e.metric)return p.error=`Cross-store join on a find query must be agg:metric{} <op> <number>, got "${a}"`,p;p.join=e.metric}let D=Np(p);return(f.length||D.length)&&(p.advisories=[...new Set([...f,...D])]),p}function jp(e){return e?e.dataset?`dataset`:wf.includes(e.name)?`function`:bf.includes(e.name)?`source`:Tf.includes(e.name)?`chart`:`unknown`:`unknown`}function Mp(e,t){let n=[],r=t=>({family:`pipeline`,raw:e,source:{kind:`dataset`,name:``},transforms:[],error:t}),i=t.map(hp),a=i.map(jp),o;if(!i[0]){if(pp.test(t[0]))return r(`Presentation pipes (| select / order by / limit) apply to a single source query — they cannot sit between pipeline stages.`);let e=Op(t[0],{colon:!1});if(e.error)return r(e.error);o=e,a[0]=`function`}for(let e=0;e<t.length;e++){if(e===0&&o)continue;let n=i[e]?`:${i[e].name}`:`"${t[e].trim()}"`;if(!i[e])return r(`Empty or unparseable pipeline stage ${n} — check for doubled or trailing "|".`);if(a[e]===`unknown`)return r(`Unknown pipeline head ${n}. Sources: ${bf.join(`, `)}; functions: ${wf.join(`, `)}; charts: ${Tf.join(`, `)}.`);if(e>0&&(a[e]===`source`||a[e]===`dataset`))return r(`Pipeline stage ${n} must come first — a pipeline starts at its source, transforms follow.`);if(a[e]===`chart`&&e<t.length-1)return r(`Chart head ${n} must be the final pipeline stage — nothing may follow a chart.`)}let s=t.map(e=>tp(e).primaryText.trim()).join(` | `),c=Gf.parse(s),l=!1;c.iterate({enter(e){e.type.isError&&(l=!0)}});let u=l?void 0:c.topNode.getChild(2),d=l?void 0:c.topNode.getChild(18),f=u?u.getChildren(3):d?[d.getChild(3)].filter(e=>e!==null):[];if(!u&&t.length>1||f.length!==t.length)return r(gp(e));let p=t.length-1,m;if(a[0]===`dataset`)m={kind:`dataset`,name:`@`+i[0].name};else if(a[0]===`chart`)m={kind:`query`,query:{family:`find`,raw:`:segment{}`,target:`segment`,filters:[]}};else{let e=a[0]===`function`?Op(t[0],{colon:t[0].trimStart().startsWith(`:`)}):Ap(t[0],{colon:!0});if(e.error)return r(e.error);m={kind:`query`,query:e}}let h=[],g=m.kind===`query`&&m.query.family===`aggregate`?m.query.metric:void 0,_=a[p]===`chart`?p-1:p;for(let e=1;e<=_;e++){let n=Op(t[e],{colon:!0,inheritedMetric:g});if(n.error)return r(n.error);h.push(n),g=n.metric||g}let v;if(a[p]===`chart`){let i=f[p],a=i.getChild(4)?.getChild(5);if(!a)return r(gp(e));let o=s.slice(a.from,a.to).toLowerCase();if(!Tf.includes(o))return r(`Unknown chart head ":${o}". Try: ${Tf.join(`, `)}`);let c=tp(t[p]);(c.window||c.rollup||c.groupBy||c.displayUnit||c.where||c.legacyScope)&&n.push(`:${o} ignores query suffixes — apply windows and grouping to the source or function stages.`),v={head:o,filters:Tp(i,s)}}return{family:`pipeline`,raw:e,source:m,transforms:h,...v?{sink:v}:{},...n.length?{advisories:n}:{}}}function Np(e){let t=[],n=e.target,r=Vf(n,`find`),i=[...new Set(e.filters.filter(e=>!Wf(n,`find`,e.key)).map(e=>e.key))];if(i.length){let e=n===`segment`||n===`event`?`, custom fact dimensions`:``,r=i.find(e=>pf.includes(e)),a=r&&n!==`effort`?` To filter by ${r}, use :effort{${r}:…}.`:``;t.push(`:${n} ignores ${i.map(e=>`'${e}:'`).join(`, `)} — the filter is not applied.${a} Supported keys: ${Hf(n,`find`).join(`, `)}${e}.`)}for(let r of e.filters){if(i.includes(r.key))continue;let e=[`result`,`block`,`note`].includes(r.key),a=n===`note`?[`effort`,`text`,`type`,`domain`,`format`,`equipment`,`quality`,`intent`].includes(r.key):n===`block`?[`text`,`type`,`tags`,`effort`].includes(r.key):(n===`session`||n===`segment`||n===`event`)&&e;r.negate&&a&&t.push(`:${n} does not support '!${r.key}:' negation; this clause is not applied as a negated filter.`);let o=n===`effort`?[`effort`,`text`].includes(r.key):(n===`segment`||n===`event`)&&!e;r.values.some(e=>e.wildcard)&&!o&&t.push(`:${n} does not support '${r.key}:…*' wildcards; values are matched without wildcard expansion.`)}if(e.window&&!r.has(`time`)&&t.push(`:${n} ignores the window because its registry has no time dimension.`),e.groupBy?.length){let r=Uf(n,`find`),i=e.groupBy.filter(e=>!r.some(t=>t.toLowerCase()===e.toLowerCase()));if(n!==`note`&&n!==`block`){if(n===`segment`||n===`event`){let i=e.pipes?.select?.map(e=>e.col),a=e.groupBy.filter(e=>i?!i.includes(e):!r.includes(e));a.length&&t.push(`:${n} groups only emitted table columns; ${a.join(`, `)} may be unassigned. Select each grouping column explicitly.`)}else i.length&&t.push(`:${n} cannot group by ${i.join(`, `)}; the view groups by content dimensions. Valid alternatives: ${r.join(`, `)}.`)}}return e.displayUnit&&!r.has(`unit`)&&t.push(`:${n} ignores the display unit 'in ${e.displayUnit}'.`),e.join&&!r.has(`where`)&&t.push(`:${n} ignores the 'where' join; joins are supported by :note and :block.`),e.pipes?.select&&n!==`segment`&&n!==`event`&&t.push(`:${n} ignores '| select'; the result keeps its original fields.`),e.pipes?.order&&n===`session`&&t.push(`:session ignores '| order by'; sessions remain ordered by completion time.`),[...new Set(t)]}function Pp(e){let t=e.filters[0];return e.target===`note`&&e.sourceScope===void 0&&!!t&&t.key===`type`&&!t.negate&&t.values.length===1&&!t.values[0].wildcard&&t.values[0].value===Sf.dashboard}function Fp(e,t=[]){if(Pp(e)){let n=[...e.filters.slice(1),...t];return`:dashboard${n.length?`{${Hp(n)}}`:``}`}let n=[...e.filters,...t];return`:${e.target}${n.length?`{${Hp(n)}}`:``}`}function Ip(e){return e.target!==`note`||e.filters.some(e=>e.key===`source`)||Pp(e)||!e.sourceScope?.length?{clause:``,scopeFilters:[]}:{clause:``,scopeFilters:[{key:`source`,negate:!1,values:e.sourceScope.map(e=>({value:e,wildcard:!1}))}]}}function Lp(e){let t=Ip(e),n=[Fp(e,t.scopeFilters)];return e.groupBy?.length&&n.push(`by {${e.groupBy.join(`, `)}}`),e.displayUnit&&n.push(`in ${e.displayUnit}`),n.push(t.clause),n.push(qp(e.window)),e.join&&n.push(`where ${Kp(e.join)}`),n.filter(Boolean).join(` `)}function Rp(e){let t=e.metric?[{key:`metric`,negate:!1,values:[{value:e.metric,wildcard:!1}]},...e.filters]:e.filters,n=`:${e.agg}{${Hp(t)}}`;e.groupBy.length&&(n+=` by {${e.groupBy.join(`, `)}}`),e.rollup&&(n+=`.rollup(${e.rollup.size}${e.rollup.unit})`),e.displayUnit&&(n+=` in ${e.displayUnit}`);let r=qp(e.window);return r&&(n+=` ${r}`),e.join&&(n+=` where ${Gp(e.join.target,e.join.filters,e.join.last)}`),n}function zp(e){return e.kind===`dataset`?e.name:e.query.family===`find`?Lp(e.query):Rp(e.query)}function Bp(e){let t=[zp(e.source),...e.transforms.map(Rp)];return e.sink&&t.push(`:${e.sink.head}${e.sink.filters.length?`{${Hp(e.sink.filters)}}`:``}`),t.join(` | `)}function Vp(e){return/^[a-zA-Z0-9_-]+((:|\.)[a-zA-Z0-9_-]+)*$/.test(e)?e:`"${e}"`}function Hp(e){return e.map(e=>`${e.negate?`!`:``}${e.key}:${e.values.map(e=>Vp(e.value)+(e.wildcard?`*`:``)).join(`|`)}`).join(`,`)}function Up(e,t,n){return`${e}:${t}{${Hp(n)}}`}function Wp(e){return Up(e.agg,e.metric,e.filters)}function Gp(e,t,n){let r=`find:${e}${t.length?`{${Hp(t)}}`:``}`;return n?`${r} last ${n.size}${n.unit}`:r}function Kp(e){return`${Up(e.agg,e.metric,e.filters)} ${e.operator} ${e.threshold}`}function qp(e){return e?e.kind===`relative`?`last ${e.size}${e.unit}`:e.end?`from ${e.start} to ${e.end}`:`from ${e.start}`:``}function Jp(e){if(e.error)return e.raw;if(e.family===`aggregate`){let t=e,n=Wp(t);t.groupBy.length&&(n+=` by {${t.groupBy.join(`, `)}}`),t.rollup&&(n+=`.rollup(${t.rollup.size}${t.rollup.unit})`),t.displayUnit&&(n+=` in ${t.displayUnit}`);let r=qp(t.window);return r&&(n+=` ${r}`),t.join&&(n+=` where ${Gp(t.join.target,t.join.filters,t.join.last)}`),n}if(e.family===`find`){let t=Ip(e),n=[Fp(e,t.scopeFilters)];e.groupBy?.length&&n.push(`by {${e.groupBy.join(`, `)}}`),e.displayUnit&&n.push(`in ${e.displayUnit}`),n.push(t.clause),n.push(qp(e.window)),e.join&&n.push(`where ${Kp(e.join)}`);let r=n.filter(Boolean).join(` `);if(e.pipes){let t=[];e.pipes.select&&t.push(`select ${e.pipes.select.map(e=>e.col+(e.unit?` in ${e.unit}`:``)).join(`, `)}`),e.pipes.order&&t.push(`order by ${e.pipes.order.map(e=>e.dir===`desc`?`${e.col} desc`:e.col).join(`, `)}`),e.pipes.limit===void 0?e.pipes.offset!==void 0&&t.push(`offset ${e.pipes.offset}`):t.push(`limit ${e.pipes.limit}${e.pipes.offset===void 0?``:` offset ${e.pipes.offset}`}`),t.length>0&&(r+=` | ${t.join(` | `)}`)}return r}return e.family===`pipeline`?Bp(e):e.raw??``}var Yp=[`bodyweight`,`cycling`,`gymnastics`,`kettlebell`,`recovery`,`rowing`,`running`,`strength`,`swimming`,`walking`],Xp=Br.define({parser:Gf.configure({props:[Fi({"Aggregator/Word":B.keyword,"Metric/Word":B.variableName,"Head/Word":B.keyword,DatasetReference:B.keyword,"DatasetReference/Word":B.keyword,At:B.punctuation,TagKey:B.propertyName,"TagKey/Word":B.propertyName,TagValue:B.string,"TagValue/Value/Word":B.string,"TagValue/Word":B.string,Negate:B.operator,Star:B.operator,Dimension:B.attributeName,"Dimension/Word":B.attributeName,By:B.keyword,RollupDot:B.keyword,Int:B.number,"Rollup/Word":B.unit,braceOpen:B.bracket,braceClose:B.bracket,parenOpen:B.bracket,parenClose:B.bracket,colon:B.punctuation,comma:B.punctuation,pipe:B.punctuation,dot:B.punctuation})]}),languageData:{closeBrackets:{brackets:[`{`,`(`]}}});function Zp(e){return e.map(e=>typeof e==`string`?{label:e}:e)}function Qp(e,t){let n=0,r=!1,i=-1,a=-1,o=0;for(let s=0;s<t;s++){let t=e[s];if(r){t===`"`&&(r=!1);continue}if(t===`"`){r=!0;continue}t===`{`?(n++,a=s,o=s+1):t===`}`?(n=Math.max(0,n-1),o=s+1):t===`,`&&n>0?o=s+1:t===`|`&&n===0&&(i=s+1,o=s+1)}return{depth:n,quoted:r,pipeFrom:i,lastBrace:a,fragStart:o}}function $p(e){let t=``,n=!1;for(let r of e)r===`"`?(n=!n,t+=` `):t+=n?` `:r;return t}function em(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(r===`"`)t=!t;else if(r===`:`&&!t)return n}return-1}function tm(e,t,n){let r=$p(e.slice(t+1,n)),i=new Set;for(let e of r.split(`,`)){let t=/!?\s*([A-Za-z][\w-]*)/.exec(e);t&&i.add(t[1])}return i}function nm(e){return typeof e.apply==`string`?e.apply:e.label}function rm(e){let t=nm(e);return/\s/.test(t)?{...e,apply:(e,n,r,i)=>{let a=e.state.sliceDoc(Math.max(0,r-1),r)===`"`?t:`"${t}"`;e.dispatch({changes:{from:r,to:i,insert:a},selection:{anchor:r+a.length},userEvent:`input.complete`})}}:e}function im(e,t){let n=new Set,r=[];e.forEach((e,t)=>{let i=nm(e).toLowerCase();!i||n.has(i)||(n.add(i),r.push(rm({...e,boost:Math.max(-99,Math.min(99,80-t))})))});for(let e of t){let t=nm(e).toLowerCase();!t||n.has(t)||(n.add(t),r.push(rm(e)))}return r}function am(e,t){let n=t.toLowerCase();if(!n)return[...e];let r=[],i=[];for(let t of e){let e=t.label.toLowerCase();e.startsWith(n)?r.push(t):e.includes(n)&&i.push(t)}return[...r,...i]}function om(e,t,n,r){let i=am(n,r);return i.length?{from:t,options:i.map((e,t)=>e.boost===void 0?{...e,boost:Math.max(-99,50-t)}:e),filter:!1}:null}function sm(e,t){return e.map(e=>({...e,apply:(n,r,i,a)=>{let o=typeof e.apply==`string`?e.apply:e.label,s=n.state.sliceDoc(a,a+t.length)===t;n.dispatch({changes:{from:i,to:a,insert:s?o:o+t},selection:{anchor:i+o.length+t.length},userEvent:`input.complete`}),fi(n)}}))}var cm=[...wf.map(e=>({label:e,detail:`function head`,type:`keyword`})),...bf.map(e=>({label:e,detail:`source head`,type:`keyword`})),...Tf.map(e=>({label:e,detail:`chart head`,type:`class`})),...Ef.map(e=>({label:e,detail:`page dataset`,type:`class`}))];function lm(e,t){return e.label.startsWith(`@`)?{...e,apply:e.label}:{...e,apply:`${t?``:`:`}${e.label}{`}}var um=lf.map(e=>({label:e,type:`keyword`})),dm=[`title`,`date`,`createdAt`,`type`,`sourceId`,`catalog`],fm=[`noteTitle`,`dataType`,`position`,`createdAt`,`noteId`,`sourceId`],pm=[`slug`,`label`,`registrySource`],mm=[`duration`,`startTime`,`origin`],hm=[`date`,`effort`,`discipline`,`note`,`grade`,`intensity`,...sf,...cf],gm=new Set([`distance`,`resistance`,`totalVolume`,`totalDistance`]),_m=[{label:`asc`,detail:`sort ascending`,type:`keyword`},{label:`desc`,detail:`sort descending`,type:`keyword`}],vm=kf.map(e=>({label:e,detail:`display unit`,type:`constant`}));function ym(e,t){return{family:`aggregate`}}function bm(e){let t=e.toLowerCase();if(wf.includes(t))return{family:`aggregate`};if(Tf.includes(t))return{family:`find`};let n=t;if(!bf.includes(n)){let e=n?bf.filter(e=>e.startsWith(n)):[];e.length===1&&(n=e[0])}return bf.includes(n)?{family:`find`,target:xf[n]||Sf[n]?`note`:n}:{family:`find`}}var xm=[...new Set(vf.flatMap(e=>[...Hf(e,`find`)]))];function Sm(e){return e.family===`find`?e.target?Hf(e.target,`find`):xm:Hf(``,`aggregate`)}function Cm(e){switch(e){case`note`:return dm;case`block`:return fm;case`effort`:return pm;case`session`:return mm;default:return hm}}var wm=new Set([`note`,`block`,`effort`,`session`]);function Tm(e={}){let{effortNames:t,tagTypeValues:n,catalog:r,values:i}=e,a=async e=>r?(await r.listByPrefix(e,20)).map(e=>({label:e.path,detail:[e.kind,...e.units].filter(Boolean).join(` · `),type:`variable`,apply:e.path})):[],o=async(e,t)=>r?(await r.listValues(e,t,20)).map(e=>({label:e.value,type:`constant`})):[],s=()=>{let e=t?.()??[];return[...Zp(cf).map(e=>({...e,type:`constant`})),...Zp(sf).map(e=>({...e,type:`variable`})),...Zp(e.flatMap(e=>sf.map(t=>`${e}.${t}`))).map(e=>({...e,type:`variable`})),...Zp(hf).map(e=>({...e,type:`namespace`})),Or("calc.${target}",{label:`calc.`,detail:`calculated target`,type:`namespace`})]},c=e=>{switch(e){case`effort`:return Zp(t?.()??[]);case`discipline`:return Zp(Yp);case`intensity`:return Zp(gf);case`grain`:return Zp(_f);case`metric`:return s();case`source`:return Zp(yf);case`domain`:case`format`:case`equipment`:case`quality`:case`intent`:return n?Promise.resolve(n(e)).then(e=>Zp(e)):null;default:return null}},l=(e,t,n,a)=>{let s=(i,s)=>{let c=im(i,s??[]);return c.length?om(t,n,c,a):r?o(e,a).then(e=>om(t,n,e,a)):om(t,n,[],a)},l=c(e);if(!i)return l instanceof Promise?l.then(e=>s([],e)):s([],l);let u=i(e);return l instanceof Promise?Promise.all([Promise.resolve(u),l]).then(([e,t])=>s(e,t)):Promise.resolve(u).then(e=>s(e,l))},u=(e,t,n)=>r?a(n).then(r=>om(e,t,[...s(),...r],n)):om(e,t,s(),n),d=(e,t,n,r,i,a)=>{if(/\bby\s*$/.test($p(t.slice(0,n.lastBrace)))){let o=Uf(a.target??``,a.family),s=tm(t,n.lastBrace,n.fragStart),c=[...o].filter(e=>!s.has(e));return c.length?om(e,r,sm(c.map(e=>({label:e,type:`atom`,detail:`grouping dimension`})),`, `),i):om(e,r,[],i)}let o=t.slice(n.fragStart,e.pos),s=em(o);if(s>=0){let t=o.slice(0,s).replace(/^!/,``).trim();return l(t,e,r,i)}let c=e.matchBefore(/[\w-]*/),u=o.trimStart().startsWith(`!`),d=tm(t,n.lastBrace,n.fragStart),f=sm(Sm(a).filter(e=>!d.has(e)).map(e=>({label:e,type:`property`,...u?{detail:`exclude ${e} values`}:{}})),`:`);return om(e,c.from,f,i)},f=(e,t,n,r,i,a,o)=>{let s=t.slice(o,e.pos);if(/\.rollup\([^)]*$/.test(s))return a.family===`aggregate`?om(e,r,Zp(Of).map(e=>({...e,type:`constant`})),i):om(e,r,[],i);if(/\bby\s*\{[^}]*$/.test(s))return d(e,t,n,r,i,a);if(/\s+last\s+$/i.test(s))return om(e,e.pos,[{label:`4w`,detail:`relative window`,type:`constant`},{label:`8w`,detail:`relative window`,type:`constant`},{label:`7d`,detail:`relative window`,type:`constant`},{label:`30d`,detail:`relative window`,type:`constant`}],``);let c=/\s+last\s+(\d+)([dw]?)$/i.exec(s);return c?c[2]?null:om(e,e.pos,[{label:`d`,detail:`days`,type:`constant`},{label:`w`,detail:`weeks`,type:`constant`}],``):/\s+from\s+$/i.test(s)?om(e,e.pos,[{label:`2026-01-01`,apply:`2026-01-01 `,detail:`start date (YYYY-MM-DD)`,type:`constant`}],``):/\s+from\s+\d{4}-\d{2}-\d{2}\s+$/i.test(s)?om(e,e.pos,[{label:`to`,apply:`to `,detail:`end date`,type:`keyword`}],``):/\s+to\s+$/i.test(s)?om(e,e.pos,[{label:`2026-03-31`,detail:`end date (YYYY-MM-DD)`,type:`constant`}],``):om(e,r,sm([{label:`by {}`,apply:`by `,detail:Uf(a.target??``,a.family).length?`group by dimensions`:`advisory: no grouping dimensions for find:${a.target}`,type:`keyword`},...a.family===`aggregate`?[{label:`.rollup()`,apply:`.rollup(`,detail:`bucket period`,type:`keyword`}]:[],{label:`last`,apply:`last `,detail:`relative window: last <n>d|w`,type:`keyword`},{label:`from`,apply:`from `,detail:`date range: from YYYY-MM-DD [to YYYY-MM-DD]`,type:`keyword`},...a.family===`find`?[{label:`|`,apply:`| `,detail:`presentation pipes: order by / select / limit`,type:`keyword`}]:[]],` `),i)},p=(e,t,n,r,i,a)=>{let o=t.slice(n.pipeFrom,e.pos),s=/^\s*order\b/i.exec(o);if(s){let t=o.slice(s[0].length),n=/^\s*by\b/i.exec(t);if(!n)return om(e,r,[{label:`by`,apply:`by `,type:`keyword`}],i);let c=t.slice(n[0].length).split(`,`).pop()??``,l=c.trim().split(/\s+/).filter(Boolean),u=Cm(a.target).map(e=>({label:e,type:`property`}));return l.length?/\s$/.test(c)?om(e,e.pos,_m,``):l.length>=2?/^(asc|desc)$/i.test(l[1])?null:om(e,r,_m,i):om(e,r,u,c.trim()):om(e,r,u,``)}let c=/^\s*select\b/i.exec(o);if(c){let t=o.slice(c[0].length).split(`,`).pop()??``,n=t.trim().split(/\s+/).filter(Boolean);if(!n.length)return om(e,r,Cm(a.target).map(e=>({label:e,type:`property`})),``);if(/\s$/.test(t))return gm.has(n[0].toLowerCase())?om(e,e.pos,vm,``):om(e,r,[],i);if(n.length>=2){let t=n[1].toLowerCase();return t===`in`?n[2]?om(e,r,vm,n[2]):om(e,e.pos,vm,``):`in`.startsWith(t)?om(e,e.pos,vm,``):null}return om(e,r,Cm(a.target).map(e=>({label:e,type:`property`})),n[0])}if(/^\s*(limit|offset)\b/i.test(o))return null;let l=Or("limit ${10}",{label:`limit`,detail:`cap result rows`,type:`keyword`});return om(e,r,[...sm([{label:`order by`,apply:`order by `,detail:a.target===`session`?`advisory: order ignored for sessions`:`sort rows`,type:`keyword`},{label:`select`,apply:`select `,detail:wm.has(a.target??``)?`advisory: select ignored for find:${a.target}`:`choose columns`,type:`keyword`}],` `),l],i)};function m(e,t=!1){let n=e.state.doc.toString(),r=e.pos,i=e.matchBefore(/[\w.*-]*/)??{from:r,to:r,text:``},a=i.from===i.to&&r>0&&/[{,:|(!"@]/.test(n[r-1]);if(i.from===i.to&&!e.explicit&&!a)return null;let o=Qp(n,r);if(o.quoted&&o.depth===0)return null;let s=t?``:i.text,c=/^[ \t]*:[ \t]*([A-Za-z][\w-]*)/.exec(n),l=c??/^[ \t]*([A-Za-z]+)[ \t]*:[ \t]*([A-Za-z0-9_.-]*)/.exec(n),m=c?bm(c[1]):l?ym(l[1],l[2]):{family:`aggregate`};if(o.pipeFrom>=0&&o.depth===0)return p(e,n,o,i.from,s,m);if(o.depth>0)return d(e,n,o,i.from,s,m);let h=i.from>0&&n[i.from-1]===`@`,g=h?cm.filter(e=>e.label.startsWith(`@`)):cm,_=h?`@`+s:s,v=h?i.from-1:i.from;return l?c?r<=c[0].length?om(e,v,g.map(e=>lm(e,!0)),_):f(e,n,o,i.from,s,m,c[0].length):r<=l[0].indexOf(`:`)?om(e,i.from,sm(um,`:`),s):r<=l[0].length?u(e,i.from,s):f(e,n,o,i.from,s,m,l[0].length):om(e,v,g.map(e=>lm(e,!1)),_)}function h(e){let t=e.state.selection.main;if(t.empty)return m(e);let n=m(new ji(e.state,t.to,!0),!0),r=e=>e&&{...e,from:t.from,to:t.to,filter:!1,validFor:void 0};return n instanceof Promise?n.then(r):r(n)}return h}var Em=zr.define([{tag:B.keyword,color:`hsl(var(--primary))`},{tag:B.variableName,color:`hsl(var(--accent-foreground))`,fontWeight:`600`},{tag:B.propertyName,color:`hsl(var(--secondary-foreground))`},{tag:B.string,color:`hsl(var(--success))`},{tag:B.attributeName,color:`hsl(var(--warning))`},{tag:B.number,color:`hsl(var(--primary))`},{tag:B.unit,color:`hsl(var(--muted-foreground))`},{tag:B.operator,color:`hsl(var(--destructive))`},{tag:[B.bracket,B.punctuation],color:`hsl(var(--muted-foreground))`}]);function Dm(e,t,n){if(t===void 0||n===void 0||t===n)return e;let r=fa(t);if(!r||r!==fa(n))return e;try{return ha(e,t,n)}catch{return e}}function Om(e){return e?fa(e):void 0}function km(e,{directive:t,preferred:n}){let r=new Set;for(let t of e){let e=t.unit??t.metricUnit;e&&r.add(e)}let i;for(let e of r){let t=fa(e);if(!t)return{error:`Unknown unit "${e}"`,convert:!1};if(i&&t!==i)return{error:`Incompatible units in one calculation (${[...r].join(`, `)})`,convert:!1};i=t}if(t){let e=fa(t);return e?i&&e!==i?{error:`Output unit "${t}" is not compatible with this result's dimension`,convert:!1}:i?{unit:t,convert:!0}:{unit:t,convert:!1}:{error:`Unknown unit "${t}"`,convert:!1}}if(i){let e=ma(i);return{unit:e,convert:e!==void 0}}return{unit:void 0,convert:!1}}function Am(e=Date.now(),t=jm()){return{instant:e,timeZone:t}}function jm(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}var Mm=/^(\d{4})-(\d{2})-(\d{2})$/;function Nm(e){let t=Mm.exec(e);if(!t)throw Error(`Invalid civil date: ${e}`);return{y:Number(t[1]),m:Number(t[2]),d:Number(t[3])}}var Pm=new Map;function Fm(e,t){let n=`${e}|${JSON.stringify(t)}`,r=Pm.get(n);return r||(r=new Intl.DateTimeFormat(`en-CA`,{timeZone:e,...t}),Pm.set(n,r)),r}function Im(e,t){let n=Fm(t,{year:`numeric`,month:`2-digit`,day:`2-digit`}).formatToParts(e),r=e=>n.find(t=>t.type===e)?.value??``;return`${r(`year`)}-${r(`month`)}-${r(`day`)}`}function Lm(e,t){let{y:n,m:r,d:i}=Nm(e),a=new Date(Date.UTC(n,r-1,i+t)),o=e=>String(e).padStart(2,`0`);return`${a.getUTCFullYear()}-${o(a.getUTCMonth()+1)}-${o(a.getUTCDate())}`}function Rm(e,t){let n=Nm(e),r=Nm(t);return Math.round((Date.UTC(r.y,r.m-1,r.d)-Date.UTC(n.y,n.m-1,n.d))/864e5)}function zm(e){let{y:t,m:n,d:r}=Nm(e);return Lm(e,-((new Date(Date.UTC(t,n-1,r)).getUTCDay()+6)%7))}function Bm(e,t){let n=new Intl.DateTimeFormat(`en-US`,{timeZone:t,hour12:!1,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).formatToParts(e),r=e=>Number(n.find(t=>t.type===e)?.value??`0`);return Date.UTC(r(`year`),r(`month`)-1,r(`day`),r(`hour`)%24,r(`minute`),r(`second`))-e}function Vm(e,t){let{y:n,m:r,d:i}=Nm(e),a=Date.UTC(n,r-1,i);return a-Bm(a-Bm(a,t),t)}function Hm(e,t){return Vm(e,t)+432e5}function Um(e,t){if(!e)return;if(e.kind===`relative`){let n=Im(t.instant,t.timeZone);return{start:Vm(e.unit===`d`?Lm(n,-(e.size-1)):Lm(zm(n),-7*(e.size-1)),t.timeZone),end:t.instant+1,endExclusive:!0}}let n=Vm(e.start,t.timeZone);return e.end===void 0?{start:n,end:2**53-1,endExclusive:!1}:{start:n,end:Vm(Lm(e.end,1),t.timeZone),endExclusive:!0}}function Wm(e,t){return t?e<t.start?!1:t.endExclusive?e<t.end:e<=t.end:!0}var Gm=/^[\w\s.+\-*/(),]+$/;function Km(e,t){let n=[];for(let r of e.matchAll(/[A-Za-z_][\w-]*/g)){let e=r[0];t.has(e)&&!n.includes(e)&&n.push(e)}return n}function qm(e){let t=[],n=e.split(`
12
+ `).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`//`)),r={},i=!1,a=[],o,s=!1,c=new Set;for(let e of n){if(e.startsWith(`defaults `)){i=!0;let t=e.slice(9).trim(),n=/by\s*\{([^}]*)\}/.exec(t);n&&(r.groupBy=n[1].split(`,`).map(e=>e.trim()).filter(Boolean));let a=/last\s+(\d+)\s*(d|w)/.exec(t);a&&(r.window={kind:`relative`,size:Number(a[1]),unit:a[2]});let o=/from\s+(\d{4}-\d{2}-\d{2})(?:\s+to\s+(\d{4}-\d{2}-\d{2}))?/.exec(t);o&&(r.window={kind:`range`,start:o[1],end:o[2]});continue}if(e.startsWith(`show `)){o=e.slice(5).split(`,`).map(e=>e.trim()).filter(Boolean);continue}let n=/^([A-Za-z_][\w-]*)\s*=\s*(.+)$/.exec(e);if(n){let r=n[1],i=n[2].trim();c.add(r);let o=/->\s*([\w/%.]+)\s*$/.exec(i),s=/\(normalize\s+([^)]+)\)/.exec(i),l=i.replace(/->\s*[\w/%.]+\s*$/,``).replace(/\(normalize\s+[^)]+\)/,``).trim();if(/^(sum|avg|min|max|count|last|delta|find|rows)\b|^[:@|]/.test(l)){let n=X(l);n.error?t.push(`Assignment "${r}" is not a valid query`):a.push({name:r,kind:`query`,queryText:l,parsed:n,raw:e});continue}if(!Gm.test(l)){t.push(`Assignment "${r}" has characters a formula cannot parse`);continue}let u={expression:l,references:[],...s?{normalize:s[1].trim()}:{},...o?{unit:o[1]}:{}};a.push({name:r,kind:`formula`,formula:u,raw:e});continue}s=!0}if(!i&&o===void 0&&!s&&a.length===1&&a[0].kind,!i&&o===void 0&&a.length===0){let e=X(n.join(` `));e.error?t.push(`Body is neither a valid query nor a valid document`):(c.add(`query`),a.push({name:`query`,kind:`query`,queryText:n.join(` `),parsed:e,raw:n.join(` `)}),o=[`query`],s=!0)}for(let e of a)if(!(e.kind!==`formula`||!e.formula)){e.formula.references=Km(e.formula.expression,c);for(let n of e.formula.expression.matchAll(/[A-Za-z_][\w-]*/g)){let r=n[0];c.has(r)||t.push(`Formula "${e.name}" references unknown name "${r}"`)}e.formula.references.length===0&&t.push(`Formula "${e.name}" references no named query or formula`)}let l=Jm(a);if(l&&t.push(`Reference cycle detected: ${l.join(` -> `)}`),o===void 0)o=a.filter(e=>e.kind===`query`).map(e=>e.name),a.length>0&&o.length===0&&(o=[a[0].name]);else for(let e of o)c.has(e)||t.push(`show references unknown name "${e}"`);return{doc:{...Object.keys(r).length>0?{defaults:r}:{},assignments:a,show:o,degenerate:s},diagnostics:t}}function Jm(e){let t=new Map(e.filter(e=>e.kind===`formula`).map(e=>[e.name,e.formula.references])),n=new Map,r=[],i=e=>{let a=n.get(e);if(a!==2){if(a===1){let t=r.indexOf(e);return[...r.slice(t===-1?0:t),e]}n.set(e,1),r.push(e);for(let n of t.get(e)??[]){let e=i(n);if(e)return e}r.pop(),n.set(e,2)}};for(let e of t.keys()){let t=i(e);if(t)return t}}function Ym(){let e=(t,n,r)=>{let i=t.trim();if(i.startsWith(`(`)&&i.endsWith(`)`))return e(i.slice(1,-1),n,r);let a=e=>{let t=0;for(let n=i.length-1;n>=0;n--){let r=i[n];if(r===`)`)t++;else if(r===`(`)t--;else if(t===0&&e.includes(r)&&n>0){let e=r,t=i.slice(0,n),a=i.slice(n+1);if(t.trim()&&a.trim())return{op:e,left:t,right:a}}}},o=a([`+`]);if(o&&o.op===`+`){let t=e(o.left,n,r),i=e(o.right,n,r);return t.error||i.error?{value:0,missingDerived:!0,error:t.error??i.error}:{value:t.value+i.value,missingDerived:t.missingDerived||i.missingDerived}}let s=a([`-`]);if(s&&s.op===`-`){let t=e(s.left,n,r),i=e(s.right,n,r);return t.error||i.error?{value:0,missingDerived:!0,error:t.error??i.error}:{value:t.value-i.value,missingDerived:t.missingDerived||i.missingDerived}}let c=a([`*`]);if(c&&c.op===`*`){let t=e(c.left,n,r),i=e(c.right,n,r);return t.error||i.error?{value:0,missingDerived:!0,error:t.error??i.error}:{value:t.value*i.value,missingDerived:t.missingDerived||i.missingDerived}}let l=a([`/`]);if(l&&l.op===`/`){let t=e(l.left,n,r),i=e(l.right,n,r);return t.error||i.error?{value:0,missingDerived:!0,error:t.error??i.error}:i.value===0?{value:0,missingDerived:!1,error:`Division by zero`}:{value:t.value/i.value,missingDerived:t.missingDerived||i.missingDerived}}if(/^-?\d+(\.\d+)?$/.test(i))return{value:Number(i),missingDerived:!1};let u=n[i];if(u){let e=u(r);return e===void 0?{value:0,missingDerived:!0}:e}return{value:0,missingDerived:!0,error:`Unknown reference "${i}"`}};return{evaluate(t,n,r){try{return e(t,n,r)}catch(e){return{value:0,missingDerived:!0,error:e instanceof Error?e.message:String(e)}}}}}function Xm(e,t,n){let r=e;return n&&n.length>0&&!/by\s*\{/.test(r)&&(r+=` by {${n.join(`, `)}}`),t.kind===`relative`&&!/\blast\b/.test(r)?r+=` last ${t.size}${t.unit}`:t.kind===`range`&&!/\bfrom\b/.test(r)&&(r+=` from ${t.start}${t.end?` to ${t.end}`:``}`),r}var Zm=class{runAggregate;evaluator;constructor(e,t={}){this.runAggregate=e,this.options=t,this.evaluator=t.formulaEvaluator??Ym()}options;async run(e){let t=qm(e),n=[...t.diagnostics],r=t.doc,i=[],a=new Map,o=async e=>{if(e.kind===`query`){let t=this.mergeDefaults(e,r),n=e.parsed?.family;if(n===`find`){let n=t.window?Xm(t.queryText,t.window,t.groupBy):t.queryText,r=await this.options?.runFind?.(n)??{error:`find queries are not supported by this host`};i.push({name:e.name,kind:`find`,...r.notes?{notes:r.notes}:{},...r.blocks?{blocks:r.blocks}:{},...r.efforts?{efforts:r.efforts}:{},...r.containers?{containers:r.containers}:{},...r.runs?{runs:r.runs}:{},...r.table?{table:r.table}:{},...r.unit?{unit:r.unit}:{},...r.error?{error:r.error}:{}});return}if(n===`pipeline`){let n=t.window?Xm(t.queryText,t.window,t.groupBy):t.queryText,r=await this.options?.runPipeline?.(n)??{error:`pipeline queries are not supported by this host`},o=new Map;for(let e of r.series??[])for(let t of e.points)t.missing||o.set(t.ts,{value:t.value,missingDerived:!1});o.size>0&&a.set(e.name,{byPosition:o,unit:r.unit,groupKeys:(r.series??[]).map(e=>e.key)}),i.push({name:e.name,kind:`pipeline`,...r.series?{series:r.series}:{},...r.table?{table:r.table}:{},...r.notes?{notes:r.notes}:{},...r.blocks?{blocks:r.blocks}:{},...r.efforts?{efforts:r.efforts}:{},...r.containers?{containers:r.containers}:{},...r.runs?{runs:r.runs}:{},...r.unit?{unit:r.unit}:{},...r.chart?{chart:r.chart}:{},...r.error?{error:r.error}:{}});return}let o=await this.runAggregate(t.queryText,{groupBy:t.groupBy,window:t.window}),s=o.series??[],c=new Map;for(let e of s)for(let t of e.points)t.missing||c.set(t.ts,{value:t.value,missingDerived:!1});a.set(e.name,{byPosition:c,unit:o.unit,groupKeys:s.map(e=>e.key)}),i.push({name:e.name,kind:`aggregate`,unit:o.unit,...r.defaults?.groupBy?{groupBy:r.defaults.groupBy}:{},...t.window?{window:t.window}:{},series:s,...o.error?{error:o.error}:{}});return}let t=e.formula,o={},s=new Set;for(let r of t.references){let t=a.get(r);if(!t){n.push(`Formula "${e.name}" references unavailable input "${r}"`);return}for(let e of t.byPosition.keys())s.add(e);o[r]=e=>t.byPosition.get(e)}let c=new Map,l,u;if(t.expression.startsWith(`corr(`)&&t.expression.endsWith(`)`)){let[r,o]=t.expression.slice(5,-1).split(`,`).map(e=>e.trim()),s=a.get(r)?.byPosition,l=a.get(o)?.byPosition;if(!s||!l){n.push(`corr("${r}", "${o}") references unavailable inputs`);return}let d=[];for(let[e,t]of s){let n=l.get(e);n&&!t.missingDerived&&!n.missingDerived&&d.push([t.value,n.value])}if(u=d.length,d.length<2){i.push({name:e.name,kind:`formula`,pairs:u,error:`corr needs at least two paired positions`}),a.set(e.name,{byPosition:new Map,groupKeys:[]});return}let f=e=>e.reduce((e,t)=>e+t,0)/e.length,p=f(d.map(([e])=>e)),m=f(d.map(([,e])=>e)),h=0,g=0,_=0;for(let[e,t]of d)h+=(e-p)*(t-m),g+=(e-p)**2,_+=(t-m)**2;if(g===0||_===0){i.push({name:e.name,kind:`formula`,pairs:u,error:`corr is undefined for zero-variance inputs`}),a.set(e.name,{byPosition:new Map,groupKeys:[]});return}let v=h/Math.sqrt(g*_);c.set(0,{value:v,missingDerived:!1}),i.push({name:e.name,kind:`formula`,pairs:u,series:[{key:`corr`,label:`corr`,points:[{ts:0,value:v}]}]}),a.set(e.name,{byPosition:c,groupKeys:[`corr`]});return}for(let e of[...s].sort((e,t)=>e-t)){let n=this.evaluator.evaluate(t.expression,o,e);if(n.error){l=n.error;continue}c.set(e,{value:n.value,missingDerived:n.missingDerived})}let d=[{key:e.name,label:e.name,points:[...c.entries()].map(([e,t])=>({ts:e,value:t.value,...t.missingDerived?{missingDerived:!0}:{}}))}];a.set(e.name,{byPosition:c,unit:t.unit,groupKeys:[e.name]}),i.push({name:e.name,kind:`formula`,...t.unit?{unit:t.unit}:{},series:d,...l?{error:l}:{}})},s=[...r.assignments],c=!0,l=new Set;for(;s.length>0&&c;){c=!1;for(let e=s.length-1;e>=0;e--){let t=s[e];(t.formula?.references??[]).every(e=>l.has(e))&&(await o(t),l.add(t.name),s.splice(e,1),c=!0)}}let u=new Set(r.show);return{outputs:i.filter(e=>u.has(e.name)),diagnostics:n}}mergeDefaults(e,t){let n=e.parsed,r=n?.family===`aggregate`?n.groupBy:void 0,i=r?.length?r:t.defaults?.groupBy,a=(n&&n.family!==`pipeline`?n.window:void 0)??t.defaults?.window;return{queryText:e.queryText??``,...i?{groupBy:i}:{},...a?{window:a}:{}}}},Qm=class extends Map{getDataset(e){return this.get(e)}},$m=[`calc.acwr`,`calc.monotony`,`calc.strain`],eh=class{host;initialOptions;constructor(e,t={}){this.host=e,this.initialOptions=t}async run(e,t={}){let n={...this.initialOptions,...t,tokens:{...this.initialOptions.tokens,...t.tokens},context:t.context??this.initialOptions.context??Am()},r=th(e,n.tokens??{});return qm(r).doc.assignments.some(e=>nh(e.parsed))&&await this.host.rollupEnsure?.(),new Zm(async(e,t)=>(t.window&&(e=Xm(e,t.window,t.groupBy)),this.host.runAggregate(e,{context:n.context,window:t.window})),{formulaEvaluator:n.formulaEvaluator??this.host.formulaEvaluator,runFind:async e=>await this.host.runFind?.(e,n.context)??{error:`find queries are not supported by this host`},runPipeline:async e=>await this.host.runPipeline?.(e,n.context)??{error:`pipeline queries are not supported by this host`}}).run(r)}};function th(e,t){return e.replace(/\$([A-Za-z_][\w-]*)/g,(e,n)=>{let r=t[n];return r===void 0?e:r})}function nh(e){return e?e.family===`aggregate`?$m.includes(e.metric):e.family===`pipeline`?e.source.kind===`query`&&e.source.query.family===`aggregate`&&$m.includes(e.source.query.metric)?!0:e.transforms.some(e=>$m.includes(e.metric)):!1:!1}function rh(e){return e.trim().split(/[^a-zA-Z0-9]+/).filter(Boolean).map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function ih(e,t){let n=e?.[t];return typeof n==`string`&&n.length>0?n:void 0}function ah(e){let t=e?.fieldRef;if(!t||typeof t!=`object`)return;let{path:n,kind:r,dimension:i}=t;if(typeof n==`string`&&n.length!==0&&typeof r==`string`)return{path:n,kind:r,...typeof i==`string`?{dimension:i}:{}}}function oh(e){let t=e?.groupTags;if(!t||typeof t!=`object`)return;let n=Object.entries(t).filter(e=>typeof e[1]==`string`&&e[1].length>0).sort(([e],[t])=>e<t?-1:1);return n.length>0?Object.fromEntries(n):void 0}function sh(e){let t=new Map;for(let n of e){if(n.outputType!==`analytics`)continue;let e=n.metrics.find(e=>e.type===G.Label),r=n.metrics.find(e=>e.type!==G.Label&&typeof e.value==`number`);if(!e||!r)continue;let i=String(e.value??e.image??``);if(!i)continue;let a=ah(r.metadata),o=ih(r.metadata,`canonicalKey`)??a?.path??rh(i),s=ih(r.metadata,`effortSlug`),c=ih(r.metadata,`effortDiscipline`),l=ih(r.metadata,`effortIntensityTier`),u=ih(r.metadata,`grade`),d=oh(r.metadata)??(s?{effort:s}:void 0),f=a?`${sa(a)}${d?`:`+Object.entries(d).map(([e,t])=>`${e}=${t}`).join(`:`):``}`:d?`${o}:${Object.entries(d).map(([e,t])=>`${e}=${t}`).join(`:`)}`:o;t.set(f,{projectionName:i,metricKey:o,value:r.value,unit:r.unit,effortSlug:s,discipline:c,intensityTier:l,grade:u,groupTags:d,rowKey:f,...a?{fieldRef:a}:{},started:n.timeSpan?.started})}return t}function ch(e){let t=e;for(let e of t){let t=ih(e.metadata,`effortSlug`);if(t)return t;if((e.type===`effort`||e.type===G.Effort)&&typeof e.value==`string`&&e.value)return e.value}}function lh(e,t){return e.map((e,n)=>({id:`${t.resultId}:${n}`,resultId:t.resultId,noteId:t.noteId,blockContentId:t.blockContentId,pageId:t.pageId,origin:t.origin,timestamp:e.timeSpan?.started??t.workoutTimestamp??Date.now(),grain:`event`,outputType:e.outputType??`segment`,effortSlug:ch(e.metrics),metrics:e.metrics,timeSpan:e.timeSpan?.started===void 0?void 0:{started:e.timeSpan.started,ended:e.timeSpan.ended},metricTemporal:e.timeSpan?.started===void 0?void 0:e.metrics.map(()=>({temporalKind:`instant`,instant:e.timeSpan.started})),sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,line:e.line,sourceStatementId:e.sourceStatementId,text:e.text,dialect:e.dialect,completionReason:e.completionReason,blockId:t.blockId,blockVersion:t.blockVersion}))}function uh(e,t){let n=Date.now();return Array.from(sh(e).values(),e=>({id:`${t.resultId}:summary:${e.rowKey}`,resultId:t.resultId,noteId:t.noteId,blockContentId:t.blockContentId,pageId:t.pageId,origin:t.origin,timestamp:t.workoutTimestamp??e.started??n,grain:`summary`,outputType:`analytics`,representationKind:`calculated`,summaryCoverage:{scope:e.effortSlug?`effort`:e.groupTags?`partition`:`workout`,...e.effortSlug?{effortSlug:e.effortSlug}:{},...e.groupTags?{groupTags:e.groupTags}:{}},effortSlug:e.effortSlug,metrics:[{type:e.metricKey,value:e.value,...e.unit?{unit:e.unit}:{},metadata:{canonicalKey:e.metricKey,...e.fieldRef?{fieldRef:e.fieldRef,originalKey:e.projectionName}:{},...e.effortSlug?{effortSlug:e.effortSlug}:{},...e.discipline?{effortDiscipline:e.discipline}:{},...e.intensityTier?{effortIntensityTier:e.intensityTier}:{},...e.groupTags?{groupTags:e.groupTags}:{},...e.grade?{grade:e.grade}:{}}}],blockId:t.blockId,blockVersion:t.blockVersion}))}function dh(e){let t=e.metrics;if(e.grain===`summary`){let n=t[0];if(!n||typeof n.value!=`number`)return[];let r=ah(n.metadata),i=ih(n.metadata,`canonicalKey`)??r?.path??n.type??``,a=e.metricTemporal?.[0],o=oh(n.metadata);return[{id:`${e.id}:0`,noteId:e.noteId,blockContentId:e.blockContentId,origin:e.origin,pageId:e.pageId,grain:`summary`,blockId:e.blockId??``,blockVersion:e.blockVersion??0,resultId:e.resultId,type:i,value:n.value,unit:n.unit,label:i,metricKey:i,metricLabel:i,metricUnit:n.unit,...r?{fieldRef:r}:{},...a?.temporalKind===`civil-date`&&a.civilDate?{metricDate:a.civilDate,temporalKind:`civil-date`}:{},representationKind:e.representationKind??(e.outputType===`wellness`?`direct`:void 0),...e.summaryCoverage?{summaryCoverage:e.summaryCoverage}:{},...e.reducerStats?{reducerStats:e.reducerStats}:{},effortSlug:ih(n.metadata,`effortSlug`)??e.effortSlug,discipline:ih(n.metadata,`effortDiscipline`),intensityTier:ih(n.metadata,`effortIntensityTier`),grade:ih(n.metadata,`grade`),...o?{dimensions:o}:{},timestamp:e.timestamp,createdAt:e.timestamp}]}let n=t.find(e=>e.type===G.Label),r=n?String(n.value??n.image??``):``,i=t.find(e=>e.type===G.Effort||e.type===`effort`),a=ih(t[0]?.metadata,`effortSlug`)??e.effortSlug??(i&&typeof i.value==`string`?i.value:void 0),o=t.find(e=>e.type===G.Grade||e.type===`grade`),s=ih(t[0]?.metadata,`grade`)??(o&&typeof o.value==`string`?o.value:void 0),c=[],l={};for(let e of t){if(e.type===G.Label||e.type===`label`||e.type===G.Hint||e.type===`hint`)continue;let t=oa(e.value);if(t!==`string`&&t!==`boolean`)continue;let n=ah(e.metadata)?.path??aa(e.type??``);n&&(l[n]=String(e.value))}let u=Object.keys(l).length>0?l:void 0;return t.forEach(t=>{if(t.type===G.Label||t.type===`label`||typeof t.value!=`number`)return;let n=ah(t.metadata),i=t.type===G.Rep||t.type===`rep`?`reps`:t.type??`metric`;if(!n&&i===`custom`)return;let o=ih(t.metadata,`canonicalKey`)??n?.path??(r?rh(r):i),l=c.length,d=e.metricTemporal?.[l],f=d?.temporalKind===`instant`&&d.instant!==void 0?d.instant:e.timestamp;c.push({id:`${e.id}:${l}`,noteId:e.noteId,blockContentId:e.blockContentId,origin:e.origin,pageId:e.pageId,grain:`event`,blockId:e.blockId??``,blockVersion:e.blockVersion??0,resultId:e.resultId,type:o,value:t.value,unit:t.unit,label:r||o,metricKey:o,metricLabel:r||o,metricUnit:t.unit,...n?{fieldRef:n}:{},...d?.temporalKind===`civil-date`&&d.civilDate?{metricDate:d.civilDate,temporalKind:`civil-date`}:{},effortSlug:ih(t.metadata,`effortSlug`)??a,discipline:ih(t.metadata,`effortDiscipline`),intensityTier:ih(t.metadata,`effortIntensityTier`),grade:ih(t.metadata,`grade`)??s,...u?{dimensions:u}:{},timestamp:f,createdAt:e.timestamp})}),c}function fh(e){return[...e].sort((e,t)=>e.timestamp===t.timestamp?e.id.localeCompare(t.id):e.timestamp-t.timestamp).map((e,t)=>({id:t,outputType:e.outputType,timeSpan:e.timeSpan??{started:e.timestamp},metrics:e.metrics,sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,line:e.line,sourceStatementId:e.sourceStatementId,text:e.text,dialect:e.dialect,completionReason:e.completionReason}))}function ph(e,t){let n=e?.groupTags?Object.entries(e.groupTags).sort(([e],[t])=>e<t?-1:1).map(([e,t])=>`${e}=${t}`).join(`,`):``;return`${e?.effortSlug??t??``}|${n}`}function mh(e,t){if(!e)return t===`sum`||t===`min`||t===`max`||t===`last`||t===`delta`;switch(t){case`sum`:case`min`:case`max`:case`last`:return!0;case`avg`:case`count`:return typeof e.observedCount==`number`;case`delta`:return!0}}function hh(e,t){let n={detailPopulations:0,selectedSummaries:[],ignoredDuplicates:[],insufficientScopes:[]},r=[],i=new Map;for(let t of e){let e=`${t.resultId}\u0000${t.metricKey??t.type}`,n=i.get(e);n?n.push(t):i.set(e,[t])}for(let[e,a]of i){let[i,o]=e.split(`\0`),s=a.filter(e=>e.grain!==`summary`||e.representationKind===`direct`),c=a.filter(e=>e.grain===`summary`);if(s.length>0){n.detailPopulations+=1,r.push(...s);let e=new Set(s.map(e=>ph(void 0,e.effortSlug)));for(let a of c){let s=ph(a.summaryCoverage,a.effortSlug);s!==`|`&&a.summaryCoverage!==void 0&&!e.has(s)&&mh(a.reducerStats,t)?(n.selectedSummaries.push({resultId:i,metricKey:o,coverage:a.summaryCoverage}),r.push(a)):n.ignoredDuplicates.push({resultId:i,metricKey:o,id:a.id})}continue}let l=!1;for(let e of c)mh(e.reducerStats,t)&&(n.selectedSummaries.push({resultId:i,metricKey:o,coverage:e.summaryCoverage}),r.push(e),l=!0);l||n.insufficientScopes.push({resultId:i,metricKey:o,reason:t===`avg`||t===`count`||t===`delta`?`summary lacks the retained observation count this operation requires`:`no detail rows and no sufficient summary for this population`})}return{selected:r,report:n}}function gh(e){let t=new Set,n=[];for(let r of e)t.has(r.id)||(t.add(r.id),n.push(r));return n}var _h=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function vh(e){if(e.catalog)return e.catalog;let t=!!e.sourceId&&/^(collection|feed):/.test(e.sourceId),n=t?e.sourceId.replace(/^(collection|feed):/,``):e.noteId||e.id||``;if(!n||_h.test(n))return;let r=n.startsWith(`feeds/`)?n.slice(6):n;if(!(!t&&!r.includes(`/`)))return r.split(`/`)[0]}function yh(e,t){let n=e.sourceId;if(t===`all`)return!n||yf.some(t=>yh(e,t));if(t===`journal`)return e.type===`playground`||e.id?.startsWith(`playground/`)||e.noteId?.startsWith(`playground/`)||n&&n!==`journal`&&!_h.test(n)&&!/^journal\/\d{4}-\d{2}-\d{2}$/.test(n)?!1:e.type!==`dashboard`&&e.type!==`effort`&&e.type!==`equipment`&&e.seedOrigin!==`seed`&&e.seedChunkId===void 0&&!e.catalog&&!(e.sourcePath&&e.sourcePath.startsWith(`markdown/`));if(t===`feed`||t===`feeds`)return!!n&&(n.startsWith(`collection:`)||n.startsWith(`page:collection:`));if(t===`page`||t===`pages`)return!!n&&(n===`page`||n.startsWith(`page:`)||n.startsWith(`guides:`));if(t===`guide`||t===`guides`)return!!n&&n.startsWith(`guides:`);if(t===`playground`)return n===`playground`||e.type===`playground`;if(t.startsWith(`feed:`)){let e=t.slice(5).replace(/^feeds\//,``);if(!e||!n?.startsWith(`feed:`))return!1;let r=n.slice(5).replace(/^feeds\//,``);return r===e||r.startsWith(`${e}/`)}return n===t}function bh(e,t){for(let n of t){if(n.key!==`source`)continue;let t=n.values.map(e=>e.value);e=e.filter(e=>{let r=t.some(t=>yh(e,t));return n.negate?!r:r})}return e}var xh={feed:!0,feeds:!0,page:!0,pages:!0,guide:!0,guides:!0,playground:!0};function Sh(e,t,n){let r=[],i=[],a=!1;for(let n of e){let e=!n.negate&&n.values.every(e=>!e.wildcard),o=e?n.values.map(e=>e.value):[];if(n.key===`source`&&e&&n.values.every(e=>xh[e.value]===!0)){r.push({field:`source`,values:o});continue}if(n.key===`type`&&e){i.push({field:`type`,values:o});continue}if(n.key===`page`){a=!0;continue}if(n.key===`text`&&e){i.push({field:`text`,value:o.join(` `)});continue}if(n.key===`note`&&e){i.push({field:t===`block`?`noteId`:`id`,values:o});continue}a=!0}return t===`note`&&n?.length&&r.push({field:`source`,values:n}),t===`block`&&r.push({field:`sourceFence`}),{selection:r,filters:i,residual:a}}function Ch(e,t){let n=bh(e,t.filters);if(t.sourceScope?.length){let e=t.sourceScope;n=n.filter(t=>e.some(e=>yh(t,e)))}return n}function wh(e,t,n){let r=e.pipes,i=r?.limit!==void 0||(r?.offset??0)>0;return n||e.join||e.window||t.range||r?.order||!i?{order:[{field:`id`,direction:`asc`}],paged:!1}:{order:[{field:`id`,direction:`asc`}],...r?.offset?{offset:r.offset}:{},...r?.limit===void 0?{}:{limit:r.limit},paged:!0}}function Th(e){return e.context?e.context:Am(e.anchorNow)}function Eh(e,t,n,r){return Wm(e,t?Um(t,r):n)}function Dh(e){let t=e.find(e=>e.outputType===`completion`);return t?.timestamp?t.timestamp:e[0]?.timestamp??0}function Oh(e,t,n){if(e.window)return Um(e.window,n);if(t.rangeStart!==void 0||t.rangeEnd!==void 0)return{start:t.rangeStart??0,end:t.rangeEnd??2**53-1,endExclusive:!1}}var kh={getEventsByTimeRange:async()=>[],getEventsByResult:async()=>[],getEventsForNote:async()=>[],getEventsByContent:async()=>[],scanAll:async()=>[],appendEvents:async()=>{},finalizeSummaries:async()=>{},deleteEvents:async()=>{}},Ah={getAllNotes:async()=>[],getNoteIdsForTag:async()=>new Set,getNoteTagLabels:async()=>[]},jh={getAllBlocks:async()=>[]},Mh={getAllEfforts:async()=>[]};function Nh(e,t,n){let r=[],i=e;for(;i<t;){let e=Im(i,n);r[r.length-1]!==e&&r.push(e);let t=Vm(Lm(e,1),n);if(t<=i)break;i=t}return r}function Ph(e,t,n){switch(t){case`effort`:return e.effortSlug;case`discipline`:return e.discipline;case`intensity`:return e.intensityTier;case`grade`:return e.grade;case`note`:return e.noteId;case`page`:return e.pageId;case`origin`:return e.origin;case`grain`:return e.grain;case`metric`:return e.metricKey;case`block`:return e.blockContentId;case`result`:return e.resultId;case`tags`:return n.get(e.noteId)??[];default:{let n=e.dimensions;return n?n[t]??n[ia(t)]:void 0}}}function Fh(e,t,n){let r=new Map;for(let e of t){let t=`${e.negate?`!`:``}${e.key}`,n=r.get(t);n?n.push(e):r.set(t,[e])}return[...r.values()].every(t=>{let r=t[0].key,i=t[0].negate,a=Ph(e,r,n),o=(Array.isArray(a)?a:a===void 0?[]:[a]).some(e=>t.some(t=>t.values.some(t=>t.wildcard?e.startsWith(t.value):e===t.value)));return i?!o:o})}function Ih(e,t,n,r){if(t===`day`)return e.metricDate??Im(e.timestamp,r.timeZone);if(t===`week`)return zm(e.metricDate??Im(e.timestamp,r.timeZone));if(t===`session`)return e.resultId;let i=Ph(e,t,n);return i===void 0?Lh:typeof i==`string`?i:i.length?i.join(`,`):Lh}var Lh=`\0unassigned`;function Rh(e,t,n){if(t===`count`)return{state:`observed`,value:n.length};if(e.length===0)return{state:`absent`,value:0};switch(t){case`sum`:return{state:`observed`,value:e.reduce((e,t)=>e+t,0)};case`avg`:return{state:`observed`,value:e.reduce((e,t)=>e+t,0)/e.length};case`min`:return{state:`observed`,value:Math.min(...e)};case`max`:return{state:`observed`,value:Math.max(...e)};case`last`:{let t=0;for(let e=0;e<n.length;e++)n[e].timestamp>n[t].timestamp&&(t=e);return{state:`observed`,value:e[t]}}case`delta`:{if(n.length<2)return{state:`absent`,value:0};let t=n.map((t,n)=>({point:t,value:e[n]})).sort((e,t)=>e.point.timestamp-t.point.timestamp),r=t[0],i=t[t.length-1],a=t.filter(e=>e.point.timestamp===r.point.timestamp),o=t.filter(e=>e.point.timestamp===i.point.timestamp),s=new Set(a.map(e=>e.point.value)),c=new Set(o.map(e=>e.point.value));return s.size>1||c.size>1?{state:`error`,message:`Ambiguous delta order: tied endpoint observations differ in value without recorded order`}:{state:`observed`,value:i.value-r.value}}}}function zh(e,t,n){switch(t){case`>`:return e>n;case`>=`:return e>=n;case`<`:return e<n;case`<=`:return e<=n;case`==`:return e===n;case`!=`:return e!==n}}function Bh(e,t,n,r){let i={selected:0,buckets:0,aggregated:0,groups:0},a=[t.join&&`where <content> join`,t.filters.length>0&&`tag filters`,t.groupBy.length>0&&`by {…} grouping`,t.rollup&&`.rollup(…)`].filter(Boolean);if(a.length>0)return{parsed:t,series:[],stages:{...i},matched:[],error:`:${t.agg}{…} on a carried stage cannot apply ${a.join(`, `)} — carried values carry no fact dimensions; author them in the source stage.`};if(e.error)return e;let o=Oh(t,n,r),s=[],c=[],l=0;for(let t of e.series)for(let e of t.points)e.missing||o&&!Wm(e.ts,o)||(s.push(e.value),c.push({timestamp:e.ts,value:e.value,noteId:``,resultId:``}),e.ts>l&&(l=e.ts));if(t.metric&&!(e.parsed.metric&&((e,t)=>e===t||e===`rep`&&t===`reps`||e===`reps`&&t===`rep`)(t.metric,e.parsed.metric)))return{parsed:t,series:[],stages:{...i},matched:[],error:`:${t.agg}{metric:${t.metric}} on a carried stage reduces the preceding "${e.parsed.metric||`metricless`}" values — metric:${t.metric} does not exist on them.`};let u=t.agg===`count`?`count`:e.unit;if(t.displayUnit){if(!u||u===`count`)return{parsed:t,series:[],stages:{...i},matched:[],error:`Cannot apply in ${t.displayUnit} — the preceding stage carries no convertible unit.`};try{for(let e=0;e<s.length;e++){let n=ha(s[e],u,t.displayUnit);s[e]=n,c[e]={...c[e],value:n}}u=t.displayUnit}catch(e){return{parsed:t,series:[],stages:{...i},matched:[],error:e instanceof Error?e.message:String(e)}}}let d=Rh(s,t.agg,c);return d.state===`error`?{parsed:t,series:[],stages:{...i},matched:[],error:d.message}:{parsed:t,series:[{key:t.agg,label:t.agg,points:[{ts:l||r.instant,value:d.value,...d.state===`absent`?{missing:!0}:{}}],unit:u}],stages:{selected:s.length,buckets:1,aggregated:1,groups:1},matched:[],...u?{unit:u}:{}}}var Vh=class{store;noteStore;blockStore;effortStore;pageStore;relationStore;datasetStore;blockEffortsStore={getAllFromIndex:async()=>[]};tagsStore={getAllFromIndex:async()=>[]};noteTagsStore={getAllFromIndex:async()=>[]};constructor(e,t,n,r){if(e&&typeof e==`object`&&(`eventStore`in e||`noteStore`in e||`blockStore`in e||`effortStore`in e||`pageStore`in e||`relationStore`in e||`datasetStore`in e)){let t=e;this.store=t.eventStore??kh,this.noteStore=t.noteStore??Ah,this.blockStore=t.blockStore??jh,this.effortStore=t.effortStore??Mh,this.pageStore=t.pageStore,this.relationStore=t.relationStore,this.datasetStore=t.datasetStore,t.blockEffortsStore&&(this.blockEffortsStore=t.blockEffortsStore),t.tagsStore&&(this.tagsStore=t.tagsStore),t.noteTagsStore&&(this.noteTagsStore=t.noteTagsStore)}else this.store=e??kh,this.noteStore=t??Ah,this.blockStore=n??jh,this.effortStore=r??Mh}async getFactsByTimeRange(e,t){return(await this.store.getEventsByTimeRange(e,t)).flatMap(dh)}async runQuery(e,t={}){let n=X(e);return op(n)?this.pipelineResultToQueryResult(await this.runPipelineParsed(n,t)):this.run(n,t)}async runRows(e,t={}){let n=e.filters.some(e=>[`result`,`block`,`note`].includes(e.key)),r=e.outputType??(e.target===`all`?void 0:e.target),i,a=e.filters;r?r===`segment`&&!n?i=`segment`:(i=`session`,a=[...e.filters,{key:`plane`,negate:!1,values:[{value:r,wildcard:!1}]}]):i=`session`;let o={family:`find`,raw:e.raw,target:i,filters:a,...e.window?{window:e.window}:{},...e.pipes?{pipes:e.pipes}:{},...e.error?{error:e.error}:{}},s=await this.runFind(o,t);return{parsed:e,runs:s.runs??[],...s.table?{table:s.table}:{}}}async runFindSession(e,t={}){let n=Th(t),r=t=>e.filters.filter(e=>e.key===t).flatMap(e=>e.values.map(e=>e.value)),i=r(`result`),a=r(`block`),o=r(`note`),s=new Map,c=new Set,l=e=>{for(let t of e){if(c.has(t.id))continue;c.add(t.id);let e=s.get(t.resultId);e?e.push(t):s.set(t.resultId,[t])}};if(i.length+a.length+o.length===0){let r=e.window?Um(e.window,n):t.range?t.range:void 0;l(r?await this.store.getEventsByTimeRange(r.start,r.end):await this.store.scanAll())}else{for(let e of i)l(await this.store.getEventsByResult(e));for(let e of a)l(await this.store.getEventsByContent(e));for(let e of o)l(await this.store.getEventsForNote(e))}let u=[...s.entries()].filter(([,e])=>e.length>0);(e.window||t.range)&&(u=u.filter(([,r])=>Eh(Dh(r),e.window,t.range,n))),u.sort((e,t)=>Dh(t[1])-Dh(e[1]));let d=e.filters.filter(e=>e.key===`plane`),f=u.map(([e,t])=>{let n=t;return d.length>0&&(n=n.filter(e=>d.every(t=>{let n=t.values.some(t=>t.value===e.outputType);return t.negate?!n:n}))),{resultId:e,noteId:t[0].noteId,timestamp:Dh(t),events:n}}).filter(e=>e.events.length>0),p=f,m=e.pipes;if(m&&(m.limit!==void 0||(m.offset??0)>0)){let e=m.offset??0;f=m.limit===void 0?f.slice(e):f.slice(e,e+m.limit)}return{parsed:e,notes:[],blocks:[],runs:f,events:p.flatMap(e=>e.events),stages:{selected:u.length,matched:f.length}}}async runFindTable(e,t={}){let n=Th(t),r=t=>e.filters.filter(e=>e.key===t).flatMap(e=>e.values.map(e=>e.value)),i=r(`result`),a=r(`block`),o=r(`note`),s=[];if(i.length+a.length+o.length===0){let r=e.window?Um(e.window,n):t.range?t.range:void 0,i=r&&r.start>0&&r.end<2**53-1?r:void 0;if(i){if(s=await this.store.getEventsByTimeRange(i.start,i.end),this.store.getEventsByMetricDates){let e=Nh(i.start,i.end,n.timeZone);if(e.length>0){let t=await this.store.getEventsByMetricDates(e);if(t.length>0){let e=new Set(s.map(e=>e.id));s=[...s,...t.filter(t=>!e.has(t.id))]}}}}else s=await this.store.scanAll()}else{let e=new Set,t=t=>{for(let n of t)e.has(n.id)||(e.add(n.id),s.push(n))};for(let e of i)t(await this.store.getEventsByResult(e));for(let e of a)t(await this.store.getEventsByContent(e));for(let e of o)t(await this.store.getEventsForNote(e))}let c=new Set,l=[];for(let t of s)t.grain===`event`&&(e.target!==`segment`||t.outputType===`segment`)&&(c.has(t.id)||(c.add(t.id),l.push(t)));let u=new Map,d=e=>{let t=e.metricTemporal?.[0];if(t?.temporalKind===`civil-date`&&t.civilDate)return t.civilDate;let r=u.get(e.timestamp);if(r)return r;let i=Im(e.timestamp,n.timeZone);return u.set(e.timestamp,i),i},f=e=>{let t=e.metricTemporal?.[0];return t?.temporalKind===`civil-date`&&t.civilDate?Hm(t.civilDate,n.timeZone):e.timestamp},p=new Map,m=e.filters.filter(e=>![`result`,`block`,`note`,`plane`].includes(e.key)),h=!!(e.window||t.range),g=l.filter(r=>!h||Eh(f(r),e.window,t.range,n)).filter(e=>{if(m.length===0)return!0;let t=dh(e);return t.length!==0&&t.some(e=>Fh(e,m,p))}),_=g.length,v=new Map,y=new Set;for(let e of g)for(let t of e.metrics)if(t.type&&t.type!==`label`&&typeof t.value==`number`){y.add(t.type);let e=typeof t.metadata?.canonicalKey==`string`?t.metadata.canonicalKey:void 0;t.unit&&(v.set(t.type,t.unit),e&&v.set(e,t.unit))}let b=e.pipes,x=b?.select?.map(e=>e.col)??[`date`,`effort`,`discipline`,...y],S=t=>b?.select?.find(e=>e.col===t)?.unit??(e.displayUnit?e.displayUnit:v.get(t)),C=x.map(e=>e===`date`?{name:`date`,type:`date`}:e===`effort`||e===`discipline`||e===`note`||e===`grade`||e===`intensity`?{name:e,type:`string`}:{name:e,type:`number`,...S(e)?{unit:S(e)}:{}}),w=new Map(C.map(e=>[e.name,e.type])),T=g.map(t=>{let n={};for(let r of x)if(w.get(r)===`date`)n.date=d(t);else if(r===`effort`)n.effort=t.effortSlug;else if(r===`discipline`)n.discipline=t.metrics.find(e=>e.metadata?.effortDiscipline)?.metadata?.effortDiscipline;else{let i=t.metrics.find(e=>e.type===r||e.metadata?.canonicalKey===r);if(i&&typeof i.value==`number`){let t=i.value;if(e.displayUnit&&i.unit&&i.unit!==e.displayUnit)try{t=ha(t,i.unit,e.displayUnit)}catch{}n[r]=t}else n[r]=i?i.value:void 0}return n.__id=t.id,n.__resultId=t.resultId,n});for(let e of[...b?.order??[]].reverse()){let t=e.dir===`desc`?-1:1;T=[...T].sort((n,r)=>{let i=n[e.col]??n.__id,a=r[e.col]??r.__id;return i===a?0:(i>a?1:-1)*t})}let E;if(e.groupBy&&e.groupBy.length>0){let t=new Map;for(let n of T){let r=e.groupBy.map(e=>String(n[e]??`unassigned`)).join(` · `),i=t.get(r);i?i.push(n):t.set(r,[n])}E=[...t.entries()].map(([e,t])=>({key:e,label:e,rows:t}))}let D=b?.offset??0,O=b?.limit;return{parsed:e,notes:[],blocks:[],runs:[],events:g,table:{columns:C,rows:O===void 0?T.slice(D):T.slice(D,D+O),...E?{groups:E}:{},totalCount:_,...O===void 0?{}:{limit:O},...D>0?{offset:D}:{}},stages:{selected:g.length,matched:_}}}async runFind(e,t={}){if(e.error)return{parsed:e,notes:[],blocks:[],stages:{selected:0,matched:0}};let n=Np(e);if(n.length){let t=[...new Set([...e.advisories??[],...n])];t.length!==(e.advisories?.length??0)&&(e={...e,advisories:t})}if(e.target===`block`)return this.runFindBlock(e,t);if(e.target===`effort`)return this.runFindEffort(e);if(e.target===`session`)return this.runFindSession(e,t);if(e.target===`segment`||e.target===`event`)return this.runFindTable(e,t);if(e.target===`note`&&e.filters.some(e=>e.key===`type`&&!e.negate&&e.values.some(e=>e.value===`feed`))&&(e.filters.some(e=>e.key===`source`&&!e.negate&&e.values.some(e=>e.value===`feed`||e.value===`feeds`))||e.sourceScope?.includes(`feeds`)))return this.runFindCatalog(e,t,await this.noteStore.getAllNotes());let r=Sh(e.filters,`note`,e.sourceScope),i=wh(e,t,r.residual),a=(r.filters.length>0||r.selection.length>0||i.paged)&&this.noteStore.queryDomain?await this.noteStore.queryDomain({plan:`notes`,selection:r.selection,...r.filters.length?{filters:r.filters}:{},...i.order?{order:i.order}:{},...i.offset===void 0?{}:{offset:i.offset},...i.limit===void 0?{}:{limit:i.limit}}):void 0,o=a&&a.plan===`notes`?a:void 0,s=o?o.rows:await this.noteStore.getAllNotes(),c=o?o.selectedCount:void 0,l=!!o&&i.paged;s=Ch(s,e);let u=c??s.length,d=Th(t);for(let t of e.filters)if(t.key===`tags`&&!t.negate){let e=new Set;for(let n of t.values)(await this.noteStore.getNoteIdsForTag(n.value)).forEach(t=>e.add(t));s=s.filter(t=>e.has(t.id))}else if(t.key===`tags`&&t.negate)for(let e of t.values){let t=await this.noteStore.getNoteIdsForTag(e.value);s=s.filter(e=>!t.has(e.id))}else if(t.key===`effort`&&!t.negate){let e=new Set;for(let n of t.values)(await this.getNoteIdsForEffort(n.value)).forEach(t=>e.add(t));s=s.filter(t=>e.has(t.id))}else if(uf.includes(t.key)&&!t.negate){let e=new Set;for(let n of t.values)(await this.getNoteIdsForTypedTag(t.key,n.value)).forEach(t=>e.add(t));s=s.filter(t=>e.has(t.id))}for(let t of e.filters)if(t.key===`text`){let e=t.values.map(e=>e.value).join(` `).toLowerCase();s=s.filter(n=>{let r=n.title.toLowerCase().includes(e)||n.rawContent.toLowerCase().includes(e);return t.negate?!r:r})}for(let t of e.filters)if(t.key===`type`&&!t.negate){let e=new Set(t.values.map(e=>e.value));s=s.filter(t=>t.type&&e.has(t.type))}for(let t of e.filters)if(t.key===`page`){let e=t.values.some(e=>e.value===`true`||e.value===`1`),n=t.negate?!e:e;s=s.filter(e=>n?e.type===`page`:e.type!==`page`)}for(let t of e.filters)if(t.key===`catalog`){let e=new Set(t.values.map(e=>e.value));s=s.filter(n=>{let r=vh(n);if(!r)return t.negate;let i=e.has(r);return t.negate?!i:i})}for(let t of e.filters)if(t.key===`note`){let e=new Set(t.values.map(e=>e.value));s=s.filter(n=>t.negate?!e.has(n.id):e.has(n.id))}if((e.window||t.range)&&(s=s.filter(n=>Eh(n.date??n.createdAt,e.window,t.range,d))),e.join&&(s=(await this.applyMetricJoin(e,s,[])).notes),e.pipes?.order)for(let t of[...e.pipes.order].reverse()){let e=t.dir===`desc`?-1:1;s=[...s].sort((n,r)=>{let i=n[t.col]??``,a=r[t.col]??``;return i===a?0:(i>a?1:-1)*e})}let f=e.pipes;if(!l&&f&&(f.limit!==void 0||(f.offset??0)>0)){let e=f.offset??0;s=f.limit===void 0?s.slice(e):s.slice(e,e+f.limit)}return{parsed:e,notes:s,blocks:[],...s.length&&(this.pageStore||this.relationStore)?{containers:await this.containersForNotes(s)}:{},stages:{selected:u,matched:s.length}}}async containersForNotes(e){let t={},n=this.relationStore?await this.relationStore.getBatches([...new Set(e.map(e=>e.id))]):void 0,r=new Map;for(let i of e){let e,a;if(n){a=n.get(i.id);let[t]=[...a?.links??[]].sort((e,t)=>(e.position??0)-(t.position??0));e=t?a.pages.find(e=>e.id===t.pageId):void 0,a&&a.tags.length>0&&(!i.tags||i.tags.length===0)&&(i.tags=a.tags.map(e=>e.label))}else{let t=await this.pageStore.getNotePages(i.id);if(t.length>0){let[n]=[...t].sort((e,t)=>(e.position??0)-(t.position??0));r.has(n.pageId)||r.set(n.pageId,await this.pageStore.getPage(n.pageId)),e=r.get(n.pageId)}}t[i.id]=e?{kind:`page`,id:e.id,...e.slug?{slug:e.slug}:{},...e.date?{date:e.date}:{}}:{kind:`note`,id:i.id}}return t}async hydrateBlocks(e){let t=[...new Set(e.map(e=>e.noteId))];if(t.length===0)return[];let n=this.noteStore.getNotesByIds?await this.noteStore.getNotesByIds(t):await this.noteStore.getAllNotes(),r=new Map;for(let e of n)if(!(!Number.isSafeInteger(e.sourceRevision)||e.sourceRevision<1))try{ja(e.rawContent,e.blocks,e.sourceRevision),r.set(e.id,e)}catch{}return e.flatMap(e=>{let t=r.get(e.noteId),n=t?.blocks[e.blockId];return!t||!n||e.id!==`${t.id}:${n.id}`||n.id!==e.blockId||n.kind!==e.dataType||n.version!==e.blockVersion||n.sourceRevision!==e.sourceRevision||t.sourceRevision!==e.sourceRevision||n.from!==e.from||n.to!==e.to?[]:[{...e,rawContent:t.rawContent.slice(n.from,n.to)}]})}async runFindBlock(e,t={}){let n=Sh(e.filters,`block`),r=wh(e,t,n.residual),i=(n.filters.length>0||n.selection.length>1||r.paged)&&this.blockStore.queryDomain?await this.blockStore.queryDomain({plan:`blocks`,selection:n.selection,...n.filters.length?{filters:n.filters}:{},...r.order?{order:r.order}:{},...r.offset===void 0?{}:{offset:r.offset},...r.limit===void 0?{}:{limit:r.limit}}):void 0,a=i&&i.plan===`blocks`?i:void 0,o=a?a.rows:await this.blockStore.getAllBlocks(),s=await this.hydrateBlocks(o),c=s.length!==o.length,l=a&&!c?a.selectedCount:void 0,u=!!a&&r.paged&&!c;a&&c&&(s=await this.hydrateBlocks(await this.blockStore.getAllBlocks())),s=bh(s,e.filters),s=s.filter(e=>!e.sourceId||yf.some(t=>yh(e,t)));let d=l??s.length,f=Th(t);for(let t of e.filters)if(t.key===`text`){let e=t.values.map(e=>e.value).join(` `).toLowerCase();s=s.filter(n=>t.negate!==n.rawContent.toLowerCase().includes(e))}for(let t of e.filters)if(t.key===`type`&&!t.negate){let e=new Set(t.values.map(e=>e.value));s=s.filter(t=>e.has(t.dataType))}for(let t of e.filters)if(t.key===`catalog`){let e=new Set(t.values.map(e=>e.value));s=s.filter(n=>{let r=vh(n);if(!r)return t.negate;let i=e.has(r);return t.negate?!i:i})}for(let t of e.filters)if(t.key===`tags`&&!t.negate){let e=new Set;for(let n of t.values)(await this.noteStore.getNoteIdsForTag(n.value)).forEach(t=>e.add(t));s=s.filter(t=>e.has(t.noteId))}else if(t.key===`effort`&&!t.negate){let e=new Set;for(let n of t.values){let t=await this.blockEffortsStore.getAllFromIndex(`by-effort`,n.value);for(let n of t)e.add(`${n.noteId}:${n.blockId}`)}s=s.filter(t=>e.has(`${t.noteId}:${t.blockId}`))}for(let t of e.filters)if(t.key===`note`){let e=new Set(t.values.map(e=>e.value));s=s.filter(n=>t.negate?!e.has(n.noteId):e.has(n.noteId))}if(e.window||t.range){let n=await this.noteStore.getAllNotes(),r=new Map(n.map(e=>[e.id,e.date??e.createdAt]));s=s.filter(n=>Eh(r.get(n.noteId)??n.createdAt,e.window,t.range,f))}if(e.join&&(s=(await this.applyMetricJoin(e,[],s)).blocks),e.pipes?.order)for(let t of[...e.pipes.order].reverse()){let e=t.dir===`desc`?-1:1;s=[...s].sort((n,r)=>{let i=n[t.col]??``,a=r[t.col]??``;return i===a?0:(i>a?1:-1)*e})}let p=e.pipes;if(!u&&p&&(p.limit!==void 0||(p.offset??0)>0)){let e=p.offset??0;s=p.limit===void 0?s.slice(e):s.slice(e,e+p.limit)}return{parsed:e,notes:[],blocks:s,stages:{selected:d,matched:s.length}}}async runFindEffort(e){let t=await this.effortStore.getAllEfforts(),n=t.length,r=(e,t,n,r)=>{let i=n.toLowerCase();switch(t){case`effort`:return r?e.slug.includes(i)||e.label.toLowerCase().includes(i)||e.aliases.some(e=>e.toLowerCase().includes(i)):e.slug===n||e.label.toLowerCase()===i||e.aliases.some(e=>e.toLowerCase()===i);case`discipline`:return e.baseAttributes.discipline===n;case`intensity`:return e.baseAttributes.intensityTier===n;case`origin`:return e.registrySource===n;case`text`:return e.label.toLowerCase().includes(i)||e.slug.includes(i)||e.aliases.some(e=>e.toLowerCase().includes(i));default:return!0}},i=t;for(let t of e.filters)[`effort`,`discipline`,`intensity`,`origin`,`text`].includes(t.key)&&(i=i.filter(e=>{let n=t.values.some(n=>r(e,t.key,n.value,n.wildcard));return t.negate?!n:n}));if(e.pipes?.order)for(let t of[...e.pipes.order].reverse()){let e=t.dir===`desc`?-1:1;i=[...i].sort((n,r)=>{let i=n[t.col]??``,a=r[t.col]??``;return i===a?0:(i>a?1:-1)*e})}let a=e.pipes;if(a&&(a.limit!==void 0||(a.offset??0)>0)){let e=a.offset??0;i=a.limit===void 0?i.slice(e):i.slice(e,e+a.limit)}return{parsed:e,notes:[],blocks:[],efforts:i,stages:{selected:n,matched:i.length}}}async run(e,t={}){if(op(e))throw Error(`Pipeline queries do not aggregate directly — execute them with runPipeline().`);if(ip(e))return{parsed:{family:`aggregate`,raw:e.raw,agg:`count`,metric:e.target,filters:[],groupBy:[]},series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[],...e.error?{error:e.error}:{}};let n={parsed:e,series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[]};if(e.error)return n;if(e.join)return this.runJoined(e,t);let r=Th(t),i=Oh(e,t,r),a=i?{start:i.start,end:i.end}:void 0,o=a&&a.start>0&&a.end<2**53-1?a:void 0,s=o?await this.store.getEventsByTimeRange(o.start,o.end):await this.store.scanAll();if(o&&this.store.getEventsByMetricDates){let e=Nh(o.start,o.end,r.timeZone);if(e.length>0){let t=await this.store.getEventsByMetricDates(e);if(t.length>0){let e=new Set(s.map(e=>e.id));s=[...s,...t.filter(t=>!e.has(t.id))]}}}return this.aggregateEventRows(e,s,t,i)}async runAggregateEvents(e,t,n={}){let r={parsed:e,series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[]};if(e.error)return r;if(e.join)return{...r,error:`where <content> joins re-read the store and cannot run on carried pipeline data — author the join in the source stage.`};let i=Oh(e,n,Th(n));return this.aggregateEventRows(e,t,n,i)}async runPipeline(e,t={}){return this.runPipelineParsed(X(e),t)}async runPipelineParsed(e,t={}){if(!op(e)){let t=e.error??`Not a pipeline: "${e.raw}". Pipelines look like :source{filters} | :sum{metric:x} | :table.`;return{parsed:{family:`pipeline`,raw:e.raw,source:{kind:`dataset`,name:``},transforms:[],error:t},error:t}}let n=t=>({parsed:e,error:t});if(e.error)return n(e.error);let r,i,a,o=[];if(e.source.kind===`dataset`){let r=e.source.name,i=t.pageSources?.get(r)??this.datasetStore?.getDataset(r);if(!i)return n(`Unknown dataset "${r}" — the host must register it before the query runs.`);a=i.events,o=i.notes}else if(ip(e.source.query)){let i=e.source.query;if(r=await this.runFind(i,{context:t.context,...t.rangeStart!==void 0||t.rangeEnd!==void 0?{range:{start:t.rangeStart??0,end:t.rangeEnd??2**53-1,endExclusive:!1}}:{}}),i.error)return n(i.error)}else if(i=await this.run(e.source.query,t),e.source.query.error)return n(e.source.query.error);if(e.transforms.length===0)return r?{parsed:e,...r.notes.length?{notes:r.notes}:{},...r.blocks.length?{blocks:r.blocks}:{},...r.efforts?.length?{efforts:r.efforts}:{},...r.runs?.length?{runs:r.runs}:{},...r.table?{table:r.table}:{},...r.containers?{containers:r.containers}:{},...e.sink?{chart:e.sink}:{}}:e.source.kind===`dataset`?{parsed:e,notes:o,...e.sink?{chart:e.sink}:{}}:{parsed:e,...i?{series:i.series,...i.unit?{unit:i.unit}:{},...i.error?{error:i.error}:{}}:{},...e.sink?{chart:e.sink}:{}};if(i)for(let n of e.transforms){if(i.error)break;i=Bh(i,n,t,Th(t))}else{!a&&r&&(a=await this.sourceEventsFromFind(r)),i=await this.runAggregateEvents(e.transforms[0],a??[],t);for(let n of e.transforms.slice(1)){if(i.error)break;i=Bh(i,n,t,Th(t))}}return{parsed:e,series:i.series,...i.unit?{unit:i.unit}:{},...i.error?{error:i.error}:{},...e.sink?{chart:e.sink}:{}}}async sourceEventsFromFind(e){if(e.events)return e.events;let t=[];for(let n of e.notes)t.push(...await this.store.getEventsForNote(n.id));for(let n of e.blocks)n.dataType===`wod`&&n.blockContentId&&t.push(...await this.store.getEventsByContent(n.blockContentId));return t}pipelineResultToQueryResult(e){let t={family:`aggregate`,raw:e.parsed.raw,agg:`count`,metric:``,filters:[],groupBy:[]};if(e.series){let n=e.series.reduce((e,t)=>e+t.points.length,0);return{parsed:t,series:e.series,stages:{selected:0,buckets:e.series[0]?.points.length??0,aggregated:n,groups:e.series.length},matched:[],...e.unit?{unit:e.unit}:{},...e.error?{error:e.error}:{}}}return{parsed:t,series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[],...e.error?{error:e.error}:{}}}async aggregateEventRows(e,t,n,r){let i=Th(n);if(!e.metric&&e.agg!==`count`)return{parsed:e,series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[],error:`Aggregate "${e.agg}" requires a metric — use ${e.agg}{metric:<key>}`};let a=(e,t)=>!t||e===t||t===`rep`&&e===`reps`||t===`reps`&&e===`rep`,o=e=>e.metricDate?Hm(e.metricDate,i.timeZone):e.timestamp,s=t.flatMap(dh).filter(t=>a(t.metricKey,e.metric)).filter(e=>!r||Wm(o(e),r)),c=e.filters.some(e=>e.key===`tags`)||e.groupBy.includes(`tags`),l=await this.loadNoteTags(s,c),{selected:u,report:d}=hh(s.filter(t=>Fh(t,e.filters,l)),e.agg);return this.buildResult(u,e,n,l,r,d)}buildResult(e,t,n,r,i,a){let o=Th(n),s=t.groupBy.find(e=>e===`day`||e===`week`),c=t.groupBy.filter(e=>e!==`day`&&e!==`week`),l=t.rollup,u=e=>e.metricDate??Im(e.timestamp,o.timeZone),d=e=>{if(s===`day`)return`d:${u(e)}`;if(s===`week`)return`w:${zm(u(e))}`;if(l){let t=u(e);if(l.unit===`w`){let e=zm(t),n=Math.floor(Rm(`1970-01-05`,e)/7);return`w:${Lm(`1970-01-05`,Math.floor(n/l.size)*l.size*7)}`}if(l.unit===`d`){let e=Rm(`1970-01-01`,t);return`d:${Lm(`1970-01-01`,Math.floor(e/l.size)*l.size)}`}}return``},f=e=>e.startsWith(`d:`)||e.startsWith(`w:`)?Hm(e.slice(2),o.timeZone):2**53-1,p=e=>e.startsWith(`d:`)||e.startsWith(`w:`)?e.slice(2):e,m=e=>{let t=s??(l?.unit===`w`?`week`:l?.unit===`d`?`day`:void 0);if(!t||e.length===0)return e;let n=i&&i.end!==2**53-1?{startIso:Im(i.start,o.timeZone),endIso:i.endExclusive?Im(i.end-1,o.timeZone):Im(i.end,o.timeZone)}:{startIso:p(e[0]),endIso:p(e[e.length-1])},r=t===`week`?zm(n.startIso):n.startIso,a=t===`week`?zm(n.endIso):n.endIso,c=t===`week`?7*(l?.size??1):l?.size??1,u=Rm(r,a);if(u<0||u/c>1e4)return e;let d=[];for(let e=r;d.push(t===`week`?`w:${e}`:`d:${e}`),!(e>=a);e=Lm(e,c));return d},h=km(e,{directive:t.displayUnit,preferred:n.preferredUnit}),g=h.unit,_=h.convert===!0,v=h.error,y=new Map;for(let n of e){let e=c.map(e=>Ih(n,e,r,o)),i=c.length?JSON.stringify(e):t.metric,a=c.length?e.map(e=>e===`\0unassigned`?`unassigned`:e).join(` · `):t.metric,s=y.get(i);s?s.rows.push(n):y.set(i,{label:a,rows:[n]})}let b=[...y.entries()].map(([e,n])=>{let r=n.rows;if(v)return{key:e,label:n.label,points:[],unit:void 0,error:v};let i=new Map;for(let e of r){let t=d(e),n=i.get(t);n?n.push(e):i.set(t,[e])}let a=[...i.keys()].sort(),o=s?m(a):a,c,u=o.map(e=>{let n=i.get(e);if(!n)return{ts:f(e),value:0,missing:!0};let r;try{r=n.map(e=>_&&g&&(e.unit??e.metricUnit)!==void 0?ha(e.value,e.unit??e.metricUnit,g):e.value)}catch(t){return c=t instanceof Error?t.message:String(t),{ts:f(e),value:0,missing:!0}}let a=Rh(r,t.agg,n);return a.state===`error`?(c=a.message,{ts:f(e),value:0,missing:!0}):{ts:s||l?f(e):Math.min(...n.map(e=>e.timestamp)),value:a.value,...a.state===`absent`?{missing:!0}:{}}}),p=t.agg===`count`?`count`:g;return{key:e,label:n.label,points:u,unit:p,...c?{error:c}:{}}}),x=b.reduce((e,t)=>e+t.points.length,0),S=b.length===1&&b[0].points.length===1?b[0].points[0].value:void 0,C=b.length>0?b[0].unit:void 0,w=s||l?b[0]?.points.length??0:+!!e.length,T=a?.insufficientScopes??[],E=b.find(e=>e.error)?.error??(T.length>0?`Insufficient evidence: ${T.map(e=>`${e.resultId}/${e.metricKey} (${e.reason})`).join(`; `)}`:void 0);return{parsed:t,series:b,stages:{selected:e.length,buckets:w,aggregated:x,groups:b.length},matched:e,scalar:S,unit:C,...E?{error:E}:{},...a?{coverage:a}:{}}}async runJoined(e,t){let n={parsed:e,series:[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[]},r=e.join,i=await this.runFind({family:`find`,raw:``,target:r.target,filters:r.filters,window:r.last?{kind:`relative`,size:r.last.size,unit:r.last.unit}:void 0}),a=await this.contentIdsFromFindResult(i);if(a.size===0)return n;let o=gh(await this.deriveMetricFacts(a,e.metric)),s=Oh(e,t,Th(t));s&&(o=o.filter(e=>Wm(e.timestamp,s)));let c=e.filters.some(e=>e.key===`tags`)||e.groupBy.includes(`tags`),l=await this.loadNoteTags(o,c),{selected:u,report:d}=hh(o.filter(t=>Fh(t,e.filters,l)),e.agg);return this.buildResult(u,e,t,l,s,d)}async applyMetricJoin(e,t,n){let r=e.join,i=await this.noteContentMap(new Set(t.map(e=>e.id))),a=new Set;for(let e of i.values())for(let t of e)a.add(t);for(let e of n)e.dataType===`wod`&&e.blockContentId&&a.add(e.blockContentId);let o=await this.contentIdsSatisfying(a,r);return n=n.filter(e=>e.dataType===`wod`&&!!e.blockContentId&&o.has(e.blockContentId)),t=t.filter(e=>{let t=i.get(e.id);return!!t&&[...t].some(e=>o.has(e))}),{notes:t,blocks:n}}async contentIdsSatisfying(e,t){let n=gh(await this.deriveMetricFacts(e,t.metric)),r=await this.loadNoteTags(n,t.filters.some(e=>e.key===`tags`)),i=hh(n.filter(e=>Fh(e,t.filters,r)),t.agg).selected,a=new Map;for(let e of i){let t=e.blockContentId??``,n=a.get(t);n?n.push(e):a.set(t,[e])}let o=new Set;for(let[e,n]of a){let r=Rh(n.map(e=>e.value),t.agg,n);r.state===`observed`&&zh(r.value,t.operator,t.threshold)&&o.add(e)}return o}async deriveMetricFacts(e,t){let n=[...new Set(e)];return(await Promise.all(n.map(e=>this.store.getEventsByContent(e)))).flat().flatMap(dh).filter(e=>e.metricKey===t)}async allContentBlocks(){return this.hydrateBlocks(await this.blockStore.getAllBlocks())}async noteContentMap(e){let t=new Map;if(!e.size)return t;let n=await this.allContentBlocks();for(let r of n){if(r.dataType!==`wod`||!r.blockContentId||!e.has(r.noteId))continue;let n=t.get(r.noteId);n||(n=new Set,t.set(r.noteId,n)),n.add(r.blockContentId)}return t}async contentIdsFromFindResult(e){let t=new Set;for(let n of e.blocks)n.dataType===`wod`&&n.blockContentId&&t.add(n.blockContentId);if(e.notes.length){let n=new Set(e.notes.map(e=>e.id)),r=await this.noteContentMap(n);for(let e of r.values())for(let n of e)t.add(n)}return t}async loadNoteTags(e,t){let n=new Map;if(!t)return n;let r=[...new Set(e.map(e=>e.noteId))];if(this.relationStore){let e=await this.relationStore.getBatches(r);for(let t of r)n.set(t,(e.get(t)?.tags??[]).map(e=>e.label));return n}return await Promise.all(r.map(async e=>n.set(e,await this.noteStore.getNoteTagLabels(e)))),n}async getNoteIdsForEffort(e){let t=await this.blockEffortsStore.getAllFromIndex(`by-effort`,e);return new Set(t.map(e=>e.noteId))}async getNoteIdsForTypedTag(e,t){let n=(await this.tagsStore.getAllFromIndex(`by-label`,t)).find(t=>t.type===e);if(!n)return new Set;let r=await this.noteTagsStore.getAllFromIndex(`by-tag`,n.id);return new Set(r.map(e=>e.noteId))}async runFindCatalog(e,t,n){let r=Th(t),i=n.filter(e=>yh(e,`feeds`)||e.catalog&&!e.sourceId),a=i.filter(e=>e.type===`feed`||e.sourceId?.startsWith(`page:collection:`)),o=new Set(a.map(e=>vh(e)??e.id));for(let e of i){let t=vh(e);t&&!o.has(t)&&(a.push({id:t,title:t,type:`feed`,sourceId:`page:collection:${t}`,catalog:t,createdAt:e.createdAt??0,rawContent:``,sourceRevision:1,blocks:{}}),o.add(t))}let s=new Map;for(let e of a){let t=vh(e)??e.id;s.set(t,[e])}for(let e of i){let t=vh(e);if(t){let n=s.get(t);n?n.includes(e)||n.push(e):s.set(t,[e])}}let c=e.filters.filter(e=>!(e.key===`source`&&!e.negate&&e.values.some(e=>e.value===`feeds`||e.value===`feed`))&&!(e.key===`type`&&!e.negate&&e.values.some(e=>e.value===`feed`))),l=[...a];for(let e of c)if(e.key===`catalog`){let t=new Set(e.values.map(e=>e.value));l=l.filter(n=>{let r=vh(n)??n.id,i=t.has(r);return e.negate?!i:i})}else if(e.key===`effort`){let t=new Set;for(let n of e.values)(await this.getNoteIdsForEffort(n.value)).forEach(e=>t.add(e));l=l.filter(n=>{let r=vh(n)??n.id,i=(s.get(r)??[]).some(e=>t.has(e.id));return e.negate?!i:i})}else if(e.key===`tags`){let t=new Set;for(let n of e.values)(await this.noteStore.getNoteIdsForTag(n.value)).forEach(e=>t.add(e));l=l.filter(n=>{let r=vh(n)??n.id,i=(s.get(r)??[]).some(n=>t.has(n.id)||n.tags&&e.values.some(e=>n.tags.includes(e.value)));return e.negate?!i:i})}else if(uf.includes(e.key)){let t=new Set;for(let n of e.values)(await this.getNoteIdsForTypedTag(e.key,n.value)).forEach(e=>t.add(e));l=l.filter(n=>{let r=vh(n)??n.id,i=(s.get(r)??[]).some(e=>t.has(e.id));return e.negate?!i:i})}else if(e.key===`text`){let t=e.values.map(e=>e.value).join(` `).toLowerCase();l=l.filter(n=>{let r=vh(n)??n.id,i=(s.get(r)??[]).some(e=>e.title.toLowerCase().includes(t)||e.rawContent.toLowerCase().includes(t));return e.negate?!i:i})}else if(e.key===`note`){let t=new Set(e.values.map(e=>e.value));l=l.filter(n=>{let r=vh(n)??n.id,i=(s.get(r)??[]).some(e=>t.has(e.id));return e.negate?!i:i})}if((e.window||t.range)&&(l=l.filter(n=>{let i=vh(n)??n.id;return(s.get(i)??[]).some(n=>Eh(n.date??n.createdAt,e.window,t.range,r))})),e.pipes?.order)for(let t of[...e.pipes.order].reverse()){let e=t.dir===`desc`?-1:1;l=[...l].sort((n,r)=>{let i=n[t.col]??``,a=r[t.col]??``;return i===a?0:(i>a?1:-1)*e})}return{parsed:e,notes:l,blocks:[],stages:{selected:a.length,matched:l.length}}}},Hh=[`table`,`list`,`value`,`timeseries`,`bar`,`donut`,`toplist`,`stacked-bar`,`goal-rings`,`zone-distribution`];function Uh(e){return Hh.includes(e)}function Wh(e){return e==null||e===``?`table`:e}function Gh(e){return`unknown widget type "${e}"`}function Kh(e){return`unknown token${e.length>1?`s`:``}: ${e.map(e=>`$${e}`).join(`, `)}`}var qh=[];new Set(hf);function Jh(e){if(e===``)return{type:``,attributes:{},attributeOrder:[],error:`missing widget type after "query:"`};let t={},n=[],r=e.trim(),i=r.search(/\s/),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i),s=/([a-zA-Z][a-zA-Z0-9_-]*)=("([^"]*)"|\S+)/g,c=0;for(let e of o.matchAll(s)){c+=e[0].length;let r=e[1].toLowerCase(),i=e[3]===void 0?e[2]:e[3];if(r in t)return{type:a,attributes:t,attributeOrder:n,error:`duplicate attribute "${r}"`};t[r]=i,n.push(r)}let l=o.replace(s,``).trim();if(l!==``)return{type:a,attributes:t,attributeOrder:n,error:`malformed attribute "${l.split(/\s+/)[0]}"`};let u=a.toLowerCase(),d,f;if(u.endsWith(`-full`))f=!0,u=u.slice(0,-5);else{let e=u.match(/-(\d+)$/);e&&(d=Number(e[1]),u=u.slice(0,-e[0].length))}return u===``||!/^[a-z][a-z0-9-]*$/.test(u)?{type:u,spanCols:d,spanFull:f,attributes:t,attributeOrder:n,error:`malformed widget type "${e}"`}:/-(\d+|full)$/.test(u)?{type:u,spanCols:d,spanFull:f,attributes:t,attributeOrder:n,error:`malformed widget suffix "${e}"`}:d!=null&&(d<1||d>4)?{type:u,spanCols:d,spanFull:f,attributes:t,attributeOrder:n,error:`span ${d} outside 1..4`}:{type:u,spanCols:d,spanFull:f,attributes:t,attributeOrder:n}}var Yh=`dashboard.`;function Xh(e){return e.dashboard===`true`||e.dashboard===!0}function Zh(e){let t=[];for(let[n,r]of Object.entries(e)){if(!n.startsWith(Yh)||n===Yh)continue;let e=n.slice(10);e!==``&&(Array.isArray(r)?r.length>0&&t.push({name:e,values:r.map(String),isList:!0}):t.push({name:e,values:[String(r)],isList:!1}))}return t}function Qh(e){let t={};for(let n of e)t[n.name]=n.values[0];return t}function $h(e,t,n){let r=`${Yh}${t}`,i=e[r],a={...e};if(Array.isArray(i)){if(!i.includes(n))return e;a[r]=[n,...i.filter(e=>e!==n)]}else a[r]=i==null?n:typeof i==`number`&&!isNaN(Number(n))?Number(n):n;return a}var eg=/\$([A-Za-z][\w-]*)/g;function tg(e,t){let n=new Set;return{query:e.replace(eg,(e,r)=>t[r]??(n.add(r),e)),missing:[...n]}}function ng(e){let t=e.split(`
13
+ `,1)[0].replace(/^#{1,6}\s*/,``).trim();return t===``?void 0:t}function rg(e){let t=e.replace(/\s*\n\s*/g,` `).trim();return t===``?void 0:t}function ig(e,t){let n=[];e.forEach((t,r)=>{if(t.type!==`query`)return;let i=t.content.split(`
14
+ `).filter(e=>{let t=e.trim();return t!==``&&!t.startsWith(`#`)}).map(e=>e.trim()).join(`
15
+ `),a,o,s=e[r-1];if(s?.type===`markdown`&&s.subtype===`paragraph`){o=rg(s.content);let t=e[r-2];t?.type===`markdown`&&t.subtype===`heading`&&(a=ng(t.content))}else s?.type===`markdown`&&s.subtype===`heading`&&(a=ng(s.content));n.push({key:`w${n.length}`,type:t.widgetType??``,spanCols:t.spanCols,spanFull:t.spanFull,widgetError:t.widgetError,body:i,attributes:t.attributes??{},attributeOrder:t.attributeOrder??[],title:a,question:o})});let r=t.title;return{isDashboard:Xh(t),title:typeof r==`string`&&r!==``?r:void 0,tokens:Zh(t),widgets:n}}var ag=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function og(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\])/g,`$1`):n)}function sg(e){let t=e.match(ag);return t?{meta:cg(t[1].split(/\r?\n/)),body:e.slice(t[0].length)}:{meta:{},body:e}}function cg(e){let t={};for(let n=0;n<e.length;n++){let r=e[n].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!r)continue;let i=r[1],a=r[2].trim();if(a===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(t[1].trim()),n++}t[i]=r.length>0?r:``}else{let e=/^(['"])(.*)\1$/.test(a),n=og(a),r=Number(n);t[i]=!e&&n!==``&&!isNaN(r)?r:n}}return t}function lg(e){return cg(e.split(/\r?\n/))}function ug(e){if(e===``)return`""`;let t=!isNaN(Number(e)),n=/^(true|false|null|yes|no|on|off)$/i.test(e);return/[":'\n#{}[\\],&*?|<>=%!@`]/.test(e)||e!==e.trim()||e.startsWith(`-`)||t||n?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:e}function dg(e){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r)){if(r.length===0){t.push(`${n}: ""`);continue}t.push(`${n}:`);for(let e of r)t.push(` - ${ug(e)}`)}else typeof r==`number`?t.push(`${n}: ${r}`):t.push(`${n}: ${ug(r)}`);return t.join(`
16
+ `)}function fg(e){let{meta:t}=sg(e),n=e.split(/\r?\n/),r=[],i=0;if(n.length>0&&n[0].trim()===`---`){for(i=1;i<n.length&&n[i].trim()!==`---`;)i++;i++}for(;i<n.length;){let e=n[i].trim();if(/^```query/.test(e)){let t=e.slice(3),a,o,s,c,l,u;if(t.startsWith(`query:`)){let e=Jh(t.slice(6));a=e.type||void 0,o=e.spanCols,s=e.spanFull,c=e.error,l=e.attributes,u=e.attributeOrder}let d=i;i++;let f=[];for(;i<n.length&&!/^```[\w\d_:-]*$/.test(n[i].trim());)f.push(n[i]),i++;let p=i;r.push({type:`query`,content:f.join(`
17
+ `),widgetType:a,spanCols:o,spanFull:s,widgetError:c,attributes:l,attributeOrder:u,startLine:d,endLine:p}),i++;continue}if(/^```[\w\d_:-]*$/.test(e)){let e=i,t=[n[i]];for(i++;i<n.length&&!/^```[\w\d_:-]*$/.test(n[i].trim());)t.push(n[i]),i++;i<n.length&&(t.push(n[i]),i++),r.push({type:`markdown`,subtype:`paragraph`,content:t.join(`
18
+ `),startLine:e,endLine:i-1});continue}if(e.startsWith(`#`)){r.push({type:`markdown`,subtype:`heading`,content:e,startLine:i,endLine:i}),i++;continue}if(e!==``){let e=i,t=[];for(;i<n.length&&n[i].trim()!==``&&!n[i].trim().startsWith(`#`)&&!/^```[\w\d_:-]*$/.test(n[i].trim());)t.push(n[i]),i++;r.push({type:`markdown`,subtype:`paragraph`,content:t.join(`
19
+ `),startLine:e,endLine:i-1});continue}i++}return{meta:t,sections:r}}var pg=`New Dashboard`;function mg(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``)||`dashboard`}function hg(e=pg){return`---
20
+ dashboard: true
21
+ dashboard.active: true
22
+ title: ${e}
23
+ slug: ${mg(e)}
24
+ dashboard.metric:
25
+ - totalVolume
26
+ ---
27
+
28
+ ## Weekly Trend
29
+ How does $metric trend week over week?
30
+
31
+ \`\`\`query:timeseries
32
+ sum:$metric{} by {week}
33
+ \`\`\`
34
+ `}function gg(e){let t=e.type.trim(),n=t===``?``:`:${t}`;e.spanFull?n+=`-full`:e.spanCols!=null&&e.spanCols>1&&(n+=`-${e.spanCols}`);let r=e.attributes??{};for(let t of e.attributeOrder??Object.keys(r)){if(!(t in r))continue;let e=r[t],i=/^[a-zA-Z0-9_.-]+$/.test(e)?e:`"${e.replace(/"/g,``)}"`;n+=` ${t}=${i}`}return`\`\`\`query${n}`}function _g(e){return e.wql.trim()}function vg(e){let t=[],n=e.title?.trim(),r=e.question?.trim();return n&&t.push(`## ${n}`),r&&t.push(r),t.length>0&&t.push(``),t.push(gg(e)),t.push(_g(e)),t.push("```"),t}function yg(e,t,n){let r=e.filter(e=>e.type===`query`),i=r.findIndex((e,n)=>`w${n}`===t);if(i===-1)return{ok:!1,reason:`not-found`};let a=r[i];return a.content.split(`
35
+ `).filter(e=>{let t=e.trim();return t!==``&&!t.startsWith(`#`)}).map(e=>e.trim()).join(`
36
+ `)===n.trim()?{ok:!0,group:{widgetIndex:i,startLine:bg(e,a),endLine:a.endLine}}:{ok:!1,reason:`stale-body`}}function bg(e,t){let n=e.indexOf(t),r=e[n-1];if(r?.type===`markdown`&&r.subtype===`paragraph`){let t=e[n-2];return t?.type===`markdown`&&t.subtype===`heading`?t.startLine:r.startLine}return r?.type===`markdown`&&r.subtype===`heading`?r.startLine:t.startLine}function xg(e){return e.filter(e=>e.type===`query`).map((t,n)=>({widgetIndex:n,startLine:bg(e,t),endLine:t.endLine}))}function Sg(e,t){let n=e.split(`
37
+ `),r=vg(t);for(;n.length>0&&n[n.length-1]===``;)n.pop();return[...n,``,...r,``].join(`
38
+ `)}function Cg(e,t,n){let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;let i=e.length,a=t.length;for(;i>r&&a>r&&e[i-1]===t[a-1];)i--,a--;let o=fg(e).sections.filter(e=>e.type===`query`),s=fg(t).sections.filter(e=>e.type===`query`),c=wg(e),l=wg(t),u=e.split(`
39
+ `),d=t.split(`
40
+ `),f=[];for(let[e,t]of(n??o.map((e,t)=>t)).entries()){if(t===null)continue;let n=o[t],r=s[e];if(!n||!r)throw Error(`Widget mutation lost its source lineage`);f.push({from:c[n.startLine],to:c[n.endLine]+u[n.endLine].replace(/\r$/,``).length,nextFrom:l[r.startLine],nextTo:l[r.endLine]+d[r.endLine].replace(/\r$/,``).length})}return{ok:!0,note:t,changes:e===t?[]:[{from:r,to:i,insert:t.slice(r,a)}],retainedBlocks:f}}function wg(e){let t=0;return e.split(`
41
+ `).map(e=>{let n=t;return t+=e.length+1,n})}function Tg(e,t,n,r){let{sections:i}=fg(e),a=yg(i,t,n);if(!a.ok)return a;let{group:o}=a,s=e.split(`
42
+ `);return s.splice(o.startLine,o.endLine-o.startLine+1,...vg(r)),Cg(e,s.join(`
43
+ `))}function Eg(e,t,n){let{sections:r}=fg(e),i=yg(r,t,n);if(!i.ok)return i;let{group:a}=i,o=e.split(`
44
+ `),s=o.slice(a.startLine,a.endLine+1);o.splice(a.endLine+1,0,``,...s);let c=r.filter(e=>e.type===`query`).map((e,t)=>t);return c.splice(a.widgetIndex+1,0,null),Cg(e,o.join(`
45
+ `),c)}function Dg(e,t,n){let{sections:r}=fg(e),i=yg(r,t,n);if(!i.ok)return i;let{group:a}=i,o=e.split(`
46
+ `);o.splice(a.startLine,a.endLine-a.startLine+1),a.startLine>0&&a.startLine<o.length&&o[a.startLine-1]===``&&o[a.startLine]===``&&o.splice(a.startLine,1);let s=r.filter(e=>e.type===`query`).map((e,t)=>t);return s.splice(a.widgetIndex,1),Cg(e,o.join(`
47
+ `),s)}function Og(e,t,n,r){let{sections:i}=fg(e),a=yg(i,t,n);if(!a.ok)return a;let{group:o}=a,s=xg(i),c=s[o.widgetIndex+r];if(!c)return Cg(e,e);let l=e.split(`
48
+ `),u=l.slice(o.startLine,o.endLine+1);if(r===-1)l.splice(o.startLine,o.endLine-o.startLine+1),l.splice(c.startLine,0,...u);else{l.splice(o.startLine,o.endLine-o.startLine+1);let e=o.startLine<c.startLine?o.endLine-o.startLine+1:0,t=c.endLine-e+1;l.splice(t,0,...u)}let d=s.map((e,t)=>t);return d.splice(o.widgetIndex,1),d.splice(o.widgetIndex+r,0,o.widgetIndex),Cg(e,l.join(`
49
+ `),d)}function kg(e,t,n,r){if(r.spanCols!=null&&(r.spanCols<1||r.spanCols>4))return{ok:!1,reason:`stale-body`};let{sections:i}=fg(e),a=yg(i,t,n);if(!a.ok)return a;let{group:o}=a,s=i.find(e=>e.type===`query`&&e.startLine>=o.startLine&&e.endLine<=o.endLine),c=e.split(`
50
+ `),l=c[s.startLine].match(/^\s*/)[0];return c[s.startLine]=l+gg({type:s.widgetType??``,spanCols:r.spanCols,spanFull:r.spanFull,attributes:s.attributes,attributeOrder:s.attributeOrder}),Cg(e,c.join(`
51
+ `))}function Ag(e){let t=[...e];return{getEventsByTimeRange:async(e,n)=>t.filter(t=>t.timestamp>=e&&t.timestamp<=n),getEventsByResult:async e=>t.filter(t=>t.resultId===e),getEventsForNote:async e=>t.filter(t=>t.noteId===e),getEventsByContent:async e=>t.filter(t=>t.blockContentId===e),scanAll:async()=>t,appendEvents:async e=>{t.push(...e)},finalizeSummaries:async(e,n)=>{for(let n=t.length-1;n>=0;n--){let r=t[n];r.resultId===e&&r.grain===`summary`&&r.origin!==`user`&&t.splice(n,1)}t.push(...n)},deleteEvents:async e=>{let n=new Set(e);for(let e=t.length-1;e>=0;e--)n.has(t[e].id)&&t.splice(e,1)}}}var jg=/^---\r?\n([\s\S]*?)\r?\n---/;function Mg(e){let t=jg.exec(e);if(!t)return{};let n={},r=t[1].split(/\r?\n/),i;for(let e of r){let t=e.trimEnd(),r=t.match(/^\s+-\s+(.*)$/);if(r&&i){n[i].push(r[1].trim());continue}let a=t.match(/^([^:]+):\s*(.*)$/);if(!a)continue;let o=a[1].trim().toLowerCase(),s=a[2].trim();s===``?(n[o]=[],i=o):s.startsWith(`[`)&&s.endsWith(`]`)?(n[o]=s.slice(1,-1).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(e=>e.length>0),i=void 0):(n[o]=s,i=void 0)}return n}var Ng=e=>Array.isArray(e)?e:typeof e==`string`?e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):[];function Pg(e,t=uf){let n=Mg(e),r=Ng(n.tags).map(e=>({label:e})),i=Object.keys(n);for(let e of t){if(e===`tags`)continue;let t=i.find(t=>t===e.toLowerCase());if(t)for(let i of Ng(n[t]))r.push({label:i,type:e})}return r.filter(e=>e.label.length>0)}var Fg=[`sessionId`,`noteId`,`blockId`,`blockVersion`,`blockContentId`,`origin`,`status`,`startTime`,`endTime`,`duration`,`completed`,`sessionCreatedAt`,`sessionExtraJson`],Ig=`eventId.grain.outputType.timestamp.pageId.effortSlug.eventBlockId.eventBlockVersion.eventBlockContentId.eventOrigin.timeSpan.sourceBlockKey.sourceStatementId.line.text.dialect.stackLevel.completionReason.representationKind.metricType.metricValue.metricUnit.metricImage.metricOrigin.metricMetadata.metricTemporal.metricJson.eventExtraJson`.split(`.`);[...Fg,...Ig];var Lg=wa,Rg=`wodwiki.seed`,zg=`canvas`;function Bg(e){return`seed:${e}`}function Vg(e){return{key:e,schema:8,seedVersion:0,builtAt:``,importedAt:0,chunks:{},claim:null}}function Hg(e){let t=/^(?:collection|feed)\.(.+)$/.exec(e)?.[1];return t&&t!==`_root`?t:void 0}function Ug(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(e);return t?.[1]&&!/^template:\s*canvas\s*$/m.test(t[1])?null:t?.[1]?.match(/^route:\s*(\S+)\s*$/m)?.[1]?.replace(/^\//,``)||null}function Wg(e,t,n){let r=e.split(`/`),i=(r.at(-1)??``).replace(/\.md$/i,``),a=r.slice(2).map(e=>e.replace(/\.md$/i,``)).join(`/`);if(n===`canvas`)return`guides:${Ug(t)??a}`;if(n===`dashboards`)return`dashboards`;if(n===`efforts`)return`efforts`;if(n===`template`)return`playground`;if(n.startsWith(`collection.`)){let e=Hg(n);return e?i.toLowerCase()===`readme`?`collection:${e}`:`collection:${e}/${i}`:`collection:_root`}if(n.startsWith(`feed.`))return`feed:feeds/${a}`}var Gg=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function Kg(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\])/g,`$1`):n)}function qg(e){let t=e.match(Gg);return t?{meta:Jg(t[1].split(/\r?\n/)),body:e.slice(t[0].length)}:{meta:{},body:e}}function Jg(e){let t={};for(let n=0;n<e.length;n++){let r=e[n].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!r)continue;let i=r[1],a=r[2].trim();if(a===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(t[1].trim()),n++}t[i]=r.length>0?r:``}else{let e=/^(['"])(.*)\1$/.test(a),n=Kg(a),r=Number(n);t[i]=!e&&n!==``&&!isNaN(r)?r:n}}return t}function Yg(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`?n:void 0}function Xg(e,t){let n=e[t];return Array.isArray(n)?n:[]}function Zg(e){if(!e)return;let t=Qg(e.trim()).toLowerCase();if(Cs(t))return t;console.warn(`[effort-file] unknown discipline '${e}' — treating as unset`)}function Qg(e){return e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1).replace(/\\(["\\])/g,`$1`):e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1).replace(/\\'/g,`'`):e}function $g(e){return e===`true`?!0:e===`false`?!1:e!==``&&!Number.isNaN(Number(e))?Number(e):e}function e_(e,t){let n=e.findIndex(e=>RegExp(`^${t}:\\s*$`).test(e));if(n===-1)return;let r={},i=null;for(let t=n+1;t<e.length;t++){let n=e[t];if(/^\S/.test(n))break;let a=n.trim();if(!a||a.startsWith(`#`))continue;let o=n.length-n.trimStart().length,s=a.match(/^([\w.-]+):\s*(.*)$/);if(!s)continue;let[,c,l]=s;o===2?l===``?(i=c,r[c]={}):(i=null,r[c]=$g(l)):o>=4&&i!==null&&(r[i][c]=$g(l))}return Object.keys(r).length>0?r:void 0}function t_(e){let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!t)return null;let{meta:n,body:r}=qg(e),i=t[1].split(/\r?\n/),a=Yg(n,`id`),o=Yg(n,`slug`),s=Yg(n,`label`),c=Xg(n,`aliases`),l=e_(i,`baseAttributes`),u=e_(i,`hints`),d=e_(i,`derivation`),f=l?.met,p=typeof f==`number`?f:Number(f);if(!a||!o||!s||f===void 0||Number.isNaN(p))return null;let m=Zg(typeof l?.discipline==`string`?l.discipline:void 0),h=l?.intensityTier,g=r.trim();return{id:String(a),slug:String(o),label:String(s),aliases:c,baseAttributes:{met:p,...m?{discipline:m}:{},...h?{intensityTier:h}:{}},registrySource:`bundled`,...g?{body:g}:{},...u?{hints:u}:{},...d?{derivation:d}:{}}}function n_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function r_(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function i_(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function a_(e){if(!n_(e)||e.schema!==8)throw Error(`Incompatible seed schema; rebuild seed artifacts`);if(!i_(e.version)||typeof e.builtAt!=`string`||!Number.isFinite(Date.parse(e.builtAt))||!Array.isArray(e.chunks))throw Error(`seed manifest failed shape validation`);for(let t of[`versionLabel`,`commit`])if(e[t]!==void 0&&typeof e[t]!=`string`)throw Error(`invalid seed manifest metadata`);if(e.dirty!==void 0&&typeof e.dirty!=`boolean`)throw Error(`invalid seed manifest metadata`);let t=new Set,n=new Set;for(let r of e.chunks){if(!n_(r)||typeof r.id!=`string`||!r.id||typeof r.path!=`string`||!/^chunks\/[a-zA-Z0-9._-]+\.json$/.test(r.path)||typeof r.sha256!=`string`||!/^[0-9a-f]{64}$/.test(r.sha256)||!i_(r.bytes)||!i_(r.count)||r.kind!==void 0&&r.kind!==`notes`||t.has(r.id)||n.has(r.path))throw Error(`seed manifest failed shape validation`);t.add(r.id),n.add(r.path)}return e}function o_(e){if(!Array.isArray(e))throw Error(`seed chunk is not an array`);let t=new Set;for(let n of e){if(!n_(n)||typeof n.path!=`string`||!n.path||n.path.startsWith(`/`)||n.path.split(`/`).includes(`..`)||t.has(n.path)||typeof n.content!=`string`||!n_(n.blocks)||!Array.isArray(n.blockIndex)||!Array.isArray(n.blockEfforts))throw Error(`seed chunk row failed shape validation`);t.add(n.path);for(let[e,t]of Object.entries(n.blocks))if(!n_(t)||t.id!==e||!e||t.version!==1||t.sourceRevision!==1||!i_(t.from)||!r_(t.to)||t.from>=t.to||t.to>n.content.length||![`wod`,`query`,`widget`,`embed`].includes(String(t.kind))||(t.kind===`wod`?![`time`,`log`].includes(String(t.dialect)):t.dialect!==void 0)||t.sport!==void 0&&typeof t.sport!=`string`)throw Error(`invalid seed block range or revision`);ja(n.content,n.blocks,1,{registeredWidgets:Lg});let e=new Set,r=Oa(n.content,{registeredWidgets:Lg});for(let t of n.blockIndex){if(!n_(t)||typeof t.blockId!=`string`)throw Error(`invalid seed projection`);let i=n.blocks[t.blockId];if(!n_(i)||e.has(t.blockId)||typeof t.id!=`string`||typeof t.noteId!=`string`||t.id!==`${t.noteId}:${t.blockId}`||t.blockVersion!==1||t.sourceRevision!==1||t.from!==i.from||t.to!==i.to||t.dataType!==i.kind||t.rawContent!==n.content.slice(Number(i.from),Number(i.to))||typeof t.noteTitle!=`string`||typeof t.createdAt!=`number`||!Number.isFinite(t.createdAt)||t.sourcePath!==n.path||t.isStatic!==!0)throw Error(`orphan or incompatible seed projection`);if(`segmentId`in t||`segmentVersion`in t)throw Error(`incompatible seed projection`);for(let e of[`sourceId`,`routeId`,`blockContentId`])if(t[e]!==void 0&&typeof t[e]!=`string`)throw Error(`invalid seed projection metadata`);if(t.position!==void 0&&!i_(t.position))throw Error(`invalid seed projection position`);if(i.kind===`wod`){let e=r.find(e=>e.from===i.from&&e.to===i.to);if(t.blockContentId!==xa(e?.scriptBlock?.content??n.content.slice(Number(i.from),Number(i.to))))throw Error(`invalid seed workout fingerprint`)}else if(t.blockContentId!==void 0)throw Error(`non-workout seed fingerprint`);e.add(t.blockId)}if(e.size!==Object.keys(n.blocks).length)throw Error(`missing actionable seed projection`);let i=new Set;for(let t of n.blockEfforts){if(!n_(t)||typeof t.blockId!=`string`||typeof t.noteId!=`string`||typeof t.effortSlug!=`string`||!t.effortSlug)throw Error(`invalid seed effort identity`);let r=n.blocks[t.blockId];if(t.id!==`${t.noteId}:${t.blockId}:${t.effortSlug}`||i.has(String(t.id))||!n_(r)||r.kind!==`wod`||!e.has(t.blockId)||t.sourcePath!==n.path||t.isStatic!==!0||typeof t.createdAt!=`number`)throw Error(`orphan or incompatible seed effort link`);let a=n.blockIndex.find(e=>n_(e)&&e.blockId===t.blockId);if(!n_(a)||t.noteId!==a.noteId||t.blockContentId!==a.blockContentId||!Number.isFinite(t.createdAt))throw Error(`invalid seed effort metadata`);i.add(String(t.id))}}return e}var s_=`1b671a64-40d5-491e-99b0-da01ff1f3341`;async function c_(e){let t=await crypto.subtle.digest(`SHA-1`,new TextEncoder().encode(`${s_}:${e}`)),n=new Uint8Array(t.slice(0,16));n[6]=n[6]&15|80,n[8]=n[8]&63|128;let r=Array.from(n,e=>e.toString(16).padStart(2,`0`)).join(``);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function l_(e,t){if(Object.is(e,t))return!0;if(!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;let n=Object.keys(e).filter(t=>Reflect.get(e,t)!==void 0),r=Object.keys(t).filter(e=>Reflect.get(t,e)!==void 0);return n.length===r.length&&n.every(n=>n in t&&l_(Reflect.get(e,n),Reflect.get(t,n)))}function u_(e){return(e.split(`/`).at(-1)??e).replace(/\.md$/,``).replace(/[-_]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function d_(e,t,n){let r=e.rawContent,i=0,a=r.length,o=t.length;for(;i<a&&i<o&&r[i]===t[i];)i++;for(;a>i&&o>i&&r[a-1]===t[o-1];)a--,o--;let s=Object.values(e.blocks).filter(e=>i<e.to&&a>e.from),c=Ma(s.length<=1?e.blocks:Object.fromEntries(Object.entries(e.blocks).filter(([,e])=>!s.includes(e))),[{from:i,to:a,insert:t.slice(i,o)}]),l=0;return Aa(t,{sourceRevision:n,blocks:c,registeredWidgets:Lg,createId:()=>`seed:${e.id}:r${n}:${l++}`})}async function f_(e,t,n){if(!t.length)return;let r=await e.getMany(n),i=t.filter((e,t)=>!l_(e,r[t]));i.length&&await e.putMany(i)}async function p_(e,t){a_(t.manifest),o_(t.rows);let n={totalNotes:0,totalEfforts:0,totalBlocks:0,skippedUserOwned:0,deleted:0,addedNotes:0,updatedNotes:0},r=await Promise.all(t.rows.map(e=>c_(e.path))),i=new Map,a=new Map,o=new Map;for(let[e,n]of t.rows.entries()){let t=Mg(n.content).slug;typeof t==`string`&&t.trim()&&(i.set(t,await c_(`page:${t}`)),a.set(r[e],await c_(`pagenote:${t}:${n.path}`)));for(let{label:e}of Pg(n.content))o.has(e)||o.set(e,await c_(`tag:${e}`))}return e.transaction([`notes`,`block_revisions`,`block_index`,`block_efforts`,`page`,`page_notes`,`tags`,`note_tags`,`efforts`,`meta`],`readwrite`,async e=>{let s=e.readwrite(`meta`);if(!l_(await s.get(t.meta.key),t.expectedMeta))throw Error(`Seed checkpoint changed during import`);if(t.meta.schema!==8||t.manifest.schema!==8)throw Error(`Incompatible seed schema; recreate artifacts`);let c=e.readwrite(`notes`),l=t.chunkId?t.expectedMeta?.chunks[t.chunkId]?.noteIds??[]:[],u=new Set(r),d=l.filter(e=>!u.has(e)),f=[...new Set([...r,...d])],p=await c.getMany(f),m=new Map(f.map((e,t)=>[e,p[t]])),h=f.filter(e=>{let n=m.get(e);return!n||n.seedOrigin===`seed`&&(u.has(e)||n.seedChunkId===t.chunkId)}),g=new Set(h),_=e.readwrite(`block_revisions`),v=r.filter((e,n)=>g.has(e)&&m.get(e)?.rawContent!==t.rows[n].content),y=await _.getAllFromIndexMany(`by-note`,v),b=new Map(v.map((e,t)=>[e,y[t]])),x=e.readwrite(`block_index`),S=e.readwrite(`block_efforts`),C=e.readwrite(`note_tags`),w=e.readwrite(`page_notes`),T=await x.getAllFromIndexMany(`by-note`,h),E=await S.getAllFromIndexMany(`by-note`,h),D=await C.getAllFromIndexMany(`by-note`,h),O=await w.getAllFromIndexMany(`by-note`,h),k=new Map(h.map((e,t)=>[e,t])),A=e.readwrite(`tags`),j=[...o.keys()],M=await A.getAllFromIndexMany(`by-label`,j),N=new Map(j.map((e,t)=>[e,M[t][0]])),P=[],F=[],I=[],ee=[],L=[],te=[],R=[],ne=[];for(let[e,s]of t.rows.entries()){let c=r[e],l=m.get(c);if(!g.has(c)){n.skippedUserOwned++;continue}l?l.rawContent!==s.content&&n.updatedNotes++:n.addedNotes++,ja(s.content,s.blocks,1,{registeredWidgets:Lg});let u=l?l.sourceRevision+(l.rawContent===s.content?0:1):1,d=0,f=b.get(c)??[],p=l?l.rawContent===s.content?structuredClone(l.blocks):d_(l,s.content,u):f.length?Aa(s.content,{sourceRevision:u,registeredWidgets:Lg,createId:()=>`seed:${c}:new${f.length}:${d++}`}):structuredClone(s.blocks);for(let e of Object.values(p)){let n=(b.get(c)??[]).filter(t=>t.blockId===e.id).sort((e,t)=>t.version-e.version)[0],r=s.content.slice(e.from,e.to);if(l?.rawContent===s.content)continue;let i=n&&n.kind===e.kind&&n.rawContent===r&&n.dialect===e.dialect&&n.sport===e.sport;e.version=l?i?n.version:(n?.version??0)+1:1,(!l||!i)&&I.push({noteId:c,blockId:e.id,version:e.version,kind:e.kind,rawContent:r,savedAt:t.meta.importedAt,...e.dialect?{dialect:e.dialect}:{},...e.sport?{sport:e.sport}:{}})}ja(s.content,p,u,{registeredWidgets:Lg});let h=Mg(s.content),_=typeof h.title==`string`&&h.title.trim()?h.title.trim():u_(s.path),v=t.chunkId?Wg(s.path,s.content,t.chunkId):void 0;if(!v)throw Error(`Unknown seed source family ${t.chunkId}`);let y=typeof h.date==`string`&&/^\d{4}-\d{2}-\d{2}$/.test(h.date)?Date.parse(`${h.date}T12:00:00Z`):void 0,x={...l,id:c,title:_,rawContent:s.content,sourceRevision:u,blocks:p,createdAt:t.manifest.version,...y===void 0?{}:{date:y},type:t.chunkId===`dashboards`?`dashboard`:`note`,sourceId:v,catalog:Hg(t.chunkId??``),seedOrigin:`seed`,seedVersion:t.manifest.version,seedChunkId:t.chunkId??void 0,sourcePath:s.path};y===void 0&&delete x.date,l_(x,l)||F.push(x);let S=new Map(Object.values(p).map(e=>[`${e.from}:${e.to}`,e])),w=new Map(s.blockIndex.map(e=>[e.blockId,e])),O=new Map;for(let e of s.blockIndex){let t=S.get(`${e.from}:${e.to}`);if(!t||t.kind!==e.dataType)throw Error(`Orphan seed projection`);O.set(e.blockId,t.id);let n={...e,id:`${c}:${t.id}`,noteId:c,blockId:t.id,blockVersion:t.version,sourceRevision:u,noteTitle:_,sourceId:v,sourcePath:s.path,rawContent:s.content.slice(t.from,t.to)},r=T[k.get(c)].find(e=>e.id===n.id);(!r||r.isStatic===!0)&&R.push(n)}for(let e of s.blockEfforts){let t=O.get(e.blockId);if(!t||w.get(e.blockId)?.dataType!==`wod`)throw Error(`Orphan seed effort link`);let n={...e,id:`${c}:${t}:${e.effortSlug}`,noteId:c,blockId:t,sourcePath:s.path},r=E[k.get(c)].find(e=>e.id===n.id);(!r||r.isStatic===!0)&&ne.push(r?{...n,createdAt:r.createdAt}:n)}let A=k.get(c),j=new Set;for(let e of Pg(s.content)){let n=N.get(e.label);n?e.type&&!n.type&&(n={...n,type:e.type},P.push(n),N.set(e.label,n)):(n={id:o.get(e.label),label:e.label,type:e.type,createdAt:t.meta.importedAt},P.push(n),N.set(e.label,n)),!j.has(n.id)&&(j.add(n.id),D[A].find(e=>e.tagId===n.id)||te.push({id:`${c}:${n.id}`,noteId:c,tagId:n.id}))}for(let e of D[A])j.has(e.tagId)||await C.delete(e.id);let M=h.slug;if(typeof M==`string`&&i.has(M)){let e=i.get(M);ee.push({id:e,slug:M,title:u_(s.path),createdAt:t.manifest.version}),L.push({id:a.get(c),pageId:e,noteId:c,createdAt:t.manifest.version})}n.totalNotes++,n.totalBlocks+=Object.keys(p).length}let re=new Set(R.map(e=>e.id)),ie=new Set(ne.map(e=>e.id));for(let e of T)for(let t of e)t.isStatic===!0&&!re.has(t.id)&&await x.delete(t.id);for(let e of E)for(let t of e)t.isStatic===!0&&!ie.has(t.id)&&await S.delete(t.id);for(let e of d){if(!g.has(e)||!m.get(e))continue;let t=k.get(e);await c.delete(e);for(let e of D[t])await C.delete(e.id);for(let e of O[t])await w.delete(e.id);n.deleted++}let ae=e.readwrite(`efforts`);if(t.chunkId===`efforts`){let e=t.rows.filter((e,t)=>g.has(r[t])).map(e=>t_(e.content)).filter(e=>e!==null).map(e=>({...e,registrySource:`bundled`})),i=await ae.getMany(e.map(e=>e.slug)),a=e.filter((e,t)=>(!i[t]||i[t]?.registrySource===`bundled`)&&!l_(e,i[t]));a.length&&await ae.putMany(a),n.totalEfforts=a.length;let o=new Set(e.map(e=>e.slug)),s=f.map(e=>{let t=m.get(e);return g.has(e)&&t?t_(t.rawContent)?.slug:void 0}).filter(e=>!!e&&!o.has(e)),c=await ae.getMany(s);for(let[e,t]of c.entries())t?.registrySource===`bundled`&&await ae.delete(s[e])}return F.length&&await c.putMany(F),I.length&&await _.putMany(I),await f_(x,R,R.map(e=>e.id)),await f_(S,ne,ne.map(e=>e.id)),P.length&&await A.putMany([...new Map(P.map(e=>[e.id,e])).values()]),te.length&&await C.putMany(te),await f_(e.readwrite(`page`),ee,ee.map(e=>e.id)),await f_(w,L,L.map(e=>e.id)),await s.put(t.meta),n})}var m_=(0,V.createContext)({isDebugMode:!1,toggleDebugMode:()=>{}}),h_=({children:e})=>{let[t,n]=(0,V.useState)(()=>typeof window<`u`&&localStorage.getItem(`wod-wiki-debug-mode`)===`true`),r=(0,V.useCallback)(()=>{n(e=>{let t=!e;return typeof window<`u`&&localStorage.setItem(`wod-wiki-debug-mode`,String(t)),t?Qs.enable():Qs.disable(),t})},[]);return(0,V.useEffect)(()=>{t?Qs.enable():Qs.disable()},[t]),(0,H.jsx)(m_.Provider,{value:{isDebugMode:t,toggleDebugMode:r},children:e})};function g_(){return(0,V.useContext)(m_)}var __=new class{name=`Default`;async canProcess(e){return!0}async process(e){let t=await e.arrayBuffer();return{label:e.name,mimeType:e.type||`application/octet-stream`,data:t}}},v_=new class{name=`GPX`;async canProcess(e){return e.name.split(`.`).pop()?.toLowerCase()===`gpx`||e.type===`application/gpx+xml`}async process(e){let t=await e.text(),n;try{let e=new DOMParser().parseFromString(t,`application/xml`),r=Array.from(e.querySelectorAll(`time`)).map(e=>new Date(e.textContent||``).getTime()).filter(e=>!isNaN(e)).sort((e,t)=>e-t);r.length>0&&(n={start:r[0],end:r[r.length-1]})}catch{console.warn(`[GpxAttachmentStrategy] Failed to parse GPX content for metadata`)}return{label:e.name,mimeType:`application/gpx+xml`,timeSpan:n,data:t}}},y_=new class{name=`JSON`;async canProcess(e){return e.name.split(`.`).pop()?.toLowerCase()===`json`||e.type===`application/json`}async process(e){let t=await e.text(),n=e.name,r;try{let e=JSON.parse(t);if((e.label||e.name||e.title)&&(n=e.label||e.name||e.title),e.startTime&&e.endTime)r={start:new Date(e.startTime).getTime(),end:new Date(e.endTime).getTime()};else if(e.timestamp){let t=new Date(e.timestamp).getTime();r={start:t,end:t}}}catch{console.warn(`[JsonAttachmentStrategy] Failed to parse JSON content for metadata`)}return{label:n,mimeType:`application/json`,timeSpan:r,data:t}}},b_=new class{strategies;constructor(e=[v_,y_,__]){this.strategies=e}async process(e){for(let t of this.strategies)if(await t.canProcess(e)){console.log(`[FileProcessor] Using strategy: ${t.name}`);try{return await t.process(e)}catch(e){console.error(`[FileProcessor] Strategy ${t.name} failed:`,e)}}return __.process(e)}},x_=/^(\d{4})-(\d{2})-(\d{2})-(\d{2})-(\d{2})(?:-(\d{2})(?:-(\d{3}))?)?(?:-\d+)?$/,S_=/^(\d{4})-(\d{2})-(\d{2}) (\d{2})-(\d{2})(?:-(\d{2})\.(\d{3}))?$/,C_=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function w_(e){let t=new Date(e),n=(e,t=2)=>String(e).padStart(t,`0`);return[t.getFullYear(),n(t.getMonth()+1),n(t.getDate()),n(t.getHours()),n(t.getMinutes()),n(t.getSeconds()),n(t.getMilliseconds(),3)].join(`-`)}function T_(e){let t=new Date(e);return`Playground – ${t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})} ${t.toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`})}`}function E_(e){return new Date(Number(e[1]),Number(e[2])-1,Number(e[3]),Number(e[4]),Number(e[5]),Number(e[6]??0),Number(e[7]??0)).getTime()}function D_(e){let t=e;try{t=decodeURIComponent(e)}catch{}let n=t.match(x_)??t.match(S_);return n?T_(E_(n)):C_.test(t)?`Playground`:t||`Playground`}var O_=[{name:`notes`,keyPath:[`id`],indexes:[{name:`by-date`,keyPath:[`date`]},{name:`by-created`,keyPath:[`createdAt`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`page`,keyPath:[`id`],indexes:[{name:`by-date`,keyPath:[`date`],unique:!0},{name:`by-slug`,keyPath:[`slug`],unique:!0},{name:`by-user`,keyPath:[`userId`]}]},{name:`page_notes`,keyPath:[`id`],indexes:[{name:`by-page`,keyPath:[`pageId`]},{name:`by-note`,keyPath:[`noteId`]},{name:`by-page-note`,keyPath:[`pageId`,`noteId`],unique:!0},{name:`by-user`,keyPath:[`userId`]}]},{name:`tags`,keyPath:[`id`],indexes:[{name:`by-label`,keyPath:[`label`],unique:!0},{name:`by-type`,keyPath:[`type`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`tag_types`,keyPath:[`id`],indexes:[{name:`by-name`,keyPath:[`name`],unique:!0},{name:`by-user`,keyPath:[`userId`]}]},{name:`note_tags`,keyPath:[`id`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-tag`,keyPath:[`tagId`]},{name:`by-note-tag`,keyPath:[`noteId`,`tagId`],unique:!0},{name:`by-user`,keyPath:[`userId`]}]},{name:`block_revisions`,keyPath:[`noteId`,`blockId`,`version`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-block`,keyPath:[`noteId`,`blockId`]}]},{name:`sessions`,keyPath:[`id`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-completed`,keyPath:[`createdAt`]},{name:`by-content`,keyPath:[`blockContentId`]},{name:`by-block`,keyPath:[`blockId`]},{name:`by-page`,keyPath:[`pageId`]},{name:`by-origin`,keyPath:[`origin`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`attachments`,keyPath:[`id`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-time`,keyPath:[`createdAt`]},{name:`by-page`,keyPath:[`pageId`]},{name:`by-result`,keyPath:[`resultId`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`events`,keyPath:[`id`],indexes:[{name:`by-timestamp`,keyPath:[`timestamp`]},{name:`by-result-grain`,keyPath:[`resultId`,`grain`]},{name:`by-content-grain`,keyPath:[`blockContentId`,`grain`]},{name:`by-effort`,keyPath:[`effortSlug`]},{name:`by-outputType`,keyPath:[`outputType`]},{name:`by-grain`,keyPath:[`grain`]},{name:`by-metric-date`,keyPath:[`metricDateKeys`],multiEntry:!0},{name:`by-user`,keyPath:[`userId`]}]},{name:`field_catalog`,keyPath:[`id`],indexes:[{name:`by-path`,keyPath:[`path`]}]},{name:`field_sources`,keyPath:[`id`],indexes:[]},{name:`field_values`,keyPath:[`key`],indexes:[{name:`by-field`,keyPath:[`fieldId`]}]},{name:`field_catalog_meta`,keyPath:[`id`],indexes:[]},{name:`efforts`,keyPath:[`slug`],indexes:[{name:`by-discipline`,keyPath:[`baseAttributes.discipline`]},{name:`by-source`,keyPath:[`registrySource`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`block_index`,keyPath:[`id`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-content`,keyPath:[`blockContentId`]},{name:`by-type`,keyPath:[`dataType`]},{name:`by-source`,keyPath:[`sourceId`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`block_efforts`,keyPath:[`id`],indexes:[{name:`by-note`,keyPath:[`noteId`]},{name:`by-effort`,keyPath:[`effortSlug`]},{name:`by-block`,keyPath:[`blockContentId`]},{name:`by-user`,keyPath:[`userId`]}]},{name:`meta`,keyPath:[`key`],indexes:[]},{name:`memberships`,keyPath:[`id`],indexes:[],system:!0}],k_=`default`;function A_(e=Date.now()){return{id:k_,displayName:`Anonymous`,createdAt:e}}var j_=Object.fromEntries([`notes`,`page`,`page_notes`,`tags`,`tag_types`,`note_tags`,`sessions`,`attachments`,`events`,`efforts`,`block_index`,`block_efforts`].map(e=>[e,!0]));function M_(e,t,n){if(!j_[e]||typeof t!=`object`||!t||Array.isArray(t))return t;let r=t;return r.seedOrigin===`seed`||r.userId===n?t:{...r,userId:n}}function N_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&(`only`in e||`lower`in e||`upper`in e||`lowerOpen`in e||`upperOpen`in e)}function P_(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;let t=n;if(!(e in t))return;n=t[e]}if(n!==null&&typeof n!=`object`&&n!==void 0)return n}function F_(e,t){let n=e.keyPath.map(e=>P_(t,e));for(let[t,r]of n.entries())if(r===void 0)throw Error(`keyFromValue(${e.name}): keyPath part '${e.keyPath[t]}' missing on value`);let r=n;return r.length===1?r[0]:r}function I_(e){return encodeURIComponent(JSON.stringify(e))}function L_(e){if(e===void 0)return;if(!N_(e))return{only:e};if(e.only!==void 0)return e;let t={};return e.lower!==void 0&&e.lower!==null&&(t.lower=e.lower,t.lowerOpen=e.lowerOpen===!0),e.upper!==void 0&&e.upper!==null&&(t.upper=Array.isArray(e.upper)?e.upper.map(e=>Array.isArray(e)&&e.length===0?`￿`:e):e.upper,t.upperOpen=e.upperOpen===!0),t.lower!==void 0||t.upper!==void 0?t:void 0}function R_(e,t){if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t))return Array.isArray(e)?1:-1;for(let n=0;n<Math.min(e.length,t.length);n++){let r=R_(e[n],t[n]);if(r!==0)return r}return e.length-t.length}return typeof e==`number`&&typeof t==`number`?e<t?-1:+(e>t):typeof e==`number`||typeof t==`number`?typeof e==`number`?-1:1:e<t?-1:+(e>t)}function z_(e,t){if(t.only!==void 0)return R_(e,t.only)===0;if(t.lower!==void 0){let n=R_(e,t.lower);if(n<0||n===0&&t.lowerOpen===!0)return!1}if(t.upper!==void 0){let n=R_(e,t.upper);if(n>0||n===0&&t.upperOpen===!0)return!1}return!0}function B_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function V_(e,t){return t.every(t=>e[t]===void 0||typeof e[t]==`string`)}function H_(e,t){return t.every(t=>typeof e[t]==`number`&&Number.isFinite(e[t]))}function U_(e){if(!B_(e)||typeof e.id!=`string`||typeof e.title!=`string`||typeof e.rawContent!=`string`||!Number.isSafeInteger(e.sourceRevision)||typeof e.sourceRevision!=`number`||e.sourceRevision<1||!B_(e.blocks)||!H_(e,[`createdAt`])||e.date!==void 0&&!H_(e,[`date`])||!V_(e,[`type`,`sourceId`,`catalog`,`sourcePath`,`seedOrigin`,`seedChunkId`])||e.tags!==void 0&&(!Array.isArray(e.tags)||!e.tags.every(e=>typeof e==`string`)))return!1;try{return ja(e.rawContent,e.blocks,e.sourceRevision),!0}catch{return!1}}function W_(e){return B_(e)&&typeof e.id==`string`&&typeof e.noteId==`string`&&typeof e.blockId==`string`&&H_(e,[`blockVersion`,`sourceRevision`,`from`,`to`,`createdAt`])&&e.id===`${e.noteId}:${e.blockId}`&&typeof e.blockVersion==`number`&&Number.isSafeInteger(e.blockVersion)&&e.blockVersion>0&&typeof e.sourceRevision==`number`&&Number.isSafeInteger(e.sourceRevision)&&e.sourceRevision>0&&typeof e.from==`number`&&Number.isSafeInteger(e.from)&&e.from>=0&&typeof e.to==`number`&&Number.isSafeInteger(e.to)&&e.to>e.from&&[`wod`,`query`,`widget`,`embed`].includes(String(e.dataType))&&typeof e.rawContent==`string`&&typeof e.noteTitle==`string`&&V_(e,[`blockContentId`,`sourceId`,`sourcePath`,`routeId`])&&(e.position===void 0||H_(e,[`position`]))&&(e.isStatic===void 0||typeof e.isStatic==`boolean`)}function G_(e){return B_(e)&&typeof e.id==`string`&&typeof e.label==`string`&&H_(e,[`createdAt`])&&V_(e,[`type`])}function K_(e){return B_(e)&&typeof e.id==`string`&&H_(e,[`createdAt`])&&V_(e,[`date`,`slug`,`title`])}function q_(e){return B_(e)&&typeof e.id==`string`&&typeof e.noteId==`string`&&typeof e.pageId==`string`&&H_(e,[`createdAt`])&&(e.position===void 0||H_(e,[`position`]))}function J_(e){return B_(e)&&U_(e.note)&&Array.isArray(e.tags)&&e.tags.every(G_)&&Array.isArray(e.links)&&e.links.every(q_)&&Array.isArray(e.pages)&&e.pages.every(K_)}function Y_(e,t){if(!B_(e)||e.projectionVersion!==2||e.plan!==t||!Array.isArray(e.rows)||typeof e.selectedCount!=`number`||!Number.isSafeInteger(e.selectedCount)||e.selectedCount<0||typeof e.matchedCount!=`number`||!Number.isSafeInteger(e.matchedCount)||e.matchedCount<0||e.matchedCount>e.selectedCount||e.rows.length>e.matchedCount)throw Error(`ApiStorage: invalid or stale domain projection response`);let n={projectionVersion:2,selectedCount:e.selectedCount,matchedCount:e.matchedCount};switch(t){case`notes`:if(e.rows.every(U_))return{...n,plan:t,rows:e.rows};break;case`blocks`:if(e.rows.every(W_))return{...n,plan:t,rows:e.rows};break;case`entries`:if(e.rows.every(J_))return{...n,plan:t,rows:e.rows}}throw Error(`ApiStorage: invalid domain query rows`)}var X_=(e,t)=>`${e}\u0000${JSON.stringify(t)}`;function Z_(e,t,n){if(n?.has(e))return!0;if(!t)return!1;let r=`${e}\u0000`;for(let e of t.keys())if(e.startsWith(r))return!0;return!1}function Q_(e,t,n){if(!n)return;let r=n.get(X_(e,t));if(r)return r.kind===`put`?{hit:!0,value:r.value}:{hit:!1}}function $_(e,t,n,r,i,a,o,s){if(!n||!Z_(t,n,r))return a===void 0?i:i.slice(0,a);let c=new Map;if(!r?.has(t))for(let t of i)c.set(JSON.stringify(F_(e,t)),t);let l=`${t}\u0000`;for(let[e,t]of n)e.startsWith(l)&&(t.kind===`put`?c.set(e.slice(l.length),t.value):c.delete(e.slice(l.length)));let u=s?e.indexes.find(e=>e.name===s):void 0;if(s&&!u)throw Error(`unknown index '${s}' for ${t}`);let d=t=>{if(!u)return F_(e,t);let n=u.keyPath.map(e=>P_(t,e));if(n.some(e=>e===void 0))return;let r=n.filter(e=>e!==void 0);return r.length===1?r[0]:r},f=e=>{if(u?.multiEntry){let t=e;for(let e of u.keyPath[0].split(`.`)){if(typeof t!=`object`||!t||!(e in t))return!1;t=Reflect.get(t,e)}return Array.isArray(t)&&t.some(e=>(typeof e==`string`||typeof e==`number`)&&(!o||z_(e,o)))}let t=d(e);return t!==void 0&&(!o||z_(t,o))},p=[...c.values()].filter(f);return p.sort((t,n)=>{let r=R_(F_(e,t),F_(e,n));if(u?.multiEntry)return r;let i=d(t),a=d(n);return i!==void 0&&a!==void 0&&R_(i,a)||r}),a===void 0?p:p.slice(0,a)}function ev(e,t,n){let r=new Set(e),i=[];for(let e of n)r.has(e)&&i.push({op:`clear`,store:e});for(let[e,n]of t){let t=e.indexOf(`\0`),a=e.slice(0,t);r.has(a)&&(n.kind===`put`?i.push({op:`put`,store:a,value:n.value}):i.push({op:`delete`,store:a,key:JSON.parse(e.slice(t+1))}))}return i}function tv(e,t){if(Object.is(e,t))return!0;if(e instanceof ArrayBuffer&&t instanceof ArrayBuffer){let n=new Uint8Array(e),r=new Uint8Array(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>tv(e,t[n]));let n=Object.keys(e).filter(t=>Reflect.get(e,t)!==void 0),r=Object.keys(t).filter(e=>Reflect.get(t,e)!==void 0);return n.length===r.length&&n.every(n=>Object.hasOwn(t,n)&&tv(Reflect.get(e,n),Reflect.get(t,n)))}async function nv(e,t,n,r){let i=r?.params?.toString(),a=await e.fetchImpl(`${e.baseUrl}/v1${n}${i?`?${i}`:``}`,{method:t,headers:r?.body===void 0?void 0:{"content-type":`application/json`},body:r?.body===void 0?void 0:JSON.stringify(r.body)});if(!a.ok)throw Error(`ApiStorage: ${t} /v1${n} → ${a.status}`);return a}async function rv(e,t,n){let r=await e.fetchImpl(`${e.baseUrl}/v1/${t}/get?key=${I_(n)}`);if(r.status!==404){if(!r.ok)throw Error(`ApiStorage: GET /v1/${t}/get → ${r.status}`);return await r.json()}}async function iv(e,t,n,r,i){let a=new URLSearchParams;return r&&a.set(`range`,JSON.stringify(r)),i!==void 0&&a.set(`count`,String(i)),await(await nv(e,`GET`,`/${t}/${n}`,{params:a})).json()}async function av(e,t,n,r){let i=new URLSearchParams;return n&&i.set(`range`,JSON.stringify(n)),r!==void 0&&i.set(`index`,r),(await(await nv(e,`GET`,`/${t}/count`,{params:i})).json()).count}async function ov(e,t,n){await nv(e,`DELETE`,`/${t}`,{params:new URLSearchParams({key:JSON.stringify(n)})})}var sv=class{http;defs;getUserId;constructor(e=`/api`,t=globalThis.fetch.bind(globalThis),n={}){this.http={baseUrl:e,fetchImpl:t},this.getUserId=n.getUserId,this.defs=Object.fromEntries(O_.map(e=>[e.name,e]))}def(e){let t=this.defs[e];if(!t)throw Error(`ApiStorage: unknown store '${e}'`);return t}makeView(e,t,n,r,i=!1){return new cv(this.http,this.def(e),e,t,n,this.getUserId,r,i)}readonly(e){return this.makeView(e)}readwrite(e){return this.makeView(e,void 0,void 0,void 0,!0)}async queryDomain(e){let t=await this.http.fetchImpl(`${this.http.baseUrl}/v1/query`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(t.status===409){let e=await t.json();if(typeof e==`object`&&e&&`code`in e&&e.code===`domain_projection_unavailable`)return}if(!t.ok)throw Error(`ApiStorage: POST /v1/query → ${t.status}`);return Y_(await t.json(),e.plan)}async transaction(e,t,n){let r=new Map,i=new Set,a=new Map,o=new Set(e),s=(e,n)=>{if(!o.has(e))throw Error(`store outside transaction scope`);if(n&&t!==`readwrite`)throw Error(`read-only transaction`);return this.makeView(e,r,i,a,n)},c=await n({readonly:e=>s(e,!1),readwrite:e=>s(e,!0)});return await this.flush(r,i,a),c}async flush(e,t,n){let r=ev(O_.map(e=>e.name),e,t);r.length>0&&await nv(this.http,`POST`,`/tx`,{body:{ops:[...n.values(),...r]}})}async wipe(){await nv(this.http,`POST`,`/wipe`)}async close(){}},cv=class{http;def;store;buffer;cleared;getUserId;checks;mutable;constructor(e,t,n,r,i,a,o,s=!1){this.http=e,this.def=t,this.store=n,this.buffer=r,this.cleared=i,this.getUserId=a,this.checks=o,this.mutable=s}dirty(){return Z_(this.store,this.buffer,this.cleared)}async get(e){let t=N_(e)?e:void 0,n;if(t){if(t.only===void 0)throw Error(`ApiStorage.get: needs a plain key or {only}; bounded ranges match no single row`);n=t.only}else n=e;let r=Q_(this.store,n,this.buffer);if(r)return r.hit?r.value:void 0;if(this.cleared?.has(this.store))return;let i=await rv(this.http,this.store,n),a=X_(this.store,n);return this.checks?.has(a)||this.checks?.set(a,{op:`check`,store:this.store,key:n,value:structuredClone(i??null)}),i}async getMany(e){return Promise.all(e.map(e=>this.get(e)))}async getAllFromIndexMany(e,t){return Promise.all(t.map(t=>this.getAllFromIndex(e,t)))}async getAll(e,t){let n=L_(e);return this.overlay(await this.serverRows(`all`,n,this.dirty()?void 0:t),t,n)}async getAllFromIndex(e,t,n){let r=L_(t);return this.overlay(await this.serverRows(`index/${encodeURIComponent(e)}`,r,this.dirty()?void 0:n),n,r,e)}async count(e){let t=L_(e);return this.dirty()?this.overlay(await this.serverRows(`all`,t),void 0,t).length:av(this.http,this.store,t)}async countFromIndex(e,t){let n=L_(t);return this.dirty()?this.overlay(await this.serverRows(`index/${encodeURIComponent(e)}`,n),void 0,n,e).length:av(this.http,this.store,n,e)}async serverRows(e,t,n){if(this.cleared?.has(this.store))return[];let r=await iv(this.http,this.store,e,t,n);for(let e of r){let t=F_(this.def,e),n=X_(this.store,t);this.checks?.has(n)||this.checks?.set(n,{op:`check`,store:this.store,key:t,value:structuredClone(e)})}return r}overlay(e,t,n,r){return $_(this.def,this.store,this.buffer,this.cleared,e,t,n,r)}async put(e,t){if(!this.mutable)throw Error(`read-only store`);let n=this.getUserId?.(),r=n?M_(this.store,e,n):e,i=F_(this.def,r);if(this.store===`block_revisions`){let e=this.buffer?.get(X_(this.store,i));if(e?.kind===`put`&&!tv(e.value,r))throw Error(`immutable block revision collision`)}return this.buffer?(this.buffer.set(X_(this.store,i),{kind:`put`,value:r}),i):(await nv(this.http,`POST`,`/tx`,{body:{ops:[{op:`put`,store:this.store,value:r}]}}),i)}async putMany(e,t){if(!this.mutable)throw Error(`read-only store`);if(this.buffer){let t=[];for(let n of e)t.push(await this.put(n));return t}let n=e.map(e=>this.getUserId?M_(this.store,e,this.getUserId()):e),r=n.map(e=>F_(this.def,e));return await nv(this.http,`POST`,`/tx`,{body:{ops:n.map(e=>({op:`put`,store:this.store,value:e}))}}),r}async delete(e){if(!this.mutable)throw Error(`read-only store`);if(this.store===`block_revisions`)throw Error(`block history requires explicit wipe`);let t=N_(e)?e:void 0;if(t){if(this.buffer){let e=await this.getAll(t);for(let t of e){let e=F_(this.def,t);this.buffer.set(X_(this.store,e),{kind:`delete`,key:e})}return}await ov(this.http,this.store,t);return}let n=e;if(this.buffer){this.buffer.set(X_(this.store,n),{kind:`delete`,key:n});return}await ov(this.http,this.store,n)}async clear(){if(!this.mutable)throw Error(`read-only store`);if(this.store===`block_revisions`)throw Error(`block history requires explicit wipe`);if(this.buffer){this.cleared?.add(this.store);let e=`${this.store}\u0000`;for(let t of[...this.buffer.keys()])t.startsWith(e)&&this.buffer.delete(t);return}await nv(this.http,`POST`,`/tx`,{body:{ops:[{op:`clear`,store:this.store}]}})}},lv=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`NotePersistenceError`}},uv={registeredWidgets:wa},dv=class{tx;constructor(e){this.tx=e}readonly(e){return this.tx.readonly(e)}readwrite(e){return this.tx.readwrite(e)}transaction(e,t,n){return n(this.tx)}wipe(){return Promise.reject(Error(`wipe() is not available inside a transaction scope`))}close(){return Promise.reject(Error(`close() is not available inside a transaction scope`))}};function fv(e){return typeof IDBKeyRange<`u`?IDBKeyRange.bound([e,``],[e,`￿`]):{lower:[e,``],upper:[e,`￿`]}}function pv(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}var mv=64,hv=[{id:`type-domain`,name:`domain`,label:`Domain`,color:`#10b981`},{id:`type-format`,name:`format`,label:`Format`,color:`#8b5cf6`},{id:`type-equipment`,name:`equipment`,label:`Equipment`,color:`#3b82f6`},{id:`type-quality`,name:`quality`,label:`Quality`,color:`#f59e0b`},{id:`type-intent`,name:`intent`,label:`Intent`,color:`#ec4899`},{id:`type-category`,name:`category`,label:`Category`,color:`#6366f1`},{id:`type-type`,name:`type`,label:`Type`,color:`#a855f7`},{id:`type-discipline`,name:`discipline`,label:`Discipline`,color:`#14b8a6`}];function gv(e){let t=new Set;for(let n of e)if(n.exerciseId)t.add(n.exerciseId);else{let e=n.metrics?.getMetric?.(`effort`);if(e?.effort){let n=e.effort.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);n&&t.add(n)}}return Array.from(t)}var _v=class e{storage;scopedTx;constructor(e,t=!1){this.storage=e,this.scopedTx=t}async withTransaction(t,n){return this.storage.transaction(t,`readwrite`,t=>n(new e(new dv(t),!0)))}async queryDomain(e){if(!this.scopedTx)return this.storage.queryDomain?.(e)}async getNote(e){return this.storage.readonly(`notes`).get(e)}async getNoteBySlug(e){let t=[e];e.startsWith(`playground/`)?t.push(e.slice(11)):t.push(`playground/${e}`);for(let e of t){let t=await this.storage.readonly(`page`).getAllFromIndex(`by-slug`,e);for(let e of t){let t=await this.getPageNotes(e.id);for(let e of t){let t=await this.getNote(e.noteId);if(t)return t}}}}async getAllNotes(){return this.storage.readonly(`notes`).getAll()}async getNotesByDateRange(e,t,n){let r=n?.endExclusive===!0?IDBKeyRange.bound(e,t,!1,!0):IDBKeyRange.bound(e,t),i=this.storage.readonly(`notes`),[a,o]=await Promise.all([i.getAllFromIndex(`by-date`,r),i.getAllFromIndex(`by-created`,r)]),s=new Map;for(let e of a)s.set(e.id,e);for(let e of o)e.date===void 0&&s.set(e.id,e);return Array.from(s.values()).sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}async getNotesByIds(e){return e.length===0?[]:this.storage.transaction([`notes`],`readonly`,async t=>{let n=t.readonly(`notes`),r=[];for(let t of e){let e=await n.get(t);e&&r.push(e)}return r})}async getEntryBatches(e){let t=new Map;if(e.length===0)return t;if(this.storage.queryDomain){let n=[...new Set(e)],r=[],i=!0;for(let e=0;e<n.length&&i;e+=mv){let t=await this.storage.queryDomain({plan:`entries`,selection:[{field:`id`,values:n.slice(e,e+mv)}]});t&&t.plan===`entries`?r.push(...t.rows):i=!1}if(i){for(let e of r)t.set(e.note.id,e);return t}}return this.storage.transaction([`notes`,`note_tags`,`tags`,`page_notes`,`page`],`readonly`,async n=>{for(let r of e){let e=await n.readonly(`notes`).get(r),i=await n.readonly(`page_notes`).getAllFromIndex(`by-note`,r),a=n.readonly(`tags`),o=[];for(let e of await n.readonly(`note_tags`).getAllFromIndex(`by-note`,r)){let t=await a.get(e.tagId);t&&o.push(t)}let s=n.readonly(`page`),c=[];for(let e of i){let t=await s.get(e.pageId);t&&c.push(t)}e&&t.set(r,{note:e,tags:o,links:i,pages:c})}return t})}async saveNote(e){return await this.storage.readwrite(`notes`).put(e),e.id}async deleteNote(e){await this.storage.transaction([`notes`,`attachments`,`note_tags`,`block_index`,`block_efforts`,`page_notes`],`readwrite`,async t=>{await t.readwrite(`notes`).delete(e);let n=t.readwrite(`attachments`);for(let t of await n.getAllFromIndex(`by-note`,e))await n.delete(t.id);let r=t.readwrite(`note_tags`);for(let t of await r.getAllFromIndex(`by-note`,e))await r.delete(t.id);let i=t.readwrite(`block_index`);for(let t of await i.getAllFromIndex(`by-note`,e))await i.delete(t.id);let a=t.readwrite(`block_efforts`);for(let t of await a.getAllFromIndex(`by-note`,e))await a.delete(t.id);let o=t.readwrite(`page_notes`);for(let t of await o.getAllFromIndex(`by-note`,e))await o.delete(t.id)})}async getPage(e){return this.storage.readonly(`page`).get(e)}async getAllPages(){return this.storage.readonly(`page`).getAll()}async getPageByDate(e){return(await this.storage.readonly(`page`).getAllFromIndex(`by-date`,e))[0]}async getPageBySlug(e){return(await this.storage.readonly(`page`).getAllFromIndex(`by-slug`,e))[0]}async savePage(e){return await this.storage.readwrite(`page`).put(e),e.id}async getAllPageNotes(){return this.storage.readonly(`page_notes`).getAll()}async getPageNotes(e){return this.storage.readonly(`page_notes`).getAllFromIndex(`by-page`,e)}async getNotePages(e){return this.storage.readonly(`page_notes`).getAllFromIndex(`by-note`,e)}async addNoteToPage(e,t,n){let r=await this.storage.readonly(`page_notes`).getAllFromIndex(`by-page-note`,[t,e]);if(r.length>0)return r[0].id;let i=pv();return await this.storage.readwrite(`page_notes`).put({id:i,pageId:t,noteId:e,position:n,createdAt:Date.now()}),i}async removeNoteFromPage(e,t){let n=await this.storage.readonly(`page_notes`).getAllFromIndex(`by-page-note`,[t,e]);for(let e of n)await this.storage.readwrite(`page_notes`).delete(e.id)}async getOrCreatePageForDate(e){let t=await this.getPageByDate(e);if(t)return t;let n={id:pv(),date:e,title:e,createdAt:Date.now()};try{return await this.savePage(n),n}catch(t){let n=await this.getPageByDate(e);if(n)return n;throw t}}async getAllTags(){return this.storage.readonly(`tags`).getAll()}async getTags(e){let t=await this.storage.readonly(`tags`).getAll();if(e){let n=e.toLowerCase();return t.filter(e=>e.type?.toLowerCase()===n)}return t}async putTag(e){await this.storage.readwrite(`tags`).put(e)}async updateTagType(e,t){let n=await this.storage.readonly(`tags`).get(e);n&&await this.storage.readwrite(`tags`).put({...n,type:t})}async getAllTagTypes(){return this.storage.readonly(`tag_types`).getAll()}async ensureDefaultTagTypes(){if((await this.storage.readonly(`tag_types`).getAll()).length===0){let e=Date.now();for(let t of hv)try{await this.storage.readwrite(`tag_types`).put({...t,createdAt:e})}catch{}}}async getTagType(e){return await this.storage.readonly(`tag_types`).get(e)||(await this.storage.readonly(`tag_types`).getAllFromIndex(`by-name`,e))[0]}async putTagType(e){await this.storage.readwrite(`tag_types`).put(e)}async deleteTagType(e){await this.storage.readwrite(`tag_types`).delete(e)}async getTagsForNote(e){let t=await this.storage.readonly(`note_tags`).getAllFromIndex(`by-note`,e),n=this.storage.readonly(`tags`),r=[];for(let e of t){let t=await n.get(e.tagId);t&&r.push(t)}return r}async getAllFromIndex(e,t,n){return this.storage.readonly(e).getAllFromIndex(t,n)}async getNoteTagLabelsBatch(){let[e,t]=await Promise.all([this.storage.readonly(`note_tags`).getAll(),this.storage.readonly(`tags`).getAll()]),n=new Map(t.map(e=>[e.id,e])),r=new Map;for(let t of e){let e=n.get(t.tagId);if(!e)continue;let i=r.get(t.noteId);i?i.push({label:e.label,type:e.type}):r.set(t.noteId,[{label:e.label,type:e.type}])}return r}async getEffortSlugsByNoteBatch(){let e=await this.storage.readonly(`block_efforts`).getAll(),t=new Map;for(let n of e){let e=t.get(n.noteId);e?e.includes(n.effortSlug)||e.push(n.effortSlug):t.set(n.noteId,[n.effortSlug]);let r=(n.noteId.startsWith(`feeds/`)?n.noteId.slice(6):n.noteId).split(`/`)[0];if(r&&r!==n.noteId){let e=t.get(r);e?e.includes(n.effortSlug)||e.push(n.effortSlug):t.set(r,[n.effortSlug])}}return t}async getTagByLabel(e){return(await this.storage.readonly(`tags`).getAllFromIndex(`by-label`,e))[0]}async deleteTag(e){await this.storage.readwrite(`tags`).delete(e)}async getNotesForTag(e){let t=await this.storage.readonly(`tags`).getAllFromIndex(`by-label`,e);if(!t[0])return[];let n=t[0].id,r=await this.storage.readonly(`note_tags`).getAllFromIndex(`by-tag`,n),i=this.storage.readonly(`notes`),a=[];for(let e of r){let t=await i.get(e.noteId);t&&a.push(t)}return a}async setNoteTags(e,t){await this.storage.transaction([`tags`,`note_tags`],`readwrite`,async n=>{let r=n.readwrite(`note_tags`),i=n.readwrite(`tags`),a=await r.getAllFromIndex(`by-note`,e),o=Date.now(),s=new Map;for(let e of t){if(!e)continue;let t=typeof e==`string`?e:e?.label;if(typeof t!=`string`)continue;let n=t.trim();if(!n)continue;let r=typeof e==`string`?void 0:e.type,i=s.get(n);(!i||!i.type&&r)&&s.set(n,{label:n,type:r})}let c=new Set;for(let{label:t,type:n}of s.values()){let s=(await i.getAllFromIndex(`by-label`,t))[0];s?n&&!s.type&&(s={...s,type:n},await i.put(s)):(s={id:pv(),label:t,type:n,createdAt:o},await i.put(s));let l=a.find(e=>e.tagId===s.id);l?c.add(l.id):await r.put({id:pv(),noteId:e,tagId:s.id})}for(let e of a)c.has(e.id)||await r.delete(e.id)})}async getBlockRevision(e,t,n){return this.storage.readonly(`block_revisions`).get([e,t,n])}async getBlockHistory(e,t){return(await this.storage.readonly(`block_revisions`).getAllFromIndex(`by-block`,[e,t])).sort((e,t)=>e.version-t.version)}async getNoteBlockHistory(e){return(await this.storage.readonly(`block_revisions`).getAllFromIndex(`by-note`,e)).sort((e,t)=>e.savedAt-t.savedAt||e.blockId.localeCompare(t.blockId)||e.version-t.version)}async saveNoteSource(e){return this.withTransaction([`notes`,`block_revisions`,`block_index`,`block_efforts`],async t=>{let n=await t.getNote(e.noteId);if((n?.sourceRevision??0)!==e.expectedSourceRevision)throw new lv(`STALE_SOURCE`,`Note ${e.noteId} changed since it was loaded`);if(!n&&!e.metadata?.title)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${e.noteId}`);let r=Object.fromEntries(Object.entries(e.blocks).map(([t,n])=>[t,{...n,version:1,sourceRevision:e.expectedSourceRevision||1}]));ja(e.rawContent,r,e.expectedSourceRevision||1,uv);let i=await t.storage.readonly(`block_revisions`).getAllFromIndexMany(`by-block`,Object.keys(r).map(t=>[e.noteId,t])),a=new Map;for(let e of i)for(let t of e)t.version>(a.get(t.blockId)?.version??0)&&a.set(t.blockId,t);let o={},s=[],c=Date.now();for(let t of Object.values(r)){let r=a.get(t.id),i=e.rawContent.slice(t.from,t.to),l=r&&r.rawContent===i&&r.kind===t.kind&&r.dialect===t.dialect&&r.sport===t.sport,u=l?r.version:(r?.version??0)+1;o[t.id]={...t,version:u,sourceRevision:n?.sourceRevision??1},l||s.push({noteId:e.noteId,blockId:t.id,version:u,kind:t.kind,rawContent:i,dialect:t.dialect,sport:t.sport,savedAt:c})}let l=!n||n.rawContent!==e.rawContent||Object.keys(n.blocks).length!==Object.keys(o).length||Object.values(o).some(e=>{let t=n.blocks[e.id];return!t||t.kind!==e.kind||t.from!==e.from||t.to!==e.to||t.version!==e.version||t.dialect!==e.dialect||t.sport!==e.sport}),u=(n?.sourceRevision??0)+ +!!l;for(let e of Object.values(o))e.sourceRevision=u;let d={...n,id:e.noteId,title:e.metadata?.title??n?.title??``,createdAt:n?.createdAt??e.createdAt??c,rawContent:e.rawContent,sourceRevision:u,blocks:o,type:e.metadata?.type??n?.type??e.noteType??`note`,date:e.metadata?.targetDate??n?.date,tags:e.metadata?.tags??n?.tags,sourceId:e.metadata?.sourceId===void 0?n?.sourceId:e.metadata.sourceId??void 0};return n&&tv(n,d)?n:(s.length&&await t.storage.readwrite(`block_revisions`).putMany(s),await t.saveNote(d),await t.rebuildBlockIndexForNote(d.id),d)})}async saveSession(e){return await this.storage.readwrite(`sessions`).put(e),e.id}async getSessionById(e){return this.storage.readonly(`sessions`).get(e)}async getSessionsForNote(e){return this.storage.readonly(`sessions`).getAllFromIndex(`by-note`,e)}async getSessionsByContentId(e){return this.storage.readonly(`sessions`).getAllFromIndex(`by-content`,e)}async getSessionsForSection(e,t){return(await this.getSessionsForNote(e)).filter(e=>e.blockId===t)}async getRecentSessions(e=20){return(await this.storage.readonly(`sessions`).getAll()).sort((e,t)=>t.createdAt-e.createdAt).slice(0,e)}async saveAttachment(e){return await this.storage.readwrite(`attachments`).put(e),e.id}async getAttachmentsForNote(e){return this.storage.readonly(`attachments`).getAllFromIndex(`by-note`,e)}async deleteAttachment(e){await this.storage.readwrite(`attachments`).delete(e)}async appendEvents(e){e.length!==0&&await this.storage.transaction([`events`],`readwrite`,async t=>{let n=t.readwrite(`events`);for(let t of e)await n.put(t)})}async finalizeSummaries(e,t){await this.storage.transaction([`events`],`readwrite`,async n=>{let r=n.readwrite(`events`),i=await r.getAllFromIndex(`by-result-grain`,[e,`summary`]);for(let e of i)await r.delete(e.id);for(let e of t)await r.put(e)})}async deleteEvents(e){e.length!==0&&await this.storage.transaction([`events`],`readwrite`,async t=>{let n=t.readwrite(`events`);for(let t of e)await n.delete(t)})}async getEventsForNote(e){let t=await this.getSessionsForNote(e),n=new Set(t.map(e=>e.id));n.add(`wellness:${e}`);let r=this.storage.readonly(`events`),i=[];for(let e of n)i.push(...await r.getAllFromIndex(`by-result-grain`,fv(e)));return i}async getEventsByResult(e){return this.storage.readonly(`events`).getAllFromIndex(`by-result-grain`,fv(e))}async getEventsByTimeRange(e,t){return this.storage.readonly(`events`).getAllFromIndex(`by-timestamp`,IDBKeyRange.bound(e,t))}async getEventsByMetricDates(e){let t=this.storage.readonly(`events`),n=new Map;for(let r of e)for(let e of await t.getAllFromIndex(`by-metric-date`,r))n.set(e.id,e);return Array.from(n.values())}async getEventsByContent(e){return this.storage.readonly(`events`).getAllFromIndex(`by-content-grain`,fv(e))}async scanAll(){return this.storage.readonly(`events`).getAll()}async countEvents(){return this.storage.readonly(`events`).count()}async getAllBlockIndex(){return this.storage.readonly(`block_index`).getAll()}async getBlockIndexByType(e){return this.storage.readonly(`block_index`).getAllFromIndex(`by-type`,e)}async getBlockIndexByNote(e){return this.storage.readonly(`block_index`).getAllFromIndex(`by-note`,e)}async countBlockIndex(){return this.storage.readonly(`block_index`).count()}async countBlockIndexInDomain(){let e=this.storage.readonly(`block_index`),[t,n,r,i,a,o,s,c]=await Promise.all([e.count(),e.countFromIndex(`by-source`),e.countFromIndex(`by-source`,``),e.countFromIndex(`by-source`,IDBKeyRange.bound(`collection:`,`collection;`,!1,!0)),e.countFromIndex(`by-source`,IDBKeyRange.bound(`page:collection:`,`page:collection;`,!1,!0)),e.countFromIndex(`by-source`,IDBKeyRange.bound(`guides:`,`guides;`,!1,!0)),e.countFromIndex(`by-source`,`playground`),e.getAllFromIndex(`by-source`,`journal`)]);return t-n+r+i+a+o+s+c.filter(e=>!e.id.startsWith(`pg-`)&&!e.noteId.startsWith(`pg-`)).length}async rebuildBlockIndexForNote(e){let t=await this.getNote(e);if(!t)return;let n=Oa(t.rawContent,uv);await this.storage.transaction([`block_index`,`block_efforts`,`block_revisions`],`readwrite`,async r=>{let i=r.readwrite(`block_index`),a=r.readwrite(`block_efforts`),o=new Map((await i.getAllFromIndex(`by-note`,e)).map(e=>[e.id,e])),s=new Map((await a.getAllFromIndex(`by-note`,e)).map(e=>[e.id,e])),c=0;for(let l of Object.values(t.blocks).sort((e,t)=>e.from-t.from)){let u=`${e}:${l.id}`,d=o.get(u);o.delete(u);let f=n.find(e=>e.from===l.from&&e.to===l.to),p=await r.readonly(`block_revisions`).get([e,l.id,l.version]);if(!p)throw Error(`Missing saved revision ${u}:${l.version}`);let m={id:u,noteId:e,blockId:l.id,blockVersion:l.version,sourceRevision:t.sourceRevision,from:l.from,to:l.to,position:c++,dataType:l.kind,blockContentId:f?.scriptBlock?.contentId,rawContent:t.rawContent.slice(l.from,l.to),noteTitle:t.title,createdAt:p.savedAt,isStatic:t.seedOrigin===`seed`||void 0,sourceId:t.sourceId,sourcePath:t.sourcePath,routeId:d?.routeId};(!d||!tv(d,m))&&await i.put(m);let h=[...s.values()].filter(e=>e.blockId===l.id);if(d&&d.blockVersion===l.version){for(let e of h)s.delete(e.id);continue}if(!(l.kind!==`wod`||!f?.scriptBlock))for(let n of gv(gs(f.scriptBlock.content,{sport:l.sport}).statements)){let r=`${e}:${l.id}:${n}`,i=s.get(r);s.delete(r);let o={id:r,noteId:e,blockId:l.id,blockContentId:m.blockContentId,effortSlug:n,createdAt:i?.createdAt??p.savedAt,isStatic:m.isStatic,sourcePath:t.sourcePath};(!i||!tv(i,o))&&await a.put(o)}}for(let e of o.values())await i.delete(e.id);for(let e of s.values())await a.delete(e.id)})}async getEffort(e){return this.storage.readonly(`efforts`).get(e)}async getAllEfforts(){return this.storage.readonly(`efforts`).getAll()}async saveEffort(e){await this.storage.readwrite(`efforts`).put(e);for(let t of e.aliases){let n=t.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);if(!n)continue;let r=`e/${n}`;await this.getPageBySlug(r)||await this.savePage({id:pv(),slug:r,title:`${e.label} (Alias)`,createdAt:Date.now()})}return e.slug}async getSeedContent(){return(await this.storage.readonly(`notes`).getAll()).filter(e=>e.seedOrigin===`seed`&&e.sourcePath).map(e=>({path:e.sourcePath,raw:e.rawContent}))}async wipe(){await this.storage.wipe()}},vv={getItem(e){try{return typeof window<`u`&&window.localStorage?window.localStorage.getItem(e):null}catch{return null}},setItem(e,t){try{typeof window<`u`&&window.localStorage&&window.localStorage.setItem(e,t)}catch{}},removeItem(e){try{typeof window<`u`&&window.localStorage&&window.localStorage.removeItem(e)}catch{}}},yv=class{prefix;backend;constructor(e=``,t=vv){this.prefix=e,this.backend=t}qualify(e){return this.prefix?`${this.prefix}${e}`:e}get(e,t){let n=this.getRaw(e,t?.alias);if(n==null)return t?.fallback??null;try{return JSON.parse(n)}catch{return t?.fallback??null}}set(e,t){try{this.backend.setItem(this.qualify(e),JSON.stringify(t))}catch{}}getRaw(e,t){let n=this.backend.getItem(this.qualify(e));return n==null&&t&&(n=this.backend.getItem(this.qualify(t))),n}setRaw(e,t){t==null?this.remove(e):this.backend.setItem(this.qualify(e),t)}remove(e,t){this.backend.removeItem(this.qualify(e)),t&&this.backend.removeItem(this.qualify(t))}},bv=`wodwiki.membership`;function xv(){try{let e=typeof window<`u`&&window.localStorage?window.localStorage.getItem(bv):null;if(e){let t=JSON.parse(e);if(typeof t?.displayName==`string`&&t.displayName.trim())return t.displayName.trim()}}catch{}return`Anonymous`}var Sv=class{store;cache;updates=Promise.resolve();constructor(e=new yv){this.store=e}currentSync(){return this.cache??this.store.get(bv)??void 0}async current(){return this.cache||(this.cache=this.store.get(bv)??A_(),this.store.set(bv,this.cache)),this.cache}update(e){let t=this.updates.then(()=>this.applyUpdate(e),()=>this.applyUpdate(e));return this.updates=t.then(()=>{},()=>{}),t}async applyUpdate(e){let t={...this.cache??this.store.get(bv)??A_(),...e,updatedAt:Date.now()};return this.cache=t,this.store.set(bv,t),t}},Cv;function wv(){return Cv??=Wt(()=>Promise.resolve().then(()=>jT).then(e=>e.storage),void 0)}var Tv=class{cache;updates=Promise.resolve();currentSync(){return this.cache}async current(){if(this.cache)return this.cache;let e=await wv(),t=await e.readonly(`memberships`).get(k_);return t||(t=A_(),await e.readwrite(`memberships`).put(t)),this.cache=t,t}update(e){let t=this.updates.then(()=>this.applyUpdate(e),()=>this.applyUpdate(e));return this.updates=t.then(()=>{},()=>{}),t}async applyUpdate(e){let t={...await this.current(),...e,updatedAt:Date.now()};return await(await wv()).readwrite(`memberships`).put(t),this.cache=t,t}};function Ev(e){return e===`indexed-db`?new Sv:new Tv}function Dv(e,t=256){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();if(!e.type.startsWith(`image/`))return i(Error(`Not an image file: ${e.type||e.name||`unknown`}`)),n;let a=URL.createObjectURL(e),o=new Image;return o.onload=()=>{URL.revokeObjectURL(a);let e=Math.min(o.naturalWidth,o.naturalHeight),n=Math.min(t,e),s=document.createElement(`canvas`);s.width=n,s.height=n;let c=s.getContext(`2d`);if(!c){i(Error(`Canvas 2D context unavailable`));return}c.drawImage(o,(o.naturalWidth-e)/2,(o.naturalHeight-e)/2,e,e,0,0,n,n),r(s.toDataURL(`image/jpeg`,.85))},o.onerror=()=>{URL.revokeObjectURL(a),i(Error(`Failed to decode image: ${e.name}`))},o.src=a,n}var Ov=0,kv=0,Av=null,jv=null,Mv=1,Nv=[],Pv=new Set,Fv={uploading:0,downloading:0,label:null,result:null,error:null};function Iv(){Fv={uploading:Ov,downloading:kv,label:Nv.length?Nv[Nv.length-1].label:null,result:Av,error:jv};for(let e of Pv)e()}function Lv(e,t){let n={direction:e,label:t};Nv.push(n),e===`upload`?Ov+=1:kv+=1,Iv();let r=!1;return()=>{if(r)return;r=!0;let t=Nv.indexOf(n);t>=0&&Nv.splice(t,1),e===`upload`?Ov=Math.max(0,Ov-1):kv=Math.max(0,kv-1),Iv()}}function Rv(e){Av={id:Mv++,source:e.source,added:e.added,updated:e.updated},jv=null,Iv()}function zv(e){jv=e,Iv()}function Bv(){return Fv}function Vv(e){return Pv.add(e),()=>{Pv.delete(e)}}Object.fromEntries(O_.map(e=>[e.name,!0]));var Hv={phase:`idle`,message:``,fromVersion:null,toVersion:0},Uv=new Set;function Wv(){return Hv}function Gv(e){return Uv.add(e),()=>Uv.delete(e)}var Kv=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function qv(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\])/g,`$1`):n)}function Jv(e){let t=e.match(Kv);return t?{meta:Yv(t[1].split(/\r?\n/)),body:e.slice(t[0].length)}:{meta:{},body:e}}function Yv(e){let t={};for(let n=0;n<e.length;n++){let r=e[n].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!r)continue;let i=r[1],a=r[2].trim();if(a===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(t[1].trim()),n++}t[i]=r.length>0?r:``}else{let e=/^(['"])(.*)\1$/.test(a),n=qv(a),r=Number(n);t[i]=!e&&n!==``&&!isNaN(r)?r:n}}return t}function Xv(e){return Yv(e.split(/\r?\n/))}function Zv(e){if(e===``)return`""`;let t=!isNaN(Number(e)),n=/^(true|false|null|yes|no|on|off)$/i.test(e);return/[":'\n#{}[\],&*?|<>=%!@`]/.test(e)||e!==e.trim()||e.startsWith(`-`)||t||n?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:e}function Qv(e){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r)){if(r.length===0){t.push(`${n}: ""`);continue}t.push(`${n}:`);for(let e of r)t.push(` - ${Zv(e)}`)}else typeof r==`number`?t.push(`${n}: ${r}`):t.push(`${n}: ${Zv(r)}`);return t.join(`
52
+ `)}function $v(e){return Jv(e).body}function ey(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`?n:void 0}function ty(e,t){let n=e[t];return Array.isArray(n)?n:[]}function ny(e){return ty(Jv(e).meta,`category`).map(e=>e.toLowerCase())}function ry(e){let t=Kv.test(e)?Jv(e).meta:Xv(e),n=t.tags??t.category,r=Array.isArray(n)?n:typeof n==`string`&&n.trim()?n.trim().startsWith(`[`)&&n.trim().endsWith(`]`)?n.trim().slice(1,-1).split(`,`):[n]:[];return[...new Set(r.map(e=>e.trim()).filter(Boolean))]}function iy(e,t=[]){let n=Kv.test(e)?Jv(e).meta:Xv(e),r=[],i=ry(e);for(let e of i)r.push({label:e});let a=Object.keys(n);for(let e of t){if(e===`tags`||e===`category`)continue;let t=a.find(t=>t.toLowerCase()===e.toLowerCase());if(!t)continue;let i=n[t];if(i==null||i===``)continue;let o=[];if(Array.isArray(i))o=i.map(String);else if(typeof i==`string`&&i.trim()){let e=i.trim();o=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1).split(`,`):[e]}for(let t of o){let n=t.trim();n&&r.push({label:n,type:e})}}let o=new Map;for(let e of r){let t=o.get(e.label);(!t||!t.type&&e.type)&&o.set(e.label,e)}return Array.from(o.values())}function ay(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.match(/^([^:]+):\s*(.*)$/);e&&(t[e[1].trim()]=e[2].trim())}return t}function oy(e){let t=e.match(/[?&]v=([a-zA-Z0-9_-]{11})/);if(t)return t[1];let n=e.match(/youtu\.be\/([a-zA-Z0-9_-]+)/);if(n)return n[1];let r=e.match(/youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/);return r?r[1]:null}function sy(e){if(!e)return null;let t=e.trim().replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(/[/?#:]/,1)[0].toLowerCase();return t===`youtube.com`||t===`youtu.be`||t.endsWith(`.youtube.com`)||t.endsWith(`.youtu.be`)?`youtube`:t===`amazon.com`||t===`amzn.to`||t.endsWith(`.amazon.com`)||t.endsWith(`.amzn.to`)?`amazon`:t===`strava.com`||t.endsWith(`.strava.com`)?`strava`:null}function cy(...e){return xe(en(e))}function ly({id:e,title:t,question:n,query:r,span:i,showQuery:a=!1,onInspect:o,onOpenInExplorer:s,toolbar:c,children:l}){return(0,H.jsxs)(`div`,{id:e,className:cy(`relative group/frame bg-card border border-border rounded-lg p-4 flex flex-col min-h-0`,i),children:[(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-2`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:t}),n&&(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:n})]}),(o||s)&&(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[o&&(0,H.jsx)(`button`,{type:`button`,onClick:o,title:`Inspect widget query`,"aria-label":`Inspect query for ${t||`widget`}`,className:`inline-flex items-center justify-center p-1 max-lg:min-h-11 max-lg:min-w-11 rounded bg-muted/80 text-muted-foreground hover:text-foreground transition-colors`,children:(0,H.jsx)(Nt,{className:`w-3.5 h-3.5`})}),s&&(0,H.jsx)(`button`,{type:`button`,onClick:s,title:`Open in explorer`,"aria-label":`Open ${t||`widget`} in explorer`,className:`inline-flex items-center justify-center p-1 max-lg:min-h-11 max-lg:min-w-11 rounded bg-muted/80 text-muted-foreground hover:text-foreground transition-colors`,children:(0,H.jsx)(Ht,{className:`w-3.5 h-3.5`})})]})]}),c&&(0,H.jsx)(`div`,{className:`mb-3`,children:c}),a&&r!=null&&r!==``&&(0,H.jsx)(`div`,{className:`font-mono text-[11px] text-primary/90 bg-background/60 rounded px-2 py-1 mb-3 whitespace-pre-wrap break-all`,children:r}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:l})]})}function uy({label:e,onClick:t,disabled:n,active:r,children:i}){return(0,H.jsx)(`button`,{type:`button`,onClick:t,title:e,"aria-label":e,disabled:n,className:cy(`inline-flex items-center justify-center p-1 max-lg:min-h-11 max-lg:min-w-11 rounded bg-muted/80 text-muted-foreground hover:text-foreground disabled:opacity-40 disabled:hover:text-muted-foreground transition-colors`,r&&`text-primary bg-primary/10`),children:i})}function dy({title:e,onClick:t}){return(0,H.jsx)(`button`,{type:`button`,onClick:t,title:`Edit widget`,"aria-label":`Edit widget ${e||``}`.trim(),className:`inline-flex items-center justify-center p-1 max-lg:min-h-11 max-lg:min-w-11 rounded bg-muted/80 text-muted-foreground hover:text-foreground transition-colors`,children:(0,H.jsx)(hn,{className:`w-3.5 h-3.5`})})}function fy(e){return(0,V.useMemo)(()=>e?e.parsed.error?{kind:`error`,message:e.parsed.error}:e.series.length===0?{kind:`empty`}:e.series.length===1&&e.series[0].points.length===1?{kind:`scalar`,value:e.series[0].points[0].value}:{kind:e.series.some(e=>e.points.length>1)?`timeseries`:`bars`}:{kind:`empty`},[e])}function py({result:e,className:t,actions:n}){let r=(0,V.useMemo)(()=>e?e.parsed.error?`Query error: ${e.parsed.error}`:e.series.length===0?`No data for this range.`:null:`Loading…`,[e]);return r===null&&!n?null:(0,H.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center text-sm text-muted-foreground px-4 text-center ${t??``}`,children:[r&&(0,H.jsx)(`div`,{children:r}),n&&(0,H.jsx)(`div`,{className:`mt-3`,children:n})]})}function my({result:e,unit:t,label:n,thresholds:r}){let i=fy(e),a=e.series[0]?.unit??t??``,o=(0,V.useMemo)(()=>i.kind===`scalar`?i.value:e.series.length===0?0:e.series[0].points[e.series[0].points.length-1]?.value??0,[e,i]),s=(0,V.useMemo)(()=>r?o>=r.green[0]&&o<=r.green[1]?`text-success`:o>=r.red[0]?`text-destructive`:`text-warning`:`text-foreground`,[o,r]);return(0,H.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center`,children:[(0,H.jsx)(py,{result:e}),e.series.length>0&&!e.parsed.error&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{className:`text-5xl font-bold tabular-nums ${s}`,children:[o.toLocaleString(void 0,{maximumSignificantDigits:3}),(0,H.jsx)(`span`,{className:`text-lg font-normal text-muted-foreground ml-1`,children:a})]}),(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2 text-center`,children:n})]})]})}function hy(e){return{parsed:e.parsed,series:e.series??[],stages:{selected:0,buckets:0,aggregated:0,groups:0},matched:[],...e.unit===void 0?{}:{unit:e.unit},...e.error?{error:e.error}:{},...e.table?{table:e.table}:{}}}function gy(e){let t=new Map;for(let n of e)for(let e of n.points)t.has(e.ts)||t.set(e.ts,{ts:e.ts}),t.get(e.ts)[n.label]=e.value;return Array.from(t.values()).sort((e,t)=>e.ts-t.ts)}function _y(e){let t=typeof e==`number`?e:Number(e);return Math.abs(t)>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function vy(e){return new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function yy(e){return new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}var by=[`hsl(var(--metric-time))`,`hsl(var(--metric-effort))`,`hsl(var(--metric-rep))`,`hsl(var(--metric-rounds))`,`hsl(var(--metric-distance))`,`hsl(var(--metric-resistance))`,`hsl(var(--metric-action))`,`hsl(var(--primary))`];function xy({result:e,unit:t}){let n=fy(e),r=(0,V.useMemo)(()=>gy(e.series),[e]),i=e.series[0]?.unit??t;return n.kind!==`timeseries`&&n.kind!==`scalar`?(0,H.jsx)(py,{result:e}):(0,H.jsx)(Wn,{width:`100%`,height:`100%`,children:(0,H.jsxs)(In,{data:r,margin:{top:4,right:8,bottom:0,left:-12},children:[(0,H.jsx)(Ee,{stroke:`hsl(var(--border))`,vertical:!1}),(0,H.jsx)(nt,{dataKey:`ts`,tickFormatter:vy,tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,H.jsx)(R,{tickLine:!1,axisLine:!1,width:64,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:i?` ${i}`:``}),(0,H.jsx)(er,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},labelFormatter:e=>yy(e),formatter:e=>[`${Number(e).toLocaleString()} ${i??``}`.trim(),``]}),e.series.length>1&&(0,H.jsx)(Tn,{wrapperStyle:{fontSize:11}}),e.series.map((e,t)=>(0,H.jsx)(ot,{type:`monotone`,dataKey:e.label,name:e.label,stroke:by[t%by.length],strokeWidth:2,dot:!1},e.key))]})})}function Sy({result:e,unit:t}){let n=fy(e),r=(0,V.useMemo)(()=>e.series.map((e,t)=>({name:e.label,value:e.points[0]?.value??0,fill:by[t%by.length]})),[e]),i=e.series[0]?.unit??t;return n.kind!==`bars`&&n.kind!==`scalar`?(0,H.jsx)(py,{result:e}):(0,H.jsx)(Wn,{width:`100%`,height:`100%`,children:(0,H.jsxs)(ae,{data:r,margin:{top:4,right:8,bottom:0,left:48},children:[(0,H.jsx)(Ee,{stroke:`hsl(var(--border))`,vertical:!1}),(0,H.jsx)(nt,{dataKey:`name`,tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,H.jsx)(R,{tickLine:!1,axisLine:!1,width:48,tickFormatter:_y,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:i?` ${i}`:``}),(0,H.jsx)(er,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},formatter:(e,t,n)=>{let r=typeof n?.payload?.name==`string`?n.payload.name:``;return[`${Number(e).toLocaleString()} ${i??``}`.trim(),r]}}),(0,H.jsx)(Qe,{dataKey:`value`,radius:[4,4,0,0],children:r.map(e=>(0,H.jsx)(Lt,{fill:e.fill},e.name))})]})})}var Cy=12;function wy(e,t){return`${e.toLocaleString()}${t?` ${t}`:``}`}function Ty({result:e,unit:t}){let n=fy(e),r=e.series[0]?.unit??t??``,i=(0,V.useMemo)(()=>{if(n.kind===`scalar`)return{head:[`Metric`,`Value`],body:[[e.series[0]?.label??`scalar`,wy(n.value,r)]],more:0};if(n.kind===`bars`){let t=e.series.map(e=>[e.label,wy(e.points[0]?.value??0,r)]);return{head:[`Series`,`Value`],body:t.slice(0,Cy),more:Math.max(0,t.length-Cy)}}if(n.kind===`timeseries`){let t=Array.from(new Set(e.series.flatMap(e=>e.points.map(e=>e.ts)))).sort((e,t)=>t-e),n=new Map;for(let t of e.series)n.set(t.label,new Map(t.points.map(e=>[e.ts,e.value])));return{head:[`Date`,...e.series.map(e=>e.label)],body:t.slice(0,Cy).map(t=>[vy(t),...e.series.map(e=>{let i=n.get(e.label)?.get(t);return i===void 0?`—`:wy(i,r)})]),more:Math.max(0,t.length-Cy)}}return{head:[],body:[],more:0}},[e,n,r]);return n.kind===`error`||n.kind===`empty`?(0,H.jsx)(py,{result:e}):(0,H.jsxs)(`div`,{className:`h-full overflow-auto`,children:[(0,H.jsxs)(`table`,{className:`w-full text-[11px] font-mono`,children:[(0,H.jsx)(`thead`,{children:(0,H.jsx)(`tr`,{className:`border-b border-border text-muted-foreground text-left`,children:i.head.map((e,t)=>(0,H.jsx)(`th`,{className:`py-1 px-2 font-medium ${t===0?`text-left`:`text-right`}`,children:e},e))})}),(0,H.jsx)(`tbody`,{children:i.body.map((e,t)=>(0,H.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/30 transition-colors`,children:e.map((e,t)=>(0,H.jsx)(`td`,{className:`py-1 px-2 text-foreground tabular-nums ${t===0?`text-left`:`text-right`}`,children:e},t))},t))})]}),i.more>0&&(0,H.jsxs)(`div`,{className:`text-[11px] text-muted-foreground pt-2`,children:[`… `,i.more,` more rows`]})]})}function Ey({result:e,unit:t,limit:n=8}){let r=fy(e),i=e.series[0]?.unit??t,a=(0,V.useMemo)(()=>e.series.map(e=>({name:e.label,value:e.points[0]?.value??0})).sort((e,t)=>t.value-e.value).slice(0,n),[e,n]),o=a[0]?.value||1;return r.kind===`error`||r.kind===`empty`?(0,H.jsx)(py,{result:e}):(0,H.jsx)(`div`,{className:`space-y-2 pt-1`,children:a.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground w-4 text-right`,children:t+1}),(0,H.jsx)(`span`,{className:`text-xs w-36 truncate text-foreground`,children:e.name}),(0,H.jsx)(`div`,{className:`flex-1 h-4 bg-muted/60 rounded-sm overflow-hidden`,children:(0,H.jsx)(`div`,{className:`h-full rounded-sm`,style:{width:`${e.value/o*100}%`,background:by[t%by.length]}})}),(0,H.jsxs)(`span`,{className:`text-xs tabular-nums text-muted-foreground w-20 text-right`,children:[e.value.toLocaleString(),` `,i]})]},e.name))})}var Dy=[`low`,`moderate`,`high`];function Oy({result:e,unit:t}){let n=fy(e),r=(0,V.useMemo)(()=>gy(e.series),[e]),i=e.series[0]?.unit??t,a=(0,V.useMemo)(()=>e.series.map(e=>e.label).sort((e,t)=>{let n=Dy.indexOf(e),r=Dy.indexOf(t);return n===-1&&r===-1?e.localeCompare(t):n===-1?1:r===-1?-1:n-r}),[e]);return n.kind!==`timeseries`&&n.kind!==`bars`?(0,H.jsx)(py,{result:e}):(0,H.jsx)(Wn,{width:`100%`,height:`100%`,children:(0,H.jsxs)(ae,{data:r,margin:{top:4,right:8,bottom:0,left:48},children:[(0,H.jsx)(Ee,{stroke:`hsl(var(--border))`,vertical:!1}),(0,H.jsx)(nt,{dataKey:`ts`,tickFormatter:vy,tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,H.jsx)(R,{tickLine:!1,axisLine:!1,width:48,tickFormatter:_y,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:i?` ${i}`:``}),(0,H.jsx)(er,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},labelFormatter:e=>yy(e),formatter:(e,t,n)=>{let r=typeof n?.payload?.name==`string`?n.payload.name:``;return[`${Number(e).toLocaleString()} ${i??``}`.trim(),r]}}),(0,H.jsx)(Tn,{wrapperStyle:{fontSize:11}}),a.map(t=>{let n=e.series.findIndex(e=>e.label===t);return(0,H.jsx)(Qe,{dataKey:t,stackId:`a`,fill:by[n>=0?n%by.length:0]},t)})]})})}function ky({result:e,attributes:t,params:n,label:r,unit:i}){if(!e||e.series.length===0)return(0,H.jsx)(py,{result:e});let a=t?.goal??(n&&n.length>0?n[0]:void 0),o=a?parseFloat(a):void 0,s=o!==void 0&&!isNaN(o)&&o>0,c=i??e.unit??e.parsed.displayUnit??``;return(0,H.jsx)(`div`,{className:`flex flex-wrap items-center justify-around gap-4 h-full p-2`,"data-testid":`goal-rings-widget`,children:e.series.map((t,n)=>{let i=t.points.length>0?t.points[t.points.length-1]:void 0,a=i?i.value:0,l=s?Math.round(a/o*100):void 0,u=t.label||r||(e.series.length===1?`Target`:`Series ${n+1}`);return(0,H.jsx)(Ay,{label:u,current:a,target:o,pct:l,unit:t.unit||c},t.key||n)})})}function Ay({label:e,current:t,target:n,pct:r,unit:i}){let a=t.toLocaleString(),o=n?n.toLocaleString():void 0,s=2*Math.PI*38,c=s-(r===void 0?0:Math.min(Math.max(r,0),100))/100*s,l=`stroke-primary`,u=`text-foreground`;return r!==void 0&&(r>=100?(l=`stroke-signal-positive`,u=`text-signal-positive`):l=r>=75?`stroke-primary`:r>=50?`stroke-signal-caution`:`stroke-signal-negative`),(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-w-28 text-center`,"data-testid":`goal-ring-item`,children:[(0,H.jsxs)(`div`,{className:`relative w-24 h-24 flex items-center justify-center`,children:[(0,H.jsxs)(`svg`,{className:`w-full h-full transform -rotate-90`,viewBox:`0 0 100 100`,children:[(0,H.jsx)(`circle`,{cx:`50`,cy:`50`,r:38,className:`stroke-muted`,strokeWidth:`8`,fill:`transparent`}),r!==void 0&&(0,H.jsx)(`circle`,{cx:`50`,cy:`50`,r:38,className:`${l} transition-all duration-500 ease-out`,strokeWidth:`8`,strokeDasharray:s,strokeDashoffset:c,strokeLinecap:`round`,fill:`transparent`})]}),(0,H.jsxs)(`div`,{className:`absolute flex flex-col items-center justify-center`,children:[r===void 0?(0,H.jsx)(`span`,{className:`text-sm font-semibold tabular-nums leading-none text-foreground`,children:a}):(0,H.jsxs)(`span`,{className:`text-base font-bold tabular-nums leading-none ${u}`,children:[r,`%`]}),r!==void 0&&(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground mt-0.5`,children:[a,` `,i]})]})]}),(0,H.jsxs)(`div`,{className:`mt-2 flex flex-col items-center max-w-32`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate w-full`,title:e,children:e}),o&&(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Goal: `,o,` `,i]})]})]})}function jy(e,t){if(!e)return t;let n=parseFloat(e);return isNaN(n)?t:n}function My({result:e,params:t,attributes:n}){if(!e||e.series.length===0)return(0,H.jsx)(py,{result:e});let r=80,i=0,a=20,o=n?.targets;if(o){let e=o.trim().split(/\s+/);e.length>=3?(r=jy(e[0],80),i=jy(e[1],0),a=jy(e[2],20)):e.length===2?(r=jy(e[0],80),a=jy(e[1],20),i=Math.max(0,100-(r+a))):e.length===1&&(r=jy(e[0],80),a=Math.max(0,100-r),i=0)}else if(t&&t.length>0){let e=t[0].trim().split(/\s+/);e.length>=3&&(r=jy(e[0],80),i=jy(e[1],0),a=jy(e[2],20))}let s=0,c=0,l=0;e.series.forEach((e,t)=>{let n=e.points.length>0?e.points[e.points.length-1]:void 0,r=n?n.value:0,i=(e.label||e.key||``).toLowerCase();i.includes(`low`)||i.includes(`z1`)||i.includes(`z2`)||t===0?s+=r:i.includes(`mod`)||i.includes(`tempo`)||i.includes(`z3`)||t===1?c+=r:i.includes(`high`)||i.includes(`hard`)||i.includes(`z4`)||i.includes(`z5`)||t===2?l+=r:s+=r});let u=s+c+l,d=u>0?Math.round(s/u*100):0,f=u>0?Math.round(c/u*100):0,p=u>0?Math.round(l/u*100):0,m=[{key:`low`,label:`Low / Aerobic`,sublabel:`Zone 1–2`,colorClass:`bg-signal-positive`,bgClass:`text-signal-positive`,target:r,actual:s,pct:d},{key:`moderate`,label:`Moderate / Tempo`,sublabel:`Zone 3`,colorClass:`bg-signal-caution`,bgClass:`text-signal-caution`,target:i,actual:c,pct:f},{key:`high`,label:`High / Anaerobic`,sublabel:`Zone 4–5`,colorClass:`bg-signal-negative`,bgClass:`text-signal-negative`,target:a,actual:l,pct:p}];return(0,H.jsxs)(`div`,{className:`flex flex-col justify-between h-full p-2 gap-4`,"data-testid":`zone-distribution-widget`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground px-0.5`,children:[(0,H.jsx)(`span`,{children:`Actual vs Target Distribution`}),(0,H.jsxs)(`span`,{className:`font-mono text-[10px]`,children:[`T: `,r,`/`,i,`/`,a,`%`]})]}),(0,H.jsx)(`div`,{className:`w-full h-5 rounded-md overflow-hidden flex bg-muted/60 p-0.5 gap-0.5`,children:m.map(e=>e.pct>0?(0,H.jsx)(`div`,{className:`${e.colorClass} h-full rounded-sm transition-all duration-500 flex items-center justify-center`,style:{width:`${e.pct}%`},title:`${e.label}: ${e.pct}% (Target: ${e.target}%)`,children:e.pct>=10&&(0,H.jsxs)(`span`,{className:`text-[10px] font-bold text-white leading-none drop-shadow-sm`,children:[e.pct,`%`]})},e.key):null)})]}),(0,H.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:m.map(e=>{let t=e.pct-e.target;return(0,H.jsxs)(`div`,{className:`flex flex-col bg-muted/20 border border-border/50 rounded-lg p-2 text-center`,"data-testid":`zone-card-${e.key}`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 mb-1`,children:[(0,H.jsx)(`span`,{className:`w-2 h-2 rounded-full ${e.colorClass}`}),(0,H.jsx)(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.label})]}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground mb-1.5`,children:e.sublabel}),(0,H.jsxs)(`div`,{className:`flex items-baseline justify-center gap-1`,children:[(0,H.jsxs)(`span`,{className:`text-lg font-bold tabular-nums text-foreground`,children:[e.pct,`%`]}),(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`/ `,e.target,`%`]})]}),e.target>0&&(0,H.jsx)(`span`,{className:`text-[10px] font-medium tabular-nums mt-0.5 ${Math.abs(t)<=5?`text-signal-positive`:t>0?`text-signal-caution`:`text-muted-foreground`}`,children:t>0?`+${t}%`:`${t}%`})]},e.key)})})]})}function Ny({type:e,result:t,label:n,unit:r,params:i,attributes:a}){if(e!==``&&!Uh(e))return(0,H.jsx)(Fy,{message:Gh(e)});let o=Wh(e);return o===`table`&&t?.table?(0,H.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:(0,H.jsx)(zy,{table:t.table})}):o===`list`&&t?.parsed?.family===`find`?(0,H.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:(0,H.jsx)(By,{result:t})}):!t||t.parsed.error||`series`in t&&t.series.length===0?(0,H.jsx)(py,{result:t}):(0,H.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:Py(o,t,n,r,i,a)})}function Py(e,t,n,r,i,a){switch(e){case`value`:return(0,H.jsx)(my,{result:t,label:n??``,unit:r});case`donut`:return(0,H.jsx)(Ly,{result:t,unit:r,label:n});case`timeseries`:return(0,H.jsx)(xy,{result:t,unit:r});case`bar`:case`bars`:return(0,H.jsx)(Sy,{result:t,unit:r});case`top`:case`toplist`:return(0,H.jsx)(Ey,{result:t,unit:r});case`stacked`:case`stacked-bar`:return(0,H.jsx)(Oy,{result:t,unit:r});case`goal-rings`:return(0,H.jsx)(ky,{result:t,attributes:a,params:i,label:n,unit:r});case`zone-distribution`:return(0,H.jsx)(My,{result:t,attributes:a,params:i,unit:r});case`table`:return(0,H.jsx)(Ty,{result:t,unit:r});default:return(Array.isArray(qh)?qh.includes(e):qh.has?.(e))?(0,H.jsx)(Iy,{type:e}):(0,H.jsx)(Ty,{result:t,unit:r})}}function Fy({message:e}){return(0,H.jsx)(`div`,{role:`alert`,"data-testid":`widget-problem`,className:`flex items-center justify-center h-full p-4 rounded-md border border-destructive/50 bg-destructive/10 text-destructive text-xs font-medium text-center`,children:e})}function Iy({type:e}){return(0,H.jsxs)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground font-mono bg-muted/20 rounded p-4 text-center`,children:[`widget:`,e,` renderer in progress`]})}function Ly({result:e,unit:t,label:n}){let r=e.series.map((e,t)=>({name:e.label,value:e.points.reduce((e,t)=>e+(t.missing?0:t.value),0),fill:by[t%by.length]})).filter(e=>e.value>0),i=e.series[0]?.unit??t??``,a=r.length>0?`${n??`distribution`}: ${r.map(e=>`${e.name} ${_y(e.value)}${i}`).join(`, `)}`:`no data`;return(0,H.jsx)(`div`,{className:`w-full h-full flex flex-col items-center justify-center`,role:`img`,"aria-label":a,"data-testid":`wql-donut`,children:r.length===0?(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`No data`}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px] shrink-0`,children:(0,H.jsx)(Ry,{data:r,unit:i})}),(0,H.jsx)(`ul`,{className:`shrink-0 text-[10px] font-mono text-muted-foreground space-y-0.5`,"aria-hidden":`true`,children:r.map(e=>(0,H.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`inline-block size-2 rounded-sm`,style:{background:e.fill}}),(0,H.jsx)(`span`,{children:`${e.name} ${_y(e.value)}${i}`})]},e.name))})]})})}function Ry({data:e,unit:t}){return(0,H.jsx)(Wn,{width:`100%`,height:`100%`,children:(0,H.jsxs)(O,{margin:{top:4,right:8,bottom:4,left:8},children:[(0,H.jsx)(n,{data:e,dataKey:`value`,nameKey:`name`,cx:`50%`,cy:`50%`,innerRadius:`55%`,outerRadius:`85%`,paddingAngle:2,stroke:`hsl(var(--background))`,isAnimationActive:!1,children:e.map(e=>(0,H.jsx)(Lt,{fill:e.fill},e.name))}),(0,H.jsx)(er,{formatter:e=>`${_y(Number(e))}${t}`})]})})}function zy({table:e}){return(0,H.jsx)(`div`,{className:`h-full overflow-auto`,"data-testid":`tabular-table`,children:(0,H.jsxs)(`table`,{className:`w-full text-[11px] font-mono border-collapse`,children:[(0,H.jsx)(`thead`,{children:(0,H.jsx)(`tr`,{className:`border-b border-border text-muted-foreground text-left`,children:e.columns.map(e=>(0,H.jsxs)(`th`,{className:`py-1 px-2 font-medium`,children:[e.name,e.unit?` (${e.unit})`:``]},e.name))})}),(0,H.jsx)(`tbody`,{children:e.groups?e.groups.map(t=>(0,H.jsxs)(V.Fragment,{children:[(0,H.jsx)(`tr`,{className:`bg-muted/40 font-semibold border-b border-border/60`,children:(0,H.jsx)(`td`,{colSpan:e.columns.length,className:`py-1 px-2`,children:t.label})}),t.rows.map((t,n)=>(0,H.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/20`,children:e.columns.map(e=>(0,H.jsx)(`td`,{className:`py-1 px-2 whitespace-nowrap`,children:String(t[e.name]??``)},e.name))},n))]},t.key)):e.rows.map((t,n)=>(0,H.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/20`,children:e.columns.map(e=>(0,H.jsx)(`td`,{className:`py-1 px-2 whitespace-nowrap`,children:String(t[e.name]??``)},e.name))},n))})]})})}function By({result:e}){let t=e.notes?.length?e.notes:e.blocks?.length?e.blocks:e.efforts?.length?e.efforts:e.runs??[];return(0,H.jsx)(`div`,{className:`h-full overflow-auto space-y-1`,"data-testid":`thing-list`,children:t.map((e,t)=>(0,H.jsx)(`div`,{className:`py-1 px-2 text-xs border-b border-border/40 truncate`,children:e.title??e.label??e.noteTitle??e.id??e.resultId},e.id??e.resultId??t))})}function Vy({name:e,value:t,disabled:n,onCommit:r}){let[i,a]=(0,V.useState)(t);(0,V.useEffect)(()=>a(t),[t]);let o=()=>{i!==t&&r(i)};return(0,H.jsx)(`input`,{type:`text`,value:i,disabled:n,onChange:e=>a(e.target.value),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&(o(),e.currentTarget.blur())},"aria-label":`Token ${e}`,className:`w-20 rounded-lg border border-border bg-card px-2 py-1 text-xs font-mono text-foreground focus:outline-none focus:border-primary disabled:opacity-60`})}function Hy({tokens:e,values:t,onChange:n}){if(e.length===0)return null;let r=!n;return(0,H.jsx)(`div`,{"data-testid":`dashboard-token-controls`,className:`flex flex-wrap items-center gap-x-5 gap-y-2 mb-4`,children:e.map(e=>{let i=t[e.name]??e.values[0];return(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(`span`,{className:`font-mono text-[11px] text-muted-foreground`,children:[`$`,e.name]}),e.isList?(0,H.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1`,children:e.values.map(t=>(0,H.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>{t!==i&&n?.(e.name,t)},className:cy(`text-xs px-2.5 py-1 rounded-md transition-colors`,t===i?`bg-primary text-primary-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted`,r&&`cursor-default`),children:t},t))}):r?(0,H.jsx)(`span`,{className:`text-xs text-foreground font-mono`,children:i}):(0,H.jsx)(Vy,{name:e.name,value:i,onCommit:t=>n?.(e.name,t)})]},e.name)})})}function Uy(e,t={}){return{runAggregate:(n,r)=>e.runQuery(n,{context:r.context,rangeStart:t.rangeStart,rangeEnd:t.rangeEnd,preferredUnit:t.preferredUnit}),runFind:async(n,r)=>{let i=X(n);if(!ip(i))return{kind:`find`,error:`not a content query: ${n}`};let a=await e.runFind(i,{context:r,range:t.rangeStart===void 0?void 0:{start:t.rangeStart,end:t.rangeEnd??2**53-1,endExclusive:!1}});return{kind:`find`,notes:a.notes,blocks:a.blocks,efforts:a.efforts,containers:a.containers,runs:a.runs,table:a.table}},runPipeline:async(n,r)=>await e.runPipeline?.(n,{context:r,rangeStart:t.rangeStart,rangeEnd:t.rangeEnd,preferredUnit:t.preferredUnit})??{error:`pipeline queries are not supported by this executor`},rollupEnsure:t.rollupEnsure}}function Wy(e,t){let n=hy({parsed:e,series:t.series,unit:t.unit,error:t.error,table:t.table});return Object.assign(n,{...t.notes?{notes:t.notes}:{},...t.blocks?{blocks:t.blocks}:{},...t.efforts?{efforts:t.efforts}:{},...t.containers?{containers:t.containers}:{},...t.runs?{runs:t.runs}:{}})}function Gy(e){if(e.spanFull)return`col-span-1 md:col-span-2 lg:col-span-4`;if(e.spanCols!=null)return e.spanCols<=1?`col-span-1`:e.spanCols===2?`col-span-1 md:col-span-2`:e.spanCols===3?`col-span-1 md:col-span-2 lg:col-span-3`:`col-span-1 md:col-span-2 lg:col-span-4`;let t=Wh(e.type);return t===`value`?`col-span-1`:t===`table`?`col-span-1 md:col-span-2`:`col-span-1 md:col-span-2 lg:col-span-4`}var Ky=[{label:`Span 1 column`,span:{spanCols:1},testId:`widget-size-1`},{label:`Span 2 columns`,span:{spanCols:2},testId:`widget-size-2`},{label:`Span 4 columns`,span:{spanCols:4},testId:`widget-size-4`},{label:`Full row`,span:{spanFull:!0},testId:`widget-size-full`}];function qy(e,t){return t.spanFull?e.spanFull===!0:!e.spanFull&&(e.spanCols??null)===(t.spanCols??null)}function Jy({document:e,headings:t,executor:n,onEnsureRollupFacts:r,tokenValues:i,onTokenChange:a,editMode:o=!1,onEditWidget:s,onInspectWidget:c,onOpenInExplorer:l,onDuplicateWidget:u,onRemoveWidget:d,onMoveWidget:f,onResizeWidget:p,rangeStart:m,rangeEnd:h,preferredUnit:g}){let _=(0,V.useMemo)(()=>({...Qh(e.tokens),...i}),[e.tokens,i]),v=(0,V.useMemo)(()=>e.widgets.map(e=>{let{query:t,missing:n}=tg(e.body,_),r={},i=new Set(n);for(let[t,n]of Object.entries(e.attributes)){let e=tg(n,_);r[t]=e.query;for(let t of e.missing)i.add(t)}return{widget:e,query:t,missing:[...i],attributes:r}}),[e.widgets,_]),[y,b]=(0,V.useState)({}),[x,S]=(0,V.useState)(!0),C=(0,V.useMemo)(()=>v.map(e=>`${e.widget.key}:${e.query}`).join(`|`),[v]);return(0,V.useEffect)(()=>{let e=!1;S(!0);async function t(){let t={},i=[];for(let{widget:e,query:n,missing:r}of v){if(e.type!==``&&!Uh(e.type)){t[e.key]={error:Gh(e.type)};continue}if(r.length>0){t[e.key]={error:Kh(r)};continue}let a=X(n);if(a.error){t[e.key]={error:a.error};continue}let o=Wh(e.type);if(ip(a)){if(o!==`table`&&o!==`list`){t[e.key]={error:`content queries return things — use a table or list widget instead`};continue}}else if(!op(a)&&o===`list`){t[e.key]={error:`aggregate queries return numbers — use a chart or value widget instead`};continue}i.push({widget:e,query:n,parsed:a})}if(!n){e||(b(t),S(!1));return}let a=Uy(n,{rangeStart:m,rangeEnd:h,preferredUnit:g,rollupEnsure:r});await Promise.all(i.map(async({widget:e,query:n,parsed:r})=>{try{let i=await new eh(a).run(n),o=i.outputs[0];if(!o){t[e.key]={error:i.diagnostics[0]??`widget produced no output`};return}let s=o.error??i.diagnostics[0];t[e.key]={result:Wy(r,o),...s?{error:s}:{}}}catch(n){t[e.key]={error:n instanceof Error?n.message:String(n)}}})),e||(b(t),S(!1))}return t(),()=>{e=!0}},[C,v,n,r,m,h,g]),(0,H.jsxs)(`div`,{"data-testid":`dashboard-view`,children:[(0,H.jsx)(Hy,{tokens:e.tokens,values:_,onChange:a}),x&&(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground mb-3`,children:`Loading widgets…`}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`,children:[v.map(({widget:e,query:n,attributes:r},i)=>{let a=y[e.key],m=o&&(s||u||d||f||p),h=(t??[]).filter(e=>e.beforeWidget===i);return(0,H.jsxs)(V.Fragment,{children:[h.map(e=>(0,H.jsx)(`div`,{id:e.id,className:cy(`col-span-full font-semibold text-foreground`,e.level<=2?`text-base mt-2`:`text-sm`),children:e.text},e.id)),(0,H.jsx)(ly,{id:`widget-${e.key}`,title:e.title??``,question:e.question??``,query:n,span:Gy(e),onInspect:c?()=>c(e):void 0,onOpenInExplorer:l?()=>l(e,n):void 0,toolbar:m?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,"data-testid":`widget-toolbar-${e.key}`,children:[s&&(0,H.jsx)(dy,{title:e.title??``,onClick:()=>s(e)}),f&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(uy,{label:`Move ${e.title||`widget`} up`,disabled:i===0,onClick:()=>f(e,-1),children:(0,H.jsx)(qt,{className:`w-3.5 h-3.5`})}),(0,H.jsx)(uy,{label:`Move ${e.title||`widget`} down`,disabled:i===v.length-1,onClick:()=>f(e,1),children:(0,H.jsx)(lr,{className:`w-3.5 h-3.5`})})]}),p&&(0,H.jsx)(`div`,{className:`flex items-center gap-0 rounded bg-muted/60 p-0.5`,children:Ky.map(t=>(0,H.jsx)(`button`,{type:`button`,"data-testid":`${t.testId}-${e.key}`,title:t.label,"aria-label":`${t.label} for ${e.title||`widget`}`,"aria-pressed":qy(e,t.span),disabled:qy(e,t.span),onClick:()=>p(e,t.span),className:`inline-flex items-center justify-center px-1 py-0.5 max-lg:min-h-11 max-lg:min-w-11 text-xs font-mono rounded text-muted-foreground hover:text-foreground disabled:text-primary disabled:bg-primary/10`,children:t.span.spanFull?(0,H.jsx)(mt,{className:`w-3 h-3`}):t.span.spanCols},t.testId))}),u&&(0,H.jsx)(uy,{label:`Duplicate ${e.title||`widget`}`,onClick:()=>u(e),children:(0,H.jsx)(Fn,{className:`w-3.5 h-3.5`})}),d&&(0,H.jsx)(uy,{label:`Remove ${e.title||`widget`}`,onClick:()=>d(e),children:(0,H.jsx)(An,{className:`w-3.5 h-3.5`})})]}):void 0,children:a?.error?(0,H.jsx)(Fy,{message:a.error}):(0,H.jsx)(Ny,{type:e.type,result:a?.result,label:e.title,unit:g,attributes:r})},e.key)]},e.key)}),(t??[]).filter(e=>e.beforeWidget>=v.length).map(e=>(0,H.jsx)(`div`,{id:e.id,className:cy(`col-span-full font-semibold text-foreground`,e.level<=2?`text-base mt-2`:`text-sm`),children:e.text},e.id))]})]})}function Yy({weeks:e,onWeeksChange:t,className:n}){let[r,i]=(0,V.useState)(16),a=e??r,o=e=>{t?t(e):i(e)};return(0,H.jsx)(`div`,{className:cy(`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1`,n),children:[4,8,16].map(e=>(0,H.jsxs)(`button`,{type:`button`,onClick:()=>o(e),className:cy(`text-xs px-2.5 py-1 rounded-md transition-colors`,a===e?`bg-primary text-primary-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:[e,`w`]},e))})}var Xy=`wod.analytics.unit`,Zy=[`kg`,`lb`],Qy=new Map,$y={getItem:e=>Qy.get(e)??null,setItem:(e,t)=>{Qy.set(e,t)},removeItem:e=>{Qy.delete(e)}},eb=new Set;function tb(){for(let e of eb)e()}function nb(e){return e??$y}function rb(e){let t=nb(e).getItem(Xy);return Zy.includes(t??``)?t:`kg`}function ib(e){let t=nb(e),[n,r]=(0,V.useState)(()=>rb(t));(0,V.useEffect)(()=>{r(rb(t));let e=()=>r(rb(t));return eb.add(e),()=>{eb.delete(e)}},[t]);let i=(0,V.useCallback)(e=>{t.setItem(Xy,e),r(e),tb()},[t]);return{unit:n,setUnit:i,toggleUnit:(0,V.useCallback)(()=>{i(n===`kg`?`lb`:`kg`)},[n,i])}}function ab(e,t){let n=X(e),r=`displayUnit`in n?n.displayUnit:void 0;return r===`lb`||r===`kg`?{unit:r,forced:!0}:{unit:t,forced:!1}}function ob({className:e,unit:t,forced:n=!1,storage:r}){let{unit:i,setUnit:a}=ib(r),o=t??i;return(0,H.jsxs)(`div`,{"data-testid":`analytics-unit-preference`,className:cy(`inline-flex items-center gap-1 text-xs`,e),children:[(0,H.jsxs)(`div`,{className:cy(`inline-flex items-center rounded-lg border border-border bg-card p-1`,n&&`opacity-70`),title:n?`Unit forced by query directive in this view`:`Display unit preference`,children:[(0,H.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>a(`kg`),className:cy(`px-2.5 py-1 rounded-md transition-colors text-xs font-mono`,o===`kg`?`bg-primary text-primary-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted`,n&&`cursor-default hover:bg-transparent hover:text-muted-foreground`),children:`kg`}),(0,H.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>a(`lb`),className:cy(`px-2.5 py-1 rounded-md transition-colors text-xs font-mono`,o===`lb`?`bg-primary text-primary-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted`,n&&`cursor-default hover:bg-transparent hover:text-muted-foreground`),children:`lb`})]}),n&&(0,H.jsx)(`span`,{className:`text-[11px] text-muted-foreground italic`,children:`forced by note`})]})}function sb(e){let t=Math.floor(Math.max(0,e)/1e3),n=Math.floor(t/60),r=t%60;return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}function cb(e){return e.toLocaleTimeString(`en-US`,{hour12:!1,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}var lb={time:`border-metric-time/40 bg-metric-time/10 text-metric-time`,rep:`border-metric-rep/40 bg-metric-rep/10 text-metric-rep`,effort:`border-metric-effort/40 bg-metric-effort/10 text-metric-effort`,distance:`border-metric-distance/40 bg-metric-distance/10 text-metric-distance`,rounds:`border-metric-rounds/40 bg-metric-rounds/10 text-metric-rounds`,action:`border-metric-action/40 bg-metric-action/10 text-metric-action`,resistance:`border-metric-resistance/40 bg-metric-resistance/10 text-metric-resistance`,rest:`border-metric-rest/40 bg-metric-rest/10 text-metric-rest italic`,muted:`border-border/70 bg-muted/50 text-muted-foreground`,system:`border-border/60 bg-muted/40 text-muted-foreground`,unknown:`border-border/60 bg-muted/40 text-muted-foreground`};function ub({token:e}){return!e.visible||!e.label?null:e.renderKind===`comment`?(0,H.jsx)(`span`,{className:`text-[10px] italic text-muted-foreground`,title:e.tooltip,children:e.label}):(0,H.jsx)(`span`,{className:`rounded-md border px-1.5 py-0.5 text-[10px] font-medium leading-tight select-none ${lb[e.tone]??lb.unknown}`,title:e.tooltip,children:e.label})}function db(e){return(0,H.jsx)(H.Fragment,{children:io.presentGroup(Array.from(e),`runtime-badge`).map((e,t)=>(0,H.jsx)(ub,{token:e},t))})}var fb={segment:`bg-type-segment/15 text-type-segment border-type-segment/30`,milestone:`bg-type-milestone/15 text-type-milestone border-type-milestone/30`,completion:`bg-type-completion/15 text-type-completion border-type-completion/30`,metric:`bg-type-metric/15 text-type-metric border-type-metric/30`,system:`bg-muted/70 text-muted-foreground border-border/50`,event:`bg-type-event/15 text-type-event border-type-event/30`,group:`bg-type-group/15 text-type-group border-type-group/30`,load:`bg-muted/70 text-muted-foreground border-border/50`,compiler:`bg-muted/70 text-muted-foreground border-border/50`,analytics:`bg-type-analytics/15 text-type-analytics border-type-analytics/30`},pb={segment:`bg-type-segment shadow-type-segment/50`,milestone:`bg-type-milestone shadow-type-milestone/50`,completion:`bg-type-completion shadow-type-completion/50`,metric:`bg-type-metric shadow-type-metric/50`,system:`bg-muted-foreground/40`,event:`bg-type-event shadow-type-event/50`,group:`bg-type-group shadow-type-group/50`,load:`bg-muted-foreground/40`,compiler:`bg-muted-foreground/40`,analytics:`bg-type-analytics shadow-type-analytics/50`};function mb(e){if(!e)return{efforts:[],reps:[],loads:[],rounds:[],durations:[],distances:[],hints:[]};let t=Array.from(e);return{efforts:t.filter(e=>{let t=String(e.type).toLowerCase();return t===`effort`||t===`text`||t===`action`||t===`label`}),reps:t.filter(e=>String(e.type).toLowerCase()===`rep`),loads:t.filter(e=>{let t=String(e.type).toLowerCase();return t===`resistance`||t===`intensity`||t===`load`||t===`volume`}),rounds:t.filter(e=>{let t=String(e.type).toLowerCase();return t===`rounds`||t===`current-round`||t===`increment`}),durations:t.filter(e=>{let t=String(e.type).toLowerCase();return t===`duration`||t===`time`||t===`elapsed`}),distances:t.filter(e=>String(e.type).toLowerCase()===`distance`),hints:t.filter(e=>{let t=String(e.type).toLowerCase();return t===`hint`||t===`custom`||t===`system`||t===`sound`||t===`lap`||t===`group`})}}var hb=`type:segment`,gb=[{label:`All`,query:``},{label:`Segments`,query:`type:segment`},{label:`Events`,query:`type:event`}];function _b(e){if(typeof e==`object`&&e&&`label`in e&&`query`in e)return e;let t=String(e).trim(),n=t.toLowerCase();return n===`all`||n===``?{label:`All`,query:``}:n===`segments`||n===`segment`||n===`type:segment`?{label:`Segments`,query:`type:segment`}:n===`events`||n===`event`||n===`type:event`?{label:`Events`,query:`type:event`}:n===`milestones`||n===`milestone`||n===`type:milestone`?{label:`Milestones`,query:`type:milestone`}:{label:t,query:t}}function vb(e,t){let n=t.toLowerCase().trim();if(!n||n===`all`||n.startsWith(`sum:`)||n.startsWith(`avg:`)||n.startsWith(`count:`))return!0;let r=String(e.outputType||``).toLowerCase();if(n.startsWith(`type:`))return r.includes(n.slice(5).trim());let i=r.includes(n),a=e.sourceBlockKey?.toLowerCase().includes(n),o=e.completionReason?.toLowerCase().includes(n),s=e.metrics&&Array.from(e.metrics).some(e=>{let t=typeof e.value==`object`?JSON.stringify(e.value):String(e.value??``);return String(e.type).toLowerCase().includes(n)||t.toLowerCase().includes(n)});return!!(i||a||o||s)}function yb({presets:e,filter:t,onChange:n}){return(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,H.jsx)(`button`,{onClick:()=>n(e.query),"data-testid":`output-filter-preset-${e.label.toLowerCase().replace(/\s+/g,`-`)}`,className:`rounded-lg border px-2.5 py-1 font-mono text-[11px] cursor-pointer transition-all ${t===e.query||e.query===``&&t===``?`border-primary bg-primary/10 text-primary font-bold shadow-xs`:`border-border/70 bg-card text-foreground hover:bg-accent`}`,children:e.label},e.label))})}function bb({rows:e,outputs:t,t0:n,onClearFilter:r}){if(e.length===0){let e=t.length>0;return(0,H.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border/70 bg-card/40 p-6 text-center`,"data-testid":`output-statements-empty`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e?`No output statements match the current filter.`:`No output statements recorded for this run.`}),e&&r&&(0,H.jsx)(`button`,{type:`button`,onClick:r,className:`mt-3 inline-flex cursor-pointer rounded-md border border-border bg-background px-3 py-1 text-[11px] font-semibold text-foreground shadow-xs transition-colors hover:bg-accent`,children:`Clear filter`})]})}return(0,H.jsx)(`ol`,{className:`flex flex-col`,"data-testid":`output-statements-cards`,children:e.map((t,r)=>{let i=mb(t.metrics),a=t.timeSpan?.started,o=t.timeSpan?.ended,s=o!==void 0&&a!==void 0?sb(o-a):`running`,c=a!==void 0&&n!==void 0?`+${sb(a-n)}`:`+00:00`,l=String(t.outputType),u=`#${t.id??r+1} · Block: ${t.sourceBlockKey||`session`}${t.completionReason?` · Reason: ${t.completionReason}`:``}`,d=[...i.reps,...i.loads,...i.rounds,...i.durations,...i.distances],f=d.length>0;return(0,H.jsxs)(`li`,{className:`relative pb-3 pl-6 last:pb-0`,title:u,children:[r<e.length-1&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:`absolute bottom-0 left-[5px] top-5 w-px bg-border/60`}),(0,H.jsx)(`span`,{"aria-hidden":!0,title:`Type: ${t.outputType} | ${u}`,className:`absolute left-0 top-1.5 size-2.5 rounded-full shadow-md ring-2 ring-background ${pb[l]??pb.system}`}),(0,H.jsxs)(`article`,{className:`rounded-xl border border-border/60 bg-card px-3 py-2.5`,children:[(0,H.jsxs)(`header`,{className:`flex items-start justify-between gap-2 border-b border-border/40 pb-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`inline-block shrink-0 rounded px-1.5 py-0.2 text-[9px] font-bold uppercase tracking-wider ${fb[l]??fb.system}`,children:String(t.outputType??`system`).slice(0,4)}),db(i.efforts)]}),(0,H.jsxs)(`div`,{className:`whitespace-nowrap text-right font-mono text-[11px] tabular-nums leading-tight`,children:[(0,H.jsx)(`span`,{className:`font-bold text-primary`,children:c}),` `,(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/80`,children:[`(`,s,`)`]})]})]}),f&&(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1 pt-1.5`,children:db(d)}),i.hints.length>0&&(0,H.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-1 border-t border-border/30 pt-1.5`,children:db(i.hints)}),!f&&i.hints.length===0&&(0,H.jsx)(`p`,{className:`pt-1.5 text-[11px] text-muted-foreground/60`,children:`No metrics on this statement`})]})]},t.id??r)})})}function xb({outputs:e,filter:t=``,timeOrigin:n,onClearFilter:r}){let i=n??(e.length>0?e[0].timeSpan?.started:void 0),a=(0,V.useMemo)(()=>t.trim()?e.filter(e=>vb(e,t)):e,[e,t]);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`sm:hidden`,children:(0,H.jsx)(bb,{rows:a,outputs:e,t0:i,onClearFilter:r})}),(0,H.jsx)(`div`,{className:`hidden overflow-x-auto rounded-md border border-border/50 bg-background/40 sm:block`,children:(0,H.jsxs)(`table`,{className:`w-full text-left font-mono text-xs border-collapse`,"data-testid":`output-statements-table`,children:[(0,H.jsx)(`thead`,{children:(0,H.jsxs)(`tr`,{className:`border-b border-border/60 bg-muted/40 text-[10px] uppercase font-bold text-muted-foreground tracking-wider whitespace-nowrap`,children:[(0,H.jsx)(`th`,{className:`p-2 w-12 text-center`,children:`Type`}),(0,H.jsx)(`th`,{className:`p-2 min-w-[110px]`,children:`Time`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[140px]`,children:`🏃 Movement`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[60px]`,children:`🔢 Reps`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`💪 Load`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[80px]`,children:`🔄 Rounds`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`⏱️ Target`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`📏 Distance`}),(0,H.jsx)(`th`,{className:`p-2 font-sans min-w-[110px]`,children:`🏷️ Hints`})]})}),(0,H.jsx)(`tbody`,{className:`divide-y divide-border/40`,children:a.length===0?(0,H.jsx)(`tr`,{children:(0,H.jsx)(`td`,{colSpan:9,className:`p-8 text-center text-muted-foreground font-sans text-xs`,children:e.length===0?`No output statements recorded for this run.`:`No output statements match the current filter.`})}):a.map((e,t)=>{let n=mb(e.metrics),r=e.timeSpan?.started,a=e.timeSpan?.ended,o=a!==void 0&&r!==void 0?sb(a-r):`running`,s=cb(new Date(a??r??0)),c=r!==void 0&&i!==void 0?`+${sb(r-i)}`:`+00:00`,l=`#${e.id??t+1} · Block: ${e.sourceBlockKey||`session`}${e.completionReason?` · Reason: ${e.completionReason}`:``}`,u=e=>(0,H.jsx)(`td`,{className:`p-2 font-sans`,children:e.length>0?(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:db(e)}):(0,H.jsx)(`span`,{className:`text-muted-foreground/30 font-mono text-[11px] select-none`,children:`—`})});return(0,H.jsxs)(`tr`,{title:l,className:`hover:bg-muted/30 transition-colors group cursor-default`,children:[(0,H.jsx)(`td`,{className:`p-2 text-center whitespace-nowrap`,children:(0,H.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.2 text-[9px] font-bold uppercase tracking-wider ${fb[String(e.outputType)]??fb.system}`,title:`Type: ${e.outputType} | ${l}`,children:String(e.outputType??`system`).slice(0,4)})}),(0,H.jsxs)(`td`,{className:`p-2 whitespace-nowrap leading-tight`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 font-mono text-[11px]`,children:[(0,H.jsx)(`span`,{className:`font-bold text-primary tabular-nums`,children:c}),(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/80 tabular-nums`,children:[`(`,o,`)`]})]}),(0,H.jsx)(`div`,{className:`font-mono text-[10px] text-muted-foreground/70 tabular-nums`,children:s})]}),u(n.efforts),u(n.reps),u(n.loads),u(n.rounds),u(n.durations),u(n.distances),u(n.hints)]},e.id??t)})})]})})]})}function Sb(e){return new Date(e.timestamp).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function Cb({result:e,renderRunHeaderExtra:t,presets:n,filter:r,onFilterChange:i}){let[a,o]=(0,V.useState)(hb),s=r??a,c=i??o,l=(0,V.useMemo)(()=>(n??gb).map(_b),[n]),u=(0,V.useMemo)(()=>e.runs.map(e=>({run:e,statements:e.events,startTime:e.events[0]?.timeSpan?.started??e.timestamp})),[e]);return u.length===0?(0,H.jsx)(`div`,{className:`flex items-center justify-center text-sm text-muted-foreground px-4 py-6 text-center`,children:`No workout logs matched this rows query.`}):(0,H.jsxs)(`div`,{"data-testid":`rows-table`,className:`flex flex-col gap-3`,children:[(0,H.jsx)(yb,{presets:l,filter:s,onChange:c}),u.map(({run:e,statements:n,startTime:r})=>(0,H.jsxs)(`section`,{children:[u.length>1&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] font-semibold text-muted-foreground px-2 py-1.5 bg-muted/40 rounded-t-md border-b border-border/60`,children:[(0,H.jsx)(`span`,{children:Sb(e)}),t?.(e)]}),(0,H.jsx)(xb,{outputs:n,filter:s,timeOrigin:r})]},e.resultId))]})}var wb=Array.from({length:10},(e,t)=>t+1);function Tb(e){if(e){for(let t of e)for(let e of t.metrics)if((e.type===G.SessionRPE||e.type===`session_rpe`)&&typeof e.value==`number`)return e.value}}function Eb({resultId:e,events:t,readOnly:n,onCapture:r}){let i=Tb(t),[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(!1);if(n)return i===void 0?null:(0,H.jsxs)(`span`,{className:`text-[10px] font-mono text-muted-foreground`,"data-testid":`rpe-readonly-${e}`,children:[`RPE `,i]});let l=async e=>{c(!0);try{await r(e),o(!1)}finally{c(!1)}};return(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1`,"data-testid":`rpe-chip-${e}`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:cy(`text-[10px] font-mono px-1.5 py-0.5 rounded border transition-colors`,i===void 0?`border-dashed border-muted-foreground/50 text-muted-foreground hover:text-foreground hover:border-primary`:`border-border text-foreground hover:border-primary`),title:i===void 0?`Rate this session’s effort`:`Update session RPE`,children:i===void 0?`RPE —`:`RPE ${i}`}),a&&(0,H.jsx)(`span`,{className:`inline-flex gap-0.5`,"data-testid":`rpe-scale-${e}`,children:wb.map(e=>(0,H.jsx)(`button`,{type:`button`,disabled:s,onClick:()=>void l(e),"aria-label":`RPE ${e}`,className:cy(`h-5 min-w-[1.25rem] px-0.5 text-[10px] font-medium rounded border border-border`,e===i&&`bg-primary text-primary-foreground`,e<=3&&`hover:bg-rpe-easy/15 hover:text-rpe-easy`,e>3&&e<=6&&`hover:bg-rpe-moderate/15 hover:text-rpe-moderate`,e>6&&e<=8&&`hover:bg-rpe-hard/15 hover:text-rpe-hard`,e>8&&`hover:bg-rpe-max/15 hover:text-rpe-max`),children:e},e))})]})}function Db({resultId:e,sessionResult:t,executor:n,onCaptureRpe:r,onCaptured:i}){let[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(void 0),l=t.runs[0],u=l?.events[0]?.blockContentId,d=(0,V.useCallback)(async t=>{r&&await r(e,t),i?.()},[e,r,i]);(0,V.useEffect)(()=>{if(!a||!u||!n){c(void 0);return}let e=!1,t=X(`:session{block:${u}}`);if(ip(t))return(n.runFind?n.runFind(t):n.runRows(t)).then(t=>{e||c(t)}).catch(()=>{e||c(void 0)}),()=>{e=!0}},[a,u,n]);let f=a&&s?s:t,p=s?.runs.length??(a?1:void 0),m=!!u;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`rows-results-chrome`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pb-2 border-b border-border/60 text-xs`,children:[(0,H.jsxs)(`div`,{className:`inline-flex items-center rounded-md border border-border bg-muted/40 p-0.5`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>o(!1),className:cy(`px-2 py-0.5 rounded text-[11px] font-medium transition-colors`,a?`text-muted-foreground hover:text-foreground`:`bg-background text-foreground shadow-sm`),children:`This session`}),(0,H.jsxs)(`button`,{type:`button`,disabled:!m,onClick:()=>o(!0),title:m?void 0:`No block content association for this run`,className:cy(`px-2 py-0.5 rounded text-[11px] font-medium transition-colors`,a?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`,!m&&`opacity-40 cursor-not-allowed`),children:[`All versions`,p===void 0?``:` (${p})`]})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`a`,{href:`/results/${encodeURIComponent(e)}`,className:`text-[11px] font-medium text-primary hover:underline inline-flex items-center gap-0.5`,"data-testid":`view-in-results-link`,children:`View in Results →`}),(0,H.jsx)(Eb,{resultId:e,events:l?.events,onCapture:d})]})]}),(0,H.jsx)(Cb,{result:f,renderRunHeaderExtra:t=>t.resultId===e?(0,H.jsx)(Eb,{resultId:e,events:t.events,onCapture:d}):(0,H.jsx)(Eb,{resultId:t.resultId,events:t.events,readOnly:!0,onCapture:d})})]})}var Ob=/^(\s*query\s*:\s*)(['"]?)(.*?)\2(\s*)$/;function kb(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}function Ab(e){let t=e.split(`
53
+ `),n=[];for(let e=0;e<t.length;e++){let r=t[e].match(Ob);r&&n.push({queryIndex:n.length,query:kb(r[3]),isYamlKey:!0,lineIndex:e})}if(n.length>0)return n;let r=[];for(let e=0;e<t.length;e++){let n=t[e].trim();!n||n.startsWith(`#`)||n.startsWith(`//`)||r.push({queryIndex:r.length,query:n,isYamlKey:!1,lineIndex:e})}return r}function jb(e,t,n=0){let r=Ab(e).find(e=>e.queryIndex===n);if(!r)return e;let i=e.split(`
54
+ `),a=i[r.lineIndex];if(r.isYamlKey){let e=a.match(Ob);if(e){let n=e[1],a=e[2],o=e[4];i[r.lineIndex]=`${n}${a}${t}${a}${o}`}else i[r.lineIndex]=`query: ${t}`}else{let e=a.match(/^\s*/)?.[0]??``;i[r.lineIndex]=`${e}${t}`}return i.join(`
55
+ `)}var Mb=e(or(),1);function Nb(){if(typeof window>`u`||!window.visualViewport)return{height:null,offsetTop:0,offsetBottom:0};let e=window.visualViewport;return{height:e.height,offsetTop:e.offsetTop,offsetBottom:Math.max(0,window.innerHeight-e.height-e.offsetTop)}}function Pb(){let[e,t]=(0,V.useState)(Nb);return(0,V.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let n=()=>t(Nb());return e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),()=>{e.removeEventListener(`resize`,n),e.removeEventListener(`scroll`,n)}},[]),e}var Fb=`a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])`;function Ib({open:e,onClose:t,title:n,description:r,children:i,footer:a,presentation:o=`default`}){let s=(0,V.useId)(),c=(0,V.useId)(),l=(0,V.useRef)(null),u=(0,V.useRef)(null),d=Pb(),f=o===`sheet`;if((0,V.useEffect)(()=>{if(!e)return;u.current=document.activeElement;let t=document.body.style.overflow;document.body.style.overflow=`hidden`;let n=requestAnimationFrame(()=>{let e=l.current;e&&(f?e:e.querySelector(`[data-autofocus]`)??e).focus()});return()=>{cancelAnimationFrame(n),document.body.style.overflow=t;let e=u.current;e instanceof HTMLElement&&document.contains(e)&&e.focus()}},[e,f]),!e||typeof document>`u`)return null;let p=e=>{if(e.key===`Escape`){e.stopPropagation(),t();return}if(e.key!==`Tab`)return;let n=l.current;if(!n)return;let r=Array.from(n.querySelectorAll(Fb));if(r.length===0){e.preventDefault(),n.focus();return}let i=r[0],a=r[r.length-1],o=document.activeElement;e.shiftKey&&(o===i||!n.contains(o))?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),i.focus())},m={top:d.offsetTop,height:d.height??`100dvh`};return(0,Mb.createPortal)((0,H.jsx)(`div`,{className:cy(`fixed left-0 right-0 z-50 flex flex-col bg-black/40 dark:bg-black/60 sm:items-center sm:justify-center sm:bg-background/80 sm:p-4 sm:backdrop-blur-sm`,f&&`max-sm:justify-end`),style:m,onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,H.jsxs)(`div`,{ref:l,role:`dialog`,"aria-modal":`true`,"aria-labelledby":s,"aria-describedby":r?c:void 0,tabIndex:-1,onKeyDown:p,className:cy(`flex min-h-0 w-full flex-col overflow-hidden bg-card outline-none sm:max-h-full sm:max-w-2xl sm:flex-none sm:rounded-xl sm:border sm:border-border sm:shadow-2xl`,f?`max-sm:flex-none max-sm:min-h-[66%] max-sm:max-h-full max-sm:rounded-t-2xl`:`flex-1 sm:max-h-full`),children:[f&&(0,H.jsx)(`div`,{"aria-hidden":!0,className:`flex justify-center pt-2 sm:hidden`,children:(0,H.jsx)(`div`,{className:`h-1 w-10 rounded-full bg-border`})}),(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-3 border-b border-border/80 px-4 py-3 sm:px-6 sm:py-4`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`h2`,{id:s,className:`text-base font-semibold text-foreground`,children:n}),r&&(0,H.jsx)(`p`,{id:c,className:`mt-0.5 text-xs text-muted-foreground`,children:r})]}),(0,H.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Close`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground sm:size-9`,children:(0,H.jsx)(rn,{className:`size-5 sm:size-4`})})]}),(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4 sm:px-6`,children:i}),a&&(0,H.jsx)(`div`,{className:cy(`border-t border-border/80 bg-muted/10 px-4 py-3 sm:px-6`,f?`max-sm:[&_button]:min-h-12 max-sm:[&_button]:min-w-11`:`max-sm:[&_button]:min-h-11 max-sm:[&_button]:min-w-11`,f&&`max-sm:pb-[max(0.75rem,env(safe-area-inset-bottom))]`),children:a})]})}),document.body)}var Lb=new class{slots=new Map;listeners=new Set;cachedList=[];registerSlot(e){return this.slots.set(e.type,e),this.cachedList=Array.from(this.slots.values()),this.notify(),()=>this.unregisterSlot(e.type)}unregisterSlot(e){this.slots.delete(e)&&(this.cachedList=Array.from(this.slots.values()),this.notify())}getSlot(e){return this.slots.get(e)}listSlots(){return this.cachedList}getAllSlots(){return this.cachedList}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notify(){for(let e of this.listeners)e()}};function Rb(e=Lb){let t=(0,V.useSyncExternalStore)(t=>e.subscribe(t),()=>e.listSlots());return(0,V.useMemo)(()=>t,[t])}var zb=[{value:`find`,label:`Find`,description:`Find things: notes, blocks, efforts, sessions, tables`},{value:`aggregate`,label:`Measure`,description:`Measure numbers: aggregate a metric by dimensions`}],Bb=vf.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{note:`Find notes across journal, feeds and playground`,block:`Find fenced workout/dashboard regions`,effort:`Find registered movements and benchmarks`,session:`Find completed workout sessions`,segment:`Cross-workout segment table`,event:`Telemetry events table`}[e]})),Vb=yf.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{journal:`Daily journal notes`,feeds:`Curated feed notes`,guides:`Static guide pages`,playground:`Playground scratch pages`,dashboards:`Dashboard notes`,efforts:`Exercise library notes`}[e]})),Hb=Df.map(e=>({value:e,label:e})),Ub=[{value:`last 1d`,label:`Past 24 hours`},{value:`last 1w`,label:`Past week`},{value:`last 2w`,label:`Past 2 weeks`},{value:`last 4w`,label:`Past month`},{value:`last 12w`,label:`Past quarter`},{value:`last 52w`,label:`Past year`},{value:`all`,label:`All time`}],Wb=lf.map(e=>({value:e,label:e})),Gb=[{value:`2d`,label:`2 days`},{value:`7d`,label:`7 days`},{value:`14d`,label:`14 days`},{value:`2w`,label:`2 weeks`},{value:`4w`,label:`4 weeks`},{value:`12w`,label:`12 weeks`},{value:`26w`,label:`26 weeks`},{value:`52w`,label:`52 weeks`}],Kb=[...mf,...df].map(e=>({value:e,label:e})),qb=[...cf,...sf,...hf].map(e=>({value:e,label:e})),Jb=kf.map(e=>({value:e,label:e}));[...cf,...sf,...hf];var Yb={source:!0,time:!0},Xb={kind:{label:`Kind`,inputType:`radio`,placeholder:`find, measure…`,placeholderText:`Find | Measure`,icon:`🧭`,description:`Find things or measure numbers`},target:{label:`Find`,inputType:`select`,placeholder:`note, block, effort…`,placeholderText:`: [target]`,icon:`🎯`,description:`What to find — singular`,prefix:`:`},source:{label:`Where stored`,inputType:`select`,placeholder:`journal, feeds…`,placeholderText:`source: [scope]`,icon:`🌐`,description:`Storage scope — all sources means no scope`,prefix:`source:`},text:{label:`Contains`,inputType:`freetext`,placeholder:`Text query...`,placeholderText:`text: [query]`,icon:`🔍`,description:`Raw text substring search`,prefix:`text:`},catalog:{label:`Catalog`,inputType:`select`,placeholder:`Pick catalog...`,placeholderText:`catalog: [id]`,icon:`📁`,description:`Filter by static catalog`,prefix:`catalog:`},tag:{label:`Tag`,inputType:`select`,placeholder:`Pick tag...`,placeholderText:`tags: [tag]`,icon:`🏷`,description:`Filter by note/workout tags`,prefix:`tags:`},effort:{label:`Effort`,inputType:`select`,placeholder:`Pick effort...`,placeholderText:`effort: [movement]`,icon:`💪`,description:`Filter by movement/workout`,prefix:`effort:`},domain:{label:`Domain`,inputType:`select`,placeholder:`crossfit, parkour, swimming…`,placeholderText:`domain: [discipline]`,icon:`🌐`,description:`Filter by sport/training domain`,prefix:`domain:`},format:{label:`Format`,inputType:`select`,placeholder:`for-time, amrap, emom…`,placeholderText:`format: [shape]`,icon:`⏱`,description:`Filter by session time structure`,prefix:`format:`},equipment:{label:`Equipment`,inputType:`select`,placeholder:`kettlebell, barbell…`,placeholderText:`equipment: [gear]`,icon:`🏋`,description:`Filter by required gear`,prefix:`equipment:`},quality:{label:`Quality`,inputType:`select`,placeholder:`strength, conditioning…`,placeholderText:`quality: [stimulus]`,icon:`⚡`,description:`Filter by physical stimulus`,prefix:`quality:`},intent:{label:`Intent`,inputType:`select`,placeholder:`benchmark, competition…`,placeholderText:`intent: [tier]`,icon:`🎯`,description:`Filter by protocol status`,prefix:`intent:`},discipline:{label:`Discipline`,inputType:`select`,placeholder:`Pick discipline...`,placeholderText:`discipline: [name]`,icon:`⚙`,description:`Filter by domain discipline`,prefix:`discipline:`},intensity:{label:`Intensity`,inputType:`select`,placeholder:`low, moderate, high…`,placeholderText:`intensity: [tier]`,icon:`🔥`,description:`Effort intensity tier`,prefix:`intensity:`},origin:{label:`Origin`,inputType:`select`,placeholder:`bundled, user…`,placeholderText:`origin: [registry]`,icon:`🔖`,description:`Effort registry origin`,prefix:`origin:`},type:{label:`Block Type`,inputType:`select`,placeholder:`wod, dashboard...`,placeholderText:`type: [wod|heading]`,icon:`📦`,description:`Fenced block type`,prefix:`type:`},time:{label:`Time Window`,inputType:`select`,placeholder:`Time range`,placeholderText:`last: [time range]`,icon:`⏱`,description:`Date window (last Nw/Nd)`,prefix:`last:`},where:{label:`Metric Join`,inputType:`freetext`,placeholder:`sum:totalVolume{} > 5000`,placeholderText:`where: [metric join]`,icon:`📊`,description:`Cross-store analytics join`,prefix:`where:`},agg:{label:`Aggregate`,inputType:`select`,placeholder:`sum, avg…`,placeholderText:`agg: [sum|avg|…]`,icon:`∑`,description:`Aggregation function`},metric:{label:`Metric`,inputType:`select`,placeholder:`totalVolume, reps…`,placeholderText:`metric: [key]`,icon:`📈`,description:`Canonical metric key to aggregate`},groupby:{label:`Group By`,inputType:`select`,placeholder:`week, effort…`,placeholderText:`by: [dim]`,icon:`🗂`,description:`Group results by dimension`},rollup:{label:`Rollup`,inputType:`select`,placeholder:`2w, 4w, 12w…`,placeholderText:`rollup: [period]`,icon:`🗓`,description:`Multi-unit bucket period (by {week}/by {day} for 1-unit)`},unit:{label:`Unit`,inputType:`select`,placeholder:`kg, lb, km…`,placeholderText:`in: [unit]`,icon:`📏`,description:`Display unit directive`},result:{label:`Session`,inputType:`freetext`,placeholder:`result id…`,placeholderText:`result: [id]`,icon:`🏁`,description:`Scope to one workout session`,prefix:`result:`},block:{label:`Block`,inputType:`freetext`,placeholder:`block content id…`,placeholderText:`block: [contentId]`,icon:`🧱`,description:`Scope to all versions of a block`,prefix:`block:`},note:{label:`Note`,inputType:`freetext`,placeholder:`note id…`,placeholderText:`note: [id]`,icon:`📓`,description:`Scope to one note`,prefix:`note:`},page:{label:`Page`,inputType:`select`,placeholder:`true, false…`,placeholderText:`page: [true|false]`,icon:`📄`,description:`Notes that are (or are not) pages`,prefix:`page:`},plane:{label:`Output Plane`,inputType:`select`,placeholder:`segment, load, event…`,placeholderText:`plane: [type]`,icon:`📋`,description:`Output-statement plane on :session`,prefix:`plane:`},pipes:{label:`Pipes`,inputType:`freetext`,placeholder:`| order by date | limit 10`,placeholderText:`| select | order | limit`,icon:`⇥`,description:`Presentation pipes — select/order/limit/offset`}},Zb=`🧩`;function Qb(e){let t=Xb[e];if(t)return t;let n=Lb.getSlot(e);return n?{label:n.label,inputType:`freetext`,placeholder:n.placeholder,placeholderText:n.placeholderText,icon:n.icon,description:n.description??``}:{label:e,inputType:`freetext`,placeholder:`${e}...`,placeholderText:`${e}: [value]`,icon:Zb,description:``}}function $b({clause:e,isActive:t,invalid:n=!1,invalidReason:r,onClick:i,onRemove:a,compact:o=!1,placeholderOverride:s}){let c=Qb(e.type),l=!!(e.value&&e.value.trim()),u=Yb[e.type]?`Clear ${c.label}`:`Remove ${c.label}`;return(0,H.jsxs)(`span`,{className:`relative inline-flex items-center`,children:[(0,H.jsxs)(`button`,{type:`button`,"data-testid":`token-slot-${e.type}`,onClick:i,"aria-pressed":t||void 0,title:n?r:void 0,className:cy(`inline-flex items-center gap-1 rounded-full text-xs font-mono transition-all cursor-pointer select-none border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring hover:font-bold hover:scale-[1.02]`,`min-h-11 min-w-11`,n?`bg-destructive/10 text-destructive border-destructive/40 hover:bg-destructive/20`:t?`bg-primary text-primary-foreground border-primary font-medium shadow-sm`:l?`bg-muted/80 text-foreground border-border hover:bg-muted`:`bg-muted/40 text-muted-foreground border-dashed border-border hover:bg-muted/60`,o?`px-2 py-0.5 text-[11px]`:`px-2.5 py-1`),children:[(0,H.jsx)(`span`,{className:`text-[10px] opacity-70`,children:c.icon}),t&&(0,H.jsxs)(`span`,{className:`font-semibold text-[11px] opacity-90`,children:[c.label,`:`]}),(0,H.jsx)(`span`,{"data-testid":`token-slot-value-${e.type}`,className:cy(`truncate max-w-44`,!l&&`italic opacity-60`),children:l?e.value:s||c.placeholder})]}),a&&(0,H.jsx)(`button`,{type:`button`,"data-testid":`token-slot-remove-${e.type}`,onClick:a,"aria-label":u,title:u,className:cy(`inline-flex items-center justify-center -ml-0.5 p-1 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,n?`text-destructive/70 hover:text-destructive`:`text-inherit opacity-70 hover:opacity-100 hover:bg-black/10`,`min-h-11 min-w-11`),children:(0,H.jsx)(rn,{className:`w-3 h-3`})})]})}function ex(e,t){return e?`${e}-option-${t}`:void 0}function tx({clause:e,filteredItems:t,selectedValues:n,isMulti:r,typedValue:i,canCommitTyped:a,emptyText:o,highlightIdx:s,onHighlight:c,onCommitValue:l,onCommitTyped:u,listId:d,onDone:f,onReorder:p}){let m=Qb(e.type),h=e.value.trim(),g=t.length,_=n.length>0?n:!r&&h?[h]:[],v=(e,t)=>{if(!p)return;let r=e+t;if(r<0||r>=n.length)return;let i=[...n];[i[e],i[r]]=[i[r],i[e]],p(i)};return(0,H.jsxs)(`div`,{className:`mx-0.5 rounded-xl border border-border bg-popover shadow-md p-1`,"data-testid":`wql-clause-editor`,"data-clause-type":e.type,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-2 pt-1 pb-1.5`,children:[(0,H.jsx)(`span`,{"aria-hidden":!0,className:`text-[11px]`,children:m.icon}),(0,H.jsx)(`span`,{className:`text-xs sm:text-[11px] font-semibold text-foreground font-mono`,children:m.label}),(0,H.jsxs)(`span`,{className:`hidden sm:block ml-auto text-[10px] text-muted-foreground/70 font-mono truncate`,children:[`↑↓ move · Enter `,r?`add/remove`:`set`,` · Esc done · Tab exits`]})]}),_.length>0&&(0,H.jsxs)(`div`,{className:cy(`px-2 pb-1.5`,r&&`border-b border-border/50`),children:[(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1.5 sm:gap-1 max-h-24 overflow-y-auto overscroll-contain touch-pan-y sm:max-h-none sm:overflow-visible`,children:_.map((e,t)=>(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-primary/20 text-primary text-xs sm:text-[10px] font-mono min-h-11 sm:min-h-0`,children:[(0,H.jsx)(`span`,{className:`max-w-40 truncate`,children:e}),p&&_.length>1&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":`Move ${e} up`,disabled:t===0,onClick:()=>v(t,-1),className:`px-0.5 hover:text-foreground disabled:opacity-30 min-h-11 min-w-11 sm:min-h-5 sm:min-w-5`,children:(0,H.jsx)(_r,{className:`w-3 h-3`})}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Move ${e} down`,disabled:t===_.length-1,onClick:()=>v(t,1),className:`px-0.5 hover:text-foreground disabled:opacity-30 min-h-11 min-w-11 sm:min-h-5 sm:min-w-5`,children:(0,H.jsx)(Ie,{className:`w-3 h-3`})})]}),r&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>l(e),"aria-label":`Remove ${e}`,className:`hover:text-destructive min-h-11 min-w-11 sm:min-h-5 sm:min-w-5 -mr-1.5 sm:-mr-1`,children:(0,H.jsx)(rn,{className:`w-2.5 h-2.5`})})]},e))}),r&&(0,H.jsx)(`p`,{className:`pt-1 text-xs sm:text-[10px] text-muted-foreground`,"data-testid":`wql-clause-editor-multi-hint`,children:e.type===`groupby`?`Group in this order.`:`Match any selected value (OR).`})]}),(0,H.jsxs)(`div`,{id:d,role:`listbox`,"aria-label":`${m.label} options`,"aria-multiselectable":r||void 0,className:`max-h-[min(45svh,20rem)] sm:max-h-44 overflow-y-auto overscroll-contain touch-pan-y flex flex-col gap-0.5`,children:[a&&(0,H.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,id:ex(d,g),"data-active":s===g||void 0,onMouseEnter:()=>c(g),onClick:()=>u(i),"data-testid":`clause-commit-typed-${e.type}`,className:cy(`flex items-center justify-between px-2 py-2 sm:py-1 text-sm sm:text-xs text-left rounded hover:bg-muted/60 transition-colors font-mono min-h-12 sm:min-h-0`,s===g&&`bg-muted/60`),children:[(0,H.jsxs)(`span`,{className:`truncate`,children:[`Search for `,(0,H.jsxs)(`span`,{className:`font-semibold`,children:[`“`,i,`”`]})]}),(0,H.jsx)(`span`,{className:`text-muted-foreground/60 ml-1 shrink-0`,children:`↵`})]}),t.map((t,i)=>{let a=n.includes(t.value)||!r&&h===t.value,o=i===s;return(0,H.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":a,id:ex(d,i),"data-active":o||void 0,"data-testid":`wql-clause-editor-${e.type}-opt-${i}`,onMouseEnter:()=>c(i),onClick:()=>l(t.value),className:cy(`flex items-center justify-between px-2 py-2 sm:py-1 text-sm sm:text-xs text-left rounded transition-colors font-mono min-h-12 sm:min-h-0`,o?`bg-primary/15 font-semibold`:`hover:bg-muted/60`,a&&`text-primary`),children:[(0,H.jsx)(`span`,{className:`truncate`,children:t.label}),a&&(0,H.jsx)(Sr,{className:`w-3 h-3 shrink-0`})]},t.value)}),o&&(0,H.jsx)(`div`,{className:`px-2 py-2 sm:py-1.5 text-sm sm:text-xs text-muted-foreground italic`,children:o})]}),r&&f&&(0,H.jsx)(`div`,{className:`sticky bottom-0 -mx-1 -mb-1 px-3 pt-1.5 pb-[max(0.375rem,env(safe-area-inset-bottom))] bg-popover rounded-b-xl flex justify-end`,children:(0,H.jsxs)(`button`,{type:`button`,onClick:f,"data-testid":`wql-clause-editor-done`,className:`inline-flex w-full sm:w-auto items-center justify-center min-h-12 sm:min-h-9 px-3 rounded-lg bg-primary text-primary-foreground text-sm sm:text-xs font-semibold hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:[`Done`,_.length>0?` · ${_.length} selected`:``]})})]})}var nx={tag:!0,catalog:!0,effort:!0,domain:!0,format:!0,equipment:!0,quality:!0,intent:!0,discipline:!0,intensity:!0,origin:!0,type:!0,source:!0,groupby:!0},rx={kind:zb,target:Bb,source:Vb,plane:Hb,time:Ub,agg:Wb,rollup:Gb,groupby:Kb,metric:qb,unit:Jb,intensity:gf.map(e=>({value:e,label:e}))};function ix(e){let t=new Set;for(let n of e)if(n.sourceId&&n.sourceId.startsWith(`collection:`)){let e=vh(n);e&&t.add(e)}return Array.from(t).sort((e,t)=>e.localeCompare(t))}function ax(e){let t=new Set;for(let n of e)n.dataType&&n.dataType.trim().length>0&&t.add(n.dataType.trim());return Array.from(t).sort((e,t)=>e.localeCompare(t))}function ox(e,t){return lx([...e,...t].map(e=>({value:e.trim()})),[]).map(e=>e.value)}var sx=[`wod`,`query`,`widget`,`embed`];function cx(e){return e.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}))}function lx(e,t){let n=e=>e.trim().toLowerCase(),r=new Map(t.map(e=>[n(e.value),e.value])),i=new Map,a=e=>{let t=n(e.value);!t||i.has(t)||i.set(t,{...e,value:r.get(t)??e.value})};for(let t of e)a(t);for(let e of t)a(e);return Array.from(i.values())}var ux={discipline:{load:async()=>cx(Ss),cache:`static`,open:!1,emptyText:`No disciplines available`},catalog:{load:async()=>[],cache:`static`,open:!1,emptyText:`No catalogs in the static corpus`},intensity:{load:async()=>cx(gf),cache:`static`,open:!1,emptyText:`No intensity tiers available`},type:{load:async()=>cx(sx),cache:`static`,open:!1,emptyText:`No indexed block types yet`}},dx={...ux},fx=new Set,px=Object.keys(dx);function mx(e){return fx.add(e),()=>{fx.delete(e)}}function hx(){return(0,V.useSyncExternalStore)(mx,()=>px)}function gx(e,t){t?dx[e]=t:ux[e]?dx[e]=ux[e]:delete dx[e],bx(e),px=Object.keys(dx);for(let e of fx)e()}function _x(e){return dx[e]}var vx=new Map;async function yx(e){let t=_x(e);if(!t)return[];let n=Date.now(),r=vx.get(e);if(r&&r.expiresAt>n)return r.items;try{let r=lx(await t.load(),[]),i=typeof t.cache==`object`?t.cache.ttlMs:1/0;return vx.set(e,{items:r,expiresAt:n+i}),r}catch{return r?r.items:[]}}function bx(e){e?vx.delete(e):vx.clear()}function xx(e){let t=_x(e),[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)(!!t);return(0,V.useEffect)(()=>{if(!t){r([]),a(!1);return}let n=!1;return a(!0),yx(e).then(e=>{n||(r(e),a(!1))}),()=>{n=!0}},[e,t]),{items:n,loading:i,binding:t}}function Sx(e,t){let n=t.trim();if(e===`time`){if(n.toLowerCase()===`all`)return!0;if(!/^last\s+\d+[dw]$/i.test(n))return!1;let e=X(`:note ${n}`);return!e.error&&e.family===`find`&&e.window?.kind===`relative`}if(e===`rollup`){if(!/^\d+[dw]$/i.test(n))return!1;let e=X(`sum:tis{}.rollup(${n})`);return!e.error&&e.family===`aggregate`&&e.rollup!==void 0}if(e===`groupby`){if(!/^[a-zA-Z][\w-]*$/.test(n))return!1;let e=X(`sum:tis{} by {${n}}`);return!e.error&&e.family===`aggregate`&&e.groupBy?.includes(n)===!0}return!0}function Cx(e,t,n){let r=e?.type??``,{items:i,loading:a,binding:o}=xx(r),s=rx[r],c=r in nx||!!o,l=e?.value?e.value.split(`|`).map(e=>e.trim()).filter(Boolean):[],u=n?.supportedValues!==void 0,d=u?n.supportedValues.map(e=>({value:e,label:e})):o?i.map(e=>({value:e.value,label:e.label??e.value})):s??i.map(e=>({value:e.value,label:e.label??e.value})),f=l.length>0&&l.every(e=>e.endsWith(`*`))?d.map(e=>e.value.endsWith(`*`)?e:{...e,value:`${e.value}*`}):d,p=new Set(f.map(e=>e.value.toLowerCase())),m=(u||s||o)&&!n?.dropSelected?l.filter(e=>!p.has(e.toLowerCase())).map(e=>({value:e,label:e})):[],h=m.length?[...f,...m]:f,g=t.trim().toLowerCase(),_=g?h.filter(e=>e.value.toLowerCase().includes(g)||e.label.toLowerCase().includes(g)):h,v=u?!1:!s||o?o?.open??!0:r===`metric`||r===`unit`||r===`time`||r===`rollup`,y=t.trim(),b=Sx(r,y),x=y.length>0&&v&&b&&!h.some(e=>e.value.toLowerCase()===y.toLowerCase()),S=null;return _.length===0&&!x&&(S=a?`Loading…`:h.length===0?o?.emptyText??`Nothing here yet`:g?v?b?`No matches`:`No matches — not a valid ${Qb(r).label.toLowerCase()} value`:`No matches — no such option`:`No options`),{isMulti:c,selectedValues:l,items:h,filteredItems:_,typedValue:y,canCommitTyped:x,loading:a,openSlot:v,hasFilterInput:!0,emptyText:S}}function wx(e){let t=e.filters.find(e=>e.key===`source`),n=t?t.values.map(e=>e.value).join(`,`):`all`;return{target:e.target,scope:n,timeWindow:e.window?e.window.kind===`relative`?`last ${e.window.size}${e.window.unit}`:`from ${e.window.start}${e.window.end?` to ${e.window.end}`:``}`:void 0,groupBy:e.groupBy?.length?e.groupBy.join(`, `):void 0,hasJoin:!!e.join,filterCount:e.filters.length}}function Tx(e){return{agg:e.agg,metric:e.metric,groupBy:e.groupBy.length>0?e.groupBy.join(`, `):void 0,rollup:e.rollup?`${e.rollup.size}${e.rollup.unit}`:void 0,unit:e.displayUnit,hasJoin:!!e.join,filterCount:e.filters.length}}function Ex(e){return e.kind===`dataset`?e.name:`target`in e.query?`:${e.query.target}`:`:${e.query.agg}`}function Dx(e){let t=e.source.kind===`query`?e.source.query:void 0;return{source:Ex(e.source),functions:e.transforms.map(e=>`${e.agg}:${e.metric}`),sink:e.sink?`:${e.sink.head}`:void 0,timeWindow:t?.window?t.window.kind===`relative`?`last ${t.window.size}${t.window.unit}`:`from ${t.window.start}${t.window.end?` to ${t.window.end}`:``}`:void 0,filterCount:t?t.filters.length:0}}function Ox({label:e,value:t,testId:n,warnTitle:r}){let i=n.startsWith(`diag-`)?n.replace(`diag-`,`wql-`):n;return(0,H.jsxs)(`span`,{"data-testid":n,title:r,className:`inline-flex items-center gap-1 whitespace-nowrap`,children:[(0,H.jsxs)(`span`,{className:`opacity-60`,children:[e,`:`]}),(0,H.jsx)(`span`,{"data-testid":i,className:cy(`font-semibold`,r&&`text-signal-caution underline decoration-wavy underline-offset-2`),children:t})]})}function kx({diagnostics:e,offendingLabel:t,stages:n,hideSummary:r=!1,variant:i=`card`,actions:a,className:o}){let{valid:s,ast:c,error:l}=e,u=i===`header`,d=c.advisories??[],f=new Set(op(c)?[]:Uf(c.family===`find`?c.target:``,c.family)),p=op(c)?[]:(c.groupBy??[]).filter(e=>!f.has(e)),m=s&&(d.length>0||p.length>0),h=d[0]??`Unsupported grouping: ${p.join(`, `)}`;return(0,H.jsxs)(`div`,{"data-testid":`wql-diagnostics-strip`,"aria-live":`polite`,className:cy(`flex flex-wrap items-center justify-between gap-x-4 gap-y-1.5 px-3 py-1.5 text-xs font-mono transition-colors`,u?s?`border-b border-primary/30 text-muted-foreground`:`border-b border-destructive/50 bg-destructive/5 text-destructive`:cy(`rounded-lg border`,s?`bg-muted/30 border-border text-muted-foreground`:`bg-destructive/5 border-destructive/30 text-destructive`),o),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,H.jsx)(`div`,{className:`flex items-center gap-1.5 font-medium`,"data-testid":`wql-validity-badge`,"data-valid":s,"data-warning":m||void 0,role:s?`status`:`alert`,"aria-live":`polite`,children:s?m?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(yt,{className:`w-3.5 h-3.5 text-signal-caution shrink-0`}),(0,H.jsx)(`span`,{className:`text-signal-caution`,children:`Warning`}),(0,H.jsx)(`span`,{className:`opacity-80`,children:h})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(bn,{className:`w-3.5 h-3.5 text-signal-positive shrink-0`}),(0,H.jsx)(`span`,{className:`text-signal-positive`,children:`Valid`})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Qt,{className:`w-3.5 h-3.5 text-destructive shrink-0`}),(0,H.jsx)(`span`,{children:`Invalid`}),(0,H.jsxs)(`span`,{children:[t?`${t}: `:``,l||`Syntax error`]})]})}),!r&&s&&ip(c)&&(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[11px] opacity-80 border-l border-border/50 pl-3`,children:(()=>{let e=wx(c);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Ox,{label:`target`,value:e.target,testId:`diag-summary-target`}),(0,H.jsx)(Ox,{label:`scope`,value:e.scope,testId:`diag-summary-scope`}),e.timeWindow&&(0,H.jsx)(Ox,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`}),e.groupBy&&(0,H.jsx)(Ox,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.hasJoin&&(0,H.jsx)(`span`,{"data-testid":`diag-summary-join`,className:`text-primary font-semibold`,children:`+join`})]})})()}),!r&&s&&ap(c)&&(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[11px] opacity-80 border-l border-border/50 pl-3`,children:(()=>{let e=Tx(c);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Ox,{label:`agg`,value:e.agg,testId:`diag-summary-agg`}),e.metric&&(0,H.jsx)(Ox,{label:`metric`,value:e.metric,testId:`diag-summary-metric`}),e.groupBy&&(0,H.jsx)(Ox,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.rollup&&(0,H.jsx)(Ox,{label:`every`,value:e.rollup,testId:`diag-summary-rollup`}),e.unit&&(0,H.jsx)(Ox,{label:`as`,value:e.unit,testId:`diag-summary-unit`})]})})()}),!r&&s&&op(c)&&(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[11px] opacity-80 border-l border-border/50 pl-3`,children:(()=>{let e=Dx(c);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Ox,{label:`source`,value:e.source,testId:`diag-summary-source`}),e.functions.map((e,t)=>(0,H.jsx)(Ox,{label:`fn ${t+1}`,value:e,testId:`diag-summary-fn-${t+1}`},t)),e.sink&&(0,H.jsx)(Ox,{label:`sink`,value:e.sink,testId:`diag-summary-sink`}),e.timeWindow&&(0,H.jsx)(Ox,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`})]})})()}),s&&n&&(0,H.jsx)(`div`,{"data-testid":`diag-stage-counts`,className:`text-[11px] font-semibold text-primary border-l border-border/50 pl-3`,children:n.kind===`find`?(0,H.jsxs)(`span`,{children:[n.matched,` matched of `,n.selected]}):(0,H.jsxs)(`span`,{children:[n.selected,` selected → `,n.aggregated,` aggregated (`,n.groups,` series)`]})})]}),a&&(0,H.jsx)(`div`,{className:`flex items-center gap-1.5 ml-auto`,children:a})]})}function Ax(e,t,n,r=150){let[i,a]=(0,V.useState)(void 0),o=(0,V.useRef)(void 0),s=(0,V.useRef)(n);s.current=n;let c=t&&!e.error&&n!==void 0&&!op(e);return(0,V.useEffect)(()=>{if(!c){a(void 0);return}a(void 0);let t=!1,n=setTimeout(()=>{s.current?.(e).then(n=>{t||(o.current=e,a(ip(e)?{kind:`find`,...n.stages}:{kind:`aggregate`,...n.stages}))}).catch(()=>{t||a(void 0)})},r);return()=>{t=!0,clearTimeout(n)}},[e,c,r]),c&&o.current===e?i:void 0}var jx={tags:`tag`},Mx={tag:`tags`};function Nx(e){return Array.isArray(e)?e.map(Nx):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).filter(([e,t])=>![`raw`,`advisories`,`error`,`head`].includes(e)&&t!==void 0&&!(e===`groupBy`&&Array.isArray(t)&&t.length===0)).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Nx(t)])):e}function Px(e){if(e.error)return!1;let t=X(Jp(e));return!t.error&&JSON.stringify(Nx(e))===JSON.stringify(Nx(t))}function Fx(e,t){let n=X(e),r=t?{...n,raw:e,error:t}:n;return{wql:e,ast:r,valid:!r.error,error:r.error}}function Ix(e){let t=Jp(e),n=Fx(t);return n.valid&&!Px(e)?Fx(t,`This value cannot be represented losslessly in WQL.`):n}function Lx(e,t,n){return{id:`c-${e}`,type:e,...Qb(e),value:t,...n}}function Rx(e){let t=e.window;return t?t.kind===`relative`?`last ${t.size}${t.unit}`:`from ${t.start}${t.end?` to ${t.end}`:``}`:`all`}function zx(e){if(op(e)||e.error||!Px(e)||e.filters.some(e=>e.values.some(e=>e.value.includes(`|`)||!e.wildcard&&e.value.endsWith(`*`))))return null;let t=[Lx(`kind`,e.family)];e.family===`find`?t.push(Lx(`target`,e.target)):t.push(Lx(`agg`,e.agg),Lx(`metric`,e.metric)),(e.window||Vf(e.family===`find`?e.target:``,e.family).has(`time`))&&t.push(Lx(`time`,Rx(e))),e.filters.forEach((e,n)=>{let r=e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`),i=Lb.getAllSlots().find(t=>{if(!t.parseValue)return!1;let n=t.parseValue(r);return n!==void 0&&t.wqlGenerator(n)===Bx(e)})?.type??jx[e.key]??e.key;t.push(Lx(i,r,{id:`c-filter-${n}`,filterIndex:n,negate:e.negate}))}),e.groupBy?.length&&t.push(Lx(`groupby`,e.groupBy.join(`|`))),e.family===`aggregate`&&e.rollup&&t.push(Lx(`rollup`,`${e.rollup.size}${e.rollup.unit}`)),e.displayUnit&&t.push(Lx(`unit`,e.displayUnit));let n=Jp(e);return e.join&&t.push(Lx(`where`,n.split(` where `)[1]?.split(` | `)[0]??``)),e.family===`find`&&e.pipes&&t.push(Lx(`pipes`,n.split(` | `).slice(1).join(` | `))),t}function Bx(e){return Jp({family:`find`,raw:``,target:`note`,sourceScope:[...Cf],filters:[e]}).replace(/^[^{]*\{/,``).replace(/\}$/,``)}function Vx(e,t,n){let r=Lb.getSlot(e);if(r){let e=r.parseValue?r.parseValue(t):t;if(e===void 0||r.validate?.(e))return;let n=X(`:note{${r.wqlGenerator(e)}}`);return n.error||!ip(n)?void 0:n.filters[0]}let i={key:Mx[e]??e,negate:n,values:t.split(`|`).map(e=>{let t=e.endsWith(`*`);return{value:t?e.slice(0,-1):e,wildcard:t}})},a=X(`:note{${Bx(i)}}`);return!a.error&&ip(a)&&a.filters.length===1&&JSON.stringify(Nx(a.filters[0]))===JSON.stringify(Nx(i))?a.filters[0]:void 0}function Hx(e,t,n){let r=Fx(e);if(!r.valid)return r;let i=r.ast;if(op(i))return Fx(e,`Pipelines are edited as WQL text — structured pills cannot change a stage without flattening it.`);if(!Px(i))return Fx(e,`This query requires Edit WQL to preserve every clause.`);let a=n?.trim()??``;if(t.type===`kind`||t.type===`target`)return Ux(e,t.type,a).draft;if(t.filterIndex!==void 0||![`time`,`agg`,`metric`,`groupby`,`rollup`,`unit`,`where`,`pipes`].includes(t.type)){let n=a&&(t.type!==`source`||a!==`all`)?Vx(t.type,a,t.negate??!1):void 0;if(a&&!n&&(t.type!==`source`||a!==`all`))return Fx(e,`Invalid ${Qb(t.type).label} value`);let o=[...i.filters];if(t.filterIndex!==void 0){if(!o[t.filterIndex])return r;n?o[t.filterIndex]=n:o.splice(t.filterIndex,1)}else n&&o.push(n);return Ix({...i,filters:o})}if(t.type===`time`){if(!a||a===`all`)return Ix({...i,window:void 0});let t=X(`:note ${/^(last|from)\b/.test(a)?a:`last ${a}`}`);return t.error||!ip(t)||!t.window?Fx(e,t.error??`Invalid time window`):Ix({...i,window:t.window})}if(t.type===`groupby`)return Ix({...i,groupBy:[...new Set(a.split(`|`).filter(Boolean))]});if(t.type===`unit`)return Ix({...i,displayUnit:a||void 0});if(t.type===`agg`&&i.family===`aggregate`)return Fx(Jp(i).replace(/^[^:]+:/,`${a}:`));if(t.type===`metric`&&i.family===`aggregate`)return Ix({...i,metric:a});if(t.type===`rollup`&&i.family===`aggregate`){if(!a)return Ix({...i,rollup:void 0});let t=X(`sum:tis{} by {week}.rollup(${a})`);return t.error||t.family!==`aggregate`||!t.rollup?Fx(e,t.error??`Invalid bucket width`):Ix({...i,rollup:t.rollup})}if(t.type===`where`){let e=Jp({...i,join:void 0});return Fx(a?`${e} where ${a}`:e)}if(t.type===`pipes`&&i.family===`find`){let e=Jp({...i,pipes:void 0});return Fx(a?`${e} | ${a}`:e)}return r}function Ux(e,t,n){let r=Fx(e),i=r.ast;if(!r.valid)return{draft:r,removed:[]};if(op(i))return{draft:Fx(e,`Pipelines are pivoted as WQL text — stage order cannot survive a structured pivot.`),removed:[]};let a=t===`kind`?n:`find`,o=t===`target`?n:i.family===`find`?i.target:`note`,s=Vf(o,a===`aggregate`?`aggregate`:`find`),c=[],l=i.filters.filter(e=>{let t=(a===`aggregate`||o===`segment`||o===`event`)&&!(e.key in Xb)&&!!_x(e.key),n=s.has(jx[e.key]??e.key)||t||!!Lb.getSlot(e.key);return n||c.push(Bx(e)),n});if(a===i.family&&(i.family!==`find`||o===i.target))return{draft:r,removed:[]};let u=s.has(`time`)?i.window:void 0,d=s.has(`groupby`)?i.groupBy:void 0,f=s.has(`unit`)?i.displayUnit:void 0;i.displayUnit&&!f&&c.push(`Unit`),i.window&&!u&&c.push(`Time window`),i.groupBy?.length&&!d&&c.push(`Group By`);let p=a===`find`&&i.family===`find`&&s.has(`where`)?i.join:void 0;return i.join&&!p&&c.push(`Join`),a===`aggregate`?(i.family===`find`&&i.pipes&&c.push(`Presentation pipes`),{draft:Ix({family:`aggregate`,raw:``,agg:`sum`,metric:`tis`,filters:l,window:u,groupBy:d??[],displayUnit:f}),removed:c}):(i.family===`aggregate`&&(c.push(`Measure ${i.agg}:${i.metric}`),i.rollup&&c.push(`Bucket width`)),{draft:Ix({family:`find`,raw:``,target:o,filters:l,window:u,groupBy:d,displayUnit:f,pipes:i.family===`find`?i.pipes:void 0,join:p}),removed:c})}function Wx(e,t=``){if(!t.trim())return Fx(e);let n=t.trim();if(!X(t).error||/^(find|sum|avg|min|max|count|last|first|p\d+):/.test(n)||/^[\w-]+:[^{]*\{/.test(n)||/^[:@|]/.test(n))return Fx(t);let r=Fx(e);if(!r.valid||op(r.ast))return Fx(t);if(!Px(r.ast))return Fx(e,`Use Edit WQL for this query.`);if(/^(last|from)\b/.test(n)){let e=X(`:note ${n}`);return e.error||!ip(e)||!e.window?Fx(t,e.error??`Invalid time window`):Ix({...r.ast,window:e.window})}if(/^!?[\w-]+:/.test(n)){let e=X(`:note{${n}}`);if(e.error||!ip(e)||!e.filters.length)return Fx(t,e.error??`Invalid filter`);let i=[...r.ast.filters];for(let t of e.filters){let e=i.findIndex(e=>e.key===t.key);e<0?i.push(t):i[e]=t}return Ix({...r.ast,filters:i})}if(/[{}]/.test(n))return Fx(t);let i=n.startsWith(`"`)?n.slice(1).replace(/"$/,``):t;if(!i)return r;let a=[...r.ast.filters],o={key:`text`,negate:!1,values:[{value:i,wildcard:!1}]},s=a.findIndex(e=>e.key===`text`&&!e.negate);return s<0?a.push(o):a[s]=o,Ix({...r.ast,filters:a})}var Gx=Je(),Kx={search:(0,Gx.renderToStaticMarkup)((0,V.createElement)(Ot,{size:16})),metric:(0,Gx.renderToStaticMarkup)((0,V.createElement)(Ct,{size:16})),filter:(0,Gx.renderToStaticMarkup)((0,V.createElement)(ir,{size:16})),value:(0,Gx.renderToStaticMarkup)((0,V.createElement)(Yn,{size:16}))},qx={Head:!0,Filter:!0,TagValue:!0,Rollup:!0};function Jx(e){let t=[];return Wr(e).iterate({enter:e=>((qx[e.name]||e.name===`Word`&&e.node.parent?.name===`GroupBy`)&&t.push(e.from),!0)}),t.sort((e,t)=>e-t)}function Yx(e,t){let n=e.state.selection.main.head,r=Jx(e.state),i=t>0?r.find(e=>e>n):[...r].reverse().find(e=>e<n);return i!==void 0&&(e.dispatch({selection:{anchor:i},scrollIntoView:!0}),!0)}function Xx(e){let t=e.state.doc.toString();if(!t.trim())return[];let n=X(t);if(n.error){let r=[];return Wr(e.state).iterate({enter:e=>(e.type.isError&&r.push({from:e.from,to:e.to}),!0)}),(r.length?r:[{from:0,to:t.length}]).map(e=>{let r=Math.min(Math.max(e.to,e.from+1),t.length);return{from:Math.min(e.from,r-1),to:r,severity:`error`,message:n.error}})}if(op(n))return[];let r=[];if(Wr(e.state).iterate({enter:e=>(e.name===`Filter`&&r.push({from:e.from,to:e.to,text:t.slice(e.from,e.to)}),!0)}),r.length!==n.filters.length)return[];let i=n.family===`find`?n.target:`this query`,a=[];return n.filters.forEach((e,t)=>{if(Wf(n.family===`find`?n.target:``,n.family,e.key))return;let o=r[t];a.push({from:o.from,to:o.to,severity:`warning`,message:/^[^\s:]+\s*[<>=~]/.test(o.text)?`Operators on "${e.key}" are ignored for ${i}`:`Filter "${e.key}" is ignored for ${i}`})}),a}function Zx(e,t){return[{key:`Mod-Enter`,run:()=>(e(),!0)},{key:`Ctrl-Space`,run:fi},{key:`ArrowDown`,run:e=>Kr(e.state)===`active`&&Ar(!0)(e)},{key:`ArrowUp`,run:e=>Kr(e.state)===`active`&&Ar(!1)(e)},{key:`PageUp`,run:e=>Kr(e.state)===`active`?Ar(!1,`page`)(e):ai(e)},{key:`PageDown`,run:e=>Kr(e.state)===`active`?Ar(!0,`page`)(e):ki(e)},{key:`Home`,run:e=>Kr(e.state)===`active`?(e.dispatch({effects:Vr(0)}),!0):mi(e)},{key:`End`,run:e=>Kr(e.state)===`active`?(e.dispatch({effects:Vr(jr(e.state).length-1)}),!0):ri(e)},{key:`Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Pi(e);return Yx(e,1)||t}},{key:`Shift-Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Pi(e);return Yx(e,-1)||t}},{key:`Enter`,run:t=>t.compositionStarted?!1:Pi(t)?!0:(kr(t),e(),!0)},{key:`Escape`,run:e=>e.compositionStarted||kr(e)||t()||(e.contentDOM.blur(),!0)},...gi]}function Qx({value:e,onChange:t,onSubmit:n,onEscape:r,placeholder:i,autoFocus:a=!1,dense:o=!1}){let s=(0,V.useRef)(null),c=(0,V.useRef)(void 0),l=(0,V.useRef)({onChange:t,onSubmit:n,onEscape:r});l.current={onChange:t,onSubmit:n,onEscape:r};let u=(0,V.useRef)(!1),d=(0,V.useRef)(e);return(0,V.useEffect)(()=>{if(!s.current)return;let e=Tm({values:async e=>(await yx(e===`tags`?`tag`:e)).map(e=>({label:e.value,detail:e.label,type:`constant`}))}),t=new Pr({parent:s.current,state:di.create({doc:d.current,extensions:[Xp,Rr(Em),xi(),Pr.lineWrapping,...i?[Oi(i)]:[],Pr.contentAttributes.of({"aria-label":`WQL`,"data-testid":`wql-text-input`}),ni({defaultKeymap:!1,selectOnOpen:!1,interactionDelay:0,override:[e],icons:!1,addToOptions:[{position:20,render:e=>{let t=document.createElement(`span`);return t.className=`wql-completion-icon`,t.setAttribute(`aria-hidden`,`true`),t.innerHTML=e.label===`find`?Kx.search:e.type===`keyword`||e.type===`variable`?Kx.metric:e.type===`property`?Kx.filter:Kx.value,t}}]}),Ti(Xx),Dr.of(Zx(()=>l.current.onSubmit(),()=>l.current.onEscape())),Pr.domEventHandlers({mouseup:(e,t)=>{if(e.button!==0)return!1;let{from:n,to:r}=t.state.selection.main;if(n===r){let e=t.state.doc.lineAt(n),i=Array.from(e.text.matchAll(/[\w.*-]+/g)).find(t=>e.from+t.index<=n&&n<=e.from+t.index+t[0].length);if(!i)return!1;n=e.from+i.index,r=n+i[0].length;let a=Wr(t.state).resolveInner(r,-1);for(;a.parent&&![`Head`,`Filter`].includes(a.name);)a=a.parent;if(![`Head`,`Filter`].includes(a.name))return!1;t.dispatch({selection:{anchor:n,head:r}})}return fi(t),!1},keydown:(e,t)=>e.isComposing||t.compositionStarted?!0:((e.key===`Enter`||e.key===`Escape`||[`ArrowDown`,`ArrowUp`].includes(e.key)&&Kr(t.state)===`active`)&&e.stopPropagation(),!1)}),Pr.updateListener.of(e=>{e.docChanged&&!u.current&&l.current.onChange(e.state.doc.toString())}),Pr.theme({"&":{width:`100%`,fontSize:`14px`,backgroundColor:`transparent`},"&.cm-focused":{outline:`none`},".cm-content":{fontFamily:`var(--font-mono, ui-monospace, monospace)`,padding:o?`8px 0`:`12px 0`,minHeight:o?`34px`:`48px`},".cm-line":{padding:`0 12px`},'.cm-line span[class*="tok-"]:hover, .cm-line span[class^="tok-"]:hover':{fontWeight:`700`,textShadow:`0 0 0.5px currentColor`,cursor:`pointer`},".cm-scroller":{overflow:`auto`},".cm-placeholder":{color:`hsl(var(--muted-foreground))`},".cm-tooltip":{backgroundColor:`hsl(var(--popover))`,color:`hsl(var(--popover-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`12px`,boxShadow:`0 8px 24px rgb(0 0 0 / 0.16)`,fontFamily:`var(--font-sans, Inter, system-ui, sans-serif)`,fontSize:`14px`},".cm-tooltip-autocomplete":{overflow:`hidden`,minWidth:`min(18rem, calc(100vw - 2rem))`,maxWidth:`calc(100vw - 2rem)`},".cm-tooltip-autocomplete > ul":{padding:`4px`,maxHeight:`min(20rem, 45vh)`,overscrollBehavior:`contain`},".cm-tooltip-autocomplete > ul > li":{display:`flex`,alignItems:`center`,gap:`8px`,minHeight:`40px`,padding:`8px 10px`,borderRadius:`8px`,lineHeight:`20px`},".cm-tooltip-autocomplete > ul > li:hover":{backgroundColor:`hsl(var(--muted))`},".cm-tooltip-autocomplete > ul > li[aria-selected]":{backgroundColor:`hsl(var(--accent))`,color:`hsl(var(--accent-foreground))`,boxShadow:`inset 2px 0 hsl(var(--primary))`},".wql-completion-icon":{display:`inline-flex`,flexShrink:`0`,color:`hsl(var(--primary))`},".cm-completionLabel":{fontWeight:`500`,overflow:`hidden`,textOverflow:`ellipsis`},".cm-completionMatchedText":{textDecoration:`none`,fontWeight:`700`,color:`hsl(var(--primary))`},".cm-completionDetail":{marginLeft:`auto`,paddingLeft:`12px`,fontSize:`12px`,fontStyle:`normal`,color:`hsl(var(--muted-foreground))`},"@media (pointer: coarse)":{".cm-tooltip-autocomplete > ul > li":{minHeight:`48px`}}})]})});return c.current=t,a&&t.focus(),()=>{t.destroy(),c.current=void 0}},[a,i,o]),(0,V.useEffect)(()=>{let t=c.current;!t||t.state.doc.toString()===e||(u.current=!0,t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}),u.current=!1)},[e]),(0,H.jsx)(`div`,{ref:s,className:`min-w-0 w-full rounded-lg border border-border bg-background focus-within:ring-2 focus-within:ring-ring`,"data-testid":`wql-text-editor`})}function $x({initialQuery:e,query:t,onQueryChange:n,onValidationChange:r,onAstChange:i,onSubmit:a,actionLabel:o,compact:s=!1,showDiagnostics:c=!0,diagnosticsPosition:l=`bottom`,execute:u,stages:d,debounceMs:f=150,customSlots:p,diagnosticsActions:m,hiddenClauseTypes:h,preferredChoices:g,autoFocus:_=!1,placeholder:v=`Search text or enter WQL`,className:y}){let[b,x]=(0,V.useState)(!1),[S,C]=(0,V.useState)(t??e??`:note`),[w,T]=(0,V.useState)(``),[E,D]=(0,V.useState)({kind:`closed`}),[O,k]=(0,V.useState)(``),[A,j]=(0,V.useState)(-1),[M,N]=(0,V.useState)(),[P,F]=(0,V.useState)(),[I,ee]=(0,V.useState)(),L=(0,V.useRef)(null),te=(0,V.useRef)(null),R=(0,V.useRef)(null),ne=(0,V.useRef)(t??e??`:note`),re=(0,V.useRef)(t),ie=(0,V.useRef)(Wx(S)),ae=(0,V.useRef)({onQueryChange:n,onValidationChange:r,onAstChange:i});ae.current={onQueryChange:n,onValidationChange:r,onAstChange:i};let oe=`${(0,V.useId)()}-options`,se=Rb(),ce=hx(),le=t!==void 0&&t!==re.current&&t!==ne.current,ue=(0,V.useMemo)(()=>Wx(le?t:S,le?``:w),[S,w,le,t]);ie.current=ue;let de=(0,V.useMemo)(()=>zx(ue.ast)??[],[ue.ast]),fe=ue.valid&&zx(ue.ast)!==null,pe=new Set(h),me=E.kind===`value`?E.clause:void 0,he=me?Lb.getSlot(me.type):void 0,ge=Cx(me,O,{supportedValues:me?.type===`groupby`&&ue.ast.family===`find`&&[`note`,`block`].includes(ue.ast.target)?Af:void 0}),_e=[...ge.filteredItems].sort((e,t)=>{let n=g?.indexOf(e.value)??-1,r=g?.indexOf(t.value)??-1;return(n<0?1/0:n)-(r<0?1/0:r)}),ve=op(ue.ast)?new Set:Vf(ue.ast.family===`find`?ue.ast.target:``,ue.ast.family),ye=op(ue.ast)?void 0:ue.ast.window,be=()=>{let e=ie.current.ast;return op(e)?void 0:e.window},xe=ue.ast.family===`aggregate`||ue.ast.family===`find`&&[`segment`,`event`].includes(ue.ast.target)?ce.filter(e=>!(e in Xb)):[],Se=[...Object.keys(Xb),...xe,...se.map(e=>e.type)].filter((e,t,n)=>n.indexOf(e)===t&&!pe.has(e)).filter(e=>[`kind`,`target`].includes(e)||ve.has(e)||xe.includes(e)||se.some(t=>t.type===e)).filter(e=>e!==`target`||ue.ast.family===`find`).filter(e=>e!==`pipes`&&e!==`where`).filter(e=>e.toLowerCase().includes(w.toLowerCase())||Qb(e).label.toLowerCase().includes(w.toLowerCase())).sort((e,t)=>Number(t.startsWith(w))-Number(e.startsWith(w))),Ce=E.kind===`closed`&&w.trim()!==``&&Se.length>0&&!/[{}:]/.test(w),we=Ce||ve.has(`text`),Te=E.kind===`value`?ge.filteredItems.length+Number(ge.canCommitTyped):Se.length+Number(we),Ee=Ax(ue.ast,ue.valid&&!M,d?void 0:u,f),De=d??Ee;(0,V.useEffect)(()=>{t!==void 0&&t!==re.current&&(re.current=t,t!==ne.current&&(ne.current=t,C(t),T(``),D({kind:`closed`}),k(``),j(-1),N(void 0),ee(void 0)))},[t]),(0,V.useEffect)(()=>{ae.current.onValidationChange?.({valid:ue.valid&&!M&&!I,error:M??ue.error??(I?`Confirm or cancel the query change`:void 0)}),ae.current.onAstChange?.(ue.ast)},[ue,M,I]),(0,V.useEffect)(()=>{let e=window.matchMedia?.(`(min-width: 640px)`);if(!e)return;let t=()=>x(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,V.useEffect)(()=>{_&&L.current?.focus()},[_]),(0,V.useEffect)(()=>{E.kind===`value`&&te.current?.focus()},[E.kind]),(0,V.useEffect)(()=>{A>=0&&document.getElementById(`${oe}-option-${A}`)?.scrollIntoView?.({block:`nearest`})},[A,oe]);let Oe=e=>{ie.current=e;let t=e.wql!==ne.current;ne.current=e.wql,ae.current.onValidationChange?.({valid:e.valid,error:e.error}),ae.current.onAstChange?.(e.ast),t&&ae.current.onQueryChange?.(e.wql)},ke=e=>{C(e.wql),T(``),N(void 0),Oe(e)},Ae=()=>{D({kind:`closed`}),k(``),j(-1),N(void 0),R.current?.isConnected?R.current.focus():L.current?.focus()},je=e=>{w&&ie.current.valid&&ke(ie.current),R.current=document.activeElement instanceof HTMLElement?document.activeElement:null,e.type===`where`||e.type===`pipes`?(D({kind:`wql`}),ke(ie.current)):(D({kind:`value`,clause:e}),k(``)),j(-1),N(void 0)},Me=e=>{let t=de.find(t=>t.type===e);w&&ke(Wx(S)),je(t??{id:`new-${e}`,type:e,...Qb(e),value:``})},Ne=(e,t)=>{if(e.type===`kind`||e.type===`target`){let n=Ux(ie.current.wql,e.type,t??``);if(!n.draft.valid){N(n.draft.error);return}if(n.removed.length){ee(n);return}ke(n.draft),Ae();return}let n=Hx(ie.current.wql,e,t);if(!n.valid){N(n.error);return}if(ke(n),E.kind===`value`){let r=e.filterIndex,i=zx(n.ast)?.find(n=>r===void 0?n.type===e.type:n.filterIndex===r&&!!t);D({kind:`value`,clause:i??{...e,value:t??``,filterIndex:void 0}})}},Pe=e=>{if(E.kind===`value`){if(ge.isMulti){let t=ge.selectedValues,n=E.clause.value!==``&&E.clause.value.split(`|`).every(e=>e.endsWith(`*`))&&!e.endsWith(`*`)?`${e}*`:e;Ne(E.clause,(t.includes(n)?t.filter(e=>e!==n):[...t,n]).join(`|`))}else{let t=Hx(ie.current.wql,E.clause,e);if(!t.valid){N(t.error);return}Ne(E.clause,e),[`kind`,`target`].includes(E.clause.type)||Ae()}}},Fe=()=>{let e=ie.current;!e.valid||M||I||(ke(e),a?.(e.wql))},Ie=e=>{if(!e.nativeEvent.isComposing){if(e.key===`Enter`&&(e.ctrlKey||e.metaKey)){e.preventDefault(),e.stopPropagation(),Fe();return}if(e.key===`Escape`){if(I){e.preventDefault(),e.stopPropagation(),ee(void 0);return}if(E.kind!==`closed`){e.preventDefault(),e.stopPropagation(),Ae();return}if(Ce){e.preventDefault(),e.stopPropagation(),ke(ie.current),j(-1);return}}if(E.kind===`value`&&e.currentTarget instanceof HTMLInputElement&&e.currentTarget===L.current){[`Enter`,`ArrowDown`,`ArrowUp`].includes(e.key)&&e.stopPropagation(),e.key===`Enter`&&(e.preventDefault(),Fe());return}if((E.kind===`value`||Ce)&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault(),e.stopPropagation(),j(t=>e.key===`ArrowDown`?(t+1)%Te:t<=0?Te-1:t-1);return}if(e.key===`Enter`){e.preventDefault(),e.stopPropagation(),A>=0&&Ce&&Se[A]?Me(Se[A]):Ce&&A===Se.length?Fe():E.kind===`value`?A>=0&&A<_e.length?Pe(_e[A].value):ge.canCommitTyped&&(A===_e.length||A<0)?Pe(ge.typedValue):O&&!ge.openSlot&&N(`Unknown ${Qb(E.clause.type).label} value`):Fe();return}e.key===`Backspace`&&E.kind===`closed`&&!w&&Array.from(e.currentTarget.closest(`[data-testid="wql-composer-root"]`)?.querySelectorAll(`[data-testid^="token-slot-"]:not([data-testid^="token-slot-remove-"]):not([data-testid^="token-slot-value-"])`)??[]).at(-1)?.focus()}},Le=(0,H.jsxs)(H.Fragment,{children:[o&&(0,H.jsx)(`button`,{type:`button`,onClick:Fe,disabled:!ue.valid||!!M||!!I,className:`min-h-12 rounded-lg bg-primary px-4 text-primary-foreground disabled:opacity-50`,children:o}),m]}),Re={...ue,valid:ue.valid&&!M,error:M??ue.error};return(0,H.jsxs)(`div`,{className:cy(`min-w-0 space-y-2`,b&&s&&`flex flex-wrap items-center gap-2 space-y-0 [&>:not([data-wql-inline])]:w-full`,y),"data-testid":`wql-composer-root`,children:[l===`top`&&c&&(0,H.jsx)(kx,{diagnostics:Re,stages:De,actions:Le,variant:`header`}),(b||E.kind===`wql`||!fe)&&(0,H.jsx)(`div`,{"data-wql-inline":!0,className:cy(`min-w-0`,b&&s?`flex-1`:`w-full`),children:(0,H.jsx)(Qx,{value:ue.wql,placeholder:v,dense:b&&s,onChange:e=>ke(Wx(e)),onSubmit:Fe,onEscape:()=>E.kind!==`closed`&&(Ae(),!0),autoFocus:_})}),(0,H.jsxs)(`div`,{className:cy(`flex min-w-0 flex-wrap items-center gap-1`,!b&&`rounded-xl border border-border p-2`,b&&s&&`hidden`),"data-testid":`wql-composer`,onKeyDown:e=>{if(![`Delete`,`Backspace`].includes(e.key)||!(e.target instanceof HTMLButtonElement))return;let t=Array.from(e.currentTarget.querySelectorAll(`[data-testid^="token-slot-"]:not([data-testid^="token-slot-remove-"]):not([data-testid^="token-slot-value-"])`)),n=de.filter(e=>!pe.has(e.type))[t.indexOf(e.target)];!n||[`kind`,`target`,`agg`,`metric`].includes(n.type)||(e.preventDefault(),e.stopPropagation(),F(ie.current.wql),Ne(n,null),L.current?.focus())},children:[fe&&E.kind!==`wql`&&de.filter(e=>!pe.has(e.type)).map(e=>(0,H.jsx)($b,{clause:e,compact:s,isActive:E.kind===`value`&&E.clause.id===e.id,onClick:()=>je(e),onRemove:[`kind`,`target`,`agg`,`metric`].includes(e.type)?void 0:()=>{F(ie.current.wql),Ne(e,null)}},e.id)),!b&&E.kind!==`wql`&&fe&&(0,H.jsx)(`input`,{ref:L,type:`text`,role:`combobox`,"aria-label":`Search text or WQL`,"aria-controls":Ce?oe:void 0,"aria-expanded":Ce,"aria-activedescendant":Ce&&A>=0?`${oe}-option-${A}`:void 0,value:w,placeholder:v,onChange:e=>{let t=e.target.value;T(t),j(-1),N(void 0),Oe(Wx(S,t))},onKeyDown:Ie,className:`min-h-12 min-w-0 flex-[1_1_140px] bg-transparent font-mono text-base outline-none`,"data-testid":`wql-composer-input`}),p]}),(!b||P)&&(0,H.jsxs)(`div`,{"data-wql-inline":b&&s?``:void 0,className:`flex flex-wrap items-center gap-2`,children:[!b&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>{ke(ie.current),E.kind===`wql`?Ae():D({kind:`wql`})},disabled:E.kind===`wql`&&!fe,className:`min-h-12 rounded-lg px-3`,children:E.kind===`wql`?`Guided controls`:`Edit WQL`}),P&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>{ke(Wx(P)),F(void 0)},className:cy(`rounded-lg`,b&&s?`min-h-9 px-2.5 text-xs text-muted-foreground hover:text-foreground`:`min-h-12 px-3`),children:`Undo removal`})]}),E.kind===`value`&&(0,H.jsxs)(`div`,{"data-testid":`wql-field-picker`,className:`min-w-0 rounded-xl border border-border p-2 focus-within:ring-2 focus-within:ring-ring`,onKeyDown:e=>{(e.key===`Escape`||e.key===`Enter`&&(e.ctrlKey||e.metaKey))&&Ie(e)},children:[(0,H.jsx)(`button`,{type:`button`,onClick:Ae,className:`min-h-12 px-3`,children:`Back`}),(0,H.jsxs)(`label`,{className:`block text-sm`,children:[`Search `,Qb(E.clause.type).label,(0,H.jsx)(`input`,{ref:te,type:`search`,role:`combobox`,"aria-label":`Search ${Qb(E.clause.type).label}`,"aria-controls":oe,"aria-expanded":`true`,"aria-activedescendant":A>=0?`${oe}-option-${A}`:void 0,value:O,onChange:e=>{k(e.target.value),j(-1),N(void 0)},onKeyDown:Ie,className:`min-h-12 w-full rounded border border-border bg-background px-3 text-base`,"data-testid":`wql-picker-search`})]}),E.kind===`value`&&E.clause.filterIndex!==void 0&&(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsxs)(`label`,{className:`flex min-h-12 items-center gap-2`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:E.clause.negate??!1,onChange:e=>Ne({...E.clause,negate:e.target.checked},E.clause.value)}),`Exclude`]}),(0,H.jsxs)(`label`,{className:`flex min-h-12 items-center gap-2`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:E.clause.value.split(`|`).every(e=>e.endsWith(`*`)),onChange:e=>Ne(E.clause,E.clause.value.split(`|`).map(t=>`${t.replace(/\*$/,``)}${e.target.checked?`*`:``}`).join(`|`))}),`Starts with`]})]}),E.kind===`value`&&E.clause.type===`time`&&(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2`,children:[(0,H.jsxs)(`label`,{children:[`Start date`,(0,H.jsx)(`input`,{type:`date`,"aria-label":`Start date`,className:`min-h-12 w-full bg-background text-base`,onChange:e=>{let t=be();Ne(E.clause,`from ${e.target.value}${t?.kind===`range`&&t.end?` to ${t.end}`:``}`)},value:ye?.kind===`range`?ye.start:``})]}),(0,H.jsxs)(`label`,{children:[`End date`,(0,H.jsx)(`input`,{type:`date`,"aria-label":`End date`,className:`min-h-12 w-full bg-background text-base`,onChange:e=>{let t=be();t?.kind===`range`?Ne(E.clause,`from ${t.start}${e.target.value?` to ${e.target.value}`:``}`):N(`Choose a start date first`)},value:ye?.kind===`range`?ye.end??``:``})]})]}),E.kind===`value`&&(he?(0,H.jsx)(he.Editor,{value:he.parseValue?he.parseValue(E.clause.value):E.clause.value,onChange:e=>Ne(E.clause,he.formatValue?he.formatValue(e):String(e)),onClose:Ae}):(0,H.jsx)(tx,{clause:E.clause,filteredItems:_e,selectedValues:ge.selectedValues,isMulti:ge.isMulti,typedValue:ge.typedValue,canCommitTyped:ge.canCommitTyped,emptyText:ge.emptyText,highlightIdx:A,onHighlight:j,onCommitValue:Pe,onCommitTyped:Pe,listId:oe,onDone:Ae,onReorder:e=>Ne(E.clause,e.join(`|`))}))]}),Ce&&(0,H.jsxs)(`div`,{id:oe,role:`listbox`,"aria-label":`Query conditions`,className:`max-h-64 overflow-y-auto rounded-xl border border-border p-1`,"data-testid":`wql-filter-typeahead`,children:[Se.map((e,t)=>(0,H.jsxs)(`button`,{id:`${oe}-option-${t}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>j(t),onClick:()=>Me(e),className:cy(`flex min-h-12 w-full items-center gap-2 rounded px-3 text-left`,t===A&&`bg-muted`),"data-testid":`wql-filter-typeahead-${e}`,children:[(0,H.jsxs)(`span`,{children:[de.some(t=>t.type===e)?`Edit`:`Add`,` `,Qb(e).label]}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e})]},e)),we&&(0,H.jsxs)(`button`,{id:`${oe}-option-${Se.length}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>j(Se.length),className:cy(`min-h-12 w-full rounded px-3 text-left`,A===Se.length&&`bg-muted`),onClick:Fe,children:[`Search text `,w]})]}),I&&(0,H.jsxs)(`div`,{role:`alertdialog`,"aria-label":`Confirm query pivot`,className:`rounded-xl border border-border p-3`,children:[(0,H.jsx)(`p`,{children:`Changing the query removes incompatible clauses:`}),(0,H.jsx)(`ul`,{children:I.removed.map(e=>(0,H.jsx)(`li`,{children:e},e))}),(0,H.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>ee(void 0),children:`Cancel`}),(0,H.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>{ke(I.draft),ee(void 0),Ae()},children:`Change query`})]}),!c&&(M??ue.error)&&(0,H.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:M??ue.error}),!fe&&!ue.error&&(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Use Edit WQL to preserve every clause.`}),w&&(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`wql-composer-pending`,children:ue.valid?`Current draft includes this text`:ue.error}),c&&l===`bottom`?(0,H.jsx)(kx,{diagnostics:Re,stages:De,actions:Le}):l!==`top`||!c?(0,H.jsx)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:Le}):null]})}function eS({isOpen:e,onClose:t,initialQuery:n,onApply:r,title:i=`Edit Block Query`,subtitle:a=`Use the Omni-Composer to edit this block query.`,applyLabel:o=`Apply to Block`,executor:s}){let[c,l]=(0,V.useState)(n),[u,d]=(0,V.useState)({valid:!X(n).error}),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null);(0,V.useEffect)(()=>{e&&(l(n),d({valid:!X(n).error}),h(null))},[e,n]);let g=(0,V.useCallback)(e=>{if(!s)throw Error(`No executor provided`);return ip(e)?s.runFind(e):s.runQuery(e.raw)},[s]),_=async()=>{if(!(f||X(c).error)){p(!0),h(null);try{await r(c),t()}catch(e){h(e instanceof Error?e.message:String(e))}finally{p(!1)}}};return(0,H.jsx)(Ib,{open:e,onClose:t,presentation:`sheet`,title:i,description:a,footer:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`flex-1 min-w-0 truncate font-mono text-xs text-muted-foreground`,"data-testid":`wql-inspector-draft`,children:c}),(0,H.jsx)(`button`,{type:`button`,onClick:t,className:`min-h-12 px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground rounded-lg border border-border hover:bg-muted transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{type:`button`,"data-testid":`wql-inspector-apply`,onClick:()=>void _(),disabled:!u.valid||f,className:`min-h-12 px-3 py-1.5 text-xs font-medium text-primary-foreground bg-primary hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg shadow transition-colors`,children:f?`Applying…`:o})]}),children:(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)($x,{query:c,onQueryChange:l,onValidationChange:d,execute:s?g:void 0,showDiagnostics:!0}),m&&(0,H.jsx)(`p`,{role:`alert`,className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive font-mono`,children:m})]})})}function tS({query:e,executor:t,onResultSaved:n,onSaveQuery:r,queryIndex:i=0,readOnly:a=!1,widgetType:o,widgetError:s,tokenValues:c,attributes:l,onCaptureRpe:u,onOpenNote:d,noteHref:f}){let[p,m]=(0,V.useState)(!1),h=(0,V.useMemo)(()=>Ab(e),[e]),{query:g,missing:_}=(0,V.useMemo)(()=>{let t=tg(h.length>0?h[0].query:e,c??{}),n=new Set(t.missing);for(let e of Object.values(l??{}))for(let t of tg(e,c??{}).missing)n.add(t);return{query:t.query,missing:[...n]}},[h,e,c,l]),v=(0,V.useMemo)(()=>{let e={};for(let[t,n]of Object.entries(l??{}))e[t]=tg(n,c??{}).query;return e},[l,c]),y=(0,V.useMemo)(()=>X(g),[g]),b=o!=null&&o!==``&&!Uh(o),[x,S]=(0,V.useState)(void 0),[C,w]=(0,V.useState)(void 0),[T,E]=(0,V.useState)(void 0),[D,O]=(0,V.useState)(void 0),[k,A]=(0,V.useState)(0);(0,V.useEffect)(()=>{if(n){let e=n(()=>{A(e=>e+1)});return()=>{typeof e==`function`&&e()}}},[n]),(0,V.useEffect)(()=>{let e=!1;if(O(void 0),S(void 0),w(void 0),E(void 0),!y.error&&!(s||b||_.length>0)&&t){if(ip(y)){let n,r=y.target===`session`,i=a=>{t.runFind(y).then(t=>{e||(w(t),r&&(t.runs??[]).length===0&&a<4&&(n=setTimeout(()=>{e||i(a+1)},[50,150,350,750][a]??500)))}).catch(t=>{e||O(t instanceof Error?t.message:String(t))})};return i(0),()=>{e=!0,clearTimeout(n)}}if(op(y)){if(!t.runPipeline){O(`pipeline queries are not supported by this executor`);return}return t.runPipeline(g).then(t=>{e||E(t)}).catch(t=>{e||O(t instanceof Error?t.message:String(t))}),()=>{e=!0}}return t.runQuery(g).then(t=>{e||S(t)}).catch(t=>{e||O(t instanceof Error?t.message:String(t))}),()=>{e=!0}}},[g,y,s,b,_,t,k]);let j=r!==void 0&&!a,M=j?()=>m(!0):void 0,N=(0,V.useMemo)(()=>{if(!(!ip(y)||y.target!==`session`))return y.filters.find(e=>e.key===`result`)?.values[0]?.value},[y]);return(0,H.jsxs)(`div`,{"data-testid":`query-block-view`,children:[s?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsx)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:s})}):b?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsx)(Fy,{message:Gh(o)})}):_.length>0?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsx)(Fy,{message:Kh(_)})}):y.error?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsxs)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:[`Query syntax error: `,y.error]})}):D?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsxs)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:[`Query execution error: `,D]})}):ip(y)?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:C?.table?(0,H.jsx)(Ny,{type:`table`,result:C}):N&&C?.runs&&C.runs.length>0?(0,H.jsx)(Db,{resultId:N,sessionResult:C,executor:t,onCaptureRpe:u,onCaptured:()=>A(e=>e+1)}):C?.runs?(0,H.jsx)(Cb,{result:C}):C?(0,H.jsx)(iS,{target:y.target,notes:C.notes,blocks:C.blocks,containers:C.containers,onOpenNote:d,noteHref:f}):(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading rows…`})}):op(y)?(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsx)(aS,{result:T,onOpenNote:d,noteHref:f,widgetType:o,attributes:v,fallbackLabel:y.raw})}):(0,H.jsx)(oS,{onEdit:M,readOnly:a,children:(0,H.jsx)(nS,{result:x,metric:y.metric,widgetType:o,attributes:v})}),j&&(0,H.jsx)(eS,{isOpen:p,onClose:()=>m(!1),initialQuery:g,executor:t,onApply:e=>r(e)})]})}function nS({result:e,metric:t,widgetType:n,attributes:r}){let i=fy(e);return n!=null&&n!==``?(0,H.jsx)(Ny,{type:n,result:e,label:t,attributes:r}):i.kind===`scalar`?(0,H.jsx)(my,{result:e,label:t}):i.kind===`timeseries`?(0,H.jsx)(xy,{result:e}):i.kind===`bars`?(0,H.jsx)(Sy,{result:e}):(0,H.jsx)(py,{result:e})}function rS(e){if(!e||e.kind!==`page`)return;let{slug:t,date:n}=e;if(t)return`/p/${encodeURIComponent(t)}`;if(n)return`/journal/${encodeURIComponent(n)}`}function iS({target:e,notes:t,blocks:n,containers:r,onOpenNote:i,noteHref:a}){let o=e===`block`,s=o?n:t;return s.length===0?(0,H.jsxs)(`div`,{className:`text-xs text-muted-foreground py-2`,children:[`No `,e,`s matched this query.`]}):(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsxs)(`div`,{className:`text-[11px] font-medium text-muted-foreground mb-1`,children:[s.length,` `,e,s.length===1?``:`s`,` matched`]}),(0,H.jsx)(`ul`,{className:`space-y-0.5 max-h-48 overflow-y-auto font-mono text-xs`,children:s.map(e=>{let t=e,n=o?t.title||t.blockContentId||e.id:t.title||e.id,s=r?rS(r[e.id])??(a?a(t):void 0):a?a(t):void 0;return(0,H.jsx)(`li`,{className:`rounded hover:bg-muted/50 truncate`,children:s?(0,H.jsx)(`a`,{href:s,onClick:e=>{i&&(e.preventDefault(),i(t))},className:`block py-0.5 px-1.5 text-primary hover:underline truncate`,children:n}):i?(0,H.jsx)(`button`,{type:`button`,onClick:()=>i(t),className:`w-full text-left py-0.5 px-1.5 text-primary hover:underline truncate`,children:n}):(0,H.jsx)(`span`,{className:`block py-0.5 px-1.5 text-foreground truncate`,children:n})},e.id)})})]})}function aS({result:e,onOpenNote:t,noteHref:n,widgetType:r,attributes:i,fallbackLabel:a}){if(!e)return(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading…`});if(e.error)return(0,H.jsxs)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:[`Query execution error: `,e.error]});let o=e.parsed.source.kind===`query`&&e.parsed.source.query.family===`find`?e.parsed.source.query.target:`note`;if((e.notes?.length??0)+(e.blocks?.length??0)>0)return(0,H.jsx)(iS,{target:o,notes:e.notes??[],blocks:e.blocks??[],containers:e.containers,onOpenNote:t,noteHref:n});if(e.runs&&e.runs.length>0){let t={parsed:e.parsed,runs:e.runs,table:e.table};return(0,H.jsx)(Cb,{result:t})}let s=r!=null&&r!==``?r:e.chart?.head;if(s){let t=Object.fromEntries((e.chart?.filters??[]).map(e=>[e.key,e.values.map(e=>e.value).join(`,`)]));return(0,H.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,H.jsx)(Ny,{type:s,result:hy(e),label:a,attributes:{...t,...i}})})}return e.series&&e.series.length>0?(0,H.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,H.jsx)(nS,{result:hy(e),metric:a})}):(0,H.jsx)(py,{result:hy(e)})}function oS({children:e,onEdit:t,readOnly:n}){return(0,H.jsxs)(`div`,{className:`relative group/block my-2 p-3 rounded-lg border border-border/80 bg-card/60 shadow-sm`,children:[t&&!n&&(0,H.jsx)(`button`,{type:`button`,onClick:t,title:`Edit query in Omni-Composer`,className:`absolute top-2 right-2 p-1 rounded bg-muted/80 text-muted-foreground hover:text-foreground opacity-0 group-hover/block:opacity-100 focus-visible:opacity-100 [@media(pointer:coarse)]:opacity-100 transition-opacity z-10`,children:(0,H.jsx)(hn,{className:`w-3.5 h-3.5`})}),e]})}function sS(e){let t=Pr.theme({"&":{height:`auto`,minHeight:`100%`,width:`100%`,maxWidth:`100%`,boxSizing:`border-box`,fontSize:`14px`,textAlign:`left`},"&.cm-focused":{outline:`none`},".cm-scroller":{overflow:`visible`,width:`100%`,maxWidth:`100%`,boxSizing:`border-box`},".cm-content":{fontFamily:`JetBrains Mono, ui-monospace, SFMono-Regular, monospace`,lineHeight:`22px`,padding:`0`,margin:`0 3px`,textAlign:`left`},".cm-gutters":{backgroundColor:e?`#252841`:`transparent`,color:e?`#A0AEC0`:`#717D96`,border:`none`,padding:`0`},".cm-activeLine":{backgroundColor:e?`rgba(165, 180, 252, 0.08)`:`rgba(129, 140, 248, 0.08)`},".cm-activeLineGutter":{backgroundColor:e?`rgba(165, 180, 252, 0.08)`:`rgba(129, 140, 248, 0.08)`},"&.cm-focused .cm-selectionBackground":{backgroundColor:e?`rgba(165, 180, 252, 0.3)`:`rgba(129, 140, 248, 0.35)`},".cm-selectionBackground":{backgroundColor:e?`rgba(100, 160, 255, 0.20)`:`rgba(30, 100, 230, 0.25)`},"::selection":{backgroundColor:e?`rgba(100, 160, 255, 0.35) !important`:`rgba(30, 100, 230, 0.50) !important`}},{dark:e});return e?[ui,t]:[t]}var cS=Yr.fromClass(class{decorations;constructor(e){this.decorations=this.getDecorations(e)}update(e){(e.docChanged||e.viewportChanged)&&(this.decorations=this.getDecorations(e.view))}getDecorations(e){let t=new Ei,{doc:n}=e.state;for(let r=1;r<=n.lines;r++){let i=n.line(r),a=i.text,o=a.trim(),s=null,c=a.match(/^(#{1,6})\s+(.*)$/);if(c){let e=c[2].trim(),t=e.match(/(\d{1,2}:\d{2})/);if(t){let n=t[1];e=e.replace(n,``).replace(/\s+/g,` `).trim(),e||=n}s=e.toLowerCase().replace(/[^\w]+/g,`-`)}else/^```(time|log)/.test(o)&&(s=`workout-line-${r}`);s&&i.from>=e.viewport.from&&i.to<=e.viewport.to&&t.add(i.from,i.from,Jr.line({attributes:{id:s}}))}return t.finish()}},{decorations:e=>e.decorations}),lS=ti.define({combine(e){return e.length>0?e[e.length-1]:null}});function uS(e){return/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e)}function dS(e,t){let n=Wr(e.state),r=null;return n.cursorAt(t).iterate(t=>{if(t.name===`URL`){let n=e.state.doc.sliceString(t.from,t.to);if(uS(n))return r=n,!1}if(t.name===`Autolink`){let n=e.state.doc.sliceString(t.from,t.to);if(n.startsWith(`<`)&&n.endsWith(`>`)&&(n=n.slice(1,-1)),uS(n))return r=n,!1}}),r}var fS=[Ur((e,t)=>dS(e,t)?{pos:t,end:t,above:!0,create(){let e=document.createElement(`div`);return e.className=`cm-link-tooltip px-2 py-1 text-[11px] text-muted-foreground bg-popover border border-border rounded shadow-sm flex items-center gap-1.5`,e.innerHTML=`<kbd class="px-1 py-0.5 rounded bg-muted border border-border/70 font-mono text-[10px]">Ctrl</kbd><span>+Click to open link</span>`,{dom:e}}}:null,{hoverTime:300}),Yr.fromClass(class{handler;view;constructor(e){this.view=e,this.handler=t=>{if(!(t.ctrlKey||t.metaKey)||t.button!==0)return;let n=e.posAtCoords({x:t.clientX,y:t.clientY});if(n==null)return;let r=dS(e,n);if(!r)return;t.preventDefault(),t.stopPropagation();let i=e.state.facet(lS);i?i(r,e):typeof window<`u`&&window.open(r,`_blank`,`noopener,noreferrer`)},e.dom.addEventListener(`mousedown`,this.handler,!0)}destroy(){this.view.dom.removeEventListener(`mousedown`,this.handler,!0)}update(e){}}),Pr.domEventHandlers({mousemove(e,t){let n=t.posAtCoords({x:e.clientX,y:e.clientY});if(n==null)return!1;let r=dS(t,n);return t.dom.style.cursor=r&&(e.ctrlKey||e.metaKey)?`pointer`:``,!1},keydown(e,t){return t.dom.style.cursor=``,!1}})],pS=ti.define({combine:e=>e[0]}),mS=ti.define({combine:e=>e.length?e.flat():void 0}),hS=ii.define(),gS=ii.define(),_S=ii.define(),vS=ii.define(),yS=ii.define({map(e,t){let n={};for(let r of Object.values(e.blocks)){let e=t.mapPos(r.from,1),i=t.mapPos(r.to,-1);e<i&&(n[r.id]={...r,from:e,to:i})}return{rawContent:e.rawContent,blocks:n}}});function bS(e){let t=[0],n=[0],r=0;for(let i of e.matchAll(/\r\n|\r|\n/g))r+=i[0].length-1,t.push(i.index+i[0].length),n.push(i.index+i[0].length-r);return{rawStarts:t,editorStarts:n}}function xS(e,t,n){let r=e.doc.lineAt(n);return t[r.number-1]+n-r.from}function SS(e){let t={};for(let n of Object.values(e.noteBlocks)){let r=e.sections.find(e=>e.id===n.id);r&&(t[n.id]={...n,from:r.from,to:r.to})}return t}function CS(e,t,n,r,i,a=[]){let o=e.facet(mS),s=Aa(t,{sourceRevision:n,blocks:r,registeredWidgets:o}),c=bS(t),l=Oa(t,{registeredWidgets:o}).map(e=>{let t=c.editorStarts[e.startLine],n=c.editorStarts[e.endLine]+e.to-c.rawStarts[e.endLine],r=ka(e)?Object.values(s).find(t=>t.from===e.from&&t.to===e.to):void 0,i=a.find(r=>r.from===t&&r.to===n&&r.type===(e.type===`title`?`markdown`:e.type)),o=e.querySuffix?Jh(e.querySuffix):void 0,l=e.subtype;return{id:r?.id??i?.id??e.id,type:e.type===`title`?`markdown`:e.type,...l===`heading`||l===`paragraph`||l===`list`||l===`blockquote`||l===`table`?{subtype:l}:{},from:t,to:n,startLine:e.startLine+1,endLine:e.endLine+1,...e.contentFrom===void 0?{}:{contentFrom:c.editorStarts[e.startLine+1]??n},...e.contentTo===void 0?{}:{contentTo:c.editorStarts[e.endLine]-+(e.type===`frontmatter`)},sport:e.sport,widgetName:e.widgetName,contentId:e.contentId,queryType:o?.type,queryError:o?.error,embed:e.embed}});for(let e of Object.values(s))e.version=i[e.id]??e.version;return{sections:l,rawContent:t,sourceRevision:n,noteBlocks:s,savedVersions:i}}var wS=hi.define({create(e){let t=e.facet(pS),n=t?.rawContent??e.doc.toString();if(n.replace(/\r\n|\r/g,`
56
+ `)!==e.doc.toString())throw Error(`Editor source and identity map disagree`);t&&ja(n,t.blocks,t.sourceRevision,{registeredWidgets:e.facet(mS)});let r=Object.fromEntries(Object.values(t?.blocks??{}).map(e=>[e.id,e.version]));return CS(e,n,t?.sourceRevision??1,t?.blocks??{},r)},update(e,t){let n=e.rawContent,r=e.noteBlocks,i=e.sourceRevision,a=e.savedVersions;if(t.docChanged){let{rawStarts:i}=bS(n),a=[],o=n.includes(`\r
57
+ `)?`\r
58
+ `:n.includes(`\r`)?`\r`:`
59
+ `;t.changes.iterChanges((e,n,r,s)=>a.push({from:xS(t.startState,i,e),to:xS(t.startState,i,n),insert:t.newDoc.sliceString(r,s,o)})),r=Ma(r,a);for(let e=a.length-1;e>=0;e--){let t=a[e];n=n.slice(0,t.from)+t.insert+n.slice(t.to)}if(t.isUserEvent(`move.drop`)){let i=[];t.changes.iterChanges((e,t,n,r)=>i.push({fromA:e,toA:t,fromB:n,toB:r}));let a=i.filter(e=>e.toA>e.fromA&&e.fromB===e.toB),o=i.filter(e=>e.fromA===e.toA&&e.toB>e.fromB);if(a.length===1&&o.length===1){let i=a[0],s=o[0];if(t.startState.doc.sliceString(i.fromA,i.toA)===t.newDoc.sliceString(s.fromB,s.toB)){let a=bS(n).rawStarts;for(let n of e.sections){let o=e.noteBlocks[n.id];o&&n.from>=i.fromA&&n.to<=i.toA&&(r[o.id]={...o,from:xS(t.state,a,s.fromB+n.from-i.fromA),to:xS(t.state,a,s.fromB+n.to-i.fromA)})}}}}if(t.isUserEvent(`move.line`)){let i=bS(n).rawStarts;for(let n=0;n<t.startState.selection.ranges.length;n++){let a=t.startState.selection.ranges[n],o=t.newSelection.ranges[n];if(!o)continue;let s=t.startState.doc.lineAt(a.from),c=t.startState.doc.lineAt(a.to>a.from&&t.startState.doc.lineAt(a.to).from===a.to?a.to-1:a.to),l=o.anchor-a.anchor;for(let n of e.sections){let a=e.noteBlocks[n.id];a&&n.from>=s.from&&n.to<=c.to&&(r[a.id]={...a,from:xS(t.state,i,n.from+l),to:xS(t.state,i,n.to+l)})}}}}for(let o of t.effects){if(o.is(gS)){i=Math.max(i,o.value.sourceRevision),a={...a};for(let e of Object.values(o.value.blocks))a[e.id]=Math.max(a[e.id]??1,e.version)}if(o.is(_S)){if(o.value.rawContent.replace(/\r\n|\r/g,`
60
+ `)!==t.newDoc.toString())throw Error(`Restored source does not match editor`);ja(o.value.rawContent,o.value.blocks,o.value.sourceRevision,{registeredWidgets:t.state.facet(mS)}),n=o.value.rawContent,r=o.value.blocks,i=o.value.sourceRevision,a={...a,...Object.fromEntries(Object.values(r).map(e=>[e.id,e.version]))}}if(o.is(yS)){if(t.effects.some(e=>e.is(yS)&&e.value.rawContent.replace(/\r\n|\r/g,`
61
+ `)===t.newDoc.toString())&&o.value.rawContent.replace(/\r\n|\r/g,`
62
+ `)!==t.newDoc.toString())continue;o.value.rawContent.replace(/\r\n|\r/g,`
63
+ `)===t.newDoc.toString()&&(n=o.value.rawContent);let{rawStarts:e}=bS(n);r=Object.fromEntries(Object.values(o.value.blocks).map(n=>[n.id,{...n,from:xS(t.state,e,n.from),to:xS(t.state,e,n.to)}]))}if(o.is(vS)){let i=e.noteBlocks[o.value.id];if(!i||r[i.id])throw Error(`Explicit move must remove the original occurrence`);let{rawStarts:a}=bS(n),s=xS(t.state,a,o.value.from),c=xS(t.state,a,o.value.to);if(n.slice(s,c)!==e.rawContent.slice(i.from,i.to))throw Error(`Explicit move changed source`);r={...r,[i.id]:{...i,from:s,to:c}}}}if(t.docChanged||t.effects.some(e=>e.is(hS)||e.is(_S)||e.is(gS)||e.is(yS))){let o=e.sections.map(e=>({...e,from:t.changes.mapPos(e.from,1),to:t.changes.mapPos(e.to,-1)}));return CS(t.state,n,i,r,a,o)}return e}}),TS=$r.of(e=>{let t=e.startState.field(wS,!1);return t&&e.docChanged?[yS.of({rawContent:t.rawContent,blocks:SS(t)})]:[]});function ES(e,t){return e.field(wS).sections.find(e=>t>=e.from&&t<=e.to)??null}function DS(e){return ES(e,e.selection.main.head)}function OS(e,t){if(!e.trim())return[];let n=e.endsWith(`
64
+ `)?e:e+`
65
+ `,r=di.create({doc:n,extensions:[ys]}),i=Wr(r),a=[];return i.iterate({enter(e){if(e.type.isError){let n=t+e.from,r=t+Math.max(e.to,e.from+1);a.push({from:n,to:Math.min(r,n+50),severity:`error`,message:`Syntax error in Whiteboard Script`})}}}),a}function kS(e){let{sections:t}=e.state.field(wS,!1)??{sections:[]},n=[];for(let r of t){if(r.type!==`time`&&r.type!==`log`||r.contentFrom===void 0||r.contentTo===void 0)continue;let t=OS(e.state.doc.sliceString(r.contentFrom,r.contentTo),r.contentFrom);n.push(...t)}return n}var AS=Ti(kS,{delay:500}),jS=[{label:"```time",detail:`Whiteboard Script (timer)`,type:`keyword`,apply:pi("```time\n${}\n```"),boost:90},{label:"```log",detail:`Whiteboard Script (log/completed)`,type:`keyword`,apply:pi("```log\n${}\n```"),boost:85},{label:"```query",detail:`WQL Analytics Query`,type:`keyword`,apply:pi("```query\n${}\n```"),boost:80},{label:"```widget",detail:`Custom React Widget`,type:`keyword`,apply:pi("```widget:${name}\n${}\n```"),boost:75}];function MS(e){let t=e.state.doc.lineAt(e.pos);if(!t.text.slice(0,e.pos-t.from).match(/^`{1,3}(\w*)$/))return null;let n=DS(e.state);return n&&n.type!==`markdown`?null:{from:t.from,options:jS,validFor:/^`{1,3}\w*$/}}function NS(e){if(e.state.readOnly)return!1;let{from:t,to:n}=e.state.selection.main,r=e.state.doc.sliceString(t,n);return r?e.dispatch({changes:{from:t,to:n,insert:`\`\`\`time\n${r}\n\`\`\``}}):e.dispatch({changes:{from:t,insert:"```time\n\n```"},selection:{anchor:t+8}}),!0}function PS(e,t){if(t.state.readOnly||e.data!=="`")return!1;let{from:n,to:r}=t.state.selection.main;if(n===r)return!1;let i=t.state.doc.sliceString(n,r);return t.dispatch({changes:{from:n,to:r,insert:`\`\`\`time\n${i}\n\`\`\``}}),!0}var FS=Pr.domEventHandlers({beforeinput:PS}),IS=Dr.of([{key:`Mod-Shift-w`,run:NS}]),LS=[];function RS(e){LS.includes(e)||LS.push(e)}function zS(e){let t=LS.indexOf(e);t!==-1&&LS.splice(t,1)}var BS=ni({interactionDelay:0,activateOnCompletion:e=>e.type===`property`&&typeof e.apply==`string`&&e.apply.endsWith(`:
66
+ - `),override:[MS,async e=>{for(let t of LS){let n=await t(e);if(n)return n}return null}]}),VS=class{view;rects=[];docVersion=0;listeners=new Set;pendingNotify=null;constructor(e){this.view=e,this.measure()}update(e){e.docChanged&&this.docVersion++,(e.docChanged||e.geometryChanged)&&this.measure()}addListener(e){return this.listeners.add(e),e(this.rects,this.docVersion),()=>{this.listeners.delete(e)}}measure(){try{let e=this.view.state.field(wS,!1)?.sections??[],t=this.view.state.doc.length;this.rects=e.map(e=>{let n=Math.max(0,Math.min(e.from,t)),r=Math.max(0,Math.min(e.to,t)),i=0,a=20,o;try{let e=this.view.lineBlockAt(n),t=this.view.lineBlockAt(r);i=e.top,o=e.height,a=t.top+t.height}catch{}let s=Math.max(a-i,20);return{sectionId:e.id,top:i,height:s,firstLineHeight:o,type:e.type,subtype:e.subtype,widgetName:e.widgetName}}),this.notify()}catch{}}notify(){if(typeof requestAnimationFrame==`function`){if(this.pendingNotify!==null)return;this.pendingNotify=requestAnimationFrame(()=>{this.pendingNotify=null;for(let e of this.listeners)e(this.rects,this.docVersion)})}else for(let e of this.listeners)e(this.rects,this.docVersion)}destroy(){this.pendingNotify!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.pendingNotify),this.listeners.clear()}},HS=Yr.fromClass(VS),US=class extends Nr{eq(e){return!0}toDOM(){let e=document.createElement(`div`);return e.className=`cm-wod-block-footer`,e}get estimatedHeight(){return 28}get block(){return!0}},WS=class extends Nr{eq(e){return!0}toDOM(){let e=document.createElement(`div`);return e.className=`cm-wod-insert-spacer`,e}get estimatedHeight(){return 28}get block(){return!0}},GS=new US,KS=new WS,qS=Jr.line({attributes:{class:`cm-wod-fence cm-wod-fence-open`}}),JS=Jr.line({attributes:{class:`cm-wod-fence cm-wod-fence-close`}}),YS=Jr.line({attributes:{class:`cm-wod-inner`}});function XS(e){let t=new Ei,{sections:n}=e.field(wS),r=e.selection.main.head,i=e.doc.lineAt(r).number;for(let r of n){if(r.type!==`time`&&r.type!==`log`)continue;let n=i>r.startLine&&i<r.endLine,a=e.doc.line(r.startLine),o=e.doc.line(r.endLine);if(r.endLine<=r.startLine){t.add(a.from,a.from,qS);continue}t.add(a.from,a.from,qS);for(let a=r.startLine+1;a<r.endLine;a++){let r=e.doc.line(a);t.add(r.from,r.from,YS),n&&a===i&&t.add(r.to,r.to,Jr.widget({widget:KS,block:!0,side:1}))}n||t.add(o.from,o.from,Jr.widget({widget:GS,block:!0,side:-1})),t.add(o.from,o.from,JS)}return t.finish()}var ZS=[hi.define({create(e){return XS(e)},update(e,t){return t.docChanged||t.selection?XS(t.state):e},provide:e=>Pr.decorations.from(e)}),Pr.baseTheme({".cm-wod-fence":{opacity:`0.5`,fontSize:`0.85em`,color:`hsl(var(--metric-time))`,paddingLeft:`8px`,paddingRight:`8px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`},".cm-wod-fence-open":{borderTop:`1px solid hsl(var(--border) / 0.5)`,borderRadius:`6px 6px 0 0`,paddingTop:`26px`,backgroundColor:`transparent`,backgroundImage:`linear-gradient(to bottom, transparent 27px, rgba(128, 128, 128, 0.05) 27px)`},".cm-wod-fence-close":{borderBottom:`1px solid hsl(var(--border) / 0.5)`,borderRadius:`0 0 6px 6px`},".cm-wod-inner":{paddingLeft:`8px`,paddingRight:`8px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`},".cm-wod-block-footer":{height:`28px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`,pointerEvents:`none`},".cm-wod-insert-spacer":{height:`28px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`,pointerEvents:`none`}})],QS=class extends Nr{height;constructor(e){super(),this.height=e}eq(e){return e.height===this.height}toDOM(){let e=document.createElement(`div`);return e.className=`cm-embed-spacer`,e.style.height=`${this.height}px`,e.style.pointerEvents=`none`,e}get estimatedHeight(){return this.height}get block(){return!0}};function $S(e){let t=new Ei,{sections:n}=e.field(wS);for(let r of n)if(r.type===`embed`&&r.embed?.height){let n=e.doc.line(r.startLine);t.add(n.from,n.from,Jr.widget({widget:new QS(r.embed.height),side:1}))}return t.finish()}var eC=[hi.define({create(e){return $S(e)},update(e,t){return t.docChanged?$S(t.state):e},provide:e=>Pr.decorations.from(e)})],tC=ti.define({combine:e=>e[0]??null}),nC=ti.define({combine:e=>e[0]??!0}),rC=new WeakMap,iC=new WeakMap,aC=0;function oC(e){return[`tag`,`tags`,`category`].includes(e.trim().toLowerCase())}function sC(e,t,n,r,i,a,o){let s=t.state.facet(tC);if(!s||!e.parentElement)return;let c=e.parentElement;c.classList.add(`relative`);let l=document.createElement(`div`);l.id=`frontmatter-suggestions-${++aC}`,l.setAttribute(`role`,`listbox`),l.className=`absolute left-0 top-full z-50 max-h-48 overflow-auto rounded-md border border-border bg-background shadow-md min-w-full text-xs`,l.hidden=!0,c.appendChild(l),e.setAttribute(`role`,`combobox`),e.setAttribute(`aria-autocomplete`,`list`),e.setAttribute(`aria-controls`,l.id),e.setAttribute(`aria-expanded`,`false`);let u=0,d=[],f=-1,p=()=>{u++,d=[],f=-1,l.hidden=!0,e.setAttribute(`aria-expanded`,`false`),e.removeAttribute(`aria-activedescendant`)},m=t=>{e.value=t,p(),o()},h=t=>{f=t,Array.from(l.children).forEach((e,t)=>{e.setAttribute(`aria-selected`,String(t===f)),e.classList.toggle(`bg-muted`,t===f)});let n=l.children[f];n&&(e.setAttribute(`aria-activedescendant`,n.id),n instanceof HTMLElement&&n.scrollIntoView?.({block:`nearest`}))},g=async(t=!1)=>{p();let n=++u,o=t?``:e.value.trim().toLowerCase();try{let t=await s();if(n!==u||!e.isConnected||document.activeElement!==e)return;let c=r===`key`?t.types:t.tags.filter(e=>oC(i)||e.type?.toLowerCase()===i.trim().toLowerCase()).map(e=>e.label),p=new Set(a.map(e=>e.toLowerCase()));d=[...new Set(c)].filter(e=>e.toLowerCase().includes(o)&&!p.has(e.toLowerCase())),f=-1,e.removeAttribute(`aria-activedescendant`),l.replaceChildren(),d.forEach((e,t)=>{let n=document.createElement(`div`);n.id=`${l.id}-${t}`,n.setAttribute(`role`,`option`),n.setAttribute(`aria-selected`,`false`),n.className=`cursor-pointer px-2 py-1.5 hover:bg-muted`,n.textContent=e,n.addEventListener(`mousedown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>m(e)),l.appendChild(n)}),l.hidden=d.length===0,e.setAttribute(`aria-expanded`,String(d.length>0))}catch{n===u&&p()}};e.addEventListener(`focus`,()=>void g(!0)),e.addEventListener(`input`,()=>void g(!1)),e.addEventListener(`blur`,p),e.addEventListener(`keydown`,e=>{if(e.ctrlKey&&(e.code===`Space`||e.key===` `))e.preventDefault(),g(!0);else if(e.key===`Escape`)e.preventDefault(),p();else if((e.key===`ArrowDown`||e.key===`ArrowUp`)&&d.length){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;h(f<0?t===1?0:d.length-1:(f+t+d.length)%d.length)}else(e.key===`Enter`||e.key===`Tab`)&&f>=0&&(e.preventDefault(),m(d[f]))}),iC.get(n)?.push(p)}function cC(e){if(Array.isArray(e))return e.map(String).map(e=>e.trim()).filter(Boolean);if(typeof e==`string`&&e.trim()){let t=e.trim();return t.startsWith(`[`)&&t.endsWith(`]`)?t.slice(1,-1).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(Boolean):[t.replace(/^['"]|['"]$/g,``)]}return[]}function lC(e,t,n){if(e.state.readOnly)return;let{sections:r}=e.state.field(wS),i=r.find(e=>e.id===t&&e.type===`frontmatter`)||r.find(e=>e.type===`frontmatter`);if(!i){let t=dg(n);e.dispatch({changes:{from:0,to:0,insert:`---\n${t}\n---\n\n`}});return}let a=dg(n);i.contentFrom!==void 0&&i.contentTo!==void 0?e.dispatch({changes:{from:i.contentFrom,to:i.contentTo,insert:a}}):e.dispatch({changes:{from:i.from,to:i.to,insert:`---\n${a}\n---`}})}function uC(e,t,n,r){let i=document.createElement(`div`);i.className=`flex items-center min-h-[34px] border-b border-dashed border-border/60 last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,i.setAttribute(`data-frontmatter-tag-draft`,`true`);let a=document.createElement(`div`);a.className=`flex items-center gap-2 px-3 py-1.5 w-36 shrink-0 border-r border-dashed border-border/60 text-muted-foreground max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,a.appendChild(dC());let o=document.createElement(`span`);o.className=`truncate font-medium text-foreground/90`,o.textContent=n,a.appendChild(o),i.appendChild(a);let s=document.createElement(`div`);s.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`;let c=document.createElement(`input`);c.className=`flex-1 min-w-[70px] bg-transparent text-xs text-foreground outline-none px-1 py-0.5 placeholder:text-muted-foreground/40`,c.placeholder=`Add tag…`,c.setAttribute(`aria-label`,`Add tag to ${n}`),s.appendChild(c),i.appendChild(s);let l=!1,u=t=>{if(!l){if(l=!0,t){let e=c.value.trim().replace(/^,|,$/g,``);e&&r(e)}i.remove(),e.requestMeasure()}},d=()=>u(!0),f=()=>u(!1);return sC(c,e,t,`value`,n,[],d),c.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),f();return}e.defaultPrevented||(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),d())}),c.addEventListener(`blur`,()=>queueMicrotask(()=>{c.isConnected&&(c.value.trim()?d():f())})),i}function dC(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3.5 w-3.5 text-muted-foreground/70`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M12 2H2v10l9.29 9.29c.94.94 2.48.94 3.42 0l6.58-6.58c.94-.94.94-2.48 0-3.42L12 2Z`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`circle`);return n.setAttribute(`cx`,`7`),n.setAttribute(`cy`,`7`),n.setAttribute(`r`,`.5`),n.setAttribute(`fill`,`currentColor`),e.appendChild(n),e}function fC(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3.5 w-3.5 text-muted-foreground/70`);for(let t of[`6`,`12`,`18`]){let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`4`),n.setAttribute(`x2`,`20`),n.setAttribute(`y1`,t),n.setAttribute(`y2`,t),e.appendChild(n)}return e}function pC(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);t.setAttribute(`x1`,`12`),t.setAttribute(`x2`,`12`),t.setAttribute(`y1`,`5`),t.setAttribute(`y2`,`19`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);return n.setAttribute(`x1`,`5`),n.setAttribute(`x2`,`19`),n.setAttribute(`y1`,`12`),n.setAttribute(`y2`,`12`),e.appendChild(n),e}function mC(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M15 3h6v6`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`10`),n.setAttribute(`x2`,`21`),n.setAttribute(`y1`,`14`),n.setAttribute(`y2`,`3`),e.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`polyline`);return r.setAttribute(`points`,`21 14 21 3 10 3`),e.appendChild(r),e}function hC(e=`md`){let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`viewBox`,`0 0 24 24`),t.setAttribute(`fill`,`none`),t.setAttribute(`stroke`,`currentColor`),t.setAttribute(`stroke-width`,e===`sm`?`2.5`:`2`),t.setAttribute(`stroke-linecap`,`round`),t.setAttribute(`stroke-linejoin`,`round`),t.setAttribute(`class`,e===`sm`?`h-2.5 w-2.5`:`h-3.5 w-3.5`);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`18`),n.setAttribute(`x2`,`6`),n.setAttribute(`y1`,`6`),n.setAttribute(`y2`,`18`),t.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);return r.setAttribute(`x1`,`6`),r.setAttribute(`x2`,`18`),r.setAttribute(`y1`,`6`),r.setAttribute(`y2`,`18`),t.appendChild(r),t}var gC=class extends Nr{sectionId;rawContent;readOnly;constructor(e,t,n=!1){super(),typeof e==`string`?(this.sectionId=e,this.rawContent=t??``,this.readOnly=n):(this.sectionId=`legacy`,this.rawContent=dg(e),this.readOnly=n)}get props(){let e=lg(this.rawContent.replace(/^---\r?\n?/,``).replace(/\r?\n?---\r?$/,``)),t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?r.join(`, `):String(r??``);return t}eq(e){return this.sectionId===e.sectionId&&this.rawContent===e.rawContent&&this.readOnly===e.readOnly}ignoreEvent(){return!0}toDOM(e){let t=document.createElement(`div`);iC.set(t,[]),t.className=`cm-frontmatter-preview py-2 font-sans select-none`;let n=document.createElement(`div`);n.className=`text-xs font-medium text-muted-foreground mb-1.5 px-0.5`,n.textContent=`Properties`,t.appendChild(n);let r=document.createElement(`div`);r.className=`rounded-lg border border-border/80 bg-background/50 text-xs shadow-xs`,t.appendChild(r);let i=lg(this.rawContent.replace(/^---\r?\n?/,``).replace(/\r?\n?---\r?$/,``)),a=Object.entries(i);if(a.length===0){let e=document.createElement(`div`);e.className=`px-3 py-2 text-xs text-muted-foreground/60 italic`,e.textContent=`No properties`,r.appendChild(e)}for(let[n,o]of a){let s=oC(n),c=document.createElement(`div`);c.className=`flex items-center min-h-[34px] border-b border-dashed border-border/60 last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,r.appendChild(c);let l=document.createElement(`div`);if(l.className=`flex items-center gap-2 px-3 py-1.5 w-36 shrink-0 border-r border-dashed border-border/60 text-muted-foreground max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,l.appendChild(s?dC():fC()),this.readOnly){let e=document.createElement(`span`);e.className=`truncate font-medium text-foreground/90`,e.textContent=n,l.appendChild(e)}else{let r=document.createElement(`input`);r.className=`w-full bg-transparent text-xs text-foreground/90 font-medium outline-none truncate hover:bg-muted/30 focus:bg-background focus:ring-1 focus:ring-ring rounded px-1 -mx-1`,r.value=n,r.spellcheck=!1,r.setAttribute(`aria-label`,`Property name ${n}`);let o=n,s=()=>{let t=r.value.trim();if(!t||t===o){r.value=o;return}if(!/^[A-Za-z_][\w.-]*$/.test(t)||t in i){r.value=o;return}let n={};for(let[e,r]of Object.entries(i))e===o?n[t]=r:n[e]=r;delete i[o],i[t]=n[t],o=t,lC(e,this.sectionId,n)},c=()=>queueMicrotask(()=>{r.isConnected&&s()});r.addEventListener(`change`,c),l.appendChild(r),sC(r,e,t,`key`,n,a.map(([e])=>e),s),r.addEventListener(`blur`,c),r.addEventListener(`keydown`,e=>{e.defaultPrevented||e.key===`Enter`&&(e.preventDefault(),r.blur())});let u=rC.get(e);u?.kind===`key`&&u.key===n&&(setTimeout(()=>{r.isConnected&&(r.focus(),r.select())},0),rC.delete(e))}c.appendChild(l);let u=document.createElement(`div`);if(u.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`,s){let r=cC(o);for(let t=0;t<r.length;t++){let a=r[t],o=document.createElement(`span`);o.className=`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs font-medium bg-amber-500/10 text-amber-800 dark:text-amber-300 border border-amber-500/20 dark:border-amber-500/30`;let s=document.createElement(`span`);if(s.textContent=a,o.appendChild(s),!this.readOnly){let s=document.createElement(`button`);s.type=`button`,s.setAttribute(`aria-label`,`Remove tag ${a}`),s.className=`inline-flex items-center justify-center text-amber-700/60 hover:text-amber-950 dark:text-amber-400/60 dark:hover:text-amber-100 cursor-pointer`,s.appendChild(hC(`sm`)),s.addEventListener(`click`,a=>{a.preventDefault(),a.stopPropagation();let o=r.filter((e,n)=>n!==t);i[n]=o,lC(e,this.sectionId,i)}),o.appendChild(s)}u.appendChild(o)}if(!this.readOnly){let a=document.createElement(`input`);a.className=`flex-1 min-w-[70px] bg-transparent text-xs text-foreground outline-none px-1 py-0.5 placeholder:text-muted-foreground/40`,a.placeholder=r.length===0?`Add tags…`:`Add tag…`,a.setAttribute(`aria-label`,`Add tag to ${n}`);let o=()=>{let t=a.value.trim().replace(/^,|,$/g,``);t&&!r.some(e=>e.toLowerCase()===t.toLowerCase())&&(i[n]=[...r,t],a.value=``,rC.set(e,{kind:`tag`,key:n}),lC(e,this.sectionId,i))};u.appendChild(a),sC(a,e,t,`value`,n,r,o),a.addEventListener(`keydown`,t=>{t.defaultPrevented||(t.key===`Enter`||t.key===`,`?(t.preventDefault(),o()):t.key===`Backspace`&&!a.value&&r.length>0&&(t.preventDefault(),i[n]=r.slice(0,-1),rC.set(e,{kind:`tag`,key:n}),lC(e,this.sectionId,i)))}),a.addEventListener(`blur`,()=>queueMicrotask(()=>{a.isConnected&&a.value.trim()&&o()}));let s=rC.get(e);s?.kind===`tag`&&s.key===n&&(setTimeout(()=>{a.isConnected&&a.focus()},0),rC.delete(e))}}else{let r=Array.isArray(o)?o.join(`, `):String(o??``);if(this.readOnly){let e=document.createElement(`span`);e.className=`text-xs text-foreground py-0.5 truncate`,e.textContent=r,u.appendChild(e)}else{let a=document.createElement(`input`);a.className=`w-full bg-transparent text-xs text-foreground outline-none py-0.5 hover:bg-muted/20 focus:bg-background focus:ring-1 focus:ring-ring rounded px-1 -mx-1 transition-colors`,a.value=r,a.spellcheck=!1,a.setAttribute(`aria-label`,`Value for ${n}`);let o=r,s=()=>{let t=a.value.trim();if(t!==o){o=t;let r=Number(t);i[n]=t!==``&&!isNaN(r)?r:t,lC(e,this.sectionId,i)}},c=()=>queueMicrotask(()=>{a.isConnected&&s()});a.addEventListener(`change`,c),u.appendChild(a),sC(a,e,t,`value`,n,[r],s),a.addEventListener(`blur`,c),a.addEventListener(`keydown`,e=>{e.defaultPrevented||e.key===`Enter`&&(e.preventDefault(),a.blur())})}if(/^https?:\/\/\S+$/i.test(r)){let e=document.createElement(`a`);e.href=r,e.target=`_blank`,e.rel=`noopener noreferrer`,e.title=r,e.setAttribute(`aria-label`,`Open ${n} in new tab`),e.className=`shrink-0 inline-flex items-center justify-center text-muted-foreground/60 hover:text-foreground transition-colors cursor-pointer`,e.appendChild(mC()),u.appendChild(e)}}if(c.appendChild(u),!this.readOnly){let t=document.createElement(`div`);t.className=`flex items-center pr-2`;let r=document.createElement(`button`);r.type=`button`,r.setAttribute(`aria-label`,`Remove property ${n}`),r.className=`opacity-0 group-hover:opacity-100 text-muted-foreground/40 hover:text-destructive p-1 rounded transition-opacity cursor-pointer`,r.appendChild(hC(`md`)),r.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation();let r={...i};delete r[n],lC(e,this.sectionId,r)}),t.appendChild(r),c.appendChild(t)}}if(!this.readOnly){let n=a.find(([e])=>oC(e))?.[0],o=document.createElement(`div`);o.className=`mt-2 flex items-center gap-3`;let s=document.createElement(`button`);s.type=`button`,s.setAttribute(`aria-label`,`Add property`),s.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,s.appendChild(pC());let c=document.createElement(`span`);c.textContent=`Add property`,s.appendChild(c),s.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation();let n=`property`,r=1;for(;n in i;)r++,n=`property_${r}`;rC.set(e,{kind:`key`,key:n});let a={...i,[n]:``};lC(e,this.sectionId,a)}),o.appendChild(s);{let a=document.createElement(`button`);a.type=`button`,a.setAttribute(`aria-label`,`Add tag`),a.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,a.appendChild(pC());let s=document.createElement(`span`);s.textContent=`Add tag`,a.appendChild(s),a.addEventListener(`click`,a=>{if(a.preventDefault(),a.stopPropagation(),n){Array.from(t.querySelectorAll(`input`)).find(e=>e.getAttribute(`aria-label`)===`Add tag to ${n}`)?.focus();return}let o=t.querySelector(`[data-frontmatter-tag-draft] input`);if(o){o.focus();return}let s=uC(e,t,`tags`,t=>{rC.set(e,{kind:`tag`,key:`tags`}),lC(e,this.sectionId,{...i,tags:[t]})});r.appendChild(s),s.querySelector(`input`)?.focus(),e.requestMeasure()}),o.appendChild(a)}{let t=document.createElement(`button`);t.type=`button`,t.setAttribute(`aria-label`,`Edit YAML`),t.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`;let n=document.createElement(`span`);n.textContent=`Edit YAML`,t.appendChild(n),t.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation();let{sections:n}=e.state.field(wS),r=n.find(e=>e.id===this.sectionId&&e.type===`frontmatter`)||n.find(e=>e.type===`frontmatter`);r&&(e.dispatch({selection:{anchor:r.contentFrom??r.from},scrollIntoView:!0}),e.focus())}),o.appendChild(t)}t.appendChild(o)}return t}destroy(e){iC.get(e)?.forEach(e=>e()),iC.delete(e)}},_C=class extends Nr{eq(e){return!0}ignoreEvent(){return!0}toDOM(e){let t=document.createElement(`div`);t.className=`cm-frontmatter-preview py-2 font-sans select-none`;let n=document.createElement(`div`);n.className=`text-xs font-medium text-muted-foreground mb-1.5 px-0.5`,n.textContent=`Properties`,t.appendChild(n);let r=document.createElement(`div`);r.className=`flex items-center gap-3`;let i=document.createElement(`button`);i.type=`button`,i.setAttribute(`aria-label`,`Add property`),i.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,i.appendChild(pC());let a=document.createElement(`span`);a.textContent=`Add property`,i.appendChild(a),i.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),rC.set(e,{kind:`key`,key:`property`}),lC(e,`new`,{property:``})}),r.appendChild(i);let o=document.createElement(`button`);o.type=`button`,o.setAttribute(`aria-label`,`Add tag`),o.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,o.appendChild(pC());let s=document.createElement(`span`);return s.textContent=`Add tag`,o.appendChild(s),o.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation();let r=t.querySelector(`[data-frontmatter-tag-draft] input`);if(r){r.focus();return}let i=uC(e,t,`tags`,t=>{rC.set(e,{kind:`tag`,key:`tags`}),lC(e,`new`,{tags:[t]})});t.appendChild(i),i.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(o),t.appendChild(r),t}};function vC(e){let t=new Ei,{sections:n}=e.field(wS),r=e.facet(nC),i=!1;for(let a of n){if(a.type!==`frontmatter`)continue;if(i=!0,!r){let n=a.to<e.doc.length?a.to+1:a.to;t.add(a.from,n,Jr.replace({block:!0}));continue}if(!e.readOnly&&e.selection.ranges.some(e=>e.from<a.to&&e.to>a.from))continue;let n=e.doc.sliceString(a.from,a.to);t.add(a.from,a.to,Jr.replace({widget:new gC(a.id,n,e.readOnly),block:!0}))}return r&&!i&&!e.readOnly&&t.add(0,0,Jr.widget({widget:new _C,side:-1,block:!0})),t.finish()}var yC=[hi.define({create(e){return vC(e)},update(e,t){return t.docChanged||t.reconfigured||t.selection?vC(t.state):e},provide:e=>[Pr.decorations.from(e),Pr.atomicRanges.of(t=>t.state.facet(nC)?Jr.none:t.state.field(e))]})],bC=/^(#{1,6}) /,xC=/\*\*([^*\n]+)\*\*/g,SC=/(?<!\*)\*([^*\n]+)\*(?!\*)/g,CC=[1,2,3,4,5,6].map(e=>Jr.line({attributes:{class:`cm-md-heading cm-md-heading-${e}`}})),wC=Jr.replace({}),TC=Jr.mark({class:`cm-md-bold font-bold`}),EC=Jr.mark({class:`cm-md-italic italic`});function DC(e){let t=new Ei,{sections:n}=e.field(wS),r=e.selection.main.head;for(let i of n)if(i.type===`markdown`)for(let n=i.startLine;n<=i.endLine;n++){let i=e.doc.line(n),a=r>=i.from&&r<=i.to,o=i.text.match(bC);if(o){let e=o[1].length;t.add(i.from,i.from,CC[e-1]),a||t.add(i.from,i.from+o[0].length,wC)}if(!a){let e;for(xC.lastIndex=0;(e=xC.exec(i.text))!==null;){let n=i.from+e.index,r=n+e[0].length;t.add(n,n+2,wC),t.add(n+2,r-2,TC),t.add(r-2,r,wC)}for(SC.lastIndex=0;(e=SC.exec(i.text))!==null;){let n=i.from+e.index,r=n+e[0].length;t.add(n,n+1,wC),t.add(n+1,r-1,EC),t.add(r-1,r,wC)}}}return t.finish()}var OC=hi.define({create(e){return DC(e)},update(e,t){return t.docChanged||t.selection?DC(t.state):e},provide:e=>Pr.decorations.from(e)}),kC=Pr.baseTheme({".cm-md-heading-1":{fontSize:`1.3em`,fontWeight:`bold`},".cm-md-heading-2":{fontSize:`1.2em`,fontWeight:`bold`},".cm-md-heading-3":{fontSize:`1.1em`,fontWeight:`bold`}});function AC(){return[OC,kC]}function jC(e){return/^\|[\s:]*-+[\s:]*(\|[\s:]*-+[\s:]*)*\|$/.test(e.trim())}function MC(e){let t=e.trim();return(t.startsWith(`|`)&&t.endsWith(`|`)?t.slice(1,-1):t).split(`|`).map(e=>e.trim())}var NC=class extends Nr{head;rows;constructor(e,t){super(),this.head=e,this.rows=t}eq(e){return this.head.length!==e.head.length||this.rows.length!==e.rows.length?!1:this.head.every((t,n)=>t===e.head[n])}toDOM(){let e=document.createElement(`div`);e.className=`cm-table-preview my-2 overflow-auto border border-border/80 rounded-lg`;let t=document.createElement(`table`);t.className=`w-full text-xs font-mono border-collapse`;let n=document.createElement(`thead`),r=document.createElement(`tr`);r.className=`border-b border-border bg-muted/40 text-muted-foreground text-left`;for(let e of this.head){let t=document.createElement(`th`);t.className=`py-1.5 px-3 font-semibold`,t.textContent=e,r.appendChild(t)}n.appendChild(r),t.appendChild(n);let i=document.createElement(`tbody`);for(let e of this.rows){let t=document.createElement(`tr`);t.className=`border-b border-border/40 hover:bg-muted/20`;for(let n of e){let e=document.createElement(`td`);e.className=`py-1.5 px-3 text-foreground`,e.textContent=n,t.appendChild(e)}i.appendChild(t)}return t.appendChild(i),e.appendChild(t),e}};function PC(e,t){let n=[];for(let r=t.startLine;r<=t.endLine;r++){if(!e.doc.line(r).text.trim().startsWith(`|`))continue;let t=n[n.length-1];t&&t.toLine===r-1?t.toLine=r:n.push({fromLine:r,toLine:r})}for(let t of n){let n=[];for(let r=t.fromLine;r<=t.toLine;r++)n.push(e.doc.line(r).text);if(!(n.length<2||!jC(n[1].trim())))return{head:MC(n[0]),rows:n.slice(2).map(MC),fromLine:t.fromLine,toLine:t.toLine}}return null}function FC(e){let t=new Ei,{sections:n}=e.field(wS),r=e.selection.main.head;for(let i of n){if(i.type!==`markdown`)continue;let n=PC(e,i);if(!n)continue;let a=e.doc.line(n.fromLine).from,o=e.doc.line(n.toLine).to;r>=a&&r<=o||t.add(a,o,Jr.replace({widget:new NC(n.head,n.rows),block:!0}))}return t.finish()}var IC=[hi.define({create(e){return FC(e)},update(e,t){return t.docChanged||t.selection?FC(t.state):e},provide:e=>Pr.decorations.from(e)})],LC=/\[([^\]]*)\]\((https?:\/\/[^)\s]+)\)/g,RC=/https?:\/\/\S+/g,zC=/`[^`\n]*`/g,BC=/[.,;:!?)\]}>'"]$/;function VC(e){let t=e.match(/[?&]v=([a-zA-Z0-9_-]{11})/);if(t)return t[1];let n=e.match(/youtu\.be\/([a-zA-Z0-9_-]+)/);if(n)return n[1];let r=e.match(/youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/);return r?r[1]:null}function HC(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M15 3h6v6`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`10`),n.setAttribute(`x2`,`21`),n.setAttribute(`y1`,`14`),n.setAttribute(`y2`,`3`),e.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`polyline`);return r.setAttribute(`points`,`21 14 21 3 10 3`),e.appendChild(r),e}var UC=class extends Nr{label;url;constructor(e,t){super(),this.label=e,this.url=t}eq(e){return this.label===e.label&&this.url===e.url}toDOM(){let e=document.createElement(`span`);e.className=`cm-link-pill`;let t=document.createElement(`span`);t.className=`cm-link-pill-label`,t.textContent=this.label||this.url,e.appendChild(t);let n=document.createElement(`a`);return n.className=`cm-link-pill-open`,n.href=this.url,n.target=`_blank`,n.rel=`noopener noreferrer`,n.title=this.url,n.setAttribute(`aria-label`,`Open ${this.label||this.url} in new tab`),n.appendChild(HC()),e.appendChild(n),e}},WC=class extends Nr{videoId;title;constructor(e,t){super(),this.videoId=e,this.title=t}eq(e){return this.videoId===e.videoId&&this.title===e.title}toDOM(){let e=document.createElement(`div`);e.className=`cm-youtube-player`;let t=document.createElement(`iframe`);return t.className=`cm-youtube-player-frame`,t.src=`https://www.youtube-nocookie.com/embed/${encodeURIComponent(this.videoId)}`,t.title=this.title||`YouTube video`,t.setAttribute(`allow`,`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`),t.setAttribute(`allowfullscreen`,``),t.setAttribute(`loading`,`lazy`),e.appendChild(t),e}get block(){return!0}};function GC(e){let t=[],n=[],r;for(zC.lastIndex=0;(r=zC.exec(e.text))!==null;)n.push([r.index,r.index+r[0].length]);let i=e=>n.some(([t,n])=>e>=t&&e<n);for(LC.lastIndex=0;(r=LC.exec(e.text))!==null;)i(r.index)||t.push({from:e.from+r.index,to:e.from+r.index+r[0].length,label:r[1],url:r[2]});for(RC.lastIndex=0;(r=RC.exec(e.text))!==null;){if(i(r.index))continue;let n=r;if(t.some(t=>n.index>=t.from-e.from&&n.index<t.to-e.from))continue;let a=n[0];for(;BC.test(a);)a=a.slice(0,-1);a&&t.push({from:e.from+n.index,to:e.from+n.index+a.length,label:a,url:a})}return t.sort((e,t)=>e.from-t.from)}function KC(e){let t=new Ei,{sections:n}=e.field(wS),r=e.selection.main.head,i=e.readOnly;for(let a of n)if((a.type===`markdown`||a.type===`embed`)&&(a.type!==`markdown`||a.subtype!==`table`))for(let n=a.startLine;n<=a.endLine;n++){let a=e.doc.line(n);if(a.text.trim().startsWith(`|`)||!i&&r>=a.from&&r<=a.to)continue;let o=GC(a),s=a.text.trimStart(),c=a.text.length-s.length,l=a.text.length-a.text.trimEnd().length,u=c+(s.match(/^[-*+]\s+/)?.[0].length??0);for(let e of o){let n=o.length===1&&e.from===a.from+u&&e.to===a.to-l?VC(e.url):null;n?t.add(a.from,a.to,Jr.replace({widget:new WC(n,e.label),block:!0})):t.add(e.from,e.to,Jr.replace({widget:new UC(e.label,e.url)}))}}return t.finish()}var qC=[hi.define({create(e){return KC(e)},update(e,t){return t.docChanged||t.selection?KC(t.state):e},provide:e=>Pr.decorations.from(e)}),Pr.baseTheme({".cm-link-pill":{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`0 5px`,border:`1px solid hsl(var(--border))`,borderRadius:`6px`,backgroundColor:`hsl(var(--muted) / 0.35)`,maxWidth:`100%`},".cm-link-pill-label":{color:`hsl(var(--primary))`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},".cm-link-pill-open":{display:`inline-flex`,alignItems:`center`,flexShrink:`0`,color:`hsl(var(--muted-foreground))`,textDecoration:`none`,cursor:`pointer`},".cm-link-pill-open:hover":{color:`hsl(var(--primary))`},".cm-youtube-player":{width:`100%`,aspectRatio:`16 / 9`,margin:`8px 0`,backgroundColor:`#000`,borderRadius:`6px`,overflow:`hidden`},".cm-youtube-player-frame":{display:`block`,width:`100%`,height:`100%`,border:`none`}})],JC=ii.define(),YC=hi.define({create(){return new Set},update(e,t){for(let e of t.effects)if(e.is(JC))return e.value;return e}}),XC={runtime:`cm-gutter-runtime`,error:`cm-gutter-error`,warning:`cm-gutter-warning`,info:`cm-gutter-info`},ZC=class extends qr{kind;constructor(e){super(),this.kind=e}toDOM(){let e=document.createElement(`div`);return e.className=`cm-unified-gutter-marker ${XC[this.kind]}`,e}},QC=new Map([[`runtime`,new ZC(`runtime`)],[`error`,new ZC(`error`)],[`warning`,new ZC(`warning`)],[`info`,new ZC(`info`)]]),$C=[YC,Ir({class:`cm-unified-gutter`,markers(e){let t=new Ei,n=e.state.field(YC),r=new Map;for(let t of n)t>=1&&t<=e.state.doc.lines&&r.set(t,`runtime`);ei(e.state,t=>{let n=e.state.doc.lineAt(t.from).number;if(r.get(n)===`runtime`)return;let i=r.get(n);(!i||t.severity===`error`&&i!==`error`)&&r.set(n,t.severity)});let i=Array.from(r.keys()).sort((e,t)=>e-t);for(let n of i){let i=e.state.doc.line(n),a=QC.get(r.get(n));a&&t.add(i.from,i.from,a)}return t.finish()},initialSpacer:()=>new ZC(`info`)})];function ew(e,t){e.dispatch({effects:JC.of(new Set(t))})}var tw=ii.define(),nw=ii.define(),rw=ii.define(),iw=class extends Nr{height;constructor(e){super(),this.height=e}eq(e){return e.height===this.height}toDOM(){let e=document.createElement(`div`);return e.className=`cm-runtime-panel-spacer`,e.style.height=`${this.height}px`,e.style.pointerEvents=`none`,e}get block(){return!0}};function aw(e){let t=new Ei,n=Array.from(e.values()).sort((e,t)=>e.afterPos-t.afterPos);for(let e of n){let n=e.expanded?600:500;t.add(e.afterPos,e.afterPos,Jr.widget({widget:new iw(n),block:!0,side:1}))}return t.finish()}hi.define({create(){return new Map},update(e,t){let n=e;for(let e of t.effects)if(e.is(tw))n=new Map(n),n.set(e.value.sectionId,e.value);else if(e.is(nw))n.has(e.value.sectionId)&&(n=new Map(n),n.delete(e.value.sectionId));else if(e.is(rw)){let t=n.get(e.value.sectionId);t&&(n=new Map(n),n.set(e.value.sectionId,{...t,expanded:e.value.expanded}))}return n},provide:e=>Pr.decorations.compute([e],t=>aw(t.field(e)))});function ow(e){return`:session{result:${e}}`}function sw(e,t,n){let r=e.field(wS).sections.find(e=>e.id===t);return!r||r.type!==`time`&&r.type!==`log`?null:{from:r.to,insert:`\n\n\`\`\`query:table\n${ow(n)}\n\`\`\``}}function cw(e){let t=e.split(`:`);if(t.length<1||t.length>4)return null;let n=t.map(e=>parseInt(e,10));if(n.some(e=>isNaN(e)))return null;for(;n.length<4;)n.unshift(0);return n}function lw(e,t,n,r){let i=[];return e>0?i.push(e,t,n,r):t>0?i.push(t,n,r):n>0?i.push(n,r):i.push(r),i.map((e,t)=>t===0?String(e):String(e).padStart(2,`0`)).join(`:`)}function uw(e,t,n,r,i,a){let o=e*86400+t*3600+n*60+r,s=[86400,3600,60,1][i]??1;o=Math.max(0,o+a*s);let c=Math.floor(o/86400);o%=86400;let l=Math.floor(o/3600);return o%=3600,[c,l,Math.floor(o/60),o%60]}function dw(e,t){let n=/\b(\d{1,2}(?::\d{2}){1,3})\b/g,r;for(;(r=n.exec(e))!==null;){let e=r.index,n=e+r[0].length;if(t>=e&&t<=n){let i=r[0],a=Math.min(t-e,i.length-1),o=(i.slice(0,a).match(/:/g)||[]).length;return{timeStr:i,startCol:e,endCol:n,digitIndex:4-((i.match(/:/g)||[]).length+1)+o}}}return null}function fw(e,t){let n=e.state.selection.main,r=e.state.doc.lineAt(n.head),i=n.head-r.from,a=dw(r.text,i);if(!a)return!1;let o=cw(a.timeStr);if(!o)return!1;let[s,c,l,u]=uw(o[0],o[1],o[2],o[3],a.digitIndex,t),d=lw(s,c,l,u);return e.dispatch({changes:{from:r.from+a.startCol,to:r.from+a.endCol,insert:d}}),!0}var pw=Dr.of([{key:`Alt-ArrowUp`,run:e=>fw(e,1)},{key:`Alt-ArrowDown`,run:e=>fw(e,-1)}]),mw=[],hw={duration:`cm-metric-duration`,rep:`cm-metric-rep`,rounds:`cm-metric-rounds`,distance:`cm-metric-distance`,resistance:`cm-metric-resistance`,action:`cm-metric-action`,pace:`cm-metric-pace`,heart_rate:`cm-metric-heart_rate`,power:`cm-metric-power`,calories:`cm-metric-calories`};function gw(e,t){if(e.type!==`time`&&e.type!==`log`||e.contentFrom===void 0||e.contentTo===void 0)return null;let n=t.doc.sliceString(e.contentFrom,e.contentTo);try{return vs().read(n,e.sport).statements}catch{return null}}function _w(e){let t=new Ei,{sections:n}=e.field(wS),r=e.selection.main.head,i=e.doc.lineAt(r),a=null;for(let o of n){if(o.type!==`time`&&o.type!==`log`)continue;let n=gw(o,e);if(!n)continue;let s=r>=o.from&&r<=o.to;for(let r=0;r<n.length;r++){let c=n[r],l=o.startLine+1+r;if(l>=o.endLine)break;let u=e.doc.line(l),d=s&&i.number===l;for(let e=0;e<c.metrics.length;e++){let i=c.metrics[e],s=hw[i.type]||`cm-metric-generic`;t.add(u.from,u.to,Jr.mark({class:`cm-metric-mark ${s}`})),d&&!a&&(a={sectionId:o.id,section:o,lineFrom:u.from,docLine:l,statementIndex:r,statement:c,focusedMetric:i,focusedMetricIndex:e,allStatements:n})}}}return{focus:a,decos:t.finish()}}hi.define({create(e){return _w(e)},update(e,t){return _w(t.state)},provide:e=>Pr.decorations.from(e,e=>e.decos)});var vw=class extends Nr{queryText;sectionId;widgetType;widgetError;options;root=null;constructor(e,t,n,r,i){super(),this.queryText=e,this.sectionId=t,this.widgetType=n,this.widgetError=r,this.options=i}eq(e){return this.queryText===e.queryText&&this.sectionId===e.sectionId&&this.widgetType===e.widgetType&&this.widgetError===e.widgetError&&this.options?.readOnly===e.options?.readOnly&&this.options?.executor===e.options?.executor&&this.options?.onOpenNote===e.options?.onOpenNote&&this.options?.noteHref===e.options?.noteHref}toDOM(e){let t=document.createElement(`div`);t.className=`cm-query-block-preview my-2`;let n=(0,Ii.createRoot)(t);return this.root=n,n.render((0,H.jsx)(tS,{query:this.queryText,widgetType:this.widgetType,widgetError:this.widgetError,readOnly:this.options?.readOnly,executor:this.options?.executor,onResultSaved:this.options?.onResultSaved,onSaveQuery:t=>{if(this.options?.onSaveQuery)return this.options.onSaveQuery(this.sectionId,t);let n=bw(e,this.sectionId,t);if(!n.ok)throw Error(n.message)},onOpenNote:this.options?.onOpenNote,noteHref:this.options?.noteHref})),t}updateDOM(e,t){return this.root?(this.root.render((0,H.jsx)(tS,{query:this.queryText,widgetType:this.widgetType,widgetError:this.widgetError,readOnly:this.options?.readOnly,executor:this.options?.executor,onResultSaved:this.options?.onResultSaved,onOpenNote:this.options?.onOpenNote,noteHref:this.options?.noteHref,onSaveQuery:e=>{if(this.options?.onSaveQuery)return this.options.onSaveQuery(this.sectionId,e);let n=bw(t,this.sectionId,e);if(!n.ok)throw Error(n.message)}})),!0):!1}destroy(){this.root&&setTimeout(()=>{try{this.root?.unmount()}catch{}},0)}get block(){return!0}};function yw(e,t){let n=new Ei,{sections:r}=e.field(wS),i=e.selection.main.head;for(let a of r){if(a.type!==`query`||i>=a.from&&i<=a.to||a.contentFrom===void 0||a.contentTo===void 0)continue;let r=e.doc.sliceString(a.contentFrom,a.contentTo);n.add(a.from,a.to,Jr.replace({widget:new vw(r,a.id,a.queryType,a.queryError,t),block:!0}))}return n.finish()}function bw(e,t,n,r=0){if(e.state.readOnly)return{ok:!1,message:`Cannot modify query source in read-only mode.`};let i=xw(e,t);if(!i||i.contentFrom===void 0||i.contentTo===void 0)return{ok:!1,message:`Query block section not found`};let a=jb(e.state.doc.sliceString(i.contentFrom,i.contentTo),n,r);return e.dispatch({changes:{from:i.contentFrom,to:i.contentTo,insert:a}}),{ok:!0,patchedContent:a}}function xw(e,t){let{sections:n}=e.state.field(wS);return n.find(e=>e.id===t)??null}function Sw(e){return[hi.define({create(t){return yw(t,e)},update(t,n){return n.docChanged||n.selection?yw(n.state,e):t},provide:e=>Pr.decorations.from(e)})]}var Cw={view:`Edit widget`,editing:`Save widget`,error:`Undo changes`};function ww(e,t,n,r){return e===`editing`?n:e===`error`?r:t}function Tw(e){return e?`opacity-100 scale-100 rotate-0`:`pointer-events-none opacity-0 scale-75 -rotate-12`}var Ew=V.forwardRef(({mode:e,enterEditMode:t,onSave:n,onUndo:r,className:i,type:a=`button`,...s},c)=>{let l=Cw[e],u=ww(e,t,n,r);return(0,H.jsx)(`button`,{...s,ref:c,type:a,"aria-label":l,title:l,"data-mode":e,onClick:u,className:cy(`absolute right-2 top-2 inline-flex h-8 w-8 items-center justify-center rounded-full border border-border/80 bg-background/90 shadow-sm backdrop-blur-sm transition-all duration-200 ease-out hover:bg-muted/80 hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer`,e===`view`&&`text-muted-foreground hover:text-foreground`,e===`editing`&&`text-signal-positive hover:text-signal-positive/80`,e===`error`&&`text-signal-caution hover:text-signal-caution/80`,i),children:(0,H.jsxs)(`span`,{className:`relative h-4 w-4`,"aria-hidden":`true`,children:[(0,H.jsx)(o,{"data-icon-state":`view`,className:cy(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,Tw(e===`view`))}),(0,H.jsx)(le,{"data-icon-state":`editing`,className:cy(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,Tw(e===`editing`))}),(0,H.jsx)(Cr,{"data-icon-state":`error`,className:cy(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,Tw(e===`error`))})]})})});Ew.displayName=`WidgetEditButton`;var Dw=V.forwardRef(({className:e,hasError:t=!1,spellCheck:n=!1,...r},i)=>(0,H.jsx)(`textarea`,{...r,ref:i,spellCheck:n,className:cy(`min-h-[160px] w-full rounded-xl border bg-background px-4 py-3 font-mono text-sm leading-6 text-foreground shadow-sm outline-none transition-colors duration-200 ease-out placeholder:text-muted-foreground/70`,`focus:border-ring focus:ring-2 focus:ring-ring/20`,t?`border-destructive/70 focus:border-destructive focus:ring-destructive/20`:`border-border/70`,e)}));Dw.displayName=`EditableMarkdown`;var Ow=ii.define(),kw=hi.define({create:()=>new Set,update(e,t){let n=e;for(let e of t.effects)e.is(Ow)&&(n=new Set(n),e.value.editing?n.add(e.value.sectionId):n.delete(e.value.sectionId));return n}});function Aw(e){return e.endsWith(`
67
+ `)?e.slice(0,-1):e}function jw(e){return`${e.replace(/\n+$/,``)}\n`}function Mw(e){let t=e.trim();if(t.length===0)return{ok:!0,config:{}};try{let e=JSON.parse(t);return!e||Array.isArray(e)||typeof e!=`object`?{ok:!1,config:{},message:`Widget config must be a JSON object.`}:{ok:!0,config:e}}catch(e){return{ok:!1,config:{},message:e instanceof Error?e.message:`Invalid JSON.`}}}function Nw(e,t){let{sections:n}=e.state.field(wS);return n.find(e=>e.type===`widget`&&e.id===t)??null}function Pw(e,t,n){if(e.state.readOnly)return{ok:!1,config:{},message:`Cannot modify widget source in read-only mode.`};let r=Mw(n);if(!r.ok)return r;let i=Nw(e,t);return!i||i.contentFrom==null||i.contentTo==null?{ok:!1,config:{},message:`Unable to locate widget source in the editor.`}:(e.dispatch({changes:{from:i.contentFrom,to:i.contentTo,insert:jw(n)}}),r)}function Fw(e){return(0,H.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border/70 bg-muted/30 px-4 py-5 text-sm text-muted-foreground`,children:[(0,H.jsxs)(`span`,{className:`font-mono`,children:[`widget:`,e]}),(0,H.jsx)(`span`,{className:`ml-2 opacity-70`,children:`is not registered`})]})}function Iw(e,t){return(0,H.jsxs)(`div`,{className:`rounded-xl border border-destructive/30 bg-destructive/5 px-4 py-5 text-sm text-destructive shadow-sm`,children:[(0,H.jsx)(`p`,{className:`font-medium`,children:`Widget config error`}),(0,H.jsxs)(`p`,{className:`mt-1 font-mono text-xs leading-5 text-destructive/90`,children:[`widget:`,e]}),(0,H.jsx)(`p`,{className:`mt-2 font-mono text-xs leading-5 text-destructive/90`,children:t})]})}function Lw({widgetName:e,rawContent:t,sectionId:n,registry:r,view:i}){let a=V.useRef(null),o=V.useRef(null),s=V.useRef(null),c=V.useMemo(()=>Aw(t),[t]),[l,u]=V.useState(()=>({isEditing:!1,isDirty:!1,error:null,originalMarkdown:c,currentMarkdown:c,hasFocus:!1}));V.useEffect(()=>{u(e=>({...e,isEditing:!1,isDirty:!1,error:null,originalMarkdown:c,currentMarkdown:c}))},[c]),V.useEffect(()=>{if(!l.isEditing)return;let e=window.requestAnimationFrame(()=>{o.current?.focus();let e=o.current?.value.length??0;o.current?.setSelectionRange(e,e)});return()=>window.cancelAnimationFrame(e)},[l.isEditing]);let d=r.get(e),f=V.useMemo(()=>Mw(l.originalMarkdown),[l.originalMarkdown]),p=V.useCallback(e=>{u(t=>t.hasFocus===e?t:{...t,hasFocus:e})},[]),m=V.useCallback(()=>{u(e=>({...e,isEditing:!0,isDirty:!1,error:null,currentMarkdown:e.originalMarkdown}))},[]),h=V.useCallback(e=>{let t=Pw(i,n,e);if(!t?.ok)return u(e=>({...e,error:t?.message??`Invalid JSON.`})),!1;let r=Aw(jw(e));return u({isEditing:!1,isDirty:!1,error:null,originalMarkdown:r,currentMarkdown:r,hasFocus:!1}),!0},[i,n]),g=V.useCallback(()=>{h(o.current?.value??l.currentMarkdown)},[h,l.currentMarkdown]),_=V.useCallback(()=>{u(e=>({...e,isEditing:!1,isDirty:!1,error:null,currentMarkdown:e.originalMarkdown}))},[]),v=V.useCallback(e=>{let t=e.target.value;u(e=>{let n=e.error?Mw(t):null;return{...e,currentMarkdown:t,isDirty:t!==e.originalMarkdown,error:n?.ok===!1?n.message:n?.ok?null:e.error}})},[]),y=V.useCallback(()=>{p(!1);let e=o.current?.value;if(e===void 0)return;let t=Pw(i,n,e);if(!t?.ok){u(n=>({...n,isDirty:e!==n.originalMarkdown,error:t?.message??`Unable to save widget source.`}));return}let r=Aw(jw(e));u({isEditing:!1,isDirty:!1,error:null,originalMarkdown:r,currentMarkdown:r,hasFocus:!1})},[n,i,p]),b=V.useCallback(e=>{let t=e.relatedTarget;t instanceof Node&&a.current?.contains(t)||p(!1)},[p]),x=V.useCallback(e=>{e.key===`Enter`&&!l.isEditing&&(e.preventDefault(),m())},[m,l.isEditing]);V.useEffect(()=>{let e=s.current;if(e)return e.addEventListener(`keydown`,x),()=>e.removeEventListener(`keydown`,x)},[x]);let S=V.useCallback(e=>{e.key===`Escape`?(e.preventDefault(),_()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),g())},[g,_]),C=l.error?`error`:l.isEditing?`editing`:`view`,w=l.hasFocus||l.isEditing||l.error!==null,T;return T=d?f.ok?V.createElement(d,{config:f.config,rawContent:l.originalMarkdown,sectionId:n}):Iw(e,f.message):Fw(e),(0,H.jsxs)(`div`,{ref:a,"data-widget-section-id":n,"data-widget-mode":C,className:cy(`group relative rounded-2xl border border-transparent bg-background/95 p-3 transition-colors duration-200 ease-out hover:border-border`,l.isEditing&&l.error===null&&`border-signal-positive/40 ring-1 ring-signal-positive/15`,l.error!==null&&`border-destructive/40 ring-1 ring-destructive/15`),onMouseDownCapture:e=>{l.isEditing||e.preventDefault()},onFocusCapture:()=>p(!0),onBlurCapture:b,onKeyDownCapture:x,children:[(0,H.jsx)(Ew,{mode:C,enterEditMode:m,onSave:g,onUndo:_,className:cy(`z-10 focus-visible:opacity-100 focus-visible:scale-100 group-focus-within:pointer-events-auto group-focus-within:opacity-100 group-focus-within:scale-100`,w?`pointer-events-auto opacity-100 scale-100`:`pointer-events-none opacity-0 scale-95 group-hover:pointer-events-auto group-hover:opacity-100 group-hover:scale-100`)}),l.isEditing?(0,H.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.error!==null&&(0,H.jsxs)(`div`,{"data-testid":`widget-error-inlay`,className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:[`Invalid JSON: `,l.error]}),(0,H.jsx)(Dw,{ref:o,"data-testid":`widget-markdown-editor`,value:l.currentMarkdown,onChange:v,onBlur:y,onKeyDown:S,hasError:l.error!==null})]}):(0,H.jsx)(`div`,{ref:s,"data-testid":`widget-preview-surface`,tabIndex:0,onKeyDown:x,children:T})]})}var Rw=class extends Nr{sectionId;constructor(e){super(),this.sectionId=e}eq(e){return this.sectionId===e.sectionId}toDOM(e){let t=document.createElement(`div`);return t.className=`relative h-0 w-full`,(0,Ii.createRoot)(t).render((0,H.jsx)(`div`,{className:`absolute right-0 top-1 z-50`,children:(0,H.jsx)(Ew,{mode:`editing`,enterEditMode:()=>{},onSave:()=>{e.dispatch({effects:Ow.of({sectionId:this.sectionId,editing:!1})})},onUndo:()=>{e.dispatch({effects:Ow.of({sectionId:this.sectionId,editing:!1})})}})})),t}ignoreEvent(){return!1}},zw=class extends Nr{widgetName;rawContent;sectionId;registry;root=null;constructor(e,t,n,r){super(),this.widgetName=e,this.rawContent=t,this.sectionId=n,this.registry=r}eq(e){return this.widgetName===e.widgetName&&this.rawContent===e.rawContent&&this.sectionId===e.sectionId}toDOM(e){let t=document.createElement(`div`);return t.className=`cm-widget-block-preview`,t.style.cssText=`display:block; width:100%; min-height:1.5em; outline:none;`,this.root=(0,Ii.createRoot)(t),this.root.render(V.createElement(Lw,{widgetName:this.widgetName,rawContent:this.rawContent,sectionId:this.sectionId,registry:this.registry,view:e})),t}destroy(){if(this.root){let e=this.root;this.root=null,queueMicrotask(()=>{try{e.unmount()}catch{}})}}ignoreEvent(){return!1}get estimatedHeight(){return 200}};function Bw(e,t){let n;try{n=e.field(wS)}catch{return Jr.none}let{sections:r}=n,i=e.field(kw),a=[],o=e.selection.main.head;for(let n of r){if(n.type!==`widget`||!n.widgetName)continue;let r=e.doc;if(n.startLine>r.lines||n.endLine>r.lines)continue;if(i.has(n.id)){a.push(Jr.widget({widget:new Rw(n.id),side:1,block:!1}).range(n.from));continue}if(o>=n.from&&o<=n.to)continue;let s=n.contentFrom!=null&&n.contentTo!=null?r.sliceString(n.contentFrom,n.contentTo):``;a.push(Jr.replace({widget:new zw(n.widgetName,s,n.id,t),block:!0}).range(n.from,n.to))}return a.sort((e,t)=>e.from-t.from),Jr.set(a)}function Vw(e,t){return e.find(e=>e.type===`widget`&&t.from>=e.from&&t.from<=e.to)??null}function Hw(e,t){let{head:n}=e.state.selection.main,r=e.state.doc.lineAt(n),i=Math.max(0,n-r.from),a=Math.min(i,t.length),o=t.from+a;e.dispatch({selection:{anchor:o,head:o},scrollIntoView:!0})}function Uw(e){let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t),{sections:r}=e.state.field(wS),i=e.state.field(kw),a=Vw(r,n);if(a&&!i.has(a.id))return!1;let o=n.number+1;if(o>e.state.doc.lines)return!1;let s=Vw(r,e.state.doc.line(o));return!s||i.has(s.id)?!1:(Hw(e,e.state.doc.line(s.startLine)),!0)}function Ww(e){let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t),{sections:r}=e.state.field(wS),i=e.state.field(kw),a=Vw(r,n);if(a&&!i.has(a.id))return!1;let o=n.number-1;if(o<1)return!1;let s=Vw(r,e.state.doc.line(o));return!s||i.has(s.id)?!1:(Hw(e,e.state.doc.line(s.endLine)),!0)}var Gw=bi.high(Dr.of([{key:`ArrowDown`,run:Uw},{key:`ArrowUp`,run:Ww}]));function Kw(e){return[hi.define({create(t){return Bw(t,e)},update(t,n){let r=n.effects.some(e=>e.is(Ow)),i=!n.startState.selection.eq(n.newSelection);return n.docChanged||r||i?Bw(n.state,e):t},provide:e=>Pr.decorations.from(e)}),kw,Gw]}var qw=new class{_db;constructor(e){this._db=e}get db(){return this._db??Z}async load(){return this.db.getAllEfforts()}async save(e){await this.db.saveEffort(e)}async delete(e){await this.db.deleteEffort(e)}};function Jw(){return new Ps({storage:qw})}async function Yw(e){let t=(await Z.getAllEfforts()).filter(e=>e.registrySource===`bundled`);t.length>0?await e.loadBundled(t):e.isInitialized()||await e.loadBundled()}var Xw=null;function Zw(){return Xw||=Jw(),Xw}function Qw(e){return e.split(/[-_\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}var $w={and:!0,or:!0,of:!0,for:!0,to:!0,in:!0,on:!0,at:!0,by:!0,with:!0,the:!0,a:!0,an:!0};function eT(e){let t=e.replace(/\.md$/,``);if(t.toUpperCase()===`README`)return`Overview`;let n=t.replace(/^day-\d+-/,``).split(/[-_]/),r=[];for(let e=0;e<n.length;e++){let t=n[e],i=n[e+1],a=n[e+2],o=n[e-1];if(/^\d{1,2}$/.test(t)&&/^\d{1,2}$/.test(i??``)&&!/^\d+$/.test(o??``)&&!/^\d+$/.test(a??``)){r.push(`${t}.${i}`),e++;continue}if(r.length>0&&$w[t.toLowerCase()]){r.push(t.toLowerCase());continue}r.push(t.charAt(0).toUpperCase()+t.slice(1))}return r.join(` `)}function tT(e,t){let n=new Map,r=e=>{let t=n.get(e);return t||(t={id:e,name:Qw(e),categories:[],items:[]},n.set(e,t)),t};for(let[n,i]of Object.entries(t)){if(e===`collections`){let e=n.match(/(?:^|\/)markdown\/collections\/([^/]+)\/([^/]+\.md)$/);if(!e)continue;let[,t,a]=e,o=r(t);a.toLowerCase()===`readme.md`?(o.readme=i,o.categories=ny(i)):o.items.push({id:a.replace(/\.md$/,``),name:eT(a),content:i,path:n});continue}let t=n.match(/(?:^|\/)markdown\/feeds\/([^/]+)\/README\.md$/i);if(t){let e=r(t[1]);e.readme=i,e.categories=ny(i);continue}let a=n.match(/(?:^|\/)markdown\/feeds\/([^/]+)\/(\d{4}-\d{2}-\d{2})\/([^/]+\.md)$/);if(a){let[,e,t,o]=a;r(e).items.push({id:o.replace(/\.md$/,``),name:eT(o),content:i,path:n,date:t});continue}}return Array.from(n.values()).filter(({items:e,readme:t})=>e.length>0||t!==void 0)}function nT(e){return tT(`collections`,e).map(e=>({id:e.id,name:e.name,count:e.items.length,items:e.items.map(({id:e,name:t,content:n,path:r})=>({id:e,name:t,content:n,path:r})).sort((e,t)=>e.name.localeCompare(t.name)),readme:e.readme,categories:e.categories})).sort((e,t)=>e.name.localeCompare(t.name))}var rT=null,iT=[];async function aT(){let e=await vT();return rT!==e&&(rT=e,iT=nT(e)),iT}var oT=null,sT=null;function cT(){return oT||=Z.getAllBlockIndex().then(e=>e.filter(e=>e.isStatic===!0)).catch(e=>{throw oT=null,e}),oT}function lT(){oT=null,sT=null}function uT(e){let t=new Map;for(let n of e)for(let e of Oa(n.rawContent).filter(e=>e.type===`frontmatter`).flatMap(e=>ry(e.displayContent))){let r=t.get(e);r?r.add(n.id):t.set(e,new Set([n.id]))}return t}function dT(){return sT||=Z.getAllNotes().then(async e=>{let t=uT(e.filter(e=>e.seedOrigin===`seed`));try{let e=await aT();for(let n of e)for(let e of n.categories){let r=t.get(e);r?r.add(n.id):t.set(e,new Set([n.id]))}}catch{}return t}),sT}async function fT(){let e=Zw();return e.isInitialized()||await e.loadBundled(),e.list()}gx(`discipline`,{load:async()=>{try{return lx((await fT()).map(e=>e.baseAttributes?.discipline).filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>({value:e.trim(),label:e.trim()})),cx(Ss))}catch{return cx(Ss)}},cache:{ttlMs:6e4},open:!1,emptyText:`No disciplines available`}),gx(`effort`,{load:async()=>{try{return lx((await fT()).filter(e=>e.slug).map(e=>({value:e.slug,label:e.label||e.slug})),[]).sort((e,t)=>e.value.localeCompare(t.value))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No efforts indexed yet — type one to filter`}),gx(`intensity`,{load:async()=>{try{return lx((await fT()).map(e=>e.baseAttributes?.intensityTier).filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>({value:e.trim(),label:e.trim()})),cx(bs))}catch{return cx(bs)}},cache:{ttlMs:6e4},open:!1,emptyText:`No intensity tiers indexed yet`}),gx(`type`,{load:async()=>{try{return lx(ax(await cT()).map(e=>({value:e,label:e})),cx(sx))}catch{return cx(sx)}},cache:{ttlMs:3e5},open:!1,emptyText:`No indexed block types yet`}),gx(`catalog`,{load:async()=>ix(await cT()).map(e=>({value:e,label:e})),cache:`static`,open:!1,emptyText:`No catalogs in the static corpus`}),gx(`tag`,{load:async()=>{let e=await dT(),t=Array.from(e.keys()),n=[];try{n=(await Z.getAllTags()).map(e=>e.label)}catch{}return ox(n,t).map(e=>({value:e,label:e}))},cache:{ttlMs:3e4},open:!0,emptyText:`No tags yet — type one to filter by it`});for(let e of[`domain`,`format`,`equipment`,`quality`,`intent`])gx(e,{load:async()=>{try{return(await Z.getTags(e)).map(e=>({value:e.label,label:e.label}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No ${e}s indexed yet`});gx(`origin`,{load:async()=>{try{let e=await Z.getAllEfforts(),t=new Set;for(let n of e)n.registrySource&&t.add(n.registrySource);return Array.from(t).sort().map(e=>({value:e,label:e}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No effort origins indexed yet — type one to filter`}),(async()=>{try{let e=await Z.getAllTagTypes();for(let t of e)_x(t.name)||gx(t.name,{load:async()=>{try{return(await Z.getTags(t.name)).map(e=>({value:e.label,label:e.label}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No ${t.label}s indexed yet`})}catch{}})();var pT=null,mT=null,hT=new Set;function gT(){for(let e of hT)e()}async function _T(){let e=await Z.getSeedContent(),t={};for(let{path:n,raw:r}of e)t[n]=r;return t}function vT(){return mT||=_T().then(e=>(pT=e,gT(),e)).catch(e=>{throw mT=null,e}),mT}function yT(){pT=null,mT=null,lT(),vT()}function bT(e){return hT.add(e),()=>hT.delete(e)}function xT(){return pT}function ST(){let e=(0,V.useSyncExternalStore)(bT,xT);return(0,V.useEffect)(()=>{vT()},[]),e}var CT=!1;function wT(){if(CT||typeof BroadcastChannel>`u`)return;CT=!0;let e=new BroadcastChannel(Rg);e.onmessage=()=>yT()}var TT=`wodwiki.dataSettings.v1`,ET={"libsql:":!0,"https:":!0,"wss:":!0};function DT(e,t){let n;try{n=new URL(e.trim())}catch{return`That is not a valid URL.`}if(n.protocol===`http:`||n.protocol===`ws:`){if(n.hostname!==`localhost`&&n.hostname!==`127.0.0.1`&&n.hostname!==`[::1]`&&n.hostname!==`::1`)return`Plain http:// is only allowed for a local smoke server (localhost / 127.0.0.1).`}else if(!ET[n.protocol])return`Unsupported protocol "${n.protocol}" — use libsql:// or https://.`;if(n.username||n.password)return`The URL must not embed credentials — put the token in the token field.`;if(n.search)return`The URL must not contain a query string.`;if(n.hash)return`The URL must not contain a fragment.`;if(!t||!t.trim())return`A database token is required.`}function OT(){try{return localStorage.getItem(TT)}catch{return null}}function kT(){let e=OT();if(e===null)return{state:`indexed-db`};let t;try{t=JSON.parse(e)}catch{return{state:`invalid`,raw:e,error:`Saved data settings are not valid JSON.`}}if(!t||typeof t!=`object`||Array.isArray(t))return{state:`invalid`,raw:e,error:`Saved data settings have an unexpected shape.`};if(!(`kind`in t))return{state:`invalid`,raw:e,error:`Saved data settings have no kind.`};let n=t.kind;if(n===`indexed-db`)return{state:`indexed-db`};if(n!==`turso`)return{state:`invalid`,raw:e,error:`Saved data settings have an unknown kind "${String(n)}".`};if(!(`url`in t)||!(`authToken`in t))return{state:`invalid`,raw:e,error:`Saved Turso settings are missing the URL or token.`};let r=t.url,i=t.authToken;if(typeof r!=`string`||typeof i!=`string`)return{state:`invalid`,raw:e,error:`Saved Turso settings are missing the URL or token.`};let a=DT(r,i);return a?{state:`invalid`,raw:e,error:a}:{state:`turso`,url:r,authToken:i}}var AT=OT();typeof window<`u`&&window.addEventListener(`storage`,e=>{(e.key===`wodwiki.dataSettings.v1`||e.key===null)&&e.newValue!==AT&&window.location.reload()});var jT=t({DATA_SETTINGS_KEY:()=>TT,StorageService:()=>_v,profileService:()=>MT,startBackgroundStorageSync:()=>BT,storage:()=>FT,storageBackend:()=>`api`,storageService:()=>Z,whenStorageReady:()=>LT}),MT=Ev(`api`);function NT(){return new sv(`/api`,void 0,{getUserId:()=>MT.currentSync()?.id})}var PT=NT(),FT={readonly(e){return PT.readonly(e)},readwrite(e){return PT.readwrite(e)},transaction(e,t,n){return PT.transaction(e,t,n)},async queryDomain(e){return PT.queryDomain?.(e)},wipe(){return PT.wipe()},close(){return PT.close()}},Z=new _v(FT),IT;function LT(){return IT||(IT=(async()=>{})(),IT)}var RT,zT;function BT(){return RT||(RT={stop:()=>{RT=void 0}},zT=()=>{RT?.stop(),zT=void 0}),zT}function VT(e,t=[]){return{startTime:e.startTime,endTime:e.endTime,duration:e.duration,roundsCompleted:e.roundsCompleted,totalRounds:e.totalRounds,repsCompleted:e.repsCompleted,completed:e.completed,logs:fh(t)}}var HT={registeredWidgets:wa},UT=[`notes`,`block_revisions`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`,`sessions`,`events`,`block_index`,`block_efforts`];function WT(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function GT(e){let t=new Map(e.pages.map(e=>[e.id,e])),n,r,i;for(let a of[...e.links].sort((e,t)=>(e.position??1/0)-(t.position??1/0)||e.createdAt-t.createdAt)){let e=t.get(a.pageId);e&&(n??=e.id,e.date&&(r??=e.date),e.slug&&!e.date&&(i??=e.slug))}return{id:e.note.id,title:e.note.title,slug:i,pageId:n,journalDate:r,createdAt:e.note.createdAt,updatedAt:e.note.createdAt,targetDate:e.note.date??e.note.createdAt,rawContent:e.note.rawContent,blocks:e.note.blocks,sourceRevision:e.note.sourceRevision,tags:e.tags.map(e=>e.label),type:e.note.type??`note`,sourceId:e.note.sourceId,catalog:e.note.catalog,schemaVersion:1}}function KT(e){if(e?.dateRange)return e.dateRange;if(e?.daysBack!=null){let t=Date.now();return{start:t-e.daysBack*864e5,end:t}}}var qT=class e{db;constructor(e=Z){this.db=e}get persistenceStorage(){return this.db}mode=`history`;capabilities={canWrite:!0,canDelete:!0,canFilter:!0,canMultiSelect:!0,supportsHistory:!0};async getEntries(e){let t=KT(e),n=[];t&&n.push({field:`date`,start:t.start,end:t.end});for(let t of e?.tags??[])n.push({field:`tags`,values:[t]});let r=await this.db.queryDomain(n.length?{plan:`entries`,selection:n}:{plan:`entries`}),i;if(r?.plan===`entries`)i=r.rows.map(GT);else{let e=t?await this.db.getNotesByDateRange(t.start,t.end):await this.db.getAllNotes();i=[...(await this.db.getEntryBatches(e.map(e=>e.id))).values()].map(GT)}return i=i.filter(n=>(!t||n.targetDate>=t.start&&n.targetDate<=t.end)&&(e?.tags??[]).every(e=>n.tags.includes(e))),i.sort((e,t)=>t.targetDate-e.targetDate)}async getEntry(e){let t=e.startsWith(`playground/`)?e.slice(11):e,n=await this.db.getNote(e)??(t===e?void 0:await this.db.getNote(t))??await this.db.getNoteBySlug(e)??(t===e?void 0:await this.db.getNoteBySlug(t));if(!n)return null;let r=(await this.db.getEntryBatches([n.id])).get(n.id);if(!r)return null;let i=GT(r),a=(await this.db.getSessionsForNote(n.id)).sort((e,t)=>t.createdAt-e.createdAt)[0],o=Oa(n.rawContent,HT).map(e=>{let t=Object.values(n.blocks).find(t=>t.from===e.from&&t.to===e.to);return t?{...e,id:t.id,version:t.version,scriptBlock:e.scriptBlock?{...e.scriptBlock,id:t.id,version:t.version}:void 0}:e});return{...i,sections:o,results:a?VT(a,await this.db.getEventsByResult(a.id)):void 0}}async cloneEntry(e,t){let n=await this.getEntry(e);if(!n)throw Error(`Source entry not found: ${e}`);let r=t??Date.now();return this.saveEntry({title:n.title,rawContent:n.rawContent,tags:n.tags,targetDate:r,journalDate:WT(r),type:`journal`,sourceId:n.id})}async saveEntry(t){let n=Date.now(),r=t.id??(t.type===`playground`?w_(n):C());if(!t.id&&t.type===`playground`){let e=r;for(let t=1;await this.db.getNote(r);t++){if(t>100)throw Error(`Unable to allocate unique playground timestamp ID`);r=`${e}-${t}`}}await this.db.withTransaction([...UT],async n=>{let i=await n.getNote(r),a=i?t.sourceRevision:0;if(a===void 0)throw new lv(`STALE_SOURCE`,`An expected source revision is required for ${r}`);let o=await new e(n).changedManualTags(r,t.tags),s=t.blocks??(i?.rawContent===t.rawContent?i.blocks:Aa(t.rawContent,{...HT,sourceRevision:a||1}));await n.saveNoteSource({noteId:r,rawContent:t.rawContent,blocks:s,expectedSourceRevision:a,createdAt:t.createdAt,metadata:{title:t.title,type:t.type,tags:o,targetDate:t.targetDate,sourceId:t.sourceId}});let c=new e(n);await c.updateRelationships(r,{journalDate:t.journalDate,slug:t.slug}),await c.updateTags(r,t.rawContent,o)});let i=await this.getEntry(r);if(!i)throw Error(`Saved note disappeared: ${r}`);return i}async updateEntry(t,n){let r=t.startsWith(`playground/`)?t.slice(11):t,i=await this.db.getNote(t)??(r===t?void 0:await this.db.getNote(r))??await this.db.getNoteBySlug(t)??(r===t?void 0:await this.db.getNoteBySlug(r));if(!i)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${t}`);await this.db.withTransaction([...UT],async t=>{let r=await t.getNote(i.id);if(!r)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${i.id}`);let a=n.rawContent??r.rawContent;if(n.rawContent!==void 0&&n.expectedSourceRevision===void 0)throw new lv(`STALE_SOURCE`,`An expected source revision is required for ${r.id}`);let o=n.expectedSourceRevision??r.sourceRevision,s=n.tags===void 0?void 0:await new e(t).changedManualTags(r.id,n.tags),c=n.blocks??(a===r.rawContent?r.blocks:Aa(a,{...HT,sourceRevision:o}));await t.saveNoteSource({noteId:r.id,rawContent:a,blocks:c,expectedSourceRevision:o,metadata:{title:n.title,type:n.type,tags:s,targetDate:n.targetDate,sourceId:n.sourceId}});let l=new e(t);if(await l.updateRelationships(r.id,n),(n.tags!==void 0||a!==r.rawContent)&&await l.updateTags(r.id,a,s),n.results){if(!n.blockId||!n.blockVersion)throw Error(`Recording a result requires its frozen block pin`);let e=await t.getBlockRevision(r.id,n.blockId,n.blockVersion);if(!e||e.kind!==`wod`)throw new lv(`BLOCK_REVISION_NOT_FOUND`,`Pinned workout revision not found`);let i=n.resultId?await t.getSessionById(n.resultId):void 0;if(i&&(i.noteId!==r.id||i.blockId!==n.blockId||i.blockVersion!==n.blockVersion))throw new lv(`RESULT_NOTE_MISMATCH`,`Cannot replace a Session pin`);let a=n.results,o={...i,id:n.resultId??C(),noteId:r.id,blockId:n.blockId,blockVersion:n.blockVersion,blockContentId:n.blockContentId,origin:n.origin??i?.origin,startTime:a.startTime,endTime:a.endTime,duration:a.duration??0,completed:a.completed,roundsCompleted:a.roundsCompleted,totalRounds:a.totalRounds,repsCompleted:a.repsCompleted,status:`completed`,createdAt:i?.createdAt??a.endTime??Date.now()};if(await t.saveSession(o),a.logs?.length){let e={noteId:o.noteId,resultId:o.id,blockId:o.blockId,blockVersion:o.blockVersion,blockContentId:o.blockContentId,origin:o.origin,pageId:o.pageId,workoutTimestamp:o.endTime};await t.appendEvents(lh(a.logs,e)),await t.finalizeSummaries(o.id,uh(a.logs,e))}}});let a=await this.getEntry(i.id);if(!a)throw Error(`Saved note disappeared: ${i.id}`);return a}async updateRelationships(e,t){for(let n of[`journalDate`,`slug`]){let r=t[n];if(r===void 0)continue;let i;r&&(n===`journalDate`?i=await this.db.getOrCreatePageForDate(r):(i=await this.db.getPageBySlug(r),i||(i={id:C(),slug:r,title:(await this.db.getNote(e))?.title,createdAt:Date.now()},await this.db.savePage(i))));for(let t of await this.db.getNotePages(e)){let r=await this.db.getPage(t.pageId);(n===`journalDate`?r?.date:r?.slug&&!r.date)&&r?.id!==i?.id&&await this.db.removeNoteFromPage(e,t.pageId)}i&&await this.db.addNoteToPage(e,i.id)}}async changedManualTags(e,t){let n=(await this.db.getTagsForNote(e)).map(e=>e.label).sort(),r=[...new Set(t.map(e=>e.trim()).filter(Boolean))].sort();return n.length===r.length&&n.every((e,t)=>e===r[t])?void 0:r}async updateTags(e,t,n){let r=(await this.db.getAllTagTypes()).map(e=>e.name),i=Oa(t,HT).filter(e=>e.type===`frontmatter`).flatMap(e=>iy(e.displayContent,r)),a=n??(await this.db.getNote(e))?.tags??[];await this.db.setNoteTags(e,[...a,...i.map(e=>e.type?e:e.label)])}async deleteEntry(e){await this.db.deleteNote(e)}async getAttachments(e){return this.db.getAttachmentsForNote(e)}async saveAttachment(e,t){let n={...t,id:t.id??C(),noteId:e,createdAt:Date.now()};return await this.db.saveAttachment(n),n}async deleteAttachment(e){await this.db.deleteAttachment(e)}},JT={beep:{notes:[{freq:880,type:`sine`,duration:.1}]},tick:{notes:[{freq:880,type:`sine`,duration:.1}]},click:{notes:[{freq:1400,type:`sine`,duration:.1}]},buzzer:{notes:[{freq:150,type:`sawtooth`,duration:.5}]},chime:{notes:[{freq:523.25,type:`sine`,duration:.5,offset:0},{freq:659.25,type:`sine`,duration:.5,offset:.1},{freq:783.99,type:`sine`,duration:.5,offset:.2}]},complete:{notes:[{freq:523.25,type:`sine`,duration:.5,offset:0},{freq:659.25,type:`sine`,duration:.5,offset:.1},{freq:783.99,type:`sine`,duration:.5,offset:.2}]},select:{notes:[{freq:880,type:`sine`,duration:.08,offset:0},{freq:1200,type:`sine`,duration:.12,offset:.08}]},start:{notes:[{freq:440,type:`square`,duration:.1,offset:0},{freq:880,type:`square`,duration:.3,offset:.15}]}};function YT(e){return JT[e]}Object.freeze(Object.keys(JT));var XT=class{context=null;masterGain=null;init(){if(this.context)return;let e=window;if(typeof window>`u`)return;let t=window.AudioContext??e.webkitAudioContext;t&&(this.context=new t,this.masterGain=this.context.createGain(),this.masterGain.connect(this.context.destination))}async playNotes(e,t){if(this.context||this.init(),!this.context||!this.masterGain||(this.context.state===`suspended`&&await this.context.resume().catch(()=>{}),this.context.state!==`running`))return;let n=this.context.currentTime;for(let r of e)this.playNote(n+(r.offset??0),r.freq,r.type,r.duration,t)}playNote(e,t,n,r,i){if(!this.context||!this.masterGain)return;let a=this.context.createOscillator(),o=this.context.createGain();a.connect(o),o.connect(this.masterGain),a.type=n,a.frequency.setValueAtTime(t,e),o.gain.setValueAtTime(i*.5,e),o.gain.exponentialRampToValueAtTime(.01,e+r),a.start(e),a.stop(e+r)}},ZT=new class{enabled;sink;constructor(e,t){if(this.sink=e??new XT,t!==void 0)this.enabled=t;else if(typeof window<`u`)try{let e=localStorage.getItem(`wod-wiki-audio-enabled`);this.enabled=e===null||e===`true`}catch{this.enabled=!0}else this.enabled=!0}setEnabled(e){if(this.enabled=e,typeof window<`u`)try{localStorage.setItem(`wod-wiki-audio-enabled`,String(e))}catch{}}isEnabled(){return this.enabled}async playSound(e,t=1){if(!this.enabled)return;let n=YT(e);if(!n){let e=YT(`beep`);e&&await this.sink.playNotes(e.notes,t);return}`init`in this.sink&&typeof this.sink.init==`function`&&this.sink.init(),await this.sink.playNotes(n.notes,t)}},QT=class{listeners=new Set;emit(e){this.listeners.forEach(t=>{try{t(e)}catch(e){console.error(`[SimpleEventBus] Error in listener:`,e)}})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get size(){return this.listeners.size}};new class{bus=new QT;emitScrollToBlock(e,t=`unknown`){this.bus.emit({type:`workbench:scroll-to-block`,payload:{blockId:e,source:t}})}emitHighlightBlock(e,t=`unknown`){this.bus.emit({type:`workbench:highlight-block`,payload:{blockId:e,source:t}})}emitStartWorkout(e){this.bus.emit({type:`workbench:start-workout`,payload:{block:e}})}emitNavigateTo(e,t){this.bus.emit({type:`workbench:navigate-to`,payload:{entryId:e,view:t}})}onScrollToBlock(e){return this.bus.subscribe(t=>{t.type===`workbench:scroll-to-block`&&e(t.payload)})}onHighlightBlock(e){return this.bus.subscribe(t=>{t.type===`workbench:highlight-block`&&e(t.payload)})}onStartWorkout(e){return this.bus.subscribe(t=>{t.type===`workbench:start-workout`&&e(t.payload)})}onNavigateTo(e){return this.bus.subscribe(t=>{t.type===`workbench:navigate-to`&&e(t.payload)})}},new QT;var $T=!0,eE=[`wodwiki.routeWql.v1`,`wodwiki.routeWqlShortcuts.v1`],tE=[`wodwiki:notebooks`,`wodwiki:active-notebook`],nE=new Map,rE={getItem:e=>nE.get(e)??null,setItem:(e,t)=>nE.set(e,t),removeItem:e=>nE.delete(e)};async function iE(){let e=await Promise.all(eE.map(e=>FT.readonly(`meta`).getAll(IDBKeyRange.bound(e,`${e}\uffff`)))),t=await Promise.all(tE.map(e=>FT.readonly(`meta`).get(e)));for(let t of e)for(let e of t)nE.set(e.key,e.value);for(let e of t)e&&nE.set(e.key,e.value)}async function aE(e,t){t===null?(await FT.readwrite(`meta`).delete(e),nE.delete(e)):(await FT.readwrite(`meta`).put({key:e,value:t}),nE.set(e,t))}async function oE(e){if(e.length===1)return aE(e[0],null);await FT.transaction([`meta`],`readwrite`,async t=>{for(let n of e)await t.readwrite(`meta`).delete(n)});for(let t of e)nE.delete(t)}async function sE(e){return await FT.readonly(`meta`).getAll(IDBKeyRange.bound(e,`${e}\uffff`))}async function cE(e,t){await FT.readwrite(`meta`).put({key:e,value:t})}async function lE(e){await FT.readwrite(`meta`).delete(e)}var uE=`notebooks`,dE=`active-notebook`,fE=[`📓`,`🏋️`,`🔥`,`💪`,`⭐`,`🎯`,`🏃`,`🧘`,`🥊`,`🚴`];new class{store;constructor(e=new yv(`wodwiki:`,$T?rE:void 0)){this.store=e}tail=Promise.resolve();enqueue(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),t}getAll(){return this.store.get(uE)??[]}getById(e){return this.getAll().find(t=>t.id===e)??null}create(e,t=``,n=`📓`){return this.enqueue(()=>this.createNow(e,t,n))}async createNow(e,t,n){let r=Date.now(),i={id:C(),name:e,description:t,icon:n,createdAt:r,lastEditedAt:r};return await this.saveAll([...this.getAll(),i]),i}update(e,t){return this.enqueue(async()=>{let n=this.getAll(),r=n.findIndex(t=>t.id===e);if(r===-1)throw Error(`Notebook not found: ${e}`);let i=[...n];return i[r]={...n[r],...t,lastEditedAt:Date.now()},await this.saveAll(i),i[r]})}delete(e){return this.enqueue(async()=>{let t=this.getAll().filter(t=>t.id!==e);await this.saveAll(t),this.getActiveId()===e&&await this.setActiveIdNow(null)})}touchNotebook(e){return this.enqueue(async()=>{let t=this.getAll(),n=t.findIndex(t=>t.id===e);if(n!==-1){let e=[...t];e[n]={...t[n],lastEditedAt:Date.now()},await this.saveAll(e)}})}getActiveId(){return this.store.getRaw(dE)}setActiveId(e){return this.enqueue(()=>this.setActiveIdNow(e))}async setActiveIdNow(e){if($T){await aE(this.store.qualify(dE),e);return}this.store.setRaw(dE,e)}getLastEdited(){let e=this.getAll();return e.length===0?null:e.reduce((e,t)=>e.lastEditedAt>=t.lastEditedAt?e:t)}ensureDefault(){return this.enqueue(()=>this.ensureDefaultNow())}async ensureDefaultNow(){let e=this.getAll();if(e.length===0){let e=await this.createNow(`My Workouts`,`Default workout notebook`,`📓`);return await this.setActiveIdNow(e.id),e.id}let t=this.getActiveId();if(t&&e.some(e=>e.id===t))return t;let n=this.getLastEdited();return n?(await this.setActiveIdNow(n.id),n.id):e[0].id}static ICONS=fE;async saveAll(e){if($T){await aE(this.store.qualify(uE),JSON.stringify(e));return}this.store.set(uE,e)}};var pE=null,mE=new Set;function hE(e){pE!==e&&(pE=e,mE.forEach(e=>e(pE)))}function gE(){return pE}function _E(e){return mE.add(e),()=>{mE.delete(e)}}var vE=(0,V.createContext)({transport:null});function yE(){let e=(0,V.useContext)(vE),[t,n]=V.useState(()=>gE());return V.useEffect(()=>_E(n),[]),e.transport??t}var bE=({children:e,transport:t})=>{let n=(0,V.useMemo)(()=>({transport:t}),[t]);return(0,H.jsx)(vE.Provider,{value:n,children:e})},xE=(0,V.createContext)(void 0);function SE({children:e}){let[t,n]=(0,V.useState)(ZT.isEnabled()),r=yE();(0,V.useEffect)(()=>{ZT.setEnabled(t)},[t]);let i=(0,V.useCallback)((e,n=1)=>{if(t){if(r?.connected){console.log(`[AudioContext] Routing sound '${e}' to cast receiver`);try{r.send({type:`rpc-audio`,name:e,volume:n})}catch(t){console.error(`[AudioContext] Failed to send rpc-audio`,t),ZT.playSound(e,n)}}else ZT.playSound(e,n)}},[t,r]),a=(0,V.useCallback)(()=>{let e=!t;n(e),e&&ZT.playSound(`beep`)},[t]),o=(0,V.useCallback)(()=>{i(`chime`)},[i]),s=(0,V.useCallback)(()=>{i(`click`,.5)},[i]),c=(0,V.useMemo)(()=>({isEnabled:t,toggleAudio:a,playTestSound:o,playSound:i,playClick:s}),[t,a,o,i,s]);return(0,H.jsx)(xE.Provider,{value:c,children:e})}function CE(){let e=(0,V.useContext)(xE);if(e===void 0)throw Error(`useAudio must be used within an AudioProvider`);return e}var wE=class{storage;source;sourceId;now;constructor(e,t,n,r=Date.now){this.storage=e,this.source=t,this.sourceId=n,this.now=r}async applyAll(e={}){let t=a_(await this.source.fetchManifest()),n=Bg(this.sourceId),r=await this.storage.getSeedMeta(n);if(r&&r.schema!==8)throw Error(`Incompatible seed checkpoint; recreate storage`);let i=r??Vg(n);if(t.version<i.seedVersion)throw Error(`Seed manifest is older than the stored checkpoint`);let a=t.version!==i.seedVersion||t.builtAt!==i.builtAt,o=t.chunks.filter(t=>e.forceAll||a||i.chunks[t.id]?.sha256!==t.sha256);o.sort((e,t)=>Number(t.id===zg)-Number(e.id===zg));let s=Object.keys(i.chunks).filter(e=>!t.chunks.some(t=>t.id===e)),c={status:`current`,appliedChunks:0,totalNotes:0,totalEfforts:0,totalBlocks:0,skippedUserOwned:0,deleted:0,addedNotes:0,updatedNotes:0};if(!o.length&&!s.length&&!a)return c;c.status=`imported`;let l=(t,n)=>e.onProgress?.({phase:t,chunkId:n,completedChunks:c.appliedChunks,totalChunks:o.length,totalNotes:c.totalNotes,totalEfforts:c.totalEfforts,totalBlocks:c.totalBlocks,skippedUserOwned:c.skippedUserOwned,deleted:c.deleted,addedNotes:c.addedNotes,updatedNotes:c.updatedNotes});for(let n=0;n<o.length;){let a=o.slice(n,n+(o[n]?.id===`canvas`?1:4)),s=a.map(e=>({chunk:e,request:this.source.fetchChunk(e.path).then(e=>({payload:e}),e=>({error:e}))}));for(let{chunk:n,request:a}of s){l(`fetching`,n.id);let o=await a;if(`error`in o)throw o.error;let s=o_(o.payload);if(s.length!==n.count)throw Error(`Seed chunk count mismatch`);let u=await Promise.all(s.map(e=>c_(e.path))),d={...i,chunks:{...i.chunks,[n.id]:{sha256:n.sha256,noteIds:u}},importedAt:this.now()};l(`applying`,n.id);let f=await this.storage.applyChunk({chunkId:n.id,rows:s,manifest:t,expectedMeta:r,meta:d});c.totalNotes+=f.totalNotes,c.totalEfforts+=f.totalEfforts,c.totalBlocks+=f.totalBlocks,c.skippedUserOwned+=f.skippedUserOwned,c.deleted+=f.deleted,c.addedNotes+=f.addedNotes,c.updatedNotes+=f.updatedNotes,c.appliedChunks++,i=d,r=d,l(`committed`,n.id),n.id===`canvas`&&e.onFirstPaintApplied?.()}n+=a.length}for(let e of s){let n={...i.chunks};delete n[e];let a={...i,chunks:n,importedAt:this.now()},o=await this.storage.applyChunk({chunkId:e,rows:[],manifest:t,expectedMeta:r,meta:a});c.deleted+=o.deleted,i=a,r=a}let u={...i,schema:8,seedVersion:t.version,builtAt:t.builtAt,importedAt:this.now()};return await this.storage.applyChunk({chunkId:null,rows:[],manifest:t,expectedMeta:r,meta:u}),l(`finalizing`,null),c}},TE=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`SeedSourceError`}},EE=class{baseUrl;fetchImpl;constructor(e,t=fetch.bind(globalThis)){this.baseUrl=e,this.fetchImpl=t}async fetchManifest(){let e=await this.fetchImpl(`${this.baseUrl}manifest.json`,{cache:`no-cache`});if(!e.ok)throw new TE(`seed manifest fetch failed: HTTP ${e.status}`,e.status);return a_(await e.json())}async fetchChunk(e){let t=await this.fetchImpl(`${this.baseUrl}${e}`);if(!t.ok)throw new TE(`seed chunk fetch failed: HTTP ${t.status} for ${e}`,t.status);return await t.json()}},DE=class{storageInstance;constructor(e=FT){this.storageInstance=e}async getSeedMeta(e){return await this.storageInstance.readonly(`meta`).get(e)}async putSeedMeta(e,t){await this.storageInstance.transaction([`meta`],`readwrite`,async n=>{let r=n.readwrite(`meta`),i=await r.get(e.key);if(t!==void 0&&JSON.stringify(i??null)!==JSON.stringify(t))throw Error(`Seed checkpoint changed during claim`);await r.put(e)})}applyChunk(e){return p_(this.storageInstance,e)}},OE={core:1};function kE(e,t){return e===void 0||e<=0||t>e?`import`:t===e?`current`:`server-stale`}function AE(e,t){return e?.schema!==void 0&&e.schema!==8?!1:e?.seedVersion!=null&&e.seedVersion>0&&e.seedVersion===t}var jE=`wodwiki.seedSources`,ME=`/seed/core/`,NE=`https://bitcobblers.github.io/wod-wiki-community/`;function PE(){try{let e=localStorage.getItem(jE);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.label==`string`&&typeof e.url==`string`):[]}catch{return[]}}function FE(){return PE()}function IE(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`source`}function LE(e,t){let n=t.trim();if(!/^https?:\/\//i.test(n))throw Error(`Enter an absolute http(s) URL of a seed directory.`);let r=n.endsWith(`/`)?n:`${n}/`,i=PE();if(i.some(e=>e.url===r))throw Error(`This source is already registered.`);let a=e.trim()||(()=>{try{return new URL(r).hostname}catch{return`Source`}})(),o={...HE};for(let e of i)o[e.id]=!0;let s=IE(a);for(let e=2;o[s];e++)s=`${IE(a)}-${e}`;return localStorage.setItem(jE,JSON.stringify([...i,{id:s,label:a,url:r}])),{id:s,label:a,url:r}}function RE(e){localStorage.setItem(jE,JSON.stringify(PE().filter(t=>t.id!==e)))}var zE=`https://github.com/bitcobblers/wod-wiki-community`,BE=[{id:`community-crossfit-programming`,chunkId:`feed.crossfit-programming`,label:`CrossFit Programming`,category:`feeds`,sourceId:`common`,sourceLabel:`Common`,description:`Weekly CrossFit programming — daily strength, conditioning, and skill sessions on a rotation with a weekly benchmark.`,repositoryUrl:zE},{id:`community-dan-john-40-day`,chunkId:`feed.dan-john-40-day`,label:`Dan John 40-Day Program`,category:`feeds`,sourceId:`common`,sourceLabel:`Common`,description:`Dan John's 40-day barbell program — five lifts, five sets of five, five days a week for 40 sessions.`,repositoryUrl:zE},{id:`community-crossfit-girls`,chunkId:`collection.crossfit-girls`,label:`CrossFit Girls`,category:`collections`,sourceId:`common`,sourceLabel:`Common`,description:`Classic benchmark workouts — Fran, Helen, Grace, Diane, and more, formatted for Wod Wiki.`,repositoryUrl:zE},{id:`community-crossfit-heroes`,chunkId:`collection.crossfit-heroes`,label:`CrossFit Heroes`,category:`collections`,sourceId:`common`,sourceLabel:`Common`,description:`Hero benchmark workouts honoring service members — Murph, DT, Badger, and more.`,repositoryUrl:zE},{id:`community-dashboards`,chunkId:`dashboards`,label:`Common Dashboards`,category:`dashboards`,sourceId:`common`,sourceLabel:`Common`,description:`Prebuilt WQL analytics dashboards tracking training volume, intensity distribution, and movement frequency.`,repositoryUrl:zE}];function VE(){let e=[...BE];for(let t of FE())e.push({id:t.id,chunkId:t.id,label:t.label,category:`custom`,sourceId:t.id,sourceLabel:t.label,description:`Custom package synced from ${t.url}`});return e}var HE=Object.fromEntries([...[{id:`community-crossfit-programming`,chunkId:`feed.crossfit-programming`,label:`CrossFit Programming`,description:`Weekly CrossFit programming — daily strength, conditioning, and skill sessions on a push/pull/hinge/squat rotation with a benchmark or chipper each week (60–75 min per session).`},{id:`community-dan-john-40-day`,chunkId:`feed.dan-john-40-day`,label:`Dan John 40-Day Program`,description:`Dan John's 40-day barbell program (from *Can You Go?*, 2014) — five lifts, five sets of five, five days a week for 40 sessions.`}].map(e=>[e.id,!0]),...BE.map(e=>[e.id,!0])]),UE=class{inner;chunkId;constructor(e,t){this.inner=e,this.chunkId=t}async fetchManifest(){let e=await this.inner.fetchManifest();return{...e,chunks:e.chunks.filter(e=>e.id===this.chunkId)}}fetchChunk(e){return this.inner.fetchChunk(e)}},WE=`wodwiki.seedSubscriptions`,GE=null,KE=new Set;function qE(){if(GE)return GE;let e={};try{let t=localStorage.getItem(WE),n=t?JSON.parse(t):{};if(n&&typeof n==`object`&&!Array.isArray(n))for(let[t,r]of Object.entries(n))typeof r==`boolean`&&(e[t]=r)}catch{e={}}return GE=e,e}function JE(e){GE=e;let t=!0;try{localStorage.setItem(WE,JSON.stringify(e))}catch{t=!1}for(let e of KE)e();return t}function YE(e){return e===`core`||qE()[e]===!0}function XE(e,t){if(e===`core`)return!0;let n={...qE()};return n[e]=t,JE(n)}function ZE(e){return KE.add(e),()=>{KE.delete(e)}}async function QE(e,t=new DE){let n={...qE()},r=[];for(let{id:i}of e)if(!(i===`core`||i in n))try{let e=await t.getSeedMeta(Bg(i));e&&e.seedVersion>0&&(n[i]=!0,r.push(i))}catch{}return r.length&&JE(n),r}var $E=45e3;function eD(){try{return typeof localStorage<`u`&&localStorage.getItem(`wodwiki.seedImport.enabled`)!==`0`}catch{return!1}}function tD(){return[{id:`core`,label:`Core (playground)`,source:new EE(ME),embeddedVersion:OE.core??0},{id:`community`,label:`Community`,source:new EE(NE),embeddedVersion:0,autoImport:!1},...VE().map(e=>({id:e.id,label:e.label,source:new UE(new EE(NE),e.chunkId),embeddedVersion:0,autoImport:!1})),...FE().map(e=>({id:e.id,label:e.label,source:new EE(e.url),embeddedVersion:OE[e.id]??0,autoImport:!1}))]}function nD(e){try{if(typeof BroadcastChannel<`u`){let t=new BroadcastChannel(Rg);t.postMessage(e),t.close()}}catch{}}function rD(e){return(e instanceof Error?e.message:String(e)).replace(/(authToken["'=:\s]+)[^&\s,"']+/gi,`$1…`).replace(/(Bearer\s+)[\w.-]+/gi,`$1…`).replace(/https?:\/\/[^\s]+/gi,e=>{try{let t=new URL(e);return`${t.protocol}//${t.host}/…`}catch{return`…`}}).slice(0,300)}function iD(e,t,n){let r=e?.claim;return!!r&&r.owner!==t&&n-r.at<45e3}async function aD(e={}){let t=[],n=e.storage??new DE;if(!(e.isEnabled??eD)())return`disabled`;let r=e.owner??`seed-${(e.now??Date.now)()}-${Math.random().toString(36).slice(2,8)}`,i=e.sources??tD();for(let[a,o]of i.entries()){let s=await sD(o,e,n,r,a+1,i.length);console.debug(`[seedSync] ${o.id} outcome: ${s}`),t.push(s)}return t.includes(`error`)?`error`:t.includes(`imported`)?`imported`:t.includes(`server-stale`)?`server-stale`:t.includes(`busy`)?`busy`:`current`}async function oD(e={}){return aD(e)}async function sD(e,t,n,r,i,a){let o=t.now??Date.now,s=t.broadcast??nD,c=Bg(e.id),l=t.onProgress,u=(t,n=null)=>l?.({phase:`finished`,outcome:t,error:n,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});l?.({phase:`checking`,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});let d=Lv(`download`,e.label);try{let d=await n.getSeedMeta(c);if(!t.force&&!t.probeManifests&&AE(d,e.embeddedVersion))return u(`current`),`current`;if(iD(d,r,o()))return u(`busy`),`busy`;let f=a_(await e.source.fetchManifest()),p=t.force?`import`:kE(d?.seedVersion,f.version);if(p===`server-stale`)return u(`server-stale`),`server-stale`;if(d&&d.schema!==8)throw Error(`Incompatible seed checkpoint; recreate storage`);if(!t.force&&p===`current`&&d?.schema===8&&d.builtAt===f.builtAt)return u(`current`),`current`;let m={...d??Vg(c),claim:{owner:r,at:o()}};await n.putSeedMeta(m,d??null);try{let r=await new wE(n,e.source,e.id,o).applyAll({forceAll:t.force===!0,onFirstPaintApplied:()=>{yT(),t.onFirstPaint?.()},onProgress:l?t=>l({...t,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a}):void 0});if(r.status===`imported`){s({kind:`seed-imported`,source:e.id,version:f.version}),yT();let t=Zw();t.isInitialized()&&await Yw(t),Rv({source:e.label,added:r.addedNotes,updated:r.updatedNotes})}}finally{let e=await n.getSeedMeta(c);e?.claim?.owner===r&&await n.putSeedMeta({...e,claim:null},e)}return u(`imported`),`imported`}catch(t){console.warn(`[seedSync] ${e.id} seed sync failed`,t);let n=rD(t);return zv(n),u(`error`,n),`error`}finally{d()}}async function cD(e,t={}){let n=(t.sources??tD()).find(t=>t.id===e);if(!n)return console.warn(`[seedSync] unknown seed source: ${e}`),`error`;let r=await aD({...t,sources:[n]});return(r===`imported`||r===`current`)&&XE(e,!0),r}async function lD(e){let t=VE().find(t=>t.id===e),n=t?.chunkId??e,r=n.replace(/^(?:feed|collection)\./,``),i=t?.category,a=(await Z.getAllNotes()).filter(e=>e.seedOrigin===`seed`&&!!(e.seedChunkId===n||i&&e.catalog===i||e.catalog===r||e.sourceId&&(e.sourceId.includes(r)||e.sourceId.startsWith(`feed:feeds/${r}`))));for(let e of a)await Z.deleteNote(e.id);try{let t=Bg(e);await FT.readwrite(`meta`).delete(t)}catch{}XE(e,!1),yT();try{let t=new BroadcastChannel(Rg);t.postMessage({kind:`seed-removed`,source:e}),t.close()}catch{}return{deleted:a.length}}async function uD(e={}){let t=e.storage??new DE,n=!1,r=!1;return await Promise.all((e.sources??tD()).map(async e=>{try{let i=await t.getSeedMeta(Bg(e.id));if(!i||i.seedVersion<=0)return;e.autoImport===!1?r=!0:n=!0}catch{}})),{coreImported:n,libraryImported:r}}async function dD(e={}){let t=new DE,n=await t.getSeedMeta(Bg(`community`)),r=VE();return{sources:await Promise.all((e.sources??tD()).map(async e=>{let i=Bg(e.id),a=await t.getSeedMeta(i);if(!a&&n){let t=r.find(t=>t.id===e.id);t&&n.chunks[t.chunkId]&&(a=n)}let o=null,s=null;try{let t=await e.source.fetchManifest();o={version:t.version,schema:t.schema,builtAt:t.builtAt}}catch(e){s=e instanceof Error?e.message:String(e)}return{id:e.id,label:e.label,autoImport:e.autoImport!==!1,stored:a?{version:a.seedVersion,schema:a.schema,builtAt:a.builtAt,importedAt:a.importedAt}:null,remote:o,remoteError:s,upToDate:a!=null&&o!=null&&a.schema===8&&a.seedVersion===o.version}}))}}var fD=(0,V.createContext)(null);function pD({children:e}){let[t,n]=(0,V.useState)(!1),[r,i]=(0,V.useState)(null),a=Zw(),o=(0,V.useCallback)(async()=>{try{a.isInitialized()||await Yw(a),n(!0),i(null)}catch(e){i(e instanceof Error?e:Error(String(e))),n(!1)}},[a]),s=(0,V.useCallback)(async()=>{n(!1),await o()},[o]);return(0,V.useEffect)(()=>{o()},[o]),(0,V.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(Rg);return e.onmessage=()=>{s()},()=>e.close()},[s]),(0,H.jsx)(fD.Provider,{value:{registry:a,isReady:t,error:r,refresh:s},children:e})}function mD(){let e=(0,V.useContext)(fD);if(!e)throw Error(`useEffortRegistry must be within EffortRegistryProvider`);return e}var hD=mr,gD=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(ur,{ref:n,className:U(`fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]`,e),...t}));gD.displayName=ur.displayName;var _D=un(`group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full`,{variants:{variant:{default:`border bg-background text-foreground`,destructive:`destructive group border-destructive bg-destructive text-destructive-foreground`}},defaultVariants:{variant:`default`}}),vD=V.forwardRef(({className:e,variant:t,...n},r)=>(0,H.jsx)(Ne,{ref:r,className:U(_D({variant:t}),e),...n}));vD.displayName=Ne.displayName;var yD=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(ar,{ref:n,className:U(`inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive`,e),...t}));yD.displayName=ar.displayName;var bD=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(vr,{ref:n,className:U(`absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-destructive-foreground group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive group-[.destructive]:focus:ring-offset-background`,e),"toast-close":``,...t,children:(0,H.jsx)(Te,{className:`h-4 w-4`})}));bD.displayName=vr.displayName;var xD=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(p,{ref:n,className:U(`text-sm font-semibold`,e),...t}));xD.displayName=p.displayName;var SD=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(bt,{ref:n,className:U(`text-sm opacity-90`,e),...t}));SD.displayName=bt.displayName;var CD=3,wD=1e6,TD=0;function ED(){return TD=(TD+1)%(2**53-1),TD.toString()}var DD=new Map,OD=e=>{if(DD.has(e))return;let t=setTimeout(()=>{DD.delete(e),MD({type:`REMOVE_TOAST`,toastId:e})},wD);DD.set(e,t)},kD=(e,t)=>{switch(t.type){case`ADD_TOAST`:return{...e,toasts:[t.toast,...e.toasts].slice(0,CD)};case`UPDATE_TOAST`:return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case`DISMISS_TOAST`:{let{toastId:n}=t;return n?OD(n):e.toasts.forEach(e=>OD(e.id)),{...e,toasts:e.toasts.map(e=>!n||e.id===n?{...e,open:!1}:e)}}case`REMOVE_TOAST`:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},AD=[],jD={toasts:[]};function MD(e){jD=kD(jD,e),AD.forEach(e=>e(jD))}function ND(e){let t=ED(),n=()=>MD({type:`DISMISS_TOAST`,toastId:t}),r=e=>MD({type:`UPDATE_TOAST`,toast:{...e,id:t}});return MD({type:`ADD_TOAST`,toast:{...e,id:t,open:!0,onOpenChange:e=>{e||n()}}}),{id:t,dismiss:n,update:r}}function PD(){let[e,t]=V.useState(jD);return V.useEffect(()=>(AD.push(t),()=>{let e=AD.indexOf(t);e>-1&&AD.splice(e,1)}),[e]),{...e,toast:ND,dismiss:e=>MD({type:`DISMISS_TOAST`,toastId:e})}}function FD(){let{toasts:e}=PD();return(0,H.jsxs)(hD,{children:[e.map(function({id:e,title:t,description:n,action:r,...i}){return(0,H.jsxs)(vD,{...i,children:[(0,H.jsxs)(`div`,{className:`grid gap-1`,children:[t&&(0,H.jsx)(xD,{children:t}),n&&(0,H.jsx)(SD,{children:n})]}),r,(0,H.jsx)(bD,{})]},e)}),(0,H.jsx)(gD,{})]})}var ID={activeL1Id:null,activeL2Id:null,activeL3Id:null,leftDrawerOpen:!1,rightDrawerOpen:!1,expandedIds:new Set,journalFilter:{selectedDate:null,selectedTags:[]},searchFilter:{scope:`all`}};function LD(e,t){switch(t.type){case`SET_ACTIVE_L1`:return e.activeL1Id===t.id?e:{...e,activeL1Id:t.id};case`SET_ACTIVE_L2`:return e.activeL2Id===t.id?e:{...e,activeL2Id:t.id};case`SET_ACTIVE_L3`:return e.activeL3Id===t.id?e:{...e,activeL3Id:t.id};case`SET_LEFT_DRAWER`:return e.leftDrawerOpen===t.open?e:{...e,leftDrawerOpen:t.open};case`SET_RIGHT_DRAWER`:return e.rightDrawerOpen===t.open?e:{...e,rightDrawerOpen:t.open};case`TOGGLE_EXPANDED`:{let n=new Set(e.expandedIds);return n.has(t.id)?n.delete(t.id):n.add(t.id),{...e,expandedIds:n}}case`SET_JOURNAL_DATE`:return{...e,journalFilter:{...e.journalFilter,selectedDate:t.date}};case`SET_JOURNAL_TAGS`:return{...e,journalFilter:{...e.journalFilter,selectedTags:t.tags}};case`SET_SEARCH_SCOPE`:return{...e,searchFilter:{scope:t.scope}};default:return e}}var RD=e=>{let t=document.getElementById(e);if(t){let e=t.getBoundingClientRect().top+window.scrollY-80;window.scrollTo({top:e,behavior:`smooth`})}},zD=(0,V.createContext)({tree:[],navState:ID,dispatch:()=>{},l3Items:[],setL3Items:()=>{},secondarySpec:void 0,setSecondarySpec:()=>{},contextNav:void 0,setContextNav:()=>{},streamControls:null,setStreamControls:()=>{},scrollToSection:RD,registerScrollFn:()=>{},openCreateJournal:()=>{},registerCreateJournal:()=>{}});function BD(){return(0,V.useContext)(zD)}function VD(e){let{tree:t,dispatch:n}=BD();(0,V.useEffect)(()=>{e&&t.some(t=>t.id===e)&&n({type:`SET_ACTIVE_L1`,id:e})},[e,t,n])}function HD({tree:e,children:t}){let[n,r]=(0,V.useReducer)(LD,ID),[i,a]=(0,V.useState)([]),[o,s]=(0,V.useState)(void 0),[c,l]=(0,V.useState)(void 0),[u,d]=(0,V.useState)(null),f=zt(),p=(0,V.useRef)(RD),m=(0,V.useRef)(null);(0,V.useEffect)(()=>{let t=e.find(e=>e.isActive?e.isActive(f,n):e.action.type===`route`?e.action.to===`/`?f.pathname===`/`||f.pathname===``:f.pathname.startsWith(e.action.to):!1);r({type:`SET_ACTIVE_L1`,id:t?.id??null})},[f.pathname]),(0,V.useEffect)(()=>{r({type:`SET_LEFT_DRAWER`,open:!1})},[f.pathname]);let h=(0,V.useCallback)(e=>{a(t=>t.length===e.length&&t.every((t,n)=>t.id===e[n]?.id&&t.label===e[n]?.label&&t.secondaryAction?.id===e[n]?.secondaryAction?.id&&t.secondaryRunIcon===e[n]?.secondaryRunIcon)?t:e)},[]),g=(0,V.useCallback)(e=>{r({type:`SET_ACTIVE_L3`,id:e}),p.current(e)},[]),_=(0,V.useCallback)(e=>{p.current=e},[]),v=(0,V.useCallback)(e=>{m.current?.(e)},[]),y=(0,V.useCallback)(e=>{m.current=e},[]),b=(0,V.useMemo)(()=>({tree:e,navState:n,dispatch:r,l3Items:i,setL3Items:h,secondarySpec:o,setSecondarySpec:s,contextNav:c,setContextNav:l,streamControls:u,setStreamControls:d,scrollToSection:g,registerScrollFn:_,openCreateJournal:v,registerCreateJournal:y}),[e,n,i,h,o,c,l,u,g,_,v,y]);return(0,H.jsx)(zD.Provider,{value:b,children:t})}function UD(e){if(!e)return null;let t=X(e);return t.error?`Couldn't parse "${e}" — ${t.error}`:null}var WD=1e3;function GD(e){let t=(0,V.useRef)(e);t.current=e;let[n,r]=Yt(),i=n.get(`q`)??``,[a,o]=(0,V.useState)(()=>{let{defaultQuery:e,legacy:r}=t.current;return i?X(i).error?r?.salvageQ?.(i,n)??e():i:r?.toQuery(n)??e()}),[s,c]=(0,V.useState)(()=>!i||!X(i).error||t.current.legacy?.salvageQ?.(i,n)?null:UD(i)),l=(0,V.useRef)(a);l.current=a;let u=(0,V.useRef)(n);u.current=n;let d=(0,V.useRef)(!1);(0,V.useEffect)(()=>{if(d.current)return;d.current=!0;let{legacy:e}=t.current,n=u.current,i=n.get(`q`)??``,a=null;if(i?X(i).error&&(a=e?.salvageQ?.(i,n)??null):a=e?.toQuery(n)??null,!a)return;let o=new URLSearchParams(n);for(let t of e?.keys??[])o.delete(t);o.set(`q`,a),r(o,{replace:!0})},[r]);let f=(0,V.useRef)(!0),p=(0,V.useRef)(null),m=(0,V.useRef)(i);return(0,V.useEffect)(()=>{if(i===m.current)return;m.current=i,f.current=!0,clearTimeout(p.current),p.current=null,c(UD(i));let e=i&&!X(i).error?i:t.current.defaultQuery();o(t=>t===e?t:e)},[i]),(0,V.useEffect)(()=>{let e=()=>{let e=new URLSearchParams(window.location.search).get(`q`)??``;e!==m.current&&(m.current=e,f.current=!0,clearTimeout(p.current),p.current=null,c(UD(e)),o(e&&!X(e).error?e:t.current.defaultQuery()))};return window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`popstate`,e),clearTimeout(p.current)}},[]),{query:a,setQuery:(0,V.useCallback)(e=>{if(o(e),!X(e).error&&e!==l.current){let t=new URLSearchParams(u.current);t.set(`q`,e),m.current=e,r(t,{replace:!f.current}),f.current=!1,clearTimeout(p.current),p.current=setTimeout(()=>{f.current=!0,p.current=null},WD)}},[r]),urlQueryError:s}}var KD=[`origin`,`discipline`];function qD(e){return/\s/.test(e)?`text:"${e}"`:`text:${e}`}function JD(e){let t=e.filter(Boolean);return`:effort${t.length?`{${t.join(`,`)}}`:``}`}function YD(e,t){let n=e.trim();if(!n||n.startsWith(`:`)||n.includes(`{`)||n.includes(`}`))return null;let r=t.get(`origin`),i=t.get(`discipline`)?.trim();return JD([qD(n),...r&&r!==`all`?[`origin:${r}`]:[],...i?[`discipline:${i}`]:[]])}function XD(e){if(!KD.some(t=>e.get(t)))return null;let t=e.get(`origin`),n=e.get(`discipline`)?.trim();return JD([...t&&t!==`all`?[`origin:${t}`]:[],...n?[`discipline:${n}`]:[]])}var ZD={keys:KD,toQuery:XD,salvageQ:YD};function QD(e){return e.endsWith(`/`)&&e.length>1?e.slice(0,-1):e}function $D(e){let t=[`note`,`session`,`post`,`text`,`timePreset`,`rangeStart`,`rangeEnd`,`s`,`tags`,`mode`];return{keys:t,toQuery(n){if(!t.some(e=>n.has(e)))return null;let r=null;if(n.has(`note`)||n.has(`session`)||n.has(`post`)){let e=[];(n.get(`note`)??`include`)!==`hide`&&e.push(`journal`),(n.get(`session`)??`include`)!==`hide`&&e.push(`feeds`),e.length===1&&(r=`source:${e[0]}`)}else e&&(r=`source:${e}`);let i=n.get(`timePreset`)??`2w`,a=i===`all`||i===`custom`?null:`last ${i}`,o=n.get(`text`)?.trim(),s=n.get(`tags`)?.trim(),c=o?/\s/.test(o)?`text:"${o}"`:`text:${o}`:null,l=s?`tags:${s}`:null,u=`:note`,d=[c,l].filter(Boolean);r===`source:journal`?u=`:journal`:r===`source:feeds`?u=`:catalog`:r===`source:playground`?u=`:playground`:r&&d.unshift(r);let f=d.length?`{${d.join(`,`)}}`:``;return[`${u}${f}`,a].filter(Boolean).join(` `)}}}var eO={route:`/journal`,title:`Journal`,defaultWql:`:journal{} last 4w`,level:`note`,target:`note`,scopeOptions:[`journal`],legacy:$D(`journal`)},tO={route:`/catalogs`,title:`Catalogs`,defaultWql:`:catalog{} by {tag}`,level:`session`,target:`note`,scopeOptions:[`feeds`],shelfVisible:!1,seedNotice:!0,legacy:$D(`feeds`)},nO={route:`/feeds`,title:`Feeds`,defaultWql:`:feed{}`,level:`note`,target:`note`,scopeOptions:[`feeds`],emptyMessage:`No feed entries match your search.`,seedNotice:!0,legacy:$D(`feeds`)},rO={route:`/efforts`,title:`Efforts`,defaultWql:`:effort`,level:`effort`,target:`effort`,scopeOptions:[],emptyMessage:`No efforts match your search.`,legacy:ZD},iO={route:`/sessions`,title:`Sessions`,defaultWql:`:session{} last 1d`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No completed session results recorded in this period.`},aO={route:`/playgrounds`,title:`Playgrounds`,defaultWql:`:playground{} by {date} last 1w`,level:`note`,target:`note`,scopeOptions:[`playground`],shelfVisible:!0,legacy:$D(`playground`)};function oO(e){return{route:`/session/${e}`,defaultWql:`:session{} from ${e} to ${e}`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No session results recorded on ${e}.`}}function sO(e){return{route:`/results/${e}`,defaultWql:`:session{result:${e}, plane:segment}`,level:`segment`,target:`session`,scopeOptions:[],emptyMessage:`No segment records found for result ${e}.`}}function cO(e){return{route:`/c/${e}`,title:Qw(e),defaultWql:`:feed{catalog:${e}} by {date}`,level:`session`,target:`note`,scopeOptions:[`feeds`],shelfVisible:!1,defaultLayout:`cards`,catalog:e,legacy:$D(`feeds`)}}var lO={"/journal":eO,"/catalogs":tO,"/feeds":nO,"/feed":nO,"/efforts":rO,"/sessions":iO,"/playgrounds":aO};function uO(e){let t=QD(e),n=lO[t];if(n)return n;if(t.startsWith(`/results/`)){let e=t.slice(9);if(e)return sO(e)}if(t.startsWith(`/session/`)){let e=t.slice(9);if(e)return oO(e)}if(t.startsWith(`/c/`)){let e=t.slice(3);if(e&&!e.includes(`/`))return cO(e)}}function dO(e){return uO(e)??eO}function fO(e){let t=lO[QD(e)]?.title;if(t)return t;if(QD(e).startsWith(`/c/`)){let t=QD(e).slice(3);if(t&&!t.includes(`/`))return Qw(t)}}function pO(e){let t=QD(e);if(lO[t])return!0;if(t.startsWith(`/results/`)||t.startsWith(`/session/`))return t.slice(9)!==``;if(t===`/results`||t===`/results/segments`)return!0;if(t.startsWith(`/c/`)){let e=t.slice(3);return!!(e&&!e.includes(`/`))}return!1}var Q={home:`/`,playgroundRoot:`/playground`,playground:`/playground/:id`,notePlaygroundAlias:`/note/playground/:name`,note:`/note/:category/:name`,journal:`/journal`,journalEntry:`/journal/:identity`,journalNote:`/journal/:date/:uuid`,noteById:`/notes/:noteId`,plan:`/plan`,aiFirst:`/ai-first`,feeds:`/feeds`,feed:`/feed`,feedDetail:`/feeds/:feedSlug`,feedItem:`/feeds/:feedSlug/:feedDate/:feedItem`,catalogs:`/catalogs`,collections:`/collections`,collectionDetail:`/collections/:slug`,collectionWorkout:`/collections/:collection/:workout`,collection:`/c/:slug`,collectionTarget:`/c/:collection/:workout`,effortSlug:`/e/:slug`,sessions:`/sessions`,sessionDetail:`/results/:sessionId`,sessionDate:`/session/:date`,dashboards:`/dashboards`,dashboardSlug:`/d/:slug`,pages:`/p/*`,playgrounds:`/playgrounds`,tracker:`/tracker/:runtimeId`,run:`/run/:runtimeId`,load:`/load`,loadJournal:`/load/journal`,loadJournalDate:`/load/journal/:date`,efforts:`/efforts`,effort:`/effort/:slug`,analytics:`/analytics`,analyticsExplorer:`/analytics/explorer`,dashboard:`/dashboard`,dashboardView:`/dashboard/:slug`,settings:`/settings`,settingsAppearance:`/settings/appearance`,settingsProfile:`/settings/profile`,settingsStorage:`/settings/storage`,settingsSync:`/settings/sync`,settingsSystem:`/settings/system`,settingsQueries:`/settings/queries`,settingsTags:`/settings/tags`,settingsData:`/settings/data`,settingsDatabase:`/settings/database`};function mO(e){return`/playground/${encodeURIComponent(e)}`}function hO(e){return`/journal/${encodeURIComponent(e)}/`}function gO(e){return`/journal/${encodeURIComponent(e)}`}function _O(e){return`/notes/${encodeURIComponent(e)}`}function vO(e,t){return`/journal/${encodeURIComponent(e)}?autoStart=${encodeURIComponent(t)}`}function yO(e){return`/feeds/${encodeURIComponent(e)}`}function bO(e){return`/c/${encodeURIComponent(e)}`}function xO(e,t){return`/c/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function SO(e){return`/run/${encodeURIComponent(e)}`}function CO({zip:e}){return`/load?zip=${encodeURIComponent(e)}`}function wO(e){return`/results/${encodeURIComponent(e)}`}function TO(e){return`/p/${e}`}function EO(){return`/playgrounds`}function DO(){return`/efforts`}function OO(e){let t=new URLSearchParams;e?.q&&t.set(`q`,e.q),e?.weeks&&t.set(`weeks`,String(e.weeks));let n=t.toString();return`/dashboards${n?`?${n}`:``}`}function kO(){return`/dashboards`}function AO(e){return`/dashboard/${encodeURIComponent(e)}`}function jO(e,t,n){let r=new URLSearchParams;if(t)for(let[e,n]of Object.entries(t))r.set(e,n);n?.mode&&r.set(`mode`,n.mode),n?.tab&&r.set(`tab`,n.tab);let i=r.toString();return i?`/e/${encodeURIComponent(e)}?${i}`:`/e/${encodeURIComponent(e)}`}function MO(e){return{mode:e.get(`mode`)??void 0,tab:e.get(`tab`)??void 0,q:e.get(`q`)??void 0,origin:e.get(`origin`)??void 0}}function NO(e){return e.startsWith(`/playground/`)||e.startsWith(`/note/playground/`)}function PO(e){return e===`/efforts`||e.startsWith(`/effort/`)||e.startsWith(`/e/`)}function FO(e){let t=e.match(/^\/feeds\/([^/]+)\/([^/]+)\/([^/]+)$/);return t?[t[1],t[2],t[3]]:null}function IO(e){let t=e.match(/^\/feeds\/([^/]+)$/);return t?t[1]:null}function LO(e){if(!e)return``;let t=e.split(`-`);return t.length>1?t[t.length-1]:e}function RO(e){return typeof File<`u`&&e instanceof File?!1:`file`in e&&e.file!==void 0||`data`in e&&e.data!==void 0}async function zO(e){let t=Date.now();if(!RO(e))return{label:e.name,mimeType:e.type,data:await e.arrayBuffer(),timeSpan:{start:t,end:t}};let n=`file`in e?e.file:void 0,r=`data`in e?e.data:void 0,i;if(r!==void 0)i=r;else{if(!n)throw Error(`Attachment input requires either file or data, but neither was provided`);i=await n.arrayBuffer()}return{id:e.id,label:e.label??n?.name??`Attachment`,mimeType:e.mimeType??n?.type??`application/octet-stream`,data:i,timeSpan:e.timeSpan??{start:t,end:t}}}function BO(e){return{id:e.id,outputType:e.outputType,timeSpan:{started:e.timeSpan.started,ended:e.timeSpan.ended},metrics:e.metrics.toArray(),hints:(()=>{let t=Ra(e);return t.length?t:void 0})(),sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,parent:e.parent,sourceStatementId:e.sourceStatementId,line:e.line,text:e.text,dialect:e.dialect,completionReason:e.completionReason}}function VO(e){return new ya({outputType:e.outputType,timeSpan:e.timeSpan,sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,sourceStatementId:e.sourceStatementId,line:e.line,text:e.text,dialect:e.dialect,metrics:e.metrics,parent:e.parent,completionReason:e.completionReason})}function HO(e){return{...e,metrics:e.metrics.filter(e=>e.origin!==`analyzed`)}}function UO(e,t){let{engine:n}=Zu(t.block,{effortResolver:t.effortResolver,userProfile:t.userProfile,calcs:t.calcs}),r=[];for(let t of e){if(t.outputType===`analytics`)continue;if(t.outputType!==`segment`){r.push(t);continue}let e=HO(t),i=n.run(VO(e)),a=t.metrics.filter(e=>e.origin===`analyzed`&&!i.metrics.some(t=>t.origin===`analyzed`&&t.type===e.type));r.push(BO(a.length?new ya({...i,metrics:[...i.metrics,...a]}):i))}return[...r,...n.finalize().map(BO)]}function WO(e,t,n){return UO(fh(t),{block:e,...n})}var GO={soreness:{unit:`rating`,label:`Soreness`,min:1,max:10},sleep:{unit:`h`,label:`Sleep`},hrv:{unit:`ms`,label:`HRV`},weight:{unit:`kg`,label:`Bodyweight`},hang:{unit:`kg`,label:`Max Hang Weight`},hr:{unit:`bpm`,label:`Avg Heart Rate`},planned:{unit:`count`,label:`Planned Sessions`}};function KO(e){let t=/^(-?\d+(?:\.\d+)?)\s*([a-z%]*)$/i.exec(e.trim());if(t)return{value:parseFloat(t[1]),unit:t[2]||void 0}}function qO(e){let t=new Map;for(let n of e.split(`
68
+ `)){let e=/^([a-z][a-z0-9]*)\s*[:=]\s*(.+)$/i.exec(n.trim());if(!e)continue;let r=e[1].toLowerCase(),i=GO[r];if(!i)continue;let a=KO(e[2]);a&&(i.min!==void 0&&a.value<i.min||i.max!==void 0&&a.value>i.max||t.set(r,{key:r,value:a.value,unit:a.unit??i.unit,label:i.label}))}return[...t.values()]}function JO(e){let t=new Map,n=/```wellness[^\S\n]*\n([\s\S]*?)```/g,r;for(;(r=n.exec(e))!==null;)for(let e of qO(r[1]))t.set(e.key,e);return[...t.values()]}function YO(e,t,n={}){let r=JO(t);if(r.length===0)return[];let i=n.targetDate??n.now??Date.now(),a=new Date(i),o=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,`0`)}-${String(a.getDate()).padStart(2,`0`)}`,s=new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime();return r.map(t=>({id:XO(e,t.key),resultId:`wellness:${e}`,noteId:e,timestamp:s,grain:`summary`,origin:`user`,outputType:`wellness`,representationKind:`direct`,metrics:[{type:t.key,value:t.value,unit:t.unit,origin:`user`,metadata:{canonicalKey:t.key}}],metricTemporal:[{temporalKind:`civil-date`,civilDate:o}]}))}function XO(e,t){return`wellness:${e}:${t}`}async function ZO(e,t,n,r={}){let i=YO(e,t,r),a=new Set(i.map(e=>e.id)),o=(await n.getEventsForNote(e)).filter(t=>t.id.startsWith(`wellness:${e}:`)),s=i.filter(e=>{let t=o.find(t=>t.id===e.id);return!t||t.metrics[0]?.value!==e.metrics[0]?.value||t.timestamp!==e.timestamp}),c=o.filter(e=>!a.has(e.id)).map(e=>e.id);return s.length>0&&await n.appendEvents(s),c.length>0&&await n.deleteEvents(c),{written:s.length,deleted:c.length}}function QO(e){return[...e].sort((e,t)=>t.createdAt-e.createdAt)}function $O(e,t){return t==null?e:e.slice(0,t)}var ek=class e{storage;contentProvider;constructor(e=Z,t=new qT(e)){this.storage=e,this.contentProvider=t}async createNote(e){if(await this.contentProvider.persistenceReady,await this.storage.getNote(e.id))throw Error(`Note already exists: ${e.id}`);return this.contentProvider.saveEntry({id:e.id,title:e.title,rawContent:e.rawContent,tags:e.tags??[],targetDate:e.targetDate,journalDate:e.journalDate,type:e.type??`note`,slug:e.slug,sourceId:e.sourceId})}async getNote(e,t={}){await this.contentProvider.persistenceReady;let n=await this.resolveNote(e);if(!n)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);let r=t.projection??`workbench`,i=t.includeSections??r!==`summary`,a=t.includeAttachments??!1,o=await this.contentProvider.getEntry(n.id);if(!o)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);let s=r===`summary`?{}:await this.selectResults(n,t.resultSelection),c=a?await this.storage.getAttachmentsForNote(n.id):void 0;return{...o,...s,sections:i?o.sections:void 0,attachments:c}}async listNotes(e={}){if(e.ids&&e.ids.length>0){let t=e.projection??`summary`;return Promise.all(e.ids.map(e=>this.getNote(e,{projection:t,...t===`history-detail`&&{resultSelection:{mode:`all-for-note`}}})))}let t=await this.contentProvider.getEntries(e);if(e.journalDate&&(t=t.filter(t=>t.journalDate===e.journalDate)),e.kind&&(t=t.filter(t=>t.type===e.kind)),e.search){let n=e.search.toLowerCase();t=t.filter(e=>e.title.toLowerCase().includes(n)||e.rawContent.toLowerCase().includes(n))}return e.projection===`history-detail`&&(t=await Promise.all(t.map(e=>this.getNote(e.id,{projection:`history-detail`,resultSelection:{mode:`all-for-note`}})))),(e.offset||e.limit)&&(t=t.slice(e.offset??0,(e.offset??0)+(e.limit??t.length))),t}async mutateNote(e,t){await this.contentProvider.persistenceReady;let n=await this.resolveNote(e);if(!n)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);if(t.expectedSourceRevision!==void 0&&t.expectedSourceRevision!==n.sourceRevision)throw new lv(`STALE_SOURCE`,`Note ${n.id} changed since it was loaded`);let r=t.attachments?.add?await Promise.all(t.attachments.add.map(e=>zO(e))):[];return await this.storage.withTransaction([`notes`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`,`block_revisions`,`sessions`,`events`,`attachments`,`block_index`,`block_efforts`],async e=>{let i=new qT(e);if(await i.updateEntry(n.id,{...t.metadata,rawContent:t.rawContent,blocks:t.blocks,expectedSourceRevision:t.expectedSourceRevision,results:t.workoutResult?.data,blockId:t.workoutResult?.blockId,blockVersion:t.workoutResult?.blockVersion,blockContentId:t.workoutResult?.blockContentId,origin:t.workoutResult?.origin,resultId:t.workoutResult?.id}),t.rawContent!==void 0&&t.rawContent!==n.rawContent){let r=await i.getEntry(n.id);await ZO(n.id,t.rawContent,e,{targetDate:r?.targetDate})}for(let i of r)await e.saveAttachment({...i,id:i.id??C(),noteId:n.id,resultId:t.workoutResult?.id,createdAt:Date.now()});for(let n of t.attachments?.remove??[])await e.deleteAttachment(n)}),this.getNote(n.id,{includeAttachments:!!t.attachments})}async saveNote(e){if(await this.contentProvider.persistenceReady,await this.storage.getNote(e.noteId))return this.mutateNote(e.noteId,{rawContent:e.rawContent,blocks:e.blocks,expectedSourceRevision:e.expectedSourceRevision,metadata:e.metadata});if(e.expectedSourceRevision!==0)throw new lv(`STALE_SOURCE`,`Note ${e.noteId} no longer exists`);return this.contentProvider.saveEntry({id:e.noteId,rawContent:e.rawContent,blocks:e.blocks,sourceRevision:0,title:e.metadata?.title??`Workout Note`,tags:e.metadata?.tags??[],targetDate:e.metadata?.targetDate??Date.now(),journalDate:e.metadata?.journalDate,slug:e.metadata?.slug??void 0,type:e.metadata?.type??e.noteType,sourceId:e.metadata?.sourceId??void 0,createdAt:e.createdAt})}async startSession(t,n){if(await this.contentProvider.persistenceReady,n.noteId!==t.noteId)throw new lv(`RESULT_NOTE_MISMATCH`,`Session belongs to another Note`);return this.storage.withTransaction([`notes`,`block_revisions`,`block_index`,`block_efforts`,`sessions`,`events`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`],async r=>{await new e(r,new qT(r)).saveNote(t);let i=await r.getNote(t.noteId),a=i?.blocks[n.blockId];if(!i||!a||a.kind!==`wod`)throw new lv(`BLOCK_REVISION_NOT_FOUND`,`Selected workout is not in the saved Note`);let o=await r.getBlockRevision(i.id,a.id,a.version);if(!o)throw new lv(`BLOCK_REVISION_NOT_FOUND`,`Selected workout revision is missing`);if(await r.getSessionById(n.id))throw Error(`Session already exists: ${n.id}`);let s=Oa(o.rawContent,{registeredWidgets:wa}).find(e=>e.scriptBlock),c={...n,blockId:a.id,blockVersion:o.version,blockContentId:s?.scriptBlock?.contentId,status:`in-progress`};return await r.saveSession(c),{note:i,revision:o,session:c}})}async finishSession(e,t,n){return await this.contentProvider.persistenceReady,this.storage.withTransaction([`sessions`,`block_revisions`,`events`],async r=>{let i=await r.getSessionById(e);if(!i)throw new lv(`RESULT_NOT_FOUND`,`Session not found: ${e}`);if(!await r.getBlockRevision(i.noteId,i.blockId,i.blockVersion))throw new lv(`BLOCK_REVISION_NOT_FOUND`,`Pinned workout revision is missing`);let a={...i,startTime:t.startTime,endTime:t.endTime,duration:t.duration??0,roundsCompleted:t.roundsCompleted,totalRounds:t.totalRounds,repsCompleted:t.repsCompleted,completed:t.completed,status:`completed`,createdAt:n??i.createdAt};if(await r.saveSession(a),t.logs?.length){let e={noteId:a.noteId,resultId:a.id,blockId:a.blockId,blockVersion:a.blockVersion,blockContentId:a.blockContentId,origin:a.origin,pageId:a.pageId,workoutTimestamp:a.endTime};await r.appendEvents(lh(t.logs,e)),await r.finalizeSummaries(a.id,uh(t.logs,e))}return a})}async getBlockRevision(e,t,n){return await this.contentProvider.persistenceReady,this.storage.getBlockRevision(e,t,n)}async getBlockHistory(e,t){return await this.contentProvider.persistenceReady,this.storage.getBlockHistory(e,t)}async getNoteBlockHistory(e){return await this.contentProvider.persistenceReady,this.storage.getNoteBlockHistory(e)}async deleteNote(e){await this.contentProvider.persistenceReady;let t=await this.resolveNote(e);if(!t)throw new lv(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);await this.contentProvider.deleteEntry(t.id)}async getSessionById(e){return await this.contentProvider.persistenceReady,this.storage.getSessionById(e)}async rederiveResultAnalytics(e){await this.contentProvider.persistenceReady;let t=await this.storage.getSessionById(e);if(!t)throw new lv(`RESULT_NOT_FOUND`,`Result not found: ${e}`);let n=await this.storage.getBlockRevision(t.noteId,t.blockId,t.blockVersion),r=n&&Oa(n.rawContent).find(e=>e.scriptBlock)?.scriptBlock;if(!r||n?.kind!==`wod`)throw new lv(`BLOCK_REVISION_NOT_FOUND`,`Cannot re-derive result ${e}: pinned workout revision is missing`);let i={...r,id:t.blockId,version:t.blockVersion,dialect:n.dialect,sport:n.sport,statements:vs().read(r.content,n.sport).statements},a=this.storage.getEventsByResult?await this.storage.getEventsByResult(e):[],o=WO(i,a);if(this.storage.appendEvents&&this.storage.finalizeSummaries){let e={noteId:t.noteId,resultId:t.id,blockId:t.blockId,blockVersion:t.blockVersion,blockContentId:t.blockContentId,origin:t.origin,pageId:t.pageId,workoutTimestamp:t.createdAt};await this.storage.withTransaction([`events`],async n=>{a.length>0&&await n.deleteEvents(a.map(e=>e.id)),await n.appendEvents(lh(o,e)),await n.finalizeSummaries(t.id,uh(o,e))})}return t}async resolveNote(e){if(typeof e==`string`)return this.resolveByAnyId(e);if(e.id)return this.resolveByAnyId(e.id);if(e.slug)return this.resolveByAnyId(e.slug);let t=await this.storage.getAllNotes();if(e.shortId)return t.find(t=>LO(t.id)===e.shortId);let n=e.title;if(n)return t.find(e=>e.title.toLowerCase()===n.toLowerCase())}async resolveByAnyId(e){return await this.storage.getNote(e)||await this.storage.getNoteBySlug?.(e)||(await this.storage.getAllNotes()).find(t=>LO(t.id)===e||t.title.toLowerCase()===e.toLowerCase())}describeLocator(e){return typeof e==`string`?e:e.id??e.slug??e.shortId??e.title??`<empty locator>`}async getSimilarSessions(e,t={}){let n=await this.storage.getSessionsByContentId(e);return t.excludeNoteId&&(n=n.filter(e=>e.noteId!==t.excludeNoteId)),t.includePlayground||(n=n.filter(e=>e.origin!==`playground`)),$O(QO(n),t.limit)}async selectResults(e,t={mode:`latest`}){let n=async e=>!e||!this.storage.getEventsByResult?[]:this.storage.getEventsByResult(e.id);if(t.mode===`by-result-id`){let r=await this.storage.getSessionById(t.resultId);if(!r)throw new lv(`RESULT_NOT_FOUND`,`Result not found: ${t.resultId}`);if(r.noteId!==e.id)throw new lv(`RESULT_NOTE_MISMATCH`,`Result ${t.resultId} does not belong to note ${e.id}`);return{results:VT(r,await n(r))}}if(t.mode===`latest-for-section`||t.mode===`all-for-section`){let n=QO(await this.storage.getSessionsForSection(e.id,t.blockId));if(t.mode===`all-for-section`){let e=$O(n,t.limit);return{results:await this.payloadOf(e[0]),extendedResults:e}}return{results:await this.payloadOf(n[0])}}let r=QO(await this.storage.getSessionsForNote(e.id));if(t.mode===`all-for-note`){let e=$O(r,t.limit);return{results:await this.payloadOf(e[0]),extendedResults:e}}return{results:await this.payloadOf(r[0])}}async payloadOf(e){return e?VT(e,this.storage.getEventsByResult?await this.storage.getEventsByResult(e.id):[]):void 0}},tk=new ek;function nk(e){return Object.entries(e).filter(([e])=>e.startsWith(`markdown/dashboards/`)).map(([e,t])=>{let{meta:n}=Jv(t),r=e.split(`/`).pop().replace(/\.md$/,``);return{slug:typeof n.slug==`string`&&n.slug?n.slug:r,title:typeof n.title==`string`&&n.title?n.title:r,rawContent:t}}).sort((e,t)=>e.title.localeCompare(t.title))}function rk(e){return e.map(e=>{let{meta:t}=Jv(e.rawContent);if(t.dashboard!==`true`)return null;let n=typeof t.slug==`string`&&t.slug?t.slug:null,r=typeof t.title==`string`&&t.title?t.title:n??e.id;return n?{noteId:e.id,slug:n,title:r,rawContent:e.rawContent}:null}).filter(e=>e!==null)}function ik(e,t){let n=ST(),r=(0,V.useMemo)(()=>n?nk(n):[],[n]),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!0);return(0,V.useEffect)(()=>{if(!e){a(null),s(!1);return}let t=!1;return s(!0),tk.listNotes({kind:`dashboard`}).then(n=>{if(t)return;let i=rk(n).find(t=>t.slug===e);if(i)a({slug:e,title:i.title,rawContent:i.rawContent,editable:!0,noteId:i.noteId});else{let t=r.find(t=>t.slug===e);a(t?{slug:t.slug,title:t.title,rawContent:t.rawContent,editable:!1}:null)}}).catch(()=>{t||a(null)}).finally(()=>{t||s(!1)}),()=>{t=!0}},[e,t,r]),{source:i,loading:o}}function ak(){let e=ST(),t=(0,V.useMemo)(()=>e?nk(e):[],[e]),[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)(!0);return(0,V.useEffect)(()=>{let e=!1;return tk.listNotes({kind:`dashboard`}).then(n=>{if(e)return;let i=rk(n),a=new Set(i.map(e=>e.slug)),o=[...i.map(e=>({slug:e.slug,title:e.title,editable:!0})),...t.filter(e=>!a.has(e.slug)).map(e=>({slug:e.slug,title:e.title,editable:!1}))];e||r(o)}).catch(()=>{e||r(t.map(e=>({slug:e.slug,title:e.title,editable:!1})))}).finally(()=>{e||a(!1)}),()=>{e=!0}},[t]),{items:n,loading:i}}var ok=/^#{1,6}\s+/;function sk(e){return(e??``).replace(ok,``).trim()}function ck(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function lk(){return ck(new Date)}function uk(e){return e<lk()}function dk(e){let t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2])-1,i=Number(t[3]),a=new Date(n,r,i),o=ck(a);return o===e?{dateKey:o,date:a}:null}function fk(e){let t=dk(e);if(!t)throw Error(`Invalid journal date: ${e}`);return t.date.getTime()}function pk({persistence:e,uuid:t=C}){let n=new Map;return{async create(n){let r=n.journalDate?fk(n.journalDate):Date.now();return e.createNote({id:t(),title:sk(n.title),rawContent:n.rawContent,tags:n.tags??[],targetDate:r,journalDate:n.journalDate||void 0,type:n.type??`journal`,slug:n.slug,sourceId:n.sourceId})},getById(t){return e.getNote({id:t},{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},resolve(t){return e.getNote(t,{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},async listByDate(t){return fk(t),(await e.listNotes({journalDate:t,kind:`journal`,projection:`summary`})).sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id))},update(t,r,i){let a=t.id,o=sk(r.match(/^#\s+(.+)$/m)?.[1]?.trim()),s=t.sourceRevision;if(s===void 0)return Promise.reject(Error(`Loaded Note source revision is required`));let c=0;for(;c<t.rawContent.length&&c<r.length&&t.rawContent[c]===r[c];)c++;let l=t.rawContent.length,u=r.length;for(;l>c&&u>c&&t.rawContent[l-1]===r[u-1];)l--,u--;let d=Ma(t.blocks??{},i?.changes??[{from:c,to:l,insert:r.slice(c,u)}]);for(let e of i?.retainedBlocks??[]){let n=Object.values(t.blocks??{}).find(t=>t.from===e.from&&t.to===e.to);n&&(d[n.id]={...n,from:e.nextFrom,to:e.nextTo})}let f=Aa(r,{sourceRevision:s,registeredWidgets:wa,blocks:d}),p=async()=>e.mutateNote({id:a},{rawContent:r,blocks:f,expectedSourceRevision:s,metadata:o?{title:o}:void 0}),m=(n.get(a)??Promise.resolve()).then(p,p);n.set(a,m);let h=()=>{n.get(a)===m&&n.delete(a)};return m.then(h,h),m},moveToDate(t,n){let r=fk(n);return e.mutateNote({id:t},{metadata:{journalDate:n,targetDate:r}})},delete(t){return e.deleteNote({id:t})}}}var mk=pk({persistence:tk});function hk({persistence:e,journal:t}){async function n(n){let r=await e.listNotes({kind:`dashboard`});for(let e of r){if(n&&e.id===n)continue;let{meta:r,body:i}=Jv(e.rawContent);if(r.dashboard!==`true`||r[`dashboard.active`]!==`true`)continue;let a={...r};delete a[`dashboard.active`],await t.update(e,`---\n${Qv(a)}\n---\n${i}`)}}return{async createDashboard(e=pg){return await n(),t.create({title:e,rawContent:hg(e),type:`dashboard`,sourceId:`dashboards`})},async cloneDashboard(e,r,i){await n();let{meta:a,body:o}=Jv(r),s={...a,slug:e};i&&(s.title=i);let c=`---\n${Qv(s)}\n---\n${o}`;return t.create({title:typeof s.title==`string`?s.title:e,rawContent:c,type:`dashboard`,sourceId:`dashboards`})}}}var gk=hk({persistence:tk,journal:mk}),_k=[{query:`sum:totalVolume{discipline:strength} by {week}`,label:`Weekly strength volume`,question:`Is strength volume rising?`},{query:`avg:tis{effort:thruster} by {week}`,label:`Thruster time-in-motion`,question:`Is time-in-motion improving?`},{query:`sum:totalReps{discipline:strength} by {effort}`,label:`Reps by lift`,question:`Where do the reps go?`},{query:`last:sessionLoad{note:benchmark} by {session}`,label:`Benchmark loads`,question:`Is session load dropping?`},{query:`sum:sessionLoad{} by {intensity, week}`,label:`Polarized weekly load`,question:`Is my intensity 80/20?`},{query:`avg:calc.acwr{} by {day}`,label:`Injury risk (ACWR)`,question:`Am I spiking my workload?`},{query:`count:totalReps{tags:mobility} by {week}`,label:`Mobility habit`,question:`Did I do mobility work?`},{query:`avg:tis{} by {round}`,label:`TIS by round`,question:`Where does the pace fall apart?`},{query:`sum:totalVolume{} by {effort}`,label:`Volume by lift`,question:`Where does the volume go?`},{query:`:note{tags:pr,source:journal}`,label:`Find PR notes`,question:`Which notes are tagged PR?`},{query:`:note{type:wod,source:journal} last 8w`,label:`Recent workouts`,question:`What workouts did I do recently?`},{query:`:note{source:feeds}`,label:`Feed workouts`,question:`What workouts are in the library?`},{query:`:block{text:fran,source:all}`,label:`Find Fran everywhere`,question:`Which blocks mention Fran?`}],vk=(0,V.createContext)(()=>{});function yk({close:e,children:t}){return(0,H.jsx)(vk.Provider,{value:e,children:t})}function bk(){return(0,V.useContext)(vk)}function xk(e,t){if(!e)return!1;if(e===t)return!0;let n=X(e),r=X(t);return!n.error&&!r.error&&Jp(n)===Jp(r)}function Sk(e){let t=zt(),n=Mn(),r=bk(),{items:i,loading:a}=ak(),[o,s]=(0,V.useState)(!1),c=async()=>{s(!0);try{let e=await gk.createDashboard(),{meta:t}=Jv(e.rawContent),i=typeof t.slug==`string`&&t.slug?t.slug:e.id;n(AO(i)),r()}finally{s(!1)}},l=t.pathname===`/dashboards`,u=l?new URLSearchParams(t.search).get(`q`):null;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-1 px-2 py-3`,"data-testid":`dashboards-nav-panel`,children:[(0,H.jsx)(Ck,{label:`Explorer`,active:l,onClick:()=>{n(kO()),r()}}),l?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Examples`}),_k.map(e=>(0,H.jsx)(Ck,{label:e.label,title:e.question,active:xk(u,e.query),onClick:()=>{n(OO({q:e.query})),r()}},e.query))]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Dashboards`}),a?(0,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`Loading…`}):i.length===0?(0,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`No dashboards yet.`}):i.map(e=>(0,H.jsx)(Ck,{label:e.title,badge:e.editable?void 0:`prebuilt`,active:t.pathname===`/dashboard/${e.slug}`||t.pathname===`/d/${e.slug}`,onClick:()=>{n(AO(e.slug)),r()}},e.slug)),(0,H.jsxs)(`button`,{type:`button`,onClick:c,disabled:o,"data-testid":`dashboards-nav-new`,className:`mt-2 flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-muted-foreground hover:bg-muted hover:text-foreground transition-colors disabled:opacity-50`,children:[(0,H.jsx)(ft,{className:`size-3.5`}),`New dashboard`]})]})]})}function Ck({label:e,active:t,onClick:n,badge:r,title:i}){return(0,H.jsxs)(`button`,{type:`button`,onClick:n,title:i,className:U(`flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-left transition-colors`,t?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,H.jsx)(`span`,{className:U(`size-2 rounded-full shrink-0`,t?`bg-primary`:`bg-border`)}),(0,H.jsx)(`span`,{className:`truncate`,children:e}),r&&(0,H.jsx)(`span`,{className:`ml-auto text-[9px] font-bold uppercase tracking-wide text-muted-foreground/50 shrink-0`,children:r})]})}function wk({children:e}){return(0,H.jsx)(H.Fragment,{children:e})}var Tk=(0,V.forwardRef)(function(e,t){return(0,H.jsx)(it,{children:(0,H.jsx)(Tt,{...e,to:e.href,ref:t})})});function Ek({className:e,...t}){return(0,H.jsx)(`nav`,{...t,className:en(e,`flex h-full min-h-0 flex-col`)})}function Dk({className:e,...t}){return(0,H.jsx)(`div`,{...t,className:en(e,`flex flex-col border-b border-zinc-950/5 p-4 dark:border-white/5 [&>[data-slot=section]+[data-slot=section]]:mt-2.5`)})}function Ok({className:e,...t}){return(0,H.jsx)(`div`,{...t,className:en(e,`flex flex-1 flex-col overflow-y-auto p-4 [&>[data-slot=section]+[data-slot=section]]:mt-8`)})}function kk({className:e,...t}){let n=(0,V.useId)();return(0,H.jsx)(ut,{id:n,children:(0,H.jsx)(`div`,{...t,"data-slot":`section`,className:en(e,`flex flex-col gap-0.5`)})})}var Ak=(0,V.forwardRef)(function({current:e,className:t,children:n,...r},i){let a=en(`group flex w-full items-center gap-3 rounded-xl px-2 py-2.5 text-left text-base/6 font-medium text-foreground sm:py-2 sm:text-sm/5 transition-all duration-200`,`[&>[data-slot=icon]]:size-6 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:text-muted-foreground sm:[&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:transition-colors`,`[&>[data-slot=icon]:last-child]:ml-auto [&>[data-slot=icon]:last-child]:size-5 sm:[&>[data-slot=icon]:last-child]:size-4`,`[&>[data-slot=avatar]]:-m-0.5 [&>[data-slot=avatar]]:size-7 sm:[&>[data-slot=avatar]]:size-6`,`data-[hover]:bg-primary/10 data-[hover]:text-primary data-[hover]:[&>[data-slot=icon]]:text-primary`,`data-[active]:bg-primary/15 data-[active]:scale-[0.98]`,`data-[current]:bg-primary/10 data-[current]:text-primary data-[current]:[&>[data-slot=icon]]:text-primary font-bold`);return(0,H.jsxs)(`span`,{className:en(t,`relative`),children:[e&&(0,H.jsx)(Ut.span,{layoutId:`current-indicator`,className:`absolute inset-y-2 -left-4 w-1 rounded-full bg-primary shadow-[0_0_8px_rgba(129,140,248,0.5)]`}),typeof r.href==`string`?(0,H.jsx)(Sn,{as:Tk,...r,className:a,"data-current":e?`true`:void 0,ref:i,children:(0,H.jsx)(wk,{children:n})}):(0,H.jsx)(Vn,{...r,className:en(`cursor-default`,a),"data-current":e?`true`:void 0,ref:i,children:(0,H.jsx)(wk,{children:n})})]})});function jk({className:e,...t}){return(0,H.jsx)(`span`,{...t,className:en(e,`truncate`)})}var Mk={bookmark:gr,calendar:pt,"clipboard-list":$n,clock:It,dumbbell:ne,flame:Ve,folder:Ge,"flask-conical":N,heart:wr,rss:vn,star:Oe,tag:ie,activity:v},Nk=new yv(`wodwiki.routeWqlShortcuts.v1`,$T?rE:void 0);function Pk(e,t){return{id:`all`,label:e,icon:t,wql:``}}var Fk={"/journal":`All entries`,"/catalogs":`All catalogs`,"/feeds":`All feeds`,"/playgrounds":`All playgrounds`,"/efforts":`All Efforts`,"/sessions":`All Sessions`},Ik={"/journal":`calendar`,"/catalogs":`library`,"/feeds":`rss`,"/playgrounds":`flask-conical`,"/efforts":`dumbbell`,"/sessions":`clipboard-list`};function Lk(e){let t=Rk(e);return[Pk(Fk[t]??`Landing link`,Ik[t]??`bookmark`)]}function Rk(e){return e.startsWith(`/`)?e:`/${e}`}function zk(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`object`||!r||Array.isArray(r))continue;let e=r;typeof e.id!=`string`||!e.id.trim()||n.has(e.id)||typeof e.label!=`string`||!e.label.trim()||typeof e.icon!=`string`||!Mk[e.icon]||typeof e.wql==`string`&&(e.to!==void 0&&(typeof e.to!=`string`||!/^\/(?!\/)/.test(e.to))||(n.add(e.id.trim()),t.push({id:e.id.trim(),label:e.label.trim(),icon:e.icon,wql:e.wql.trim(),...typeof e.to==`string`?{to:e.to}:{}})))}return t}function Bk(e,t=Nk){return zk(t.get(Rk(e)))}function Vk(e,t=Nk){let n=Rk(e);if(t.getRaw(n)!=null){let n=Bk(e,t);return n.some(e=>e.id===`all`)?n:[Lk(e)[0],...n]}return Lk(e)}async function Hk(e,t,n=Nk){let r=Rk(e),i=zk(t);if($T){try{await aE(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlShortcuts] server write failed:`,e),!1}return qk(),!0}return n.set(r,i),n.getRaw(r)===JSON.stringify(i)&&(qk(),!0)}var Uk=0,Wk=new Set;function Gk(e){return Wk.add(e),()=>{Wk.delete(e)}}function Kk(){return Uk}function qk(){Uk++;for(let e of Wk)e()}function Jk(e,t=Nk){return(0,V.useSyncExternalStore)(Gk,Kk),Vk(e,t)}function Yk(e){return ip(e)?Jp({...e,filters:(e.filters??[]).map(e=>({...e,values:[...e.values??[]].sort((e,t)=>e.value.localeCompare(t.value))})).sort((e,t)=>e.key.localeCompare(t.key)||Number(e.negate)-Number(t.negate)||e.values.map(e=>e.value).join(`|`).localeCompare(t.values.map(e=>e.value).join(`|`))),groupBy:[...e.groupBy??[]].sort((e,t)=>e.localeCompare(t))}):Jp(e)}function Xk(e,t){return e.to?t.pathname===e.to||t.pathname.startsWith(`${e.to}/`):Zk(e.wql,t.query)}function Zk(e,t){if(!e.trim())return t.trim()===``;if(t.trim()===``)return!1;if(t===e)return!0;let n=X(t),r=X(e);return!n.error&&!r.error&&Yk(n)===Yk(r)}var Qk=`w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/40`;function $k({open:e,onOpenChange:t,route:n,editing:r=null,initialQuery:i=``}){let[a,o]=(0,V.useState)(r?.label??``),[s,c]=(0,V.useState)(r?.icon??`bookmark`),[l,u]=(0,V.useState)(r?r.wql:i),[d,f]=(0,V.useState)(null);(0,V.useEffect)(()=>{e&&(o(r?.label??``),c(r?.icon??`bookmark`),u(r?r.wql:i),f(null))},[e,r,i]);let p=r!==null&&!!r.to,m=r?.id!==`all`,h=a.trim(),g=l.trim(),_=g?Wx(g).error??null:null,v=h?null:`Label is required.`,y=!!h&&!p&&(!m||!!g)&&!_;return(0,H.jsx)(Ib,{open:e,onClose:()=>t(!1),title:r?`Edit shortcut`:`Save search shortcut`,description:`Saved shortcuts appear in this route's navigation panel. Stored ${$T?`on the server.`:`in this browser only.`}`,footer:(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(W,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t(!1),children:`Cancel`}),(0,H.jsx)(W,{type:`submit`,form:`save-wql-shortcut-form`,size:`sm`,disabled:!y,"data-testid":`shortcut-save`,children:`Save`})]}),children:(0,H.jsxs)(`form`,{id:`save-wql-shortcut-form`,onSubmit:async e=>{if(e.preventDefault(),!y)return;let i={id:r?.id??crypto.randomUUID(),label:h,icon:s,wql:p?r.wql:g,...r?.to===void 0?{}:{to:r.to}};if(!await Hk(n,[...Vk(n).filter(e=>e.id!==i.id),i])){f(`Couldn’t save — storage is unavailable. Your input is kept.`);return}t(!1)},className:`flex flex-col gap-4`,noValidate:!0,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`shortcut-label`,className:`text-xs font-semibold text-muted-foreground`,children:`Label`}),(0,H.jsx)(`input`,{id:`shortcut-label`,value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Strength this month`,"data-testid":`shortcut-label-input`,"aria-invalid":v?!0:void 0,className:Qk}),v&&(0,H.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-label-error`,children:v})]}),p?(0,H.jsxs)(`p`,{className:`rounded-md border border-border/60 bg-muted/30 px-3 py-2 text-xs text-muted-foreground`,children:[`Route action — always opens `,r?.to,`. Label and icon are editable.`]}):(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`shortcut-query`,className:`text-xs font-semibold text-muted-foreground`,children:`Query (WQL)`}),(0,H.jsx)(`textarea`,{id:`shortcut-query`,rows:2,value:l,onChange:e=>u(e.target.value),placeholder:m?`find …`:`Empty — the plain route landing`,"data-testid":`shortcut-query-input`,"aria-invalid":_?!0:void 0,className:`${Qk} font-mono text-xs`}),_?(0,H.jsxs)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-query-error`,children:[`Couldn't parse — `,_]}):!g&&(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:m?`A shortcut needs a query.`:`Empty — opens the plain route landing.`})]}),(0,H.jsxs)(`fieldset`,{className:`space-y-1.5`,children:[(0,H.jsx)(`legend`,{className:`text-xs font-semibold text-muted-foreground`,children:`Icon`}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Object.entries(Mk).map(([e,t])=>(0,H.jsxs)(`label`,{title:e,className:s===e?`cursor-pointer rounded-md border border-primary bg-primary/10 p-1.5 text-primary`:`cursor-pointer rounded-md border border-border p-1.5 text-muted-foreground hover:text-foreground`,children:[(0,H.jsx)(`input`,{type:`radio`,name:`shortcut-icon`,value:e,checked:s===e,onChange:()=>c(e),"aria-label":`Icon ${e}`,"data-testid":`shortcut-icon-${e}`,className:`sr-only`}),(0,H.jsx)(t,{className:`size-4`,"aria-hidden":`true`})]},e))})]}),d&&(0,H.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-storage-error`,children:d})]})})}var eA=`/palette`,tA=new yv(`wodwiki.routeWql.v1`,$T?rE:void 0),nA=[...vf,...yf],rA=[{id:`date`,label:`Date`},{id:`week`,label:`Week`},{id:`month`,label:`Month`},{id:`year`,label:`Year`},{id:`discipline`,label:`Discipline`},{id:`tag`,label:`Tags`},{id:`source`,label:`Source`}],iA={notes:`note`,blocks:`block`,efforts:`effort`,collections:`feeds`};function aA(e){return e.startsWith(`/`)?e:`/${e}`}function oA(e){if(Array.isArray(e))return e.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim())}function sA(e,t,n){let r=[],i=[],a=new Set;for(let o of e){let e=n[o]??o;if(!t.includes(e)){i.includes(o)||i.push(o);continue}a.has(e)||(a.add(e),r.push(e))}return{options:r,invalid:i}}var cA={"/sessions":`/results`,"/dashboards":`/dashboard`,"/feeds":`/collections`};function lA(e){return e.replace(/^:(collections?)(?![\w:])/,e=>e===`:collections`?`:feeds`:`:feed`).replace(/(^|[{,\s])source:collections(?![\w:])/g,`$1source:feeds`).replace(/(^|[{,\s])type:collection(?![\w:])/g,`$1type:feed`)}function uA(e,t=tA){let n=aA(e),r=cA[n],i=t.get(n,{alias:r});if(!i)return{};let a=oA(i.typeOptions),o=oA(i.groupByOptions),s=a&&sA(a,nA,iA),c=o&&sA(o,rA.map(e=>e.id),{});return{defaultWql:typeof i.defaultWql==`string`&&i.defaultWql.trim().length>0?lA(i.defaultWql.trim()):void 0,typeOptions:s?.options,groupByOptions:c?.options,...s?.invalid.length?{invalidTypeOptions:s.invalid}:{},...c?.invalid.length?{invalidGroupByOptions:c.invalid}:{}}}async function dA(e,t,n=tA){let r=aA(e),i={defaultWql:t.defaultWql?.trim()||void 0,typeOptions:oA(t.typeOptions),groupByOptions:oA(t.groupByOptions)};if($T){try{await aE(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlConfig] server write failed:`,e),!1}return!0}return n.set(r,i),!0}async function fA(e,t=tA){let n=aA(e),r=cA[n];if($T){try{await oE(r?[t.qualify(n),t.qualify(r)]:[t.qualify(n)])}catch(e){return console.error(`[routeWqlConfig] server delete failed:`,e),!1}return!0}return t.remove(n,r),!0}function pA(e){let t=uA(e.route);return!t.defaultWql&&!t.typeOptions?e:{...e,defaultWql:t.defaultWql??e.defaultWql,scopeOptions:t.typeOptions?t.typeOptions.filter(e=>yf.includes(e)):e.scopeOptions}}function mA(e,t){if(e)switch(e.type){case`route`:t.navigate(e.to,{replace:!(e.pushHistory??!0)});break;case`query`:t.setQueryParam(e.params,!(e.pushHistory??!1));break;case`scroll`:t.scrollToSection?.(e.sectionId);break;case`view-source`:t.swapSource?.(e.source);break;case`view-state`:t.setPanelState?.(e.state,e.open);break;case`pipeline`:{let n=e.steps.filter(e=>e.type===`scroll`),r=e.steps.filter(e=>e.type!==`scroll`);r.forEach(e=>mA(e,t)),n.length>0&&(r.length>0?setTimeout(()=>{n.forEach(e=>mA(e,t))},0):n.forEach(e=>mA(e,t)));break}case`call`:e.handler();break;case`external`:window.open(e.href,`_blank`,`noopener,noreferrer`)}}function hA(e,t=`dialog`){if(e.action===`set-source`)return{type:`view-source`,source:e.value};if(e.action===`navigate`)return/^https?:\/\//.test(e.value)?{type:`external`,href:e.value}:{type:`route`,to:e.value};if(e.action===`set-state`){if(e.value===`note`)return{type:`view-state`,state:`note`};if(e.value===`review`)return{type:`view-state`,state:`review`};if(e.value===`track`)return{type:`view-state`,state:`track`,open:t}}return{type:`none`}}function gA(e,t){let n=e.pipeline.map(t=>hA(t,e.open));return{id:`btn-${t}`,label:e.label,action:n.length===1?n[0]:{type:`pipeline`,steps:n}}}function _A(e){let{action:t}=e;return t.type===`view-state`?t.state===`track`:t.type===`pipeline`&&t.steps.some(e=>e.type===`view-state`&&e.state===`track`)}var vA=`sticky top-0 z-10 bg-card`;function yA({title:e,defaultOpen:t=!1,collapsible:n=!0,children:r,count:i,className:a,sticky:o,trailing:s,bodyClassName:c,buttonClassName:l}){if(!n)return(0,H.jsxs)(`div`,{className:a,children:[(0,H.jsxs)(`div`,{className:en(`group flex w-full items-center gap-1 px-2 py-3 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground/80`,o&&vA),children:[(0,H.jsx)(`div`,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{children:e}),i!==void 0&&(0,H.jsx)(`span`,{className:`ml-auto flex size-5 items-center justify-center rounded-full bg-border/50 text-[9px] font-black tabular-nums text-muted-foreground`,children:i})]}),(0,H.jsx)(`div`,{className:en(`flex flex-col gap-0.5`),children:r})]});let u=(0,H.jsxs)(Ke,{className:en(`group flex items-center gap-1 px-2 py-3 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground/80 hover:text-primary transition-colors`,s?`min-w-0 flex-1`:`w-full`,l,o&&!s&&vA),children:[(0,H.jsx)(I,{className:`size-4 shrink-0 fill-muted-foreground/50 transition-transform duration-300 group-data-[open]:rotate-90 group-hover:fill-primary`}),(0,H.jsx)(`span`,{children:e}),i!==void 0&&(0,H.jsx)(`span`,{className:`ml-auto flex size-5 items-center justify-center rounded-full bg-border/50 text-[9px] font-black tabular-nums text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors`,children:i})]});return(0,H.jsxs)(d,{as:`div`,defaultOpen:t,className:a,children:[s?(0,H.jsxs)(`div`,{className:en(`flex w-full items-center bg-card`,o&&vA),children:[u,s]}):u,(0,H.jsx)(Tr,{className:en(`flex flex-col gap-0.5`,c),transition:!0,children:r})]})}var bA=null,xA=new Set;function SA(e){bA=e;for(let e of xA)e()}function CA(e){return xA.add(e),()=>{xA.delete(e)}}function wA(){return bA}function TA(){return(0,V.useSyncExternalStore)(CA,wA)}var EA={tags:`tag`},DA={source:!0},OA={text:!0};function kA(e){return EA[e]??e}function AA(e){return!!OA[e]}function jA(e){switch(e){case`note`:return`note`;case`effort`:return`effort`;default:return null}}function MA(e){return e.wildcard?`${e.value}*`:e.value}function NA(e,t){return e.filters.map((e,t)=>({filter:e,filterIndex:t})).filter(({filter:e})=>e.key===t).map(({filter:e,filterIndex:n})=>({filterIndex:n,key:t,negate:e.negate,values:e.values.map(e=>({value:e.value,wildcard:e.wildcard}))}))}function PA(e,t,n){let r=[];for(let i of NA(e,t))i.values.forEach((e,t)=>{let a=MA(e);r.push({display:a,negate:i.negate,label:n?.get(i.negate?a:e.value),occurrence:i,valueIndex:t})});return r}function FA(e,t,n){if(t===`source`)return HA(e,n);let r=X(e);if(r.error||!ip(r))return e;let i=NA(r,t).filter(e=>!e.negate);if(i.length>0&&!DA[t]){let r=i[i.length-1];return GA(e,t,r,[...r.values.map(MA),n].join(`|`))}if(i.length>0)return GA(e,t,i[i.length-1],n);let a=Hx(e,KA(t,kA(t),``),n);return a.valid?a.wql:e}function IA(e,t,n){let r=n.occurrence.values.filter((e,t)=>t!==n.valueIndex).map(MA).join(`|`);return GA(e,t,n.occurrence,r||null)}function LA(e,t,n){let r=X(e);if(r.error||!ip(r))return`off`;if(t===`source`&&WA(r)===n)return`include`;let i=NA(r,t);return i.some(e=>!e.negate&&e.values.some(e=>MA(e)===n))?`include`:i.some(e=>e.negate&&e.values.some(e=>MA(e)===n))?`exclude`:`off`}function RA(e,t,n,r){return LA(e,t,n)===r?e:r===`off`?zA(e,t,n,`both`):r===`include`?FA(zA(e,t,n,`negative`),t,n):BA(zA(e,t,n,`positive`),t,n)}function zA(e,t,n,r){let i=e;for(;;){let e=X(i);if(e.error||!ip(e))return i;if(t===`source`&&r!==`negative`&&WA(e)===n){let e=HA(i,null);if(e===i)return i;i=e;continue}let a=NA(e,t).find(e=>(r===`both`||r===(e.negate?`negative`:`positive`))&&e.values.some(e=>MA(e)===n));if(!a)return i;let o=a.values.findIndex(e=>MA(e)===n),s=IA(i,t,{display:n,negate:a.negate,occurrence:a,valueIndex:o});if(s===i)return i;i=s}}function BA(e,t,n){let r=X(e);if(r.error||!ip(r))return e;let i=NA(r,t).filter(e=>e.negate);if(i.length>0){let r=i[i.length-1];return r.values.some(e=>MA(e)===n)?e:GA(e,t,r,[...r.values.map(MA),n].join(`|`))}let a=Hx(e,{...KA(t,kA(t),``),negate:!0},n);return a.valid?a.wql:e}function VA(e,t){let n=t.trim(),r=e,i=!1;for(;;){let e=X(r);if(e.error||!ip(e))return r;let t=NA(e,`text`).filter(e=>!e.negate);if(t.length===0){if(!n||i)return r;let e=Hx(r,KA(`text`,kA(`text`),``),n);return e.valid?e.wql:r}if(!n){let e=GA(r,`text`,t[0],null);if(e===r)return r;r=e;continue}if(!i){let e=GA(r,`text`,t[0],n);if(e===r)return r;r=e,i=!0;continue}if(t.length===1)return r;let a=GA(r,`text`,t[1],null);if(a===r)return r;r=a}}function HA(e,t){let n=X(e);if(n.error||!ip(n))return e;let r=new Set,i=n.filters.filter(e=>{if(e.key!==`source`||e.negate)return!0;let t=e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`);return!r.has(t)&&(r.add(t),!0)}),a=bf.find(t=>e.startsWith(`:${t}`)),o=a?xf[a]:void 0;if(!t){if(!o)return Jp({...n,sourceScope:void 0,filters:i});let e=!1,t=i.filter(t=>e||t.key!==`source`||t.negate?!0:t.values.length===1&&!t.values[0].wildcard&&t.values[0].value===o?(e=!0,!1):!0);return Jp({...n,sourceScope:void 0,filters:t})}let s=t===`journal`?`:journal`:t===`feeds`?`:catalog`:t===`playground`?`:playground`:`:note{source:${t}}`,c=X(s.startsWith(`:note`)?s:`${s}{}`);if(c.error||!ip(c)||!c.filters.length)return e;let l=i.findIndex(e=>e.key===`source`&&!e.negate),u=l>=0?i.map((e,t)=>t===l?c.filters[0]:e):[...i,c.filters[0]];return Jp({...n,sourceScope:void 0,filters:u})}function UA(e,t,n){let r=X(e);if(r.error||!ip(r))return e;let i=r.groupBy??[];if(n===i.some(e=>e.toLowerCase()===t.toLowerCase()))return e;let a=n?[...i,t.toLowerCase()]:i.filter(e=>e.toLowerCase()!==t.toLowerCase());return Jp({...r,groupBy:a.length>0?a:void 0})}function WA(e){return e.filters.find(e=>e.key===`source`&&!e.negate)?null:e.sourceScope?.length===1?e.sourceScope[0]:null}function GA(e,t,n,r){let i=Hx(e,{...KA(t,kA(t),n.values.map(MA).join(`|`)),filterIndex:n.filterIndex,negate:n.negate},r);return i.valid?i.wql:e}function KA(e,t,n){return{id:`nav-${e}`,type:t,...Qb(t),value:n}}function qA(e,t,n){let r=new Map,i=(e,t)=>{let n=r.get(e);n?(n.count+=1,!n.label&&t&&(n.label=t)):r.set(e,{value:e,label:t,count:1})},a=uf.includes(t)?t:t===`tags`?`tags`:null;if(a&&!n.tagMembership)return[];let o=(e===`note`||e===`block`)&&t===`effort`;if(o&&!n.effortMembership)return[];let s=e=>{r.has(e)||r.set(e,{value:e,count:0})};for(let r of n.entries)switch(`${e}:${t}`){case`note:catalog`:case`block:catalog`:r.catalog&&i(r.catalog);break;case`note:type`:r.noteType&&i(r.noteType);break;case`block:type`:r.block?.dataType&&i(r.block.dataType);break;case`note:page`:i(r.noteType===`page`?`true`:`false`,r.noteType===`page`?`Pages`:`Non-pages`);break;case`effort:discipline`:r.effort?.discipline&&i(r.effort.discipline);break;case`effort:intensity`:r.effort?.intensityTier&&i(r.effort.intensityTier);break;case`effort:origin`:r.effort?.registrySource&&i(r.effort.registrySource);break;case`effort:effort`:r.effort?.slug&&i(r.effort.slug,r.effort.label);break;case`session:result`:r.execution?.resultId&&i(r.execution.resultId,r.title);break;case`session:block`:{let e=new Set;for(let t of r.execution?.events??[])t.blockContentId&&e.add(t.blockContentId);for(let t of e)i(t,r.title);break}case`session:note`:{let e=new Set;for(let t of r.execution?.events??[])t.noteId&&e.add(t.noteId);for(let t of e)i(t,r.title);break}case`session:plane`:for(let e of r.execution?.events??[])i(e.outputType);break;default:if(a){let e=n.tagMembership.get(r.catalog??r.noteId??r.id)??n.tagMembership.get(r.noteId??r.id)??[];for(let t of e)(a===`tags`||t.type===a)&&i(t.label)}else if(o){let e=n.effortMembership.get(r.catalog??r.noteId??r.id)??n.effortMembership.get(r.noteId??r.id)??[];for(let t of e)i(t)}}if(e===`note`&&t===`source`)return yf.map(e=>({value:e,count:n.entries.filter(t=>yh({id:t.noteId??t.id,sourceId:t.sourceId,type:t.noteType},e)).length})).filter(e=>e.count>0);if(e===`block`&&t===`source`)return yf.map(e=>({value:e,count:n.entries.filter(t=>yh({id:t.id,noteId:t.noteId,sourceId:t.sourceId,type:void 0},e)).length})).filter(e=>e.count>0);if((e===`note`||e===`block`)&&t===`note`)for(let e of n.entries)i(e.noteId??e.id,e.title);if(a)for(let e of n.tagMembership.values())for(let t of e)(a===`tags`||t.type===a)&&s(t.label);if(o)for(let e of n.effortMembership.values())for(let t of e)s(t);return[...r.values()].sort((e,t)=>t.count-e.count||(e.label??e.value).localeCompare(t.label??t.value))}var JA=e=>e.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})),YA={source:{enabled:!1,expectedValues:JA(yf)},page:{enabled:!1,expectedValues:[{value:`true`,label:`Pages`},{value:`false`,label:`Non-pages`}]},intensity:{expectedValues:JA(gf)},discipline:{expectedValues:JA(Yp)}};function XA(e){return YA[e]??{}}var ZA=[],QA=e=>new URLSearchParams(e.search).get(`q`)??``;async function $A(){let[e,t]=await Promise.all([Z.getNoteTagLabelsBatch(),Z.getAllNotes()]);for(let n of t){let t=e.get(n.id);if(!n.catalog||!t?.length)continue;let r=e.get(n.catalog);if(r)for(let e of t)r.some(t=>t.label===e.label)||r.push(e);else e.set(n.catalog,t.map(({label:e,type:t})=>({label:e,type:t})))}return e}function ej(e,t,n){let r=new URLSearchParams(e.search);r.set(`q`,n),t(`${e.pathname}?${r.toString()}`)}function tj({profile:e}){let t=zt(),n=Mn(),r=TA(),i=QA(t),a=(0,V.useMemo)(()=>pA(e),[e]),o=i&&!X(i).error?i:a.defaultWql,s=(0,V.useMemo)(()=>X(o),[o]),c=(0,V.useMemo)(()=>!s.error&&ip(s)?s:null,[s]),l=r&&r.pathname===t.pathname&&r.query===o?r.entries:null,[u,d]=(0,V.useState)(null);(0,V.useEffect)(()=>{r&&r.pathname===t.pathname&&d(r)},[r,t.pathname]);let f=l===null&&u!==null&&u.pathname===t.pathname,p=l??(f?u.entries:ZA),m=c?jA(c.target):null,h=!!c&&!!m&&NA(c,m).length>0,g=(0,V.useMemo)(()=>c?Hf(c.target,`find`).filter(e=>e!==m||h):[],[c,m,h]),_=g.some(e=>e===`tags`||uf.includes(e)),v=g.includes(`effort`),[y,b]=(0,V.useState)({tags:null,efforts:null});(0,V.useEffect)(()=>{if(!_&&!v||p.length===0)return;let e=!1;return Promise.all([_?$A():null,v?Z.getEffortSlugsByNoteBatch():null]).then(([t,n])=>{e||b({tags:t,efforts:n})}).catch(()=>{e||b({tags:null,efforts:null})}),()=>{e=!0}},[_,v,p]);let x=(0,V.useMemo)(()=>({entries:p,tagMembership:y.tags,effortMembership:y.efforts}),[p,y]),S=(0,V.useRef)(new Map),C=S.current.get(t.pathname);C||(C=new Map,S.current.set(t.pathname,C));let w=l!==null||u!==null,T=e=>ej(t,n,e),E=c?WA(c):null,D=(0,V.useMemo)(()=>g.filter(e=>XA(e).enabled!==!1).sort((e,t)=>(XA(e).order??0)-(XA(t).order??0)),[g]);return c?(0,H.jsx)(`div`,{className:`flex flex-col`,"aria-busy":f||void 0,children:D.map(e=>(0,H.jsx)(`div`,{"data-testid":`conditions-section-${e}`,children:(0,H.jsx)(oj,{query:o,parsed:c,entryKey:e,facetContext:x,labels:nj(c.target,e,p),headScope:e===`source`?E:null,pending:f,hasEverPublished:w,routeKnownOptions:C,onApply:T})},e))}):null}function nj(e,t,n){let r=new Map,i=(e,t)=>{e&&!r.has(e)&&r.set(e,t)};if((e===`note`||e===`block`)&&t===`note`)for(let e of n)i(e.noteId??e.id,e.title);if(e===`session`)for(let e of n){t===`result`&&i(e.execution?.resultId,e.title);for(let n of e.execution?.events??[])t===`block`&&i(n.blockContentId,e.title),t===`note`&&i(n.noteId,e.title)}return r}var rj=[`off`,`include`,`exclude`],ij={off:`Off`,include:`Include`,exclude:`Exclude`},aj={off:a,include:Cn,exclude:Qn};function oj({query:e,parsed:t,entryKey:n,facetContext:r,labels:i,headScope:a,pending:o,hasEverPublished:s,routeKnownOptions:c,onApply:l}){let u=zt(),d=XA(n);if(d.enabled===!1)return null;let f=Qb(kA(n)),p=AA(n)||cj[n]!==void 0,m=PA(t,n,i),h=n===`text`?NA(t,`text`).filter(e=>!e.negate).map(e=>e.values.map(e=>e.value).join(`|`)).join(`|`):null,g=qA(t.target,n,r),_=c.get(n);_||(_=new Map,c.set(n,_));for(let e of g)_.has(e.value)||_.set(e.value,{value:e.value,label:e.label,count:0});let v=new Map(m.map(e=>[e.display,e])),y=new Map(g.map(e=>[e.value,e])),b=d.expectedValues,x=[],S=new Set,C=(t,r,i)=>{S.has(t)||(S.add(t),x.push({value:t,label:i??r?.label??v.get(t)?.label??t,count:r?r.count:null,state:LA(e,n,t)}))};if(s){for(let e of b??[]){let t=y.get(e.value);C(e.value,t,e.label)}if(!b){for(let e of g)C(e.value,e);for(let e of _.values())C(e.value,y.get(e.value),e.label)}}for(let e of m)C(e.display,y.get(e.display));n===`source`&&a&&C(a,y.get(a));let w=new Map((b??[]).map((e,t)=>[e.value,t]));x.sort((e,t)=>(w.get(e.value)??2**53-1)-(w.get(t.value)??2**53-1)||e.label.localeCompare(t.label));let T=u.pathname.startsWith(`/journal`),E=d.hideZero||n===`effort`||T&&(n===`tags`||uf.includes(n))?x.filter(e=>e.count!==null&&e.count>0||e.state!==`off`):x;return E.length===0&&!p?null:(0,H.jsxs)(yA,{title:d.label??f.label,count:E.length,defaultOpen:x.some(e=>e.state!==`off`)||p,sticky:!0,buttonClassName:`gap-1.5 py-1.5 text-[11px] font-semibold normal-case tracking-normal [&>span:last-child]:h-auto [&>span:last-child]:w-auto [&>span:last-child]:min-w-0 [&>span:last-child]:rounded-sm [&>span:last-child]:px-1 [&>span:last-child]:bg-transparent [&>span:last-child]:text-[10px] [&>span:last-child]:font-semibold [&>span:last-child]:text-muted-foreground`,bodyClassName:`px-6`,children:[(0,H.jsx)(`ul`,{className:`flex flex-col`,children:E.map(t=>(0,H.jsx)(sj,{query:e,entryKey:n,row:t,pending:o,onApply:l},t.value))}),p&&(0,H.jsx)(lj,{entryKey:n,placeholder:f.placeholder,pending:o,currentText:h??void 0,onTextChange:t=>l(VA(e,t)),onApply:t=>l(RA(e,n,t,`include`))})]})}function sj({query:e,entryKey:t,row:n,pending:r,onApply:i}){let a=rj[(rj.indexOf(n.state)+1)%rj.length],o=aj[n.state],s=`${ij[a]} “${n.label}” (currently ${ij[n.state]})`,c=n.count===0&&n.state===`off`;return(0,H.jsx)(`li`,{"data-testid":`conditions-row-${t}:${n.value}`,className:en(`px-1 py-0.5`,r&&`opacity-60`,c&&`opacity-40`),children:(0,H.jsxs)(`div`,{className:`flex h-11 items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:en(`min-w-0 flex-1 truncate text-xs leading-4`,c?`text-muted-foreground`:`text-foreground`),children:n.label}),n.count!==null&&(0,H.jsx)(`span`,{className:`text-[10px] leading-4 tabular-nums text-muted-foreground`,children:n.count}),(0,H.jsx)(`button`,{type:`button`,"data-testid":`conditions-state-${t}:${n.value}`,"data-state":n.state,onClick:()=>i(RA(e,t,n.value,a)),disabled:r,"aria-label":s,title:s,className:en(`flex size-11 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-default`,n.state===`include`&&`bg-primary/10 text-primary`,n.state===`exclude`&&`bg-destructive/10 text-destructive`,n.state===`off`&&`text-muted-foreground`),children:(0,H.jsx)(o,{"aria-hidden":`true`,className:`size-4`})})]})})}var cj={note:!0,block:!0,result:!0};function lj({entryKey:e,placeholder:t,pending:n,currentText:r,onTextChange:i,onApply:a}){let[o,s]=(0,V.useState)(``),c=bk();return e===`text`?(0,H.jsxs)(`div`,{className:`px-1 py-1.5`,children:[(0,H.jsx)(`input`,{value:r??``,onChange:e=>i?.(e.target.value),placeholder:t,"aria-label":t,"data-testid":`conditions-input-text`,className:`h-8 w-full min-w-0 rounded-md border border-border/60 bg-background px-2 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary/40`}),(0,H.jsxs)(`button`,{type:`button`,"data-testid":`conditions-jump-wql-text`,onClick:()=>{c(),document.querySelector(`[data-testid="stream-query-bar"]`)?.click()},className:`mt-1 inline-flex items-center gap-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground`,children:[(0,H.jsx)(Ft,{"aria-hidden":`true`,className:`size-3`}),`Edit in WQL bar`]})]}):(0,H.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=o.trim();t&&(a(t),s(``))},className:`flex items-center gap-1 px-1 py-1.5`,children:[(0,H.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:t,"aria-label":t,"data-testid":`conditions-input-${e}`,disabled:n,className:`h-8 min-w-0 flex-1 rounded-md border border-border/60 bg-background px-2 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary/40`}),(0,H.jsx)(`button`,{type:`submit`,"aria-label":`Add ${t}`,"data-testid":`conditions-add-${e}`,disabled:n||!o.trim(),className:`flex size-8 shrink-0 items-center justify-center rounded-md border border-border/60 text-muted-foreground transition-colors hover:bg-foreground/5 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50`,children:(0,H.jsx)(ft,{"aria-hidden":`true`,className:`size-3.5`})})]})}var uj=e=>new URLSearchParams(e.search).get(`q`)??``;function dj(e){let t=pA(e.profile);return function(n){let r=zt(),i=Mn(),{openCreateJournal:a}=BD(),o=uj(r),s=o&&!X(o).error?o:t.defaultWql,c=e=>ej(r,i,e),l=bk(),u=Jk(e.route),d={pathname:r.pathname,query:uj(r)},f=u.find(e=>e.id===`all`)??null,p=u.filter(e=>e.to===void 0&&e.id!==`all`),m=f?.wql??``,h=f?.label??e.landingLabel,g=f?Mk[f.icon]:e.icon,_=d.query&&!X(d.query).error&&!u.some(e=>Xk(e,d))?s:null,[v,y]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`-mx-4 flex flex-col gap-1 py-3`,"data-testid":`conditions-nav-panel`,children:[(0,H.jsxs)(kk,{className:`px-6`,children:[e.createAction&&(()=>{let t=e.createAction.icon??ft;return(0,H.jsx)(`div`,{className:`mb-2`,children:(0,H.jsxs)(`button`,{type:`button`,"data-testid":e.createAction.testId??`conditions-nav-create`,onClick:()=>{e.createAction.onClick({navigate:i,openCreateJournal:e=>a?.(e)}),l()},className:`flex w-full items-center justify-center gap-2 rounded-lg bg-primary/10 px-3 py-2 text-xs font-semibold text-primary transition-all hover:bg-primary hover:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary shadow-sm`,children:[(0,H.jsx)(t,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{children:e.createAction.label})]})})})(),_?(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,"data-testid":`conditions-nav-custom`,children:[(0,H.jsxs)(Ak,{current:!0,className:`min-w-0 flex-1`,title:_,"aria-label":`Custom query: ${_}`,onClick:()=>{c(_),l()},children:[g&&(0,H.jsx)(g,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:`Custom`})]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>y(!0),"aria-label":`Save shortcut`,title:`Save shortcut`,"data-testid":`conditions-nav-custom-save`,className:`grid size-8 shrink-0 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,H.jsx)(Fe,{className:`size-4`,"aria-hidden":`true`})}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>{m?c(m):i(e.route),l()},"aria-label":`Clear query`,title:`Clear to all entries`,"data-testid":`conditions-nav-custom-clear`,className:`grid size-8 shrink-0 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,H.jsx)(Te,{className:`size-4`,"aria-hidden":`true`})})]}):(0,H.jsxs)(Ak,{onClick:()=>{m?c(m):i(e.route),l()},current:m&&f?Xk(f,d):e.familyActive(r)&&uj(r).trim()===``,children:[g&&(0,H.jsx)(g,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:h})]}),p.map(t=>{let n=Mk[t.icon];return(0,H.jsxs)(Ak,{onClick:()=>{t.wql?c(t.wql):i(e.route),l()},current:Xk(t,d),"data-testid":`nav-shortcut-${t.id}`,children:[(0,H.jsx)(n,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:t.label})]},`shortcut-${t.id}`)}),(e.extraChildren??[]).map(e=>{let t=e.action.type===`route`?e.action.to:null,n=t?u.find(e=>e.to===t):null,a=n?Mk[n.icon]:null;return(0,H.jsxs)(Ak,{onClick:()=>{e.action&&(mA(e.action,{navigate:i,setQueryParam:()=>{}}),l())},current:e.isActive?.(r)??!1,"data-testid":n?`nav-shortcut-${n.id}`:void 0,children:[a?(0,H.jsx)(a,{"data-slot":`icon`}):e.icon&&(0,H.jsx)(e.icon,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:n?.label??e.label})]},e.id)})]}),(0,H.jsx)(tj,{profile:e.profile}),(0,H.jsx)($k,{open:v,onOpenChange:y,route:e.route,initialQuery:s})]})}}var fj=`https://www.buymeacoffee.com/sergeigolos`,pj=({className:e,...t})=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 884 1279`,fill:`currentColor`,className:e,"aria-hidden":`true`,...t,children:[(0,H.jsx)(`path`,{d:`M791.109 297.518L790.231 297.002L788.201 296.383C789.018 297.072 790.04 297.472 791.109 297.518V297.518Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M803.896 388.891L802.916 389.166L803.896 388.891Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M791.484 297.377C791.359 297.361 791.237 297.332 791.118 297.29C791.111 297.371 791.111 297.453 791.118 297.534C791.252 297.516 791.379 297.462 791.484 297.377V297.377Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M791.113 297.529H791.244V297.447L791.113 297.529Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M803.111 388.726L804.591 387.883L805.142 387.573L805.641 387.04C804.702 387.444 803.846 388.016 803.111 388.726V388.726Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M793.669 299.515L792.223 298.138L791.243 297.605C791.77 298.535 792.641 299.221 793.669 299.515V299.515Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M430.019 1186.18C428.864 1186.68 427.852 1187.46 427.076 1188.45L427.988 1187.87C428.608 1187.3 429.485 1186.63 430.019 1186.18Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M641.187 1144.63C641.187 1143.33 640.551 1143.57 640.705 1148.21C640.705 1147.84 640.86 1147.46 640.929 1147.1C641.015 1146.27 641.084 1145.46 641.187 1144.63Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M619.284 1186.18C618.129 1186.68 617.118 1187.46 616.342 1188.45L617.254 1187.87C617.873 1187.3 618.751 1186.63 619.284 1186.18Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M281.304 1196.06C280.427 1195.3 279.354 1194.8 278.207 1194.61C279.136 1195.06 280.065 1195.51 280.684 1195.85L281.304 1196.06Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M247.841 1164.01C247.704 1162.66 247.288 1161.35 246.619 1160.16C247.093 1161.39 247.489 1162.66 247.806 1163.94L247.841 1164.01Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M472.623 590.836C426.682 610.503 374.546 632.802 306.976 632.802C278.71 632.746 250.58 628.868 223.353 621.274L270.086 1101.08C271.74 1121.13 280.876 1139.83 295.679 1153.46C310.482 1167.09 329.87 1174.65 349.992 1174.65C349.992 1174.65 416.254 1178.09 438.365 1178.09C462.161 1178.09 533.516 1174.65 533.516 1174.65C553.636 1174.65 573.019 1167.08 587.819 1153.45C602.619 1139.82 611.752 1121.13 613.406 1101.08L663.459 570.876C641.091 563.237 618.516 558.161 593.068 558.161C549.054 558.144 513.591 573.303 472.623 590.836Z`,fill:`#FFDD00`}),(0,H.jsx)(`path`,{d:`M78.6885 386.132L79.4799 386.872L79.9962 387.182C79.5987 386.787 79.1603 386.435 78.6885 386.132V386.132Z`,fill:`#0D0C22`}),(0,H.jsx)(`path`,{d:`M879.567 341.849L872.53 306.352C866.215 274.503 851.882 244.409 819.19 232.898C808.711 229.215 796.821 227.633 788.786 220.01C780.751 212.388 778.376 200.55 776.518 189.572C773.076 169.423 769.842 149.257 766.314 129.143C763.269 111.85 760.86 92.4243 752.928 76.56C742.604 55.2584 721.182 42.8009 699.88 34.559C688.965 30.4844 677.826 27.0375 666.517 24.2352C613.297 10.1947 557.342 5.03277 502.591 2.09047C436.875 -1.53577 370.983 -0.443234 305.422 5.35968C256.625 9.79894 205.229 15.1674 158.858 32.0469C141.91 38.224 124.445 45.6399 111.558 58.7341C95.7448 74.8221 90.5829 99.7026 102.128 119.765C110.336 134.012 124.239 144.078 138.985 150.737C158.192 159.317 178.251 165.846 198.829 170.215C256.126 182.879 315.471 187.851 374.007 189.968C438.887 192.586 503.87 190.464 568.44 183.618C584.408 181.863 600.347 179.758 616.257 177.304C634.995 174.43 647.022 149.928 641.499 132.859C634.891 112.453 617.134 104.538 597.055 107.618C594.095 108.082 591.153 108.512 588.193 108.942L586.06 109.252C579.257 110.113 572.455 110.915 565.653 111.661C551.601 113.175 537.515 114.414 523.394 115.378C491.768 117.58 460.057 118.595 428.363 118.647C397.219 118.647 366.058 117.769 334.983 115.722C320.805 114.793 306.661 113.611 292.552 112.177C286.134 111.506 279.733 110.801 273.333 110.009L267.241 109.235L265.917 109.046L259.602 108.134C246.697 106.189 233.792 103.953 221.025 101.251C219.737 100.965 218.584 100.249 217.758 99.2193C216.932 98.1901 216.482 96.9099 216.482 95.5903C216.482 94.2706 216.932 92.9904 217.758 91.9612C218.584 90.9319 219.737 90.2152 221.025 89.9293H221.266C232.33 87.5721 243.479 85.5589 254.663 83.8038C258.392 83.2188 262.131 82.6453 265.882 82.0832H265.985C272.988 81.6186 280.026 80.3625 286.994 79.5366C347.624 73.2302 408.614 71.0801 469.538 73.1014C499.115 73.9618 528.676 75.6996 558.116 78.6935C564.448 79.3474 570.746 80.0357 577.043 80.8099C579.452 81.1025 581.878 81.4465 584.305 81.7391L589.191 82.4445C603.438 84.5667 617.61 87.1419 631.708 90.1703C652.597 94.7128 679.422 96.1925 688.713 119.077C691.673 126.338 693.015 134.408 694.649 142.03L696.731 151.752C696.786 151.926 696.826 152.105 696.852 152.285C701.773 175.227 706.7 198.169 711.632 221.111C711.994 222.806 712.002 224.557 711.657 226.255C711.312 227.954 710.621 229.562 709.626 230.982C708.632 232.401 707.355 233.6 705.877 234.504C704.398 235.408 702.75 235.997 701.033 236.236H700.895L697.884 236.649L694.908 237.044C685.478 238.272 676.038 239.419 666.586 240.486C647.968 242.608 629.322 244.443 610.648 245.992C573.539 249.077 536.356 251.102 499.098 252.066C480.114 252.57 461.135 252.806 442.162 252.771C366.643 252.712 291.189 248.322 216.173 239.625C208.051 238.662 199.93 237.629 191.808 236.58C198.106 237.389 187.231 235.96 185.029 235.651C179.867 234.928 174.705 234.177 169.543 233.397C152.216 230.798 134.993 227.598 117.7 224.793C96.7944 221.352 76.8005 223.073 57.8906 233.397C42.3685 241.891 29.8055 254.916 21.8776 270.735C13.7217 287.597 11.2956 305.956 7.64786 324.075C4.00009 342.193 -1.67805 361.688 0.472751 380.288C5.10128 420.431 33.165 453.054 73.5313 460.35C111.506 467.232 149.687 472.807 187.971 477.556C338.361 495.975 490.294 498.178 641.155 484.129C653.44 482.982 665.708 481.732 677.959 480.378C681.786 479.958 685.658 480.398 689.292 481.668C692.926 482.938 696.23 485.005 698.962 487.717C701.694 490.429 703.784 493.718 705.08 497.342C706.377 500.967 706.846 504.836 706.453 508.665L702.633 545.797C694.936 620.828 687.239 695.854 679.542 770.874C671.513 849.657 663.431 928.434 655.298 1007.2C653.004 1029.39 650.71 1051.57 648.416 1073.74C646.213 1095.58 645.904 1118.1 641.757 1139.68C635.218 1173.61 612.248 1194.45 578.73 1202.07C548.022 1209.06 516.652 1212.73 485.161 1213.01C450.249 1213.2 415.355 1211.65 380.443 1211.84C343.173 1212.05 297.525 1208.61 268.756 1180.87C243.479 1156.51 239.986 1118.36 236.545 1085.37C231.957 1041.7 227.409 998.039 222.9 954.381L197.607 711.615L181.244 554.538C180.968 551.94 180.693 549.376 180.435 546.76C178.473 528.023 165.207 509.681 144.301 510.627C126.407 511.418 106.069 526.629 108.168 546.76L120.298 663.214L145.385 904.104C152.532 972.528 159.661 1040.96 166.773 1109.41C168.15 1122.52 169.44 1135.67 170.885 1148.78C178.749 1220.43 233.465 1259.04 301.224 1269.91C340.799 1276.28 381.337 1277.59 421.497 1278.24C472.979 1279.07 524.977 1281.05 575.615 1271.72C650.653 1257.95 706.952 1207.85 714.987 1130.13C717.282 1107.69 719.576 1085.25 721.87 1062.8C729.498 988.559 737.115 914.313 744.72 840.061L769.601 597.451L781.009 486.263C781.577 480.749 783.905 475.565 787.649 471.478C791.392 467.391 796.352 464.617 801.794 463.567C823.25 459.386 843.761 452.245 859.023 435.916C883.318 409.918 888.153 376.021 879.567 341.849ZM72.4301 365.835C72.757 365.68 72.1548 368.484 71.8967 369.792C71.8451 367.813 71.9483 366.058 72.4301 365.835ZM74.5121 381.94C74.6842 381.819 75.2003 382.508 75.7337 383.334C74.925 382.576 74.4089 382.009 74.4949 381.94H74.5121ZM76.5597 384.641C77.2996 385.897 77.6953 386.689 76.5597 384.641V384.641ZM80.672 387.979H80.7752C80.7752 388.1 80.9645 388.22 81.0333 388.341C80.9192 388.208 80.7925 388.087 80.6548 387.979H80.672ZM800.796 382.989C793.088 390.319 781.473 393.726 769.996 395.43C641.292 414.529 510.713 424.199 380.597 419.932C287.476 416.749 195.336 406.407 103.144 393.382C94.1102 392.109 84.3197 390.457 78.1082 383.798C66.4078 371.237 72.1548 345.944 75.2003 330.768C77.9878 316.865 83.3218 298.334 99.8572 296.355C125.667 293.327 155.64 304.218 181.175 308.09C211.917 312.781 242.774 316.538 273.745 319.36C405.925 331.405 540.325 329.529 671.92 311.91C695.905 308.686 719.805 304.941 743.619 300.674C764.835 296.871 788.356 289.731 801.175 311.703C809.967 326.673 811.137 346.701 809.778 363.615C809.359 370.984 806.139 377.915 800.779 382.989H800.796Z`,fill:`#0D0C22`})]}),mj={"/guide/start":0,"/guide/protocols":1,"/guide/structure":2,"/guide/metrics":3,"/guide/clock":4,"/guide/wql":5,"/guide/dashboards":6,"/guide/sessions":7};function hj(e){return e.filter(e=>!e.route.startsWith(`/collections`)).filter(e=>e.page.frontmatter?.type===`guide`).sort((e,t)=>(mj[e.route]??99)-(mj[t.route]??99)).map(e=>({id:`guide-${e.route}`,label:e.page.sections[0]?.heading??`Untitled`,level:2,icon:w,action:{type:`route`,to:e.route},isActive:t=>t.pathname===e.route}))}function gj(e){return[{id:`home-new-journal`,label:`New journal entry`,level:2,icon:cr,variant:`notable`,action:{type:`route`,to:`/journal?create=1`},isActive:()=>!1},...hj(e)]}var _j=(e,...t)=>t.some(t=>e===t||e.startsWith(`${t}/`)),vj={id:`journal-all-notes`,label:`All`,level:2,icon:Ce,action:{type:`route`,to:`/journal?q=%3Anote%7B!source%3Aplayground%7D`},isActive:e=>e.pathname===Q.journal&&new URLSearchParams(e.search).get(`q`)===`:note{!source:playground}`};function yj(e){return{id:e.id,label:e.label,level:1,icon:e.icon,action:{type:`route`,to:e.route},isActive:t=>e.familyActive(t),applyFooter:!0,panel:dj({landingLabel:e.landingLabel,icon:e.icon,route:e.route,profile:e.profile,extraChildren:e.extraChildren,familyActive:e.familyActive,createAction:e.createAction})}}var bj={id:`collections-catalog-crosswalk`,label:`Catalog crosswalk`,level:2,icon:on,action:{type:`route`,to:Q.catalogs},isActive:e=>e.pathname===Q.catalogs},xj=[{id:`journal`,label:`Journal`,landingLabel:`All entries`,icon:pt,route:Q.journal,profile:eO,familyActive:e=>_j(e.pathname,`/journal`),extraChildren:[vj],createAction:{label:`New journal entry`,icon:cr,testId:`journal-create-entry`,onClick:({openCreateJournal:e,navigate:t})=>{e?e({mode:`blank`}):t(`/journal?create=1`)}}},{id:`catalogs`,label:`Catalogs`,landingLabel:`All catalogs`,icon:on,route:Q.catalogs,profile:tO,familyActive:e=>e.pathname===Q.catalogs},{id:`feeds`,label:`Feeds`,landingLabel:`All feeds`,icon:vn,route:Q.feeds,profile:nO,familyActive:e=>_j(e.pathname,`/feeds`,`/feed`,`/c`)&&e.pathname!==Q.catalogs,extraChildren:[bj],createAction:{label:`New note`,testId:`collections-create-note`,onClick:({openCreateJournal:e,navigate:t})=>{e?e({mode:`source`}):t(`/feeds?create=1&mode=source`)}}},{id:`playgrounds`,label:`Playgrounds`,landingLabel:`All playgrounds`,icon:N,route:Q.playgrounds,profile:aO,familyActive:e=>_j(e.pathname,`/playgrounds`,`/playground`),createAction:{label:`New playground`,testId:`playgrounds-create-playground`,onClick:({navigate:e})=>{e(`/playground`)}}}];function Sj(e,t=[]){let n=gj(t);return[{id:`home`,label:`Home`,level:1,icon:pe,action:{type:`route`,to:Q.home},isActive:e=>e.pathname===`/`||e.pathname===``||e.pathname.startsWith(`/guide/`)||e.pathname.startsWith(`/canvas`)||e.pathname===Q.home||e.pathname===Q.aiFirst||e.pathname.startsWith(`/ai-first/`),children:n},...xj.map(yj),{id:`dashboards`,label:`Dashboard`,level:1,icon:yn,action:{type:`route`,to:Q.dashboards},isActive:e=>e.pathname===Q.dashboards||e.pathname===`/dashboard`||e.pathname.startsWith(`/dashboard/`)||e.pathname.startsWith(`/d/`),panel:Sk},{id:`efforts`,label:`Efforts`,level:1,icon:ne,action:{type:`route`,to:Q.efforts},isActive:e=>PO(e.pathname),applyFooter:!0,panel:dj({landingLabel:`All Efforts`,icon:ne,route:Q.efforts,profile:rO,familyActive:e=>PO(e.pathname),createAction:{label:`New effort`,testId:`efforts-create-effort`,onClick:({navigate:e})=>{e(`/e/new?mode=create`)}}})},{id:`sessions`,label:`Sessions`,level:1,icon:$n,action:{type:`route`,to:Q.sessions},isActive:e=>e.pathname.startsWith(`/sessions`)||e.pathname.startsWith(`/session/`)||e.pathname.startsWith(`/results`),applyFooter:!0,panel:dj({landingLabel:`All Sessions`,icon:$n,route:Q.sessions,profile:iO,familyActive:e=>e.pathname.startsWith(`/sessions`)||e.pathname.startsWith(`/session/`)||e.pathname.startsWith(`/results`)})},{id:`settings`,label:`Settings`,level:1,icon:pn,action:{type:`route`,to:Q.settingsAppearance},isActive:e=>e.pathname.startsWith(`/settings`),children:[{id:`settings-profile`,label:`Profile`,level:2,icon:f,action:{type:`route`,to:Q.settingsProfile},isActive:e=>e.pathname===Q.settingsProfile},{id:`settings-appearance`,label:`Appearance`,level:2,icon:Re,action:{type:`route`,to:Q.settingsAppearance},isActive:e=>e.pathname===Q.settings||e.pathname===Q.settingsAppearance},{id:`settings-queries`,label:`Pages`,level:2,icon:ln,action:{type:`route`,to:Q.settingsQueries},isActive:e=>e.pathname===Q.settingsQueries},{id:`settings-tags`,label:`Tags`,level:2,icon:ie,action:{type:`route`,to:Q.settingsTags},isActive:e=>e.pathname===Q.settingsTags},{id:`settings-sync`,label:`Sync`,level:2,icon:r,action:{type:`route`,to:Q.settingsSync},isActive:e=>e.pathname===Q.settingsSync},{id:`settings-storage`,label:`Storage`,level:2,icon:$e,action:{type:`route`,to:Q.settingsStorage},isActive:e=>e.pathname===Q.settingsStorage},{id:`settings-system`,label:`System`,level:2,icon:tn,action:{type:`route`,to:Q.settingsSystem},isActive:e=>e.pathname===Q.settingsSystem}]},{id:`buy-me-a-coffee`,label:`Buy Me a Coffee`,level:1,icon:pj,action:{type:`external`,href:fj}}]}Sj(()=>{});var Cj={slate:{panel:`border-slate-500/35 shadow-slate-500/12`,accent:`from-slate-500/70 via-slate-400/25 to-transparent`,progress:`from-slate-500 to-slate-400`},amber:{panel:`border-amber-500/35 shadow-amber-500/12`,accent:`from-amber-500/75 via-amber-400/25 to-transparent`,progress:`from-amber-500 to-orange-400`},emerald:{panel:`border-emerald-500/35 shadow-emerald-500/12`,accent:`from-emerald-500/75 via-emerald-400/25 to-transparent`,progress:`from-emerald-500 to-teal-400`},sky:{panel:`border-sky-500/35 shadow-sky-500/12`,accent:`from-sky-500/75 via-sky-400/25 to-transparent`,progress:`from-sky-500 to-cyan-400`},violet:{panel:`border-violet-500/35 shadow-violet-500/12`,accent:`from-violet-500/75 via-fuchsia-400/25 to-transparent`,progress:`from-violet-500 to-fuchsia-400`},rose:{panel:`border-rose-500/35 shadow-rose-500/12`,accent:`from-rose-500/75 via-pink-400/25 to-transparent`,progress:`from-rose-500 to-pink-400`}};function wj(e){return e.proseChunks.filter(e=>e.kind===`prose`).map(e=>e.text).join(``)}function Tj(e){let t=new Map;for(let n of e.sections)for(let e of n.proseChunks)e.kind===`challenge`&&t.set(e.id,n.id);return t}function Ej(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`).replace(/^-+|-+$/g,``)}function Dj(e){let t=e.match(/^(#{1,6}) (.+)$/);if(!t)return null;let n=t[1].length,r=t[2],i=r.match(/\{([^}]+)\}$/),a=i?i[1].trim().split(/\s+/).filter(Boolean):[];return{level:n,text:i?r.slice(0,i.index).trim():r.trim(),attrs:a}}function Oj(e){let t={};for(let n of e){let e=n.match(/^([a-zA-Z][\w-]*):\s*(.+)$/);e&&(t[e[1]]=e[2].trim())}return t}function kj(e){let t=[];for(let n of e){let e=n.match(/^\s*-\s+([\w-]+):\s+(.+)$/);e&&t.push({action:e[1],value:e[2].trim()})}return t}function Aj(e){let t=e.split(`
69
+ `),n=Oj(t),r=[];for(let e of t){let t=e.match(/^button:\s*(.+)$/);if(!t)continue;let n=t[1].split(`|`).map(e=>e.trim()),i=n[0]??`Run`,a,o=[];for(let e of n.slice(1)){let t=e.match(/^open:\s*(view|dialog|route)$/);if(t){a=t[1];continue}o.push(`- ${e}`)}r.push({label:i,open:a,pipeline:kj(o)})}return{name:n.name??`view`,state:n.state??`note`,source:n.source??``,runtime:n.runtime,launch:n.launch,align:n.align??`right`,width:n.width??`50%`,buttons:r}}function jj(e){let t=e.split(`
70
+ `),n=``,r;for(let e of t){let t=e.match(/^target:\s*(.+)$/);if(t){n=t[1].trim();continue}let i=e.match(/^open:\s*(view|dialog|route)$/);if(i){r=i[1];continue}}return{target:n,open:r,pipeline:kj(t)}}function Mj(e){let t=e.split(`
71
+ `),n=`Button`,r=``,i;for(let e of t){let t=e.match(/^label:\s*(.+)$/);if(t){n=t[1].trim();continue}let a=e.match(/^target:\s*(.+)$/);if(a){r=a[1].trim();continue}let o=e.match(/^open:\s*(view|dialog|route)$/);if(o){i=o[1];continue}}return{label:n,target:r,open:i,pipeline:kj(t)}}function Nj(e){let t=Oj(e.split(`
72
+ `));return{label:t.label??`Example`,source:t.source??``}}function Pj(e){let t={},n={},r=!1;for(let i of e.split(`
73
+ `)){let e=i.trim();if(e===``)continue;let a=e.match(/^(\w[\w-]*):\s*(.*)$/);if(!a)continue;let o=a[1],s=a[2].trim().replace(/^["']|["']$/g,``);if(o===`validation`){r=!0;continue}r?n[o]=s:t[o]=s}if(!t.id)return null;let i={id:t.id,label:t.label??t.id};if(t.desc&&(i.desc=t.desc),Object.keys(n).length>0){let e={...n};for(let t of Object.keys(e)){let n=Number(e[t]);e[t]!==``&&!isNaN(n)&&String(n)===e[t]&&(e[t]=n)}i.validation=e}return i}function Fj(e){let t=e.split(`
74
+ `),n=[],r=[],i=!1,a=[],o=()=>{let e=Pj(a.join(`
75
+ `));e&&n.push(e),a=[]};for(let e of t){if(i){/^```\s*$/.test(e)?(o(),i=!1):a.push(e);continue}let t=e.match(/^```(\w+)\s*$/);if(t){t[1]===`quest`?i=!0:r.push(e);continue}r.push(e)}return i&&o(),{quests:n,body:r.join(`
76
+ `)}}function Ij(e){let t={};for(let n of e.split(`
77
+ `)){let e=n.trim();if(e===``)continue;let r=e.match(/^(\w[\w-]*):\s*(.*)$/);r&&(t[r[1]]=r[2].trim().replace(/^["']|["']$/g,``))}return!t.id||!t.title?null:{id:t.id,title:t.title,badge:t.badge||`trophy`,questIds:Lj(t.quests),sectionIds:Lj(t.sections)}}function Lj(e){if(!e)return[];let t=e.replace(/^\[|\]$/g,``).trim();return t?t.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean):[]}function Rj(e){let t=e.split(`
78
+ `),n=[],r=[],i=!1,a=[],o=()=>{let e=Ij(a.join(`
79
+ `));e&&n.push(e),a=[]};for(let e of t){if(i){/^```\s*$/.test(e)?(o(),i=!1):a.push(e);continue}let t=e.match(/^```(\w+)\s*$/);if(t){t[1]===`chapter`?i=!0:r.push(e);continue}r.push(e)}return i&&o(),{chapters:n,body:r.join(`
80
+ `)}}function zj(e){let t=e.match(/^\[\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\]$/);if(t)return[Number(t[1]),Number(t[2])]}function Bj(e){return e.trim().replace(/^["']|["']$/g,``)}function Vj(e){let t=[],n=-1,r=null,i=null,a=null;for(let o of e){if(o.trim()===``)continue;let e=o.match(/^\s*/)[0].length,s=o.trim(),c=s.match(/^-\s+([\w-]+):\s*(.*)$/);if(c&&(i!==`effects`||e<=n)){n===-1&&(n=e),r={id:Bj(c[2]),range:[0,1]},t.push(r),i=null,a=null;continue}if(c&&i===`effects`&&r){a={target:Bj(c[2]),stages:r.id?[r.id]:[]},(r.effects??=[]).push(a);continue}let l=s.match(/^(\w[\w-]*):\s*(.*)$/);if(!l||!r)continue;let u=l[1],d=l[2].trim();if(i===`ring`){if(r.ring&&r.ring!==!0&&(u===`tag`&&(r.ring.tag=Bj(d)),u===`key`&&(r.ring.key=Bj(d)),u===`lines`)){let e=zj(d);if(e){let t=Math.max(1,Math.round(e[0])),n=Math.max(1,Math.round(e[1]));r.ring.lines=[Math.min(t,n),Math.max(t,n)]}}continue}if(i===`effects`&&a){switch(u){case`target`:a.target=Bj(d);break;case`stages`:a.stages=Lj(d);break;case`opacity`:a.opacity=zj(d);break;case`translateY`:a.translateY=zj(d);break;case`ease`:(d===`linear`||d===`quad-out`)&&(a.ease=d);break;case`in`:a.in=zj(d)}continue}switch(u){case`range`:{let e=zj(d);e&&(r.range=e);break}case`screen`:(d===`editor`||d===`timer`||d===`analytics`)&&(r.screen=d);break;case`label`:r.label=Bj(d);break;case`source`:r.source=Bj(d);break;case`caption`:r.caption=Bj(d);break;case`accent`:r.accent=Bj(d);break;case`toast`:r.toast=Bj(d);break;case`quest`:r.quest=Bj(d);break;case`ring`:d===``?(r.ring={},i=`ring`):d===`true`&&(r.ring=!0);break;case`effects`:r.effects=[],a=null,i=`effects`}}return t}function Hj(e){try{let t=e.split(`
81
+ `),n=t.findIndex(e=>/^\s*stages:\s*$/.test(e)),r=Oj(n===-1?t:t.slice(0,n)),i=n===-1?[]:Vj(t.slice(n+1));return i.length===0?null:{runway:r.runway??`600vh`,screen:`editor`,typewriter:r.typewriter!==`false`,stages:i}}catch(e){return console.warn("[canvas] malformed ```scroll block:",e),null}}function Uj(e){let t=e.split(`
82
+ `),n=null,r={},i=[],a=!1,o=null,s=[],c=()=>{let e=Hj(s.join(`
83
+ `));e?o?r[o]?console.warn(`[canvas] duplicate named \`\`\`scroll:${o} block ignored`):r[o]=e:n===null?n=e:console.warn("[canvas] duplicate unnamed ```scroll block ignored"):console.warn("[canvas] ```scroll block ignored: missing or malformed stages"),s=[],o=null};for(let e of t){if(a){/^```\s*$/.test(e)?(c(),a=!1):s.push(e);continue}let t=e.match(/^```scroll(?::([\w-]+))?\s*$/);if(t){a=!0,o=t[1]??null;continue}i.push(e)}return a&&c(),{scroll:n,namedScrolls:r,body:i.join(`
84
+ `)}}function Wj(e){if(!e)return[];let t=[{token:`{{hero-carousel}}`,widget:`hero-carousel`}],n=[{kind:`prose`,text:e}];for(let{token:e,widget:r}of t){let t=[];for(let i of n){if(i.kind!==`prose`){t.push(i);continue}let n=i.text.split(e);for(let e=0;e<n.length;e++)e>0&&t.push({kind:`widget`,widget:r}),t.push({kind:`prose`,text:n[e]})}n=t}let r=/\{\{challenge:([^}]+)\}\}/g,i=[];for(let e of n){if(e.kind!==`prose`){i.push(e);continue}let t=e.text,n=0,a;for(r.lastIndex=0;(a=r.exec(t))!==null;)i.push({kind:`prose`,text:t.slice(n,a.index)}),i.push({kind:`challenge`,id:a[1].trim()}),n=a.index+a[0].length;i.push({kind:`prose`,text:t.slice(n)})}return n=i,n.filter(e=>e.kind!==`prose`||e.text!==``)}function Gj(e){let t=/^```(\w+)\n([\s\S]*?)^```[ \t]*$/gm,n=[],r;for(;(r=t.exec(e))!==null;)n.push({start:r.index,end:r.index+r[0].length,type:r[1],content:r[2]});let i,a=[],o=[],s=[],c=[];for(let e=0;e<n.length;e++){let{type:t,content:r}=n[e];if(t===`view`)i=Aj(r),c.push(null);else if(t===`command`)a.push(jj(r)),c.push(null);else if(t===`button`){let e=Mj(r);o.push(e),c.push(e)}else t===`example`&&s.push(Nj(r)),c.push(null)}let l=new Set([`view`,`command`,`example`]),u=[],d=0;for(let t=0;t<n.length;t++){let r=n[t],i=c[t];i?(u.push(...Wj(e.slice(d,r.start))),u.push({kind:`button`,button:i}),d=r.end):l.has(r.type)&&(u.push(...Wj(e.slice(d,r.start))),d=r.end)}return u.push(...Wj(e.slice(d))),{proseChunks:u,view:i,commands:a,buttons:o,examples:s}}function Kj(e,t=`/`){let{meta:n,body:r}=Jv(e);if(String(n.template??``)!==`canvas`)return null;let{quests:i,body:a}=Fj(r),{scroll:o,namedScrolls:s,body:c}=Uj(a),{chapters:l}=Rj(c),u=String(n.route??t),d=[],f=null,p=e=>{let{proseChunks:t,view:n,commands:r,buttons:i,examples:a}=Gj(e.lines.join(`
85
+ `)),o=e.attrs.find(e=>e.startsWith(`#`))?.slice(1),s=e.attrs.filter(e=>!e.startsWith(`#`)),c=e=>s.includes(e),l=e=>s.find(t=>t.startsWith(`${e}:`))?.slice(e.length+1);d.push({id:o||Ej(e.heading)||`section-${d.length}`,heading:e.heading,level:e.level,attrs:s,theme:l(`theme`)??`slate`,density:l(`density`)??`default`,isDark:c(`dark`),isFullBleed:c(`full-bleed`),isSticky:c(`sticky`),prose:wj({proseChunks:t}),proseChunks:t,view:n,commands:r,buttons:i,examples:a})},m=!1;for(let e of c.split(`
86
+ `)){/^`{3,}/.test(e)&&(m=!m);let t=m?null:Dj(e);t?(f&&p(f),f={heading:t.text,level:t.level,attrs:t.attrs,lines:[]}):f&&f.lines.push(e)}return f&&p(f),{template:`canvas`,route:u,type:n.type?String(n.type):void 0,sections:d,frontmatter:n,quests:i,chapters:l,scroll:o,namedScrolls:s}}function qj(e){if(!e)return`/`;let t=e.trim();return t.startsWith(`/`)||(t=`/`+t),t=t.replace(/\/+/g,`/`),t.length>1&&t.endsWith(`/`)&&(t=t.slice(0,-1)),t}function Jj(e,t){let n=qj(t);for(let t of e)if(t.route===n)return t.page;return null}function Yj(e){let t=qj(e),n=[t],r=t.match(/^\/p\/(.+)$/);if(r){let e=r[1];n.push(`/${e}`),n.push(`/guide/${e}`)}return n}function Xj(e,t){for(let n of Yj(t)){let t=Jj(e,n);if(t!==null)return t}return null}function Zj(e){let t=[];for(let[n,r]of Object.entries(e))if(n.match(/^markdown\/canvas\/(.+\.md)$/)){let e=Kj(r);e&&t.push({route:e.route,page:e});continue}return t}function Qj(e,t){return Xj(e,t)}function $j(){let e=ST();return(0,V.useMemo)(()=>e?Zj(e):[],[e])}function eM(e){let t=$j();return(0,V.useMemo)(()=>Qj(t,e),[t,e])}function tM({className:e,...t}){return(0,H.jsx)(`nav`,{...t,className:en(e,`flex flex-1 items-center gap-2 sm:gap-4 py-2.5 min-w-0`)})}var nM=(0,V.forwardRef)(function({current:e,className:t,children:n,...r},i){let a=en(`group relative flex min-w-0 items-center gap-3 rounded-lg p-2 text-left text-base/6 font-medium text-foreground sm:text-sm/5`,`[&>[data-slot=icon]]:size-6 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:fill-muted-foreground sm:[&>[data-slot=icon]]:size-5`,`[&>*:not(:nth-child(2)):last-child[data-slot=icon]]:ml-auto [&>*:not(:nth-child(2)):last-child[data-slot=icon]]:size-5 sm:[&>*:not(:nth-child(2)):last-child[data-slot=icon]]:size-4`,`[&>[data-slot=avatar]]:-m-0.5 [&>[data-slot=avatar]]:size-7 [&>[data-slot=avatar]]:[--avatar-radius:theme(borderRadius.md)] sm:[&>[data-slot=avatar]]:size-6`,`data-[hover]:bg-muted/50 data-[hover]:[&>[data-slot=icon]]:fill-foreground`,`data-[active]:bg-muted/50 data-[active]:[&>[data-slot=icon]]:fill-foreground`,`dark:data-[hover]:bg-white/5 dark:data-[hover]:[&>[data-slot=icon]]:fill-foreground`,`dark:data-[active]:bg-white/5 dark:data-[active]:[&>[data-slot=icon]]:fill-foreground`);return(0,H.jsxs)(`span`,{className:en(t,`relative`),children:[e&&(0,H.jsx)(Ut.span,{layoutId:`current-indicator`,className:`absolute inset-x-2 -bottom-2.5 h-0.5 rounded-full bg-foreground`}),typeof r.href==`string`?(0,H.jsx)(Tk,{...r,className:a,"data-current":e?`true`:void 0,ref:i,children:(0,H.jsx)(wk,{children:n})}):(0,H.jsx)(Vn,{...r,className:en(`cursor-default`,a),"data-current":e?`true`:void 0,ref:i,children:(0,H.jsx)(wk,{children:n})})]})});function rM(e){return e.charAt(0).toUpperCase()+e.slice(1).replace(/_/g,` `)}function iM(e){let t=e,n=t.key??t.metadata?.target;if(typeof n==`string`&&n.trim().length>0)return n;switch(e.type){case`rep`:return`reps`;case`distance`:return`distance`;case`resistance`:return`resistance`;default:return e.type}}function aM(e){let t={},n=e.flat();for(let e of n)if(e.value!==void 0&&typeof e.value==`number`){let n=iM(e),r=e.value;if(e.type===`duration`)continue;t[n]=(t[n]||0)+r}return t}var oM=class{fromOutputStatements(e,t,n=Bs){if(!e||e.length===0)return[];let r=e.map(e=>e.timeSpan.started).filter(e=>!isNaN(e)),i=t??(r.length>0?Math.min(...r):0);return e.map(e=>{let t=K.from(e.metrics,e.id),r=t.find(e=>e.type===`duration`),a=r?.value===void 0?void 0:r.value/1e3,o=t.find(e=>e.type===G.Elapsed),s=(typeof o?.value==`number`?o.value:0)/1e3,c=t.find(e=>e.type===G.Total),l=(typeof c?.value==`number`?c.value:0)/1e3,u=e.timeSpan?.started??i,d=e.timeSpan?.ended??n.nowMs(),f=aM([t.toArray()]),p=t.find(e=>e.type===`effort`||e.type===`action`||e.type===`duration`||e.type===`rounds`||e.type===`current-round`||e.type===`label`),m=p?.image||e.sourceBlockKey,h=p?.type||e.outputType,g=t.find(e=>e.type===G.Spans),_=Array.isArray(g?.value)?g.value:[],v=(_.length>0?_:e.timeSpan?[e.timeSpan]:[]).map(e=>({started:(e.started-i)/1e3,ended:e.ended===void 0?void 0:(e.ended-i)/1e3}));return{id:e.id,name:m,type:h,startTime:(u-i)/1e3,endTime:(d-i)/1e3,absoluteStartTime:u,duration:a,elapsed:s,total:l,parentId:e.parent??null,depth:e.stackLevel,metric:f,lane:e.stackLevel,spans:v,metrics:t,tags:(()=>{let t=Ra(e);return t.length?t:void 0})(),context:{outputType:e.outputType,sourceStatementId:e.sourceStatementId,sourceBlockKey:e.sourceBlockKey,completionReason:e.completionReason},spanType:e.outputType}})}toAnalyticsGroup(e){let t=[],n=new Set;e.forEach(e=>Object.keys(e.metric).forEach(e=>n.add(e)));let r={power:{id:`power`,label:`Power`,unit:`W`,color:`#8b5cf6`,dataKey:`power`,icon:`Zap`},heart_rate:{id:`heart_rate`,label:`Heart Rate`,unit:`bpm`,color:`#ef4444`,dataKey:`heart_rate`,icon:`Activity`},cadence:{id:`cadence`,label:`Cadence`,unit:`rpm`,color:`#3b82f6`,dataKey:`cadence`,icon:`Wind`},speed:{id:`speed`,label:`Speed`,unit:`km/h`,color:`#10b981`,dataKey:`speed`,icon:`Gauge`},resistance:{id:`resistance`,label:`Resistance`,unit:`kg`,color:`#f59e0b`,dataKey:`resistance`,icon:`Dumbbell`},reps:{id:`reps`,label:`Reps`,unit:`reps`,color:`#6366f1`,dataKey:`reps`,icon:`Hash`},calories:{id:`calories`,label:`Calories`,unit:`cal`,color:`#f97316`,dataKey:`calories`,icon:`Flame`},duration:{id:`duration`,label:`Duration`,unit:`s`,color:`#0ea5e9`,dataKey:`duration`,icon:`Timer`},elapsed:{id:`elapsed`,label:`Elapsed`,unit:`s`,color:`#14b8a6`,dataKey:`elapsed`,icon:`Clock`},total:{id:`total`,label:`Total`,unit:`s`,color:`#f43f5e`,dataKey:`total`,icon:`Timer`}},i=[];return n.forEach(e=>{r[e]?i.push(r[e]):i.push({id:e,label:rM(e),unit:``,color:`#888888`,dataKey:e})}),i.length>0&&t.push({id:`performance`,name:`Performance`,graphs:i}),t}filterByTags(e,t){return!t||t.length===0?e:e.filter(e=>{let n=e.tags||[];return t.every(e=>n.includes(e))})}filterByType(e,t){return e.filter(e=>e.spanType===t)}getDebugContext(e){return e.context||{}}isFromStrategy(e,t){return this.getDebugContext(e).strategyUsed===t}};function sM(e){if(!e)return{segments:[],groups:[]};let t=new oM,n=e.getOutputStatements().filter(e=>e.outputType===`segment`||e.outputType===`analytics`||e.outputType===`milestone`),r=e.getLiveAnalytics?.()??[],i=r.length>0?[...n,...r]:n,a=t.fromOutputStatements(i);return a.length===0?{segments:[],groups:[]}:{segments:a,groups:t.toAnalyticsGroup(a)}}function cM(e,t,n){if(!e||e.length===0)return{segments:[],groups:[]};let r=new oM,i=e.filter(e=>e.outputType===`segment`||e.outputType===`analytics`||e.outputType===`milestone`),a=new Map,o=[];for(let e=i.length-1;e>=0;e--){let t=i[e];if(t.outputType===`analytics`){let e=t.metrics.find(e=>e.type===G.Label),n=t.metrics.find(e=>e.type!==G.Label&&typeof e.value==`number`);if(e&&n){let r=[String(e.value??e.image??``),String(n.value),n.unit??``].join(`|`),i=a.get(r);if(i!==void 0&&Math.abs(i-t.timeSpan.started)<1e3)continue;a.set(r,t.timeSpan.started)}}o.unshift(t)}let s=r.fromOutputStatements(o,t,n);return s.length===0?{segments:[],groups:[]}:{segments:s,groups:r.toAnalyticsGroup(s)}}function lM(e){return e.toLocaleDateString(`en-US`,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`})}function uM(e){return e.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function dM(e){return e.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}function fM(e){return e.toLocaleString(`en-US`,{dateStyle:`medium`,timeStyle:`short`})}function pM(e){return e.toLocaleString(`en-US`,{dateStyle:`medium`,timeStyle:`medium`})}function mM(e,t){let n=e.blocks[t.blockId],r=n?``:e.rawContent.endsWith(`
87
+ `)?`
88
+ `:`
89
+
90
+ `,i=n?.from??e.rawContent.length,a=n?.to??i,o=r+t.rawContent,s=o.length-(a-i),c={};for(let[n,r]of Object.entries(e.blocks))n!==t.blockId&&(c[n]=r.from>=a?{...r,from:r.from+s,to:r.to+s}:r);return c[t.blockId]={id:t.blockId,kind:t.kind,version:n?.version??t.version,sourceRevision:e.sourceRevision,from:i+r.length,to:i+o.length,...t.dialect?{dialect:t.dialect}:{},...t.sport?{sport:t.sport}:{}},{...e,rawContent:e.rawContent.slice(0,i)+o+e.rawContent.slice(a),blocks:c}}function hM({noteId:e,sourceRevision:t,blocks:n={},persistence:r=tk,onRevert:i}){let[a,o]=(0,V.useState)([]),[s,c]=(0,V.useState)(``),[l,u]=(0,V.useState)(0),[d,f]=(0,V.useState)(0),[p,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let t=!1;return m(null),r.getNoteBlockHistory(e).then(e=>{t||o(e.toSorted((e,t)=>e.savedAt-t.savedAt||e.version-t.version))}).catch(e=>{t||m(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,t,r]);let _=Array.from(new Set(a.map(e=>e.blockId))),v=_.includes(s)?s:_[0]??``,y=a.filter(e=>e.blockId===v).toSorted((e,t)=>e.version-t.version),b=y.find(e=>e.version===l)??y[0],x=y.find(e=>e.version===d)??y.at(-1),S=async()=>{if(!(!b||!i)){g(!0),m(null);try{await i(b),o(await r.getNoteBlockHistory(e))}catch(e){m(e instanceof Error?e.message:String(e))}finally{g(!1)}}};return(0,H.jsxs)(`details`,{className:`rounded-lg border border-border p-3`,children:[(0,H.jsx)(`summary`,{className:`cursor-pointer font-medium focus-visible:ring-2`,children:`Saved block history`}),(0,H.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[p&&(0,H.jsx)(`p`,{role:`alert`,children:p}),_.length===0?(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No saved actionable blocks.`}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`label`,{className:`block text-sm`,children:[`Block occurrence`,(0,H.jsx)(`select`,{className:`mt-1 block max-w-full rounded border bg-background p-2 text-foreground focus-visible:ring-2`,value:v,onChange:e=>{c(e.target.value),u(0),f(0)},children:_.map((e,t)=>(0,H.jsxs)(`option`,{value:e,children:[`Block `,t+1,` · `,e,n[e]?``:` · removed`]},e))})]}),(0,H.jsx)(`ol`,{"aria-label":`Saved versions`,className:`space-y-1 text-sm`,style:{contentVisibility:`auto`},children:y.map(e=>(0,H.jsxs)(`li`,{children:[`v`,e.version,` · `,(0,H.jsx)(`time`,{dateTime:new Date(e.savedAt).toISOString(),children:pM(new Date(e.savedAt))}),` · `,e.kind,e.dialect?` · ${e.dialect}`:``,e.sport?` · ${e.sport}`:``]},e.version))}),(0,H.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[{label:`Compare saved version`,row:b,set:u},{label:`With saved version`,row:x,set:f}].map(({label:e,row:t,set:n})=>(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`label`,{className:`block text-sm`,children:[e,(0,H.jsx)(`select`,{className:`ml-2 rounded border bg-background p-1 text-foreground focus-visible:ring-2`,value:t?.version??0,onChange:e=>n(Number(e.target.value)),children:y.map(e=>(0,H.jsxs)(`option`,{value:e.version,children:[`v`,e.version]},e.version))})]}),(0,H.jsx)(`pre`,{"aria-label":`${e} source`,className:`mt-2 max-h-80 overflow-auto whitespace-pre-wrap break-words rounded bg-muted p-3 text-xs`,children:t?.rawContent})]},e))}),(0,H.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`text-sm`,children:b?.rawContent===x?.rawContent&&b?.kind===x?.kind&&b?.dialect===x?.dialect&&b?.sport===x?.sport?`Saved states are identical.`:`Saved states differ.`}),i&&b&&(0,H.jsx)(`button`,{type:`button`,disabled:h,className:`rounded border px-3 py-2 hover:bg-accent focus-visible:ring-2 disabled:opacity-50`,onClick:()=>void S(),children:h?`Saving…`:`Restore v${b.version} as a new saved version`})]})]})]})}async function gM(e){let t=await vT(),n=[`markdown/collections/${e}.md`,`markdown/canvas/${e}.md`];for(let e of n)if(t[e])return t[e];let r=`/${e}.md`.toLowerCase(),i=Object.entries(t).find(([e])=>e.toLowerCase().endsWith(r));return i?i[1]:void 0}async function _M(e){return await gM(e)??null}var vM=class{transport;handlers=new Set;transportUnsub=null;disposed=!1;constructor(e){this.transport=e,this.transportUnsub=this.transport.onMessage(e=>{if(e.type===`rpc-event`){let t={name:e.name,timestamp:new Date(e.timestamp),data:e.data};for(let e of this.handlers)e(t)}})}dispatch(e){this.disposed||!this.transport.connected||this.transport.send({type:`rpc-event`,name:e.name,timestamp:e.timestamp.getTime(),data:e.data})}onEvent(e){return this.disposed?()=>{}:(this.handlers.add(e),()=>this.handlers.delete(e))}dispose(){this.disposed||(this.disposed=!0,this.transportUnsub?.(),this.transportUnsub=null,this.handlers.clear())}};function yM(e){let t=e.getMemoryByTag(`time`);if(t.length===0)return null;let n=t[0].metrics;if(n.length===0)return null;let r=n[0]?.value;if(!r||!Array.isArray(r.spans))return null;let i=r.spans.map(e=>({started:e.started,ended:e.ended})),a=r.direction??`up`,o=r.role,s=o===`hidden`?`auto`:o;return{label:r.label,format:a,durationMs:r.durationMs,direction:a,spans:i,isRunning:i.some(e=>e.ended===void 0),role:s}}function bM(e){let t=e.getMetricMemoryByVisibility(`display`).map(e=>e.metrics.toArray()),n=e.getMetricMemoryByVisibility(`promote`).map(e=>e.metrics.toArray()),r=e.getMetricMemoryByVisibility(`result`).map(e=>e.metrics.toArray()),i=e.getMetricMemoryByVisibility(`private`),a={};for(let e of i)a[e.tag]||(a[e.tag]=[]),a[e.tag].push(e.metrics.toArray());let o=e.getMemoryByTag(`metric:next`).flatMap(e=>e.metrics.toArray()),s;try{e.behaviors&&e.behaviors.length>0&&(s=e.behaviors.map(e=>({name:e.constructor.name})))}catch{}return{key:e.key.toString(),blockType:e.blockType??`Block`,label:e.label,sourceIds:[...e.sourceIds],isComplete:e.isComplete,completionReason:e.completionReason,displayFragments:t,promoteFragments:n.length>0?n:void 0,resultFragments:r.length>0?r:void 0,privateFragments:Object.keys(a).length>0?a:void 0,timer:yM(e),nextFragments:o,behaviorsMetadata:s}}function xM(e){return{type:`rpc-stack-update`,snapshotType:e.type,blocks:e.blocks.map(bM),affectedBlockKey:e.affectedBlock?.key.toString(),depth:e.depth,clockTime:e.clockTime.getTime()}}function SM(e){let t=e.timeSpan.started,n=e.timeSpan.ended,r=n===void 0?0:n-t;return{type:`rpc-output`,outputType:e.outputType,sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,metrics:Array.isArray(e.metrics)?e.metrics:e.metrics.toArray(),completionReason:e.completionReason,timeSpan:{started:t,ended:n},elapsed:r}}function CM(e,t,n){return{type:`rpc-analytics-summary`,totalDurationMs:t,completedSegments:n,projections:e}}function wM(e){return(e??[]).map(e=>e.map(e=>`${e?.type??``}:${e?.value==null||typeof e.value==`object`?``:String(e.value)}:${e?.image??``}:${e?.unit??``}`).join(`,`)).join(`;`)}var TM=class{transport;id;lastFingerprint=``;constructor(e,t){this.transport=e,this.id=t?.id??`chromecast`}onStackSnapshot(e){if(!this.transport.connected)return;let t=xM(e),n=this.computeFingerprint(t);n!==this.lastFingerprint&&(this.lastFingerprint=n,this.transport.send(t))}onOutput(e){this.transport.connected&&this.transport.send(SM(e))}sendAnalyticsSummary(e,t,n){this.transport.connected&&this.transport.send(CM(e,t,n))}dispose(){this.lastFingerprint=``}computeFingerprint(e){let t=[e.snapshotType,String(e.depth)];for(let n of e.blocks){t.push(`${n.key}:${n.blockType}:${n.label}:${n.isComplete}`),n.timer&&t.push(`timer:${n.timer.isRunning}:${n.timer.spans.length}:${n.timer.durationMs}:${n.timer.spans[0]?.started??``}:${n.timer.role??``}`),t.push(`frags:${wM(n.displayFragments)}`),t.push(`promote:${wM(n.promoteFragments)}`),t.push(`result:${wM(n.resultFragments)}`);let e=Object.keys(n.privateFragments??{}).sort().join(`,`);t.push(`private:${e}`);let r=n.nextFragments?.map(e=>`${e.type??``}:${e.image??(e.value==null?``:String(e.value))}`).join(`,`)??``;t.push(`next:${r}`);let i=n.behaviorsMetadata?.map(e=>e.name).join(`,`)??``;t.push(`behaviors:${i}`)}return t.join(`|`)}},EM=class{transport;options;disposed=!1;syncSamples=[];constructor(e,t={}){this.transport=e,this.options=t}async sync(){let e=this.options.samples??3,t=this.options.maxRttMs??500;console.log(`[ClockSyncService] Starting sync (${e} samples, max RTT: ${t}ms)`),this.syncSamples.length=0;for(let n=0;n<e;n++){if(this.disposed)throw Error(`ClockSyncService was disposed during sync`);let r=await this.performSyncSample(t);r===null?console.warn(`[ClockSyncService] Sample ${n+1} failed (RTT exceeded ${t}ms)`):(this.syncSamples.push(r),console.log(`[ClockSyncService] Sample ${n+1}/${e}: offset=${r.offsetMs.toFixed(2)}ms, RTT=${r.rttMs.toFixed(2)}ms`)),n<e-1&&await new Promise(e=>setTimeout(e,100))}if(this.syncSamples.length===0)throw Error(`Clock sync failed: all samples exceeded max RTT`);let n=[...this.syncSamples].map(e=>e.offsetMs).sort((e,t)=>e-t),r=n.length%2==0?(n[n.length/2-1]+n[n.length/2])/2:n[Math.floor(n.length/2)],i=this.syncSamples.reduce((e,t)=>e+t.rttMs,0)/this.syncSamples.length,a={offsetMs:r,avgRttMs:i};return console.log(`[ClockSyncService] Sync complete: offset=${r.toFixed(2)}ms (median), avg RTT=${i.toFixed(2)}ms`),this.sendResult(a),a}sendResult(e){if(this.disposed||!this.transport.connected)return;let t={type:`rpc-clock-sync-result`,offsetMs:e.offsetMs,rttMs:e.avgRttMs};this.transport.send(t)}async performSyncSample(e){let t=Date.now(),n={type:`rpc-clock-sync-request`,timestamp:t};this.transport.send(n);let r=await this.waitForResponse(e=>e.type===`rpc-clock-sync-response`&&e.requestTimestamp===t,2e3),i=Date.now()-t;if(i>e)return null;let a=i/2;return{offsetMs:r.receiverTimestamp-(t+a),rttMs:i}}waitForResponse(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>{a(),r(Error(`Clock sync response timeout after ${t}ms`))},t),a=this.transport.onMessage(t=>{e(t)&&(clearTimeout(i),a(),n(t))})})}dispose(){this.disposed=!0,this.syncSamples.length=0}};function DM(e,...t){console.warn(`[${e}]`,...t)}function OM(e,...t){console.error(`[${e}]`,...t)}var kM={createSubscription:(e,t)=>new TM(e,{id:t}),createEventProvider:e=>new vM(e),createClockSync:e=>new EM(e)},AM=new class{deps;activeHandle=null;activeMeta=null;constructor(e=kM){this.deps=e}get isConnected(){return this.activeHandle!==null}getActiveHandle(){return this.activeHandle}setSubscriptionRegistry(e){!this.activeHandle||!this.activeMeta||this.activeMeta.registry!==e&&(this.activeMeta.registry&&this.activeMeta.registry.remove(this.activeMeta.subscriptionId),this.activeMeta.registry=e,e&&e.add(this.activeHandle.subscription))}connect(e,t=null,n={}){this.dispose();let r=n.subscriptionId??`chromecast`,i=this.deps.createSubscription(e,r),a=this.deps.createEventProvider(e),o=e.needsClockSync?this.deps.createClockSync(e):null;t?.add(i),o&&o.sync().catch(e=>{OM(`CastSessionManager`,`Clock sync failed`,e)});let s=e.onDisconnected(()=>this.dispose());return this.activeHandle={transport:e,eventProvider:a,subscription:i,pushInitialWorkbench:t=>{try{e.send(t)}catch{}},dispose:()=>this.dispose()},this.activeMeta={registry:t,subscriptionId:r,unsubDisconnected:s,clockSync:o},this.activeHandle}sendDisposeSignal(){this.activeHandle?.transport.connected&&this.activeHandle.transport.send({type:`rpc-dispose`})}pushInitialWorkbench(e){if(!this.activeHandle)return!1;try{return this.activeHandle.transport.send(e),!0}catch{return!1}}dispose(e=!1){if(!this.activeHandle)return;let t=this.activeHandle,n=this.activeMeta;if(this.activeHandle=null,this.activeMeta=null,n?.unsubDisconnected(),e&&t.transport.connected)try{t.transport.send({type:`rpc-dispose`})}catch{}n?.registry&&n.registry.remove(n.subscriptionId),t.subscription.dispose(),t.eventProvider.dispose(),n?.clockSync?.dispose()}};function jM(e,t){if(!e||e.trim().length===0)return{statements:[],errors:[],success:!0};try{let n=e.endsWith(`
91
+ `)?e:e+`
92
+ `;return{statements:ds(di.create({doc:n,extensions:[ys]}),t),errors:[],success:!0}}catch(e){return{statements:[],errors:[{message:e instanceof Error?e.message:`Unknown parse error`,severity:`error`}],success:!1}}}function MM(e,...t){console.warn(`[${e}]`,...t)}function NM(e,...t){console.error(`[${e}]`,...t)}function PM(e,t={}){let n=t.sourceRevision??1,r=Aa(e,{...t,blocks:t.noteBlocks,sourceRevision:n}),i=Oa(e,t),a=[];for(let e of i){if(!ka(e))continue;let t=Object.values(r).find(t=>t.from===e.from&&t.to===e.to);t&&(e.id=t.id,e.version=t.version,e.scriptBlock&&(e.scriptBlock=FM({...e.scriptBlock,id:t.id,version:t.version}),a.push(e.scriptBlock)))}return{sections:i,blocks:a,noteBlocks:r,rawContent:e,sourceRevision:n}}function FM(e){try{let t=jM(e.content,e.sport);return{...e,statements:t.statements,errors:t.errors,state:t.success?`parsed`:`error`}}catch(t){return NM(`WorkbenchDocumentModel`,`Block parse error:`,t),e}}function IM(e){if(e.kind!==`wod`||!e.dialect)throw Error(`The saved revision is not a workout.`);let t=Oa(e.rawContent).find(t=>t.type===e.dialect);if(!t?.scriptBlock)throw Error(`The saved workout fence cannot be read.`);let n=t.scriptBlock.content;return{id:e.blockId,content:n,dialect:e.dialect,sport:e.sport,statements:vs().read(n,e.sport).statements,startLine:0,endLine:e.rawContent.split(`
93
+ `).length-1,version:e.version,state:`idle`,widgetIds:{},createdAt:e.savedAt}}async function LM(e,t,n,r,i=tk){let a=Date.now(),o=await i.startSession(e,{id:n,noteId:e.noteId,blockId:t.id,blockContentId:t.contentId,origin:r??`journal`,startTime:a,endTime:a,duration:0,completed:!1,status:`in-progress`,createdAt:a});return{...o,block:IM(o.revision)}}async function RM(e,t,n,r){let i=await Z.getNote(e);if(!i)throw Error(`The note is unavailable. Save the note before starting a workout.`);return LM({noteId:i.id,rawContent:i.rawContent,blocks:i.blocks,expectedSourceRevision:i.sourceRevision},t,n,r)}var zM={handleStart:()=>{},handlePause:()=>{},handleStop:()=>{},handleNext:()=>{},handleStartWorkoutAction:()=>{}},BM={content:``,sections:null,noteBlocks:{},sourceRevision:0,capturedRun:null,saveError:null,blocks:[],activeBlockId:null,saveState:`idle`,lastSavedContent:``,loadedRouteId:null,results:[],currentEntry:null,historyEntries:[],panelLayouts:{},attachments:[],runtime:null,execution:{status:`idle`,elapsedTime:0,stepCount:0,startTime:null,start:()=>{},pause:()=>{},stop:()=>{},reset:()=>{},step:()=>{}},handles:zM,activeSegmentIds:new Set,activeStatementIds:new Set,analyticsSegments:[],analyticsGroups:[],selectedAnalyticsIds:new Set,lastSelectedAnalyticsId:null,outputStatementList:[],logOutputList:[],userOutputOverrides:new Map,gridViewPreset:`default`,hoveredBlockKey:null,documentItems:[],selectedBlock:null,selectedBlockId:null,cursorLine:1,highlightedLine:null,subscriptionManager:null,viewMode:`plan`},VM=5e3;function HM(e={}){let t=e.listeners??[],n=e.nowProvider??Bs,r=e.notePersistence,i=e.setTimeout??((e,t)=>window.setTimeout(e,t)),a=e.clearTimeout??(e=>{typeof e==`number`&&window.clearTimeout(e)}),o=null,s=[],c=gn()((t,n)=>{let c=Promise.resolve(),l=async i=>{let a=n(),o=a.currentEntry?.id??a.loadedRouteId;if(!(!o||!r||!e.provider?.capabilities.canWrite)&&(i.rawContent!==a.lastSavedContent||JSON.stringify(Object.values(i.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))!==JSON.stringify(Object.values(a.currentEntry?.blocks??{}).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport])))){t({saveState:`saving`,saveError:null});try{let e=await r.saveNote({noteId:o,rawContent:i.rawContent,blocks:i.blocks,expectedSourceRevision:a.sourceRevision,metadata:{title:i.rawContent.match(/^#\s+(.+)$/m)?.[1]?.trim()??`Untitled Session`},noteType:`playground`}),s=n();t({currentEntry:e,...s.content===i.rawContent&&JSON.stringify(Object.values(s.noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))===JSON.stringify(Object.values(i.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))?{noteBlocks:e.blocks}:{},sourceRevision:e.sourceRevision??a.sourceRevision,lastSavedContent:i.rawContent,saveState:`saved`})}catch(e){throw t({saveState:`error`,saveError:e instanceof Error?e.message:String(e)}),e}}},u=()=>{o=null;let e=n(),t={rawContent:e.content,blocks:e.noteBlocks,sourceRevision:e.sourceRevision},r=c.catch(()=>{}).then(()=>l(t));return c=r,r};return{...BM,setContent:r=>{let s=PM(r,{noteBlocks:n().noteBlocks,sourceRevision:Math.max(1,n().sourceRevision)}),c=n(),l={content:r,sections:s.sections,blocks:s.blocks,noteBlocks:s.noteBlocks};r!==c.lastSavedContent&&(c.saveState===`idle`&&(l.saveState=`changed`),o!==null&&a(o),e.provider&&e.provider.capabilities.canWrite&&(o=i(()=>{u().catch(()=>{})},VM))),t(l)},setBlocks:e=>t({blocks:e}),setEditorIdentity:r=>{let s=JSON.stringify(Object.values(n().noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))!==JSON.stringify(Object.values(r.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]));t({content:r.rawContent,noteBlocks:r.blocks}),s&&e.provider?.capabilities.canWrite&&(o!==null&&a(o),o=i(()=>{u().catch(()=>{})},VM))},acceptSaved:e=>t(t=>({...t.content===e.rawContent&&JSON.stringify(Object.values(t.noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))===JSON.stringify(Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))?{noteBlocks:e.blocks}:{},sourceRevision:e.sourceRevision,lastSavedContent:e.rawContent})),restoreBlock:async e=>{if(!r)throw Error(`Note persistence is unavailable.`);await u();let i=n(),a=mM({rawContent:i.content,blocks:i.noteBlocks,sourceRevision:i.sourceRevision},e),o=await r.saveNote({noteId:e.noteId,rawContent:a.rawContent,blocks:a.blocks,expectedSourceRevision:i.sourceRevision}),s=PM(o.rawContent,{noteBlocks:o.blocks,sourceRevision:o.sourceRevision});t({content:o.rawContent,noteBlocks:o.blocks,sourceRevision:o.sourceRevision,lastSavedContent:o.rawContent,currentEntry:o,sections:s.sections,blocks:s.blocks})},startPinnedRun:async e=>{await c.catch(()=>{});let i=n(),a=i.currentEntry?.id??i.loadedRouteId;if(!a||!r)throw Error(`Save the note before starting a workout.`);try{let n=await LM({noteId:a,rawContent:i.content,blocks:i.noteBlocks,expectedSourceRevision:i.sourceRevision},e,C(),void 0,r);return t({capturedRun:n,noteBlocks:n.note.blocks,sourceRevision:n.note.sourceRevision,currentEntry:{...i.currentEntry,...n.note,updatedAt:Date.now(),targetDate:i.currentEntry?.targetDate??Date.now(),schemaVersion:1},lastSavedContent:n.note.rawContent,saveError:null}),n.block}catch(e){throw t({saveState:`error`,saveError:e instanceof Error?e.message:String(e)}),e}},setActiveBlockId:e=>t({activeBlockId:e}),setSaveState:e=>t({saveState:e}),flushSave:async()=>{o!==null&&a(o),o=null,await u()},markSaved:e=>t({lastSavedContent:e,saveState:`saved`}),setResults:e=>t({results:e}),resetResults:()=>t({results:[]}),setCurrentEntry:e=>{if(e&&e.id!==n().currentEntry?.id){let n=PM(e.rawContent,{noteBlocks:e.blocks,sourceRevision:Math.max(1,e.sourceRevision??0)});t({currentEntry:e,content:e.rawContent,noteBlocks:n.noteBlocks,sections:n.sections,blocks:n.blocks,sourceRevision:e.sourceRevision??0,lastSavedContent:e.rawContent})}else t({currentEntry:e})},setHistoryEntries:e=>t({historyEntries:e}),setPanelLayouts:e=>t({panelLayouts:e}),expandPanel:(e,n)=>t(t=>{let r=t.panelLayouts[e]??{viewId:e,panelSpans:{},expandedPanelId:null},i=r.expandedPanelId?r.panelSpans:{...r.panelSpans};return{panelLayouts:{...t.panelLayouts,[e]:{...r,panelSpans:{...i,[n]:3},expandedPanelId:n}}}}),collapsePanel:e=>t(t=>{let n=t.panelLayouts[e];return n?{panelLayouts:{...t.panelLayouts,[e]:{...n,expandedPanelId:null}}}:t}),setAttachments:e=>t({attachments:e}),addAttachment:async r=>{let i=e.notePersistence,a=e.provider,o=n().currentEntry?.id;if(!o||!a?.capabilities.canWrite||!i)return;console.log(`[WorkbenchSession] Processing attachment: ${r.name}`);let s=await b_.process(r),{v7:c}=await Wt(async()=>{let{v7:e}=await import(`./vendor-BlJqgFME.js`).then(e=>e.Tt);return{v7:e}},__vite__mapDeps([0,1]));console.log(`[WorkbenchSession] Saving attachment to entry ${o}`),await i.mutateNote(o,{attachments:{add:[{id:c(),label:s.label,mimeType:s.mimeType,data:s.data,timeSpan:s.timeSpan??{start:Date.now(),end:Date.now()}}]}}),t({attachments:(await i.getNote(o,{projection:`workbench`,includeAttachments:!0})).attachments??[]}),console.log(`[WorkbenchSession] Attachment saved successfully`)},deleteAttachment:async r=>{let i=e.notePersistence,a=n().currentEntry?.id;!a||!i||(await i.mutateNote(a,{attachments:{remove:[r]}}),t({attachments:(await i.getNote(a,{projection:`workbench`,includeAttachments:!0})).attachments??[]}))},patchCurrentEntryResults:e=>t(t=>t.currentEntry?{currentEntry:{...t.currentEntry,results:e}}:t),completeWorkout:async(e,i)=>{let a=n().capturedRun,o=i??a?.session.id;if(!o||!r?.finishSession)throw Error(`The saved run pin is unavailable.`);let s=await r.finishSession(o,e,e.endTime);return t(t=>({results:[...t.results,e]})),s.id},loadEntry:async r=>{let i=e.notePersistence,a=e.provider;if(!i||!a)return null;let{routeId:o,routeView:s,routeSectionId:c,routeResultId:l,resultFromLocationState:u,initialActiveEntryId:d,propInitialContent:f}=r;if(n().setContent(``),n().setBlocks([]),t({currentEntry:null,loadedRouteId:o??null}),o){if(a.mode===`history`||a.mode===`static`)try{let e=l?{mode:`by-result-id`,resultId:l}:c&&s===`review`?{mode:`latest-for-section`,blockId:c}:{mode:`latest`},d=await i.getNote(o,{projection:s===`review`?`review`:`workbench`,includeAttachments:!0,includeSections:!0,resultSelection:e}).catch(async t=>(console.warn(`[WorkbenchSession] Note persistence projection failed, falling back to provider entry:`,{routeId:o,projection:s===`review`?`review`:`workbench`,resultSelectionMode:e.mode,err:t}),a.getEntry(o)));if(d){let e=PM(d.rawContent,{noteBlocks:d.blocks,sourceRevision:Math.max(1,d.sourceRevision??0)});return t({currentEntry:d,content:d.rawContent,sections:e.sections,blocks:e.blocks,noteBlocks:e.noteBlocks,sourceRevision:d.sourceRevision??0,lastSavedContent:d.rawContent,saveState:`saved`}),s===`review`&&u&&t(e=>e.currentEntry?{currentEntry:{...e.currentEntry,results:u}}:e),r.onLoaded?.(d),d}if(a.mode===`static`){let e=await _M(o);if(e)return n().setContent(e),null}}catch(e){console.error(`[WorkbenchSession] Failed to load entry for ID:`,o,e)}}else d&&e.navigate?.({type:`goToPlan`,noteId:d});return n().setContent(f??``),null},setActiveSegmentIds:e=>t({activeSegmentIds:e}),setActiveStatementIds:e=>t({activeStatementIds:e}),setAnalytics:(e,n)=>t({analyticsSegments:e,analyticsGroups:n}),appendOutputStatement:e=>t(t=>{let n=[...t.outputStatementList,e],{segments:r,groups:i}=sM(t.runtime);return t.runtime?{outputStatementList:n,analyticsSegments:r,analyticsGroups:i}:{outputStatementList:n}}),clearOutputStatementList:()=>t({outputStatementList:[]}),feedLogOutputs:(e,n)=>{let{segments:r,groups:i}=cM(e,n);t({logOutputList:e,analyticsSegments:r,analyticsGroups:i})},toggleAnalyticsSegment:(e,n,r)=>t(t=>{let i=new Set(t.selectedAnalyticsIds);if(n?.shiftKey&&t.lastSelectedAnalyticsId!==null&&r){let n=r.indexOf(t.lastSelectedAnalyticsId),a=r.indexOf(e);if(n!==-1&&a!==-1){let e=Math.min(n,a),t=Math.max(n,a);r.slice(e,t+1).forEach(e=>i.add(e))}}else n?.ctrlKey?i.has(e)?i.delete(e):i.add(e):(i.clear(),i.add(e));return{selectedAnalyticsIds:i,lastSelectedAnalyticsId:e}}),setUserOverride:(e,n)=>t(t=>{let r=new Map(t.userOutputOverrides);return r.set(e,K.from(n,e)),{userOutputOverrides:r}}),clearUserOverride:e=>t(t=>{let n=new Map(t.userOutputOverrides);return n.delete(e),{userOutputOverrides:n}}),setGridViewPreset:e=>t({gridViewPreset:e}),setHoveredBlockKey:e=>t({hoveredBlockKey:e}),setDocumentItems:e=>t({documentItems:e}),setSelectedBlock:e=>t({selectedBlock:e,selectedBlockId:e?.id??null}),setSelectedBlockId:e=>t({selectedBlockId:e}),setCursorLine:e=>t({cursorLine:e}),setHighlightedLine:e=>t({highlightedLine:e}),setSubscriptionManager:e=>{t({subscriptionManager:e}),AM.setSubscriptionRegistry(e)},setViewMode:e=>t({viewMode:e}),setRuntime:e=>{for(let e of s)e();if(s=[],e){let r=sM(e);t({runtime:e,outputStatementList:[],analyticsSegments:r.segments,analyticsGroups:r.groups}),s.push(e.subscribeToOutput(()=>{n().appendOutputStatement({})})),s.push(e.subscribeToStack(e=>{let n=e.blocks[0],r=new Set;for(let t of e.blocks)r.add(Bi(t.key.toString()));let i=new Set;if(n&&Array.isArray(n.sourceIds))for(let e of n.sourceIds)i.add(e);t({activeSegmentIds:r,activeStatementIds:i})}));let i=gE();if(i?.connected){let t=new TM(i);s.push(e.subscribeToStack(e=>t.onStackSnapshot(e)),e.subscribeToOutput(e=>t.onOutput(e)),()=>t.dispose());try{t.onStackSnapshot(e.getStackSnapshot())}catch{}}}else t({runtime:null,outputStatementList:[]})},setExecution:e=>t({execution:e}),setHandles:e=>t({handles:e}),getNote:async(e,t)=>{if(!r)throw Error(`[WorkbenchSession] getNote called without a notePersistence port`);return r.getNote(e,t)},resetStore:()=>{o!==null&&(a(o),o=null);for(let e of s)e();s=[],t({...BM})}}});return t.length>0&&c.subscribe(e=>{for(let n of t)n(e)}),Object.assign(c,{__nowProvider:n})}var UM=HM();function WM(e){let t=UM;return UM=e,t}function GM(){return UM}var KM=e=>jn(UM,e),qM=({nowProvider:e,notePersistence:t,provider:n,navigate:r,children:i})=>{let a=(0,V.useMemo)(()=>HM({nowProvider:e,notePersistence:t,provider:n,navigate:r}),[e,t,n,r]);return(0,V.useEffect)(()=>{let e=WM(a);return()=>{WM(e),a.getState().resetStore()}},[a]),V.createElement(V.Fragment,null,i)},JM={getEventsByTimeRange:(e,t)=>Z.getEventsByTimeRange(e,t),getEventsByMetricDates:e=>Z.getEventsByMetricDates(e),getEventsByResult:e=>Z.getEventsByResult(e),getEventsForNote:e=>Z.getEventsForNote(e),getEventsByContent:e=>Z.getEventsByContent(e),scanAll:()=>Z.scanAll(),appendEvents:e=>Z.appendEvents(e),finalizeSummaries:(e,t)=>Z.finalizeSummaries(e,t),deleteEvents:e=>Z.deleteEvents(e)},YM={getAllNotes:()=>Z.getAllNotes(),getNotesByIds:async e=>[...(await Z.getEntryBatches(e)).values()].map(e=>e.note),getNoteIdsForTag:async e=>new Set((await Z.getNotesForTag(e)).map(e=>e.id)),getNoteTagLabels:async e=>(await Z.getTagsForNote(e)).map(e=>e.label),queryDomain:async e=>{if(!Z.queryDomain)return;let t=await Z.queryDomain({...e,plan:`notes`});return t&&t.plan===`notes`?t:void 0}},XM={getAllBlocks:()=>Z.getAllBlockIndex(),queryDomain:async e=>{if(!Z.queryDomain)return;let t=await Z.queryDomain({...e,plan:`blocks`});return t&&t.plan===`blocks`?t:void 0}},ZM=class{async getAllEfforts(){let e=Zw();return e.isInitialized()||await e.loadBundled(),[...e.list()]}},QM=new Qm,$M={events:[],notes:[]},eN={events:[],notes:[]};QM.set(`@session`,$M),QM.set(`@today`,eN);function tN(){let e=GM().getState(),t=e.runtime?.getOutputStatements()??[],n=e.currentEntry;return $M.notes=n?[{id:n.id,title:n.title,createdAt:n.createdAt,date:n.targetDate,rawContent:n.rawContent,sourceRevision:n.sourceRevision??1,blocks:n.blocks??{}}]:[],t.length===0?($M.events=[],$M):($M.events=lh(t.map(Ld),{noteId:n?.id??``,resultId:`live:${n?.id??`session`}`,origin:`playground`,workoutTimestamp:n?.targetDate}),$M)}function nN(e,t,n,r){let i=[...t].sort((e,t)=>(e.position??1/0)-(t.position??1/0)||e.createdAt-t.createdAt);for(let e of i){let t=n.get(e.pageId)?.date;if(t)return t}return Im(e.date??e.createdAt,r)}async function rN(e,t){let n=Im(e.instant,e.timeZone),r=Vm(n,e.timeZone),i=Vm(Lm(n,1),e.timeZone),[a,o,s,c]=await Promise.all([Z.getEventsByTimeRange(r,i),Z.getAllNotes(),Z.getAllPageNotes(),Z.getAllPages()]),l=a.filter(e=>e.timestamp>=r&&e.timestamp<i),u=new Map(c.map(e=>[e.id,e])),d=new Map;for(let e of s){let t=d.get(e.noteId);t?t.push(e):d.set(e.noteId,[e])}let f=[];for(let t of o)nN(t,d.get(t.id)??[],u,e.timeZone)===n&&f.push(t);t===oN&&(eN.events=l,eN.notes=f,tN())}var iN=null,aN=null,oN=0,sN=!1,cN=new Set;function lN(){for(let e of cN)e()}function uN(e,t){aN=t;let n=++oN;return iN=rN(e,n),iN.then(()=>{n===oN&&dN()},()=>{n===oN&&dN()}),iN}function dN(){sN=!0,lN()}function fN(){let e=Am(),t=Im(e.instant,e.timeZone);return!iN||aN!==t?uN(e,t):iN}function pN(){sN=!1;let e=Am();return uN(e,Im(e.instant,e.timeZone))}function mN(){return sN}function hN(e){return cN.add(e),()=>{cN.delete(e)}}var gN=class extends Vh{async runQuery(e,t){return await fN(),super.runQuery(e,t)}async runPipeline(e,t){return await fN(),super.runPipeline(e,t)}async runFind(e,t){return await fN(),super.runFind(e,t)}async runRows(e,t){return await fN(),super.runRows(e,t)}async run(e,t){return await fN(),super.run(e,t)}};function _N(){return new gN({eventStore:JM,noteStore:YM,blockStore:XM,effortStore:new ZM,blockEffortsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`block_efforts`,e,t)},tagsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`tags`,e,t)},noteTagsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`note_tags`,e,t)},pageStore:{getNotePages:e=>Z.getNotePages(e),getPage:e=>Z.getPage(e)},relationStore:{getBatches:e=>Z.getEntryBatches(e)},datasetStore:{getDataset:e=>e===`@session`?tN():QM.getDataset(e)}})}var vN=_N();function yN(e){let t=e.split(`/`),n=t[0]??e,r=t[1]??``;return n===`journal`?{kind:`journal`,id:r,raw:e}:n===`playground`?{kind:`playground`,id:r,raw:e}:t.length<2?{kind:`workout`,id:n,raw:e}:{kind:`workout`,category:n,id:r,raw:e}}var bN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function xN(e){return typeof e==`string`&&e&&!bN.test(e)?e:void 0}function SN(e){return!!e.sourceId?.startsWith(`collection:`)||!!e.sourceId?.startsWith(`page:collection:`)||e.type===`feed`||/^markdown\/collections\/[^/]+\/.+/.test(e.sourcePath??``)}function CN(e){return!!e.sourceId?.startsWith(`feed:`)||e.sourcePath?.startsWith(`markdown/feeds/`)===!0}function wN(e){return e.type===`dashboard`||e.sourceId===`dashboards`||e.sourcePath?.startsWith(`markdown/dashboards/`)===!0}function TN(e){return e.sourceId===`efforts`||e.sourcePath?.startsWith(`markdown/efforts/`)===!0}function EN(e){return e.sourceId===`equipment`||e.sourcePath?.startsWith(`markdown/equipment/`)===!0}function DN(e,t){let n=e.sourcePath?.replace(/^markdown\/[^/]+\//,``).replace(/\.md$/,``);if(!n)return;let r=n.split(`/`);return r.length===t?r[t-1]:void 0}function ON(e){let t=e.sourceId;if(t?.startsWith(`page:collection:`)){let e=t.slice(16);if(e)return{catalog:e,item:``}}else if(t?.startsWith(`collection:`)){let e=t.slice(11);if(e){let t=e.indexOf(`/`);return t===-1?{catalog:e,item:``}:{catalog:e.slice(0,t),item:e.slice(t+1)}}}let n=/^markdown\/collections\/([^/]+)\/(.+)\.md$/.exec(e.sourcePath??``);if(n)return{catalog:n[1],item:n[2].toLowerCase()===`readme`?``:n[2]};let r=e.id.replace(/^page:collection:/,``);if(bN.test(r))return{catalog:e.catalog??``,item:``};let[i,...a]=r.split(`/`);return{catalog:i,item:a.join(`/`)}}function kN(e){return e.sourceId===`playground`||e.type===`playground`||e.id.startsWith(`playground/`)}function AN(e){return e.id.startsWith(`playground/`)?e.id.slice(11):e.id}function jN(e){return{...MN(e),noteType:e.type,catalog:vh(e),noteId:e.id}}function MN(e){let t=e.id,n=e.title,r=e.tags&&e.tags.length>0?e.tags:void 0;if(kN(e))return{id:t,kind:`note`,sourceCatalog:`playground`,sourceItem:AN(e),sourceId:e.sourceId,title:n,date:null,createdAt:e.createdAt,...r?{tags:r}:{}};if(SN(e)){let i=t.replace(/^page:collection:/,``),{catalog:a,item:o}=ON(e);return{id:i,kind:`session`,sourceCatalog:a,sourceItem:!o||e.type===`feed`||e.type===`page`?``:o,sourceId:e.sourceId,sourcePath:e.sourcePath,pageId:`pageId`in e&&typeof e.pageId==`string`?e.pageId:void 0,pageSlug:`slug`in e?xN(e.slug):void 0,title:n,date:e.date?ck(new Date(e.date)):null,createdAt:e.createdAt,subtitle:e.catalog??a,...r?{tags:r}:{}}}if(CN(e)){let i=e.sourceId?.startsWith(`feed:`)?e.sourceId.slice(5):e.sourcePath?.startsWith(`markdown/feeds/`)?e.sourcePath.slice(9).replace(/\.md$/,``):e.id,a=(i.startsWith(`feeds/`)?i.slice(6):i).split(`/`),o=a[1]&&/^\d{4}-\d{2}-\d{2}$/.test(a[1])?a[1]:null;return{id:t,kind:`post`,sourceCatalog:a[0],sourceItem:a.slice(2).join(`/`)||a[a.length-1],sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:o,createdAt:e.createdAt,subtitle:e.catalog??a[0],...r?{tags:r}:{}}}if(wN(e))return{id:t,kind:`dashboard`,sourceCatalog:`dashboards`,sourceItem:DN(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:e.catalog??`dashboards`,...r?{tags:r}:{}};if(TN(e)){let i=DN(e,2)??t,a=e.sourcePath?.match(/^markdown\/efforts\/([^/]+)\//)?.[1];return{id:t,kind:`effort`,sourceCatalog:`efforts`,sourceItem:i,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:a,effort:{slug:i},...r?{tags:r}:{}}}if(EN(e))return{id:t,kind:`equipment`,sourceCatalog:`equipment`,sourceItem:DN(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`equipment`,...r?{tags:r}:{}};if(e.sourceId?.startsWith(`guides:`)){let i=e.sourceId.slice(7)||t;return{id:t,kind:`note`,sourceCatalog:`guides`,sourceItem:i,sourceId:e.sourceId,sourcePath:e.sourcePath,pageSlug:xN(i.replace(/^\//,``).replace(/^guide\//,``)),title:n,date:null,createdAt:e.createdAt,...r?{tags:r}:{}}}let i=null;return`journalDate`in e&&typeof e.journalDate==`string`?i=e.journalDate:`date`in e&&typeof e.date==`string`?i=e.date:`targetDate`in e&&e.targetDate&&(typeof e.targetDate==`number`||typeof e.targetDate==`string`)?i=ck(new Date(e.targetDate)):e.createdAt&&(i=ck(new Date(e.createdAt))),{id:t,kind:`note`,sourceCatalog:`journal`,sourceItem:t,sourceId:e.sourceId,sourcePath:e.sourcePath,pageId:`pageId`in e&&typeof e.pageId==`string`?e.pageId:void 0,pageSlug:`slug`in e?xN(e.slug):void 0,title:n,date:i,createdAt:e.createdAt,...r?{tags:r}:{}}}function NN(e){return{id:e.noteId,title:e.noteTitle,createdAt:e.createdAt,type:`note`,sourceId:e.sourceId,sourcePath:e.sourcePath,rawContent:``,sourceRevision:1,blocks:{}}}var PN=3,FN=120;function IN(e){return e.split(`
94
+ `).map(e=>e.trim()).filter(Boolean).slice(0,PN).map(e=>e.length>FN?`${e.slice(0,119)}…`:e)}function LN(e){let t=jN(NN(e));return{...t,blockContentId:e.blockContentId??t.blockContentId,catalog:vh(e),block:{blockId:e.blockId,dataType:e.dataType,preview:IN(e.rawContent)}}}function RN(e){return e?e.split(`-`).map(e=>{let t=e.toLowerCase();return t===`c2b`?`C2B`:t===`t2b`?`T2B`:t===`ghd`?`GHD`:t===`hspu`?`HSPU`:e.charAt(0).toUpperCase()+e.slice(1)}).join(` `):``}function zN(e){if(!Number.isFinite(e)||e<=0)return`00:00`;let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;if(n>=60){let e=Math.floor(n/60),t=n%60;return`${e}:${String(t).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}return`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}function BN(e){if(!e)return`Workout Session`;let t=yN(e);return t.kind===`journal`?t.id?`Journal: ${t.id}`:`Journal Entry`:t.kind===`workout`?RN(t.id)||t.id:t.id?RN(t.id):e}function VN(e){let t=[e.baseAttributes?.discipline,e.baseAttributes?.met==null?void 0:`MET ${e.baseAttributes.met.toFixed(1)}`,e.baseAttributes?.intensityTier].filter(Boolean);return{id:e.slug,kind:`effort`,sourceCatalog:e.registrySource??`effort`,sourceItem:e.slug,title:e.label,date:null,subtitle:t.join(` • `),detail:e.aliases&&e.aliases.length>0?`Aliases: ${e.aliases.join(`, `)}`:void 0,effort:{slug:e.slug,label:e.label,discipline:e.baseAttributes?.discipline,met:e.baseAttributes?.met,intensityTier:e.baseAttributes?.intensityTier,aliases:e.aliases,registrySource:e.registrySource}}}function HN(e){let t=(e.type??``).toLowerCase(),n=(`name`in e&&typeof e.name==`string`?e.name:``).toLowerCase(),r=typeof e.value==`number`?e.value:Number(e.value);return Number.isFinite(r)?t===`rep`||n===`reps`||n===`rep`?{kind:`rep`,val:r}:t===`weight`||t===`load`||n===`load`||n===`weight`||n===`volume`?{kind:`load`,val:r}:t===`distance`||n===`distance`?{kind:`distance`,val:r}:t===`tis`||n===`tis`?{kind:`tis`,val:r}:t===`duration`||n===`duration`?{kind:`duration`,val:r}:null:null}function UN(e){let t=1/0,n=-1/0,r=0,i=0,a=0,o=0,s=new Set;for(let c of e.events)if(c.outputType===`segment`&&o++,c.effortSlug&&s.add(c.effortSlug),c.timeSpan?.started!=null&&(c.timeSpan.started<t&&(t=c.timeSpan.started),c.timeSpan.ended!=null&&c.timeSpan.ended>n&&(n=c.timeSpan.ended)),Array.isArray(c.metrics))for(let e of c.metrics){let t=HN(e);t&&(t.kind===`rep`?r+=t.val:t.kind===`load`?i+=t.val:t.kind===`tis`&&t.val>a&&(a=t.val))}return{elapsedMs:Number.isFinite(t)&&Number.isFinite(n)&&n>t?n-t:void 0,reps:r>0?r:void 0,loadLbs:i>0?i:void 0,tis:a>0?a:void 0,segmentCount:o>0?o:void 0,effortSlugs:Array.from(s)}}function WN(e,t){let n=UN(e),r=[];n.elapsedMs!=null&&r.push(zN(n.elapsedMs)),n.tis!=null&&r.push(`TIS ${n.tis.toFixed(1)}`),n.loadLbs!=null&&r.push(`Volume: ${n.loadLbs.toLocaleString()} lbs`),n.reps!=null&&r.push(`${n.reps} reps`),n.segmentCount!=null&&r.push(`${n.segmentCount} splits`);let i=n.effortSlugs.map(RN),a=ck(new Date(e.timestamp)),o=e.events.find(e=>!!e.blockContentId)?.blockContentId;return{id:e.resultId,kind:`result`,sourceCatalog:`results`,sourceItem:e.resultId,title:t?.noteTitle??BN(e.noteId),date:a,blockContentId:o,subtitle:r.join(` • `),detail:i.length>0?i.join(`, `):void 0,execution:{resultId:e.resultId,noteId:e.noteId,timestamp:e.timestamp,outputType:`all`,elapsedMs:n.elapsedMs,reps:n.reps,loadLbs:n.loadLbs,tis:n.tis,segmentCount:n.segmentCount,events:e.events}}}function GN(e,t){let n;e.timeSpan?.started!=null&&e.timeSpan?.ended!=null&&(n=e.timeSpan.ended-e.timeSpan.started);let r,i,a,o;if(Array.isArray(e.metrics))for(let t of e.metrics){let e=HN(t);e&&(e.kind===`rep`?r=e.val:e.kind===`load`?i=e.val:e.kind===`distance`?a=e.val:e.kind===`tis`?o=e.val:e.kind===`duration`&&!n&&(n=e.val))}let s=e.outputType===`segment`?`segment`:`event`,c=t?.index??0,l=e.effortSlug?RN(e.effortSlug):e.outputType===`segment`?`Round ${c+1}`:`${e.outputType.charAt(0).toUpperCase()+e.outputType.slice(1)} ${c+1}`,u=[];n!=null&&u.push(zN(n)),r!=null&&i!=null?u.push(`${r} reps @ ${i} lbs`):r==null?i!=null&&u.push(`${i} lbs`):u.push(`${r} reps`),a!=null&&u.push(`${a}m`),o!=null&&u.push(`TIS ${o.toFixed(1)}`);let d=ck(new Date(e.timestamp));return{id:e.id,kind:s,sourceCatalog:`results`,sourceItem:e.id,title:l,date:d,blockContentId:e.blockContentId,subtitle:u.join(` • `),detail:e.effortSlug?RN(e.effortSlug):void 0,execution:{resultId:e.resultId,noteId:e.noteId,timestamp:e.timestamp,outputType:e.outputType,effortSlug:e.effortSlug,elapsedMs:n,reps:r,loadLbs:i,distanceMeters:a,tis:o,metrics:e.metrics}}}function KN(e,t){if(!e||e.error||!e.runs)return[];let n=e.parsed?.filters?.find(e=>e.key===`plane`&&!e.negate),r=e.parsed?.outputType??n?.values[0]?.value;if(r===`segment`){let t=[];for(let n of e.runs){let e=0;for(let r of n.events)r.outputType===`segment`&&t.push(GN(r,{index:e++}))}return t}if(r&&r!==`all`){let t=[];for(let n of e.runs){let e=0;for(let i of n.events)i.outputType===r&&t.push(GN(i,{index:e++}))}return t}return e.runs.map(e=>WN(e,{noteTitle:t?.noteTitles?.get(e.noteId)}))}function qN(e,t,n){let r=typeof e.__id==`string`&&e.__id?e.__id:void 0,i=typeof e.__resultId==`string`&&e.__resultId?e.__resultId:void 0,a=typeof e.effort==`string`&&e.effort?e.effort:void 0,o=[];for(let[t,n]of Object.entries(e))t.startsWith(`__`)||t===`date`||t===`effort`||(typeof n==`string`||typeof n==`number`||typeof n==`boolean`)&&o.push(`${t}: ${n}`);return{id:r??i??`${t}:${n}`,kind:t,sourceCatalog:`results`,sourceItem:i??r??`${t}:${n}`,title:a?RN(a):`${t===`segment`?`Segment`:`Event`} ${n+1}`,date:typeof e.date==`string`?e.date:null,subtitle:o.length>0?o.join(` • `):void 0}}function JN(e,t,n){e&&e({selected:Math.max(t?.selected??0,n.length),matched:n.length})}function YN(e){return typeof e==`object`&&!!e&&`runFind`in e}var XN=new class e{customService;noteTitleResolver;noteTagsResolver;noteBlockInfo;constructor(e){YN(e)?this.customService=e:(this.customService=e?.service,this.noteTitleResolver=e?.noteTitleResolver,this.noteBlockInfo=e?.noteBlockInfo??!1,this.noteTagsResolver=e?.noteTagsResolver)}get service(){return this.customService??vN}withNoteBlockInfo(){let t=new e({service:this.service,noteTitleResolver:this.noteTitleResolver,noteTagsResolver:this.noteTagsResolver,noteBlockInfo:!0});return Object.prototype.hasOwnProperty.call(this,`query`)&&(t.query=this.query),t}async hydrateEntries(e,t){let n=e=>e.noteId??e.id,r=new Set;for(let i of e)i.sourceCatalog===`journal`&&r.add(n(i)),t&&(!i.title||!i.tags||i.tags.length===0)&&r.add(n(i));if(r.size===0)return;let i=await Z.getEntryBatches([...r]);for(let t of e){if(t.sourceCatalog!==`journal`)continue;let e=i.get(n(t)),r=[...e?.links??[]].sort((e,t)=>(e.position??1/0)-(t.position??1/0)||e.createdAt-t.createdAt);for(let n of r){let r=e?.pages.find(e=>e.id===n.pageId);if(r&&(t.pageId??=r.id,!r.date&&r.slug)){t.pageSlug=r.slug;break}}}if(t)for(let t of e){let e=i.get(n(t));!t.title&&e?.note.title&&(t.title=e.note.title),e&&e.tags.length>0&&((!t.tags||t.tags.length===0)&&(t.tags=e.tags.map(e=>e.label)),t.typedTags=e.tags.map(e=>({label:e.label,type:e.type})))}}async query(e,t){let n=typeof e==`string`?X(e):e;if(!n||n.error)return[];if(ip(n)){if(n.target===`effort`){let e=this.service.runFindEffort?await this.service.runFindEffort(n):await this.service.runFind(n),r=(e.efforts??[]).map(VN);return JN(t,e.stages,r),r}if(n.target===`block`){let e=await this.service.runFind(n),r=e.blocks.map(LN);return await this.hydrateEntries(r,!0),JN(t,e.stages,r),r}if(n.target===`session`){let e=await this.service.runFind(n);t?.(e.stages);let r;if(this.noteTitleResolver&&e.runs){r=new Map;for(let t of e.runs)if(!r.has(t.noteId)){let e=await this.noteTitleResolver(t.noteId);e&&r.set(t.noteId,e)}}let i=KN(e,{noteTitles:r});return JN(t,e.stages,i),i}if(n.target===`segment`||n.target===`event`){let e=n.target,r=await this.service.runFind(n),i=(r.table?.rows??[]).map((t,n)=>qN(t,e,n));return JN(t,r.stages,i),i}let e=await this.service.runFind(n),r=e.notes.map(jN);if(this.noteTagsResolver?(await this.hydrateEntries(r,!1),await Promise.all(r.map(async e=>{if(!e.tags||e.tags.length===0){let t=await this.noteTagsResolver(e.id);t&&t.length>0&&(e.tags=t)}}))):await this.hydrateEntries(r,!0),JN(t,e.stages,r),this.noteBlockInfo)for(let t=0;t<r.length;t++){let n=r[t],i=e.notes[t];n.excerpt=IN(i.rawContent);try{ja(i.rawContent,i.blocks,i.sourceRevision)}catch{continue}let a=Object.values(i.blocks).sort((e,t)=>e.from-t.from).find(e=>e.kind===`wod`),o=a&&Oa(i.rawContent).find(e=>e.from===a.from&&e.scriptBlock);if(a&&o?.scriptBlock){let e=o.scriptBlock.content,t=xa(e);n.wodBlock={blockId:a.id,blockVersion:a.version,blockContentId:t,content:e},n.blockContentId=t}}return r}return[]}};async function ZN(e,t=XN,n){return t.query(e,n)}function QN(e){return e?e.map(e=>e.kind===`wql`?`${e.id}|${e.query}|${e.limit??``}`:`s:${e.id}`).join(`;`):``}async function $N(e){try{let t=(await ZN(e.query)).filter(t=>!e.filterEntry||e.filterEntry(t)).slice(0,e.limit??6).map(t=>({kind:`link`,id:`${e.id}:${t.id}`,label:e.labelFromEntry?e.labelFromEntry(t):t.title,to:e.toEntry?e.toEntry(t):void 0,muted:!0}));return{kind:`section`,id:e.id,label:e.label,entries:t}}catch{return{kind:`section`,id:e.id,label:e.label,entries:[]}}}function eP(e){let t=QN(e),n=(0,V.useRef)(e);n.current=e;let[r,i]=(0,V.useState)(()=>e&&!e.some(e=>e.kind===`wql`)?e:[]);return(0,V.useEffect)(()=>{let e=n.current;if(!e){i([]);return}if(!e.some(e=>e.kind===`wql`)){i(e);return}let t=!1;return Promise.all(e.map(e=>e.kind===`wql`?$N(e):Promise.resolve(e))).then(e=>{t||i(e)}),()=>{t=!0}},[t]),r}function tP(){let[e]=Jt(`s`,{shallow:!0}),{navState:t}=BD(),n=t.activeL3Id??``;return e||n||``}function nP({entry:e,active:t,onActivate:n}){let r=e.onRun;return(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:U(`group flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors`,e.muted?`text-[11.5px]`:`text-[13px]`,t?`bg-primary/10 font-semibold text-primary`:U(`hover:bg-muted/60 hover:text-foreground`,e.muted?`text-muted-foreground/70`:`text-muted-foreground`)),children:[e.icon&&(0,H.jsx)(e.icon,{className:`size-4 shrink-0`}),e.timestamp&&(0,H.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/60`,children:e.timestamp}),(0,H.jsx)(`span`,{className:`min-w-0 flex-1 line-clamp-2 break-words`,title:e.label,children:e.label}),e.badge&&(0,H.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/50`,children:e.badge}),r&&(0,H.jsx)(`span`,{role:`button`,tabIndex:-1,title:e.runIcon===`link`?`View workout`:e.runIcon===`stop`?`Stop workout`:e.runIcon===`edit`?`Edit note`:`Start workout`,onClick:t=>{t.stopPropagation(),e.onRun?.()},className:`flex size-5 shrink-0 items-center justify-center rounded text-primary opacity-0 transition-all group-hover:opacity-100 hover:bg-primary/10`,children:e.runIcon===`link`?(0,H.jsx)(l,{className:`size-3.5`}):e.runIcon===`stop`?(0,H.jsx)(b,{className:`size-3.5`}):e.runIcon===`edit`?(0,H.jsx)(o,{className:`size-3.5`}):(0,H.jsx)(cn,{className:`size-3.5`})})]})}function rP({entries:e,activeId:t,onSection:n}){let r=Mn(),{scrollToSection:i}=BD(),a=e=>{if(n)return n(e);if(e.onRun)return e.onRun();if(e.to)return r(e.to);if(e.sectionId)return i(e.sectionId)};return(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.map(e=>e.kind===`section`?e.entries.length===0?null:(0,H.jsxs)(`div`,{className:`mt-1 flex flex-col gap-0.5 first:mt-0`,children:[(0,H.jsx)(`div`,{className:`px-2 pb-1 pt-3 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,H.jsx)(rP,{entries:e.entries,activeId:t,onSection:n})]},e.id):e.kind===`wql`?null:(0,H.jsx)(nP,{entry:e,active:t!=null&&e.sectionId===t,onActivate:a},e.id))})}function iP(){let e=Mn(),{scrollToSection:t}=BD();return{navigate:(t,n)=>e(t,{replace:n?.replace}),setQueryParam:(e,t)=>{},scrollToSection:t}}function aP(){let e=iP(),{openCreateJournal:t}=BD();return n=>{if(n.id===`home-new-journal`){t({mode:`blank`});return}mA(n.action,e)}}function oP(e,t,n){return e.isActive?e.isActive(n,t):e.action.type===`route`?e.action.to===`/`?n.pathname===`/`||n.pathname===``:n.pathname===e.action.to:e.action.type===`scroll`?t.activeL3Id===e.action.sectionId:e.action.type===`query`&&t.activeL3Id===e.id}function sP({items:e}){let{navState:t}=BD(),n=zt(),r=aP();return(0,H.jsx)(kk,{children:e.map(e=>{if(e.variant===`notable`)return(0,H.jsx)(`div`,{className:`mb-2`,children:(0,H.jsxs)(`button`,{type:`button`,"data-testid":`nav-item-${e.id}`,onClick:()=>r(e),className:`flex w-full items-center justify-center gap-2 rounded-lg bg-primary/10 px-3 py-2 text-xs font-semibold text-primary transition-all hover:bg-primary hover:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary shadow-sm`,children:[(0,H.jsx)(ft,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{children:e.label})]})},e.id);let i=oP(e,t,n);return e.children&&e.children.length>0?(0,H.jsx)(yA,{title:e.label,count:e.children.length,defaultOpen:e.children.some(e=>oP(e,t,n)),collapsible:e.id!==`syntax-group`,children:e.children.map(e=>{let i=oP(e,t,n);return(0,H.jsxs)(Ak,{onClick:()=>r(e),current:i,children:[e.icon&&(0,H.jsx)(e.icon,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:e.label})]},e.id)})},e.id):(0,H.jsxs)(Ak,{onClick:e.disabled?void 0:()=>r(e),current:i,disabled:e.disabled,"aria-label":e.disabled?`${e.label} (coming soon)`:void 0,className:e.disabled?`opacity-60`:void 0,children:[e.icon&&(0,H.jsx)(e.icon,{"data-slot":`icon`}),(0,H.jsx)(jk,{children:e.disabled?`+`:e.label})]},e.id)})})}function cP({navSpec:e}){let{tree:t,navState:n,dispatch:r,contextNav:i}=BD(),a=zt(),o=eP(e),s=(t??[]).find(e=>e?.id===n.activeL1Id)??null,c=i?.pathname===a.pathname?i:null;return(0,H.jsxs)(Ek,{children:[(0,H.jsx)(Dk,{children:(0,H.jsx)(`div`,{className:`px-2 pt-3 pb-1 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:s?.label??`Wod Wiki`})}),(0,H.jsxs)(Ok,{children:[(()=>{if(c||!s)return null;if(s.panel){let e=s.panel;return(0,H.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,H.jsx)(e,{item:s,navState:n,dispatch:r})})}return s.children&&s.children.length>0?(0,H.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,H.jsx)(sP,{items:s.children})}):null})(),c?(0,H.jsx)(`div`,{className:`pt-1`,children:(0,H.jsx)(rP,{entries:c.spec})}):o.length>0&&(0,H.jsx)(`div`,{className:`pt-1`,children:(0,H.jsx)(rP,{entries:o})})]})]})}var lP=`0.36.2133`,uP=`https://github.com/bitcobblers/wod-wiki/releases`;function dP(e){return/-pr\.\d+$/.test(e)?uP:`${uP}/tag/v${e}`}function fP({onSearch:e,onCreate:t}){let{tree:n,navState:r,dispatch:i}=BD(),a=Mn(),o=zt(),s=bk(),c={navigate:(e,t)=>a(e,{replace:t?.replace}),setQueryParam:()=>{},scrollToSection:()=>{}},l=(n??[]).filter(e=>e!=null&&e.icon!=null&&e.id!==`settings`&&e.id!==`buy-me-a-coffee`),u=o.pathname.startsWith(`/settings`);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>a(`/`),"aria-label":`Wod Wiki home`,className:`mb-3 grid size-8 shrink-0 place-items-center rounded-xl bg-primary text-primary-foreground shadow-md shadow-primary/20 rotate-3`,children:(0,H.jsx)(ne,{size:17})}),(0,H.jsx)(`nav`,{"aria-label":`Primary`,className:`flex flex-col items-center gap-1.5`,children:l.map(e=>{let t=e.icon,n=oP(e,r,o);return(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{i({type:`SET_ACTIVE_L1`,id:e.id}),mA(e.action,c)},title:e.label,"aria-label":e.label,"aria-current":n?`page`:void 0,className:U(`relative grid size-9 place-items-center rounded-lg transition-colors`,n?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),children:[n&&(0,H.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,H.jsx)(t,{className:`size-5`})]},e.id)})}),(0,H.jsx)(`div`,{className:`flex-1`}),(0,H.jsx)(`button`,{type:`button`,onClick:e,title:`Search (⌘K)`,"aria-label":`Search`,className:`grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,H.jsx)(an,{className:`size-5`})}),(0,H.jsx)(`a`,{href:fj,target:`_blank`,rel:`noopener noreferrer`,title:`Buy Me a Coffee`,"aria-label":`Buy Me a Coffee`,className:`grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,H.jsx)(pj,{className:`size-5`})}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{s(),a(`/settings/profile`)},title:`Profile`,"aria-label":`Profile`,"aria-current":o.pathname.startsWith(`/settings/profile`)?`page`:void 0,"data-testid":`nav-profile`,className:U(`relative grid size-9 place-items-center rounded-lg transition-colors mt-1.5`,o.pathname.startsWith(`/settings/profile`)?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),children:[o.pathname.startsWith(`/settings/profile`)&&(0,H.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,H.jsx)(f,{className:`size-5`})]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{s(),a(`/settings/appearance`)},title:`Settings`,"aria-label":`Settings`,"aria-current":u?`page`:void 0,"data-testid":`nav-settings`,className:U(`group relative grid size-9 place-items-center rounded-lg transition-colors mt-1.5`,u?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),children:[u&&(0,H.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,H.jsx)(pn,{className:`size-5`}),(0,H.jsxs)(`span`,{role:`tooltip`,className:`pointer-events-none absolute bottom-0 left-full z-50 ml-2 w-max rounded-md border border-border bg-popover px-2 py-1 font-mono text-[10px] text-popover-foreground opacity-0 shadow-md transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[`v`,lP]})]})]})}function pP({activations:e,activeSection:t,variant:n,deps:r,className:i}){return(0,H.jsx)(`nav`,{className:U(`lg:sticky z-20 flex items-center gap-1 px-4 py-2 bg-background/95 backdrop-blur-sm border-b border-border/50 overflow-x-auto`,n===`top-fixed`?`lg:top-0`:`lg:top-[104px]`,i),children:e.map(e=>(0,H.jsx)(`button`,{onClick:()=>mA(e.action,r),className:U(`px-3 py-1.5 rounded-full text-[10px] font-black uppercase tracking-[0.12em] whitespace-nowrap transition-all ring-1`,t===e.id?`bg-primary text-primary-foreground ring-primary/30 shadow-md`:`bg-muted/50 text-muted-foreground ring-transparent hover:bg-muted hover:ring-border`),children:e.label},e.id))})}var mP=(0,V.createContext)(void 0),hP=(0,V.createContext)(null),gP={getState:()=>GM().getState(),setState:(e,t)=>{let n=GM();typeof e==`function`?n.setState(e(n.getState()),t):n.setState(e,t)},subscribe:e=>GM().subscribe(e)},_P=({factory:e,children:t})=>{let[n,r]=(0,V.useState)(null),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(null),u=(0,V.useRef)(e);u.current=e;let d=(0,V.useRef)(null),f=(0,V.useRef)(null),p=(0,V.useRef)(!1),m=(0,V.useCallback)(()=>{f.current&&=(f.current.dispose(),null),a(null),gP.getState().setSubscriptionManager(null);let e=d.current;if(d.current=null,e)try{u.current.disposeRuntime(e)}catch(e){console.error(`[RuntimeProvider] Error disposing runtime:`,e)}r(null),l(null)},[]),h=(0,V.useCallback)(e=>{if(!p.current){p.current=!0,s(!0),l(null);try{f.current&&=(f.current.dispose(),null);let t=d.current;if(d.current=null,t)try{u.current.disposeRuntime(t)}catch(e){console.error(`[RuntimeProvider] Error disposing existing runtime:`,e)}let n=u.current.createRuntime(e);if(d.current=n,r(n),n){let e=new bd(n);e.add(new yd({id:`local`})),f.current=e,a(e),gP.getState().setSubscriptionManager(e)}else f.current=null,a(null),gP.getState().setSubscriptionManager(null)}catch(e){console.error(`[RuntimeProvider] Error creating runtime:`,e),l(e instanceof Error?e:Error(String(e))),d.current=null}finally{p.current=!1,s(!1)}}},[]);(0,V.useEffect)(()=>()=>{if(f.current&&f.current.dispose(),d.current)try{u.current.disposeRuntime(d.current)}catch(e){console.error(`[RuntimeProvider] Error disposing runtime on unmount:`,e)}},[]);let g={runtime:n,isInitializing:o,error:c,initializeRuntime:h,disposeRuntime:m};return(0,H.jsx)(mP.Provider,{value:g,children:(0,H.jsx)(hP.Provider,{value:i,children:t})})};function vP({factory:e,children:t}){return(0,H.jsx)(_P,{factory:e,children:t})}var yP=`bg-background ring-1 ring-zinc-950/5 shadow-sm lg:shadow-[-18px_0_36px_-28px_rgba(15,23,42,0.16),18px_0_36px_-28px_rgba(15,23,42,0.16)] dark:shadow-none dark:ring-white/10`,bP=`flex flex-col flex-1 min-w-0 xl:max-w-[984px] 2xl:max-w-none min-h-screen lg:rounded-[2.5rem]`;function xP({id:e,title:t,subtitle:n,titleAccessory:r,actions:i,queryBar:a,subheader:o,titleTestId:s,className:c}){return(0,H.jsxs)(`div`,{id:e,"data-page-sticky-boundary":`true`,className:U(`max-lg:hidden lg:sticky lg:top-0 z-30 bg-background/80 backdrop-blur-md border-b border-border/50 transition-colors`,c),children:[(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-3 px-4 sm:px-6 lg:px-8 py-2 sm:py-2.5`,children:[t&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 sm:gap-3 min-w-0`,children:[(0,H.jsx)(`div`,{className:`h-5 w-1.5 shrink-0 rounded-full bg-primary`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`h1`,{"data-testid":s,className:`text-base sm:text-lg font-black tracking-tight text-foreground leading-none truncate`,children:t}),n&&(0,H.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground truncate`,children:n})]}),r]})]}),a&&(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),i&&(0,H.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto`,children:i})]}),o&&(0,H.jsx)(`div`,{className:`bg-background/40`,children:o})]})}function SP({ids:e,enabled:t=!0,rootMargin:n=`-10% 0px -40% 0px`,threshold:r=[0,.3,1],onChange:i,shouldAcceptChange:a,scrollDirection:o=`ratio`,dataAttribute:s,debounceMs:c=0}){let l=(0,V.useRef)(``),u=(0,V.useRef)(i),d=(0,V.useRef)(a),f=(0,V.useRef)(null),p=(0,V.useRef)(1);(0,V.useEffect)(()=>{u.current=i},[i]),(0,V.useEffect)(()=>{d.current=a},[a]);let m=e.filter(Boolean).join(`\0`),h=r.join(`,`),g=(0,V.useMemo)(()=>m?m.split(`\0`):[],[m]),_=(0,V.useMemo)(()=>h.split(`,`).map(Number),[h]),v=(0,V.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null)},[]);(0,V.useEffect)(()=>{if(!t||g.length===0||typeof IntersectionObserver>`u`)return;let e=new Map,r=e=>s?e.getAttribute(s):e.id||null,i;if(o===`topmost-when-up`){let e=window.scrollY,t=()=>{let t=window.scrollY;t!==e&&(p.current=t>e?1:-1),e=t};window.addEventListener(`scroll`,t,{passive:!0}),i=()=>window.removeEventListener(`scroll`,t)}let a=new IntersectionObserver(t=>{if(t.forEach(t=>{let n=r(t.target);n&&(t.isIntersecting?e.set(n,t.intersectionRatio):e.delete(n))}),e.size===0)return;let n=``;if(o===`topmost-when-up`&&p.current===-1){let t=1/0;e.forEach((e,r)=>{let i=g.indexOf(r);i>=0&&i<t&&(t=i,n=r)})}else{let t=-1;e.forEach((e,r)=>{e>t&&(t=e,n=r)})}!n||n===l.current||d.current&&!d.current(n)||(l.current=n,c>0?(v(),f.current=setTimeout(()=>{u.current(n),f.current=null},c)):u.current(n))},{rootMargin:n,threshold:_});return g.forEach(e=>{let t=s?document.querySelector(`[${s}="${e}"]`):document.getElementById(e);t&&a.observe(t)}),()=>{a.disconnect(),v(),i?.()}},[t,g,_,n,o,s,c,v])}function CP({title:e,titleAccessory:t,actions:n,subheader:r,children:i,index:a=[],activeSectionId:o,hero:s,sections:c,className:l}){let u=!!(c&&c.length>0)&&!e,[,d]=Jt(`s`,{defaultValue:o??a[0]?.id??``,shallow:!0,history:`replace`}),[f,p]=(0,V.useState)(c?.[0]?.id??``);if(SP({ids:a.map(e=>e.id),enabled:!u&&a.length>0,rootMargin:`-10% 0px -40% 0px`,threshold:[0,.3,1],onChange:e=>{d(e)},shouldAcceptChange:()=>!0}),SP({ids:c?.map(e=>e.id)??[],enabled:u,rootMargin:`-20% 0px -50% 0px`,threshold:[0,.25,.5,.75],onChange:p}),u){let e=c.map(e=>({id:e.id,label:e.label,action:{type:`scroll`,sectionId:e.id}}));return(0,H.jsxs)(`div`,{className:U(`flex flex-col min-h-screen bg-background`,l),children:[s,(0,H.jsx)(pP,{activations:e,activeSection:f,variant:`top-fixed`,deps:{navigate:()=>{},setQueryParam:()=>{},scrollToSection:e=>{let t=document.getElementById(e);if(t){let e=t.getBoundingClientRect().top+window.scrollY-64;window.scrollTo({top:e,behavior:`smooth`})}}}}),(0,H.jsx)(`div`,{className:`flex-1`,children:c.map(e=>{let t=(0,H.jsx)(`div`,{id:e.id,"data-section-id":e.id,className:`py-12 lg:py-16 px-6 lg:px-10 border-b border-border/30`,children:e.content},e.id);return e.runtimeFactory?(0,H.jsx)(vP,{factory:e.runtimeFactory,children:t},e.id):t})})]})}return(0,H.jsx)(`div`,{className:U(`relative flex w-full min-h-screen justify-start items-start`,l),children:(0,H.jsxs)(`div`,{className:U(bP,yP),children:[(0,H.jsx)(xP,{title:e,titleAccessory:t,actions:n,subheader:r}),(0,H.jsx)(`div`,{className:`flex-1`,children:i})]})})}var wP=`[data-page-sticky-boundary="true"]`,TP=0;function EP(e,t=TP){if(typeof document>`u`)return e;let n=Array.from(document.querySelectorAll(wP)).reduce((e,t)=>{let n=t.getBoundingClientRect();return n.height<=0||n.bottom<=0?e:Math.max(e,n.bottom)},0);return n>0?n+t:e}function DP(e,t=TP){let[n,r]=(0,V.useState)(e);return(0,V.useEffect)(()=>{let n=0,i=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(()=>r(EP(e,t)))};return i(),window.addEventListener(`scroll`,i,{passive:!0}),window.addEventListener(`resize`,i),()=>{cancelAnimationFrame(n),window.removeEventListener(`scroll`,i),window.removeEventListener(`resize`,i)}},[e,t]),n}function OP({top:e,label:t,icon:n,badge:r,meta:i,testId:a,className:o}){return(0,H.jsxs)(`div`,{"data-testid":a,className:U(`sticky z-10 flex items-center gap-2 border-y border-border/60 bg-card/95 px-6 py-2 shadow-[0_1px_2px_rgba(0,0,0,0.03)] backdrop-blur`,o),style:{top:`${e}px`},children:[n,(0,H.jsx)(`span`,{className:`min-w-0 truncate text-xs font-bold text-foreground`,children:t}),r,i&&(0,H.jsx)(`span`,{className:`ml-auto shrink-0 pl-2 font-mono text-[10px] text-muted-foreground`,children:i})]})}var kP=(0,V.createContext)(null),AP=(0,V.createContext)(null);function jP({children:e}){let[t,n]=(0,V.useState)(null);return(0,H.jsx)(AP.Provider,{value:n,children:(0,H.jsx)(kP.Provider,{value:t,children:e})})}function MP({className:e}){let t=(0,V.useContext)(AP);return(0,H.jsx)(`div`,{ref:t,className:e,"data-testid":`mobile-query-slot`})}function NP(){return(0,V.useContext)(kP)}function PP({editor:e,title:t,subtitle:n,titleTestId:r,actions:i,timerOverlay:a,reviewOverlay:o,isTimerOpen:s=!1,isReviewOpen:c=!1,onCloseTimer:l,onCloseReview:u,className:d}){return(0,H.jsxs)(`div`,{className:U(`relative flex w-full min-h-screen justify-start items-start`,d),children:[(0,H.jsxs)(`div`,{className:U(bP,yP),children:[(0,H.jsx)(xP,{title:t,subtitle:n,titleTestId:r,actions:i}),(0,H.jsx)(`main`,{className:`flex-1 min-w-0 max-w-full`,children:e})]}),s&&a&&(0,H.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,H.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,H.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,H.jsx)(`button`,{onClick:l,className:`px-3 py-1.5 rounded-md text-sm font-bold text-muted-foreground hover:text-foreground bg-muted/60 hover:bg-muted transition-colors`,children:`Close`})}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:a})]})}),c&&o&&(0,H.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,H.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,H.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,H.jsx)(`button`,{onClick:u,className:`px-3 py-1.5 rounded-md text-sm font-bold text-muted-foreground hover:text-foreground bg-muted/60 hover:bg-muted transition-colors`,children:`Close`})}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:o})]})})]})}function FP(e){return e.map(e=>{let t=e.action,n=e.secondaryAction?.action,r={kind:`link`,id:e.id,label:e.label,muted:e.level===3&&!!e.secondaryAction};return n&&n.type===`call`&&(r.onRun=n.handler,r.runIcon=e.secondaryRunIcon??`play`),t.type===`route`?{...r,to:t.to}:t.type===`scroll`?{...r,sectionId:t.sectionId}:t.type===`call`?{...r,onRun:t.handler}:r})}var IP=V.createContext(null);function LP(){let e=V.useContext(IP);if(!e)throw Error(`DropdownMenu components must be used inside a DropdownMenu`);return e}var RP=({children:e,open:t,onOpenChange:n})=>{let r=V.useContext(IP),i=V.useId(),a=r?`${r.portalChain}/${i}`:i,[o,s]=V.useState(t??!1),c=V.useRef(null),[l,u]=V.useState(-1),d=V.useRef(new Map),[,f]=V.useReducer(e=>e+1,0);V.useEffect(()=>{t!==void 0&&s(t)},[t]);let p=V.useCallback(e=>{s(e),u(-1),n?.(e)},[n]),m=V.useCallback((e,t)=>{d.current.set(e,t),f()},[]),h=V.useCallback(e=>{d.current.delete(e),f()},[]),g=V.useCallback(e=>Array.from(d.current.keys()).indexOf(e),[]),_=d.current.size,v=V.useMemo(()=>({isOpen:o,setIsOpen:p,triggerRef:c,registerItem:m,unregisterItem:h,getItemIndex:g,activeIndex:l,setActiveIndex:u,itemCount:_,menuId:i,portalChain:a}),[o,p,m,h,g,l,_,i,a]);return(0,H.jsx)(IP.Provider,{value:v,children:(0,H.jsx)(`div`,{ref:c,className:`relative inline-block`,children:e})})},zP=V.forwardRef(({className:e,children:t,asChild:n,...r},i)=>{let{isOpen:a,setIsOpen:o}=LP(),s=e=>{e.stopPropagation(),o(!a)};return n&&V.isValidElement(t)?V.cloneElement(t,{...r,onClick:s}):(0,H.jsx)(`button`,{ref:i,className:e,onClick:s,...r,children:t})});zP.displayName=`DropdownMenuTrigger`;var BP=V.forwardRef(({className:e,children:t,align:n=`center`,side:r=`bottom`,...i},a)=>{let{isOpen:o,setIsOpen:s,triggerRef:c,setActiveIndex:l,itemCount:u,menuId:d,portalChain:f}=LP(),p=V.useRef(null),m=a||p,[h,g]=V.useState({top:0,bottom:0,left:0,width:0});V.useEffect(()=>{if(!o||!c.current)return;let e=c.current.getBoundingClientRect();g({top:e.bottom+8,bottom:window.innerHeight-e.top+8,left:e.left,width:e.width})},[o,c]),V.useEffect(()=>{if(!o||u===0)return;let e=setTimeout(()=>{l(0)},0);return()=>clearTimeout(e)},[o,u,l]),V.useEffect(()=>{if(!o)return;let e=e=>{let t=e.target;if(m.current&&m.current.contains(t)||c.current&&c.current.contains(t))return;let n=t.closest?.(`[data-dropdown-chain]`)?.getAttribute(`data-dropdown-chain`);n&&n.split(`/`).includes(d)||s(!1)},t=setTimeout(()=>{document.addEventListener(`mousedown`,e)},0);return()=>{clearTimeout(t),document.removeEventListener(`mousedown`,e)}},[o,s,m,c,d]);let _=e=>{if(u!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),l(e=>e<u-1?e+1:0);break;case`ArrowUp`:e.preventDefault(),l(e=>e>0?e-1:u-1);break;case`Home`:e.preventDefault(),l(0);break;case`End`:e.preventDefault(),l(u-1);break;case`Escape`:e.preventDefault(),s(!1),c.current?.querySelector(`button`)?.focus();break;case`Tab`:s(!1)}};if(!o)return null;let v={position:`fixed`,zIndex:9999};return r===`top`?v.bottom=h.bottom:v.top=h.top,n===`end`?v.right=window.innerWidth-h.left-h.width:n===`start`?v.left=h.left:(v.left=h.left+h.width/2,v.transform=`translateX(-50%)`),Mb.createPortal((0,H.jsx)(`div`,{ref:m,role:`menu`,"data-dropdown-chain":f,className:U(`min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95`,e),style:v,onKeyDown:_,...i,children:t}),document.body)});BP.displayName=`DropdownMenuContent`;var VP=V.forwardRef(({className:e,disabled:t,inset:n,onClick:r,onKeyDown:i,...a},o)=>{let{setIsOpen:s,registerItem:c,unregisterItem:l,getItemIndex:u,activeIndex:d}=LP(),f=V.useId(),p=V.useRef(null),m=V.useCallback(e=>{p.current=e,typeof o==`function`?o(e):o&&(o.current=e)},[o]);V.useEffect(()=>(c(f,p),()=>l(f)),[f,c,l]);let h=u(f)===d;return V.useEffect(()=>{h&&p.current?.focus()},[h]),(0,H.jsx)(`div`,{ref:m,role:`menuitem`,tabIndex:t?-1:h?0:-1,"aria-disabled":t,"data-active":h?`true`:void 0,className:U(`relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors`,`focus:bg-accent focus:text-accent-foreground`,`data-[active]:bg-accent data-[active]:text-accent-foreground`,n&&`pl-8`,t&&`pointer-events-none opacity-50`,e),onClick:e=>{t||(r?.(e),s(!1))},onKeyDown:e=>{t||(i?.(e),(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r?.(e),s(!1)))},...a})});VP.displayName=`DropdownMenuItem`;var HP=V.forwardRef(({className:e,inset:t,...n},r)=>(0,H.jsx)(`div`,{ref:r,className:U(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));HP.displayName=`DropdownMenuLabel`;var UP=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:U(`-mx-1 my-1 h-px bg-muted`,e),...t}));UP.displayName=`DropdownMenuSeparator`;function WP({className:e,children:t,...n}){return(0,H.jsx)(`div`,{className:U(`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,e),...n,children:t})}var GP=[{label:`Past 1 week`,value:`last 1w`},{label:`Past 2 weeks`,value:`last 2w`},{label:`Past 4 weeks`,value:`last 4w`},{label:`Past 8 weeks`,value:`last 8w`},{label:`Past 12 weeks`,value:`last 12w`},{label:`Past 1 year`,value:`last 52w`},{label:`All time`,value:`all`}],KP=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function qP(e,t){return new Date(e,t+1,0).getDate()}function JP(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function YP(e,t){let n=X(e);if(n.error)return e;if(!t||t===`all`)return Jp({...n,window:void 0});let r=X(`:note ${t}`);return r.error||r.family!==`find`||!r.window?e:Jp({...n,window:r.window})}function XP(e){let t=X(e);return t.error||t.family===`pipeline`?null:`window`in t?t.window??null:null}function ZP({query:e,onQueryChange:t,highlightDates:n=new Set,className:r}){let i=(0,V.useMemo)(()=>XP(e),[e]),[a,o]=(0,V.useState)(null),[s,c]=(0,V.useState)(()=>new Date),l=s.getFullYear(),u=s.getMonth(),d=(0,V.useMemo)(()=>i?i.kind===`relative`?`last ${i.size}${i.unit}`:i.end?`from ${i.start} to ${i.end}`:`from ${i.start}`:`All time`,[i]),f=(0,V.useMemo)(()=>{if(!i)return null;if(i.kind===`range`)return{start:i.start,end:i.end??i.start};let e=new Date,t=new Date;return i.unit===`d`?t.setDate(e.getDate()-i.size):t.setDate(e.getDate()-i.size*7),{start:ck(t),end:ck(e)}},[i]),p=(0,V.useMemo)(()=>{let e=qP(l,u),t=JP(l,u),n=[];for(let e=0;e<t;e++)n.push(null);for(let t=1;t<=e;t++)n.push(t);return n},[l,u]),m=n=>{if(!a)o(n),t(YP(e,`from ${n} to ${n}`));else{let[r,i]=a<=n?[a,n]:[n,a];o(null),t(YP(e,`from ${r} to ${i}`))}},h=e=>{e.stopPropagation(),c(new Date(l,u-1,1))},g=e=>{e.stopPropagation(),c(new Date(l,u+1,1))},_=s.toLocaleDateString(`en-US`,{month:`short`,year:`numeric`}),v=ck(new Date);return(0,H.jsxs)(`div`,{className:U(`relative inline-flex items-center`,r),children:[(0,H.jsxs)(RP,{children:[(0,H.jsx)(zP,{asChild:!0,children:(0,H.jsxs)(`button`,{type:`button`,"data-testid":`wql-window-picker-trigger`,className:`flex h-9 items-center gap-1.5 rounded-lg border border-border bg-background px-2.5 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,H.jsx)(pt,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{className:`font-mono text-xs`,children:d}),(0,H.jsx)(Mt,{className:`size-3 text-muted-foreground`,"aria-hidden":`true`})]})}),(0,H.jsxs)(BP,{align:`end`,className:`w-72 p-3`,children:[(0,H.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1 border-b border-border/60 pb-2`,children:GP.map(n=>{let r=n.value===`all`?!i:i?.kind===`relative`&&`last ${i.size}${i.unit}`===n.value;return(0,H.jsx)(`button`,{type:`button`,"data-testid":`wql-window-preset-${n.value}`,onClick:()=>{o(null),t(YP(e,n.value))},className:U(`rounded-md px-2 py-1 text-[11px] font-medium transition-colors`,r?`bg-primary text-primary-foreground`:`bg-muted/50 text-muted-foreground hover:bg-muted hover:text-foreground`),children:n.label},n.value)})}),(0,H.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:h,"data-testid":`wql-calendar-prev-month`,className:`rounded p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,"aria-label":`Previous month`,children:(0,H.jsx)(rr,{className:`size-4`})}),(0,H.jsx)(`span`,{className:`text-xs font-semibold text-foreground`,children:_}),(0,H.jsx)(`button`,{type:`button`,onClick:g,"data-testid":`wql-calendar-next-month`,className:`rounded p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,"aria-label":`Next month`,children:(0,H.jsx)(mn,{className:`size-4`})})]}),(0,H.jsx)(`div`,{className:`mb-1 grid grid-cols-7 gap-1`,children:KP.map(e=>(0,H.jsx)(`div`,{className:`text-center text-[10px] font-medium text-muted-foreground`,children:e},e))}),(0,H.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,"data-testid":`wql-calendar-grid`,children:p.map((e,t)=>{if(e===null)return(0,H.jsx)(`div`,{className:`size-8`},`empty-${t}`);let r=`${l}-${String(u+1).padStart(2,`0`)}-${String(e).padStart(2,`0`)}`,i=f&&r>=f.start&&r<=f.end,o=f&&r===f.start||a===r,s=f&&r===f.end,c=r===v,d=n.has(r);return(0,H.jsxs)(`button`,{type:`button`,"data-testid":`wql-calendar-day-${r}`,onClick:()=>m(r),className:U(`relative flex size-8 items-center justify-center rounded-md text-xs transition-colors`,o||s?`bg-primary font-bold text-primary-foreground`:i?`bg-primary/15 font-semibold text-primary`:c?`border border-primary font-semibold text-primary`:`text-foreground hover:bg-muted`),children:[(0,H.jsx)(`span`,{children:e}),d&&!o&&!s&&(0,H.jsx)(`span`,{className:`absolute bottom-0.5 size-1 rounded-full bg-primary`})]},r)})}),a&&(0,H.jsxs)(`div`,{className:`mt-2 text-center text-[10px] text-muted-foreground`,children:[`Select second date to complete range (starting from `,a,`)`]})]})]}),i&&(0,H.jsx)(`button`,{type:`button`,"data-testid":`wql-window-picker-clear`,onClick:()=>{o(null),t(YP(e,null))},title:`Clear time window`,"aria-label":`Clear time window`,className:`ml-1 grid size-7 place-items-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,H.jsx)(Te,{className:`size-3.5`})})]})}function QP(e){switch(e.kind){case`note`:case`post`:return`note`;case`session`:return`session`;case`result`:return`result`;case`segment`:case`event`:return`segment`;case`effort`:return`effort`;default:return`note`}}var $P=[{id:`title`,label:`Title`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.title,formatValue:e=>String(e??``)},{id:`tags`,label:`Tags`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.tags??[],formatValue:e=>Array.isArray(e)?e.join(`, `):String(e??``)},{id:`excerpt`,label:`Text Excerpt`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.block?.preview?.join(` `)||e.detail||``,formatValue:e=>String(e??``)},{id:`catalog`,label:`Catalog Source`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.sourceCatalog,formatValue:e=>String(e??``)},{id:`date`,label:`Date`,level:`note`,defaultVisible:!0,align:`right`,getValue:e=>e.date,formatValue:e=>String(e??``)}],eF={note:$P,session:[{id:`title`,label:`Title`,level:`session`,defaultVisible:!0,align:`left`,getValue:e=>e.title,formatValue:e=>String(e??``)},{id:`protocol`,label:`Protocol`,level:`session`,defaultVisible:!0,align:`left`,getValue:e=>e.block?.dataType||e.subtitle||``,formatValue:e=>String(e??``)},{id:`movements`,label:`Movements`,level:`session`,defaultVisible:!0,align:`left`,getValue:e=>e.detail||``,formatValue:e=>String(e??``)},{id:`targetDuration`,label:`Target Duration`,level:`session`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.elapsedMs==null?``:zN(e.execution.elapsedMs),formatValue:e=>String(e??``)},{id:`sessionLoad`,label:`Session Load`,level:`session`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.loadLbs,formatValue:e=>typeof e==`number`?`${e.toLocaleString()} lbs`:``}],result:[{id:`title`,label:`Title`,level:`result`,defaultVisible:!0,align:`left`,getValue:e=>e.title,formatValue:e=>String(e??``)},{id:`elapsedTime`,label:`Elapsed Time`,level:`result`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.elapsedMs==null?``:zN(e.execution.elapsedMs),formatValue:e=>String(e??``)},{id:`totalTonnage`,label:`Total Tonnage`,level:`result`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.loadLbs,formatValue:e=>typeof e==`number`?`${e.toLocaleString()} lbs`:``},{id:`tis`,label:`TIS Score`,level:`result`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.tis,formatValue:e=>typeof e==`number`?e.toFixed(1):``},{id:`prBadges`,label:`PR Badges`,level:`result`,defaultVisible:!0,align:`center`,getValue:e=>e.detail&&/\bPR\b/.test(e.detail)?`PR`:``,formatValue:e=>String(e??``)}],segment:[{id:`splitDuration`,label:`Split Duration`,level:`segment`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.elapsedMs==null?``:zN(e.execution.elapsedMs),formatValue:e=>String(e??``)},{id:`roundIndex`,label:`Round/Lap Index`,level:`segment`,defaultVisible:!0,align:`left`,getValue:e=>e.title,formatValue:e=>String(e??``)},{id:`reps`,label:`Reps`,level:`segment`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.reps,formatValue:e=>e==null?``:String(e)},{id:`load`,label:`Load`,level:`segment`,defaultVisible:!0,align:`right`,getValue:e=>e.execution?.loadLbs,formatValue:e=>typeof e==`number`?`${e.toLocaleString()} lbs`:``},{id:`pacingTier`,label:`Pacing / HR Tier`,level:`segment`,defaultVisible:!0,align:`center`,getValue:e=>e.effort?.intensityTier||e.execution?.effortSlug||``,formatValue:e=>String(e??``)}],effort:[{id:`label`,label:`Label`,level:`effort`,defaultVisible:!0,align:`left`,getValue:e=>e.effort?.label||e.title,formatValue:e=>String(e??``)},{id:`canonicalSlug`,label:`Canonical Slug`,level:`effort`,defaultVisible:!0,align:`left`,getValue:e=>e.effort?.slug||e.id,formatValue:e=>String(e??``)},{id:`discipline`,label:`Discipline`,level:`effort`,defaultVisible:!0,align:`left`,getValue:e=>e.effort?.discipline??``,formatValue:e=>String(e??``)},{id:`met`,label:`MET Score`,level:`effort`,defaultVisible:!0,align:`right`,getValue:e=>e.effort?.met,formatValue:e=>typeof e==`number`?e.toFixed(1):``},{id:`intensityTier`,label:`Intensity Tier`,level:`effort`,defaultVisible:!0,align:`center`,getValue:e=>e.effort?.intensityTier??``,formatValue:e=>String(e??``)},{id:`aliases`,label:`Aliases`,level:`effort`,defaultVisible:!0,align:`left`,getValue:e=>e.effort?.aliases??[],formatValue:e=>Array.isArray(e)?e.join(`, `):String(e??``)}]};function tF(e){return eF[e]??$P}function nF(e){return tF(e).filter(e=>e.defaultVisible).map(e=>e.id)}var rF=[{id:`cards`,label:`Cards`,icon:me},{id:`rows`,label:`Rows`,icon:at},{id:`feed`,label:`Feed`,icon:vn}];function iF({streamControls:e}){return(0,H.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`l3-stream-controls`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Date window`}),(0,H.jsx)(ZP,{query:e.query,onQueryChange:e.onQueryChange,className:`w-full justify-between`})]}),e.availableGroupDims.length>0&&(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Group by`}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-groupby-options`,children:e.availableGroupDims.map(t=>{let n=e.groupDims.some(e=>e.toLowerCase()===t.id.toLowerCase());return(0,H.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 rounded-md px-2 py-1 text-xs text-foreground/80 hover:bg-muted/60 transition-colors`,"data-testid":`l3-groupby-${t.id}`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleGroupDim(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,H.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Layout`}),(0,H.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,"data-testid":`l3-layout-options`,children:rF.map(t=>{let n=t.icon,r=e.settings.layout===t.id;return(0,H.jsxs)(`button`,{type:`button`,"aria-pressed":r,onClick:()=>e.onLayoutChange(t.id),"data-testid":`l3-layout-${t.id}`,className:`flex min-h-8 items-center justify-center gap-1 rounded-md border px-1.5 py-1 text-[11px] font-medium transition-colors ${r?`border-border/80 bg-card text-foreground shadow-sm`:`border-transparent text-muted-foreground hover:text-foreground`}`,children:[(0,H.jsx)(n,{"aria-hidden":!0,className:`size-3`}),t.label]},t.id)})})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Fields`}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-field-options`,children:tF(e.level).map(t=>{let n=e.settings.visibleFields.includes(t.id);return(0,H.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 rounded-md px-2 py-1 text-xs text-foreground/80 hover:bg-muted/60 transition-colors`,"data-testid":`l3-field-${t.id}`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleField(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,H.jsx)(`span`,{children:t.label})]},t.id)})})]})]})}function aF({spec:e,pageAction:t}){let{l3Items:n,streamControls:r}=BD(),i=eP(e),a=(0,V.useMemo)(()=>FP(n),[n]),o=tP();return i.length===0&&a.length===0&&!r&&!t?null:(0,H.jsxs)(`div`,{className:`flex flex-col px-3 py-4 gap-4`,children:[r&&(0,H.jsx)(`div`,{className:`pb-3 border-b border-border/50`,children:(0,H.jsx)(iF,{streamControls:r})}),i.length>0&&(0,H.jsx)(rP,{entries:i,activeId:o}),a.length>0&&(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsx)(`div`,{className:`px-2 pb-1 pt-1 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`On this page`}),(0,H.jsx)(rP,{entries:a,activeId:o})]}),t&&(0,H.jsx)(`div`,{className:`pt-2 border-t border-border/50`,children:t})]})}var oF=1023;function sF(e){return e===`/`?`canvas:home`:`canvas:${e.replace(/^\//,``)}`}function cF(e,t){if(e===`query:new`)return``;let n=e=>{let n=`/${e}`;for(let r of Object.keys(t))if(r===e||r.endsWith(n))return r;return null},r=e=>{let r=n(e);return r===null?null:$v(t[r])};if(e.startsWith(`markdown/`)){let t=r(e);if(t!==null)return t}let i=e;if(e.startsWith(`wods/examples/`))i=`markdown/canvas/`+e.replace(/^wods\/examples\//,``);else if(e.startsWith(`wods/`))i=`markdown/canvas/`+e.replace(/^wods\//,``);else if(e.startsWith(`collections/`))i=`markdown/collections/`+e.replace(/^collections\//,``);else if(e.startsWith(`canvas/`))i=`markdown/canvas/`+e.replace(/^canvas\//,``);else{let t=r(`markdown/canvas/`+e);if(t!==null)return t;let n=r(`markdown/collections/`+e);if(n!==null)return n;i=`markdown/`+e}return r(i)??`# Source not found\n\nPath: \`${e}\`\nResolved: \`${i}\``}function lF(e){return(e.examples??[]).length>0||e.commands.some(e=>e.pipeline.length>0)}function uF(e){let t=new Map,n=null;for(let r of e)lF(r)&&(n=r),t.set(r.id,n);return t}function dF(){let[e,t]=(0,V.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: ${oF}px)`).matches);return(0,V.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(max-width: ${oF}px)`),n=e=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var fF=`wodwiki:fabAlignment`,pF=[{id:`left`,label:`Bottom left`,description:`Left-handed — search and page actions float near your left thumb`},{id:`right`,label:`Bottom right`,description:`Right-handed — search and page actions float near your right thumb`}];function mF(){try{return hF(localStorage.getItem(fF))}catch{return}}function hF(e){return e===`right`||e===`left`?e:void 0}var gF=typeof window>`u`?void 0:mF();typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===fF&&(gF=hF(e.newValue))});function _F(e){gF=e;try{e===`right`?localStorage.removeItem(fF):localStorage.setItem(fF,e)}catch{}window.dispatchEvent(new StorageEvent(`storage`,{key:fF,newValue:e}))}function vF(){let[e,t]=(0,V.useState)(()=>gF??`right`);return(0,V.useEffect)(()=>{let e=e=>{e.key===fF&&t(hF(e.newValue)??`right`)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),[e,_F]}function yF({onOpen:e}){return(0,H.jsx)(`button`,{type:`button`,onClick:e,"aria-label":`Search`,"data-testid":`search-fab`,className:U(`size-14 rounded-full flex items-center justify-center`,`bg-primary text-primary-foreground shadow-lg`,`hover:bg-primary/90 active:scale-95 transition-all`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`),children:(0,H.jsx)(an,{className:`size-6`})})}var bF=(0,V.createContext)(null),xF=(0,V.createContext)(!1),SF=(0,V.createContext)(null);function CF(){return(0,V.useContext)(bF)!==null}function wF({primary:e,navbar:t,children:n,label:r,fallback:i=!1}){let a=(0,V.useContext)(bF),o=(0,V.useContext)(xF),s=dF(),c=(0,V.useId)(),l=a!==null&&!o&&s&&!i,u=a!==null&&i,d=(0,H.jsx)(xF.Provider,{value:!0,children:n});return(0,V.useEffect)(()=>{if(!(!l&&!u))return a.register({id:c,primary:e,navbar:t,children:d,label:r??`Page options`,fallback:i}),()=>a.unregister(c)},[l,u,a,c,e,d,r,i]),i||a&&s&&!o?null:(0,H.jsx)(xF.Provider,{value:!0,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t,e,n]})})}function TF({onSearch:e,children:t}){let[n,r]=(0,V.useState)([]),i=(0,V.useCallback)(e=>r(t=>[...t.filter(t=>t.id!==e.id),e]),[]),a=(0,V.useCallback)(e=>r(t=>t.filter(t=>t.id!==e)),[]),o=(0,V.useMemo)(()=>({register:i,unregister:a}),[i,a]),s=(0,V.useMemo)(()=>{for(let e=n.length-1;e>=0;--e)if(!n[e].fallback)return n[e].navbar??null;return null},[n]);return(0,H.jsx)(bF.Provider,{value:o,children:(0,H.jsxs)(SF.Provider,{value:s,children:[t,(0,H.jsx)(DF,{registrations:n,onSearch:e})]})})}function EF(){let e=(0,V.useContext)(SF);return e?(0,H.jsx)(H.Fragment,{children:e}):null}function DF({registrations:e,onSearch:t}){let n=dF(),[r]=vF(),i=Pb(),[a,o]=(0,V.useState)(!1),s=(0,V.useRef)(null),c=zt(),[l,u]=(0,V.useState)(!1),d=(0,V.useRef)(0),f=i.offsetBottom>0,p=(0,V.useRef)(null),m=(0,V.useRef)(null),h=(0,V.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(!e[t].fallback)return e[t]},[e]),g=(0,V.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(e[t].fallback)return e[t]},[e]);(0,V.useEffect)(()=>{o(!1),u(!1),d.current=window.scrollY},[c.pathname]),(0,V.useEffect)(()=>{if(!n)return;let e=()=>{let e=window.scrollY;if(e<=0||f||a){d.current=e,u(!1);return}let t=e-d.current;Math.abs(t)<8||(d.current=e,u(t>0))};return window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[n,f,a]),(0,V.useLayoutEffect)(()=>{a&&s.current?.focus()},[a]);let[_,v]=(0,V.useState)({active:0,global:0});(0,V.useLayoutEffect)(()=>{let e=p.current?.childElementCount??0,t=m.current?.childElementCount??0;v(n=>n.active===e&&n.global===t?n:{active:e,global:t})},[h,g]);let y=_.active>0||_.global>0;return!n||!t&&!h&&!g?null:(0,H.jsxs)(`div`,{"data-testid":`actions-dock`,className:U(`lg:hidden fixed z-40 flex flex-col items-center gap-2`,`transition-[transform,visibility] duration-200 ease-out`,r===`left`?`left-4 items-start`:`right-4 items-end`,l&&!a&&!f&&`translate-y-[calc(100%+2rem)] invisible pointer-events-none`),style:{bottom:`calc(1rem + var(--thumb-dock-lift, 0px) + ${i.offsetBottom}px + env(safe-area-inset-bottom))`},children:[(0,H.jsxs)(`div`,{className:`relative z-40 flex flex-col items-center gap-2`,children:[h?.primary&&(0,H.jsx)(`div`,{className:`[&_button]:min-h-11 [&_button]:min-w-11`,children:h.primary}),t&&(0,H.jsx)(yF,{onOpen:()=>{o(!1),t()}})]}),a&&y&&(0,H.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-hidden":`true`,className:`fixed inset-0 z-30 cursor-default`,onClick:()=>o(!1)}),(0,H.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":h?.label??g?.label??`Page options`,tabIndex:-1,hidden:!a||!y,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),o(!1))},className:U(`relative z-40 flex w-60 max-w-[calc(100vw-2rem)] flex-col gap-3 overflow-y-auto rounded-2xl bg-card p-3 shadow-xl ring-1 ring-foreground/5 outline-none`,`[&_button]:min-h-11 [&_button]:min-w-11`),style:{maxHeight:`calc(${i.height===null?`100dvh`:`${i.height}px`} - 6rem - env(safe-area-inset-bottom))`},children:[(0,H.jsx)(`div`,{ref:p,className:`contents`,children:h?.children}),_.active>0&&_.global>0&&(0,H.jsx)(`div`,{className:`my-1 border-t border-border/60`,"aria-hidden":`true`}),(0,H.jsx)(`div`,{ref:m,className:`contents`,children:g?.children})]}),y&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":h?.label??g?.label??`Page options`,"aria-expanded":a,"data-testid":`actions-overflow`,className:U(`relative z-40 flex size-12 items-center justify-center rounded-full`,`bg-card text-foreground shadow-lg ring-1 ring-foreground/10`,`hover:bg-muted active:scale-95 transition-all`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`),children:a?(0,H.jsx)(Le,{className:`size-6`}):(0,H.jsx)(ge,{className:`size-6`})})]})}function OF(){return(0,H.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,H.jsx)(`path`,{d:`M2 6.75C2 6.33579 2.33579 6 2.75 6H17.25C17.6642 6 18 6.33579 18 6.75C18 7.16421 17.6642 7.5 17.25 7.5H2.75C2.33579 7.5 2 7.16421 2 6.75ZM2 13.25C2 12.8358 2.33579 12.5 2.75 12.5H17.25C17.6642 12.5 18 12.8358 18 13.25C18 13.6642 17.6642 14 17.25 14H2.75C2.33579 14 2 13.6642 2 13.25Z`})})}function kF(){return(0,H.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,H.jsx)(`path`,{d:`M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z`})})}function AF(){let{tree:e,navState:t,contextNav:n}=BD(),r=zt(),i=bk();return!e.find(e=>e.id===t.activeL1Id)?.applyFooter||n?.pathname===r.pathname?null:(0,H.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,H.jsx)(`button`,{type:`button`,onClick:i,className:`h-11 w-full rounded-lg bg-primary text-sm font-medium text-primary-foreground`,children:`Apply`})})}function jF({open:e,close:t,onSearch:n,onCreate:r,children:i}){return(0,H.jsxs)(Xe,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,H.jsx)(P,{transition:!0,className:`fixed inset-0 bg-black/30 dark:bg-black/30 transition data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in`}),(0,H.jsx)(se,{transition:!0,className:`fixed inset-y-0 left-0 w-full transition duration-300 ease-out data-closed:-translate-x-full`,children:(0,H.jsx)(yk,{close:t,children:(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 bg-card`,children:[(0,H.jsx)(`div`,{className:`flex h-full w-14 shrink-0 flex-col items-center border-r border-zinc-950/5 bg-background/72 py-3 dark:border-white/5 [&_a]:size-11 [&_button]:size-11`,children:(0,H.jsx)(fP,{onSearch:()=>{t(),n?.()},onCreate:r?()=>{t(),r()}:void 0})}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,H.jsx)(`div`,{className:`flex items-center px-4 pt-3`,children:(0,H.jsx)(Sn,{as:nM,"aria-label":`Close navigation`,children:(0,H.jsx)(kF,{})})}),(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:i}),(0,H.jsx)(AF,{})]})]})})})]})}function MF({open:e,close:t,children:n}){return(0,H.jsxs)(Xe,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,H.jsx)(P,{transition:!0,className:`fixed inset-0 bg-black/30 dark:bg-black/30 transition data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in`}),(0,H.jsx)(se,{transition:!0,className:`fixed inset-y-0 right-0 w-full transition duration-300 ease-out data-closed:translate-x-full`,children:(0,H.jsx)(yk,{close:t,children:(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-end px-4 pt-3`,children:(0,H.jsx)(Sn,{as:nM,"aria-label":`Close page options`,children:(0,H.jsx)(kF,{})})}),(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:n}),(0,H.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,H.jsx)(`button`,{type:`button`,onClick:t,className:`h-11 w-full rounded-lg bg-primary text-sm font-medium text-primary-foreground`,children:`Apply`})})]})})})]})}function NF({navbar:e,sidebar:t,onSearch:n,onCreate:r,secondary:i,pageAction:a,hideDesktopSidebar:o,children:s}){let[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(!1),f=(0,V.useRef)(null),[p,m]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>m(t=>{let n=e.childElementCount>0;return t===n?t:n}),n=new MutationObserver(t);return n.observe(e,{childList:!0,subtree:!0}),t(),()=>n.disconnect()},[]);let{streamControls:h}=BD(),g=(0,V.useMemo)(()=>{let e=X(h?.query??``);return!e.error&&ip(e)&&e.filters.length>0},[h?.query]);return(0,H.jsx)(jP,{children:(0,H.jsx)(TF,{onSearch:n,children:(0,H.jsx)(`div`,{className:`relative isolate flex min-h-svh w-full bg-background max-lg:flex-col lg:flex-row`,children:(0,H.jsxs)(`div`,{className:`flex flex-1 w-full max-lg:flex-col lg:flex-row`,children:[(0,H.jsxs)(`nav`,{"aria-label":`Main`,className:`hidden lg:flex`,children:[(0,H.jsx)(`div`,{className:`w-14 shrink-0 sticky top-0 h-svh flex flex-col items-center border-r border-zinc-950/5 dark:border-white/5 bg-background/72 backdrop-blur-sm z-40 py-3`,children:(0,H.jsx)(fP,{onSearch:n??(()=>{}),onCreate:r})}),(0,H.jsx)(`div`,{className:U(`w-60 shrink-0 sticky top-0 self-start h-svh min-h-0 overflow-hidden border-r border-zinc-950/5 dark:border-white/5 bg-background/72 backdrop-blur-sm flex flex-col`,o&&`lg:hidden`),children:t})]}),(0,H.jsx)(jF,{open:c,close:()=>l(!1),onSearch:n,onCreate:r,children:t}),(0,H.jsxs)(`div`,{className:`flex flex-1 flex-col min-w-0 xl:max-w-[984px] 2xl:max-w-none`,children:[(0,H.jsxs)(`header`,{"data-page-sticky-boundary":`true`,className:`lg:hidden sticky top-0 z-20 flex items-center px-2 sm:px-4 bg-card border-b border-border/50`,children:[(0,H.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,H.jsx)(nM,{onClick:()=>l(!0),"aria-label":`Open navigation`,children:(0,H.jsx)(OF,{})})}),(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),r&&(0,H.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,H.jsx)(nM,{onClick:r,"aria-label":`New journal note`,children:(0,H.jsx)(cr,{className:`size-5`})})}),p&&(0,H.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,H.jsx)(nM,{onClick:()=>d(!0),"aria-label":`Open page options`,children:(0,H.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,H.jsx)(_t,{className:`size-5`}),g&&(0,H.jsx)(`span`,{"data-testid":`drawer-filters-active`,className:`absolute -top-1 -right-1 size-2 rounded-full bg-amber-500`,"aria-hidden":`true`})]})})})]}),(0,H.jsxs)(`main`,{className:`flex flex-1 flex-col lg:min-w-0`,children:[(0,H.jsx)(`div`,{className:`grow w-full max-lg:pb-48 lg:overflow-visible`,children:s}),(0,H.jsx)(PF,{})]})]}),(0,H.jsx)(`aside`,{className:`hidden 2xl:flex w-60 shrink-0 sticky top-0 h-svh flex-col overflow-y-auto bg-background/72 backdrop-blur-sm`,children:(0,H.jsx)(`div`,{ref:f,className:`contents`,children:(0,H.jsx)(aF,{spec:i,pageAction:a})})}),(0,H.jsx)(MF,{open:u,close:()=>d(!1),children:(0,H.jsx)(aF,{spec:i,pageAction:a})})]})})})})}function PF(){let e=(0,V.useRef)(null),[t,n]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=e.current;if(!t)return;let r=new ResizeObserver(e=>{let t=Math.round(e[0]?.contentRect.height??0);n(e=>e===t?e:t)});r.observe(t,{box:`content-box`});let i=Math.round(t.getBoundingClientRect().height);return n(e=>e===i?e:i),()=>r.disconnect()},[]),(0,V.useEffect)(()=>(document.documentElement.style.setProperty(`--thumb-dock-lift`,`${t}px`),()=>document.documentElement.style.setProperty(`--thumb-dock-lift`,`0px`)),[t]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:U(`lg:hidden fixed inset-x-0 bottom-0 z-30`,t>0&&`bg-card border-t border-border/50 px-3 py-2`),children:(0,H.jsx)(`div`,{ref:e,className:`w-full min-w-0`,children:(0,H.jsx)(MP,{className:`flex w-full min-w-0`})})}),(0,H.jsx)(`div`,{className:`lg:hidden`,"aria-hidden":`true`,style:{height:t}})]})}function FF(e){let t=e.indexOf(`markdown`);return t!==-1&&e.length>t+2?e[t+2]:`General`}function IF(e){return String(ey(Jv(e).meta,`search`)??``).toLowerCase()===`hidden`}function LF(e){let t=ey(Jv(e).meta,`date`);if(!(typeof t!=`string`||!/^\d{4}-\d{2}-\d{2}$/.test(t)))return new Date(`${t}T12:00:00Z`).getTime()}function RF(e){return Object.entries(e).map(([e,t])=>{let n=e.split(`/`),r=n[n.length-1].replace(`.md`,``),i=t,a=ey(Jv(i).meta,`title`);return{id:e,name:r,displayName:typeof a==`string`&&a.trim()?a.trim():eT(r),category:FF(n),content:i,date:LF(i),searchHidden:IF(i)}})}function zF(){let e=ST();return(0,V.useMemo)(()=>e?RF(e):[],[e])}var BF={};function VF(e){if(!(`payload`in e))return;let t=e.payload;if(!t||typeof t!=`object`)return;let n=t;return n.targetDate??n.updatedAt}function HF(e,t){let{canvasPage:n,workoutItems:r,recentResults:i,selectWorkout:a}=t;if(n){let t=/^\/(?:c|collections)\//.test(e),i=t?e.split(`/`).pop()??null:null;if(e===`/`)return[];let o=[],s=e.startsWith(`/guide/`);return n.sections.filter(e=>e.level>1).forEach(e=>{if(o.push({id:e.id,label:e.heading,type:`heading`}),!s){let t=wj(e).split(`
95
+ `),n=0;t.forEach((t,r)=>{let i=t.trim().match(/^```(time|log)(:\w+)?\s*$/);if(i){let t=i[1];n++,o.push({id:`${e.id}-${t}-${r+1}`,label:`Workout ${n}`,type:t})}})}}),t&&i&&(o.push({id:`collection-workouts`,label:`Explore`,type:`heading`}),r.filter(e=>e.category===i&&e.name.toLowerCase()!==`readme`).forEach(e=>{o.push({id:`workout-${e.id}`,label:e.name,type:`time`,onRun:()=>a(e),runIcon:`link`})})),o}if(e===`/journal`){let e=new Set;return i.forEach(t=>{let n=new Date(t.createdAt).getTime();Number.isFinite(n)&&e.add(ck(new Date(n)))}),r.forEach(t=>{let n=VF(t);n&&Number.isFinite(new Date(n).getTime())&&e.add(ck(new Date(n)))}),Array.from(e).sort().reverse().slice(0,10).map(e=>({id:e,label:dM(new Date(e+`T00:00:00`)),type:`heading`}))}return[]}var UF=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function WF(e){return UF.test(e)}function GF(e){try{return decodeURIComponent(e)}catch{return null}}function KF(e){if(!dk(e))return!1;let t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return!1;let n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])));return n.getUTCFullYear()===Number(t[1])&&n.getUTCMonth()===Number(t[2])-1&&n.getUTCDate()===Number(t[3])}function qF(e){let t=e.length>1?e.replace(/\/+$/,``):e;if(t===`/journal`)return{kind:`index`};if(!t.startsWith(`/journal/`))return{kind:`invalid`};let n=t.slice(9).split(`/`).map(GF);if(n.some(e=>e==null))return{kind:`invalid`};let r=n;if(r.length===1){let e=r[0];return KF(e)?{kind:`date`,journalDate:e}:UF.test(e)?{kind:`uuid-alias`,noteId:e}:e?{kind:`slug-alias`,slug:e}:{kind:`invalid`}}if(r.length===2){let[e,t]=r;if(KF(e)&&UF.test(t))return{kind:`note`,journalDate:e,noteId:t}}return{kind:`invalid`}}var JF=`# My Workout Notebook
96
+
97
+ Welcome to the **WOD.WIKI** playground.
98
+ This editor uses **Whiteboard Script**, a markdown-based language for defining workouts.
99
+
100
+ ## Getting Started
101
+ 1. Hover over a code block below.
102
+ 2. Click **Run** to start the interactive timer.
103
+ 3. Track your progress with checkboxes and metrics.
104
+
105
+ ## Example Workout
106
+ \`\`\`time
107
+ Timer 12:00
108
+ - 10 Pushups
109
+ - 10 Situps
110
+ - 10 Squats
111
+ - [ ] 200m Run { intensity: 80% }
112
+ \`\`\`
113
+
114
+ ## Advanced: Repeaters
115
+ \`\`\`time
116
+ 3x
117
+ - 10 Kettlebell Swings (24kg)
118
+ - 5 Burpees
119
+ - 30s Rest
120
+ \`\`\`
121
+ `;function YF(e,t){let{name:n,id:r}=t,i=NO(e),a=r||(e.startsWith(`/note/playground/`)?n:void 0),o=qF(e),s=![`index`,`invalid`].includes(o.kind),c=o.kind===`date`?o.journalDate:o.kind===`note`||o.kind===`uuid-alias`?o.noteId:o.kind===`slug-alias`?o.slug:void 0,l=FO(e),u=l?null:IO(e),d=e.match(/^\/(?:notes|note)\/([^/]+)$/),f=d!=null,p=d?decodeURIComponent(d[1]):void 0,m=null,h=e.match(/^\/(?:c|collections)\/([^/]+)\/([^/]+)$/);if(h){let e=decodeURIComponent(h[1]),t=decodeURIComponent(h[2]);if(WF(t)){if(!f)return{isPlaygroundRoute:i,effectivePlaygroundId:a,isJournalEntryRoute:s,journalEntryId:c,isNoteByIdRoute:!0,noteById:t,collectionDate:null,feedItemMatch:l,feedDetailMatch:u}}else{let n=dk(t);n&&(m={slug:e,date:n.dateKey})}}return{isPlaygroundRoute:i,effectivePlaygroundId:a,isJournalEntryRoute:s,journalEntryId:c,isNoteByIdRoute:f,noteById:p,collectionDate:m,feedItemMatch:l,feedDetailMatch:u}}function XF(e,t,n,r,i){let{category:a,name:o,collection:s,workout:c}=n;if(e.isPlaygroundRoute)return{name:`Playground`,content:``,category:`playground`};if(e.isNoteByIdRoute&&e.noteById)return{name:`Note`,content:``,category:`note`};if(e.collectionDate)return{name:e.collectionDate.date,content:``,category:e.collectionDate.slug};if(e.isJournalEntryRoute&&e.journalEntryId)return{name:e.journalEntryId,content:``,category:`journal`};if(t.startsWith(`/effort/`)||t.startsWith(`/e/`)){let e=t.startsWith(`/e/`)?`/e/`:`/effort/`;return{name:decodeURIComponent(t.slice(e.length).split(`/`)[0]??`Effort`),content:``,category:`effort`}}if(e.feedItemMatch)return{name:decodeURIComponent(e.feedItemMatch[2]),content:``,category:`feed`};if(e.feedDetailMatch)return{name:decodeURIComponent(e.feedDetailMatch),content:``,category:`feed`};if(t.startsWith(`/dashboard/`)||t.startsWith(`/d/`)){let e=t.startsWith(`/d/`)?t.slice(3):t.split(`/`)[2];return{name:decodeURIComponent(e??`Dashboard`),content:``,category:`dashboard`}}if(t.startsWith(`/session/`))return{name:decodeURIComponent(t.split(`/`)[2]??`Sessions`),content:``,category:`sessions`};if(i)return{name:i.sections[0]?.heading??`Canvas`,content:``,category:`canvas`};let l={"/":`Home`,"/results":`Results`,"/results/segments":`Segments`,"/dashboard":`Dashboards`,"/dashboards":`Dashboards`,"/analytics/dashboard":`Analytics Dashboard`,"/analytics/explorer":`Metric Explorer`},u=QD(t),d=fO(u)??l[t]??l[u];if(d)return{name:d,content:``,category:`General`};if(u.startsWith(`/results/`))return{name:`Result`,content:JF,category:`Results`};if(u===`/settings`||u.startsWith(`/settings/`))return{name:`Settings`,content:JF,category:`Settings`};let f=c||o;if(!f)return{name:`Home`,content:JF,category:`General`};let p=decodeURIComponent(f),m=s||a?decodeURIComponent(s||a):`General`,h=r.find(e=>e.name===p&&e.category===m);return h?{name:h.name,content:h.content,category:h.category}:{name:p,content:JF,category:m}}function ZF(e,t,n){let r=QD(t);return pO(r)?`library`:e.feedDetailMatch?`feedDetail`:e.feedItemMatch?`feedItem`:t.startsWith(`/effort/`)||t.startsWith(`/e/`)?`effortDetail`:t===`/analytics/explorer`?`analyticsExplorer`:t===`/dashboard`||t===`/dashboards`?`dashboardExplorer`:t.startsWith(`/dashboard/`)||t.startsWith(`/d/`)?`dashboardView`:r===`/settings`||r.startsWith(`/settings/`)?`settings`:n?`canvas`:e.isPlaygroundRoute&&e.effectivePlaygroundId?`playground`:e.isNoteByIdRoute&&e.noteById?`note`:e.collectionDate?`collectionDate`:e.isJournalEntryRoute&&e.journalEntryId?`journalEntry`:`workout`}function QF(e,t,n){switch(e){case`canvas`:return{wrap:`canvas`,title:n.name,subheader:/^\/(?:c|collections)\//.test(t)?`filter-collection-workouts`:void 0,actionsMode:`collection-readonly`,withIndex:!0};default:return{wrap:`bare`}}}function $F(e,t,n){let r=YF(e,t);if(!n.canvasPage&&!r.noteById){let t=e.match(/^\/p\/([^/]+)$/);t&&(r.isNoteByIdRoute=!0,r.noteById=decodeURIComponent(t[1]))}let i=XF(r,e,t,n.workoutItems,n.canvasPage),a=HF(e,n),o=ZF(r,e,n.canvasPage),s=QF(o,e,i);return{...r,canvasPage:n.canvasPage,workout:i,nav:a,page:o,shell:s}}function eI(e=20){let[t,n]=(0,V.useState)([]),{pathname:r}=zt(),i=(0,V.useCallback)(()=>{Z.getRecentSessions(e).then(n).catch(()=>{})},[e]);return(0,V.useEffect)(()=>{i()},[r,i]),t}function tI(){let e=Mn();return(0,V.useCallback)(t=>{t.name===`Home`?e(Q.home):e(xO(t.category??`General`,t.name))},[e])}function nI(){let e=_n(),{pathname:t}=zt(),n=zF(),r=eM(t),i=eI(),a=tI();return(0,V.useMemo)(()=>$F(t,e,{workoutItems:n,canvasPage:r,recentResults:i,selectWorkout:a}),[t,e,n,r,i,a])}function rI(e,t,n){let r=e===`upload`?`Uploading`:`Downloading`,i=n??`data`;return t>1?`${r} ${i} (${t} syncs)`:`${r} ${i}`}function iI(){let e=(0,V.useSyncExternalStore)(Vv,Bv);return e.uploading===0&&e.downloading===0?null:(0,H.jsxs)(`div`,{role:`status`,"data-testid":`sync-activity-indicators`,className:`flex items-center gap-1 text-muted-foreground`,children:[e.downloading>0&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":rI(`download`,e.downloading,e.label),title:rI(`download`,e.downloading,e.label),children:[(0,H.jsx)(rt,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.downloading>1&&(0,H.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.downloading})]}),e.uploading>0&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":rI(`upload`,e.uploading,e.label),title:rI(`upload`,e.uploading,e.label),children:[(0,H.jsx)(qe,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.uploading>1&&(0,H.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.uploading})]})]})}var aI=0,oI=null;function sI(e,t){let n=[];e.added>0&&n.push(`${e.added.toLocaleString()} new ${e.added===1?`record`:`records`}`),e.updated>0&&n.push(`${e.updated.toLocaleString()} updated`),ND({title:`${e.source} sync complete`,description:n.length>0?`${n.join(`, `)} — feeds can be refreshed anytime.`:`Nothing new — feeds can be refreshed anytime.`,action:(0,H.jsx)(yD,{altText:`Open the catalog`,onClick:()=>t(`/catalogs`),children:`Open catalog`})})}function cI(){let e=Mn();return(0,V.useEffect)(()=>{let t=t=>{if(t.error||(oI=null),t.result&&t.result.id>aI&&(aI=t.result.id,sI(t.result,e)),t.error&&t.error!==oI){oI=t.error;let n=t.error.toLowerCase(),r=/turso|database|token|libsql/.test(n)?Q.settingsStorage:/seed|feed|source|manifest|chunk/.test(n)?Q.settingsSync:Q.settings;ND({title:`Sync failed`,description:t.error,variant:`destructive`,action:(0,H.jsx)(yD,{altText:`Open settings`,onClick:()=>e(r),children:`Settings`})})}};return t(Bv()),Vv(()=>t(Bv()))},[e]),null}var lI=t({usePaletteStore:()=>uI}),uI=Rt((e,t)=>({isOpen:!1,request:null,_resolve:null,open(n){let{_resolve:r}=t();return r&&e({_resolve:null}),new Promise(t=>{e({isOpen:!0,request:n,_resolve:t})})},_select(n){let{_resolve:r}=t();e({_resolve:null}),r?.({dismissed:!1,item:n}),setTimeout(()=>{t()._resolve||e({isOpen:!1,request:null})},0)},_dismiss(){let{_resolve:n}=t();e({isOpen:!1,request:null,_resolve:null}),n?.({dismissed:!0})}}));function dI(e,t){if(!t)return!0;let n=t.toLowerCase();return!!(e.label.toLowerCase().includes(n)||e.subtitle?.toLowerCase().includes(n)||e.keywords?.some(e=>e.toLowerCase().includes(n)))}function fI(e){let{items:t,defaultActiveId:n,multi:r=!1,onSelect:i}=e,[a,o]=(0,V.useState)(n??null),[s,c]=(0,V.useState)(new Set),[l,u]=(0,V.useState)(``),d=(0,V.useRef)(null);(0,V.useEffect)(()=>{n!==void 0&&o(n)},[n]);let f=(0,V.useMemo)(()=>l?t.filter(e=>dI(e,l)):t,[t,l]),p=(0,V.useMemo)(()=>{let e=new Map;for(let t of f){let n=t.group??``;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[f]),m=(0,V.useCallback)((e,t)=>{c(n=>{let i=new Set(n);if(r&&t?.shift&&d.current){let t=f.findIndex(e=>e.id===d.current),n=f.findIndex(t=>t.id===e);if(t!==-1&&n!==-1){let[e,r]=t<n?[t,n]:[n,t];f.slice(e,r+1).forEach(e=>i.add(e.id))}}else r&&t?.ctrl?i.has(e)?i.delete(e):i.add(e):(i.clear(),i.add(e));return i}),d.current=e},[r,f]),h=(0,V.useCallback)(()=>{c(new Set),d.current=null},[]),g=(0,V.useCallback)(e=>{o(e.id),m(e.id),i?.(e)},[i,m]);return{visibleItems:f,groups:p,activeId:a,setActiveId:o,selectedIds:s,toggleSelected:m,clearSelection:h,query:l,setQuery:u,onKeyDown:(0,V.useCallback)(e=>{if(!f.length)return;let t=f.findIndex(e=>e.id===a);if(e.key===`ArrowDown`){e.preventDefault();let n=f[Math.min(t+1,f.length-1)];o(n.id)}else if(e.key===`ArrowUp`){e.preventDefault();let n=f[Math.max(t-1,0)];o(n.id)}else if(e.key===`Enter`){e.preventDefault();let t=f.find(e=>e.id===a);t&&g(t)}else e.key===`Escape`&&h()},[f,a,g,h]),selectItem:g}}function pI(e){return e===`meta`?`⌘`:e===`shift`?`⇧`:e===`alt`?`⌥`:e}function mI({tokens:e,delimiter:t}){return(0,H.jsx)(`span`,{className:`flex items-center gap-0.5 ml-auto shrink-0`,children:e.map((e,n)=>(0,H.jsxs)(`span`,{className:`contents`,children:[n>0&&t?(0,H.jsx)(`span`,{"aria-hidden":`true`,className:`px-0.5 text-[10px] font-mono text-zinc-400 dark:text-zinc-500`,children:t}):null,(0,H.jsx)(`kbd`,{className:`inline-flex items-center rounded border border-zinc-300 bg-zinc-100 px-1 py-0.5 text-[10px] font-mono text-zinc-500 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-400`,children:pI(e)})]},`shortcut-${n}-${e}`))})}function hI({item:e,ctx:t}){let n=t.actions.find(e=>e.isPrimary),r=t.actions.filter(e=>!e.isPrimary);return(0,H.jsxs)(`div`,{role:`option`,"aria-selected":t.isSelected,className:U(`flex items-center gap-2 px-3 py-2 rounded-md cursor-pointer select-none`,`text-sm transition-colors`,t.isActive||t.isSelected?`bg-primary/10 text-primary`:`hover:bg-zinc-100 dark:hover:bg-zinc-800 text-zinc-700 dark:text-zinc-300`,e.isDisabled&&`opacity-40 pointer-events-none`,e.depth&&e.depth>0?`pl-${Math.min(e.depth*4+3,16)}`:``),onClick:e.isDisabled?void 0:t.onSelect,children:[e.icon&&(0,H.jsx)(`span`,{className:`shrink-0 text-zinc-400 dark:text-zinc-500 w-4 h-4 flex items-center justify-center`,children:e.icon}),(0,H.jsxs)(`span`,{className:`flex flex-col min-w-0 flex-1`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium leading-tight`,children:e.label}),e.subtitle&&(0,H.jsx)(`span`,{className:`truncate text-xs text-zinc-500 dark:text-zinc-400 leading-tight mt-0.5`,children:e.subtitle})]}),e.badge!==void 0&&(0,H.jsx)(`span`,{className:`shrink-0 rounded-full bg-zinc-200 dark:bg-zinc-700 px-1.5 py-0.5 text-[10px] font-medium text-zinc-600 dark:text-zinc-300`,children:e.badge}),e.shortcut&&e.shortcut.length>0&&(0,H.jsx)(mI,{tokens:e.shortcut}),r.length>0&&(0,H.jsx)(`span`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-1`,children:r.map(e=>(0,H.jsx)(`button`,{title:e.label,className:`rounded p-0.5 hover:bg-zinc-200 dark:hover:bg-zinc-700 text-zinc-400 hover:text-zinc-600`,onClick:n=>{n.stopPropagation(),t.executeAction(e.action)},children:e.icon??e.label},e.id))}),n&&(0,H.jsx)(`button`,{title:n.label,className:`shrink-0 rounded px-2 py-1 text-xs bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,onClick:e=>{e.stopPropagation(),t.executeAction(n.action)},children:n.icon??n.label})]})}function gI({items:e,query:t,onQueryChange:n,onSelect:r,isOpen:i,onClose:a,header:o,searchRow:s,footer:c,filterResults:l=!0,placeholder:u=`Search…`,actions:d,renderItem:f,mobileClose:p,emptyState:m,className:h}){let g=(0,V.useRef)(null),_=(0,V.useRef)(null),v=Mn(),[y,b]=Yt(),x=(0,V.useMemo)(()=>({navigate:(e,t)=>v(e,t),setQueryParam:(e,t)=>{let n=new URLSearchParams(y);Object.entries(e).forEach(([e,t])=>{t===null?n.delete(e):n.set(e,t)}),b(n,{replace:t})}}),[v,y,b]),S=(0,V.useCallback)(e=>mA(e,x),[x]),C=fI({items:e,onSelect:(0,V.useCallback)(e=>{let t=[...e.actions??[],...d?.(e)??[]].find(e=>e.isPrimary);t?S(t.action):r(e)},[d,r,S])});return(0,V.useEffect)(()=>{i&&!s&&setTimeout(()=>g.current?.focus(),0)},[i,s]),(0,V.useEffect)(()=>{C.setQuery(l?t:``)},[t,l]),(0,V.useEffect)(()=>{if(C.activeId){for(let e of _.current?.querySelectorAll(`[data-item-id]`)??[])if(e.dataset.itemId===C.activeId){e.scrollIntoView?.({block:`nearest`});break}}},[C.activeId]),i?(0,H.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,className:U(`flex flex-col overflow-hidden rounded-xl border border-zinc-200 bg-white shadow-2xl dark:border-zinc-700 dark:bg-zinc-900`,h),onKeyDown:e=>{e.key===`Escape`&&a()},children:[(0,H.jsx)(`div`,{onKeyDown:e=>{if(e.key===`Escape`){a();return}e.key===`ArrowDown`&&!e.defaultPrevented&&C.visibleItems.length>0&&(e.preventDefault(),C.setActiveId(C.visibleItems[0].id),_.current?.focus())},children:s??(0,H.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-zinc-200 px-3 dark:border-zinc-700`,children:[(0,H.jsx)(Bt,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,H.jsx)(`input`,{ref:g,type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:u,className:`flex-1 bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground`}),p&&(0,H.jsx)(`button`,{type:`button`,onClick:a,"aria-label":`Close`,"data-testid":`palette-cancel`,className:`-mr-1 rounded-md p-1.5 text-muted-foreground hover:text-foreground sm:hidden`,children:(0,H.jsx)(Te,{className:`h-4 w-4`})}),(0,H.jsx)(`kbd`,{className:`hidden rounded border border-zinc-200 px-1.5 py-0.5 text-[10px] text-zinc-400 sm:inline dark:border-zinc-600`,children:`esc`})]})}),o,(0,H.jsx)(`div`,{ref:_,role:`listbox`,"aria-label":`Results`,"aria-activedescendant":C.activeId??void 0,tabIndex:-1,onKeyDown:e=>{if(e.key===`Escape`){a();return}C.onKeyDown(e)},className:`min-h-0 flex-1 overflow-y-auto p-1 outline-none`,children:C.visibleItems.length===0?m??(t?(0,H.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results found for`,` `,(0,H.jsxs)(`span`,{className:`font-medium text-zinc-600 dark:text-zinc-300`,children:[`“`,t,`”`]})]}):(0,H.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No results`})):Array.from(C.groups.entries()).map(([e,t])=>(0,H.jsxs)(`div`,{className:`mb-1`,children:[e&&(0,H.jsx)(`div`,{className:`px-2 py-1 text-[11px] font-semibold uppercase tracking-wider text-zinc-400 dark:text-zinc-500`,children:e}),t.map(e=>{let t=[...e.actions??[],...d?.(e)??[]],n={isSelected:C.selectedIds.has(e.id),isActive:C.activeId===e.id,depth:e.depth??0,actions:t,onSelect:()=>C.selectItem(e),executeAction:S};return(0,H.jsx)(`div`,{id:e.id,"data-item-id":e.id,className:`group`,onMouseEnter:()=>C.setActiveId(e.id),children:f?f(e,n):(0,H.jsx)(hI,{item:e,ctx:n})},e.id)})]},e))}),c]}):null}var _I=150,vI=.66,yI=.92;function bI(){let[e,t]=(0,V.useState)(()=>typeof window>`u`||window.matchMedia(`(min-width: 1024px)`).matches);return(0,V.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1024px)`),n=()=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function xI(e){let t=e.trim();return t?!X(t).error||t.startsWith(`:`)&&!/^:\w+\{text:[^}]*\}$/.test(t):!1}function SI(e){return{id:e.id,label:e.label,subtitle:e.sublabel,group:e.category,keywords:[e.label,e.category??``],payload:e}}var CI=()=>{let{isOpen:e,request:t,_select:n,_dismiss:r}=uI(),[i,a]=(0,V.useState)(``),o=(0,V.useRef)(``),s=(0,V.useRef)(),[c,l]=(0,V.useState)({valid:!0}),u=(0,V.useRef)(c),d=bI(),[f,p]=(0,V.useState)(),m=f?f===`wql`:xI(i),h=(0,V.useCallback)(e=>{o.current=e,a(e);let t=X(e);!t.error&&ip(t)&&(s.current=e)},[]),g=(0,V.useCallback)(e=>{u.current=e,l(e)},[]),[_,v]=(0,V.useState)([]),[y,b]=(0,V.useState)(!1),x=(0,V.useRef)(0),S=(0,V.useRef)(t),C=(0,V.useRef)(0);S.current!==t&&(S.current=t,C.current+=1);let w=Mn();(0,V.useEffect)(()=>{if(!e)return;w(window.location.pathname+window.location.search+window.location.hash,{state:{...history.state?.usr??{},paletteClose:!0}});let t=()=>r();return window.addEventListener(`popstate`,t),()=>{window.removeEventListener(`popstate`,t),history.state?.usr?.paletteClose&&w(-1)}},[e,r,w]);let T=t?.wql,E=Pb(),D=E.height?`${Math.round(E.height*vI)}px`:`66dvh`,O=E.height?`${Math.round(E.height*yI)}px`:`92dvh`;(0,V.useEffect)(()=>{if(e&&t){let e=t.wql?t.wql.initialQuery??``:t.initialQuery??``;o.current=e,a(e);let n=X(e);s.current=!n.error&&ip(n)?e:void 0;let r=t.wql?n.error:void 0,i=r?{valid:!1,error:r}:{valid:!0};u.current=i,l(i),p(void 0),v([]),b(!1)}},[e,t]),(0,V.useEffect)(()=>{if(!e||!t)return;if(t.wql&&m&&!c.valid){x.current+=1,b(!1);return}let n=++x.current;b(!0);let r=setTimeout(()=>{(async()=>{try{let e=await Promise.all(t.sources.map(e=>Promise.resolve(s.current?e.search(i,{scopeWql:s.current}):e.search(i)).then(t=>t.map(t=>({...SI(t),group:t.category??e.label})))));if(n!==x.current)return;v(e.flat())}catch(e){console.error(`[PaletteShell] search error`,e),n===x.current&&v([])}finally{n===x.current&&b(!1)}})()},_I);return()=>clearTimeout(r)},[i,c.valid,m,e,t]);let k=(0,V.useCallback)(e=>{n(e.payload)},[n]),A=(0,V.useCallback)(e=>{if(!T?.onApply)return;let t=e??o.current;X(t).error||(T.onApply(t),r())},[T,r]),j=y?(0,H.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Searching…`}):i?(0,H.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results for `,(0,H.jsxs)(`span`,{className:`font-medium text-foreground/60`,children:[`“`,i,`”`]})]}):(0,H.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Start typing to search`}),M=T?(0,H.jsxs)(`div`,{className:`border-b border-border/80 px-3 py-2`,children:[(0,H.jsx)(`button`,{type:`button`,"data-testid":`palette-mode`,"aria-pressed":m,"aria-label":m?`WQL mode. Press to switch to Find`:`Find mode. Press to switch to WQL`,onClick:()=>p(m?`find`:`wql`),className:`mb-2 rounded-full border px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-wider transition-colors ${m?`border-primary/40 bg-primary/10 text-primary`:`border-border bg-muted text-muted-foreground hover:text-foreground`}`,children:m?`WQL`:`Find`}),(0,H.jsx)(`div`,{className:m?void 0:`[&_[role=alert]]:hidden [&_[data-testid=wql-composer-pending]]:hidden`,children:(0,H.jsx)($x,{query:i,onQueryChange:h,onValidationChange:g,showDiagnostics:m&&(T.showDiagnostics??!0),execute:T.execute,preferredChoices:T.preferredChoices,customSlots:T.customSlots,diagnosticsPosition:`top`,onSubmit:T.onApply?A:void 0,autoFocus:d,placeholder:`Search or edit WQL…`},C.current)})]}):void 0,N=T?(0,H.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/80 px-3 pt-2`,style:{paddingBottom:`max(0.5rem, env(safe-area-inset-bottom))`},children:[m&&!c.valid&&(0,H.jsx)(`span`,{"data-testid":`palette-stale`,className:`text-[11px] font-bold uppercase tracking-wider text-amber-600 dark:text-amber-400`,children:`Stale — fix the query`}),(0,H.jsx)(`div`,{className:`flex-1`}),(0,H.jsx)(`button`,{type:`button`,onClick:r,"data-testid":`palette-cancel`,className:`min-h-12 rounded-md border border-border bg-background px-4 py-2 text-xs font-semibold text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:`Cancel`}),T.onApply&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>A(),disabled:!c.valid,"data-testid":`palette-apply-query`,className:`min-h-12 rounded-md bg-primary px-4 py-2 text-xs font-semibold text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50`,children:`Apply query`})]}):void 0,P=(0,V.useCallback)(e=>{e||r()},[r]);return(0,H.jsx)(En,{open:e,onOpenChange:P,children:(0,H.jsxs)(tr,{children:[(0,H.jsx)(dn,{className:`fixed inset-0 z-50 bg-black/50 backdrop-blur-sm`}),(0,H.jsxs)(Gn,{className:`fixed inset-x-0 z-50 mx-auto flex w-full flex-col outline-none max-lg:bottom-0 max-lg:top-auto max-lg:rounded-t-2xl max-lg:max-h-[var(--palette-max-h)] max-lg:min-h-[var(--palette-min-h)] lg:top-[10%] lg:max-h-[80vh] lg:rounded-xl ${T?`max-w-2xl`:`max-w-xl`}`,style:{"--palette-min-h":D,"--palette-max-h":O},children:[(0,H.jsx)(kt,{className:`sr-only`,children:`Command Palette`}),(0,H.jsx)(wt,{className:`sr-only`,children:`Search and navigate. Press Escape to close.`}),(0,H.jsx)(gI,{className:`min-h-0 flex-1 border-border bg-card dark:bg-card`,items:_,query:i,onQueryChange:h,onSelect:k,isOpen:!0,onClose:r,mobileClose:!0,placeholder:t?.placeholder??`Search…`,searchRow:M,footer:N,filterResults:!T,header:t?.header,emptyState:j})]})]})})},wI=[{id:`amrap`,label:`AMRAP`,terms:[`amrap`],route:`/guide/protocols`,sublabel:`Timer behaviors`,gridRoute:`/guide/protocols?h=amrap`},{id:`emom`,label:`EMOM`,terms:[`emom`],route:`/guide/protocols`,sublabel:`Timer behaviors`,gridRoute:`/guide/protocols?h=emom`},{id:`tabata`,label:`Tabata`,terms:[`tabata`],route:`/guide/protocols`,sublabel:`Timer behaviors`,gridRoute:`/guide/protocols?h=tabata-intervals`},{id:`rest`,label:`Rest`,terms:[`rest`,`:*`],route:`/guide/protocols`,sublabel:`Timer behaviors`,gridRoute:`/guide/protocols?h=required-rest`},{id:`duration`,label:`Duration`,terms:[`duration`,`5:00`],route:`/guide/protocols`,sublabel:`Timer behaviors`,gridRoute:`/guide/protocols?h=countdown-countup`},{id:`ladder`,label:`Ladder`,terms:[`ladder`,`21-15-9`],route:`/guide/structure`,sublabel:`Rounds & structure`,gridRoute:`/guide/structure?h=rep-schemes`},{id:`rounds`,label:`Rounds`,terms:[`rounds`],route:`/guide/structure?h=rounds`,sublabel:`Rounds & structure`,gridRoute:`/guide/structure?h=rounds`},{id:`supersets`,label:`Supersets`,terms:[`supersets`],route:`/guide/structure?h=nesting`,sublabel:`Rounds & structure`,gridRoute:`/guide/structure?h=nesting`},{id:`actual`,label:`Actual result`,terms:[`actual`,`:?`],route:`/guide/metrics`,sublabel:`Capture & feedback`,gridRoute:`/guide/metrics?h=capture`},{id:`load-prompt`,label:`Load prompt`,terms:[`load prompt`,`?lb`,`225lb`,`load`],route:`/guide/metrics`,sublabel:`Capture & feedback`,gridRoute:`/guide/metrics?h=capture`},{id:`metrics`,label:`Metrics`,terms:[`metrics`,`reps`,`effort`,`discipline`],route:`/guide/metrics?h=planned-vs-recorded`,sublabel:`Planned vs recorded`,gridRoute:`/guide/metrics?h=planned-vs-recorded`},{id:`palette`,label:`Command palette`,terms:[`palette`,`⌘/`],route:`/guide/start?h=reference`,sublabel:`Syntax reference`,gridRoute:`/guide/start?h=reference`}];Object.fromEntries(wI.map(e=>[e.id,e]));function TI(){return{id:`constructs`,label:`Reference`,search:e=>{let t=e.toLowerCase().trim();return t?wI.filter(e=>{let n=e.label.toLowerCase();return n.includes(t)||t.includes(n)?!0:e.terms.some(e=>{let n=e.toLowerCase();return n.includes(t)||t.includes(n)})}).map(e=>({id:`construct:${e.id}`,label:e.label,sublabel:e.sublabel,category:`Reference`,type:`route`,payload:{route:e.route}})):[]}}}function EI(e,t){return`${e}/${t}`}function DI(e){let t=e.indexOf(`/`);return t<0?e:e.slice(0,t)}function OI(e){return e.slug??e.id}function kI(e){let t=OI(e);return{id:e.id,slug:e.slug,category:DI(t),name:e.title||t,content:e.rawContent??``,noteBlocks:e.blocks,sourceRevision:e.sourceRevision,updatedAt:e.updatedAt??Date.now(),type:e.type,sourceId:e.sourceId}}var AI=new qT,jI={pageId:EI,async getPage(e){let t=await AI.getEntry(e);return t?kI(t):void 0},async savePage(e){let t=await AI.getEntry(e.id);return t?(await AI.updateEntry(t.id,{rawContent:e.content,expectedSourceRevision:e.sourceRevision,blocks:e.noteBlocks,title:e.name,slug:e.slug}),t.id):(await AI.saveEntry({id:e.id,slug:e.slug,title:e.name,rawContent:e.content,blocks:e.noteBlocks,tags:[],targetDate:e.updatedAt,type:`playground`})).id},async addPage(e){if(await AI.getEntry(e.id))throw new DOMException(`Page already exists: ${e.id}`,`ConstraintError`);return this.savePage(e)},async getAllPages(){return(await AI.getEntries()).map(kI)},async getPagesByCategory(e){return(await AI.getEntries()).filter(t=>DI(OI(t))===e).map(kI)},async deletePage(e){await AI.deleteEntry(e)},async clearAll(){let e=await AI.getEntries();await Promise.all(e.filter(e=>e.id.includes(`/`)).map(e=>AI.deleteEntry(e.id)))}};function MI(e){return{id:`canvas-routes`,label:`Pages`,search:t=>{let n=t.toLowerCase();return e.filter(e=>{let t=e.page.sections[0]?.heading??e.route;return!n||t.toLowerCase().includes(n)||e.route.toLowerCase().includes(n)}).slice(0,5).map(e=>{let t=e.page.sections[0]?.heading??e.route;return{id:`route:${e.route}`,label:t,sublabel:e.route,category:`Pages`,type:`route`,payload:{route:e.route}}})}}}function NI(e){let t=[],n=/```(time|log)(:\w+)?\r?\n([\s\S]*?)```/gi,r,i=0;for(;(r=n.exec(e))!==null;){let e=r[1].toLowerCase(),n=r[3],a=n.split(`
122
+ `).find(e=>e.trim())?.trim()??`(empty block)`;t.push({index:i++,script:n,preview:a,dialect:e})}return t}function PI(e){return tT(`feeds`,e).map(e=>({id:e.id,name:e.name,readme:e.readme,categories:e.categories,items:e.items.map(({id:e,name:t,content:n,path:r,date:i})=>({id:e,name:t,content:n,feedDate:i??``,path:r})).sort((e,t)=>t.feedDate.localeCompare(e.feedDate))})).sort((e,t)=>e.name.localeCompare(t.name))}var FI=null,II=[];async function LI(){let e=await vT();return FI!==e&&(FI=e,II=PI(e)),II}function RI(){return new Date().toISOString().slice(0,10)}function zI(e){let[t,n,r]=e.split(`-`).map(Number);return new Date(Date.UTC(t,n-1,r)).toLocaleDateString(`en`,{year:`numeric`,month:`short`,day:`numeric`,timeZone:`UTC`})}var BI=[{value:`blank`,label:`Blank`},{value:`template`,label:`Template`},{value:`source`,label:`Source`}],VI=`h-11 w-full rounded-md border border-input bg-background px-3 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`;function HI({open:e,onOpenChange:t,defaultDate:n,defaultMode:r=`blank`,onCreated:i}){let[a,o]=(0,V.useState)(r),[s,c]=(0,V.useState)(()=>lk()),[l,u]=(0,V.useState)(``),[d,f]=(0,V.useState)(!1),[p,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(null),[y,b]=(0,V.useState)(null),[x,S]=(0,V.useState)(null),C=(0,V.useRef)(0),w=(0,V.useRef)(0),T=(0,V.useRef)(!1),[E,D]=(0,V.useState)(``),[O,k]=(0,V.useState)(``),[A,j]=(0,V.useState)(``);(0,V.useEffect)(()=>{e&&(C.current++,w.current++,o(r),c(n&&dk(n)?n:lk()),f(!1),m(null),D(``),k(``),j(``),g(null),v(null),b(null),S(null))},[e,n]);let M=()=>{let e=++C.current;g(null),v(null),tk.listNotes({kind:`template`}).then(t=>{C.current===e&&g(t)}).catch(()=>{C.current===e&&v(`Could not load templates.`)})},N=()=>{let e=++w.current;b(null),S(null),Promise.all([aT(),LI(),Z.getAllNotes()]).then(([t,n,r])=>{if(w.current!==e)return;let i={};for(let e of r)e.sourcePath&&(i[e.sourcePath]=e.id);b({collections:t,feeds:n,sourceIdByPath:i})}).catch(()=>{w.current===e&&S(`Could not load collections and feeds.`)})};(0,V.useEffect)(()=>{e&&(a===`template`&&h===null&&!_&&M(),a===`source`&&y===null&&!x&&N())},[e,a,h,_,y,x]);let P=(0,V.useMemo)(()=>h?.find(e=>e.id===E)??null,[h,E]),F=(0,V.useMemo)(()=>{if(!y||!O)return null;let e=O.indexOf(`:`);if(e<0)return null;let t=O.slice(0,e),n=O.slice(e+1);if(t===`collection`){let e=y.collections.find(e=>e.id===n);return e?{kind:`collection`,group:e}:null}if(t===`feed`){let e=y.feeds.find(e=>e.id===n);return e?{kind:`feed`,group:e}:null}return null},[y,O]),I=F?F.group.items.find(e=>e.path===A)??null:null,ee=dk(s),L=s!==``&&!ee,te=`Journal — ${zI(ee?.dateKey??lk())}`,R=a===`template`?P===null:a===`source`&&I===null;return(0,H.jsx)(Ib,{open:e,onClose:()=>{T.current||t(!1)},title:`New journal note`,description:`Add a note to a day in your journal.`,presentation:`sheet`,footer:(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(W,{type:`button`,variant:`outline`,size:`lg`,onClick:()=>t(!1),disabled:d,children:`Cancel`}),(0,H.jsx)(W,{type:`submit`,form:`create-journal-note-form`,size:`lg`,disabled:!ee||R||d,children:d?`Creating…`:`Create`})]}),children:(0,H.jsxs)(`form`,{id:`create-journal-note-form`,onSubmit:async e=>{e.preventDefault();let n=dk(s);if(!n||T.current||R)return;let r;if(a===`template`&&P)r={journalDate:n.dateKey,title:l.trim()||P.title||te,rawContent:P.rawContent,tags:P.tags,sourceId:P.id,type:`journal`};else if(a===`source`&&I&&F&&y){let e=y.sourceIdByPath[I.path];if(!e){m(`No stored source note matches this item. Your input is kept — pick another item or use Blank.`);return}r={journalDate:n.dateKey,title:l.trim()||I.name,rawContent:I.content,tags:[],sourceId:e,type:`journal`}}else r={journalDate:n.dateKey,title:l.trim()||te,rawContent:``,tags:[],type:`journal`};T.current=!0,f(!0),m(null);try{let e=await mk.create(r);i?.(e),t(!1)}catch{m(`Could not create the note. Your input is kept — try again.`)}finally{T.current=!1,f(!1)}},className:`flex flex-col gap-4`,noValidate:!0,children:[(0,H.jsx)(`div`,{role:`group`,"aria-label":`Start from`,className:`grid grid-cols-3 gap-1.5`,children:BI.map(e=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":a===e.value,onClick:()=>o(e.value),disabled:d,className:`min-h-11 rounded-md border px-2 text-sm font-medium transition-colors `+(a===e.value?`border-primary bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted/60`),children:e.label},e.value))}),a===`template`&&(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`journal-create-template`,className:`text-sm font-medium`,children:`Template`}),_?(0,H.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-2`,children:[(0,H.jsx)(`p`,{className:`text-sm text-destructive`,children:_}),(0,H.jsx)(W,{type:`button`,variant:`ghost`,size:`sm`,onClick:M,children:`Retry`})]}):h===null?(0,H.jsx)(`p`,{className:`flex min-h-11 items-center text-sm text-muted-foreground`,children:`Loading templates…`}):h.length===0?(0,H.jsx)(`p`,{className:`flex min-h-11 items-center text-sm text-muted-foreground`,children:`No templates available. Choose Blank or Source.`}):(0,H.jsxs)(`select`,{id:`journal-create-template`,value:E,onChange:e=>D(e.target.value),disabled:d,className:VI,children:[(0,H.jsx)(`option`,{value:``,children:`Choose a template…`}),h.map(e=>(0,H.jsx)(`option`,{value:e.id,children:e.title||e.id},e.id))]})]}),a===`source`&&(0,H.jsx)(`div`,{className:`flex flex-col gap-3`,children:x?(0,H.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-2`,children:[(0,H.jsx)(`p`,{className:`text-sm text-destructive`,children:x}),(0,H.jsx)(W,{type:`button`,variant:`ghost`,size:`sm`,onClick:N,children:`Retry`})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`journal-create-source-group`,className:`text-sm font-medium`,children:`Feed`}),(0,H.jsxs)(`select`,{id:`journal-create-source-group`,value:O,onChange:e=>{k(e.target.value),j(``)},disabled:y===null||d,className:VI,children:[(0,H.jsx)(`option`,{value:``,children:y===null?`Loading…`:`Choose a feed…`}),y&&y.collections.length>0&&(0,H.jsx)(`optgroup`,{label:`Feeds`,children:y.collections.map(e=>(0,H.jsx)(`option`,{value:`collection:${e.id}`,children:e.name},e.id))}),y&&y.feeds.length>0&&(0,H.jsx)(`optgroup`,{label:`Feeds`,children:y.feeds.map(e=>(0,H.jsx)(`option`,{value:`feed:${e.id}`,children:e.name},e.id))})]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`journal-create-source-item`,className:`text-sm font-medium`,children:`Item`}),(0,H.jsxs)(`select`,{id:`journal-create-source-item`,value:A,onChange:e=>j(e.target.value),disabled:!F||d,className:VI,children:[(0,H.jsx)(`option`,{value:``,children:F?`Choose an item…`:`Choose a feed first`}),F?.group.items.map(e=>(0,H.jsx)(`option`,{value:e.path,children:`feedDate`in e?`${e.name} — ${e.feedDate}`:e.name},e.path))]})]})]})}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`journal-create-date`,className:`text-sm font-medium`,children:`Date`}),(0,H.jsx)(`input`,{id:`journal-create-date`,type:`date`,value:s,onChange:e=>c(e.target.value),disabled:d,"aria-invalid":L||void 0,className:VI}),L&&(0,H.jsx)(`p`,{className:`text-sm text-destructive`,children:`Enter a valid date (YYYY-MM-DD).`})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsxs)(`label`,{htmlFor:`journal-create-title`,className:`text-sm font-medium`,children:[`Title `,(0,H.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:`(optional)`})]}),(0,H.jsx)(`input`,{id:`journal-create-title`,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:te,disabled:d,className:VI})]}),p&&(0,H.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:p})]})})}function UI(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}function WI(e){let t=(()=>{switch(e.kind){case`note`:{if(e.sourceCatalog===`guides`)return e.pageSlug?`/p/${UI(e.pageSlug)}`:`/${UI(e.sourceItem.replace(/^\//,``))}`;if(e.sourceCatalog===`playground`)return`/playground/${encodeURIComponent(e.sourceItem)}`;let t=/^markdown\/dashboards\/(.+)\.md$/.exec(e.sourcePath??``);if(t?.[1])return`/d/${UI(t[1])}`;let n=/^markdown\/efforts\/[^/]+\/(.+)\.md$/.exec(e.sourcePath??``);return n?.[1]?`/e/${UI(n[1])}`:e.pageSlug?`/p/${UI(e.pageSlug)}`:_O(e.id)}case`session`:return e.sourceItem?`/c/${encodeURIComponent(e.sourceCatalog)}/${encodeURIComponent(e.sourceItem)}`:`/c/${encodeURIComponent(e.sourceCatalog)}`;case`dashboard`:return e.sourceCatalog===`dashboards`&&e.sourceItem?`/d/${UI(e.sourceItem)}`:_O(e.id);case`equipment`:return e.pageSlug?`/p/${UI(e.pageSlug)}`:_O(e.id);case`post`:{let t=e.date??``;return`/feeds/${encodeURIComponent(e.sourceCatalog)}/${encodeURIComponent(t)}/${encodeURIComponent(e.sourceItem)}`}case`effort`:return`/e/${encodeURIComponent(e.effort?.slug??e.id)}`;case`result`:return wO(e.id);case`segment`:case`event`:return wO(e.execution?.resultId??(e.sourceCatalog===`results`?e.sourceItem:e.id));default:return`/`}})();return e.block?`${t}#${encodeURIComponent(e.block.blockId)}`:t}function GI(e){return e.sourceCatalog===`playground`||e.sourceId===`playground`}function KI(e){return e.kind===`session`&&!e.sourceItem?`/feeds?q=${encodeURIComponent(`:catalog{catalog:${e.sourceCatalog}}`)}`:null}function qI(e){return e.blockContentId?OO({q:e.blockContentId}):null}function JI(e){return!!(e.kind===`note`||e.kind===`post`||(e.kind===`result`||e.kind===`segment`)&&e.execution?.noteId)}var YI=20,XI={note:`Journal`,session:`Feeds`,post:`Feeds`,effort:`Efforts`,result:`Results`,segment:`Segments`,event:`Events`,dashboard:`Dashboards`,equipment:`Equipment`};function ZI(e){return{id:`entry:${e.id}`,label:e.title,sublabel:e.subtitle??e.date??void 0,category:XI[e.kind],type:`entry`,payload:e}}function QI(e,t){let n=e.filters.filter(e=>!(e.key===`text`&&!e.negate));return t&&n.push({key:`text`,negate:!1,values:[{value:t,wildcard:!1}]}),Jp({...e,filters:n})}function $I(){return{id:`wql-search`,label:`Search`,search:async(e,t)=>{if(!X(e).error)return(await ZN(e)).slice(0,YI).map(ZI);if(e.trimStart().startsWith(`:`))return[];let n=e.trim(),r=(n.startsWith(`"`)&&n.endsWith(`"`)&&n.length>1?n.slice(1,-1):n).replaceAll(`"`,``),i=X(t?.scopeWql??nL());return i.error||!ip(i)?[]:(await ZN(QI(i,r))).slice(0,YI).map(ZI)}}}function eL(e){let t=X(e);return ip(t)&&!t.error?t.filters.filter(e=>e.key===`text`&&!e.negate).flatMap(e=>e.values.map(e=>e.value)).join(` `):e.replace(/^:\w+/,` `).replace(/\bin\s+\w+/g,` `).replace(/\blast\s+\w+/g,` `).replace(/\bwhere\b/g,` `).replace(/[{()}]/g,` `).replace(/\b\w+:/g,` `).replace(/\s+/g,` `).trim()}function tL(e){return{id:`${e.id}:wql-text`,label:e.label,search:t=>e.search(eL(t))}}function nL(){return uA(`/palette`).defaultWql??`:note{source:journal,feeds} by {date}`}function rL(){return uA(`/palette`).typeOptions??[]}var iL=e=>ip(e)?vN.runFind(e):vN.runQuery(e.raw);function aL(e,t){if(e.type===`route`){let n=e.payload;t(n.route)}else if(e.type===`entry`){let n=e.payload;t(WI(n))}}var oL=new Set([`syntax`]),sL=new Set([`journal`,`playground`,`canvas`,`syntax`]),cL=`$CURSOR`;function lL(e){let t=e.indexOf(cL);return t===-1?{content:e,cursorOffset:e.length}:{content:e.slice(0,t)+e.slice(t+7),cursorOffset:t}}function uL(){let e=typeof window<`u`?window.history.state?.idx:void 0;return typeof e==`number`&&e>0}function dL(e){let t=e.split(`
123
+ `),n=[],r=0,i=0,a=new Map,o=e=>{let t=(a.get(e)??0)+1;return a.set(e,t),t===1?e:`${e}-${t}`},s=e=>{for(let n=e+1;n<t.length;n++){let e=t[n];if(e.trim()==="```")break;let r=e.match(/^title:\s*(.+)$/);if(r)return r[1].trim().replace(/^["']|["']$/g,``)}};for(let e=0;e<t.length;e++){let a=t[e],c=a.match(/^(#{1,6})\s+(.*)$/);if(c){let e=c[2].trim(),t,r=e.match(/(\d{1,2}:\d{2})/);r&&(t=r[1],e=e.replace(t,``).replace(/\s+/g,` `).trim(),e||=t);let i=o(e.toLowerCase().replace(/[^\w]+/g,`-`));n.push({id:i,label:e,type:`heading`,timestamp:t});continue}let l=a.trim().match(/^```(time|log|query|widget)(:[-\w]+)?\s*$/);if(l){let t=l[1];t===`query`?(i++,n.push({id:`query-line-${e+1}`,label:s(e)??`Query ${i}`,type:`query`})):t===`widget`?n.push({id:`widget-line-${e+1}`,label:(l[2]??``).slice(1)||`Widget`,type:`widget`}):(r++,n.push({id:`${t}-line-${e+1}`,label:`Workout ${r}`,type:t}))}}return n}function fL(e){return e.map(e=>({id:e.id,label:e.label,level:3,action:e.onRun&&e.runIcon===`link`?{type:`call`,handler:e.onRun}:{type:`scroll`,sectionId:e.id},secondaryAction:e.onRun?{id:e.id+(e.runIcon===`edit`?`-edit`:`-run`),label:e.runIcon===`edit`?`Edit`:`Run`,icon:e.runIcon===`edit`?o:e.runIcon===`link`?l:cn,action:{type:`call`,handler:e.onRun}}:void 0,secondaryRunIcon:e.runIcon}))}function pL(e){let{setL3Items:t,registerScrollFn:n,dispatch:r}=BD(),i=(0,V.useRef)(null),a=(0,V.useCallback)(e=>{i.current=e},[]),o=(0,V.useCallback)(e=>{if(!e)return;let t=(e=>{let t=document.getElementById(e);if(t||(t=document.querySelector(`[data-section-id="${e}"]`),t))return t;let n=e.split(`:`);for(let e of n)if(e&&(t=document.getElementById(e)??document.querySelector(`[data-section-id="${e}"]`),t))return t;return null})(e);if(t){let e=t.style.scrollMarginTop,n=window.innerWidth<1024,r=!!document.querySelector(`.lg\\:hidden.sticky`),i=`96px`;n&&(i=r?`calc(50vh + 40px)`:`75px`),t.style.scrollMarginTop=i,t.scrollIntoView({behavior:`smooth`,block:`start`}),requestAnimationFrame(()=>{t.style.scrollMarginTop=e});return}if(i.current){let t=i.current,n=t.state.doc.toString().split(`
124
+ `),r=-1,a=e.match(/^(?:workout|time|log|query|widget)-line-(\d+)$/);if(a)r=Number(a[1])-1;else{let i=(t.state.field(wS,!1)?.sections??[]).find(t=>!!(t.id===e||e.includes(`:${t.id}:`)||e.endsWith(`:${t.id}`)));r=i?i.startLine:n.findIndex(t=>{let n=t.match(/^(#{1,6})\s+(.*)$/);if(n){let t=n[2].trim(),r=t.match(/(\d{1,2}:\d{2})/);if(r){let e=r[1];t=t.replace(e,``).replace(/\s+/g,` `).trim(),t||=e}return t.toLowerCase().replace(/[^\w]+/g,`-`)===e}return!1})}if(r>=0&&r<n.length){let e=t.state.doc.line(r+1).from;t.dispatch({selection:{anchor:e,head:e},effects:[Pr.scrollIntoView(e,{y:`start`,yMargin:20})]});let n=t.dom.parentElement;if(n&&window.innerWidth>=1024){let e=n.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:e,behavior:`smooth`})}}}},[]);return(0,V.useEffect)(()=>{n(o)},[o,n]),(0,V.useEffect)(()=>{if(e.length===0)return;let t=new IntersectionObserver(e=>{let t=null,n=-1;e.forEach(e=>{e.isIntersecting&&e.intersectionRatio>n&&(n=e.intersectionRatio,t=e.target.id)}),t&&r({type:`SET_ACTIVE_L3`,id:t})},{rootMargin:`-10% 0px -50% 0px`,threshold:[0,.25,.5,1]});return e.forEach(e=>{let n=document.getElementById(e.id);n&&t.observe(n)}),()=>t.disconnect()},[e,r]),(0,V.useEffect)(()=>{e.length!==0&&t(fL(e))},[e,t]),{handleViewCreated:a,scrollToSection:o}}var mL=(e,t)=>!e||!Array.isArray(e)?0:e.reduce((e,n)=>{if(`started`in n){let r=n.started,i=n.ended??t;return e+Math.max(0,i-r)}let r=n.start instanceof Date?n.start.getTime():n.start||0,i=n.stop?n.stop instanceof Date?n.stop.getTime():n.stop:t;return e+Math.max(0,i-r)},0),hL=e=>{if(e==null||!Number.isFinite(e))return`--:--`;let t=e<0,n=Math.floor(Math.abs(e)/1e3),r=Math.floor(n/60),i=n%60;return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`},gL=e=>{if(e==null||!Number.isFinite(e))return`--:--:--`;let t=e<0,n=Math.floor(Math.abs(e)/1e3),r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=n%60;return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}:${a.toString().padStart(2,`0`)}`},_L=e=>{if(e==null||!Number.isFinite(e))return`--:--`;let t=e<0,n=Math.abs(e),r=Math.floor(n/60),i=Math.floor(n%60);return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`},vL=e=>{if(e==null||!Number.isFinite(e))return`--:--:--`;let t=e<0,n=Math.abs(e),r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=Math.floor(n%60);return`${t?`-`:``}${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}:${a.toString().padStart(2,`0`)}`},yL=e=>e==null||!Number.isFinite(e)?`--:--`:Math.floor(Math.abs(e)/1e3)>=3600?gL(e):hL(e),bL=500,xL=900,SL=560;function CL(e,t){let n=e<bL,r=e>=xL,i=!n;return{width:e,height:t,isCompact:n,isWide:i,isFull:r,isShort:t>0&&t<SL,mode:r?`full`:i?`wide`:`compact`}}var wL=CL(800,600),TL=(0,V.createContext)(wL);function EL(){return(0,V.useContext)(TL)}var DL=({children:e})=>{let t=(0,V.useRef)(null),[n,r]=(0,V.useState)(wL),i=(0,V.useCallback)(e=>{let t=e[0];if(!t)return;let n=t.contentRect.width,i=t.contentRect.height;r(e=>{let t=CL(n,i);return e.mode===t.mode&&Math.abs(e.width-n)<2&&Math.abs(e.height-i)<2?e:t})},[]);return(0,V.useEffect)(()=>{let e=t.current;if(!e)return;let n=new ResizeObserver(i);return n.observe(e),()=>n.disconnect()},[i]),(0,H.jsx)(`div`,{ref:t,className:`h-full w-full`,children:(0,H.jsx)(TL.Provider,{value:n,children:e})})},OL={WORKBENCH_ROOT:`workbench-root`,WORKBENCH_HEADER:`workbench-header`,WORKBENCH_RESET_BUTTON:`workbench-reset`,WORKBENCH_DOWNLOAD_BUTTON:`workbench-download`,TAB_PLAN:`tab-plan`,TAB_TRACK:`tab-track`,TAB_REVIEW:`tab-review`,TRACKER_PANEL:`tracker-panel`,TRACKER_NEXT_BUTTON:`tracker-next`,TRACKER_CURRENT_BLOCK_LABEL:`tracker-current-block`,TRACKER_ROUND_INDICATOR:`tracker-round`,TRACKER_REP_INDICATOR:`tracker-reps`,TRACKER_COMPLETION_BANNER:`tracker-completion`,TIMER_DISPLAY:`timer-display`,TIMER_VALUE:`timer-value`,TIMER_NEXT_BLOCK:`timer-next-block`,TIMER_STOP_SESSION:`timer-stop-session`,TIMER_PLAY_PAUSE:`timer-play-pause`,FOCUSED_DIALOG_CLOSE:`focused-dialog-close`,REVIEW_PANEL:`review-panel`,REVIEW_RESULTS_TABLE:`review-results-table`,REVIEW_METRIC_ROW:`review-metric-row`,REVIEW_TOTAL_TIME:`review-total-time`,EDITOR_PANEL:`editor-panel`,EDITOR_CONTENT:`editor-content`,EDITOR_START_WORKOUT:`editor-start-workout`,TESTBENCH_ROOT:`testbench-root`,TESTBENCH_NEXT_BUTTON:`testbench-next`,TESTBENCH_RUNTIME_STACK:`testbench-runtime-stack`,TESTBENCH_MEMORY:`testbench-memory`,TESTBENCH_SCRIPT_EDITOR:`testbench-script-editor`,EFFORTS_CATALOG_ROOT:`efforts-catalog-root`,EFFORTS_CATALOG_SEARCH:`efforts-catalog-search`,EFFORTS_CATALOG_CREATE_BTN:`efforts-catalog-create-btn`,EFFORTS_CATALOG_EMPTY_STATE:`efforts-catalog-empty-state`,EFFORTS_LOADING:`efforts-loading`,EFFORT_DETAIL_ROOT:`effort-detail-root`,EFFORT_DETAIL_LABEL:`effort-detail-label`,EFFORT_DETAIL_ALIASES:`effort-detail-aliases`,EFFORT_DETAIL_ATTRIBUTES:`effort-detail-attributes`,EFFORT_DETAIL_SOURCE:`effort-detail-source`,EFFORT_DETAIL_EDIT_BTN:`effort-detail-edit-btn`,EFFORT_DETAIL_CLONE_BTN:`effort-detail-clone-btn`,EFFORT_DETAIL_SAVE_BTN:`effort-detail-save-btn`,EFFORT_DETAIL_CANCEL_BTN:`effort-detail-cancel-btn`,EFFORT_DETAIL_DELETE_BTN:`effort-detail-delete-btn`,EFFORT_DETAIL_NOTEBOOK_EDITOR:`effort-detail-notebook-editor`,EFFORT_DETAIL_ANALYTICS_PLACEHOLDER:`effort-detail-analytics-placeholder`,EFFORT_NOT_FOUND:`effort-not-found`,EFFORT_NOT_FOUND_CREATE_BTN:`effort-not-found-create-btn`,EFFORT_NOT_FOUND_ALIAS_BTN:`effort-not-found-alias-btn`,EFFORT_NOT_FOUND_ALIAS_SELECT:`effort-not-found-alias-select`,EFFORT_NOT_FOUND_ALIAS_CONFIRM:`effort-not-found-alias-confirm`,EFFORTS_NAV_ORIGIN_FILTER:`efforts-nav-origin-filter`,EFFORTS_NAV_DISCIPLINE_FILTER:`efforts-nav-discipline-filter`,EFFORTS_NAV_RECENT_WORKOUTS:`efforts-nav-recent-workouts`,EFFORTS_NAV_RECENT_WORKOUT_ITEM:`efforts-nav-recent-workout-item`,COMMAND_PALETTE_TRIGGER:`command-palette-trigger`,COMMAND_PALETTE_INPUT:`command-palette-input`,COMMAND_PALETTE_RESULTS:`command-palette-results`},kL=hL;function AL(e,t,n=0){let r=e>0?e:800,i=t?Math.min(Math.max(r*.14,56),72,r*.3):Math.min(Math.max(r*.18,128),320,r*.3);return Math.round(n>0?Math.min(i,Math.max(44,n-(t?180:n<560?240:400))):i)}var jL=({children:e})=>{let t=(0,V.useRef)(null),n=(0,V.useRef)(null),[r,i]=(0,V.useState)(1);return(0,V.useLayoutEffect)(()=>{let e=t.current,r=n.current;if(!e||!r)return;let a=()=>{let t=Math.min(1,e.clientWidth/Math.max(r.scrollWidth,1),e.clientHeight/Math.max(r.scrollHeight,1));i(Number.isFinite(t)?Math.max(0,t):0)};a();let o=new ResizeObserver(a);return o.observe(e),o.observe(r),()=>o.disconnect()},[]),(0,H.jsx)(`div`,{ref:t,className:`flex h-full min-h-0 w-full items-center justify-center`,children:(0,H.jsx)(`div`,{ref:n,className:`shrink-0 text-center`,style:{transform:`scale(${r})`,transformOrigin:`center center`},children:e})})},ML=({onStart:e,onPause:t,onStop:n,onNext:r,isRunning:i,isPaused:o=!1,disableNext:s,primaryTimer:c,compact:l=!1,subLabel:u,subLabels:d,secondaryTimers:f,timerStates:p,getFocusProps:m,enableGestures:h=!0,skipFlash:g=!1,skipFlashKey:_=0})=>{let{width:v,height:y,isShort:b}=EL(),x=null;try{x=CE()}catch{}let S=l||b,C=(0,V.useMemo)(()=>AL(v,l,y),[v,y,l]),w=(0,V.useCallback)(()=>{x?.playClick(),e()},[x,e]),T=(0,V.useCallback)(()=>{x?.playClick(),t()},[x,t]),E=(0,V.useCallback)(()=>{x?.playClick(),n()},[x,n]),D=s??o,O=o?`Continue`:i?`Pause`:`Start`,k=(0,V.useCallback)(()=>{D||(x?.playClick(),r())},[x,D,r]),A=(0,V.useRef)(null),j=(0,V.useRef)(null),M=e=>{j.current=null,A.current=e.targetTouches[0].clientX},N=e=>{j.current=e.targetTouches[0].clientX},P=(0,V.useCallback)(()=>{if(!h||!A.current||!j.current)return;let e=A.current-j.current,t=e>50,n=e<-50,r=document.activeElement;if(!(r&&(r.tagName===`INPUT`||r.tagName===`TEXTAREA`||r.isContentEditable))){if(t){if(D)return;console.log(`Swipe Left -> Next`),k()}else n&&(console.log(`Swipe Right -> Stop`),E())}A.current=null,j.current=null},[h,k,E,D]),F=c,I=(0,V.useMemo)(()=>{if(F)return p&&p.has(F.ownerId)?p.get(F.ownerId):{elapsed:F.accumulatedMs||0,duration:F.durationMs,format:F.format}},[F,p]),ee=(0,V.useMemo)(()=>I?I.format===`down`&&I.duration?Math.max(0,I.duration-I.elapsed):I.elapsed:0,[I]),L=(0,V.useMemo)(()=>!f||f.length===0?[]:f.map(e=>{let t=p?.get(e.ownerId),n=t?.elapsed??e.accumulatedMs??0,r=t?.duration??e.durationMs,i=t?.format??e.format??`up`,a=i===`down`&&r?Math.max(0,r-n):n;return{id:e.id,ownerId:e.ownerId,label:e.label||`Timer`,displayMs:a,format:i}}),[f,p]);return(0,H.jsxs)(`div`,{className:`flex w-full min-h-[192px] flex-1 flex-col ${l?``:S?`gap-2`:`gap-4`}`,onTouchStart:M,onTouchMove:N,onTouchEnd:P,children:[(0,H.jsx)(`style`,{children:`
125
+ @keyframes skip-flash-fade {
126
+ 0% { opacity: 1; transform: translateY(0); }
127
+ 70% { opacity: 1; transform: translateY(-4px); }
128
+ 100% { opacity: 0; transform: translateY(-8px); }
129
+ }
130
+ .animate-skip-flash {
131
+ }
132
+ `}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0 flex flex-col items-center justify-center overflow-hidden ${S?`px-4 py-2`:`p-4`}`,children:(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full relative w-full`,children:[g&&(0,H.jsx)(`div`,{className:`animate-skip-flash absolute -top-10 left-1/2 -translate-x-1/2 whitespace-nowrap bg-signal-caution text-white dark:text-white text-sm font-semibold px-4 py-1.5 rounded-full shadow-lg pointer-events-none z-20`,role:`status`,"aria-live":`polite`,children:`Timer can't be skipped!`},_),(0,H.jsx)(`div`,{className:`flex w-full shrink-0 items-center justify-center overflow-hidden ${S?`h-8 mb-1`:`h-24 mb-6`}`,children:(0,H.jsxs)(jL,{children:[c?.label&&(0,H.jsx)(`h2`,{className:`font-semibold text-foreground tracking-tight ${S?`text-lg`:`text-3xl lg:text-4xl`}`,children:c.label}),d&&d.length>0&&(0,H.jsx)(`div`,{className:`${S?`mt-1 space-y-0.5`:`mt-2 space-y-1`}`,children:d.map((e,t)=>(0,H.jsx)(`p`,{className:`text-muted-foreground ${S?`text-xs`:`text-lg lg:text-xl`}`,children:e},t))}),d===void 0&&u&&(0,H.jsx)(`p`,{className:`text-muted-foreground ${S?`mt-1 text-xs`:`mt-2 text-lg lg:text-xl`}`,children:u})]})}),(0,H.jsx)(`div`,{className:`relative flex min-h-0 w-full flex-1 items-center justify-center`,children:(0,H.jsx)(`button`,{onClick:o?w:i?T:w,...m?m(`timer-main`):{},className:`tv-focusable relative z-10 flex h-full max-h-full min-h-[48px] w-full items-center justify-center focus:outline-none focus-visible:outline-2 focus-visible:outline-ring group ${S?`py-1`:`py-8`}`,title:O,children:(0,H.jsx)(jL,{children:(0,H.jsx)(`span`,{className:`block font-mono font-bold tracking-tighter text-foreground tabular-nums leading-none`,style:{fontSize:`${C}px`},role:`timer`,"aria-live":`polite`,"aria-atomic":`true`,children:kL(ee)})})})}),(0,H.jsx)(`div`,{className:`flex w-full shrink-0 items-center justify-center overflow-hidden ${S?`mt-1 h-6`:`mt-6 h-[60px]`}`,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center gap-2 ${S?`flex-wrap`:`gap-4`}`,children:L.map((e,t)=>(0,H.jsxs)(`div`,{...m?m(`secondary-timer-${t}`):{},className:`tv-focusable flex items-center gap-2 rounded-lg border bg-muted/40 text-muted-foreground ${S?`px-2.5 py-1.5 text-xs`:`px-4 py-2 text-sm`}`,title:e.label,role:`timer`,"aria-label":`${e.label} ${kL(e.displayMs)}`,"aria-atomic":`true`,children:[(0,H.jsx)(zn,{className:`shrink-0 ${S?`w-3 h-3`:`w-4 h-4`}`}),(0,H.jsx)(`span`,{className:`font-medium truncate max-w-[120px]`,children:e.label}),(0,H.jsx)(`span`,{className:`font-mono font-semibold tabular-nums`,children:kL(e.displayMs)})]},e.id))})})]})}),(0,H.jsxs)(`div`,{className:`flex flex-shrink-0 items-center justify-center flex-wrap ${l?`px-4 py-3 bg-background border-t border-border gap-3`:S?`gap-6 px-2 py-2`:`gap-8 px-2 pb-8`}`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col items-center ${S?`gap-1`:`gap-2`}`,children:[(0,H.jsx)(`button`,{onClick:E,...m?m(`btn-stop`):{},className:`tv-focusable group flex items-center justify-center rounded-full border transition-all active:scale-95 ${S?`w-12 h-12 bg-muted border-border`:`w-16 h-16 bg-surface-container-low border-outline-variant hover:bg-surface-variant shadow-sm`}`,title:`Stop Session`,"data-testid":OL.TIMER_STOP_SESSION,children:(0,H.jsx)(a,{className:`${S?`w-5 h-5`:`w-7 h-7`} text-foreground group-hover:text-destructive transition-colors`})}),!S&&(0,H.jsx)(`span`,{className:`font-mono text-[10px] font-medium uppercase tracking-widest text-muted-foreground`,children:`Stop`})]}),(0,H.jsxs)(`div`,{className:`flex flex-col items-center ${S?`gap-1`:`gap-2`}`,children:[(0,H.jsx)(`button`,{onClick:o?w:i?T:w,...m?m(`btn-pause`):{},className:`tv-focusable group flex items-center justify-center rounded-full transition-all active:scale-95 ${S?`w-14 h-14 bg-primary text-primary-foreground shadow-lg shadow-primary/20`:`w-20 h-20 bg-surface-container-low border border-outline-variant hover:bg-surface-variant shadow-sm`}`,title:O,"data-testid":OL.TIMER_PLAY_PAUSE,children:o?(0,H.jsx)(sr,{className:`${S?`w-6 h-6 text-primary-foreground ml-0.5`:`w-8 h-8 text-foreground ml-1`}`}):i?(0,H.jsx)(hr,{className:`${S?`w-6 h-6 text-primary-foreground`:`w-8 h-8 text-foreground`}`}):(0,H.jsx)(sr,{className:`${S?`w-6 h-6 text-primary-foreground ml-0.5`:`w-8 h-8 text-foreground ml-1`}`})}),!S&&(0,H.jsx)(`span`,{className:`font-mono text-[10px] font-medium uppercase tracking-widest text-muted-foreground`,children:O})]}),l?(0,H.jsxs)(`button`,{onClick:k,disabled:D,"aria-disabled":D?`true`:void 0,...m?m(`btn-next`):{},className:`tv-focusable flex-1 h-14 rounded-2xl flex items-center justify-center gap-2 transition-transform shadow-lg ${D?`bg-muted text-muted-foreground cursor-not-allowed opacity-60`:`bg-primary text-primary-foreground shadow-primary/20 active:scale-[0.98]`}`,title:`Next Block`,"data-testid":OL.TIMER_NEXT_BLOCK,children:[(0,H.jsx)(`span`,{className:`text-base font-bold tracking-widest uppercase`,children:`Next`}),(0,H.jsx)(On,{className:`w-5 h-5`})]}):(0,H.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,H.jsx)(`button`,{onClick:k,disabled:D,"aria-disabled":D?`true`:void 0,...m?m(`btn-next`):{},className:`tv-focusable flex items-center justify-center rounded-full transition-all shadow-xl ${S?`w-16 h-16`:`w-24 h-24`} ${D?`bg-muted text-muted-foreground cursor-not-allowed opacity-60`:`bg-primary-container text-on-primary-container hover:bg-primary hover:text-primary-foreground active:scale-90`}`,title:`Next Block`,"data-testid":OL.TIMER_NEXT_BLOCK,children:(0,H.jsx)(On,{className:`font-bold ${S?`w-6 h-6`:`w-10 h-10`}`})}),!S&&(0,H.jsx)(`span`,{className:`font-mono text-[10px] font-bold uppercase tracking-widest text-on-primary-container`,children:`Next`})]})]})]})},NL={time:`bg-metric-time/15 border-metric-time/40 text-metric-time`,rep:`bg-metric-rep/15 border-metric-rep/40 text-metric-rep`,effort:`bg-metric-effort/15 border-metric-effort/40 text-metric-effort`,distance:`bg-metric-distance/15 border-metric-distance/40 text-metric-distance`,rounds:`bg-metric-rounds/15 border-metric-rounds/40 text-metric-rounds`,action:`bg-metric-action/15 border-metric-action/40 text-metric-action`,increment:`bg-metric-rounds/10 border-metric-rounds/35 text-metric-rounds`,lap:`bg-metric-rep/10 border-metric-rep/35 text-metric-rep`,text:`bg-muted border-border text-muted-foreground`,resistance:`bg-metric-resistance/15 border-metric-resistance/40 text-metric-resistance`,duration:`bg-metric-time/10 border-metric-time/30 text-metric-time`,spans:`bg-metric-distance/10 border-metric-distance/30 text-metric-distance`,elapsed:`bg-metric-time/12 border-metric-time/28 text-metric-time`,total:`bg-muted border-border text-foreground`,"system-time":`bg-muted/60 border-border/60 text-muted-foreground`,metric:`bg-metric-effort/10 border-metric-effort/30 text-metric-effort`,custom:`bg-muted/70 border-muted-foreground/30 text-muted-foreground`,calculated:`bg-metric-effort/12 border-metric-effort/35 text-metric-effort`,rest:`bg-muted/70 border-muted-foreground/30 text-muted-foreground`,volume:`bg-metric-rep/12 border-metric-rep/35 text-metric-rep`,load:`bg-metric-resistance/12 border-metric-resistance/35 text-metric-resistance`,"session-load":`bg-metric-resistance/12 border-metric-resistance/35 text-metric-resistance`,intensity:`bg-metric-effort/12 border-metric-effort/35 text-metric-effort`,work:`bg-metric-effort/12 border-metric-effort/35 text-metric-effort`,rir:`bg-metric-effort/12 border-metric-effort/35 text-metric-effort`,"session-rpe":`bg-metric-effort/12 border-metric-effort/35 text-metric-effort`,"met-score":`bg-metric-distance/12 border-metric-distance/35 text-metric-distance`,tis:`bg-metric-action/12 border-metric-action/35 text-metric-action`,"current-round":`bg-metric-rounds/10 border-metric-rounds/30 text-metric-rounds`,label:`bg-muted border-border text-muted-foreground`,system:`bg-muted/60 border-border/60 text-muted-foreground`,sound:`bg-muted/50 border-border/50 text-muted-foreground`,group:`bg-muted/50 border-border/50 text-muted-foreground`};function PL(e,t){return e.toLowerCase()!==`effort`||!t?!1:t.trim().toLowerCase()===`rest`}function FL(e,t){let n=`bg-gray-200 border-gray-300 text-gray-800 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-100`;return PL(e,t)?NL.rest??n:NL[e.toLowerCase()]??n}var IL={time:`⏱️`,duration:`⏱️`,rounds:`🔄`,resistance:`💪`,weight:`💪`,distance:`📏`,action:`▶️`,rest:`⏸️`,effort:`🏃`,increment:`↕️`,text:`📝`,elapsed:`⏱️`,spans:`📊`,total:`🕐`,"system-time":`🖥️`,metric:`📈`,volume:`🏋️`,intensity:`⚡`,load:`⚖️`,work:`🔥`,rir:`🔋`,"session-rpe":`😓`,"session-load":`📊`,"met-score":`🫀`,tis:`📈`,calculated:`🧮`,custom:`✳️`,"current-round":`🔄`,label:`🏷️`,system:`⚙️`,sound:`🔊`,group:`🔀`,lap:`🏁`};function LL(e,t){return PL(e,t)?IL.rest:IL[e.toLowerCase()]||null}var RL=new Set([`duration`,`time`,`elapsed`,`total`,`spans`]);function zL(e,t){let n=e.toLowerCase().replace(/[^a-z0-9]/g,``),r={reps:`rep`,rep:`rep`,distance:`distance`,rounds:`rounds`,round:`rounds`,currentround:`current-round`,action:`action`,increment:`increment`,lap:`lap`,text:`text`,resistance:`resistance`,weight:`resistance`,duration:`duration`,spans:`spans`,elapsed:`elapsed`,total:`total`,totaltime:`total`,systemtime:`system-time`,label:`label`,system:`system`,sound:`sound`,group:`group`};if(r[n])return r[n];if(n.includes(`rir`))return`rir`;if(n.includes(`sessionrpe`)||n===`rpe`)return`session-rpe`;if(n.includes(`sessionload`))return`session-load`;if(n.includes(`metscore`)||n===`met`)return`met-score`;if(n===`tis`)return`tis`;if(n.includes(`calculated`)||n.includes(`calc`))return`calculated`;if(n.includes(`custom`))return`custom`;if(n.includes(`volume`))return`volume`;if(n.includes(`intensity`))return`intensity`;if(n.includes(`load`))return`load`;if(n.includes(`work`)||n.includes(`energy`)||n.includes(`calorie`))return`work`;if(n.includes(`set`))return`metric`;if(t){let e=t.toLowerCase();if(e===`reps`||e===`rep`)return`rep`;if(e===`km`||e===`m`||e===`mi`||e===`ft`||e===`yd`)return`distance`;if(e===`lb`||e===`kg`||e===`lbs`||e===`pood`)return`resistance`;if(e===`min`||e===`sec`||e===`ms`||e===`h`)return`duration`;if(e===`kcal`||e===`cal`)return`work`;if(e===`round`||e===`rounds`)return`rounds`;if(e===`sets`||e===`set`)return`metric`}return`metric`}function BL(e,t,n){if(e==null)return`—`;if(typeof e==`string`)return e;if(typeof e!=`number`||!Number.isFinite(e))return String(e);if(RL.has(t)){let t=n?.toLowerCase();return yL(t===`sec`||t===`s`?e*1e3:t===`min`||t===`m`?e*60*1e3:t===`h`||t===`hr`?e*60*60*1e3:e)}return Number.isInteger(e)?String(e):e.toFixed(1)}var VL=({className:e})=>{let t=Xd(),n={};for(let e of t){let t=e.metrics;for(let e=0;e+1<t.length;e+=2){let r=t[e],i=t[e+1];if(r&&i){let e=r.image??String(r.value);n[e]={value:i.value,unit:i.unit}}}}let r=Object.entries(n);return r.length>0?(0,H.jsxs)(`div`,{className:U(`flex h-14 flex-shrink-0 flex-wrap items-center justify-center gap-2 overflow-hidden px-4`,e),children:[r.map(([e,t])=>{let n=zL(e,t.unit),r=FL(n),i=LL(n),a=BL(t.value,n,t.unit);return(0,H.jsxs)(`div`,{className:U(`flex flex-col items-center backdrop-blur-md border rounded-xl px-3 py-1.5 shadow-sm ring-1 ring-black/5 dark:ring-white/5 group transition-colors`,r),children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 opacity-70`,children:[i&&(0,H.jsx)(`span`,{className:`text-[10px] leading-none`,"aria-hidden":`true`,children:i}),(0,H.jsx)(`span`,{className:`text-[8px] font-black uppercase tracking-tighter group-hover:opacity-100 transition-opacity`,children:eo(e)})]}),(0,H.jsxs)(`div`,{className:`flex items-baseline gap-0.5`,children:[(0,H.jsx)(`span`,{className:`text-sm font-black tabular-nums tracking-tight`,children:a}),t.unit&&!RL.has(n)&&(0,H.jsx)(`span`,{className:`text-[9px] font-bold opacity-60 uppercase`,children:t.unit})]})]},`bubble-${e}`)}),(0,H.jsx)(`div`,{className:`self-center bg-primary/10 border border-primary/20 rounded-full p-1.5 shadow-inner opacity-40 hover:opacity-100 transition-opacity cursor-help`,title:`Session Aggregates`,children:(0,H.jsx)(qn,{className:`h-3 w-3 text-primary`})})]}):(0,H.jsx)(`div`,{className:U(`h-14 shrink-0`,e),"aria-hidden":`true`})},HL=e=>{let t=Jd(),n=KM(e=>e.viewMode),r=KM(e=>e.execution.status),[i,a]=V.useState(0),[o,s]=V.useState(!1),c=V.useRef(null);V.useEffect(()=>{if(!t)return;let e=t.eventBus.on(`timer:skip-attempt`,()=>{a(e=>e+1),s(!0),c.current&&clearTimeout(c.current),c.current=setTimeout(()=>s(!1),3e3)},`ui-flash`);return()=>{e(),c.current&&clearTimeout(c.current)}},[t]);let l=tf(),u=nf(),d=ef(),f=rf(),p=af(),m=p?.find(e=>e.block.blockType===`Rounds`),h=Gd(m?.block),[g,_]=V.useState(bc()),v=(0,V.useMemo)(()=>d.some(e=>e.timer.spans.some(e=>e.ended===void 0)),[d]);V.useEffect(()=>{if(!v)return;let e,t=()=>{_(bc()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[v]);let y=(0,V.useMemo)(()=>l?mL(l.timer.spans,g):0,[l,g]),b=(0,V.useMemo)(()=>{let e=new Map;for(let t of d){let n=t.block.key.toString(),r=mL(t.timer.spans,g);e.set(n,{elapsed:r,duration:t.timer.durationMs,format:t.timer.direction})}return e},[d,g]),x=(0,V.useMemo)(()=>{if(!l)return;let e=l.block.key.toString();return{id:`timer-${e}`,ownerId:e,timerMemoryId:``,label:l.timer.label,format:l.timer.direction,durationMs:l.timer.durationMs,role:l.isPinned?`primary`:`auto`}},[l]),S=(0,V.useMemo)(()=>u.map(e=>{let t=e.block.key.toString();return{id:`timer-${t}`,ownerId:t,timerMemoryId:``,label:e.timer.label,format:e.timer.direction,durationMs:e.timer.durationMs,role:e.isPinned?`primary`:`auto`}}),[u]),C=(0,V.useMemo)(()=>f.filter(e=>e.visible&&e.enabled&&e.eventName).map(e=>({id:e.id,name:e.label,eventName:e.eventName,ownerId:``,displayLabel:e.label,isPinned:e.isPinned})),[f]),w=l?l.block.key.toString():void 0,{mainLabel:T,subLabel:E,activeTimerEntry:D,activeElapsed:O}=(0,V.useMemo)(()=>{let e=p?.find(e=>e.isLeaf),t=e?.label,n=p?.find(e=>e.block.blockType===`Rounds`),r=h?.label??n?.label,i=e?d.find(t=>t.block.key.toString()===e.block.key.toString()):void 0,a=i?mL(i.timer.spans,g):0;if(l&&l.isPinned){let e=mL(l.timer.spans,g),n=r||l.timer.label;return{mainLabel:n,subLabel:n===t?void 0:t,activeTimerEntry:l,activeElapsed:e}}return r&&r!==t?{mainLabel:r,subLabel:t,activeTimerEntry:i||l,activeElapsed:i?a:y}:{mainLabel:t||l?.timer.label||`Timer`,subLabel:void 0,activeTimerEntry:i||l,activeElapsed:i?a:y}},[l,p,d,g,y,h]),k=(0,V.useMemo)(()=>{let e=p?.find(e=>e.isLeaf);if(!e)return E?[E]:void 0;if(e.displayRows&&e.displayRows.length>1){let t=e.displayRows.map(e=>io.presentGroup([...e],`timer-subtitle`).filter(e=>e.visible).map(e=>e.label).filter(Boolean).join(` `).trim()).filter(Boolean);if(t.length>0)return t}return E?[E]:void 0},[p,E]),A=(0,V.useMemo)(()=>{if(D){let e=D.block.key.toString();return{id:`timer-${e}`,ownerId:e,timerMemoryId:``,label:T,format:D.timer.direction,durationMs:D.timer.durationMs,role:D.isPinned?`primary`:`auto`,accumulatedMs:O}}if(x)return{...x,label:T,accumulatedMs:O}},[x,D,T,O]);return(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 flex-shrink-0 flex-col gap-4`,children:[(0,H.jsx)(VL,{}),(0,H.jsx)(ML,{elapsedMs:O,hasActiveBlock:e.hasActiveBlock,onStart:e.onStart,onPause:e.onPause,onStop:e.onStop,onNext:e.onNext,actions:C.length>0?C:void 0,skipFlash:o,skipFlashKey:i,onAction:(n,r)=>{switch(t.handle({name:n,timestamp:new Date,data:r}),n){case`timer:pause`:e.onPause?.();break;case`timer:resume`:case`timer:start`:e.onStart?.();break;case`workout:stop`:e.onStop?.()}},isRunning:v||r===`running`,isPaused:r===`paused`,disableNext:r===`paused`,primaryTimer:A,subLabel:E,subLabels:k,secondaryTimers:S,stackItems:p,compact:e.compact,focusedBlockId:w,timerStates:b,enableGestures:n===`track`,getFocusProps:e.getFocusProps})]})},UL=e=>{let t=KM(e=>e.viewMode),{onNext:n,disableNext:r,isPaused:i}=e;return(0,V.useEffect)(()=>{if(t!==`track`)return;let e=e=>{if(e.key===`AudioVolumeUp`||e.key===`Enter`||e.keyCode===13){let t=document.activeElement;!(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable))&&!r&&!i&&(e.preventDefault(),n())}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,r,i,t]),e.enableDisplayStack?(0,H.jsx)(HL,{...e}):(0,H.jsx)(ML,{elapsedMs:e.elapsedMs,hasActiveBlock:e.hasActiveBlock,onStart:e.onStart,onPause:e.onPause,onStop:e.onStop,onNext:e.onNext,isRunning:e.isRunning,isPaused:e.isPaused,disableNext:e.disableNext,compact:e.compact,enableGestures:t===`track`,getFocusProps:e.getFocusProps})};function WL(e){let t=e.metric.image??String(e.metric.value??``);return{...e,colorClasses:FL(e.metric.type,t),icon:LL(e.metric.type,t),originClasses:e.userEntered?`border-dashed italic ring-1 ring-offset-1 ring-primary/30`:``}}function GL(e,t){return io.presentGroup(e,t).map(WL)}var KL=V.memo(({metrics:e,error:t,className:n=``,size:r=`normal`,filter:i})=>{let a=(0,V.useMemo)(()=>i?e.filter(e=>{let t=String(e.value||``).toLowerCase(),n=e.type.toLowerCase();if(i.nameOverrides){if(t in i.nameOverrides)return i.nameOverrides[t];if(n in i.nameOverrides)return i.nameOverrides[n]}return i.typeOverrides&&n in i.typeOverrides?i.typeOverrides[n]:!i.allowedOrigins||i.allowedOrigins.includes(e.origin||`parser`)}):e,[e,i]);if(t)return(0,H.jsx)(`div`,{className:`border border-destructive/50 rounded-lg p-4 bg-destructive/10 ${n}`,children:(0,H.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,H.jsx)(`span`,{className:`text-destructive font-bold text-lg`,children:`⚠️`}),(0,H.jsxs)(`div`,{className:`flex-1`,children:[(0,H.jsx)(`div`,{className:`font-semibold text-destructive mb-1`,children:`Parse Error`}),(0,H.jsx)(`div`,{className:`text-destructive/90 text-sm`,children:t.message}),(t.line!==void 0||t.column!==void 0)&&(0,H.jsxs)(`div`,{className:`text-destructive/80 text-xs mt-2`,children:[t.line!==void 0&&(0,H.jsxs)(`span`,{children:[`Line `,t.line]}),t.line!==void 0&&t.column!==void 0&&(0,H.jsx)(`span`,{children:`, `}),t.column!==void 0&&(0,H.jsxs)(`span`,{children:[`Column `,t.column]})]}),t.excerpt&&(0,H.jsx)(`pre`,{className:`mt-2 p-2 bg-background border border-destructive/20 rounded text-xs overflow-x-auto text-foreground`,children:t.excerpt})]})]})});if(!a||a.length===0)return(0,H.jsx)(`div`,{className:`border border-border rounded-lg p-4 bg-muted/20 text-center text-muted-foreground text-sm ${n}`,children:`No metrics to display`});let o={compact:{padding:`px-1 py-0`,text:`text-[10px] leading-tight`,icon:`text-xs`},normal:{padding:`px-2 py-0.5`,text:`text-sm`,icon:`text-base leading-none`},focused:{padding:`px-2.5 py-1`,text:`text-base`,icon:`text-lg leading-none`}}[r];return(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1 ${n}`,children:GL(a,`runtime-badge`).filter(e=>e.visible).map((e,t)=>e.renderKind===`comment`?(0,H.jsx)(`span`,{className:U(`italic text-muted-foreground select-text`,o.text),title:`COMMENT: ${e.label}`,"data-metric-type":`comment`,children:e.label},t):(0,H.jsxs)(`span`,{className:U(`inline-flex items-center gap-1 rounded font-mono border ${e.colorClasses} bg-opacity-60 shadow-sm cursor-help transition-colors hover:bg-opacity-80`,o.padding,o.text),title:e.tooltip,children:[e.icon&&(0,H.jsx)(`span`,{className:o.icon,children:e.icon}),(0,H.jsx)(`span`,{children:e.label})]},t))})});KL.displayName=`MetricVisualizer`;function qL(e){if(!e||e<0)return``;let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return n>0?`${n}:${r.toString().padStart(2,`0`)}`:`${r}s`}var JL=({source:e,metrics:t,status:n=`pending`,depth:r=0,size:i=`normal`,filter:a,isSelected:o=!1,isHighlighted:s=!1,isLeaf:c=!1,isHeader:l=!1,label:u,showDuration:d=!1,duration:f,actions:p,metricGroups:m,onClick:h,onDoubleClick:g,onHover:_,className:v})=>{let y={compact:{indent:12,baseIndent:8,fontSize:`text-xs md:text-sm`},normal:{indent:16,baseIndent:12,fontSize:`text-sm md:text-base`},focused:{indent:20,baseIndent:16,fontSize:`text-base md:text-lg`}}[i],b=r*y.indent,x=K.from(t??(e?.getDisplayMetrics(a?{origins:a.allowedOrigins}:void 0)||[])).toArray(),S=t=>{h?.(e,{ctrlKey:t.ctrlKey||t.metaKey,shiftKey:t.shiftKey})},C=t=>{t.preventDefault(),g?.(e)},w=()=>{_?.(e)},T=()=>{_?.(null)},E=u??(x.length===0?e?`Block ${e.id}`:`Block`:void 0);return(0,H.jsxs)(`div`,{className:U(`flex items-center gap-2 transition-all px-2`,l&&`font-semibold bg-muted/30`,h&&`cursor-pointer hover:bg-muted/50`,o&&`bg-primary/10`,s&&`bg-muted/40`,c&&`font-bold`,v),style:{paddingLeft:`${b+y.baseIndent}px`,minHeight:`var(--wod-preview-statement-height)`,paddingTop:`var(--wod-preview-statement-gap)`,paddingBottom:`var(--wod-preview-statement-gap)`},onClick:S,onDoubleClick:C,onMouseEnter:w,onMouseLeave:T,role:h?`button`:void 0,tabIndex:h?0:void 0,children:[(0,H.jsx)(`div`,{className:`flex-1 min-w-0`,children:m&&m.length>1?(0,H.jsx)(`div`,{className:`flex flex-col`,children:m.map(e=>io.presentGroup([...e],`runtime-badge`).filter(e=>e.visible).map(e=>e.metric)).filter(e=>e.length>0).map((e,t,n)=>(0,H.jsx)(`div`,{className:U(t<n.length-1&&`border-b border-border/20 pb-0.5 mb-0.5`),children:(0,H.jsx)(KL,{metrics:e,size:i,filter:a,className:U(`inline-flex`,y.fontSize)})},t))}):x.length>0?(0,H.jsx)(KL,{metrics:x,size:i,filter:a,className:U(`inline-flex`,y.fontSize)}):E?(0,H.jsx)(`span`,{className:U(`text-muted-foreground`,y.fontSize),children:E}):(0,H.jsx)(`span`,{className:`text-muted-foreground/50 italic text-xs`,children:`No data`})}),d&&f!==void 0&&f>0&&(0,H.jsx)(`div`,{className:`flex-shrink-0 text-muted-foreground tabular-nums text-right min-w-[40px]`,style:{fontSize:i===`compact`?`10px`:`12px`},children:qL(f)}),p&&(0,H.jsx)(`div`,{className:`flex-shrink-0 flex items-center gap-1`,children:p})]})},YL={display:oe,promote:kn,private:_,result:nn},XL={display:`text-green-500 dark:text-green-400`,promote:`text-blue-500 dark:text-blue-400`,private:`text-amber-500 dark:text-amber-400`,result:`text-purple-500 dark:text-purple-400`},ZL={display:`bg-green-500/10 dark:bg-green-900/30`,promote:`bg-blue-500/10 dark:bg-blue-900/30`,private:`bg-amber-500/10 dark:bg-amber-900/30`,result:`bg-purple-500/10 dark:bg-purple-900/30`},QL=({visibility:e})=>{let t=YL[e];return(0,H.jsxs)(`span`,{className:U(`inline-flex items-center gap-1 text-[9px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded`,XL[e],ZL[e]),title:_c[e],children:[(0,H.jsx)(t,{className:`h-3 w-3`}),_c[e]]})},$L=({open:e,onOpenChange:t,children:n})=>(0,H.jsx)(Rn,{appear:!0,show:e,as:V.Fragment,children:(0,H.jsx)(Xe,{as:`div`,className:`relative z-[200]`,onClose:()=>t?.(!1),children:n})}),eR=V.forwardRef(({className:e,children:t,...n},r)=>(0,H.jsx)(re,{as:V.Fragment,enter:`ease-out duration-300`,enterFrom:`opacity-0 scale-95`,enterTo:`opacity-100 scale-100`,leave:`ease-in duration-200`,leaveFrom:`opacity-100 scale-100`,leaveTo:`opacity-0 scale-95`,children:(0,H.jsx)(`div`,{className:`fixed inset-0 overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`flex min-h-full items-center justify-center p-4 text-center`,children:[(0,H.jsx)(re,{as:V.Fragment,enter:`ease-out duration-300`,enterFrom:`opacity-0`,enterTo:`opacity-100`,leave:`ease-in duration-200`,leaveFrom:`opacity-100`,leaveTo:`opacity-0`,children:(0,H.jsx)(`div`,{className:`fixed inset-0 bg-black/25 dark:bg-black/25`})}),(0,H.jsx)(se,{ref:r,className:U(`relative w-full max-w-md transform overflow-hidden rounded-2xl bg-popover text-popover-foreground p-6 text-left align-middle shadow-xl transition-all border border-border`,e),...n,children:t})]})})}));eR.displayName=`DialogContent`;var tR=({className:e,...t})=>(0,H.jsx)(`div`,{className:U(`flex flex-col space-y-1.5 text-center sm:text-left mb-4`,e),...t});tR.displayName=`DialogHeader`;var nR=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(He,{ref:n,as:`h3`,className:U(`text-lg font-medium leading-6 text-foreground`,e),...t}));nR.displayName=`DialogTitle`;var rR=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(A,{ref:n,className:U(`text-sm text-muted-foreground`,e),...t}));rR.displayName=`DialogDescription`;var iR=[`Statements`,`Behaviors`,`Memory`],aR=({open:e,onOpenChange:t,block:n,runtime:r})=>{let[i,a]=(0,V.useState)(0),o=(0,V.useMemo)(()=>!r.script||!n.sourceIds.length?[]:r.script.getIds(n.sourceIds),[r.script,n.sourceIds]),s=(0,V.useMemo)(()=>n.behaviors.map(e=>e.constructor.name),[n.behaviors]),c=(0,V.useMemo)(()=>n.getAllMemory(),[n]);return(0,H.jsx)($L,{open:e,onOpenChange:t,children:(0,H.jsxs)(eR,{className:`max-w-2xl max-h-[80vh] flex flex-col overflow-hidden`,children:[(0,H.jsxs)(tR,{children:[(0,H.jsx)(nR,{children:(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{children:n.label}),n.blockType&&(0,H.jsx)(`span`,{className:`text-[10px] uppercase px-1.5 py-0.5 rounded bg-primary/10 text-primary/70 font-bold tracking-wider`,children:n.blockType})]})}),(0,H.jsxs)(`div`,{className:`text-[10px] font-mono text-muted-foreground`,children:[`Key: `,n.key.toString()]})]}),(0,H.jsxs)(sn,{selectedIndex:i,onChange:a,children:[(0,H.jsx)(ve,{className:`flex border-b border-border gap-0`,children:iR.map(e=>(0,H.jsx)(we,{className:({selected:e})=>U(`px-4 py-2 text-sm font-medium transition-colors outline-none`,`border-b-2 -mb-px`,e?`border-primary text-foreground`:`border-transparent text-muted-foreground hover:text-foreground hover:border-border`),children:e},e))}),(0,H.jsxs)(E,{className:`flex-1 min-h-0 overflow-y-auto mt-2`,children:[(0,H.jsx)(he,{children:(0,H.jsx)(oR,{statements:o})}),(0,H.jsx)(he,{children:(0,H.jsx)(sR,{names:s})}),(0,H.jsx)(he,{children:(0,H.jsx)(cR,{block:n,locations:c})})]})]})]})})},oR=({statements:e})=>e.length===0?(0,H.jsx)(lR,{text:`No source statements`}):(0,H.jsxs)(`div`,{className:`border border-border rounded-md overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-[60px_1fr] text-[10px] font-bold uppercase tracking-wider text-muted-foreground bg-muted/40 border-b border-border`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`ID`}),(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`Fragments`})]}),e.map(e=>(0,H.jsxs)(`div`,{className:`grid grid-cols-[60px_1fr] items-center border-b border-border/50 last:border-b-0 hover:bg-muted/20 transition-colors`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-xs font-mono text-muted-foreground tabular-nums`,children:e.id}),(0,H.jsx)(`div`,{className:`py-0.5`,children:(0,H.jsx)(JL,{metrics:e.metrics,size:`compact`})})]},e.id))]}),sR=({names:e})=>e.length===0?(0,H.jsx)(lR,{text:`No behaviors attached`}):(0,H.jsxs)(`div`,{className:`border border-border rounded-md overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-[40px_1fr] text-[10px] font-bold uppercase tracking-wider text-muted-foreground bg-muted/40 border-b border-border`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`#`}),(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`Behavior`})]}),e.map((e,t)=>(0,H.jsxs)(`div`,{className:`grid grid-cols-[40px_1fr] items-center border-b border-border/50 last:border-b-0 hover:bg-muted/20 transition-colors`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-xs font-mono text-muted-foreground tabular-nums`,children:t+1}),(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-sm font-mono`,children:e})]},t))]}),cR=({locations:e})=>e.length===0?(0,H.jsx)(lR,{text:`No memory locations`}):(0,H.jsxs)(`div`,{className:`border border-border rounded-md overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-[120px_1fr] text-[10px] font-bold uppercase tracking-wider text-muted-foreground bg-muted/40 border-b border-border`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`Tag`}),(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:`Fragments`})]}),e.map((e,t)=>(0,H.jsxs)(`div`,{className:`grid grid-cols-[120px_1fr] items-center border-b border-border/50 last:border-b-0 hover:bg-muted/20 transition-colors`,children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5`,children:(0,H.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:e.tag})}),(0,H.jsx)(`div`,{className:`py-0.5`,children:(0,H.jsx)(JL,{metrics:e.metrics,size:`compact`})})]},`${e.tag}-${t}`))]}),lR=({text:e})=>(0,H.jsx)(`div`,{className:`flex items-center justify-center py-8 text-sm text-muted-foreground italic`,children:e}),uR=({block:e,isLeaf:t,debug:n})=>{let{isDebugMode:r}=g_(),i=n??r,a=Jd(),{elapsed:o,isRunning:s,timeSpans:c}=of(e.key.toString()),l=Gd(e),[u,d]=(0,V.useState)([]),[f,p]=(0,V.useState)([]),[m,h]=(0,V.useState)([]),[g,_]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let t=()=>{let t=e.getMetricMemoryByVisibility(`display`);if(d(t.map(e=>e.metrics)),i){let t=e.getMetricMemoryByVisibility(`promote`);p(t.map(e=>e.metrics));let n=e.getMetricMemoryByVisibility(`private`);h(n.map(e=>e.metrics))}};t();let n=(i?[...e.getMetricMemoryByVisibility(`display`),...e.getMetricMemoryByVisibility(`promote`),...e.getMetricMemoryByVisibility(`private`)]:e.getMetricMemoryByVisibility(`display`)).map(e=>e.subscribe(()=>t()));return()=>n.forEach(e=>e())},[e,i]);let v=c.length>0,y=(e,t,n,r)=>e.length===0?null:(0,H.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[n&&(0,H.jsx)(QL,{visibility:t}),e.map((e,n)=>(0,H.jsx)(JL,{metrics:e,size:r?`normal`:`compact`,isLeaf:r},`${t}-${n}`))]});return(0,H.jsxs)(`div`,{className:U(`relative w-full`,t?`animate-in fade-in slide-in-from-left-1 duration-300`:``),children:[(0,H.jsxs)(`div`,{className:U(`rounded-md border text-sm transition-all`,t?`bg-card shadow-sm border-primary/40 ring-1 ring-primary/10`:`bg-muted/30 border-transparent text-muted-foreground hover:bg-muted/50 hover:border-border/50`),children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[!t&&(0,H.jsx)(`span`,{className:`text-xs font-medium tracking-tight text-muted-foreground/70`,children:e.blockType!==`SessionRoot`&&l?l.label:e.label}),t&&u.length>0&&(0,H.jsx)(`div`,{className:`flex items-center flex-wrap gap-0.5 min-w-0 font-bold text-foreground text-base`,children:y(u,`display`,!1,t)}),t&&u.length===0&&e.label&&(0,H.jsx)(`span`,{className:`text-base font-bold tracking-tight text-foreground`,children:e.label}),e.blockType&&i&&(0,H.jsx)(`span`,{className:`text-[10px] uppercase px-1.5 py-0.5 rounded bg-primary/5 text-primary/70 font-bold tracking-wider`,children:e.blockType})]}),i&&(0,H.jsx)(`div`,{className:`text-[10px] font-mono text-muted-foreground/60 truncate max-w-[200px] mt-0.5`,children:e.key.toString()})]}),v&&(0,H.jsxs)(`div`,{className:U(`flex items-center gap-1.5 px-2 py-1 rounded font-mono text-xs font-bold shrink-0`,s?`bg-primary/10 text-primary animate-pulse`:`bg-muted text-muted-foreground`),children:[(0,H.jsx)(zn,{className:`h-3 w-3`}),hL(o)]}),i&&(0,H.jsx)(`button`,{onClick:()=>_(!0),className:`h-9 w-9 rounded-md flex items-center justify-center hover:bg-muted text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:`Inspect block`,children:(0,H.jsx)(tt,{className:`h-4 w-4`})})]}),!t&&u.length>0&&(0,H.jsx)(`div`,{className:`flex flex-col gap-1 px-3 pb-2`,children:y(u,`display`,i,t)}),i&&(f.length>0||m.length>0)&&(0,H.jsxs)(`div`,{className:`flex flex-col gap-1 px-3 pb-2`,children:[y(f,`promote`,!0,t),y(m,`private`,!0,t)]})]}),i&&(0,H.jsx)(aR,{open:g,onOpenChange:_,block:e,runtime:a})]})};function dR(e,t,n){return e.filter(e=>e.outputType===`segment`&&t===Math.min(e.stackLevel-1,n-1))}var fR=({runtime:e,outputs:t,debug:n=!1})=>{let r=e.stack.blocks;if(r.length===0)return(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center p-8 text-muted-foreground border-2 border-dashed rounded-lg bg-muted/10`,children:[(0,H.jsx)(be,{className:`h-8 w-8 mb-2 opacity-20`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`No Active Blocks`})]});let i=(e,n)=>{let r=dR(t,e,n);if(r.length===0)return null;let i=r.reduce((e,t)=>e+(t.getMetric(G.Elapsed)?.value??0),0);return(0,H.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-muted-foreground py-2 pl-4 border-l-2 border-muted ml-3 my-1 bg-muted/5 rounded-r-md`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(nn,{className:`h-3.5 w-3.5`}),(0,H.jsxs)(`span`,{className:`font-medium`,children:[r.length,` Completed`]})]}),(0,H.jsx)(`div`,{className:`w-px h-3 bg-border/50`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(It,{className:`h-3.5 w-3.5`}),(0,H.jsx)(`span`,{className:`font-mono`,children:(e=>{let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`})(i)})]})]})},a=[...r].reverse();return(0,H.jsx)(`div`,{className:`flex flex-col gap-1 relative`,children:a.map((e,t)=>{let r=t===a.length-1;return(0,H.jsxs)(V.Fragment,{children:[(0,H.jsx)(uR,{block:e,isLeaf:r,debug:n}),i(t,a.length)]},e.key.toString())})})},pR=()=>{let e=$d();return e?(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:(0,H.jsx)(`div`,{className:U(`rounded-md border text-sm transition-all`,`bg-card/50 border-border/60 hover:bg-card/80`),children:(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5 p-3`,children:(0,H.jsx)(JL,{metrics:e.metrics,size:`compact`,isLeaf:!1})})})}):(0,H.jsxs)(`div`,{className:`flex items-center gap-3 text-sm p-3 border border-dashed rounded-lg text-muted-foreground bg-muted/10`,children:[(0,H.jsx)(nn,{className:`h-4 w-4`}),(0,H.jsx)(`span`,{className:`italic`,children:`End of section`})]})},mR=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:U(`rounded-lg border bg-card text-card-foreground shadow-sm`,e),...t})));mR.displayName=`Card`;var hR=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:U(`flex flex-col space-y-1.5 p-6`,e),...t})));hR.displayName=`CardHeader`;var gR=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`h3`,{ref:n,className:U(`text-2xl font-semibold leading-none tracking-tight`,e),...t})));gR.displayName=`CardTitle`;var _R=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`p`,{ref:n,className:U(`text-sm text-muted-foreground`,e),...t})));_R.displayName=`CardDescription`;var vR=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:U(`p-6 pt-0`,e),...t})));vR.displayName=`CardContent`;var yR=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:U(`flex items-center p-6 pt-0`,e),...t})));yR.displayName=`CardFooter`;var bR=()=>{let e=Jd(),{outputs:t}=Yd(e),{isDebugMode:n}=g_(),{isCompact:r}=EL();return e?(0,H.jsxs)(`div`,{className:U(`h-full flex flex-col overflow-hidden bg-slate-50/50 dark:bg-slate-900/50`,r?`gap-2 p-2`:`gap-4 p-4`),children:[(0,H.jsx)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-y-auto`,children:(0,H.jsx)(fR,{runtime:e,outputs:t,debug:n})}),(0,H.jsxs)(mR,{className:`shrink-0 bg-muted/30 border-dashed`,children:[(0,H.jsx)(hR,{className:U(r?`p-2 pb-0`:`p-3 pb-0`),children:(0,H.jsx)(gR,{className:U(`font-medium text-muted-foreground uppercase tracking-wider`,r?`text-xs`:`text-sm`),children:`Up Next`})}),(0,H.jsx)(vR,{className:U(r?`p-2`:`p-3`),children:(0,H.jsx)(pR,{runtime:e})})]})]}):null},xR=`38F01E0E`,SR=(e=>!!e&&e!==`CC1AD845`)(xR),CR=``;function wR(){return`chromecast`}var TR=CR===`chromecast`||CR===`local`?CR:wR(),ER=((typeof __LOCAL_RECEIVER_URL__<`u`?__LOCAL_RECEIVER_URL__:void 0)||``).trim(),DR=new class{state=`not-loaded`;listeners=new Map;loadPromise=null;appId=null;on(e,t){return this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t),()=>this.off(e,t)}off(e,t){let n=this.listeners.get(e)??[];this.listeners.set(e,n.filter(e=>e!==t))}emit(e,...t){this.listeners.get(e)?.forEach(e=>e(...t))}getState(){return this.state}setState(e){this.state!==e&&(this.state=e,this.emit(`state-changed`,e))}load(e){return this.loadPromise&&this.appId===e?this.loadPromise:(this.appId=e,this.loadPromise=this._load(e).catch(t=>{throw this.appId===e&&(this.loadPromise=null,this.appId=null),t}),this.loadPromise)}_load(e){return this.setState(`loading`),new Promise((t,n)=>{window.__onGCastApiAvailable=(r,i)=>{if(!r){console.warn(`[Cast SDK] Not available:`,i),this.setState(`unavailable`),n(Error(`Cast SDK unavailable`));return}try{this._initFramework(e),t()}catch(e){this.setState(`unavailable`),n(e)}};let r=`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`;if(!document.querySelector(`script[src="${r}"]`)){let e=document.createElement(`script`);e.src=r,e.onerror=()=>{this.setState(`unavailable`),n(Error(`Failed to load cast_sender.js`))},document.head.appendChild(e)}})}_initFramework(e){let{cast:t,chrome:n}=window;if(!t?.framework)throw Error(`cast.framework not found after SDK load`);let r=t.framework.CastContext.getInstance();r.setOptions({receiverApplicationId:e,autoJoinPolicy:n.cast.AutoJoinPolicy.ORIGIN_SCOPED,resumeSavedSession:!0}),r.addEventListener(t.framework.CastContextEventType.SESSION_STATE_CHANGED,e=>{let n=t.framework.SessionState;switch(e.sessionState){case n.SESSION_STARTED:case n.SESSION_RESUMED:this.setState(`session-active`),this.emit(`session-started`,r.getCurrentSession());break;case n.SESSION_ENDED:case n.NO_SESSION:this.setState(`ready`),this.emit(`session-ended`)}}),this.setState(`ready`),console.log(`[Cast SDK] Initialised with App ID:`,e)}async requestSession(){let{cast:e}=window;if(!e?.framework)throw Error(`Cast SDK not loaded`);let t=e.framework.CastContext.getInstance(),n=await t.requestSession();if(n)throw n===`cancel`?Error(`cancel`):(console.error(`[Cast SDK] requestSession() error code:`,n),Error(`Cast session request failed: ${n}`));let r=t.getCurrentSession();console.log(`[Cast SDK] requestSession() succeeded — sessionId:`,r?.getSessionId?.())}endSession(){window.cast?.framework?.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}isSessionActive(){return this.state===`session-active`}getSession(){return window.cast?.framework?.CastContext.getInstance()?.getCurrentSession()??null}},OR=`urn:x-cast:com.wodwiki`,kR=class{session;listeners=new Set;boundListener=null;constructor(e){this.session=e,this.boundListener=(e,t)=>{try{console.log(`[SenderCastSignaling] RAW incoming:`,typeof t,typeof t==`string`?t.substring(0,120):JSON.stringify(t).substring(0,120));let e=typeof t==`string`?JSON.parse(t):t;console.log(`[SenderCastSignaling] Parsed signal type:`,e.type);for(let t of this.listeners)t(e)}catch(e){console.error(`[SenderCastSignaling] Failed to parse incoming signal`,e)}},this.session.addMessageListener(OR,this.boundListener),console.log(`[SenderCastSignaling] Listening on ${OR}`),console.log(`[SenderCastSignaling] Session state: ${this.session.getSessionState?.()}`)}send(e){console.log(`[SenderCastSignaling] Sending: ${e.type}`),this.session.sendMessage(OR,e).then(()=>console.log(`[SenderCastSignaling] sendMessage(${e.type}) OK`)).catch(t=>console.error(`[SenderCastSignaling] sendMessage(${e.type}) FAILED`,t))}onSignal(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){if(this.boundListener){try{this.session.removeMessageListener(OR,this.boundListener)}catch{}this.boundListener=null}this.listeners.clear()}},AR=class{role;signaling;pc;dc=null;signalUnsub=null;disposed=!1;messageHandlers=new Set;connectedHandlers=new Set;disconnectedHandlers=new Set;signalQueue=Promise.resolve();pendingIceCandidates=[];constructor(e,t){this.role=e,this.signaling=t,console.log(`[WebRtcRpcTransport:${e}] Initializing transport`),this.pc=new RTCPeerConnection({iceServers:[{urls:`stun:stun.l.google.com:19302`}]}),this.pc.onicecandidate=t=>{t.candidate?(console.log(`[WebRtcRpcTransport:${e}] ICE candidate (local):`,t.candidate.candidate.substring(0,60)+`...`),this.signaling.send({type:`webrtc-ice`,candidate:t.candidate.toJSON()})):console.log(`[WebRtcRpcTransport:${e}] ICE gathering complete`)},this.pc.onconnectionstatechange=()=>{let t=this.pc.connectionState;console.log(`[WebRtcRpcTransport:${e}] Connection state: ${t}`),(t===`disconnected`||t===`failed`||t===`closed`)&&this.notifyDisconnected()},this.pc.oniceconnectionstatechange=()=>{console.log(`[WebRtcRpcTransport:${e}] ICE connection state: ${this.pc.iceConnectionState}`)},this.pc.onsignalingstatechange=()=>{console.log(`[WebRtcRpcTransport:${e}] Signaling state: ${this.pc.signalingState}`)},this.signalUnsub=this.signaling.onSignal(t=>{console.log(`[WebRtcRpcTransport:${e}] Incoming signal: ${t.type}`),this.signalQueue=this.signalQueue.then(()=>this.handleSignal(t))})}get connected(){return this.dc?.readyState===`open`}get needsClockSync(){return!0}send(e){if(!this.dc||this.dc.readyState!==`open`){console.warn(`[WebRtcRpcTransport] DataChannel not open — dropping message`);return}this.dc.send(JSON.stringify(e))}onMessage(e){return this.messageHandlers.add(e),()=>this.messageHandlers.delete(e)}onConnected(e){return this.connectedHandlers.add(e),()=>this.connectedHandlers.delete(e)}onDisconnected(e){return this.disconnectedHandlers.add(e),()=>this.disconnectedHandlers.delete(e)}dispose(){if(this.disposed)return;this.disposed=!0,this.signalUnsub?.(),this.signalUnsub=null;let e=this.dc?.readyState===`open`,t=[...this.disconnectedHandlers];if(this.messageHandlers.clear(),this.connectedHandlers.clear(),this.disconnectedHandlers.clear(),this.dc?.close(),this.pc.close(),this.signaling.dispose(),e)for(let e of t)e()}connect(e=15e3){return console.log(`[WebRtcRpcTransport:${this.role}] connect() starting, timeout=${e}ms`),this.connected?(console.log(`[WebRtcRpcTransport:${this.role}] Already connected — short-circuiting`),Promise.resolve()):new Promise((t,n)=>{let r=Date.now(),i=setTimeout(()=>{let t=`pcState=${this.pc.connectionState}, iceState=${this.pc.iceConnectionState}, sigState=${this.pc.signalingState}, dcState=${this.dc?.readyState??`null`}`;console.error(`[WebRtcRpcTransport:${this.role}] TIMEOUT after ${e}ms — ${t}`),n(Error(`WebRTC connect timed out after ${e}ms`))},e),a=()=>{clearTimeout(i),console.log(`[WebRtcRpcTransport:${this.role}] DataChannel OPEN in ${Date.now()-r}ms`),this.notifyConnected(),t()};this.role===`offerer`?(console.log(`[WebRtcRpcTransport:offerer] Creating DataChannel…`),this.dc=this.pc.createDataChannel(`wod-wiki-rpc`,{ordered:!0}),this.wireDataChannel(this.dc,a),console.log(`[WebRtcRpcTransport:offerer] Creating offer…`),this.pc.createOffer().then(e=>(console.log(`[WebRtcRpcTransport:offerer] Offer created, SDP length=${e.sdp?.length}`),this.pc.setLocalDescription(e))).then(()=>{console.log(`[WebRtcRpcTransport:offerer] Local description set — sending offer via signaling`),this.signaling.send({type:`webrtc-offer`,sdp:this.pc.localDescription.sdp}),console.log(`[WebRtcRpcTransport:offerer] Offer sent — waiting for answer…`)}).catch(e=>{console.error(`[WebRtcRpcTransport:offerer] Failed to create/set offer`,e),n(e)})):(console.log(`[WebRtcRpcTransport:answerer] Waiting for ondatachannel…`),this.pc.ondatachannel=e=>{console.log(`[WebRtcRpcTransport:answerer] Remote DataChannel received: ${e.channel.label}`),this.dc=e.channel,this.wireDataChannel(this.dc,a)})})}wireDataChannel(e,t){e.onopen=()=>t(),e.onclose=()=>{this.disposed||this.notifyDisconnected()},e.onerror=e=>{console.error(`[WebRtcRpcTransport] DataChannel error`,e)},e.onmessage=e=>{try{let t=JSON.parse(e.data);for(let e of this.messageHandlers)e(t)}catch(e){console.error(`[WebRtcRpcTransport] Failed to parse RPC message`,e)}}}async handleSignal(e){try{switch(e.type){case`webrtc-offer`:{if(this.role!==`answerer`){console.warn(`[WebRtcRpcTransport:${this.role}] Ignoring offer (not an answerer)`);return}console.log(`[WebRtcRpcTransport:answerer] Received offer, length=${e.sdp.length}`),await this.pc.setRemoteDescription({type:`offer`,sdp:e.sdp}),console.log(`[WebRtcRpcTransport:answerer] Remote description set — creating answer`);let t=await this.pc.createAnswer();console.log(`[WebRtcRpcTransport:answerer] Answer created, length=${t.sdp?.length}`),await this.pc.setLocalDescription(t),console.log(`[WebRtcRpcTransport:answerer] Local description set — sending answer via signaling`),this.signaling.send({type:`webrtc-answer`,sdp:this.pc.localDescription.sdp}),await this.processPendingIceCandidates();break}case`webrtc-answer`:if(this.role!==`offerer`){console.warn(`[WebRtcRpcTransport:${this.role}] Ignoring answer (not an offerer)`);return}console.log(`[WebRtcRpcTransport:offerer] Received answer, length=${e.sdp.length}`),await this.pc.setRemoteDescription({type:`answer`,sdp:e.sdp}),console.log(`[WebRtcRpcTransport:offerer] Remote description set — processing pending candidates…`),await this.processPendingIceCandidates();break;case`webrtc-ice`:{let t=e.candidate;this.pc.remoteDescription?(console.log(`[WebRtcRpcTransport:${this.role}] Adding remote ICE candidate`),await this.pc.addIceCandidate(t)):(console.log(`[WebRtcRpcTransport:${this.role}] Buffering candidate until remote description is set`),this.pendingIceCandidates.push(t));break}}}catch(e){console.error(`[WebRtcRpcTransport:${this.role}] Signal handling error`,e)}}async processPendingIceCandidates(){if(this.pendingIceCandidates.length===0)return;console.log(`[WebRtcRpcTransport:${this.role}] Processing ${this.pendingIceCandidates.length} buffered ICE candidates`);let e=[...this.pendingIceCandidates];this.pendingIceCandidates=[];for(let t of e)try{await this.pc.addIceCandidate(t),console.log(`[WebRtcRpcTransport:${this.role}] Buffered ICE candidate added OK`)}catch(e){console.error(`[WebRtcRpcTransport:${this.role}] Failed to add buffered ICE candidate`,e)}}notifyConnected(){for(let e of this.connectedHandlers)e()}notifyDisconnected(){for(let e of this.disconnectedHandlers)e()}},jR={"not-loaded":`ready`,loading:`ready`,unavailable:`unavailable`,ready:`ready`,"session-active":`session-active`},MR=class{_state;stateListeners=new Set;sdkUnsubState=null;sdkUnsubEnded=null;activeTransport=null;disposed=!1;constructor(){this._state=jR[DR.getState()],this.subscribeToSdk(),SR&&typeof window<`u`&&DR.load(xR).catch(()=>{})}get state(){return this._state}onStateChanged(e){return this.stateListeners.add(e),()=>{this.stateListeners.delete(e)}}setState(e){if(this._state!==e){this._state=e;for(let t of[...this.stateListeners])t(e)}}subscribeToSdk(){this.sdkUnsubState=DR.on(`state-changed`,e=>{let t=jR[e]??`ready`;this._state!==`session-active`&&(this._state!==`connecting`||t!==`session-active`)&&this.setState(t)}),this.sdkUnsubEnded=DR.on(`session-ended`,()=>{this.activeTransport=null,this.setState(`session-ended`)})}async startSession(){if(this.disposed)throw Error(`ChromecastBackend: startSession after dispose`);if(!SR)throw this.setState(`unavailable`),Error(`ChromecastBackend: VITE_CAST_APP_ID is not configured`);this.setState(`connecting`);let e=null;try{try{await DR.load(xR)}catch(e){throw this.setState(jR[DR.getState()]),e}if(this.disposed)throw Error(`ChromecastBackend: dispose() called during SDK load`);if(DR.getState()===`unavailable`)throw this.setState(`unavailable`),Error(`ChromecastBackend: Cast not supported in this browser`);if(await DR.requestSession(),this.disposed)throw Error(`ChromecastBackend: dispose() called during requestSession`);let t=DR.getSession();if(!t)throw Error(`ChromecastBackend: no Cast session after requestSession()`);try{await t.sendMessage(`urn:x-cast:com.wodwiki`,{type:`ping`,timestamp:Date.now()})}catch(e){DM(`ChromecastBackend`,`namespace ping failed`,e)}e=new AR(`offerer`,new kR(t)),await e.connect()}catch(t){throw e?.dispose(),!this.disposed&&this._state===`connecting`&&this.setState(`ready`),t}return this.activeTransport=e,e.onDisconnected(()=>{this._state===`session-active`&&(this.activeTransport=null,this.setState(`session-ended`))}),this.setState(`session-active`),e}async resumeSession(){if(this.disposed)throw Error(`ChromecastBackend: resumeSession after dispose`);if(this.activeTransport)return this.activeTransport;await DR.load(xR);let e=DR.getSession();if(!e)throw Error(`ChromecastBackend: no Cast session to resume`);let t=new AR(`offerer`,new kR(e));try{await t.connect()}catch(e){throw t.dispose(),e}return this.activeTransport=t,t.onDisconnected(()=>{this._state===`session-active`&&(this.activeTransport=null,this.setState(`session-ended`))}),this.setState(`session-active`),t}endSession(){try{DR.endSession()}catch{}this.activeTransport&&=(this.activeTransport.dispose(),null),this._state!==`unavailable`&&this.setState(`ready`)}dispose(){this.disposed||(this.disposed=!0,this.endSession(),this.sdkUnsubState?.(),this.sdkUnsubEnded?.(),this.sdkUnsubState=null,this.sdkUnsubEnded=null,this.stateListeners.clear())}},NR=class{port;_connected=!1;messageHandlers=new Set;connectedHandlers=new Set;disconnectedHandlers=new Set;_disposed=!1;portMessageUnsub;boundHandler;constructor(e){this.port=e,this.boundHandler=e=>{let t=e.data;for(let e of[...this.messageHandlers])e(t)},this.port.addEventListener(`message`,this.boundHandler),this.portMessageUnsub=()=>this.port.removeEventListener(`message`,this.boundHandler)}start(){if(!this._disposed&&!this._connected){this._connected=!0,this.port.start();for(let e of[...this.connectedHandlers])e()}}notifyDisconnected(){if(!this._disposed&&this._connected){this._connected=!1;for(let e of[...this.disconnectedHandlers])e()}}get connected(){return this._connected}get needsClockSync(){return!1}async connect(){this._connected||this.start()}send(e){if(this._disposed)throw Error(`BroadcastChannelRpcTransport: send after dispose`);if(!this._connected)throw Error(`BroadcastChannelRpcTransport: send before connected`);this.port.postMessage(e)}onMessage(e){return this.messageHandlers.add(e),()=>{this.messageHandlers.delete(e)}}onConnected(e){return this.connectedHandlers.add(e),()=>{this.connectedHandlers.delete(e)}}onDisconnected(e){return this.disconnectedHandlers.add(e),()=>{this.disconnectedHandlers.delete(e)}}dispose(){if(!this._disposed){this._disposed=!0,this.portMessageUnsub();try{this.port.close()}catch{}this.messageHandlers.clear(),this.connectedHandlers.clear(),this.disconnectedHandlers.clear(),this._connected=!1}}},PR=5e3,FR=class{_state=`ready`;stateListeners=new Set;activePopup=null;activeTransport=null;activeTimeout=null;activeSessionId=null;pendingReject=null;messageUnsub=null;disposed=!1;deps;constructor(e={}){let t=e=>(window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e));this.deps={openPopup:e.openPopup??(e=>window.open(e,`_blank`,`width=1280,height=720`)),addEventListener:e.addEventListener??t,removeEventListener:e.removeEventListener??(e=>{window.removeEventListener(`message`,e)}),postToPopup:e.postToPopup??((e,t)=>{e.postMessage(t,window.location.origin)}),generateId:e.generateId??(()=>{let e=typeof crypto<`u`?crypto:void 0;if(typeof e?.randomUUID==`function`)return e.randomUUID();if(!e)throw Error(`LocalTabBackend: crypto API unavailable`);let t=new Uint8Array(16);return e.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}),buildReceiverUrl:e.buildReceiverUrl??((e,t)=>`${ER||`${e}/receiver-rpc.html`}?local=${t}`),MessageChannelCtor:e.MessageChannelCtor??(typeof MessageChannel<`u`?MessageChannel:void 0),getOrigin:e.getOrigin??(()=>typeof window<`u`?window.location.origin:``),setTimeoutFn:e.setTimeoutFn??((e,t)=>setTimeout(e,t)),clearTimeoutFn:e.clearTimeoutFn??(e=>clearTimeout(e))}}get state(){return this._state}onStateChanged(e){return this.stateListeners.add(e),()=>{this.stateListeners.delete(e)}}setState(e){if(this._state!==e){this._state=e;for(let t of[...this.stateListeners])t(e)}}async startSession(){if(this.disposed)throw Error(`LocalTabBackend: startSession after dispose`);if(this._state===`connecting`||this._state===`session-active`)throw Error(`LocalTabBackend: startSession while a session is already active`);this.setState(`connecting`);let e=this.deps.generateId();this.activeSessionId=e;let t=this.deps.buildReceiverUrl(this.deps.getOrigin(),e);console.log(`[LocalTabBackend] startSession: opening popup`,{url:t,sessionId:e});let n=this.deps.openPopup(t);if(!n)throw this.setState(`session-ended`),this.activeSessionId=null,Error(`LocalTabBackend: window.open returned null (popup blocked?)`);this.activePopup=n,console.log(`[LocalTabBackend] popup opened`,{sessionId:e});let r=new this.deps.MessageChannelCtor,i=r.port1,a=r.port2,{promise:o,resolve:s,reject:c}=Promise.withResolvers();this.pendingReject=c;let l=e=>{this.cleanupOnError(),this.setState(`session-ended`),this.activeSessionId=null,this.pendingReject=null,c(Error(e))};this.activeTimeout=this.deps.setTimeoutFn(()=>{l(`LocalTabBackend: receiver did not complete handshake within ${PR}ms`)},PR);let u=t=>{if(t.source!==n)return;let r=t.data;if(!(!r||typeof r!=`object`||typeof r.kind!=`string`)&&r.sessionId===e){if(r.kind===`ready`){console.log(`[LocalTabBackend] received ready`,{sessionId:e});try{this.deps.postToPopup(n,{kind:`offer`,sessionId:e}),console.log(`[LocalTabBackend] posted offer`,{sessionId:e})}catch(e){l(e instanceof Error?e.message:String(e));return}try{n.postMessage({kind:`data-port`,sessionId:e},this.deps.getOrigin(),[a]),console.log(`[LocalTabBackend] transferred data port`,{sessionId:e})}catch(e){l(e instanceof Error?e.message:String(e))}}else if(r.kind===`accept`){console.log(`[LocalTabBackend] received accept`,{sessionId:e}),this.deps.clearTimeoutFn(this.activeTimeout),this.activeTimeout=null,this.pendingReject=null;let t=new NR(i);t.onDisconnected(()=>{this._state===`session-active`&&this.setState(`session-ended`)}),t.start(),this.activeTransport=t,this.setState(`session-active`),s(t)}else r.kind===`goodbye`&&(this.activeTransport&&this.activeTransport.notifyDisconnected(),this.activeTransport=null,this.activePopup=null,this.activeSessionId=null,this.setState(`session-ended`))}};return this.messageUnsub=this.deps.addEventListener(u),o}cleanupOnError(){this.deps.clearTimeoutFn(this.activeTimeout),this.activeTimeout=null,this.messageUnsub&&=(this.messageUnsub(),null),this.activeSessionId=null}endSession(){if(this._state===`session-active`||this._state===`connecting`){if(this.pendingReject&&=(this.pendingReject(Error(`LocalTabBackend: endSession called during handshake`)),null),this.activePopup&&this.activeSessionId)try{this.deps.postToPopup(this.activePopup,{kind:`goodbye`,sessionId:this.activeSessionId})}catch{}if(this.messageUnsub&&=(this.messageUnsub(),null),this.activePopup){try{this.activePopup.close()}catch{}this.activePopup=null}this.activeSessionId=null,this.setState(`session-ended`)}}dispose(){this.disposed||(this.disposed=!0,this.deps.clearTimeoutFn(this.activeTimeout),this.activeTimeout=null,this.pendingReject&&=(this.pendingReject(Error(`LocalTabBackend: dispose() called during handshake`)),null),this._state!==`session-active`&&this.activeTransport===null&&(this.activePopup=null),this.endSession(),this.stateListeners.clear())}},IR=null;function LR(e){return e===`chromecast`?new MR:new FR}function RR(){return IR||(IR=LR(TR),IR)}function zR(e,t){switch(e){case`next`:t.onNext();return;case`start`:t.onStart();return;case`pause`:t.onPause();return;case`stop`:t.onStop();return}}function BR(e,t){zR(e.name,t)}var VR=new Set;function HR(e){return VR.add(e),()=>{VR.delete(e)}}function UR(e){for(let t of VR)try{t(e)}catch(e){NM(`resultRecorder`,`error in listener:`,e)}}function WR(e){return{async record({resultId:t,data:n,createdAt:r}){let i=await e.finishSession(t,n,r);return UR(i),i}}}var GR=WR(tk);function KR(e){let t=e.length>0?Math.max(...e.map(e=>e.endTime))-Math.min(...e.map(e=>e.startTime)):0,n=Math.round(t*1e3),r=[];if(n>0&&r.push({label:`Total Time`,value:hL(n)}),r.push({label:`Segments`,value:String(e.length)}),e.length>0){let t=Math.max(...e.map(e=>e.depth));e.filter(e=>e.depth===t).slice(0,4).forEach(e=>{r.push({label:e.name||`Segment`,value:hL(Math.round(e.elapsed*1e3))})})}return{type:`rpc-workbench-update`,mode:`review`,reviewData:{totalDurationMs:n,completedSegments:e.length,rows:r}}}function qR(e){return{type:`rpc-workbench-update`,mode:`review`,reviewData:{totalDurationMs:e.totalDurationMs,completedSegments:e.segmentCount,rows:[{label:`Total Time`,value:hL(e.totalDurationMs)},{label:`Segments`,value:String(e.segmentCount)}]}}}function JR(e,t){let n=t.filter(e=>e.type===`time`||e.type===`log`);return n.length===0&&!e?{type:`rpc-workbench-update`,mode:`idle`}:{type:`rpc-workbench-update`,mode:`preview`,previewData:{title:(e?.content??n[0]?.content??``).split(`
133
+ `)[0].trim().substring(0,60)||`Workout`,blocks:n.slice(0,8).map(e=>({id:e.id,title:(e.scriptBlock?.content??e.content).split(`
134
+ `)[0].trim().substring(0,50)||`Workout`,statementCount:e.scriptBlock?.statements?.length??0}))}}}var YR=`wod-wiki:userOutputOverrides`;function XR(e=!1){let t=KM(e=>e.userOutputOverrides),n=KM(e=>e.setUserOverride),r=KM(e=>e.clearUserOverride);return(0,V.useEffect)(()=>{if(e)try{let e=localStorage.getItem(YR);if(!e)return;let t=JSON.parse(e);for(let[e,r]of Object.entries(t))n(e,r.map(QR))}catch{}},[e,n]),(0,V.useEffect)(()=>{if(!e)return;if(t.size===0){localStorage.removeItem(YR);return}let n={};for(let[e,r]of t)n[e]=r.map(ZR);localStorage.setItem(YR,JSON.stringify(n))},[t,e]),{overrides:t,setOverride:(0,V.useCallback)((e,r,i,a)=>{let o=(t.get(e)??K.empty(e)).filter(e=>e.type!==r),s={type:r,origin:`user`,value:i,image:a??String(i??``)};n(e,K.from(o,e).add(s))},[t,n]),removeOverride:(0,V.useCallback)((e,i)=>{let a=t.get(e);if(!a)return;let o=a.filter(e=>e.type!==i);o.length===0?r(e):n(e,o)},[t,n,r]),clearBlock:(0,V.useCallback)(e=>{r(e)},[r]),clearAll:(0,V.useCallback)(()=>{for(let e of t.keys())r(e)},[t,r])}}function ZR(e){return{type:e.type,value:e.value,image:e.image,origin:e.origin,sourceBlockKey:e.sourceBlockKey,timestamp:e.timestamp?.toISOString()}}function QR(e){return{type:e.type,value:e.value,image:e.image,origin:e.origin??`user`,sourceBlockKey:e.sourceBlockKey,timestamp:e.timestamp?new Date(e.timestamp):void 0}}var $R=(typeof window<`u`?window.__wod_runtimeNowProvider?.():void 0)??Bs,ez=new nd(vd(),$R);function tz(e){return e.statements?.length?e:{...e,statements:vs().read(e.content,e.sport).statements}}function nz(e){return ez.createRuntime(tz(e))??null}function rz(e,t){return{startTime:t.startTime??t.now.nowMs(),endTime:t.now.nowMs(),duration:t.elapsedTime,completed:t.completed,logs:e.map(BO)}}function iz(e){return e.filter(e=>e.outputType===`segment`).length}function az(e,t){let n=new Set;for(let r of t){let t=e?.getId(r),i=t?.meta?.line??t?.line;i!==void 0&&n.add(i)}return[...n]}function oz(e,t,n){let r=e?.statements[t.statementIndex];r&&ed(r,t.alternatives,n)}function sz(e,t,n){let r=(0,V.useMemo)(()=>{let r=[];if(e.length===0&&n){for(let e=0;e<n.statements.length;e++){let i=n.statements[e],a=`stmt-${i.id}`,o=t.get(a),s=i.metrics.find(e=>e.type===G.Effort||e.type===G.Label),c=s?.value?.toString()||s?.image||`Exercise`;for(let t of i.metrics){if(t.type===G.Choice){let n=t;r.push({kind:`choice`,blockKey:a,exerciseLabel:c,alternatives:n.alternatives,selectedIndex:0,statementIndex:e});continue}(t.origin===`hinted`||t.image===`?`)&&(o?.some(e=>e.type===t.type&&e.origin===`user`)||r.push({kind:`value`,blockKey:a,exerciseLabel:c,metricType:t.type,hint:t.image||`?`,origin:`hinted`,statementIndex:e}))}}return r}for(let n of e){if(!n.metrics)continue;let e=n.name||`segment-${n.id}`,i=t.get(e);for(let t of n.metrics)if((t.origin===`hinted`||t.image===`?`)&&!i?.some(e=>e.type===t.type&&e.origin===`user`)){let i=n.metrics.find(e=>e.type===G.Effort||e.type===G.Label),a=i?.value?.toString()||i?.image||`Exercise`,o=e.match(/\[(\d+)\]/),s=e.match(/\[\d+\]\[(\d+)\]/);r.push({kind:`value`,blockKey:e,exerciseLabel:a,metricType:t.type,hint:t.image||`?`,origin:`hinted`,statementIndex:0,roundIndex:o?parseInt(o[1])+1:void 0,setIndex:s?parseInt(s[1])+1:void 0})}}return r},[e,t,n]);return{collectionItems:r,totalCount:r.length,isComplete:r.length===0}}var cz=({items:e,onSave:t,onSkip:n,onStart:r,onClose:i,mode:a,className:o})=>{let[s,c]=(0,V.useState)(0),[l,u]=(0,V.useState)(``),[d,f]=(0,V.useState)(()=>{let t={};return e.forEach((e,n)=>{e.kind===`choice`&&(t[n]=0)}),t}),[p,m]=(0,V.useState)(a===`pre-run`);if((0,V.useEffect)(()=>{s>=e.length&&e.length>0&&c(e.length-1)},[e.length,s]),e.length===0)return null;let h=e[s];return h?a===`post-run`&&!p?(0,H.jsxs)(`div`,{className:U(`bg-warning/10 border border-warning/30 rounded-xl p-3 flex items-center justify-between`,o),children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-warning text-sm font-medium`,children:[(0,H.jsx)(Jn,{className:`w-4 h-4`}),(0,H.jsxs)(`span`,{children:[e.length,` uncollected metrics — fill in your actuals`]})]}),(0,H.jsx)(`button`,{onClick:()=>m(!0),className:`px-3 py-1 bg-warning text-warning-foreground rounded-lg text-xs font-bold uppercase tracking-label hover:brightness-110 transition-all`,children:`Fill In Now`})]}):(0,H.jsxs)(`div`,{className:U(`bg-card border border-border rounded-2xl shadow-xl overflow-hidden flex flex-col`,a===`pre-run`?`fixed inset-0 z-50 md:inset-10`:`relative`,o),children:[(0,H.jsx)(`div`,{className:`h-1 bg-muted`,children:(0,H.jsx)(`div`,{className:`h-full bg-primary transition-all duration-300`,style:{width:`${(s+1)/e.length*100}%`}})}),(0,H.jsxs)(`div`,{className:`px-6 py-4 border-b border-border flex items-center justify-between bg-muted/10`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-lg font-bold tracking-tight`,children:a===`pre-run`?`Set Your Targets`:`Fill in your actuals`}),(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground uppercase tracking-label`,children:[s+1,` of `,e.length,` metrics`]})]}),i&&(0,H.jsx)(`button`,{onClick:i,className:`p-2 hover:bg-muted rounded-full transition-colors`,children:(0,H.jsx)(Te,{className:`w-5 h-5 text-muted-foreground`})})]}),(0,H.jsx)(`div`,{className:`flex-1 p-8 flex flex-col items-center justify-center max-w-md mx-auto w-full`,children:(0,H.jsxs)(`div`,{className:`w-full space-y-6`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,H.jsxs)(`div`,{className:`px-3 py-1 rounded-pill bg-metric-effort/15 border border-metric-effort/40 text-metric-effort text-xs font-bold`,children:[`🏃 `,h.exerciseLabel]}),(h.setIndex||h.roundIndex)&&(0,H.jsxs)(`div`,{className:`text-[10px] font-bold tracking-label uppercase text-muted-foreground`,children:[h.roundIndex&&`Round ${h.roundIndex}`,h.roundIndex&&h.setIndex&&` · `,h.setIndex&&`Set ${h.setIndex}`]}),h.kind===`choice`&&(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground font-medium`,children:`Choose one:`})]}),(0,H.jsx)(`div`,{className:`space-y-4`,children:h.kind===`choice`?((e,t)=>{let n=d[t]??0;return(0,H.jsx)(`div`,{className:`flex flex-col gap-3 w-full`,children:e.alternatives.map((e,r)=>{let i=n===r,a=e.image??String(e.value?.amount??e.value??r);return(0,H.jsx)(`button`,{onClick:()=>{i||f(e=>({...e,[t]:r}))},className:U(`w-full py-4 px-6 rounded-xl border-2 text-lg font-bold transition-all`,i?`border-primary bg-primary/10 text-primary shadow-sm`:`border-border bg-background text-foreground hover:border-primary/50`),children:a},r)})})})(h,s):(e=>{let t=e.metricType===G.Duration?`MM:SS`:`Value`;return(0,H.jsx)(`input`,{type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:t,autoFocus:!0,className:`w-full text-2xl font-bold text-center py-3 bg-background border-2 border-border rounded-lg focus:border-primary focus:ring-2 focus:ring-primary/20 outline-none transition-all tabular-nums`})})(h)})]})}),(0,H.jsxs)(`div`,{className:`px-6 py-4 border-t border-border flex items-center justify-between bg-muted/10`,children:[(0,H.jsxs)(`button`,{onClick:()=>{s>0&&(c(s-1),u(``))},disabled:s===0,className:`flex items-center gap-1 text-sm font-medium text-muted-foreground hover:text-foreground disabled:opacity-30 transition-colors`,children:[(0,H.jsx)(rr,{className:`w-4 h-4`}),`Back`]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[h.kind===`value`&&(0,H.jsx)(`button`,{onClick:()=>{h.kind!==`choice`&&n(h),s<e.length-1&&(c(s+1),u(``))},className:`px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors`,children:`Skip`}),s<e.length-1&&(0,H.jsx)(`button`,{onClick:()=>{if(h.kind!==`choice`){if(!l)return;t(h,l),u(``)}s<e.length-1&&c(s+1)},disabled:h.kind===`value`&&!l,className:`flex items-center gap-2 px-6 py-2 bg-primary text-primary-foreground rounded-lg font-bold shadow-sm hover:brightness-110 disabled:opacity-50 disabled:grayscale transition-all`,children:`Next →`})]})]}),a===`pre-run`&&(0,H.jsx)(`div`,{className:`p-4 bg-background border-t border-border mt-auto`,children:(0,H.jsxs)(`button`,{onClick:()=>{h.kind===`value`&&l&&(t(h,l),u(``)),e.forEach((e,n)=>{e.kind===`choice`&&t(e,d[n]??0)}),r?.()},className:`w-full py-4 bg-primary text-primary-foreground rounded-xl font-bold text-lg shadow-lg hover:brightness-110 transition-all flex items-center justify-center gap-2`,children:[`Start Workout`,(0,H.jsx)(mn,{className:`w-5 h-5`})]})})]}):null},lz=[`A`,`B`,`C`];function uz(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`proto-timer`);return lz.includes(e)?e:null}function dz(e){let t=new URL(window.location.href);t.searchParams.set(`proto-timer`,e),window.history.replaceState(null,``,t.toString())}var fz=({current:e,onCycle:t})=>{let n=n=>{t(lz[(lz.indexOf(e)+n+lz.length)%lz.length])};return(0,V.useEffect)(()=>{let e=e=>{let t=document.activeElement;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.key===`ArrowLeft`&&n(-1),e.key===`ArrowRight`&&n(1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)}),null};function pz(e){let t=KM(e=>e.execution.status),n=tf(),r=ef(),i=af(),a=i?.find(e=>e.block.blockType===`Rounds`),o=Gd(a?.block),s=$d(),c=r.some(e=>e.timer.spans.some(e=>e.ended===void 0)),[l,u]=(0,V.useState)(Date.now());return(0,V.useEffect)(()=>{if(!c)return;let e,t=()=>{u(Date.now()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[c]),{...(0,V.useMemo)(()=>{let e=i?.find(e=>e.isLeaf),t=e?.label,c=o?.label??a?.label,u=e?r.find(t=>t.block.key.toString()===e.block.key.toString()):void 0,d=n?.isPinned?n:u||n,f=(n?.isPinned?c||n.timer.label:c&&c!==t?c:t||n?.timer.label)||`Timer`,p=f===t?void 0:t,m;if(e?.displayRows&&e.displayRows.length>1){let t=e.displayRows.map(e=>io.presentGroup([...e],`timer-subtitle`).filter(e=>e.visible).map(e=>e.label).filter(Boolean).join(` `).trim()).filter(Boolean);t.length>0&&(m=t)}m||=p?[p]:void 0;let h=0;if(d){let e=mL(d.timer.spans,l);h=d.timer.direction===`down`&&d.timer.durationMs?Math.max(0,d.timer.durationMs-e):e}let g=r.map(e=>({t:e,elapsed:mL(e.timer.spans,l)})),_=n?.isPinned?{t:n,elapsed:mL(n.timer.spans,l)}:g.reduce((e,t)=>t.elapsed>(e?.elapsed??-1)?t:e,g[0]),v=_?.elapsed??0,y=d?.block.key.toString(),b=_?.t.block.key.toString(),x=r.filter(e=>{let t=e.block.key.toString();return t!==y&&t!==b}).map(e=>{let t=mL(e.timer.spans,l);return{id:e.block.key.toString(),label:e.timer.label,displayMs:e.timer.direction===`down`&&e.timer.durationMs?Math.max(0,e.timer.durationMs-t):t}}),S=null;return s?.metrics&&(S=io.presentGroup([...s.metrics],`timer-subtitle`).filter(e=>e.visible).map(e=>e.label).filter(Boolean).join(` `).trim()||null),{mainLabel:f,subLabels:m,displayMs:h,sessionElapsedMs:v,secondaryTimers:x,upNext:S,roundLabel:o?.label}},[n,r,i,l,o,a,s]),isRunning:c||t===`running`,isPaused:e.isPaused,isNextDisabled:e.isPaused}}var mz=({ms:e,className:t,style:n})=>(0,H.jsx)(`span`,{role:`timer`,"aria-live":`polite`,"aria-atomic":`true`,className:U(`font-mono font-bold tracking-tighter text-foreground tabular-nums leading-none`,t),style:n,children:hL(e)}),hz=({m:e,h:t,className:n})=>(0,H.jsxs)(`button`,{onClick:e.isNextDisabled?void 0:t.onNext,disabled:e.isNextDisabled,className:U(`flex items-center justify-center gap-2 rounded-2xl bg-primary text-primary-foreground shadow-lg shadow-primary/20 transition-transform active:scale-[0.98] disabled:bg-muted disabled:text-muted-foreground disabled:opacity-60 disabled:shadow-none`,n),children:[(0,H.jsx)(`span`,{className:`text-base font-bold tracking-widest uppercase`,children:`Next`}),(0,H.jsx)(On,{className:`w-5 h-5`})]}),gz=({m:e,h:t,className:n})=>(0,H.jsx)(`button`,{onClick:e.isPaused?t.onStart:e.isRunning?t.onPause:t.onStart,className:U(`flex items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg shadow-primary/20 transition-transform active:scale-95`,n),title:e.isPaused?`Continue`:e.isRunning?`Pause`:`Start`,children:e.isPaused||!e.isRunning?(0,H.jsx)(sr,{className:`w-6 h-6 ml-0.5`}):(0,H.jsx)(hr,{className:`w-6 h-6`})}),_z=({m:e})=>e.secondaryTimers.length>0?(0,H.jsx)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:e.secondaryTimers.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg border bg-muted/40 px-2.5 py-1.5 text-xs text-muted-foreground`,children:[(0,H.jsx)(zn,{className:`w-3 h-3`}),(0,H.jsx)(`span`,{className:`font-medium truncate max-w-[100px]`,children:e.label}),(0,H.jsx)(`span`,{className:`font-mono font-semibold tabular-nums`,children:hL(e.displayMs)})]},e.id))}):null,vz=({m:e,h:t})=>(0,H.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,H.jsxs)(`div`,{className:`flex h-10 shrink-0 items-center justify-between gap-3 border-b border-border/60 pl-4 pr-28 text-xs text-muted-foreground`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-1.5 font-mono tabular-nums`,children:[(0,H.jsx)(zn,{className:`w-3.5 h-3.5`}),hL(e.sessionElapsedMs)]}),(0,H.jsx)(`span`,{className:`truncate italic`,children:e.upNext?`Up next: ${e.upNext}`:`End of section`})]}),(0,H.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-2 px-6`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold tracking-tight text-foreground`,children:e.mainLabel}),(0,H.jsx)(mz,{ms:e.displayMs,style:{fontSize:`clamp(72px, min(24vw, 26vh), 220px)`}}),e.subLabels&&(0,H.jsx)(`div`,{className:`space-y-0.5 text-center`,children:e.subLabels.map((e,t)=>(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e},t))}),(0,H.jsx)(_z,{m:e})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-t border-border px-4 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]`,children:[(0,H.jsx)(`button`,{onClick:t.onStop,className:`flex h-12 w-12 items-center justify-center rounded-full border border-border text-muted-foreground active:scale-95`,title:`Stop session`,children:(0,H.jsx)(a,{className:`w-4 h-4`})}),(0,H.jsx)(gz,{m:e,h:t,className:`h-14 w-14`}),(0,H.jsx)(hz,{m:e,h:t,className:`h-14 flex-1`})]})]}),yz=({m:e,h:t})=>(0,H.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,H.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col items-center justify-center px-6`,children:[(0,H.jsxs)(`span`,{className:`absolute left-4 top-3 font-mono text-[11px] uppercase tracking-widest text-muted-foreground tabular-nums`,children:[`Session `,hL(e.sessionElapsedMs)]}),(0,H.jsx)(mz,{ms:e.displayMs,style:{fontSize:`clamp(80px, min(26vw, 30vh), 240px)`}}),(0,H.jsx)(`h2`,{className:`mt-2 text-xl font-semibold tracking-tight text-foreground`,children:e.mainLabel}),e.subLabels&&(0,H.jsx)(`p`,{className:`mt-0.5 text-sm text-muted-foreground`,children:e.subLabels.join(` · `)})]}),(0,H.jsxs)(`div`,{className:`shrink-0 rounded-t-3xl border-t border-border bg-muted/40 px-5 pb-[max(1rem,env(safe-area-inset-bottom))] pt-3 shadow-[0_-8px_30px_rgba(0,0,0,0.08)]`,children:[(0,H.jsx)(`div`,{className:`mx-auto mb-3 h-1 w-10 rounded-full bg-border`}),(0,H.jsxs)(`div`,{className:`mb-1 flex items-center justify-between text-xs text-muted-foreground`,children:[(0,H.jsx)(`span`,{className:`italic truncate`,children:e.upNext?`Up next: ${e.upNext}`:`End of section`}),(0,H.jsx)(`button`,{onClick:t.onStop,className:`ml-3 shrink-0 font-medium uppercase tracking-wider text-muted-foreground hover:text-destructive`,children:`End`})]}),(0,H.jsx)(_z,{m:e}),(0,H.jsxs)(`div`,{className:`mt-3 flex items-center gap-3`,children:[(0,H.jsx)(gz,{m:e,h:t,className:`h-14 w-14 shrink-0`}),(0,H.jsx)(hz,{m:e,h:t,className:`h-14 flex-1`})]})]})]}),bz=({m:e,h:t})=>(0,H.jsxs)(`div`,{className:`flex h-full flex-col bg-background px-6`,children:[(0,H.jsx)(`div`,{className:`flex shrink-0 items-center justify-center pt-5`,children:(0,H.jsxs)(`span`,{className:`font-mono text-[11px] uppercase tracking-[0.2em] text-muted-foreground tabular-nums`,children:[e.roundLabel??`Session`,` · `,hL(e.sessionElapsedMs)]})}),(0,H.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center text-center`,children:[(0,H.jsx)(mz,{ms:e.displayMs,style:{fontSize:`clamp(88px, min(28vw, 32vh), 260px)`}}),(0,H.jsx)(`h2`,{className:`mt-3 text-2xl font-semibold tracking-tight text-foreground`,children:e.mainLabel}),e.subLabels&&(0,H.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e.subLabels.join(` · `)}),(0,H.jsx)(`p`,{className:`mt-4 text-xs italic text-muted-foreground/70`,children:e.upNext?`then ${e.upNext}`:`last one`})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-6 pb-3 text-sm text-muted-foreground`,children:[(0,H.jsx)(`button`,{onClick:e.isPaused?t.onStart:t.onPause,className:`px-2 py-1 font-medium hover:text-foreground`,children:e.isPaused?`resume`:`pause`}),(0,H.jsx)(`span`,{className:`text-border`,children:`·`}),(0,H.jsx)(`button`,{onClick:t.onStop,className:`px-2 py-1 font-medium hover:text-destructive`,children:`end`})]}),(0,H.jsx)(`div`,{className:`shrink-0 pb-[max(0.75rem,env(safe-area-inset-bottom))]`,children:(0,H.jsx)(hz,{m:e,h:t,className:`h-16 w-full`})})]}),xz=e=>{let[t,n]=(0,V.useState)(()=>uz()??`A`),r=pz(e);return(0,H.jsxs)(H.Fragment,{children:[t===`A`&&(0,H.jsx)(vz,{m:r,h:e}),t===`B`&&(0,H.jsx)(yz,{m:r,h:e}),t===`C`&&(0,H.jsx)(bz,{m:r,h:e}),(0,H.jsx)(fz,{current:t,onCycle:e=>{n(e),dz(e)}})]})},Sz=({execution:e,outputCount:t,createdAt:n,handleStart:r,handleStop:i,handleNext:a})=>{let{isCompact:o}=EL();return uz()?(0,H.jsx)(xz,{isPaused:e.status===`paused`,onStart:r,onPause:e.pause,onStop:i,onNext:a}):(0,H.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden bg-background`,children:[(0,H.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-hidden flex ${o?`flex-col`:`flex-row`}`,children:[(0,H.jsx)(`div`,{className:`overflow-hidden bg-secondary/10 ${o?`order-2 min-h-0 flex-[2] border-t border-border`:`min-h-0 min-w-0 w-1/3 border-r border-border`}`,children:(0,H.jsx)(bR,{})}),(0,H.jsx)(`div`,{className:`flex flex-col overflow-y-auto bg-background ${o?`order-1 min-h-[min(280px,100%)] flex-[3]`:`min-h-0 w-2/3`}`,children:(0,H.jsx)(DL,{children:(0,H.jsx)(UL,{elapsedMs:e.elapsedTime,hasActiveBlock:!0,onStart:r,onPause:e.pause,onStop:i,onNext:a,isRunning:e.status===`running`,compact:o,enableDisplayStack:!0})})})]}),(0,H.jsxs)(`div`,{className:`flex h-[26px] flex-shrink-0 items-center gap-2 px-2.5 text-[10px] text-muted-foreground ${t>0?`border-t border-border bg-muted/20`:``}`,children:[t>0&&(0,H.jsx)(`span`,{className:`whitespace-nowrap`,children:`${t} ${t===1?`result`:`results`} captured`}),t>0&&n&&(0,H.jsxs)(`span`,{className:`ml-auto font-medium text-primary`,children:[`✓ `,n.toLocaleTimeString()]})]})]})},Cz=({block:e,view:t,onClose:n,onComplete:r,isExpanded:i=!1,onToggleExpand:a,autoStart:o,onRuntimeReady:s,onRunStarted:c,externalPause:l,externalStop:u})=>{let[d]=(0,V.useState)(()=>tz(e)),[f]=(0,V.useState)(()=>({statements:d.statements})),[p,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(!1),[_,v]=(0,V.useState)(0),[y,b]=(0,V.useState)(null),[x,S]=(0,V.useState)(!1),[C,w]=(0,V.useState)(!1),T=(0,V.useRef)(!1),[E,D]=(0,V.useState)(!1),O=e.startLine+1,{overrides:k,setOverride:A}=XR(!0),{collectionItems:j}=sz([],k,f);(0,V.useEffect)(()=>{if(!x&&j.length>0)return;let e=nz(d);if(!e){D(!0);return}m(e),s?.(e);let n=e.subscribeToStack(n=>{if(!t)return;if(n.blocks.length===0){ew(t,[]);return}let r=n.blocks[0];r?.sourceIds?.length?ew(t,az(e.script,r.sourceIds).map(e=>O+e)):ew(t,[])}),r=e.subscribeToOutput(e=>{(e.outputType===`segment`||e.outputType===`milestone`)&&(T.current||(T.current=!0,c?.()),v(e=>e+1))});return g(!0),()=>{n(),r(),t&&ew(t,[]),e.dispose()}},[x,j.length]);let M=Bd(p);(0,V.useEffect)(()=>{M.status!==`idle`&&GM().getState().setExecution(M)},[M.status,M.elapsedTime,M.stepCount,M.startTime]),(0,V.useEffect)(()=>{(o||C)&&h&&M.status===`idle`&&(M.start(),w(!1))},[o,C,h,M.status,M.start]),(0,V.useEffect)(()=>{M.status===`running`&&!T.current&&(T.current=!0,c?.())},[M.status,c]),(0,V.useEffect)(()=>{l&&M.status===`running`&&M.pause()},[l,M.status,M.pause]),(0,V.useEffect)(()=>{!u||M.status===`completed`||M.status!==`running`&&M.status!==`paused`&&!T.current||ee()},[u,M.status,M.stop]);let N=(0,V.useCallback)(t=>{if(!p)return;p.finalizeAnalytics();let n=rz(p.getOutputStatements(),{startTime:M.startTime??void 0,elapsedTime:M.elapsedTime,completed:t,now:p.nowProvider});r?.(e.id,n)},[e.id,M.elapsedTime,M.startTime,r,p]),[P,F]=(0,V.useState)(()=>gE());(0,V.useEffect)(()=>_E(F),[]),(0,V.useEffect)(()=>{if(!p||!P)return;let e=new TM(P),t=p.subscribeToStack(t=>e.onStackSnapshot(t)),n=p.subscribeToOutput(t=>e.onOutput(t));return()=>{t(),n(),e.dispose()}},[p,P]);let I=(0,V.useRef)(null);(0,V.useEffect)(()=>{I.current=null},[P]),(0,V.useEffect)(()=>{if(M.status===`completed`){I.current=null;return}let e=h&&M.status!==`completed`?`active`:null;if(!(!e||e===I.current||!P?.connected)){I.current=e;try{P.send({type:`rpc-workbench-update`,mode:e})}catch{}}},[h,M.status,P]),(0,V.useEffect)(()=>()=>{if(I.current===`active`)try{gE()?.send({type:`rpc-workbench-update`,mode:`idle`})}catch{}},[]),(0,V.useEffect)(()=>{if(M.status===`completed`&&!y&&(b(new Date),N(!0),P?.connected)){let e=iz(p?.getOutputStatements()||[]),t=qR({totalDurationMs:M.elapsedTime,segmentCount:e});try{P.send(t)}catch{}}},[M.status,M.elapsedTime,y,N,P,p]);let ee=(0,V.useCallback)(()=>{let e=p?p.stack.count===0:!1;M.stop(),p?.handle({name:`workout:stop`,timestamp:new Date,data:{}}),N(e)},[p,M,N]),L=(0,V.useCallback)(()=>{ee(),n()},[ee,n]),te=(0,V.useCallback)(()=>{M.start(),i||a?.()},[M,i,a]),R=!x&&j.length>0,ne=()=>{S(!0),w(!0),i||a?.()},re=(e,t)=>{oz(f,e,t)},ie=(0,V.useCallback)(()=>{p?.handle(new gd(void 0,p.nowProvider))},[p]);return(0,V.useEffect)(()=>{if(!p)return;let e=GM().getState();return e.setRuntime(p),e.setHandles({handleStart:te,handlePause:()=>M.pause(),handleStop:L,handleNext:ie,handleStartWorkoutAction:()=>{}}),()=>{let e=GM().getState();e.runtime===p&&e.setRuntime(null)}},[p,M,te,L,ie]),R?(0,H.jsx)(DL,{children:(0,H.jsx)(cz,{items:j,onSave:(e,t)=>{e.kind===`choice`?re(e,t):A(e.blockKey,e.metricType,t)},onSkip:()=>{},onStart:ne,mode:`pre-run`})}):E?(0,H.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Nothing to run`}),(0,H.jsx)(`p`,{className:`max-w-xs text-xs text-muted-foreground`,children:`This block has no workout statements yet. Add a timer or some movements, then run it again.`}),(0,H.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:`Close`})]}):!h||!p?(0,H.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:`Initializing…`}):(0,H.jsx)(DL,{children:(0,H.jsx)(qd,{runtime:p,children:(0,H.jsx)(Sz,{execution:M,outputCount:_,createdAt:y,handleStart:te,handleStop:L,handleNext:ie})})})},wz=`wodwiki-telemetry`,Tz=1,Ez=`events`,Dz=`wodwiki.telemetry.consent`,Oz=class{events=new QT;consentListeners=new Set;storage;forwarder;idb;sink;load;dbPromise;_consent;setForwarder(e){this.forwarder=e}constructor(e={}){this.storage=e.storage??(globalThis.localStorage===void 0?void 0:globalThis.localStorage),this.forwarder=e.forwarder,this.idb=e.sink?void 0:e.idb??(typeof indexedDB<`u`?indexedDB:void 0),this.sink=e.sink,this.load=e.load,this._consent=this.storage?.getItem(Dz)!==`denied`}get consent(){return this._consent}setConsent(e){if(this._consent!==e){this._consent=e;try{this.storage?.setItem(Dz,e?`granted`:`denied`)}catch{}this.consentListeners.forEach(t=>t(e))}}subscribeConsent(e){return this.consentListeners.add(e),()=>this.consentListeners.delete(e)}record(e,t){let n={name:e,payload:t,at:Date.now()};if(this.persist(n).catch(e=>console.error(`[TelemetryService] persist failed:`,e)),this.events.emit(n),this._consent&&this.forwarder)try{this.forwarder(n)}catch(e){console.error(`[TelemetryService] forwarder error:`,e)}}async list(){if(this.load)return this.load();let e=await this.open();if(!e)return[];let{promise:t,resolve:n,reject:r}=Promise.withResolvers(),i=e.transaction(Ez,`readonly`).objectStore(Ez).getAll();return i.onsuccess=()=>n(i.result.map(({name:e,payload:t,at:n})=>({name:e,payload:t,at:n}))),i.onerror=()=>r(i.error),t}async persist(e){if(this.sink){await this.sink(e);return}let t=await this.open();if(!t)return;let{promise:n,resolve:r,reject:i}=Promise.withResolvers(),a=t.transaction(Ez,`readwrite`);return a.objectStore(Ez).add(e),a.oncomplete=()=>r(),a.onerror=()=>i(a.error),n}open(){return this.idb?(this.dbPromise??=this.openDatabase(),this.dbPromise):Promise.resolve(null)}async openDatabase(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=this.idb.open(wz,Tz);return r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Ez)){let t=e.createObjectStore(Ez,{keyPath:`id`,autoIncrement:!0});t.createIndex(`by-name`,`name`),t.createIndex(`by-at`,`at`)}},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error),e.catch(e=>(console.error(`[TelemetryService] open failed:`,e),null))}},kz=$T?new Oz({sink:e=>cE(`telemetry:${crypto.randomUUID()}`,{name:e.name,payload:e.payload,at:e.at}),load:async()=>(await sE(`telemetry:`)).map(e=>e.value).sort((e,t)=>e.at-t.at)}):new Oz,Az={demoOpened:`home:demo_opened`,demoRun:`home:demo_run`,demoEdited:`home:demo_edited`,libraryOpened:`home:library_opened`,feedsOpened:`home:feeds_opened`,noteCreated:`home:note_created`,lessonStarted:`home:lesson_started`,cheatsheetOpened:`home:cheatsheet_opened`,behaviorsOpened:`home:behaviors_opened`,analyticsGuideOpened:`home:analytics_guide_opened`,explorerOpened:`home:explorer_opened`,dashboardViewed:`home:dashboard_viewed`,effortsOpened:`home:efforts_opened`,referenceOpened:`home:reference_opened`,chapterHeroViewed:`home:chapter_hero_viewed`,chapterExampleRun:`home:chapter_example_run`,chapterGuideClicked:`home:chapter_guide_clicked`};function jz(){let e=(0,V.useSyncExternalStore)(e=>kz.subscribeConsent(e),()=>kz.consent);return{track:(0,V.useCallback)((e,t)=>kz.record(e,t),[]),consent:e,setConsent:(0,V.useCallback)(e=>kz.setConsent(e),[])}}var Mz=[25,50,75,90];function Nz(e,t=Mz){let n=(0,V.useRef)(new Set);(0,V.useEffect)(()=>{if(!e||typeof window>`u`)return;n.current.clear();let r=()=>{let r=document.documentElement.scrollHeight-window.innerHeight;if(r<=0)return;let i=Math.round(window.scrollY/r*100);for(let r of t)i>=r&&!n.current.has(r)&&(n.current.add(r),kz.record(`scroll`,{percent_scrolled:r,page_path:e}))};return window.addEventListener(`scroll`,r,{passive:!0}),r(),()=>{window.removeEventListener(`scroll`,r)}},[e,t])}var Pz=`playground`;function Fz(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`entry`}function Iz({persistence:e,pages:t,now:n=Date.now}){async function r(t,r,i,a){return(await e.createNote({id:C(),title:r,rawContent:i,targetDate:n(),type:`playground`,slug:t,sourceId:a??Pz})).id}async function i(e,r,i,a){await t.savePage({id:e.id,slug:r,category:`playground`,name:i,content:a,sourceRevision:e.sourceRevision,updatedAt:n()})}return{async createPage(e,a){let o=w_(n()),s=EI(`playground`,o),c=await t.getPage(s);return c?(await i(c,c.slug??s,c.name||o,e),o):(await r(s,o,e,a?.sourcePath),o)},async ensureEntry(e,a={}){if(!a.reuseKey){let t=w_(n()),i=EI(`playground`,t);return{noteId:await r(i,t,e),routeId:i}}let o=Fz(a.reuseKey),s=EI(`playground`,o),c=await t.getPage(s);if(c&&c.type===`playground`)return await i(c,c.slug??s,c.name||o,e),{noteId:c.id,routeId:s};if(c){console.warn(`[playground-intake] reuse key '${o}' resolves to a non-playground note (${c.id}); minting a fresh entry instead of overwriting it.`);let t=`${o}-${w_(n())}`,i=EI(`playground`,t);return{noteId:await r(i,a.title??t,e),routeId:i}}return{noteId:await r(s,a.title??o,e),routeId:s}},async snapshotEntry(e,i){let a=w_(n()),o=[Fz(i.pageTitle),i.sectionTitle?Fz(i.sectionTitle):null,a].filter(Boolean).join(`-`),s=EI(`playground`,o);for(let e=2;await t.getPage(s);e+=1)s=EI(`playground`,`${o}-${e}`);let c=[i.pageTitle,i.sectionTitle,a].filter(Boolean).join(` `);return{noteId:await r(s,c,e),routeId:s}},moveToJournal(t,n){return e.mutateNote({id:t},{metadata:{journalDate:n,type:`journal`,sourceId:null,slug:null}})}}}var Lz=Iz({persistence:tk,pages:jI});function Rz(e,t){return Lz.createPage(e,t)}function zz(e,t){return Lz.ensureEntry(e,t)}function Bz(e,t){return Lz.moveToJournal(e,t)}function Vz({intake:e=Lz,recorder:t=GR,persistence:n=tk}={}){let[r,i]=(0,V.useState)(null),[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(null),l=(0,V.useRef)(null),u=(0,V.useRef)(!1),d=(0,V.useRef)(null),f=(0,V.useRef)(null),p=(0,V.useRef)(null),m=(0,V.useCallback)(async(t,r,a)=>{if(f.current)throw Error(`A workout is already starting.`);if(l.current&&!u.current)throw Error(`A workout is already running.`);if(d.current)throw Error(`Previous workout results are not saved yet.`);let s=(async()=>{let s=await e.snapshotEntry(t,{pageTitle:a.pageTitle,sectionTitle:a.sectionTitle}),f=await n.getNote(s.noteId);if(!f.blocks||f.sourceRevision===void 0)throw Error(`The saved workout map is unavailable.`);let p=Object.values(f.blocks).filter(e=>e.kind===`wod`).sort((e,t)=>e.from-t.from),m=t.split(`
135
+ `).slice(0,r.startLine).join(`
136
+ `).length+ +(r.startLine>0),h=p.find(e=>e.from===m);if(!h)throw Error(`The selected workout occurrence is not in the saved note.`);let g=C(),_=await LM({noteId:s.noteId,rawContent:f.rawContent,blocks:f.blocks,expectedSourceRevision:f.sourceRevision},{...r,id:h.id},g,`playground`,n),v={noteId:s.noteId,resultId:g,block:_.block};return l.current=v,u.current=!1,o(!1),d.current=null,c(null),i(v),v})();f.current=s;try{return await s}finally{f.current===s&&(f.current=null)}},[e,n]),h=(0,V.useCallback)(async(e,n)=>{if(f.current)try{await f.current}catch{}let r=l.current;if(!r||u.current)return;if(p.current)return p.current;let i=d.current??{results:e,completed:n},a=(async()=>{d.current=i,c(d.current);try{await t.record({runBlock:r.block,blockId:r.block.id,noteId:r.noteId,resultId:r.resultId,data:i.results,createdAt:i.results.endTime??Date.now(),origin:`playground`})}finally{p.current===a&&(p.current=null)}u.current=!0,o(!0),d.current=null,c(null)})();return p.current=a,a},[t]),g=(0,V.useCallback)(async()=>{if(f.current)try{await f.current}catch{}p.current&&await p.current},[]);return{run:r,recorded:a,pendingResults:s,start:m,finalize:h,reset:(0,V.useCallback)(async(t,n)=>{if(await g(),l.current&&!u.current&&n.results&&await h(n.results,!1),d.current)throw Error(`Previous workout results are not saved yet.`);await e.snapshotEntry(t,{pageTitle:n.pageTitle,sectionTitle:n.sectionTitle}),l.current=null,u.current=!1,o(!1),d.current=null,c(null),i(null)},[g,h,e]),end:(0,V.useCallback)(async e=>{if(await g(),l.current&&!u.current&&e&&await h(e,!1),d.current)throw Error(`Previous workout results are not saved yet.`);l.current=null,u.current=!1,o(!1),d.current=null,c(null),i(null)},[g,h])}}function Hz({title:e,getBlock:t,getContent:n}){let r=Vz(),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(null),[c,l]=(0,V.useState)(!1),u=(0,V.useRef)(!1),d=(0,V.useRef)(0),f=(0,V.useRef)(null),p=(0,V.useRef)(null);(0,V.useEffect)(()=>()=>{d.current+=1},[]);let m=(0,V.useCallback)(async e=>{let t=++d.current;try{await r.end(e?.results)}catch(e){t===d.current&&ND({title:`Could not save workout results`,description:e instanceof Error?e.message:`Your results are kept — try stopping again.`,variant:`destructive`});return}t===d.current&&a(null)},[r]),h=(0,V.useCallback)(async(i,o)=>{let c=i??t();if(!c||u.current)return;u.current=!0;let l=++d.current;try{let t=await r.start(o??n(),c,{pageTitle:e??`Playground`});if(l!==d.current)return;s(null),a({kind:`timer`,block:t.block,results:null})}catch(e){l===d.current&&ND({title:`Could not save playground workout`,description:e instanceof Error?e.message:`The workout was not started. Please try again.`,variant:`destructive`})}finally{u.current=!1}},[r,e,t,n]),g=(0,V.useCallback)(async t=>{let i=d.current;try{await r.finalize(t,t.completed??!1)}catch(e){i===d.current&&ND({title:`Could not save workout results`,description:e instanceof Error?e.message:`Your results are kept — try completing again.`,variant:`destructive`});return}if(i===d.current&&(s(t),a(null),f.current)){let t=f.current;f.current=null,l(!1);let i=p.current??{doc:n(),meta:{pageTitle:e??`Playground`}};p.current=null;try{await r.reset(i.doc,i.meta)}catch(e){ND({title:`Could not save reset snapshot`,description:e instanceof Error?e.message:`Your partial results are kept — try resetting again.`,variant:`destructive`})}finally{t()}}},[r,n,e]),_=(0,V.useCallback)(async t=>{let a=t??n(),o={pageTitle:e??`Playground`};try{if(r.run&&!r.recorded&&i){if(r.pendingResults)return await r.finalize(r.pendingResults.results,!1),await r.reset(a,o),!0;p.current={doc:a,meta:o},l(!0);let e=Promise.withResolvers();return f.current=e.resolve,await e.promise,!0}return await r.reset(a,o),!0}catch(e){return ND({title:`Could not save workout results`,description:e instanceof Error?e.message:`Your results are kept — try resetting again.`,variant:`destructive`}),!1}},[r,n,e,i]);return{fullscreen:i,startRun:h,closeRun:m,completedResults:o,runState:(0,V.useMemo)(()=>({isReconnect:!1,onReconnect:()=>{},onRun:()=>{h()}}),[h]),handleWorkoutComplete:g,run:r.run,recorded:r.recorded,pendingResults:r.pendingResults,resetRequested:c,resetRun:_}}function Uz({initialSource:e,initialSourceKey:t,contentOverride:n}){let[r,i]=(0,V.useState)(e),[a,o]=(0,V.useState)(1),[s,c]=(0,V.useState)(!1),[l,u]=(0,V.useState)(t),[d,f]=(0,V.useState)(e),p=(0,V.useRef)(e),m=(0,V.useRef)(null),h=(0,V.useRef)(new Map([[t,{original:e,current:e}]])),g=(0,V.useRef)(void 0),_=(0,V.useCallback)(()=>{requestAnimationFrame(()=>m.current?.focus())},[]),v=(0,V.useCallback)((e,t=e)=>{let n=h.current.get(t),r=n?.current??e,a=n?.original??e;if(n||h.current.set(t,{original:e,current:e}),u(t),f(a),_(),r===p.current){c(!1);return}clearTimeout(g.current),c(!0),o(0),g.current=setTimeout(()=>{p.current=r,i(r),o(1),c(!1),g.current=void 0,_()},180)},[_]),y=(0,V.useCallback)(e=>{i(e),p.current=e;let t=h.current.get(l)??{original:d,current:d};h.current.set(l,{...t,current:e})},[d,l]),b=(0,V.useCallback)(()=>{let e=h.current.get(l)?.original??d;h.current.set(l,{original:e,current:e}),p.current=e,i(e),f(e),_()},[d,l,_]),x=(0,V.useCallback)(e=>{m.current=e},[]),S=(0,V.useCallback)(()=>p.current,[]),C=(0,V.useRef)(void 0);return(0,V.useEffect)(()=>{n&&n!==C.current&&(C.current=n,v(n,`content-override:${n}`))},[n,v]),{editorSource:r,editorOpacity:a,isEditorLoading:s,activeSourceKey:l,activeOriginalSource:d,swapSource:v,handleEditorChange:y,resetActiveSource:b,setEditorView:x,getSource:S}}var Wz=`wodwiki.quests.v1`;function Gz(){try{let e=window.localStorage.getItem(Wz);if(!e)return{};let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch(e){console.error(`Failed to read quest progress:`,e)}return{}}function Kz(e){try{window.localStorage.setItem(Wz,JSON.stringify(e))}catch(e){console.error(`Failed to write quest progress:`,e)}}function qz(e){return Gz()[e]??{}}function Jz(e,t){let n=Gz();n[e]=t,Kz(n),window.dispatchEvent(new StorageEvent(`storage`,{key:Wz}))}function Yz(e,t){let n=qz(e);n[t]||(n[t]=!0,Jz(e,n))}function Xz(e,t){let n=qz(e);n[t]=!n[t],Jz(e,n)}function Zz(e,t){let[n,r]=(0,V.useState)(()=>qz(e));(0,V.useEffect)(()=>{let t=t=>{t.key===`wodwiki.quests.v1`&&r(qz(e))};return window.addEventListener(`storage`,t),()=>window.removeEventListener(`storage`,t)},[e]);let i=(0,V.useCallback)(t=>{Yz(e,t),r(qz(e))},[e]),a=(0,V.useCallback)(t=>{Xz(e,t),r(qz(e))},[e]),o=t.map(e=>({...e,isCompleted:!!n[e.id]})),s=t.length,c=o.filter(e=>e.isCompleted).length;return{quests:o,stepsComplete:c,totalSteps:s,isComplete:s>0&&c===s,markComplete:i,toggleQuest:a}}function Qz({pageRoute:e,quests:t,completedResults:n,enabled:r=!0}){let{markComplete:i}=Zz(e,t),a=(0,V.useRef)(new Set),o=t.map(e=>e.id).join(`|`);(0,V.useEffect)(()=>{a.current.clear()},[e,o]);let s=t.filter(e=>e.validation?.type===`workout-complete`);return(0,V.useEffect)(()=>{if(!(!r||!n)&&n.completed===!0)for(let e of s)a.current.has(e.id)||(i(e.id),a.current.add(e.id))},[r,n,s,i]),{questIds:s.map(e=>e.id)}}function $z({pageRoute:e,quests:t,initialSource:n,currentSource:r,enabled:i=!0}){let{markComplete:a}=Zz(e,t),o=t.some(e=>e.id===`qs-arrive`),s=t.some(e=>e.id===`qs-edit`),c=(0,V.useRef)(n);c.current=n;let l=(0,V.useRef)(r);l.current=r,(0,V.useEffect)(()=>{!i||!o||a(`qs-arrive`)},[i,o,a]),(0,V.useEffect)(()=>{if(!i||!s)return;let e=c.current.trim(),t=l.current.trim();t!==e&&t.length>0&&a(`qs-edit`)},[i,s,r,a])}function eB(e){let[t,n]=(0,V.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(e).matches);return(0,V.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let t=window.matchMedia(e),r=e=>n(e.matches);return t.addEventListener?(t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)):(t.addListener(r),()=>t.removeListener(r))},[e]),t}function tB({title:e,subtitle:t,children:n,onReset:r,headerActions:i,className:a}){return(0,H.jsxs)(`div`,{className:U(`flex flex-col w-full h-full rounded-2xl lg:rounded-3xl border border-border shadow-2xl bg-background`,a),children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5 bg-muted/20 border-b border-border/60 shrink-0 rounded-t-2xl lg:rounded-t-3xl`,children:[(0,H.jsxs)(`div`,{className:`flex gap-1.5`,children:[r?(0,H.jsx)(`button`,{onClick:r,title:`Reset`,className:`size-2.5 rounded-full bg-red-500 hover:bg-red-400 transition-colors cursor-pointer ring-1 ring-red-500/40 hover:ring-red-400/60`}):(0,H.jsx)(`div`,{className:`size-2.5 rounded-full bg-red-500/30`}),(0,H.jsx)(`div`,{className:`size-2.5 rounded-full bg-amber-500/30`}),(0,H.jsx)(`div`,{className:`size-2.5 rounded-full bg-emerald-500/30`})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsxs)(`span`,{className:`text-[9px] font-black text-muted-foreground uppercase tracking-[0.2em]`,children:[e,t&&(0,H.jsxs)(`span`,{className:`ml-1.5 font-medium normal-case tracking-normal text-muted-foreground/50`,children:[`· `,t]})]}),i,r&&(0,H.jsxs)(`button`,{onClick:r,className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-[10px] font-black uppercase tracking-wider text-destructive-foreground bg-destructive/80 hover:bg-destructive border border-destructive/40 shadow-sm transition-all`,children:[(0,H.jsx)(Xt,{className:`size-3`}),`Reset`]})]})]}),(0,H.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden rounded-b-2xl lg:rounded-b-3xl`,children:n})]})}var nB={[G.Duration]:`cm-metric-underline-duration`,[G.Rep]:`cm-metric-underline-rep`,[G.Effort]:`cm-metric-underline-effort`,[G.Rounds]:`cm-metric-underline-rounds`,[G.Distance]:`cm-metric-underline-distance`,[G.Resistance]:`cm-metric-underline-resistance`,[G.Action]:`cm-metric-underline-action`};function rB(e,t){if(e.contentFrom===void 0||e.contentTo===void 0)return null;let n=t.doc.sliceString(e.contentFrom,e.contentTo);if(!n.trim())return null;try{return vs().read(n,e.sport).statements}catch{return null}}function iB(e,t,n,r){let i=[];for(let a of e){if(a.contentFrom===void 0||a.contentTo===void 0)continue;let e=rB(a,r);if(e)for(let o of e){let e=a.startLine+(o.meta?.line??0),s=t===a&&e===n;for(let e of o.metrics){let t=nB[e.type===G.Choice?e.alternatives[0]?.type:e.type];if(!t)continue;let n=o.metricMeta?.get(e);if(!n)continue;let c=a.contentFrom+n.startOffset,l=a.contentFrom+n.endOffset;if(!Number.isFinite(c)||!Number.isFinite(l)||c>=l||c<0||l>r.doc.length)continue;let u=s?t:`${t}-dim`;i.push(Jr.mark({class:u}).range(c,l))}}}return i.sort((e,t)=>e.from-t.from),Jr.set(i)}function aB(e){let{sections:t}=e.field(wS),{head:n}=e.selection.main,r=e.doc.lineAt(n).number,i=t.filter(e=>e.type===`time`||e.type===`log`),a=i.find(e=>r>=e.startLine+1&&r<e.endLine)??null,o=null,s=null,c=-1,l=null;if(a){let t=e.doc.line(r);l=rB(a,e);let i=r-a.startLine;c=l?.findIndex(e=>e.meta?.line===i&&e.metrics.some(t=>{let r=e.metricMeta.get(t),i=n-(a.contentFrom??0);return r&&i>=r.startOffset&&i<=r.endOffset}))??-1,c<0&&(c=l?.findIndex(e=>e.meta?.line===i)??-1),s=c>=0&&l?l[c]:null,o={sectionId:a.id,section:a,statement:s,statementIndex:c,cursorLine:r,docLine:r,lineFrom:t.from,lineTo:t.to,focusedMetric:null,focusedMetricIndex:-1,allStatements:l??[]}}let u=null,d=-1;if(a&&s&&a.contentFrom!==void 0)for(let e=0;e<s.metrics.length;e++){let t=s.metrics[e];if(t.type===G.Sound||t.type===G.System)continue;let r=s.metricMeta?.get(t);if(!r)continue;let i=a.contentFrom+r.startOffset,o=a.contentFrom+r.endOffset;if(n>=i&&n<=o){u=t,d=e;break}}o&&(o.focusedMetric=u,o.focusedMetricIndex=d);let f=iB(i,a,r,e);return{focus:o,decos:f}}var oB=hi.define({create(e){return aB(e)},update(e,t){return!t.docChanged&&t.startState.selection.eq(t.state.selection)?e:aB(t.state)},provide:e=>Pr.decorations.from(e,e=>e.decos)});function sB(e){try{return e.field(oB).focus}catch{return null}}function cB(e,t){let n=sB(e.state);if(!n)return!1;if(!n.statement)return!0;let{section:r}=n,i=r.contentFrom??0,{head:a}=e.state.selection.main,o=rB(r,e.state)??[],s=[];for(let e of o)for(let t of e.metrics){if(t.type===G.Sound||t.type===G.System)continue;let n=e.metricMeta?.get(t);n&&s.push({from:i+n.startOffset,to:i+n.endOffset})}if(s.sort((e,t)=>e.from-t.from),s.length===0)return!0;let c;return c=t===1?s.find(e=>e.from>a):[...s].reverse().find(e=>e.from<a),c&&e.dispatch({selection:{anchor:c.from}}),!0}var lB=bi.high(Dr.of([{key:`Ctrl-ArrowRight`,run:e=>cB(e,1)},{key:`Ctrl-ArrowLeft`,run:e=>cB(e,-1)}])),uB=[oB,Pr.baseTheme({".cm-metric-underline-duration":{borderBottom:`2px solid hsl(var(--metric-time))`,color:`hsl(var(--metric-time))`},".cm-metric-underline-rep":{borderBottom:`2px solid hsl(var(--metric-rep))`,color:`hsl(var(--metric-rep))`},".cm-metric-underline-effort":{borderBottom:`2px solid hsl(var(--metric-effort))`,color:`hsl(var(--metric-effort))`},".cm-metric-underline-rounds":{borderBottom:`2px solid hsl(var(--metric-rounds))`,color:`hsl(var(--metric-rounds))`},".cm-metric-underline-distance":{borderBottom:`2px solid hsl(var(--metric-distance))`,color:`hsl(var(--metric-distance))`},".cm-metric-underline-resistance":{borderBottom:`2px solid hsl(var(--metric-resistance))`,color:`hsl(var(--metric-resistance))`},".cm-metric-underline-action":{borderBottom:`2px solid hsl(var(--metric-action))`,color:`hsl(var(--metric-action))`},".cm-metric-underline-duration-dim":{borderBottom:`2px solid hsl(var(--metric-time) / 0.2)`,color:`hsl(var(--metric-time))`},".cm-metric-underline-rep-dim":{borderBottom:`2px solid hsl(var(--metric-rep) / 0.2)`,color:`hsl(var(--metric-rep))`},".cm-metric-underline-effort-dim":{borderBottom:`2px solid hsl(var(--metric-effort) / 0.2)`,color:`hsl(var(--metric-effort))`},".cm-metric-underline-rounds-dim":{borderBottom:`2px solid hsl(var(--metric-rounds) / 0.2)`,color:`hsl(var(--metric-rounds))`},".cm-metric-underline-distance-dim":{borderBottom:`2px solid hsl(var(--metric-distance) / 0.2)`,color:`hsl(var(--metric-distance))`},".cm-metric-underline-resistance-dim":{borderBottom:`2px solid hsl(var(--metric-resistance) / 0.2)`,color:`hsl(var(--metric-resistance))`},".cm-metric-underline-action-dim":{borderBottom:`2px solid hsl(var(--metric-action) / 0.2)`,color:`hsl(var(--metric-action))`}}),lB];function dB(){return tC.of(async()=>{let[e,t]=await Promise.all([Z.getAllTagTypes(),Z.getAllTags()]);return{types:e.map(e=>e.name),tags:t}})}function fB(e,t){return t||(e.current||=new ek,e.current)}function pB(e,t){return Pr.domEventHandlers({drop:(n,r)=>{let i=n.dataTransfer?.files;if(!i||i.length===0)return!1;n.preventDefault();let a=r.posAtCoords({x:n.clientX,y:n.clientY});return a!==null&&(Array.from(i).forEach(async n=>{let i=C(),o=new FileReader;o.onload=async()=>{let s=o.result;if(e)try{await t.mutateNote(e,{attachments:{add:[{id:i,file:new File([s],n.name,{type:n.type})}]}})}catch(e){MM(`NoteEditor`,`Attachment persist skipped:`,e)}let c=`\n${n.type.startsWith(`image/`)?`!`:``}[${n.name}](${i})\n`;r.dispatch({changes:{from:a,insert:c},selection:{anchor:a+c.length}})},o.readAsArrayBuffer(n)}),!0)}})}function mB(e){let t=e?.split(`:`,1)[0];return t===`time`||t===`log`?ys:null}var hB={frontmatter:120,code:60,widget:220,embed:180},gB={frontmatter:280,code:140,widget:220,embed:280},_B=({view:e,widths:t,activeSectionId:n,renderSlot:r,cursorLine:i})=>{let a=(0,V.useRef)(null),o=(0,V.useRef)(null),[s,c]=(0,V.useState)(()=>e?.plugin(HS)?.rects??[]),[l,u]=(0,V.useState)(0),[d,f]=(0,V.useState)({left:0,right:0}),[p,m]=(0,V.useState)(()=>e?.plugin(HS)?.docVersion??0),[h,g]=(0,V.useState)(void 0),[_,v]=(0,V.useState)(void 0);(0,V.useEffect)(()=>{if(!e)return;let t=()=>{let t=e.contentDOM.offsetLeft,n=e.scrollDOM.offsetWidth-e.scrollDOM.clientWidth;f({left:t,right:n})};t();let n=new ResizeObserver(t);return n.observe(e.dom),()=>n.disconnect()},[e]),(0,V.useEffect)(()=>{if(!e)return;let t=e.plugin(HS);if(t)return t.addListener((e,t)=>{c(e),m(t)})},[e]),(0,V.useEffect)(()=>{if(!e)return;let t=e.scrollDOM,n=null,r=()=>{let e=t.scrollTop;o.current&&(o.current.style.transform=`translateY(${-e}px)`),n===null&&(n=requestAnimationFrame(()=>{n=null,u(t.scrollTop)}))},i=t.scrollTop;return o.current&&(o.current.style.transform=`translateY(${-i}px)`),u(i),t.addEventListener(`scroll`,r,{passive:!0}),()=>{n!==null&&cancelAnimationFrame(n),t.removeEventListener(`scroll`,r)}},[e]),(0,V.useEffect)(()=>{if(!e)return;let t=e.scrollDOM,n={current:void 0},r=r=>{let i=t.getBoundingClientRect();if(r.clientY<i.top||r.clientY>i.bottom||r.clientX<i.left||r.clientX>i.right){n.current!==void 0&&(n.current=void 0,g(void 0));return}try{let t=e.posAtCoords({x:r.clientX,y:r.clientY});if(t==null){n.current!==void 0&&(n.current=void 0,g(void 0));return}let i=e.state.doc.lineAt(t).number;i!==n.current&&(n.current=i,g(i))}catch{n.current!==void 0&&(n.current=void 0,g(void 0))}},i=()=>{n.current!==void 0&&(n.current=void 0,g(void 0))};return document.addEventListener(`mousemove`,r,{passive:!0}),t.addEventListener(`mouseleave`,i),()=>{document.removeEventListener(`mousemove`,r),t.removeEventListener(`mouseleave`,i)}},[e]);let y=(s.length>0?s:e?.plugin(HS)?.rects??[]).filter(e=>{let n=t.get(e.sectionId);return n&&n.effectiveWidth>0});return!e||y.length===0?null:(0,H.jsx)(`div`,{ref:a,className:`overlay-track`,style:{position:`absolute`,top:0,left:d.left,right:d.right,bottom:0,pointerEvents:`none`,overflow:`visible`,zIndex:10},children:(0,H.jsx)(`div`,{ref:o,style:{position:`relative`,willChange:`transform`},children:y.map(a=>{let o=t.get(a.sectionId),s=a.sectionId===n,c=_===a.sectionId,u,d;if(a.type===`time`||a.type===`log`)u=a.top,d=a.height;else{let t=(s?gB:hB)[a.type]??0;if(d=a.type===`widget`?t:Math.max(a.height,t),s){let t=a.top+a.height/2;if(i!==void 0)try{let n=e.state.doc.lines,r=Math.max(1,Math.min(i,n)),o=e.state.doc.line(r).from,s=e.lineBlockAt(o),c=s.top+s.height/2;c>=a.top&&c<=a.top+a.height&&(t=c)}catch{}let n=t-d/2;u=Math.max(a.top,Math.min(n,a.top+a.height-d))}else u=a.top}let f=Math.max(0,l-a.top),m=Math.min(f,Math.max(0,a.height-28)),g;if(a.type===`time`||a.type===`log`){let t=s?i:h;if(t!==void 0)try{let n=Math.max(1,Math.min(t,e.state.doc.lines)),r=e.lineBlockAt(e.state.doc.line(n).from),i=r.top+r.height/2;i>=a.top&&i<=a.top+a.height&&(g=i)}catch{}}return(0,H.jsx)(`div`,{className:`overlay-slot ${s?`overlay-slot-active`:``}`,style:{position:`absolute`,top:u,right:0,width:`${o.effectiveWidth}%`,height:d,pointerEvents:a.type===`time`||a.type===`log`?`none`:`auto`,transition:`width 150ms ease`,overflow:`visible`},onClick:a.type!==`time`&&a.type!==`log`?t=>{if(t.target.closest(`button,a,input,select,textarea,[role=button]`))return;let n=e.posAtCoords({x:t.clientX,y:t.clientY});n!=null&&(e.dispatch({selection:{anchor:n}}),e.focus())}:void 0,onMouseEnter:()=>v(a.sectionId),onMouseLeave:()=>v(void 0),children:r?.({sectionId:a.sectionId,sectionType:a.type,rect:a,widthPercent:o.effectiveWidth,isActive:s,view:e,docVersion:p,widgetName:a.widgetName,hoverLine:h,stickyTopOffset:m,isPanelHovered:c,lineDocY:g})},a.sectionId)})})})},vB={time:{active:35,inactive:20},log:{active:35,inactive:20},frontmatter:{active:35,inactive:100},markdown:{active:0,inactive:0},code:{active:30,inactive:0},widget:{active:100,inactive:100},embed:{active:35,inactive:100}};function yB(e,t=vB){if(e.userOverride!==void 0)return Math.max(0,Math.min(100,e.userOverride));let n=t[e.sectionType];return n?e.isActive?n.active:n.inactive:0}function bB(e,t){switch(t.type){case`SET_SECTION_WIDTH`:return{...e,sectionOverrides:{...e.sectionOverrides,[t.sectionId]:t.width}};case`SET_TYPE_WIDTH`:return{...e,typeOverrides:{...e.typeOverrides,[t.sectionType]:t.width}};case`CLEAR_SECTION_OVERRIDE`:{let{[t.sectionId]:n,...r}=e.sectionOverrides;return{...e,sectionOverrides:r}}case`CLEAR_TYPE_OVERRIDE`:{let{[t.sectionType]:n,...r}=e.typeOverrides;return{...e,typeOverrides:r}}default:return e}}var xB={typeOverrides:{},sectionOverrides:{}};function SB(e,t,n=vB){let[r,i]=(0,V.useReducer)(bB,xB);return{widths:(0,V.useMemo)(()=>{let i=new Map;for(let a of e){let e=a.id===t,o=r.sectionOverrides[a.id],s=r.typeOverrides[a.type],c=o??s,l=yB({sectionType:a.type,isActive:e,userOverride:c},n);i.set(a.id,{effectiveWidth:l,isUserOverridden:c!==void 0})}return i},[e,t,r,n]),setSectionWidth:(0,V.useCallback)((e,t)=>i({type:`SET_SECTION_WIDTH`,sectionId:e,width:t}),[]),setTypeWidth:(0,V.useCallback)((e,t)=>i({type:`SET_TYPE_WIDTH`,sectionType:e,width:t}),[]),clearSectionOverride:(0,V.useCallback)(e=>i({type:`CLEAR_SECTION_OVERRIDE`,sectionId:e}),[])}}var CB=un(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`),wB=V.memo(V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(ht,{ref:n,className:U(CB(),e),...t})));wB.displayName=ht.displayName;function TB(e,t){let{sections:n}=e.state.field(wS);return n.find(e=>e.id===t)}function EB(e,t){return t.contentFrom===void 0||t.contentTo===void 0?``:e.state.doc.sliceString(t.contentFrom,t.contentTo)}function DB(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)?t.slice(1,-1).replace(/\\(["\\])/g,`$1`):t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1).replace(/\\'/g,`'`):t}function OB(e){return e?/[":'\n#{}[\],&*?|\-<>=%!@`]/.test(e)||e!==e.trim()?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:e:`""`}function kB(e){let t=(e.type||``).toLowerCase();return t===`youtube`?`youtube`:t===`amazon`?`amazon`:t===`strava`?`strava`:t===`effort`?`effort`:e.source_url||e.website?`link`:sy(e.url||e.link||``)||(e.registrySource!==void 0||e.baseAttributes!==void 0?`effort`:`default`)}function AB(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function jB(e){let t={aliases:[],customLines:[]},n=`root`;for(let r of e.split(/\r?\n/)){let e=r.trim();if(!e)continue;let i=r.length-r.trimStart().length;if(i===0){if(e.startsWith(`#`)){t.customLines.push(r);continue}let i=e.match(/^([^:]+):\s*(.*)$/);if(!i){t.customLines.push(r),n=`custom`;continue}let a=i[1].trim(),o=DB(i[2]);if(a===`aliases`){n=`aliases`,o===`[]`&&(t.aliases=[]);continue}if(a===`baseAttributes`){n=`baseAttributes`;continue}if(a===`derivation`){n=`derivation`,t.derivation??={};continue}switch(a){case`id`:t.id=o,n=`root`;break;case`slug`:t.slug=o,n=`root`;break;case`label`:t.label=o,n=`root`;break;case`registrySource`:t.registrySource=o,n=`root`;break;case`createdAt`:t.createdAt=o,n=`root`;break;case`updatedAt`:t.updatedAt=o,n=`root`;break;default:n=`custom`,t.customLines.push(r)}continue}if(n===`custom`){t.customLines.push(r);continue}if(i===2){if(n===`aliases`&&e.startsWith(`- `)){t.aliases.push(DB(e.slice(2)));continue}let r=e.match(/^([^:]+):\s*(.*)$/);if(!r)continue;let i=r[1].trim(),a=DB(r[2]);if(n===`baseAttributes`){switch(i){case`met`:t.met=a;break;case`discipline`:t.discipline=a;break;case`intensityTier`:t.intensityTier=a}continue}if(n===`derivation`){switch(t.derivation??={},i){case`parentSlug`:t.derivation.parentSlug=a;break;case`coefficients`:n=`coefficients`,t.derivation.coefficients??={};break;case`hardOverrides`:n=`hardOverrides`,t.derivation.hardOverrides??={}}continue}}if(i===4&&t.derivation){let r=e.match(/^([^:]+):\s*(.*)$/);if(!r)continue;let i=r[1].trim(),a=DB(r[2]);n===`coefficients`?(t.derivation.coefficients??={},t.derivation.coefficients[i]=a):n===`hardOverrides`&&(t.derivation.hardOverrides??={},t.derivation.hardOverrides[i]=a)}}return t}function MB(e){let t=[];if(e.id&&t.push(`id: ${OB(e.id)}`),e.slug&&t.push(`slug: ${OB(e.slug)}`),e.label&&t.push(`label: ${OB(e.label)}`),e.aliases.length>0){t.push(`aliases:`);for(let n of e.aliases)t.push(` - ${OB(n)}`)}else t.push(`aliases: []`);if(t.push(`baseAttributes:`),e.met!==void 0&&e.met!==``&&t.push(` met: ${e.met}`),e.discipline&&t.push(` discipline: ${OB(e.discipline)}`),e.intensityTier&&t.push(` intensityTier: ${OB(e.intensityTier)}`),e.registrySource&&t.push(`registrySource: ${OB(e.registrySource)}`),e.derivation&&(e.derivation.parentSlug||e.derivation.coefficients&&Object.keys(e.derivation.coefficients).length>0||e.derivation.hardOverrides&&Object.keys(e.derivation.hardOverrides).length>0)){if(t.push(`derivation:`),e.derivation.parentSlug&&t.push(` parentSlug: ${OB(e.derivation.parentSlug)}`),e.derivation.coefficients&&Object.keys(e.derivation.coefficients).length>0){t.push(` coefficients:`);for(let[n,r]of Object.entries(e.derivation.coefficients))t.push(` ${n}: ${r}`)}if(e.derivation.hardOverrides&&Object.keys(e.derivation.hardOverrides).length>0){t.push(` hardOverrides:`);for(let[n,r]of Object.entries(e.derivation.hardOverrides))t.push(` ${n}: ${JSON.stringify(r)}`)}}if(e.createdAt&&t.push(`createdAt: ${OB(e.createdAt)}`),e.updatedAt&&t.push(`updatedAt: ${OB(e.updatedAt)}`),e.customLines&&e.customLines.length>0)for(let n of e.customLines)t.push(n);return t.join(`
137
+ `)}function NB(e,t,n){t.contentFrom!==void 0&&t.contentTo!==void 0&&(e.state.readOnly||e.dispatch({changes:{from:t.contentFrom,to:t.contentTo,insert:n}}))}function PB(e){return[e.slug,e.label,e.met?`${e.met} MET`:void 0].filter(Boolean).join(` · `)}var FB=({section:e,view:t,isActive:n,widthPercent:r,rawContent:i})=>{let a=(0,V.useMemo)(()=>jB(i),[i]),o=!!t.state.readOnly,s=(0,V.useCallback)(n=>{t.state.readOnly||NB(t,e,MB({...a,...n,aliases:n.aliases??a.aliases,derivation:n.derivation??a.derivation,customLines:a.customLines}))},[a,e,t]),c=!n||r<24;return(0,H.jsxs)(`div`,{className:U(`h-full w-full overflow-auto rounded-l-md border-l border-border bg-popover/95 text-foreground shadow-sm`,c?`p-2`:`p-3`),children:[(0,H.jsxs)(`div`,{className:`sticky top-0 z-10 -mx-2 -mt-2 mb-3 border-b border-border bg-popover/95 px-2 py-2 backdrop-blur-sm`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-primary`,children:`Effort`}),(0,H.jsx)(`span`,{className:`truncate text-sm font-medium`,children:a.label||a.slug||`Untitled effort`})]}),(0,H.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-[10px] text-muted-foreground`,children:[a.slug&&(0,H.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono`,children:a.slug}),a.met&&(0,H.jsxs)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono`,children:[a.met,` MET`]}),a.discipline&&(0,H.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5`,children:a.discipline}),a.intensityTier&&(0,H.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 uppercase`,children:a.intensityTier})]})]}),c?(0,H.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,H.jsxs)(`div`,{className:`rounded-md border border-border/70 bg-background/70 p-2`,children:[(0,H.jsx)(`div`,{className:`font-medium`,children:a.label||`Untitled effort`}),(0,H.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:PB(a)||`No effort metadata yet.`})]}),(0,H.jsx)(`div`,{className:`rounded-md border border-border/70 bg-background/70 p-2 text-[11px] text-muted-foreground`,children:`Focus the block to edit the structured frontmatter fields.`})]}):(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 xl:grid-cols-2`,children:[(0,H.jsx)(IB,{label:`Slug`,children:(0,H.jsx)(`input`,{disabled:o,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.slug||``,onChange:e=>s({slug:e.target.value}),spellCheck:!1})}),(0,H.jsx)(IB,{label:`Label`,children:(0,H.jsx)(`input`,{disabled:o,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.label||``,onChange:e=>s({label:e.target.value})})}),(0,H.jsx)(IB,{label:`MET`,children:(0,H.jsx)(`input`,{disabled:o,type:`number`,step:`0.1`,inputMode:`decimal`,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.met||``,onChange:e=>{let t=e.target.value.trim();t&&(Number.isNaN(Number(t))||s({met:t}))}})}),(0,H.jsx)(IB,{label:`Intensity tier`,children:(0,H.jsxs)(`select`,{disabled:o,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.intensityTier||``,onChange:e=>s({intensityTier:e.target.value||void 0}),children:[(0,H.jsx)(`option`,{value:``,children:`Unset`}),(0,H.jsx)(`option`,{value:`low`,children:`low`}),(0,H.jsx)(`option`,{value:`moderate`,children:`moderate`}),(0,H.jsx)(`option`,{value:`high`,children:`high`})]})}),(0,H.jsx)(IB,{label:`Discipline`,className:`xl:col-span-2`,children:(0,H.jsxs)(`select`,{disabled:o,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.discipline||``,onChange:e=>s({discipline:e.target.value||void 0}),children:[(0,H.jsx)(`option`,{value:``,children:`Unset`}),Ss.map(e=>(0,H.jsx)(`option`,{value:e,children:e},e))]})}),(0,H.jsx)(IB,{label:`Aliases`,className:`xl:col-span-2`,children:(0,H.jsx)(`input`,{disabled:o,className:`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary disabled:opacity-50`,value:a.aliases.join(`, `),onChange:e=>s({aliases:AB(e.target.value)}),placeholder:`comma-separated aliases`})})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 rounded-md border border-border/70 bg-background/70 p-3 text-xs text-muted-foreground md:grid-cols-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide`,children:`Record`}),(0,H.jsx)(`div`,{className:`mt-1 font-mono`,children:a.id||`—`})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide`,children:`Source`}),(0,H.jsx)(`div`,{className:`mt-1`,children:a.registrySource||`—`})]}),a.createdAt&&(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide`,children:`Created`}),(0,H.jsx)(`div`,{className:`mt-1 font-mono`,children:a.createdAt})]}),a.updatedAt&&(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide`,children:`Updated`}),(0,H.jsx)(`div`,{className:`mt-1 font-mono`,children:a.updatedAt})]})]}),(0,H.jsx)(`div`,{className:`rounded-md border border-dashed border-border/70 bg-muted/20 p-2 text-[11px] text-muted-foreground`,children:`Structured fields commit directly into the underlying frontmatter block.`})]})]})},IB=({label:e,className:t,children:n})=>(0,H.jsxs)(`label`,{className:U(`space-y-1.5`,t),children:[(0,H.jsx)(wB,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),n]}),LB=/^[A-Za-z][\w.-]*$/;function RB(e){return Array.isArray(e)?`list`:typeof e==`number`?`number`:`text`}function zB(e,t){if(RB(e)===t)return null;if(t===`list`){let t=Array.isArray(e)?e.join(`, `):String(e).trim();return t===``?[]:[t]}let n=Array.isArray(e)?e[0]??``:String(e);if(t===`number`){let e=Number(n);return n.trim()!==``&&!isNaN(e)?e:null}return Array.isArray(e)?e.join(`, `):String(e)}var BB=`h-9 w-full rounded-md border border-input bg-background px-2.5 text-sm outline-none ring-0 transition focus:border-primary`,VB=({section:e,view:t,isActive:n,widthPercent:r,rawContent:i})=>{let a=(0,V.useMemo)(()=>Object.entries(Xv(i)),[i]),o=t.state.facet(di.readOnly),s=!n||r<24,[c,l]=(0,V.useState)({}),[u,d]=(0,V.useState)({}),[f,p]=(0,V.useState)({}),[m,h]=(0,V.useState)(null),[g,_]=(0,V.useState)([]),[v,y]=(0,V.useState)({});(0,V.useEffect)(()=>{let e=!0;return(async()=>{try{await Z.ensureDefaultTagTypes?.();let t=await Z.getAllTagTypes();if(!e)return;_(t);let n={};for(let e of t)n[e.name.toLowerCase()]=await Z.getTags(e.name);e&&y(n)}catch{}})(),()=>{e=!1}},[]);let[b,x]=(0,V.useState)(null),S=(0,V.useRef)(null),C=(0,V.useCallback)(e=>{S.current=e,x(e)},[]),w=(0,V.useCallback)(n=>{let r={};for(let[e,t]of n)r[e]=t;NB(t,e,Qv(r))},[t,e]),T=(0,V.useCallback)((e,t,n)=>{w(a.map(([r,i],a)=>a===e?[t,n]:[r,i]))},[w,a]),E=(0,V.useCallback)(async(e,t,n,r,i)=>{let a=r.trim();if(!(!a||n.includes(a))){if(i)try{let e=i.toLowerCase();if(!(v[e]??[]).some(e=>e.label.toLowerCase()===a.toLowerCase())){let t={id:typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,9)}`,label:a,type:i,createdAt:Date.now()};await Z.putTag(t),y(n=>({...n,[e]:[...n[e]??[],t]}))}}catch{}T(e,t,[...n,a])}},[v,T]),D=(0,V.useCallback)((e,t)=>{e(e=>{if(!(t in e))return e;let n={...e};return delete n[t],n})},[]),O=(0,V.useCallback)((e,t)=>a.some(([n],r)=>r!==t&&n===e),[a]),k=(0,V.useCallback)(()=>{let e=S.current;if(!e)return;C(null);let t=e.key.trim();if(LB.test(t)&&!O(t,-1)){let n=e.value.trim(),r=e.value;e.type===`number`?r=n!==``&&!isNaN(Number(n))?Number(n):``:e.type===`list`&&(r=n===``?[]:[n]),w([...a,[t,r]])}},[C,w,a,O]);return(0,H.jsxs)(`div`,{className:U(`h-full w-full overflow-auto rounded-l-md border-l border-border bg-popover/95 text-foreground shadow-sm`,s?`p-2`:`p-3`),children:[(0,H.jsx)(`div`,{className:`sticky top-0 z-10 -mx-2 -mt-2 mb-3 border-b border-border bg-popover/95 px-2 py-2 backdrop-blur-sm`,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-primary`,children:`Properties`}),(0,H.jsx)(`span`,{className:`truncate text-sm font-medium`,children:a.length===0?`No fields`:`${a.length} ${a.length===1?`field`:`fields`}`})]})}),s||o?(0,H.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,H.jsxs)(`div`,{className:`space-y-1 rounded-md border border-border/70 bg-background/70 p-2`,children:[a.slice(0,3).map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsxs)(`span`,{className:`shrink-0 font-medium text-foreground`,children:[e,`:`]}),(0,H.jsx)(`span`,{className:`truncate text-muted-foreground`,children:Array.isArray(t)?t.join(`, `):String(t)})]},e)),a.length>3&&(0,H.jsxs)(`div`,{className:`text-muted-foreground`,children:[`+`,a.length-3,` more`]}),a.length===0&&(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`No properties yet.`})]}),!o&&(0,H.jsx)(`div`,{className:`rounded-md border border-border/70 bg-background/70 p-2 text-[11px] text-muted-foreground`,children:`Focus the block to edit properties.`})]}):(0,H.jsxs)(`div`,{className:`space-y-2`,children:[a.map(([e,t],n)=>{let r=RB(t),i=g.find(t=>t.name.toLowerCase()===e.toLowerCase()),o=r===`list`||!!i,s=Array.isArray(t)?t:typeof t==`string`&&t.trim()?[t.trim()]:[],_=i?v[i.name.toLowerCase()]??[]:[],y=(f[n]??``).trim(),b=y?_.filter(e=>!s.includes(e.label)&&e.label.toLowerCase().includes(y.toLowerCase())):_.filter(e=>!s.includes(e.label)),x=c[n],S=x!==void 0&&(!LB.test(x)||O(x,n));return(0,H.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,H.jsx)(`input`,{"aria-label":`Property name`,className:U(`h-9 w-[110px] shrink-0 rounded-md border bg-background px-2 font-mono text-xs outline-none ring-0 transition`,S?`border-destructive`:`border-input focus:border-primary`),value:x??e,spellCheck:!1,onChange:e=>{let r=e.target.value;LB.test(r)&&!O(r,n)?(D(l,n),T(n,r,t)):l(e=>({...e,[n]:r}))},onBlur:()=>D(l,n)}),(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:o?(0,H.jsxs)(`div`,{className:`relative flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-background px-2 py-1.5 transition focus-within:border-primary`,children:[s.map((t,r)=>(0,H.jsxs)(`span`,{className:`flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-xs`,children:[t,(0,H.jsx)(`button`,{type:`button`,"aria-label":`Remove ${t}`,className:`text-muted-foreground/70 transition hover:text-foreground`,onClick:()=>{let t=s.filter((e,t)=>t!==r);T(n,e,t.length>0?t:``)},children:(0,H.jsx)(Te,{className:`h-3 w-3`})})]},r)),(0,H.jsx)(`input`,{"aria-label":`Add to ${e}`,className:`min-w-[72px] flex-1 bg-transparent text-xs outline-none`,placeholder:i?`Add ${i.label}…`:`Add item…`,value:f[n]??``,onFocus:()=>h(n),onChange:e=>p(t=>({...t,[n]:e.target.value})),onKeyDown:t=>{let r=(f[n]??``).trim();(t.key===`Enter`||t.key===`,`)&&r?(t.preventDefault(),h(null),D(p,n),i?E(n,e,s,r,i.name):T(n,e,[...s,r])):t.key===`Backspace`&&!r&&s.length>0?T(n,e,s.length>1?s.slice(0,-1):``):t.key===`Escape`&&h(null)},onBlur:()=>{setTimeout(()=>{h(e=>e===n?null:e);let t=(f[n]??``).trim();D(p,n),t&&(i?E(n,e,s,t,i.name):T(n,e,[...s,t]))},200)}}),i&&(m===n||!!y)&&(0,H.jsxs)(`div`,{role:`listbox`,className:`absolute left-0 top-full z-50 mt-1 max-h-48 w-full min-w-[160px] overflow-auto rounded-md border border-border bg-popover py-1 shadow-lg text-xs`,children:[b.map(t=>(0,H.jsx)(`div`,{role:`option`,"aria-selected":!1,className:`cursor-pointer px-2.5 py-1.5 hover:bg-accent hover:text-accent-foreground font-mono`,onMouseDown:r=>{r.preventDefault(),h(null),D(p,n),E(n,e,s,t.label,i.name)},children:t.label},t.id)),y&&!_.some(e=>e.label.toLowerCase()===y.toLowerCase())&&(0,H.jsxs)(`div`,{role:`option`,"aria-selected":!1,className:`cursor-pointer border-t border-border/50 px-2.5 py-1.5 text-muted-foreground hover:bg-accent hover:text-accent-foreground font-mono`,onMouseDown:t=>{t.preventDefault(),h(null),D(p,n),E(n,e,s,y,i.name)},children:[`Create “`,y,`”`]}),!y&&b.length===0&&(0,H.jsxs)(`div`,{className:`px-2.5 py-1 text-muted-foreground/60 italic text-[11px]`,children:[`Type to create a `,i.label]})]})]}):r===`number`?(0,H.jsx)(`input`,{"aria-label":e,type:`number`,inputMode:`decimal`,className:BB,value:u[n]??String(t),onChange:t=>{let r=t.target.value;d(e=>({...e,[n]:r}));let i=r.trim();i!==``&&!isNaN(Number(i))&&T(n,e,Number(i))},onBlur:t=>{D(d,n),t.target.value.trim()===``&&T(n,e,``)}}):(0,H.jsx)(`input`,{"aria-label":e,className:BB,value:String(t),spellCheck:!1,onChange:t=>T(n,e,t.target.value)})}),i?(0,H.jsxs)(`div`,{className:`h-9 px-2 flex items-center justify-center shrink-0 rounded-md border border-border/80 bg-muted/40 text-[10px] font-mono text-muted-foreground`,title:`Registered Tag Type: ${i.label}`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full mr-1 shrink-0`,style:{backgroundColor:i.color||`#3b82f6`}}),i.label]}):(0,H.jsxs)(`select`,{"aria-label":`Type for ${e}`,className:`h-9 w-[78px] shrink-0 rounded-md border border-input bg-background px-1.5 text-[11px] text-muted-foreground outline-none ring-0 transition focus:border-primary`,value:r,onChange:r=>{let i=zB(t,r.target.value);i!==null&&T(n,e,i)},children:[(0,H.jsx)(`option`,{value:`text`,children:`Text`}),(0,H.jsx)(`option`,{value:`number`,children:`Number`}),(0,H.jsx)(`option`,{value:`list`,children:`List`})]}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,className:`mt-2 shrink-0 rounded p-1 text-muted-foreground/60 transition hover:bg-muted hover:text-foreground`,onClick:()=>w(a.filter((e,t)=>t!==n)),children:(0,H.jsx)(Te,{className:`h-3.5 w-3.5`})})]},n)}),b?(0,H.jsxs)(`div`,{className:`flex items-start gap-1.5`,onBlur:e=>{let t=e.currentTarget;setTimeout(()=>{t.isConnected&&(t.contains(document.activeElement)||k())},0)},children:[(0,H.jsx)(`input`,{"aria-label":`New property name`,autoFocus:!0,className:U(`h-9 w-[110px] shrink-0 rounded-md border bg-background px-2 font-mono text-xs outline-none ring-0 transition`,b.key&&(!LB.test(b.key.trim())||O(b.key.trim(),-1))?`border-destructive`:`border-input focus:border-primary`),placeholder:`key`,value:b.key,spellCheck:!1,onChange:e=>C({...b,key:e.target.value}),onKeyDown:e=>{e.key===`Enter`&&k(),e.key===`Escape`&&C(null)}}),(0,H.jsx)(`input`,{"aria-label":`New property value`,className:U(BB,`min-w-0 flex-1`),placeholder:`value`,value:b.value,spellCheck:!1,onChange:e=>C({...b,value:e.target.value}),onKeyDown:e=>{e.key===`Enter`&&k(),e.key===`Escape`&&C(null)}}),(0,H.jsxs)(`select`,{"aria-label":`New property type`,className:`h-9 w-[78px] shrink-0 rounded-md border border-input bg-background px-1.5 text-[11px] text-muted-foreground outline-none ring-0 transition focus:border-primary`,value:b.type,onChange:e=>C({...b,type:e.target.value}),children:[(0,H.jsx)(`option`,{value:`text`,children:`Text`}),(0,H.jsx)(`option`,{value:`number`,children:`Number`}),(0,H.jsx)(`option`,{value:`list`,children:`List`})]}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Cancel new property`,className:`mt-2 shrink-0 rounded p-1 text-muted-foreground/60 transition hover:bg-muted hover:text-foreground`,onClick:()=>C(null),children:(0,H.jsx)(Te,{className:`h-3.5 w-3.5`})})]}):(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex h-8 flex-1 items-center justify-center gap-1.5 rounded-md border border-dashed border-border/70 text-[11px] font-medium text-muted-foreground transition hover:border-primary/50 hover:text-foreground`,onClick:()=>C({key:``,value:``,type:`text`}),children:[(0,H.jsx)(ft,{className:`h-3.5 w-3.5`}),`Add property`]}),!a.some(([e])=>e.toLowerCase()===`tags`||e.toLowerCase()===`category`||e.toLowerCase()===`tag`)&&(0,H.jsxs)(`button`,{type:`button`,"aria-label":`Add tag`,className:`flex h-8 items-center justify-center gap-1.5 rounded-md border border-dashed border-border/70 px-2.5 text-[11px] font-medium text-muted-foreground transition hover:border-primary/50 hover:text-foreground`,onClick:()=>w([...a,[`tags`,[]]]),children:[(0,H.jsx)(ft,{className:`h-3.5 w-3.5`}),`Tag`]})]})]})]})},HB=({props:e,isActive:t})=>{let n=e.source_url||e.website||``,r=e.title||e.label||`Link`,i=!t;return(0,H.jsxs)(`div`,{className:U(`h-full w-full flex flex-col bg-popover/90 backdrop-blur-sm border-l border-border overflow-auto`,i?`p-2`:`p-3`),children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,H.jsx)(`span`,{className:`rounded bg-blue-500/10 dark:bg-blue-900/30 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-blue-500 dark:text-blue-400`,children:`Link`}),(0,H.jsx)(`span`,{className:`truncate text-xs font-medium`,children:r})]}),(0,H.jsx)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:`mb-2 truncate text-[10px] text-blue-400 dark:text-blue-300 hover:underline`,title:n,children:n}),!i&&(0,H.jsx)(`div`,{className:`rounded-md border border-border/70 bg-background/70 p-2 text-[11px] text-muted-foreground`,children:`External link preview. Click the URL above to open in a new tab.`})]})},UB=({sectionId:e,section:t,view:n,isActive:r,widthPercent:i})=>{let a=(0,V.useMemo)(()=>t||TB(n,e),[n,e,t]),o=a?EB(n,a):``,s=(0,V.useMemo)(()=>ay(o),[o]);if(!a)return null;let c=kB(s);if(a.type===`embed`&&a.embed){let{type:e,url:t,label:n}=a.embed;if(e===`youtube`){let e=oy(t);if(e)return(0,H.jsx)(WB,{videoId:e,title:n,isActive:r})}return(0,H.jsxs)(`div`,{className:`h-full w-full flex flex-col bg-popover/90 backdrop-blur-sm border-l border-border p-3 overflow-auto`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-mono px-1.5 py-0.5 rounded bg-blue-500/10 dark:bg-blue-900/30 text-blue-500 dark:text-blue-400 uppercase font-bold`,children:a.embed.isImage?`IMAGE`:`LINK`}),(0,H.jsx)(`span`,{className:`text-xs font-medium truncate`,children:n||`Untitled`})]}),(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground truncate mb-3`,children:t}),a.embed.isImage&&(0,H.jsx)(`img`,{src:t,alt:n,className:`w-full h-auto rounded border border-border shadow-sm bg-muted/20`})]})}if(c===`effort`)return(0,H.jsx)(FB,{section:a,view:n,isActive:r,widthPercent:i,rawContent:o});if(c===`link`)return(0,H.jsx)(HB,{props:s,isActive:r});if(c===`youtube`){let e=s.url||s.link||``,t=s.title||`YouTube Video`,n=oy(e);if(n)return(0,H.jsx)(WB,{videoId:n,title:t,isActive:r})}return(0,H.jsx)(VB,{section:a,view:n,isActive:r,widthPercent:i,rawContent:o})},WB=({videoId:e,title:t,isActive:n})=>(0,H.jsxs)(`div`,{className:U(`h-full w-full flex flex-col`,n?`bg-popover/90 backdrop-blur-sm border-l border-border`:`bg-black dark:bg-black`),children:[(0,H.jsx)(`div`,{className:`relative flex-1 min-h-0`,children:(0,H.jsx)(`iframe`,{className:`absolute inset-0 w-full h-full border-0`,src:`https://www.youtube-nocookie.com/embed/${encodeURIComponent(e)}`,title:t,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:!0,loading:`lazy`})}),n&&t&&t!==`YouTube Video`&&(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-muted-foreground truncate border-t border-border bg-popover/90`,children:t})]});function GB(e,t,n,r){let[i,a]=(0,V.useState)([]),[o,s]=(0,V.useState)(!0),c=KM(e=>e.currentEntry),l=KM(e=>e.getNote),u=n??c?.extendedResults;return(0,V.useEffect)(()=>{if(!e||!t){a([]),s(!1);return}let n=!1;async function r(){if(Array.isArray(u)){let r=u.filter(n=>n.noteId===e&&n.blockId===t);if(r.length>0&&!n){a(r.sort((e,t)=>t.createdAt-e.createdAt)),s(!1);return}}if(typeof l!=`function`){n||(a([]),s(!1));return}try{let r=await l(e,{projection:`history-detail`,resultSelection:{mode:`all-for-section`,blockId:t}});n||a((r?.extendedResults??[]).sort((e,t)=>t.createdAt-e.createdAt))}catch{n||a([])}finally{n||s(!1)}}return r(),()=>{n=!0}},[e,t,u,l,r]),{results:i,loading:o}}function KB(e){let t=e.metrics?.find(e=>e.type===G.Elapsed);return t?.value!==void 0&&typeof t.value==`number`?t.value:0}function qB(e,t){let n=[],r=0;for(let i of e){let e=(i.data?.logs??[]).filter(e=>e.outputType===`segment`&&(e.line??e.sourceStatementId)===t),a=e.reduce((e,t)=>Math.max(e,t.stackLevel),0),o=e.filter(e=>e.stackLevel===a);if(o.length===0)continue;let s=o.reduce((e,t)=>e+KB(t),0);r+=o.length,n.push({createdAt:i.createdAt,hitCount:o.length,elapsedMs:s})}return{lineNumber:t,resultCount:n.length,totalHits:r,entries:n}}function JB(e,t){return(0,V.useMemo)(()=>{if(t===void 0||e.length===0)return null;let n=qB(e,t);return n.resultCount>0?n:null},[e,t])}function YB(e,t){if(t){t(e.action,e);return}e.action.type===`call`&&e.action.handler()}var XB=({primary:e,secondary:t,size:n=`default`,variant:r=`default`,className:i,labelClassName:a,onAction:o})=>{let s=e.icon,c=t.icon,l=r===`primary`,u=n===`xs`?`h-11 min-w-11 justify-center px-0 sm:h-auto sm:min-h-[44px] sm:min-w-0 sm:px-2 sm:py-0.5 sm:justify-start`:n===`sm`?`min-h-[44px] px-2.5 py-1.5`:`min-h-[44px] px-3 py-2`,d=n===`xs`?`h-11 w-11 px-0 sm:h-auto sm:min-h-[44px] sm:min-w-[44px] sm:w-auto sm:px-1.5 sm:py-0.5`:n===`sm`?`min-h-[44px] min-w-[44px] px-2 py-1.5`:`min-h-[44px] min-w-[44px] px-2.5 py-2`,f=n===`xs`?`h-11 min-w-11 justify-center px-0 sm:h-auto sm:min-h-[44px] sm:min-w-0 sm:pl-5 sm:pr-4 sm:py-2 sm:justify-start`:`min-h-[44px] pl-5 pr-4 py-2`,p=n===`xs`?`h-11 w-11 px-0 sm:h-auto sm:min-h-[44px] sm:min-w-[44px] sm:w-auto sm:px-3 sm:py-2`:`min-h-[44px] min-w-[44px] px-3 py-2`;return(0,H.jsxs)(`div`,{className:U(`inline-flex items-stretch overflow-hidden`,l?`rounded-full shadow-lg shadow-primary/25`:`rounded-lg border border-border/70 bg-muted shadow-sm hover:shadow-md transition-shadow`,n===`xs`?`text-[10px]`:n===`sm`?`text-[11px]`:`text-xs`,i),children:[(0,H.jsxs)(`button`,{type:`button`,title:e.label,"aria-label":e.label,onClick:()=>YB(e,o),className:U(`flex items-center gap-2 transition-colors active:scale-95`,n===`xs`&&`gap-0 sm:gap-2`,l?U(`bg-primary text-primary-foreground hover:bg-primary/90 font-black uppercase tracking-widest`,f):U(`hover:bg-accent hover:text-accent-foreground text-muted-foreground font-medium`,u)),children:[s&&(0,H.jsx)(s,{className:U(`shrink-0`,l?`size-4 fill-current sm:size-3`:`size-4 sm:h-4 sm:w-4`)}),(0,H.jsx)(`span`,{className:a,children:e.label})]}),(0,H.jsx)(`div`,{className:U(`self-stretch`,l?`w-px bg-primary-foreground/20 my-2 sm:my-1`:`w-px bg-border/60`)}),(0,H.jsx)(`button`,{type:`button`,title:t.label,"aria-label":t.label,onClick:()=>YB(t,o),className:U(`flex items-center justify-center transition-colors active:scale-95`,l?U(`bg-primary text-primary-foreground hover:bg-primary/90`,p):U(`hover:bg-accent hover:text-accent-foreground text-muted-foreground`,d)),children:c?(0,H.jsx)(c,{className:U(`shrink-0`,l?`size-4 sm:size-3.5`:`size-4 sm:h-4 sm:w-4`)}):(0,H.jsx)(`span`,{className:`sr-only`,children:t.label})})]})},ZB=new _s;function QB(e,t){let{sections:n}=e.state.field(wS);return n.find(e=>e.id===t)??null}function $B(e,t){if(t.contentFrom===void 0||t.contentTo===void 0)return[];let n=e.state.doc.sliceString(t.contentFrom,t.contentTo);if(!n.trim())return[];try{return ZB.read(n,t.sport).statements}catch{return[]}}function eV(e,t,n){if(!e.length)return null;let r=n-t.startLine;return e.find(e=>e.meta?.line===r)??null}function tV(e){if(!Number.isFinite(e)||e<=0)return`--:--`;let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}:${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`:`${r}:${i.toString().padStart(2,`0`)}`}var nV={[G.Duration]:{label:`Timer`,icon:`⏱`,color:`bg-metric-time/10 text-metric-time`},[G.Rep]:{label:`Reps`,icon:`✕`,color:`bg-metric-rep/10 text-metric-rep`},[G.Effort]:{label:`Exercise`,icon:`🏋`,color:`bg-metric-effort/10 text-metric-effort`},[G.Rounds]:{label:`Rounds`,icon:`↻`,color:`bg-metric-rounds/10 text-metric-rounds`},[G.Distance]:{label:`Distance`,icon:`📏`,color:`bg-metric-distance/10 text-metric-distance`},[G.Resistance]:{label:`Weight`,icon:`⚖`,color:`bg-metric-resistance/10 text-metric-resistance`},[G.Action]:{label:`Action`,icon:`⚡`,color:`bg-metric-action/10 text-metric-action`}};function rV(e){return e.metrics.filter(e=>e.type!==G.Sound&&e.type!==G.System).map(e=>{let t=nV[e.type],n=e.image??(e.value===void 0?`—`:String(e.value));return{label:t?.label??String(e.type),value:n,icon:t?.icon??`•`,color:t?.color??`bg-muted text-muted-foreground`}})}var iV=({summary:e})=>{let t=e.entries.slice(0,3);return(0,H.jsxs)(`div`,{className:`px-3 py-2 border-t border-border/30 bg-muted/20`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 mb-1.5`,children:[(0,H.jsx)(v,{className:`h-3 w-3 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider`,children:`History`}),(0,H.jsxs)(`span`,{className:`ml-auto text-[10px] text-muted-foreground`,children:[e.totalHits,`× across `,e.resultCount,` run`,e.resultCount===1?``:`s`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[t.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-1 px-1.5 py-0.5 rounded bg-background/60 border border-border/40 text-[10px]`,children:[(0,H.jsx)(`span`,{className:`font-mono font-medium text-foreground`,children:tV(e.elapsedMs)}),e.hitCount>1&&(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[`×`,e.hitCount]}),(0,H.jsx)(`span`,{className:`text-muted-foreground/60`,children:uM(new Date(e.createdAt))})]},e.createdAt)),e.entries.length>3&&(0,H.jsxs)(`span`,{className:`text-[10px] text-muted-foreground self-center`,children:[`+`,e.entries.length-3,` more`]})]})]})};function aV(e,t){let n=t.contentFrom!==void 0&&t.contentTo!==void 0?e.state.doc.sliceString(t.contentFrom,t.contentTo):``,r=t.type===`time`||t.type===`log`?t.type:`time`;return{id:t.id,contentId:t.contentId,dialect:r,sport:t.sport,startLine:t.startLine-1,endLine:t.endLine-1,content:n,state:`idle`,version:1,createdAt:Date.now(),widgetIds:{}}}function oV(e){return function({className:t}){return V.isValidElement(e)?V.cloneElement(e,{className:U(e.props.className,t)}):(0,H.jsx)(`span`,{className:U(`flex items-center`,t),children:e})}}var sV=({cmd:e,block:t})=>{let[n,r]=(0,V.useState)(!1),i=(0,V.useCallback)(async()=>{!e.onSplitClick||n||(await e.onSplitClick(t),r(!0),setTimeout(()=>r(!1),1500))},[e,t,n]),a=(0,V.useMemo)(()=>oV(e.icon),[e.icon]),o=(0,V.useMemo)(()=>oV(n?e.splitSuccessIcon??e.splitIcon:e.splitIcon),[n,e.splitIcon,e.splitSuccessIcon]),s=(0,V.useMemo)(()=>({id:e.id,label:e.label,icon:a,action:{type:`call`,handler:()=>e.onClick(t)}}),[e,t,a]),c=(0,V.useMemo)(()=>({id:`${e.id}-split`,label:`Copy link`,icon:o,action:{type:`call`,handler:i}}),[e.id,o,i]),l=(0,V.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]);return e.onSplitClick?(0,H.jsx)(`div`,{onClick:l,onMouseDown:l,onPointerDown:l,children:(0,H.jsx)(XB,{primary:s,secondary:c,size:`xs`,variant:e.primary?`primary`:`default`,className:`rounded-full sm:rounded-sm`,labelClassName:`sr-only sm:not-sr-only sm:inline`})}):(0,H.jsxs)(W,{variant:e.primary?`default`:`secondary`,className:U(`h-11 w-11 rounded-full p-0 text-[10px] font-medium shadow-sm gap-0 sm:h-auto sm:min-h-[44px] sm:w-auto sm:gap-1 sm:rounded-sm sm:px-2 sm:py-0.5`,!e.primary&&`border border-border/50`),title:e.label,"aria-label":e.label,onClick:n=>{l(n),e.onClick(t)},onMouseDown:l,onPointerDown:l,children:[(0,H.jsx)(`span`,{className:`flex items-center justify-center size-4 sm:size-3`,children:e.icon}),(0,H.jsx)(`span`,{className:`sr-only sm:not-sr-only sm:inline`,children:e.label})]})},cV=({commands:e,section:t,view:n,compact:r})=>{if(!e.length)return null;let i=aV(n,t);return r?(0,H.jsx)(`div`,{className:`flex flex-row items-center gap-1 p-0 sm:p-1.5`,children:e.map(e=>(0,H.jsx)(sV,{cmd:e,block:i},e.id))}):(0,H.jsx)(`div`,{className:`flex items-center gap-1.5 p-2 border-t border-border/50 flex-wrap`,children:e.map(e=>(0,H.jsx)(sV,{cmd:e,block:i},e.id))})},lV=({noteId:e,sectionId:t,view:n,isActive:r,cursorLine:i,hoverLine:a,stickyTopOffset:o,isPanelHovered:s,lineDocY:c,rect:l,docVersion:u,commands:d,extendedResults:f})=>{let p=e||n.state.noteId||`current`,m=(0,V.useMemo)(()=>QB(n,t),[n,t,u]),{results:h}=GB(p,t,f,m?.contentId),g=(0,V.useMemo)(()=>m?$B(n,m):[],[n,m?.id,u]),_=V.useRef(null),v=m&&a!==void 0&&a>=m.startLine&&a<=m.endLine;v&&a!==void 0&&(_.current=a);let y=v?a:s?_.current??null:null,b=r?i:y??i,x=!(m&&(b===m.startLine||b===m.endLine))&&(r||y!==null),S=(0,V.useMemo)(()=>m&&x?eV(g,m,b):null,[m,b,x,g]),C=(0,V.useMemo)(()=>S?g.filter(e=>e.meta?.line===S.meta.line).flatMap(rV):[],[S,g]),w=JB(h,S?.meta?.line);if(!m)return null;let T=S?.meta?.raw??``,E=b-m.startLine,D=typeof window<`u`&&window.matchMedia(`(max-width: 639px)`).matches?44:28,O;if(c!==void 0){let e=c-l.top-100,t=o+D+4,n=l.height-200;O=Math.max(t,Math.min(e,Math.max(t,n)))}else O=o+D+4;return(0,H.jsxs)(`div`,{className:`relative w-full h-full`,style:{pointerEvents:`none`},children:[(0,H.jsx)(`div`,{className:`absolute inset-x-0 flex items-center justify-end gap-1 px-2 pointer-events-auto
138
+ bg-background/70 backdrop-blur-sm border-l border-b border-border/40 rounded-bl-md`,style:{top:o,height:D},children:(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[h.length>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-0.5 rounded-sm text-[10px] font-medium bg-primary/10 text-primary border border-primary/20 shadow-sm`,children:[(0,H.jsx)(Ae,{className:`h-3 w-3`}),(0,H.jsx)(`span`,{children:h.length})]}),(0,H.jsx)(`div`,{className:`h-3 w-[1px] bg-border/40 mx-0.5`})]}),(0,H.jsx)(cV,{commands:d,section:m,view:n,compact:!0})]})}),x&&(0,H.jsxs)(`div`,{className:`absolute inset-x-0 flex flex-col bg-popover/95 backdrop-blur-md
139
+ border border-border/80 shadow-xl rounded-lg overflow-hidden pointer-events-auto`,style:{top:O,maxHeight:200},children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 bg-muted/40 border-b border-border/50 shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-mono px-2 py-0.5 rounded bg-metric-time/10 text-metric-time uppercase tracking-wider font-semibold`,children:m.type}),(0,H.jsxs)(`div`,{className:`flex items-center min-w-0 gap-2`,children:[(0,H.jsxs)(`span`,{className:`text-xs text-muted-foreground/60`,children:[`L`,E]}),(0,H.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,H.jsx)(`span`,{className:`text-xs font-mono text-foreground/90 truncate font-medium`,title:T,children:T||(0,H.jsx)(`span`,{className:`italic text-muted-foreground`,children:`—`})})]})]}),(0,H.jsx)(`div`,{className:`px-3 py-2.5 min-h-0 overflow-auto`,children:C.length>0?(0,H.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:C.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-1 rounded-md text-sm font-semibold ${e.color}`,title:e.label,children:[(0,H.jsx)(`span`,{className:`text-base leading-none`,children:e.icon}),(0,H.jsx)(`span`,{className:`font-mono tracking-tight`,children:e.value})]},t))}):(0,H.jsx)(`span`,{className:`text-xs italic text-muted-foreground`,children:`No metrics on this line`})}),w&&(0,H.jsx)(iV,{summary:w}),(0,H.jsx)(`div`,{className:`border-t border-border/40 shrink-0`,children:(0,H.jsx)(cV,{commands:d,section:m,view:n})})]})]})},uV=({sectionId:e,widgetName:t,view:n,registry:r,docVersion:i})=>{let{rawContent:a,config:o}=(0,V.useMemo)(()=>{let t=n.state.field(wS).sections.find(t=>t.id===e),r=t?.contentFrom!==void 0&&t?.contentTo!==void 0?n.state.doc.sliceString(t.contentFrom,t.contentTo).trim():``,i={};if(r)try{i=JSON.parse(r)}catch{}return{rawContent:r,config:i}},[n,e,i]),s=r.get(t);return s?(0,H.jsx)(`div`,{className:`h-full w-full overflow-hidden rounded-l-md border-l border-border bg-background shadow-sm`,children:(0,H.jsx)(s,{config:o,rawContent:a,sectionId:e})}):(0,H.jsxs)(`div`,{className:`flex h-full w-full items-center justify-center rounded-l-md border-l border-border bg-muted/60 p-4 text-xs text-muted-foreground`,children:[(0,H.jsxs)(`span`,{className:`font-mono`,children:[`widget:`,t]}),(0,H.jsx)(`span`,{className:`ml-2 opacity-60`,children:`— not registered`})]})};function dV(e,t,n,r,i){switch(t.type){case`fixed-field`:return fV(e,t);case`metric-type`:return pV(e,t);case`derived`:return mV(e,t,n,r,i);case`fallback`:return hV(e,t,n,r,i);default:return}}function fV(e,t){return e[t.field]}function pV(e,t){return e.cells.get(t.metricType)}function mV(e,t,n,r,i){let a=new Map;if(t.dependencies&&r)for(let o of t.dependencies){if(i?.includes(o))throw Error(`Circular dependency detected in column '${o}': ${(i??[]).join(` -> `)} -> ${o}`);let t=r.get(o);if(t){let s=dV(e,t.source,n,r,[...i??[],o]);a.set(o,s)}}let o={...n,allRows:n?.allRows??[e],rowIndex:n?.rowIndex??0,columnDef:n?.columnDef??{id:`unknown`,label:``,source:t,format:{type:`text`}},dependencies:a,...t.context};return t.compute(e,o)}function hV(e,t,n,r,i){return gV(e,t,n,r,i)}function gV(e,t,n,r,i){if(!(!t.sources||t.sources.length===0))switch(t.semantics){case`first-present`:return _V(e,t.sources,n,r,i);case`all-present-joined`:return vV(e,t.sources,t.joinString,n,r,i);case`all-present-combined`:return yV(e,t.sources,n,r,i);default:return}}function _V(e,t,n,r,i){for(let a of t){let t=dV(e,a,n,r,i);if(t!=null)return t}}function vV(e,t,n,r,i,a){let o=[];for(let n of t){let t=dV(e,n,r,i,a);if(t==null)return;o.push(t)}let s=n??` `;return o.map(e=>xV(e)).join(s)}function yV(e,t,n,r,i){let a=[];for(let o of t){let t=dV(e,o,n,r,i);if(t==null)return;a.push(t)}return a}function bV(e){if(e==null)return``;let t=Array.isArray(e)?e:e instanceof K?e.toArray():[];if(t.length===0)return``;let n=t[0];if(typeof n==`object`&&n){if(`image`in n&&typeof n.image==`string`)return n.image;if(`value`in n&&n.value!==void 0)return String(n.value)}return String(n)}function xV(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);if(typeof e==`object`&&`metrics`in e){let t=bV(e.metrics);if(t.length>0)return t}return String(e)}function SV(e,t,n,r){if(!t.sort)return``;let i=dV(e,t.source,n,r);return(t.sort.type===`custom`?typeof i==`number`||typeof i==`string`?i:String(i??``):t.sort.extractor(i))??``}function CV(e,t){if(typeof e==`number`&&typeof t==`number`)return Number.isNaN(e)&&Number.isNaN(t)?0:Number.isNaN(e)?1:Number.isNaN(t)?-1:e-t;let n=String(e??``),r=String(t??``),i=parseFloat(n),a=parseFloat(r);return!Number.isNaN(i)&&!Number.isNaN(a)&&n===String(i)&&r===String(a)?i-a:n.localeCompare(r)}function wV(e,t,n,r){if(!t.graph)return;let i=dV(e,t.source,n,r);return t.graph.extractor(i)}function TV(e,t,n,r){if(!t.filter)return``;let i=dV(e,t.source,n,r);return t.filter.extractor(i)??``}function EV(e,t,n,r,i){if(!n||n.trim().length===0||!t.filter)return!0;let a=TV(e,t,r,i),o=t.filter.caseInsensitive===!1?n.trim():n.trim().toLowerCase(),s=t.filter.caseInsensitive===!1?a:a.toLowerCase();return t.filter.matcher?t.filter.matcher(s,o):s.includes(o)}var DV=({metric:e})=>{let t=e.origin===`hinted`||e.image===`?`,n=(0,V.useMemo)(()=>WL(io.present(e,`review-grid-cell`)),[e]);return(0,H.jsxs)(`span`,{className:[`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium border transition-all`,t?`bg-warning/10 border-warning/40 text-warning animate-pulse-opacity`:`${n.colorClasses} ${n.originClasses}`].join(` `),title:t?`Missing value - click to fill`:n.tooltip,children:[t&&(0,H.jsx)(`span`,{className:`mr-0.5 text-[10px]`,children:`◉`}),n.label,n.userEntered&&!t&&(0,H.jsx)(`span`,{className:`text-[10px] opacity-70 ml-0.5`,children:`👤`})]})},OV=({columnDef:e,row:t,allRows:n,rowIndex:r,indent:i=0,onDoubleClick:a,className:o,style:s,definitionMap:c})=>{let l=(0,V.useRef)(null),u=(0,V.useMemo)(()=>{if(!(!n||r===void 0))return{allRows:n,rowIndex:r,columnDef:e,dependencies:new Map}},[n,r,e]),d=(0,V.useMemo)(()=>dV(t,e.source,u,c),[t,e.source,u,c]),f=e.source.type===`metric-type`,p=(0,V.useCallback)(n=>{if(n.stopPropagation(),f&&a&&l.current){let n=l.current.getBoundingClientRect();a(t.sourceBlockKey,e.source.metricType,n)}},[f,e.source,t.sourceBlockKey,a]),m=(0,V.useMemo)(()=>kV(d,e.format,i,t),[d,e.format,i,t]);return(0,H.jsx)(`td`,{ref:l,className:U(`py-1 px-2`,f&&`cursor-cell`,o),style:s,onDoubleClick:p,children:m})};function kV(e,t,n,r){if(e==null)return(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[HV(n),(0,H.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]});switch(t.type){case`text`:return AV(e,t,n);case`time`:return jV(e,t);case`number`:return MV(e,t);case`badge`:return NV(e,t);case`pill`:return PV(e,t);case`combined`:return IV(e,t,n);case`custom`:return RV(e,t,r);default:return BV(e,n)}}function AV(e,t,n){let r=t.transform?t.transform(e):UV(e);return(0,H.jsxs)(`span`,{className:U(`inline-flex items-center gap-1`,t.className),children:[HV(n),r]})}function jV(e,t){let n=WV(e);if(n==null||!Number.isFinite(n))return(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r;switch(t.style){case`long`:r=vL(n);break;case`precise`:r=`${n.toFixed(2)}s`;break;default:r=_L(n)}return t.transform&&(r=t.transform(r)),(0,H.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:r})}function MV(e,t){let n=WV(e);if(n==null||!Number.isFinite(n))return(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r=t.decimals??0,i=n.toFixed(r)+(t.unit??``);return t.transform?(0,H.jsx)(`span`,{children:t.transform(i)}):(0,H.jsx)(`span`,{children:i})}function NV(e,t){let n=t.styleResolver(e),r=t.textResolver(e);return(0,H.jsxs)(`span`,{className:U(`inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium`,n.className),title:n.title,children:[n.icon&&(0,H.jsx)(`span`,{className:`mr-0.5`,children:n.icon}),r]})}function PV(e,t){let n=t.transform?t.transform(e):UV(e),r=t.backgroundColor??`bg-muted`,i=t.borderRadius??`rounded`;return(0,H.jsx)(`span`,{className:U(`inline-block px-1.5 py-0.5 text-xs font-medium`,r,i),children:n})}var FV={primary:`text-sm font-semibold text-foreground`,secondary:`text-xs text-muted-foreground`,tertiary:`text-[11px] text-muted-foreground opacity-80`};function IV(e,t,n,r){let[i,a,o]=Array.isArray(e)?e:[e],s=i===void 0?null:LV(i,t.primaryFormat??{type:`text`},r,`primary`),c=a===void 0?null:LV(a,t.secondaryFormat??{type:`text`},r,`secondary`),l=o===void 0?null:LV(o,t.tertiaryFormat??{type:`text`},r,`tertiary`),u=t.layout===`horizontal`;return(0,H.jsxs)(`div`,{className:U(`inline-flex`,u?`flex-row items-center gap-1`:`flex-col items-start gap-0.5`,t.containerClassName),children:[HV(n),s,c&&(0,H.jsxs)(H.Fragment,{children:[u&&t.separator&&(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),c]}),l&&(0,H.jsxs)(H.Fragment,{children:[u&&t.separator&&(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),l]})]})}function LV(e,t,n,r){let i=kV(e,t,0,n);return r?(0,H.jsx)(`span`,{className:U(`inline-flex items-center`,FV[r]),children:i}):i}function RV(e,t,n){let r=n?{...t.context,row:n}:t.context;return t.render(e,r)}function zV(e){let t=e?.metrics;if(!t)return[];if(Array.isArray(t))return t;if(typeof t==`object`&&t&&`toArray`in t){let e=t;if(typeof e.toArray==`function`)return e.toArray()}return[]}function BV(e,t){return e?.metrics?VV(e,t):(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[HV(t),UV(e)]})}function VV(e,t){let n=zV(e);return n.length===0?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[HV(t),(0,H.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]}):(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1 items-center`,children:[HV(t),n.map((e,t)=>(0,H.jsx)(DV,{metric:e},t))]})}function HV(e){return e<=0?null:(0,H.jsx)(`div`,{className:`flex-shrink-0 mr-1 border-l-2 border-muted h-4`,style:{width:`${e*1.25}rem`,marginLeft:`2px`}})}function UV(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=zV(e);if(t.length>0){let e=t[0];if(e?.image)return e.image;if(e?.value!==void 0)return String(e.value)}return String(e)}function WV(e){if(e==null)return;if(typeof e==`number`)return e;if(typeof e==`string`){let t=parseFloat(e);if(!Number.isNaN(t))return t}let t=zV(e);if(t.length>0&&typeof t[0]?.value==`number`)return t[0].value}var GV=e=>e;function KV(e){let t=e?.metrics;if(!t)return[];if(Array.isArray(t))return t;if(typeof t==`object`&&t&&`toArray`in t){let e=t;if(typeof e.toArray==`function`)return e.toArray()}return[]}function qV(e){let t=KV(e);if(t.length===0)return;let n=t[0];return typeof n?.value==`number`?n.value:n?.image?n.image:String(n?.value??``)}function JV(e){let t=KV(e);for(let e of t)if(typeof e?.value==`number`)return e.value}function YV(e){return KV(e).map(e=>e.image??String(e.value??``)).join(`, `)}function XV(e){return e==null?``:Array.isArray(e)?e.map(e=>XV(e)).filter(Boolean).join(` — `):typeof e==`string`?e:typeof e==`number`?String(e):YV(e)}function ZV(e){switch(e){case G.Duration:case G.Rep:case G.Distance:case G.Rounds:case G.Resistance:case G.Increment:case G.Metric:case G.Volume:case G.Intensity:case G.Load:case G.Work:case G.CurrentRound:case G.Calculated:return!0;default:return!1}}function QV(e){switch(e){case G.Duration:return`s`;case G.Rep:return`reps`;case G.Distance:return`m`;case G.Rounds:return`rounds`;case G.Resistance:return`kg`;case G.Increment:return`Δ`;case G.Calculated:case G.Custom:return``;default:return``}}function $V(e,t){let n=eo(e),r=LL(e)??void 0,i=t?.graphable??ZV(e);return{id:e,label:n,icon:r,source:{type:`metric-type`,metricType:e},format:{type:`custom`,render:e=>VV(e,0)},sort:ZV(e)?{type:`numeric`,extractor:e=>JV(e)}:{type:`text`,extractor:e=>{let t=qV(e);return t===void 0?void 0:String(t)}},graph:i?{extractor:e=>JV(e),axisLabel:n,unit:QV(e)}:void 0,filter:{extractor:e=>YV(e),caseInsensitive:!0},meta:{defaultVisible:t?.defaultVisible??!0,debugOnly:t?.debugOnly,tags:[e]}}}function eH(e){switch(e){case`segment`:return`bg-blue-100 text-blue-800 dark:bg-blue-900/50 dark:text-blue-200`;case`milestone`:return`bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200`;case`system`:return`bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400`;case`event`:return`bg-purple-100 text-purple-800 dark:bg-purple-900/50 dark:text-purple-200`;case`group`:return`bg-indigo-100 text-indigo-800 dark:bg-indigo-900/50 dark:text-indigo-200`;case`load`:return`bg-green-100 text-green-800 dark:bg-green-900/50 dark:text-green-200`;case`compiler`:return`bg-pink-100 text-pink-800 dark:bg-pink-900/50 dark:text-pink-200`;default:return`bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300`}}function tH(e,t){if(!e||e.length===0)return``;let n=e=>_L(e);if(t===0)return n(e[0].started);let r=n(e[0].started),i=e[e.length-1];if(i.ended===void 0)return r;let a=n(i.ended);return r===a?r:`${r} — ${a}`}function nH(e,t=!0){if(e===void 0||e===0)return``;let n=new Date(e),r=n.getHours().toString().padStart(2,`0`),i=n.getMinutes().toString().padStart(2,`0`),a=n.getSeconds().toString().padStart(2,`0`);return t?`${r}:${i}:${a}.${n.getMilliseconds().toString().padStart(3,`0`)}`:`${r}:${i}:${a}`}function rH({value:e}){let t=e.match(/^(-?)(\d+)(:\d{2})(?::\d{2})?(\.\d+)?$/);if(!t)return(0,H.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:e});let[,n,r,i,a,o]=t,s=i.slice(1);return(0,H.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap inline-flex items-baseline`,children:[n&&(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:n}),(0,H.jsx)(`span`,{className:`font-semibold text-foreground`,children:r}),(0,H.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[`:`,s]}),a&&(0,H.jsx)(`span`,{className:`text-muted-foreground/40`,children:a}),o&&(0,H.jsx)(`span`,{className:`text-muted-foreground/30 text-[10px]`,children:o})]})}function iH({elapsed:e,duration:t}){let n=_L(e);return(0,H.jsxs)(`span`,{className:`inline-flex items-baseline gap-0.5`,children:[(0,H.jsx)(rH,{value:n}),t!==void 0&&t>0&&t!==e&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{className:`text-muted-foreground/40 mx-0.5`,children:`/`}),(0,H.jsx)(`span`,{className:`opacity-60`,children:(0,H.jsx)(rH,{value:_L(t)})})]})]})}var aH={id:`#`,label:`#`,source:{type:`derived`,compute:e=>({index:e.index,outputType:e.outputType,sourceBlockKey:e.sourceBlockKey})},format:{type:`custom`,render:e=>{let{index:t,outputType:n,sourceBlockKey:r}=e??{};return(0,H.jsx)(`span`,{className:U(`font-mono text-[11px] w-8 text-right inline-block`,eH(n)),title:`Type: ${n}\nBlock: ${r}`,children:t})}},sort:{type:`numeric`,extractor:e=>GV(e)?.index||0},meta:{tags:[`layout`],defaultVisible:!0,width:`40px`,resizable:!1}},oH={id:`timestamp`,label:`Timestamp`,source:{type:`fixed-field`,field:`absoluteStartTime`},format:{type:`custom`,render:(e,t)=>{let n=e,r=GV(t)?.hideMs!==!1;return(0,H.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-24 whitespace-nowrap`,children:nH(n,r)})},context:{hideMs:!1}},sort:{type:`numeric`,extractor:e=>GV(e)?.absoluteStartTime??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},sH={id:`spans`,label:`Time`,source:{type:`derived`,compute:e=>({spans:e.spans,duration:e.duration})},format:{type:`custom`,render:e=>{let{spans:t,duration:n}=e??{};return(0,H.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-40 whitespace-nowrap`,children:tH(t,n)})}},sort:{type:`numeric`,extractor:e=>(GV(e)?.spans)?.[0]?.started??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},cH={id:`timeSpan`,label:`Time`,source:{type:`derived`,compute:e=>({timestamp:e.absoluteStartTime,elapsed:e.elapsed,duration:e.duration})},format:{type:`custom`,render:e=>{let{timestamp:t,elapsed:n,duration:r}=e??{};return n===void 0?(0,H.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`}):(0,H.jsxs)(`div`,{className:`flex flex-col items-start gap-0 leading-tight`,children:[t!==void 0&&t>0&&(0,H.jsx)(`span`,{className:`text-muted-foreground/50 font-mono text-[10px] whitespace-nowrap`,children:nH(t,!1)}),(0,H.jsx)(iH,{elapsed:n,duration:r})]})}},sort:{type:`numeric`,extractor:e=>GV(e)?.elapsed??0},graph:{extractor:e=>GV(e)?.elapsed,axisLabel:`Elapsed`,unit:`s`},filter:{extractor:e=>{let{timestamp:t,elapsed:n,duration:r}=e??{},i=[];return t!==void 0&&t>0&&i.push(nH(t,!1)),n!==void 0&&i.push(_L(n)),r!==void 0&&r>0&&r!==n&&i.push(_L(r)),i.join(` `)},caseInsensitive:!0},meta:{tags:[`timing`,`compound`],defaultVisible:!0,width:`100px`,subsumes:[`duration`,`elapsedTotal`]}},lH={id:`blockKey`,label:`Block`,source:{type:`fixed-field`,field:`sourceBlockKey`},format:{type:`text`,className:`truncate max-w-[160px] text-sm`},sort:{type:`text`,extractor:e=>GV(e)?.sourceBlockKey??``},filter:{extractor:e=>GV(e)?.sourceBlockKey??``,caseInsensitive:!0},meta:{tags:[`layout`],defaultVisible:!1}},uH={id:`outputType`,label:`Type`,source:{type:`fixed-field`,field:`outputType`},format:{type:`custom`,render:e=>{let t=String(e??``);return(0,H.jsx)(`span`,{className:U(`text-xs px-1.5 py-0.5 rounded font-medium`,eH(t)),children:t})}},sort:{type:`text`,extractor:e=>GV(e)?.outputType??``},filter:{extractor:e=>GV(e)?.outputType??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1}},dH={id:`stackLevel`,label:`Depth`,source:{type:`fixed-field`,field:`stackLevel`},format:{type:`text`,className:`text-muted-foreground font-mono text-xs text-center w-12`},sort:{type:`numeric`,extractor:e=>GV(e)?.stackLevel??0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},fH={id:`elapsedTotal`,label:`Elapsed`,source:{type:`derived`,compute:e=>({elapsed:e.elapsed,total:e.total})},format:{type:`custom`,render:e=>{let{elapsed:t,total:n}=e??{};if(t===void 0||n===void 0)return``;let r=t===n?_L(t):`${_L(t)} / ${_L(n)}`;return(0,H.jsx)(`span`,{className:`text-foreground font-mono text-xs text-right w-32 whitespace-nowrap`,children:r})}},sort:{type:`numeric`,extractor:e=>GV(e)?.elapsed??0},graph:{extractor:e=>GV(e)?.elapsed,axisLabel:`Elapsed`,unit:`s`,color:`#14b8a6`},meta:{tags:[`timing`],defaultVisible:!1}},pH={id:`completionReason`,label:`Reason`,source:{type:`fixed-field`,field:`completionReason`},format:{type:`text`,className:`text-muted-foreground text-xs truncate max-w-[120px]`},sort:{type:`text`,extractor:e=>GV(e)?.completionReason??``},filter:{extractor:e=>GV(e)?.completionReason??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},mH=$V(G.Effort,{defaultVisible:!1}),hH=$V(G.Duration,{debugOnly:!0}),gH=$V(G.Rep),_H=$V(G.Rounds,{defaultVisible:!1}),vH=$V(G.Distance),yH=$V(G.Resistance),bH=$V(G.Action),xH=$V(G.Increment),SH=$V(G.Metric),CH=$V(G.Calculated),wH=$V(G.Custom,{defaultVisible:!1}),TH=$V(G.Group,{defaultVisible:!1}),EH=$V(G.System,{defaultVisible:!1}),DH=$V(G.Label,{defaultVisible:!1}),OH=$V(G.Text),kH=$V(G.CurrentRound,{defaultVisible:!1}),AH=$V(G.Volume),jH=$V(G.Intensity),MH=$V(G.Load),NH=$V(G.Work),PH=[aH,cH,oH,sH,lH,uH,dH,fH,pH,{id:`exercise`,label:`Exercise`,icon:LL(G.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`fallback`,semantics:`all-present-combined`,sources:[{type:`metric-type`,metricType:G.Effort},{type:`metric-type`,metricType:G.Text}]},{type:`metric-type`,metricType:G.Text},{type:`metric-type`,metricType:G.Label},{type:`metric-type`,metricType:G.Effort}]},format:{type:`combined`,layout:`vertical`,primaryFormat:{type:`text`,className:`font-medium text-foreground`},secondaryFormat:{type:`text`,className:`text-muted-foreground text-xs`},containerClassName:`items-start`},sort:{type:`text`,extractor:e=>XV(e)},filter:{extractor:e=>XV(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`grouping`,`fallback`,`descriptor`],subsumes:[`effort`,`text`,`label`]}},{id:`descriptor`,label:`Descriptor`,icon:LL(G.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:G.Effort},{type:`metric-type`,metricType:G.Label},{type:`metric-type`,metricType:G.Rounds},{type:`metric-type`,metricType:G.CurrentRound}]},format:{type:`custom`,render:e=>VV(e,0)},sort:{type:`text`,extractor:e=>XV(e)},filter:{extractor:e=>XV(e),caseInsensitive:!0},meta:{defaultVisible:!0,subsumes:[`effort`,`label`,`rounds`,`current-round`]}},mH,OH,DH,hH,{id:`pace`,label:`Pace`,icon:`⏱️`,source:{type:`derived`,dependencies:[`distance`,`duration`],compute:(e,t)=>{let n=JV(t.dependencies.get(`distance`)),r=JV(t.dependencies.get(`duration`));if(!(!n||!r))return n/r}},format:{type:`custom`,render:e=>{if(typeof e!=`number`||!Number.isFinite(e)||e<=0)return(0,H.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`});let t=1e3/e;return(0,H.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:[_L(t),`/km`]})}},sort:{type:`numeric`,extractor:e=>typeof e==`number`?e:void 0},graph:{extractor:e=>typeof e==`number`?e:void 0,axisLabel:`Pace`,unit:`m/s`},filter:{extractor:e=>typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`${_L(1e3/e)}/km`,caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`endurance`,`derived`]}},gH,_H,vH,yH,bH,xH,SH,CH,wH,kH,AH,jH,{id:`loadFocus`,label:`Load`,icon:LL(G.Load)??LL(G.Resistance)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:G.Load},{type:`metric-type`,metricType:G.Resistance}]},format:{type:`custom`,render:e=>VV(e,0)},sort:{type:`numeric`,extractor:e=>JV(e)},graph:{extractor:e=>JV(e),axisLabel:`Load`,unit:`kg`},filter:{extractor:e=>YV(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`strength`,`fallback`]}},MH,NH,TH,EH],FH={outputTypes:[`segment`,`milestone`,`group`,`analytics`]},IH={definitions:PH,presets:{default:{label:`Default`,filters:FH,visibleColumnIds:[`#`,`timeSpan`,`descriptor`,`rep`,`distance`,`resistance`,`action`,`increment`,`metric`,`calculated`,`custom`,`volume`,`intensity`,`load`,`work`]},debug:{label:`Debug`,filters:{},visibleColumnIds:[`#`,`timeSpan`,`timestamp`,`spans`,`blockKey`,`outputType`,`stackLevel`,`descriptor`,`duration`,`rep`,`distance`,`resistance`,`action`,`increment`,`metric`,`calculated`,`custom`,`volume`,`intensity`,`load`,`work`,`group`,`system`,`elapsedTotal`,`completionReason`]},strength:{label:`Strength`,filters:FH,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`rep`,`loadFocus`,`volume`,`intensity`,`load`,`work`,`elapsedTotal`]},endurance:{label:`Endurance`,filters:FH,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`distance`,`duration`,`pace`,`rounds`,`increment`,`work`,`elapsedTotal`]}},defaultPreset:`default`},LH=new class{config;definitionMap;constructor(e){this.config=e,this.definitionMap=new Map(e.definitions.map(e=>[e.id,e]))}getVisibleColumns(e){return this.getOrderedCandidates(e).filter(t=>this.computeVisibility(t.id,e))}getAvailableColumns(e){let t=new Set(this.getVisibleColumns(e).map(e=>e.id));return this.config.definitions.filter(n=>!t.has(n.id)&&this.isColumnAvailable(n,e))}getGraphableColumns(e){return this.getVisibleColumns(e).filter(e=>e.graph!==void 0)}getGraphTaggedColumns(e){let t=e.graphTaggedColumnIds;return!t||t.size===0?[]:this.getVisibleColumns(e).filter(e=>t.has(e.id))}isColumnVisible(e,t){return this.getDefinition(e)?this.computeVisibility(e,t):!1}getDefinition(e){return this.definitionMap.get(e)}getPreset(e){return this.config.presets[e]??this.config.presets[this.config.defaultPreset]}getAllDefinitions(){return this.config.definitions}get definitions(){return this.definitionMap}resolveColumnValue(e,t,n,r){let i=this.getDefinition(t);if(!i)return;let a={allRows:n,rowIndex:r??n.findIndex(t=>t.id===e.id),columnDef:i,dependencies:new Map};return dV(e,i.source,a,this.definitionMap)}getOrderedCandidates(e){let t=this.getPreset(e.activePresetId),n=[],r=new Set,i=e=>{if(r.has(e))return;let t=this.getDefinition(e);t&&(n.push(t),r.add(e))};for(let e of t.visibleColumnIds)i(e);for(let e of this.config.definitions)i(e.id);if(e.addedColumnIds)for(let t of e.addedColumnIds)i(t);return n}computeVisibility(e,t,n){if(t.visibilityOverrides&&e in t.visibilityOverrides)return t.visibilityOverrides[e];if(t.addedColumnIds?.has(e))return!0;let r=this.getDefinition(e);if(!r||r.meta?.debugOnly&&!t.isDebugMode||!n&&this.isColumnSubsumed(e,t))return!1;let i=this.getPreset(t.activePresetId).visibleColumnIds.includes(e),a=this.hasDataInRows(r,t.rows);switch(r.source.type){case`fixed-field`:return i;case`derived`:return i;case`metric-type`:return a;case`fallback`:return i&&a;default:return i}}isColumnSubsumed(e,t){for(let n of this.config.definitions)if(n.meta?.subsumes?.length&&this.getPreset(t.activePresetId).visibleColumnIds.includes(n.id)&&n.meta.subsumes.includes(e))return!0;return!1}isColumnAvailable(e,t){return e.meta?.debugOnly&&!t.isDebugMode?!1:this.getPreset(t.activePresetId).visibleColumnIds.includes(e.id)?!this.computeVisibility(e.id,t):e.source.type===`fixed-field`||e.source.type===`derived`||this.hasDataInRows(e,t.rows)}hasDataInRows(e,t){if(t.length===0)return!1;switch(e.source.type){case`fixed-field`:return!0;case`metric-type`:{let{metricType:n}=e.source;return t.some(e=>e.cells.has(n))}case`derived`:return!0;case`fallback`:{let{sources:n}=e.source;return t.some(e=>n.some(t=>this.sourceHasDataInRow(t,e)))}default:return!0}}sourceHasDataInRow(e,t){switch(e.type){case`fixed-field`:return t[e.field]!==void 0&&t[e.field]!==null;case`metric-type`:return t.cells.has(e.metricType);case`derived`:return!0;case`fallback`:return e.sources.some(e=>this.sourceHasDataInRow(e,t));default:return!1}}}(IH);function RH(e){let{segments:t,userOutputOverrides:n,presetId:r,isDebugMode:i,sortConfigs:a,filterOverrides:o,graphTaggedColumns:s,extraMetricTypes:c,columnVisibilityOverrides:l,addedColumnIds:u}=e,d=(0,V.useMemo)(()=>zH(t,n),[t,n]),f=(0,V.useMemo)(()=>{let e=new Set(u??[]);for(let t of c??[])e.add(t);return e},[u,c]),p=(0,V.useMemo)(()=>({rows:d,activePresetId:r,isDebugMode:i,graphTaggedColumnIds:s,visibilityOverrides:l,addedColumnIds:f}),[d,r,i,s,l,f]),m=(0,V.useMemo)(()=>LH.getVisibleColumns(p),[p]),h=(0,V.useMemo)(()=>LH.getAvailableColumns(p),[p]),g=(0,V.useMemo)(()=>({...LH.getPreset(r).filters??{},...o}),[r,o]);return{rows:(0,V.useMemo)(()=>UH(HH(d,g,m,LH.definitions),a,m,LH.definitions),[d,g,a,m]),visibleColumns:m,availableColumns:h,graphTaggedColumnIds:(0,V.useMemo)(()=>Array.from(s??[]),[s])}}function zH(e,t){return e.map((e,n)=>{let r=new Map;if(e.metrics)for(let t of e.metrics)VH(r,t);let i=BH(e),a=i?t.get(i):void 0;if(a)for(let e of a)VH(r,e);for(let[,e]of r)e.hasUserOverride=e.metrics.some(e=>e.origin===`user`);let o=e.context?.outputType??e.type;return{id:e.id,index:n+1,sourceBlockKey:i??`segment-${e.id}`,sourceStatementId:e.context?.sourceStatementId,outputType:o,stackLevel:e.depth,absoluteStartTime:e.absoluteStartTime,duration:e.duration,elapsed:e.elapsed,total:e.total,spans:e.spans?[...e.spans]:[],completionReason:e.context?.completionReason,cells:r}})}function BH(e){let t=e.context;return t?.sourceBlockKey?t.sourceBlockKey:e.name}function VH(e,t){let n=t.type;if(n===G.Sound)return;let r=e.get(n);r?e.set(n,{metrics:r.metrics.clone().add(t),hasUserOverride:r.hasUserOverride}):e.set(n,{metrics:K.empty(n).add(t),hasUserOverride:!1})}function HH(e,t,n,r){let i=e;if(t.outputTypes&&t.outputTypes.length>0){let e=new Set(t.outputTypes);i=i.filter(t=>e.has(t.outputType))}if(t.origins&&t.origins.length>0){let e=new Set(t.origins);i=i.filter(t=>{for(let[,n]of t.cells)if(n.metrics.some(t=>t.origin&&e.has(t.origin)))return!0;return!1})}if(t.searchText&&t.searchText.trim().length>0){let a=t.searchText.trim().toLowerCase();i=i.filter(t=>{for(let i of n)if(i.filter&&TV(t,i,{allRows:e,rowIndex:e.indexOf(t),columnDef:i,dependencies:new Map},r).toLowerCase().includes(a))return!0;return!1})}if(t.columnFilters)for(let[a,o]of Object.entries(t.columnFilters)){if(!o||o.trim().length===0)continue;let t=n.find(e=>e.id===a);t&&(i=i.filter(n=>{let i={allRows:e,rowIndex:e.indexOf(n),columnDef:t,dependencies:new Map};return EV(n,t,o,i,r)}))}return i}function UH(e,t,n,r){if(t.length===0)return e;let i=[...e];return i.sort((i,a)=>{for(let o of t){let t=n.find(e=>e.id===o.columnId);if(!t||!t.sort)continue;let s={allRows:e,rowIndex:e.indexOf(i),columnDef:t,dependencies:new Map},c={allRows:e,rowIndex:e.indexOf(a),columnDef:t,dependencies:new Map},l=CV(SV(i,t,s,r),SV(a,t,c,r));if(l!==0)return o.direction===`asc`?l:-l}return i.index-a.index}),i}function WH(e,t){return{id:e,label:t.label,filters:t.filters??{},visibleColumns:[...t.visibleColumnIds],isDefault:e===IH.defaultPreset}}var GH=Object.fromEntries(Object.entries(IH.presets).map(([e,t])=>[e,WH(e,t)])),KH=GH.default;GH.debug,GH.strength,GH.endurance;function qH(e){return GH[e]??KH}var JH=({activePreset:e,onPresetChange:t,searchText:n,onSearchChange:r,showFilters:i,onToggleFilters:a,totalRows:o,visibleRows:s})=>(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 px-3 py-2 border-b border-border bg-muted/10 dark:bg-muted/5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`label`,{className:`text-xs text-muted-foreground font-medium`,children:`View:`}),(0,H.jsx)(`select`,{className:`text-xs rounded border border-border bg-background text-foreground px-1.5 py-1 focus:outline-none focus:ring-1 focus:ring-primary/40`,value:e.id,onChange:e=>t(e.target.value),children:Object.values(GH).map(e=>(0,H.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,H.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,H.jsx)(`div`,{className:`flex items-center flex-1 max-w-md`,children:(0,H.jsxs)(`div`,{className:`flex w-full group`,children:[(0,H.jsx)(`input`,{type:`text`,className:`flex-1 px-2.5 py-1 text-xs rounded-l border border-r-0 border-border bg-background text-foreground placeholder:text-muted-foreground/40 focus:outline-none focus:ring-1 focus:ring-primary/40 focus:z-10`,placeholder:`Filter results…`,value:n,onChange:e=>r(e.target.value)}),(0,H.jsxs)(`button`,{className:`px-2.5 py-1 text-xs rounded-r border border-border bg-muted/30 text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors flex items-center gap-1.5 border-l-0`,title:`Filter results`,children:[(0,H.jsx)(`span`,{children:`🔍`}),(0,H.jsx)(`span`,{className:`font-medium`,children:`Search`})]})]})}),(0,H.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,H.jsx)(`button`,{className:[`text-xs px-2 py-1 rounded border transition-colors`,i?`bg-primary/10 border-primary/30 text-primary`:`bg-muted/30 border-border text-muted-foreground hover:text-foreground`].join(` `),onClick:a,title:i?`Hide column filters`:`Show column filters`,children:`🔽 Filters`}),(0,H.jsx)(`div`,{className:`ml-auto text-xs text-muted-foreground tabular-nums`,children:s===o?`${o} rows`:`${s} / ${o} rows`})]}),YH={"#":`40px`,exercise:`180px`,text:`160px`,notes:`160px`,completionReason:`160px`,rep:`72px`,rounds:`72px`,"current-round":`72px`,duration:`96px`,distance:`96px`,resistance:`96px`,load:`96px`,volume:`96px`,intensity:`96px`,metric:`96px`,work:`96px`,elapsedTotal:`96px`,action:`96px`,increment:`96px`,timestamp:`96px`,spans:`96px`,blockKey:`180px`,outputType:`96px`,stackLevel:`72px`,elapsed:`96px`},XH=`48px`;function ZH(e){return e.meta?.width??YH[e.id]??`96px`}function QH(){return XH}var $H=({columns:e,sortConfigs:t,onSort:n,onToggleGraph:r,showFilters:i,columnFilters:a,onColumnFilterChange:o,availableToAdd:s,onAddColumn:c,graphTaggedColumnIds:l})=>(0,H.jsxs)(`thead`,{className:`bg-muted/50 dark:bg-muted/30 sticky top-0 z-10`,children:[(0,H.jsxs)(`tr`,{className:`border-b border-border`,children:[e.map(e=>(0,H.jsx)(eU,{column:e,sortConfig:t.find(t=>t.columnId===e.id),onSort:n,onToggleGraph:r,isGraphed:l?.has(e.id)??!1},e.id)),c&&(0,H.jsx)(`th`,{className:`py-2 px-1`,style:{minWidth:QH()},children:(0,H.jsx)(rU,{availableToAdd:s??[],onAddColumn:c})})]}),i&&(0,H.jsxs)(`tr`,{className:`border-b border-border/50 bg-muted/20 dark:bg-muted/10`,children:[e.map(e=>(0,H.jsx)(nU,{column:e,value:a[e.id]??``,onChange:o},e.id)),c&&(0,H.jsx)(`th`,{className:`py-1 px-1`,style:{minWidth:QH()}})]})]}),eU=({column:e,sortConfig:t,onSort:n,onToggleGraph:r,isGraphed:i})=>{let a=e.sort!==void 0,o=e.graph!==void 0,s=(0,V.useCallback)(t=>{a&&n(e.id,t.shiftKey)},[e.id,a,n]),c=(0,V.useCallback)(t=>{t.stopPropagation(),r(e.id)},[e.id,r]);return(0,H.jsx)(`th`,{className:[`py-1.5 px-2 text-[11px] font-semibold text-muted-foreground uppercase tracking-wider whitespace-nowrap select-none`,a?`cursor-pointer hover:text-foreground transition-colors`:``].join(` `),style:{minWidth:ZH(e)},onClick:s,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[e.icon&&(0,H.jsx)(`span`,{className:`text-sm`,children:e.icon}),(0,H.jsx)(`span`,{children:e.label}),t&&(0,H.jsx)(tU,{direction:t.direction}),o&&(0,H.jsx)(`button`,{className:[`ml-auto text-sm opacity-40 hover:opacity-100 transition-opacity`,i?`opacity-100 text-primary`:``].join(` `),onClick:c,title:i?`Remove from graph`:`Add to graph`,children:`📊`})]})})},tU=({direction:e})=>(0,H.jsx)(`span`,{className:`text-primary text-[10px] ml-0.5`,children:e===`asc`?`▲`:`▼`}),nU=({column:e,value:t,onChange:n})=>e.filter?(0,H.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:ZH(e)},children:(0,H.jsx)(`input`,{type:`text`,className:`w-full px-1.5 py-0.5 text-xs rounded border border-border bg-background text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:ring-1 focus:ring-primary/40`,placeholder:`Filter…`,value:t,onChange:t=>n(e.id,t.target.value)})}):(0,H.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:ZH(e)}}),rU=({availableToAdd:e,onAddColumn:t})=>{let[n,r]=(0,V.useState)(!1),i=(0,V.useRef)(null),a=(0,V.useRef)(null);return(0,V.useEffect)(()=>{if(!n)return;let e=e=>{i.current&&!i.current.contains(e.target)&&a.current&&!a.current.contains(e.target)&&r(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n]),e.length===0?null:(0,H.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,H.jsx)(`button`,{ref:a,title:`Add metric column`,onClick:e=>{e.stopPropagation(),r(e=>!e)},className:[`flex items-center justify-center w-5 h-5 rounded text-[11px] font-bold transition-all`,`text-muted-foreground hover:text-foreground hover:bg-primary/10 hover:border-primary/40`,`border border-dashed border-muted-foreground/40`,n?`bg-primary/10 border-primary/40 text-foreground`:``].join(` `),children:`+`}),n&&(0,H.jsxs)(`div`,{ref:i,className:`absolute right-0 top-full mt-1 z-50 min-w-[160px] max-h-64 overflow-y-auto
140
+ bg-popover border border-border rounded-md shadow-xl py-1`,onClick:e=>e.stopPropagation(),children:[(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] font-semibold text-muted-foreground uppercase tracking-wider border-b border-border/50 mb-1`,children:`Add metric column`}),e.map(e=>{let n=LL(e)??`•`,i=io.columnLabel(e);return(0,H.jsxs)(`button`,{onClick:()=>{t(e),r(!1)},className:`w-full flex items-center gap-2 px-3 py-1.5 text-xs hover:bg-muted text-foreground transition-colors`,children:[(0,H.jsx)(`span`,{className:`text-sm w-4 text-center`,children:n}),(0,H.jsx)(`span`,{children:i})]},e)})]})]})},iU=({row:e,allRows:t,rowIndex:n,columns:r,isSelected:i,onSelect:a,isHovered:o,onHover:s,onCellDoubleClick:c})=>{let l=t=>{a(e.id,{ctrlKey:t.ctrlKey||t.metaKey,shiftKey:t.shiftKey})},u=e.outputType===`group`;return(0,H.jsx)(`tr`,{className:U(`border-b border-border transition-colors cursor-pointer`,u?`bg-muted/50 font-bold`:``,i?`bg-accent dark:bg-accent/20`:o?`bg-muted/50 dark:bg-muted/40`:`hover:bg-muted/30 dark:hover:bg-muted/20`),onClick:l,onMouseEnter:()=>s(e.sourceBlockKey),onMouseLeave:()=>s(null),children:r.map(r=>{let i=r.source.type===`metric-type`&&r.source.metricType===G.Effort;return(0,H.jsx)(OV,{columnDef:r,row:e,allRows:t,rowIndex:n,indent:i?e.stackLevel:0,onDoubleClick:c,style:{minWidth:ZH(r)}},r.id)})})};function aU(e){let{rows:t,columns:n,graphTaggedColumnIds:r,definitionMap:i}=e,a=(0,V.useMemo)(()=>oU(r,n),[r,n]),o=(0,V.useMemo)(()=>sU(t,r,n,i),[t,r,n,i]);return{data:o,graphConfigs:a,hasData:a.length>0&&o.length>0}}function oU(e,t){let n=[];for(let r of e){let e=t.find(e=>e.id===r);e&&n.push({id:r,label:e.label,unit:dU(e),color:cU(e),dataKey:r,icon:e.icon})}return n}function sU(e,t,n,r){return t.length===0?[]:e.map((i,a)=>{let o={index:i.index,label:i.sourceBlockKey};for(let s of t){let t=n.find(e=>e.id===s);if(!t||!t.graph){o[s]=0;continue}o[s]=wV(i,t,{allRows:e,rowIndex:a,columnDef:t,dependencies:new Map},r)??0}return o})}function cU(e){if(e.graph?.color)return e.graph.color;let t=lU(e);return t?uU[t]??`#888888`:`#888888`}function lU(e){if(e.source.type===`metric-type`)return e.source.metricType}var uU={[G.Time]:`#3b82f6`,[G.Rep]:`#22c55e`,[G.Effort]:`#eab308`,[G.Distance]:`#14b8a6`,[G.Rounds]:`#a855f7`,[G.Resistance]:`#ef4444`,[G.Increment]:`#6366f1`,[G.Action]:`#ec4899`};function dU(e){if(e.graph?.unit)return e.graph.unit;let t=lU(e);if(!t)return``;switch(t){case G.Time:return`ms`;case G.Rep:return`reps`;case G.Distance:return`m`;case G.Rounds:return`rounds`;case G.Resistance:return`kg`;case G.Increment:return`Δ`;default:return``}}var fU=({rows:e,columns:t,graphTaggedColumnIds:n,selectedIds:r,onSelectRow:i})=>{let[a,o]=(0,V.useState)(!1),{data:s,graphConfigs:c,hasData:l}=aU({rows:e,columns:t,graphTaggedColumnIds:n,selectedIds:r}),u=(0,V.useCallback)(t=>{if(!t?.activePayload?.[0])return;let n=t.activePayload[0].payload,r=e.find(e=>e.index===n.index);r&&i&&i(r.id)},[e,i]);return n.length===0?null:(0,H.jsxs)(`div`,{className:`border-b border-border bg-background`,children:[(0,H.jsxs)(`button`,{className:`w-full flex items-center justify-between px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/20 transition-colors`,onClick:()=>o(e=>!e),children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{children:`📊`}),(0,H.jsxs)(`span`,{children:[`Graph — `,c.map(e=>e.label).join(`, `)]})]}),(0,H.jsx)(`span`,{className:`text-[10px]`,children:a?`▼`:`▲`})]}),!a&&(0,H.jsx)(`div`,{className:`px-3 pb-3`,children:l?(0,H.jsx)(`div`,{className:`w-full bg-muted/30 rounded-lg border border-border p-2`,style:{height:220},children:(0,H.jsx)(Wn,{width:`100%`,height:`100%`,children:(0,H.jsxs)(In,{data:s,onClick:u,children:[(0,H.jsx)(Ee,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,H.jsx)(nt,{dataKey:`index`,stroke:`hsl(var(--muted-foreground))`,tick:{fontSize:10},label:{value:`Row #`,position:`insideBottom`,offset:-5,fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,H.jsx)(R,{stroke:`hsl(var(--muted-foreground))`,tick:{fontSize:10},domain:[`auto`,`auto`]}),(0,H.jsx)(er,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},labelFormatter:e=>`Row ${e}`,formatter:(e,t)=>{let n=c.find(e=>e.dataKey===t);return[`${typeof e==`number`?e.toLocaleString():e}${n?.unit?` ${n.unit}`:``}`,n?.label??t]}}),(0,H.jsx)(Tn,{verticalAlign:`top`,height:24,wrapperStyle:{fontSize:`11px`}}),c.map(e=>(0,H.jsx)(ot,{type:`monotone`,dataKey:e.dataKey,name:e.label,stroke:e.color,strokeWidth:2,dot:{r:3,fill:e.color},activeDot:{r:5,stroke:e.color,strokeWidth:2}},e.id))]})})}):(0,H.jsx)(`div`,{className:`h-32 flex items-center justify-center text-sm text-muted-foreground`,children:`No numeric data available for the tagged columns.`})})]})},pU=({isOpen:e,blockKey:t,metricType:n,existingFragments:r,existingUserValue:i,anchorRect:a,onSave:o,onRemove:s,onClose:c})=>{let[l,u]=(0,V.useState)(``),d=(0,V.useRef)(null),f=(0,V.useRef)(null);(0,V.useEffect)(()=>{e&&(u(i===void 0?``:String(i)),setTimeout(()=>d.current?.focus(),0))},[e,i]),(0,V.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,c]),(0,V.useEffect)(()=>{if(!e)return;let t=e=>{f.current&&!f.current.contains(e.target)&&c()},n=setTimeout(()=>{document.addEventListener(`mousedown`,t)},100);return()=>{clearTimeout(n),document.removeEventListener(`mousedown`,t)}},[e,c]);let p=(0,V.useCallback)(()=>{if(l.trim()===``)return;let e=Number(l.trim()),r=!isNaN(e)&&l.trim()!==``?e:l.trim();o(t,n,r,String(r)),c()},[l,t,n,o,c]),m=(0,V.useCallback)(()=>{s(t,n),c()},[t,n,s,c]),h=(0,V.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),p())},[p]);if(!e)return null;let g=LL(n),_=FL(n),v=i!==void 0,y=r.filter(e=>e.origin!==`user`),b=a?{position:`fixed`,top:a.bottom+4,left:Math.max(8,Math.min(a.left,window.innerWidth-280)),zIndex:50}:{position:`fixed`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:50};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 bg-black/20 dark:bg-black/40 z-40`}),(0,H.jsxs)(`div`,{ref:f,className:`w-64 rounded-lg border border-border bg-popover text-popover-foreground shadow-lg`,style:b,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border`,children:[g&&(0,H.jsx)(`span`,{className:`text-sm`,children:g}),(0,H.jsx)(`span`,{className:`text-sm font-medium capitalize`,children:n}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground ml-auto truncate max-w-[100px]`,title:t,children:t})]}),y.length>0&&(0,H.jsxs)(`div`,{className:`px-3 py-1.5 border-b border-border/50 bg-muted/10`,children:[(0,H.jsx)(`div`,{className:`text-[10px] text-muted-foreground mb-1 uppercase tracking-wider`,children:`Current`}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:y.map((e,t)=>(0,H.jsx)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded text-xs border ${_}`,children:e.image??String(e.value??e.type)},t))})]}),(0,H.jsxs)(`div`,{className:`px-3 py-2`,children:[(0,H.jsx)(`label`,{className:`text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block`,children:v?`Update override`:`Enter value`}),(0,H.jsx)(`input`,{ref:d,type:`text`,className:`w-full px-2 py-1.5 text-sm rounded border border-border bg-background text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:ring-2 focus:ring-primary/40`,placeholder:`Enter ${n} value…`,value:l,onChange:e=>u(e.target.value),onKeyDown:h})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-t border-border/50`,children:[(0,H.jsx)(`button`,{className:`flex-1 px-2 py-1 text-xs rounded border border-border text-muted-foreground hover:text-foreground hover:bg-muted/30 transition-colors`,onClick:c,children:`Cancel`}),v&&(0,H.jsx)(`button`,{className:`px-2 py-1 text-xs rounded border border-destructive/30 text-destructive hover:bg-destructive/10 transition-colors`,onClick:m,title:`Remove user override`,children:`Clear`}),(0,H.jsx)(`button`,{className:`flex-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50`,onClick:p,disabled:l.trim()===``,children:`Save`})]})]})]})},mU=({segments:e,selectedSegmentIds:t,onSelectSegment:n,userOutputOverrides:r=new Map,gridViewPreset:i=`default`,onPresetChange:a,hoveredBlockKey:o,onHoverBlockKey:s})=>{let{isDebugMode:c}=g_(),[l,u]=(0,V.useState)([]),[d,f]=(0,V.useState)(``),[p,m]=(0,V.useState)({}),[h,g]=(0,V.useState)(!1),[_,v]=(0,V.useState)(new Set),[y,b]=(0,V.useState)({}),[x,S]=(0,V.useState)(new Set),{overrides:C,setOverride:w,removeOverride:T}=XR(!0),[E,D]=(0,V.useState)({isOpen:!1,blockKey:``,type:`Time`,anchorRect:null,existingFragments:[]}),O=(0,V.useMemo)(()=>{let e=new Map;for(let[t,n]of r)e.set(t,n instanceof K?n:K.from(n,t));for(let[t,n]of C)e.set(t,n);return e},[r,C]),k=c?`debug`:i,A=(0,V.useMemo)(()=>qH(k),[k]),{rows:j,visibleColumns:M,availableColumns:N,graphTaggedColumnIds:P}=RH({segments:e,userOutputOverrides:O,presetId:k,isDebugMode:c,sortConfigs:l,filterOverrides:(0,V.useMemo)(()=>({searchText:d||void 0,columnFilters:Object.keys(p).length>0?p:void 0}),[d,p]),graphTaggedColumns:_,extraMetricTypes:x,columnVisibilityOverrides:y,addedColumnIds:x}),F=M,I=e.length,ee=(0,V.useMemo)(()=>j.map(e=>e.id),[j]),L=(0,V.useCallback)((e,t)=>{u(n=>{let r=n.find(t=>t.columnId===e);return t?r?r.direction===`asc`?n.map(t=>t.columnId===e?{...t,direction:`desc`}:t):n.filter(t=>t.columnId!==e):[...n,{columnId:e,direction:`asc`}]:r?r.direction===`asc`?[{columnId:e,direction:`desc`}]:[]:[{columnId:e,direction:`asc`}]})},[]),te=(0,V.useCallback)(e=>{v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),R=(0,V.useCallback)((e,t)=>{m(n=>{if(!t){let t={...n};return delete t[e],t}return{...n,[e]:t}})},[]),ne=(0,V.useCallback)(e=>{b({}),m({}),f(``),a?.(e)},[a]),re=(0,V.useCallback)(e=>{S(t=>{let n=new Set(t);return n.add(e),n})},[]),ie=(0,V.useMemo)(()=>N.filter(e=>e.source.type===`metric-type`).map(e=>e.source.metricType),[N]),ae=(0,V.useCallback)((e,t)=>{n(e,t,ee)},[n,ee]),oe=(0,V.useCallback)(e=>{s?.(e)},[s]),se=(0,V.useCallback)(e=>{n(e,{ctrlKey:!1,shiftKey:!1},ee)},[n,ee]),ce=(0,V.useCallback)((e,t,n)=>{let r=(j.find(t=>t.sourceBlockKey===e)?.cells.get(t))?.metrics.toArray()??[],i=r.find(e=>e.origin===`user`),a=i?.value==null?void 0:String(i.value);D({isOpen:!0,blockKey:e,type:t,anchorRect:n,existingFragments:r,existingUserValue:a})},[j]),le=(0,V.useCallback)((e,t,n,r)=>{w(e,t,n,r),D(e=>({...e,isOpen:!1}))},[w]),ue=(0,V.useCallback)(()=>{T(E.blockKey,E.type),D(e=>({...e,isOpen:!1}))},[E.blockKey,E.type,T]),de=(0,V.useCallback)(()=>{D(e=>({...e,isOpen:!1}))},[]);return(0,H.jsxs)(`div`,{className:`h-full flex flex-col bg-background`,children:[(0,H.jsx)(JH,{activePreset:A,onPresetChange:ne,searchText:d,onSearchChange:f,showFilters:h,onToggleFilters:()=>g(e=>!e),totalRows:I,visibleRows:j.length}),(0,H.jsx)(fU,{rows:j,columns:M,graphTaggedColumnIds:P,selectedIds:t,onSelectRow:se}),(0,H.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,H.jsxs)(`table`,{className:`text-left text-sm border-collapse min-w-[700px]`,children:[(0,H.jsx)($H,{columns:F,sortConfigs:l,onSort:L,onToggleGraph:te,showFilters:h,columnFilters:p,onColumnFilterChange:R,availableToAdd:ie,onAddColumn:re,graphTaggedColumnIds:_}),(0,H.jsx)(`tbody`,{className:`divide-y divide-border`,children:j.length===0?(0,H.jsx)(`tr`,{children:(0,H.jsx)(`td`,{colSpan:F.length,className:`py-8 text-center text-muted-foreground text-sm`,children:e.length===0?`Finish or stop the timer — results land here`:`No rows match the current filters.`})}):j.map((e,n)=>(0,H.jsx)(iU,{row:e,allRows:j,rowIndex:n,columns:F,isSelected:t.has(e.id),onSelect:ae,isHovered:o===e.sourceBlockKey,onHover:oe,onCellDoubleClick:ce},e.id))})]})}),(0,H.jsx)(pU,{isOpen:E.isOpen,blockKey:E.blockKey,metricType:E.type,existingFragments:E.existingFragments,existingUserValue:E.existingUserValue,anchorRect:E.anchorRect??void 0,onSave:le,onRemove:ue,onClose:de}),(0,H.jsxs)(`div`,{className:`px-3 py-1.5 border-t border-border bg-muted/10 text-xs text-muted-foreground flex items-center justify-between`,children:[(0,H.jsx)(`span`,{children:t.size>0?`${t.size} selected`:`Click a row to select`}),(0,H.jsxs)(`span`,{className:`tabular-nums`,children:[j.length,` / `,I,` rows`]})]})]})};$t();var hU=({title:e,onClose:t,children:n,closeButtonClassName:r,floatingClose:i=!1,variant:a=`default`,actions:o,closeLabel:s})=>{(0,V.useEffect)(()=>(document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}),[]);let c=a===`minimal`,l=(0,H.jsx)(`button`,{onClick:t,className:r??`rounded-pill transition-colors shadow-[rgba(0,0,0,0.06)_0px_1px_2px] ${c?`bg-muted hover:bg-muted/80 text-muted-foreground hover:text-foreground`:`bg-muted/50 hover:bg-muted text-muted-foreground hover:text-foreground`} ${s?`flex h-11 min-w-[44px] items-center justify-center px-4 text-sm font-medium hover:text-foreground`:`p-2`}`,title:s??`Close`,"data-testid":OL.FOCUSED_DIALOG_CLOSE,children:s??(0,H.jsx)(Te,{className:`h-5 w-5`})});return Mb.createPortal((0,H.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex flex-col bg-background text-foreground animate-in fade-in duration-200`,children:[i||c&&!e?(0,H.jsxs)(`div`,{className:`absolute top-4 right-4 z-[110] flex items-center gap-2`,children:[o,l]}):e?(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-border ${c?`bg-muted/10`:`bg-muted/30`} shrink-0`,children:[(0,H.jsx)(`h2`,{className:`text-lg ${c?`font-black tracking-tight uppercase text-[11px] text-muted-foreground`:`font-semibold`}`,children:e}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[o,l]})]}):null,(0,H.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:n})]}),document.body)},gU=(0,V.createContext)({updateFromSegments:()=>{},clear:()=>{}}),_U=({children:e,chromecastSubscription:t=null})=>(0,H.jsx)(gU.Provider,{value:{updateFromSegments:(e,n,r)=>{t&&t.sendAnalyticsSummary([],n,r)},clear:()=>{}},children:e}),vU=new class{resolve(e){let t=this.resolveMode(e);return t===`active`?{type:`rpc-workbench-update`,mode:`active`}:t===`review`?KR(e.analyticsSegments):JR(e.selectedBlock,e.documentItems)}resolveMode(e){return e.viewMode===`track`?e.runtime&&(e.executionStatus===`running`||e.executionStatus===`paused`)?`active`:e.analyticsSegments.length>0?`review`:e.runtime?`active`:`preview`:e.viewMode===`review`&&e.analyticsSegments.length>0?`review`:`preview`}};function yU(e){if(e instanceof Error)return e.message;if(typeof e==`object`&&e){let{code:t,description:n}=e;if(t!==void 0||n!==void 0)return[t===void 0?null:String(t),n?String(n):null].filter(e=>e!==null).join(`: `)||`unknown`;try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}var bU=()=>{let e=RR(),[t,n]=(0,V.useState)(e.state),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(null),[l,u]=(0,V.useState)(null),d=(0,V.useRef)(null),f=AM,p=(0,V.useRef)(f.getActiveHandle()),m=(0,V.useRef)(!1),h=(0,V.useCallback)(e=>{let t=p.current;p.current=null,t&&f.dispose(e),hE(null),u(null),c(null),i(!1)},[f]),g=(0,V.useCallback)(async e=>{if(!m.current){m.current=!0;try{let t=gP.getState().subscriptionManager,n=f.connect(e,t);p.current=n,u(n),c(n.subscription),i(!0),hE(n.transport),n.eventProvider.onEvent(e=>{let t=gP.getState();BR(e,{onNext:()=>{t.handles.handleNext&&t.handles.handleNext(),t.runtime&&(!t.handles.handleNext||t.handles.handleNext===zM.handleNext)&&(t.runtime.handle(new gd(void 0,t.runtime.nowProvider)),t.execution.status!==`running`&&t.execution.start())},onStart:()=>{t.handles.handleStart&&t.handles.handleStart(),t.execution&&(!t.handles.handleStart||t.handles.handleStart===zM.handleStart)&&t.execution.start()},onPause:()=>{t.handles.handlePause&&t.handles.handlePause(),t.execution&&(!t.handles.handlePause||t.handles.handlePause===zM.handlePause)&&t.execution.pause()},onStop:()=>{t.handles.handleStop&&t.handles.handleStop(),t.execution&&(!t.handles.handleStop||t.handles.handleStop===zM.handleStop)&&t.execution.stop()}})});let r=gP.getState(),a=vU.resolve({viewMode:r.viewMode,executionStatus:r.execution.status,runtime:r.runtime,analyticsSegments:r.analyticsSegments,selectedBlock:r.selectedBlock,documentItems:r.documentItems});n.pushInitialWorkbench(a)}finally{m.current=!1}}},[f]),_=(0,V.useRef)(!1),v=(0,V.useCallback)(async()=>{if(f.isConnected&&f.getActiveHandle()){let e=f.getActiveHandle();p.current=e,u(e),c(e.subscription),i(!0);return}if(!(p.current||_.current)&&typeof e.resumeSession==`function`){_.current=!0;try{let t=await e.resumeSession();await g(t)}catch(t){console.warn(`[CastButtonRpc] Session resume failed:`,yU(t)),h(!1),e.endSession()}finally{_.current=!1}}},[e,g,h,f]);(0,V.useEffect)(()=>e.onStateChanged(e=>{n(e),e===`session-active`?(i(!0),v()):e===`ready`||e===`unavailable`?i(!1):e===`session-ended`&&h(!1)}),[e,h,v]),(0,V.useEffect)(()=>{if(f.isConnected&&f.getActiveHandle()){let e=f.getActiveHandle();p.current=e,u(e),c(e.subscription),i(!0)}else e.state===`session-active`&&v()},[e,f]),(0,V.useEffect)(()=>{let e=()=>{f.sendDisposeSignal()};return window.addEventListener(`pagehide`,e),()=>window.removeEventListener(`pagehide`,e)},[f]),(0,V.useEffect)(()=>{let t=d.current;if(!t)return;let n=async()=>{if(y.current===`session-active`){if(b.current)return;o(!0);try{h(!0),e.endSession()}finally{setTimeout(()=>o(!1),2e3)}return}try{let t=await e.startSession();i(!0),await g(t)}catch(e){let t=yU(e);t===`cancel`||t.includes(`cancel`)?console.log(`[CastButtonRpc] Cast request canceled or gesture expired`):console.error(`[CastButtonRpc] Cast failed:`,t),h(!1)}};return t.addEventListener(`click`,n),()=>t.removeEventListener(`click`,n)},[e,g,h]);let y=(0,V.useRef)(t);y.current=t;let b=(0,V.useRef)(a);b.current=a;let x=t===`unavailable`,S=t===`ready`,C=t===`session-active`,w=t===`connecting`,T=r&&C,E=w,D=E||a,O=S||C;return x?(0,H.jsx)(W,{variant:`ghost`,size:`icon`,disabled:!0,className:`opacity-20 cursor-not-allowed`,children:(0,H.jsx)(Zt,{className:`h-5 w-5`})}):(0,H.jsx)(bE,{transport:l?.transport??null,children:(0,H.jsx)(_U,{chromecastSubscription:s,children:(0,H.jsx)(W,{ref:d,variant:`ghost`,size:`icon`,disabled:D,onClick:()=>{},className:U(`transition-all`,T&&`text-signal-positive ring-2 ring-signal-positive/30`,E&&`animate-pulse text-signal-caution`,!O&&`opacity-50`),"aria-label":T?`Stop casting`:`Cast to TV`,title:T?`Stop casting`:E?`Connecting...`:`Cast to TV`,children:T?(0,H.jsx)(Ue,{className:`h-5 w-5`}):(0,H.jsx)(Zt,{className:`h-5 w-5`})})})})};function xU(){let{isEnabled:e,toggleAudio:t}=CE();return(0,H.jsxs)(W,{variant:`ghost`,size:`icon`,onClick:t,className:`h-9 w-9 text-muted-foreground hover:text-foreground`,title:e?`Mute audio`:`Enable audio`,children:[e?(0,H.jsx)(fe,{className:`h-[1.2rem] w-[1.2rem]`}):(0,H.jsx)(te,{className:`h-[1.2rem] w-[1.2rem]`}),(0,H.jsx)(`span`,{className:`sr-only`,children:`Toggle audio`})]})}var SU=({block:e,prepareRun:t,view:n,onClose:r,onCompleteWorkout:i,autoStart:a,onRuntimeReady:o,onRunStarted:s,externalStop:c})=>{let[l,u]=(0,V.useState)(t?null:e),[d,f]=(0,V.useState)(null),p=(0,V.useRef)(!1),m=(0,V.useCallback)(async()=>{if(!(!t||p.current)){p.current=!0,f(null);try{u(await t())}catch(e){f(e instanceof Error?e.message:String(e))}finally{p.current=!1}}},[t]);(0,V.useEffect)(()=>{m()},[m]);let[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(new Set),{isDebugMode:y}=g_(),b=(0,V.useRef)(Date.now()),x=(0,V.useRef)(typeof document<`u`?document.title:`Wod.Wiki`);(0,V.useEffect)(()=>{let t=e.label||e.id,n=h!==null,r=n?`Wod.Wiki - Workout Complete${t?`: `+t:``}`:`Wod.Wiki - Workout Timer${t?`: `+t:``}`,i=n?`/workout/review`:`/workout/timer`;document.title=r,window.gtag?.(`event`,`page_view`,{page_title:r,page_path:i,page_location:typeof window<`u`?`${window.location.origin}${i}`:i}),n?window.gtag?.(`event`,`runtime_dialog_review`,{workout_label:t,block_type:e.blockType}):(kz.record(`runtime:dialog_loaded`,{workout_label:t,block_type:e.blockType}),window.gtag?.(`event`,`runtime_dialog_loaded`,{workout_label:t,block_type:e.blockType}))},[e.id,e.label,e.blockType,h]),(0,V.useEffect)(()=>{let t=x.current,n=e.label||e.id;return()=>{let e=Date.now()-b.current;e>=1e3&&window.gtag?.(`event`,`runtime_dialog_closed`,{workout_label:n,duration_seconds:Math.round(e/1e3),engagement_time_msec:e}),typeof document<`u`&&(document.title=t)}},[e.id,e.label]);let S=(0,V.useRef)(!1),C=(0,V.useRef)(!1),w=(0,V.useRef)(!1),[T,E]=(0,V.useState)(!1),D=(0,V.useRef)(!1),O=(0,V.useRef)(!1),k=(0,V.useRef)(null),[A,j]=(0,V.useState)(`idle`),[M,N]=(0,V.useState)(null),[P,F]=(0,V.useState)(!1),I=async()=>{let e=k.current;if(!e||D.current)return;D.current=!0,O.current=!1,j(`saving`),N(null);let t;try{t=i?.(e.blockId,e.results),await t}catch(e){O.current=!0,N(e instanceof Error?e.message:String(e)),j(`error`),D.current=!1;return}D.current=!1,j(`idle`),F(!0);let{results:n}=e;if(n.completed&&n.logs&&n.logs.length>0)try{let{segments:e}=cM(n.logs,n.startTime);g(e)}catch{g([])}else n.completed?g([]):w.current&&r()},ee=(0,V.useCallback)(()=>{S.current=!0,s?.()},[s]),L=()=>{if(D.current||O.current){w.current=!0;return}if(h!==null||C.current||!S.current){r();return}w.current=!0,E(!0)},te=(e,t)=>{C.current||(C.current=!0,k.current={blockId:e,results:t},I())},R=(e,t,n)=>{v(r=>{let i=new Set(r);if(t?.ctrlKey)i.has(e)?i.delete(e):i.add(e);else if(t?.shiftKey&&n){let t=Array.from(r).pop();if(t!==void 0){let r=n.indexOf(t),a=n.indexOf(e);if(r!==-1&&a!==-1){let e=Math.min(r,a),t=Math.max(r,a);for(let r=e;r<=t;r++)i.add(n[r])}else i.add(e)}else i.add(e)}else i.clear(),i.add(e);return i})},ne=A===`idle`?null:(0,H.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-3 border-b border-border bg-muted/20 px-6 py-2 text-sm`,children:[A===`saving`&&(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`Saving…`}),A===`error`&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`span`,{role:`alert`,className:`text-destructive`,children:[`Save failed`,M?` — ${M}`:``]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>void I(),className:`rounded-pill border border-border px-3 py-1 text-xs font-medium text-foreground transition-colors hover:bg-accent`,children:`Retry save`})]})]});return l?h===null?(0,H.jsx)(hU,{onClose:L,title:`Workout`,closeLabel:`Exit`,actions:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:L,title:`Stop Session`,className:`flex h-11 min-w-[44px] items-center justify-center rounded-pill bg-muted/50 px-4 text-sm font-medium text-muted-foreground shadow-[rgba(0,0,0,0.06)_0px_1px_2px] transition-colors hover:bg-muted hover:text-foreground`,children:`Stop`}),(0,H.jsx)(bU,{}),(0,H.jsx)(xU,{})]}),children:(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[ne,d?(0,H.jsxs)(`div`,{className:`space-y-2 p-4`,children:[(0,H.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,d]}),(0,H.jsx)(`button`,{type:`button`,className:`rounded border px-3 py-2 hover:bg-accent focus-visible:ring-2`,onClick:()=>void m(),children:`Retry starting workout`})]}):l?null:(0,H.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`p-4`,children:`Saving workout before starting…`}),(0,H.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,H.jsx)(Cz,{block:l,view:n,onClose:L,onComplete:te,isExpanded:!0,autoStart:a,onRuntimeReady:o,onRunStarted:ee,externalStop:c||T})})]})}):(0,H.jsx)(hU,{title:`Workout Complete`,onClose:L,actions:(0,H.jsxs)(H.Fragment,{children:[P&&(0,H.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Saved ✓`}),(0,H.jsx)(bU,{}),(0,H.jsx)(xU,{})]}),children:(0,H.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[ne,(0,H.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,H.jsx)(mU,{runtime:null,segments:h,selectedSegmentIds:_,onSelectSegment:R,groups:[],gridViewPreset:y?`debug`:`default`})})]})}):(0,H.jsx)(hU,{title:`Starting workout`,onClose:r,children:d?(0,H.jsxs)(`div`,{className:`space-y-3 p-6`,children:[(0,H.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,d,` Your draft is kept.`]}),(0,H.jsx)(`button`,{type:`button`,className:`rounded border px-3 py-2 focus-visible:ring-2`,onClick:()=>void m(),children:`Retry start`})]}):(0,H.jsx)(`p`,{role:`status`,className:`p-6`,children:`Saving workout before starting…`})})},CU={play:!0,"add-to-today":!0,schedule:!0},wU=`log`;function TU(e,t){return e.filter(e=>e.id===wU?t===`log`:!CU[e.id]||t===`run`)}function EU(e,t){let n=t.contentFrom!==void 0&&t.contentTo!==void 0?e.state.doc.sliceString(t.contentFrom,t.contentTo):``,r=t.type===`time`||t.type===`log`?t.type:`time`;return{id:t.id,contentId:t.contentId,dialect:r,sport:t.sport,startLine:t.startLine-1,endLine:t.endLine-1,content:n,state:`idle`,version:1,createdAt:Date.now(),widgetIds:{}}}function DU(e){return function({className:t}){return V.isValidElement(e)?V.cloneElement(e,{className:U(e.props.className,t)}):(0,H.jsx)(`span`,{className:U(`flex items-center`,t),children:e})}}var OU=({cmd:e,block:t})=>{let[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(!1),o=(0,V.useCallback)(async()=>{!e.onSplitClick||n||(await e.onSplitClick(t),r(!0),setTimeout(()=>r(!1),1500))},[e,t,n]),s=(0,V.useCallback)(async()=>{i||(await e.onClick(t),e.successIcon&&(a(!0),setTimeout(()=>a(!1),1500)))},[e,t,i]),c=(0,V.useMemo)(()=>DU(i?e.successIcon??e.icon:e.icon),[e.icon,e.successIcon,i]),l=(0,V.useMemo)(()=>DU(n?e.splitSuccessIcon??e.splitIcon:e.splitIcon),[n,e.splitIcon,e.splitSuccessIcon]),u=(0,V.useMemo)(()=>({id:e.id,label:e.label,icon:c,action:{type:`call`,handler:()=>s()}}),[e.id,e.label,c,s]),d=(0,V.useMemo)(()=>({id:`${e.id}-split`,label:`Copy link`,icon:l,action:{type:`call`,handler:o}}),[e.id,l,o]),f=(0,V.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]);if(!e.onSplitClick){let t=i?e.successIcon??e.icon:e.icon;return(0,H.jsxs)(W,{variant:e.primary?`default`:`secondary`,className:U(e.iconOnly?`h-11 w-11 rounded-full p-0 sm:h-auto sm:min-h-[44px] sm:min-w-[44px] sm:w-auto sm:rounded-sm sm:px-1.5 sm:py-0.5 text-[10px] font-medium shadow-sm`:`h-11 w-11 rounded-full p-0 text-[10px] font-medium shadow-sm gap-0 sm:h-auto sm:min-h-[44px] sm:w-auto sm:gap-1 sm:rounded-sm sm:px-2 sm:py-0.5`,!e.primary&&`border border-border/50`,i&&`text-emerald-600 bg-emerald-500/15 dark:text-emerald-400 dark:bg-emerald-500/20 border-emerald-500/30`),title:e.label,"aria-label":e.label,"data-testid":e.id===`run`?OL.EDITOR_START_WORKOUT:void 0,onClick:e=>{f(e),s()},onMouseDown:f,onPointerDown:f,children:[(0,H.jsx)(`span`,{className:`flex items-center justify-center size-4 sm:size-3`,children:t}),!e.iconOnly&&(0,H.jsx)(`span`,{className:`sr-only sm:not-sr-only sm:inline`,children:e.label})]})}return(0,H.jsx)(`div`,{onClick:f,onMouseDown:f,onPointerDown:f,children:(0,H.jsx)(XB,{primary:u,secondary:d,size:`xs`,variant:e.primary?`primary`:`default`,className:`rounded-full sm:rounded-sm`,labelClassName:`sr-only sm:not-sr-only sm:inline`})})},kU=({view:e,commands:t})=>{let[n,r]=(0,V.useState)(()=>e?.plugin(HS)?.rects??[]),[i,a]=(0,V.useState)(0);(0,V.useEffect)(()=>{if(!e)return;let t=e.plugin(HS);t&&(r([...t.rects]),t.addListener(e=>r([...e])))},[e]),(0,V.useEffect)(()=>{if(!e)return;let t=e.scrollDOM,n=null,r=()=>{n===null&&(n=requestAnimationFrame(()=>{n=null,a(t.scrollTop)}))};return t.addEventListener(`scroll`,r,{passive:!0}),a(t.scrollTop),()=>{n!==null&&cancelAnimationFrame(n),t.removeEventListener(`scroll`,r)}},[e]);let o=e?e.plugin(HS):null,s=(n.length>0?n:o?.rects??[]).filter(e=>e.type===`time`||e.type===`log`);if(s.length===0)return null;let{sections:c}=e.state.field(wS),l=new Map(c.map(e=>[e.id,e]));return(0,H.jsx)(H.Fragment,{children:s.map(n=>{let r=l.get(n.sectionId);if(!r)return null;let a=EU(e,r),o=TU(t,Ca(r.type));return o.length===0?null:(0,H.jsx)(`div`,{className:`absolute right-1 z-10 flex items-end gap-1 pointer-events-auto`,style:{top:n.top-i,height:n.firstLineHeight},children:o.map(e=>(0,H.jsx)(OU,{cmd:e,block:a},e.id))},n.sectionId)})})},AU=({sections:e,isRuntimeActive:t,editorState:n,onSelectBlock:r})=>{let i=yE(),a=(0,V.useRef)(``);return(0,V.useEffect)(()=>{if(!i?.connected||t||!n)return;let r=e.filter(e=>e.type===`time`).map(e=>{let t=e.contentFrom!==void 0&&e.contentTo!==void 0?n.doc.sliceString(e.contentFrom,e.contentTo):``,r=t.split(`
141
+ `).filter(e=>e.trim().length>0),i=r.slice(0,3).join(`
142
+ `),a=t.match(/^(\d{1,2}:\d{2}(?::\d{2})?)/m)?.[1],o=r[0]?.substring(0,60)||`Workout`,s=e.type===`time`||e.type===`log`?e.type:`time`;return{id:e.id,title:o,statementCount:r.length,contentPreview:i,timerHint:a,dialect:s}}),o={type:`rpc-workbench-update`,mode:r.length>0?`preview`:`idle`,previewData:r.length>0?{title:r[0].title,blocks:r}:void 0},s=JSON.stringify(o);if(s!==a.current){a.current=s;try{i.send(o)}catch{}}},[i,e,t,n]),(0,V.useEffect)(()=>{i?.connected||(a.current=``)},[i]),(0,V.useEffect)(()=>{t||(a.current=``)},[t]),(0,V.useEffect)(()=>{if(!(!i?.connected||!r||!n))return i.onMessage(t=>{if(t.type!==`rpc-event`||t.name!==`select-block`)return;let{index:i,blockId:a}=t.data??{},o=e.filter(e=>e.type===`time`),s=a?o.find(e=>e.id===a):o[i??0];if(!s||!n)return;let c=s.contentFrom!==void 0&&s.contentTo!==void 0?n.doc.sliceString(s.contentFrom,s.contentTo):``;r({id:s.id,dialect:s.type===`time`||s.type===`log`?s.type:`time`,sport:s.sport,startLine:s.startLine-1,endLine:s.endLine-1,content:c,state:`idle`,version:1,createdAt:Date.now(),widgetIds:{}})})},[i,e,n,r,t]),null},jU={[G.Duration]:{label:`Timer`,icon:`⏱`,textClass:`text-metric-time`,bgClass:`bg-metric-time/10`,borderClass:`border-metric-time/30`},[G.Rep]:{label:`Reps`,icon:`✕`,textClass:`text-metric-rep`,bgClass:`bg-metric-rep/10`,borderClass:`border-metric-rep/30`},[G.Effort]:{label:`Exercise`,icon:`🏋`,textClass:`text-metric-effort`,bgClass:`bg-metric-effort/10`,borderClass:`border-metric-effort/30`},[G.Rounds]:{label:`Rounds`,icon:`↻`,textClass:`text-metric-rounds`,bgClass:`bg-metric-rounds/10`,borderClass:`border-metric-rounds/30`},[G.Distance]:{label:`Distance`,icon:`📏`,textClass:`text-metric-distance`,bgClass:`bg-metric-distance/10`,borderClass:`border-metric-distance/30`},[G.Resistance]:{label:`Weight`,icon:`⚖`,textClass:`text-metric-resistance`,bgClass:`bg-metric-resistance/10`,borderClass:`border-metric-resistance/30`},[G.Action]:{label:`Action`,icon:`⚡`,textClass:`text-metric-action`,bgClass:`bg-metric-action/10`,borderClass:`border-metric-action/30`},[G.Label]:{label:`Label`,icon:`🏷`,textClass:`text-muted-foreground`,bgClass:`bg-muted/30`,borderClass:`border-border/40`}},MU={[G.Rep]:`reps`,[G.Effort]:`movement`,[G.Resistance]:`weight`},NU=({metric:e,tooltip:t,isFocused:n,onClick:r})=>{let i=jU[e.type],a=e.type===G.Hint,o=e.image??(e.value===void 0?``:String(e.value)),s=i?.label??String(e.type);return(0,H.jsxs)(`span`,{title:t,onClick:r,className:U(`inline-flex items-center gap-1 px-2 py-0.5 rounded border text-[11px] font-medium`,`pointer-events-auto transition-opacity hover:opacity-80`,i?.bgClass??`bg-muted/30`,i?.textClass??`text-muted-foreground`,i?.borderClass??`border-border/40`,r&&`cursor-pointer`,n&&`font-bold shadow-sm`),children:[(0,H.jsx)(`span`,{children:a?e.icon:i?.icon??`•`}),!a&&(0,H.jsx)(`span`,{children:s}),!a&&o&&(0,H.jsx)(`span`,{className:`font-semibold`,children:o})]})};function PU(e,t){try{let n=e.coordsAtPos(t);if(!n)return null;let r=e.dom?.getBoundingClientRect?.()??{top:0,left:0},i=e.contentDOM?.getBoundingClientRect?.()??{left:0,width:0};return{top:n.bottom-r.top,left:i.left-r.left,width:i.width}}catch{return null}}var FU=({view:e,cursorVersion:t,getCursorFocusState:n})=>{let[r,i]=(0,V.useState)(null),[a,o]=(0,V.useState)(null),s=(0,V.useRef)(null),c=(0,V.useCallback)(()=>{if(!e){o(null),i(null);return}let t=(n??sB)(e.state);o(t),i(t?PU(e,t.lineFrom):null)},[e,n]);if((0,V.useEffect)(()=>{c()},[c,t]),(0,V.useEffect)(()=>{if(!e)return;let t=()=>c();return window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t,!0),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t,!0)}},[e,c]),!r||!a?.section)return null;let l=(a.allStatements?.filter(e=>e.meta?.line===a.cursorLine-a.section.startLine)??(a.statement?[a.statement]:[])).flatMap(e=>e.metrics.toArray()).filter(e=>e.type!==G.Sound&&e.type!==G.System&&!(e.type===G.Hint&&!e.icon)),u=GL(l,`runtime-badge`),d=t=>{let n=MU[t.type];n&&Wt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DT1tyXgc.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([2,1,0])).then(({runStatementBuilderFlow:t})=>{t(a,e,n)})};return(0,H.jsxs)(`div`,{ref:s,className:U(`cm-metric-inline-panel`,`absolute z-50 pointer-events-none`,`flex items-center gap-2 px-3 h-[28px]`,`bg-background/90 backdrop-blur-sm`,`border-l border-r border-border/50`,`transition-opacity duration-100`),style:{top:r.top,left:r.left,width:r.width,maxWidth:r.width},"aria-live":`polite`,"aria-label":`Metric inline panel`,children:[l.length>0?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-medium shrink-0 select-none`,children:`Metrics:`}),(0,H.jsx)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:l.map((e,t)=>(0,H.jsx)(NU,{metric:e,tooltip:e.type===G.Hint?String(e.value??``):u[t]?.tooltip,isFocused:a.focusedMetric===e,onClick:MU[e.type]?()=>d(e):void 0},`${e.type}-${t}`))})]}):(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 italic select-none`,children:`No metrics on this line`}),(0,H.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground/40 shrink-0 select-none`,children:`Ctrl+↑↓ · adjust value`})]})},IU=new vi,LU=new vi,RU=new vi;async function zU(e){let t=new TextEncoder().encode(e);if(typeof CompressionStream<`u`)try{let e=new CompressionStream(`gzip`),n=e.writable.getWriter(),r=e.readable.getReader();n.write(t),n.close();let i=[];for(;;){let{done:e,value:t}=await r.read();if(e)break;i.push(t)}let a=i.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.length;return btoa(String.fromCharCode(...o)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}catch{}return btoa(String.fromCharCode(...t)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}async function BU(e){let t=await zU(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`);return`${window.location.origin}/load?zip=${t}`}async function VU(e){let t=await zU(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`),n=`shared by ${xv()}`;return`${window.location.origin}/?z=${t}&by=${encodeURIComponent(n)}`}var HU=({noteId:e,noteBlocks:t,sourceRevision:n=0,onIdentityChange:r,onSaved:i,beforeRun:a,value:o,onChange:s,onDocUpdate:c,onCursorPositionChange:l,onBlur:u,theme:d=`vs`,readonly:f=!1,className:p=``,onStartWorkout:m,onCompleteWorkout:h,onBlocksChange:g,onAddToPlan:_,notePersistence:v,onViewCreated:y,mode:b=`edit`,lineWrapping:x=!0,showLineNumbers:S=!0,enablePreview:w=!0,showFrontmatter:T=!0,enableLinting:E=!0,enableOverlay:D=!1,commands:O,hideDefaultCommands:k=!1,enableInlineRuntime:A=!0,extensions:j,widgetComponents:M,activeSectionId:N,scrollToSectionId:P,results:F,placeholder:I})=>{let ee=(0,V.useRef)(null),L=(0,V.useRef)(null),te=(0,V.useRef)(null),R=(0,V.useRef)(``);(0,V.useEffect)(()=>{let e=async e=>{if(e.view!==L.current||!UU(e.state,e.pos))return null;let t=e.state.doc.lineAt(e.pos),n=t.text.slice(0,e.pos-t.from).match(/^([a-zA-Z][\w.-]*)$/),r=WU(e.state,e.pos);if(!n&&!r)return null;let[i,a]=await Promise.all([Z.getAllTagTypes().catch(()=>[]),Z.getAllTags().catch(()=>[])]);if(i.length===0)return null;if(n)return{from:t.from,options:i.map(e=>({label:e.name,detail:`Tag Type (${e.label})`,type:`property`,apply:`${e.name}:\n - `})),validFor:(e,t,n,r)=>/^[a-zA-Z][\w.-]*$/.test(e)&&UU(r,n)};if(!r)return null;let{propertyKey:o,from:s}=r,c=i.find(e=>e.name.toLowerCase()===o.toLowerCase());if(!c)return null;let l=a.filter(e=>e.type?.toLowerCase()===c.name.toLowerCase());return l.length===0?null:{from:s,options:l.map(e=>({label:e.label,detail:c.label,type:`constant`})),validFor:(e,t,n,r)=>{let i=WU(r,n);return/^[\w-]*$/.test(e)&&i?.propertyKey===o&&i.from===t}}};return RS(e),()=>{zS(e)}},[]);let ne=(0,V.useCallback)(()=>{uI.getState().open({placeholder:`Search…`,sources:[]})},[]),re=d===`dark`||d===`vs-dark`,ie=fB(te,v),[ae,oe]=(0,V.useState)(null),[se,ce]=(0,V.useState)([]),[le,ue]=(0,V.useState)(1),[de,fe]=(0,V.useState)(0),pe=N??ae,me=SB(se,pe),[he,ge]=(0,V.useState)(null),[_e,ve]=(0,V.useState)(null),[ye,be]=(0,V.useState)(!1),xe=(0,V.useRef)(null),Se=(0,V.useRef)(!1),Ce=(0,V.useRef)(n??0);(0,V.useEffect)(()=>{Ce.current=n??0},[n]);let[we,Te]=(0,V.useState)(null),Ee=(0,V.useRef)(null),De=(0,V.useCallback)(async(t,n=!1)=>{let r=L.current;if(!(!r||Se.current)){Se.current=!0,Te(null);try{let o=await a?.();typeof o==`number`&&(Ce.current=o);let s=r.state.field(wS),c=await LM({noteId:e??C(),rawContent:s.rawContent,blocks:s.noteBlocks,expectedSourceRevision:Ce.current,...e?{}:{metadata:{title:`Playground workout`},noteType:`playground`}},t,C(),e?void 0:`playground`,ie);xe.current=c,Ee.current=null,Ce.current=c.note.sourceRevision,r.dispatch({effects:gS.of({blocks:c.note.blocks,sourceRevision:c.note.sourceRevision})}),i?.({rawContent:c.note.rawContent,blocks:c.note.blocks,sourceRevision:c.note.sourceRevision}),be(n),ve(c.block)}catch(e){Te(e instanceof Error?e.message:String(e))}finally{Se.current=!1}}},[e,ie,i,a]),Oe=(0,V.useCallback)(()=>{ve(null),be(!1)},[]),ke=(0,V.useCallback)(e=>{A&&De(e,!0)},[A,De]),Ae=(0,V.useRef)(null),je=(0,V.useCallback)((e,t)=>{let n=Ae.current,r=n!==null&&n.results===t,i=xe.current;if(!i||!t)return Promise.reject(Error(`The saved run pin is unavailable.`));let a=i.session.id;if(Ee.current===a)return Promise.resolve();let o={id:i.block.id,contentId:i.session.blockContentId};if(!r&&t&&L.current){let t=L.current,n=sw(t.state,e,a);if(n){let e=n.from+n.insert.indexOf("```");t.dispatch({changes:n,effects:[Pr.scrollIntoView(e,{y:`start`,yMargin:96})]}),s?.(t.state.doc.toString())}}r||(Ae.current={results:t,resultId:a,runBlock:o});let c;try{c=WR(ie).record({resultId:a,noteId:i.session.noteId,blockId:i.session.blockId,data:t,createdAt:t.endTime}).then(()=>h?.(e,t,a,o))}catch(e){return Promise.reject(e instanceof Error?e:Error(String(e)))}return Promise.resolve(c).then(()=>{Ae.current?.results===t&&(Ae.current=null),Ee.current=a},()=>{}),c},[s,h,ie]),Me=(0,V.useMemo)(()=>{if(k)return[];if(O&&O.length>0)return O;let e=[];return A?e.push({id:`run`,label:`Run`,icon:(0,H.jsx)(sr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:De}):m&&e.push({id:`run`,label:`Run`,icon:(0,H.jsx)(sr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:m}),e.push({id:`playground`,label:`Playground`,icon:(0,H.jsx)(Ln,{className:`h-3 w-3`}),splitIcon:(0,H.jsx)(st,{className:`h-3 w-3`}),splitSuccessIcon:(0,H.jsx)(Vt,{className:`h-3 w-3`}),onClick:e=>{BU(e.content).then(e=>{let t=window.open(e,`wodwiki-playground`);t&&t.focus()})},onSplitClick:async e=>{let t=await VU(e.content);await navigator.clipboard.writeText(t)}}),_&&e.push({id:`plan`,label:`Plan`,icon:(0,H.jsx)(ft,{className:`h-3 w-3`}),onClick:_}),e},[O,m,_,A,k,De]),Ne=(0,V.useMemo)(()=>Ci({codeLanguages:mB}),[]),Pe=(0,V.useMemo)(()=>[...S?[oi(),Xr()]:[],Qr(),xi(),Lr(),Si(),...x?[Pr.lineWrapping]:[],di.allowMultipleSelections.of(!0),Fr(),Ni(),Zr(),Di(),bi.highest(Dr.of([{key:`Tab`,run:e=>Kr(e.state)!==null&&(Pi(e),!0)},{key:`Enter`,run:e=>{let t=e.state.selection.main,n=WU(e.state,t.head),r=e.state.doc.lineAt(t.head);return!t.empty||n?.value.trim()!==``||r.text.slice(t.head-r.from).trim()?!1:(kr(e),ci(e))}}])),Dr.of([...Gr,...si,..._i,...gi,...Mi,...yi,li,{key:`Mod-p`,run:()=>(ne(),!0)},{key:`Ctrl-.`,run:e=>{let t=sB(e.state);if(!t?.focusedMetric)return!1;let n=t.focusedMetric.type;return!new Set([`duration`,`rep`,`rounds`,`distance`,`resistance`]).has(n)&&(Wt(()=>Promise.resolve().then(()=>lI).then(()=>{Wt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DT1tyXgc.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([2,1,0])).then(({runStatementBuilderFlow:n})=>{n(t,e)}).catch(()=>{uI.getState().open({placeholder:`Modify metric…`,sources:[]})})}),void 0),!0)}}]),pw,wS,pS.of({blocks:t??Aa(o,{sourceRevision:Math.max(1,n),registeredWidgets:M?[...M.keys()]:wa}),sourceRevision:Math.max(1,n),rawContent:o}),mS.of(M?[...M.keys()]:wa),TS,nC.of(T),...w||!T?[yC]:[],...w?[ZS,eC,dB(),IC,AC(),qC]:[],...E?[AS]:[],BS,IS,FS,...D?[mw]:[],HS,fS,uB,...$C,cS,...M&&M.size>0?[Kw(M)]:[],Sw({executor:vN,onResultSaved:HR,readOnly:f,noteHref:e=>WI(`blockContentId`in e||`dataType`in e?LN(e):jN(e))}),pB(e,ie),Pr.domEventHandlers({blur:()=>(u?.(),!1)}),Pr.updateListener.of(e=>{if(e.docChanged){let t=e.state.field(wS);r?.({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:t.sourceRevision}),s(t.rawContent),c?.(e),KU(e.state,g,R)}if(e.selectionSet||e.docChanged){fe(e=>e+1),e.transactions.some(e=>e.isUserEvent(`delete.backward`))&&Kr(e.startState)!==null&&Kr(e.state)===null&&WU(e.state,e.state.selection.main.head)?.value===``&&queueMicrotask(()=>{e.view.state===e.state&&fi(e.view)});let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t);l?.(n.number,t-n.from+1);let r=DS(e.state);oe(r?.id??null),ue(n.number);let{sections:i}=e.state.field(wS);ce(i)}}),di.readOnly.of(f),Pr.editable.of(!f),...I?[Oi(I)]:[]],[s,l,u,c,g,r,f,ne,S,x,w,T,E,D,e,ie,M,I]);return(0,V.useEffect)(()=>{let e=ee.current;if(!e)return;let t=di.create({doc:o,extensions:[...Pe,IU.of(sS(re)),LU.of(Ne),RU.of([]),...j??[]]}),n=new Pr({state:t,parent:e}),i=window.visualViewport,a=0,s=()=>{cancelAnimationFrame(a),a=requestAnimationFrame(()=>{n.hasFocus&&i?.scale===1&&i.height<window.innerHeight&&n.dispatch({effects:Pr.scrollIntoView(n.state.selection.main.head,{y:`nearest`,yMargin:24})})})};i?.addEventListener(`resize`,s),n.contentDOM.addEventListener(`focus`,s),L.current=n,ge(n),e.__codemirrorView=n,y?.(n);let{sections:c}=n.state.field(wS);ce(c);let l=n.state.doc.lineAt(n.state.selection.main.head).number;ue(l);let u=DS(n.state);oe(u?.id??null);let d=n.state.field(wS);return r?.({rawContent:d.rawContent,blocks:d.noteBlocks,sourceRevision:d.sourceRevision}),KU(n.state,g,R),()=>{cancelAnimationFrame(a),i?.removeEventListener(`resize`,s),n.contentDOM.removeEventListener(`focus`,s),delete e.__codemirrorView,ge(null),n.destroy()}},[]),(0,V.useEffect)(()=>{let e=L.current;if(!e)return;let r=e.state.field(wS);o===r.rawContent?t&&n!==r.sourceRevision&&e.dispatch({effects:gS.of({blocks:t,sourceRevision:n})}):e.dispatch({changes:{from:0,to:e.state.doc.length,insert:o},...t?{effects:_S.of({rawContent:o,blocks:t,sourceRevision:n})}:{}})},[o,t,n]),(0,V.useEffect)(()=>{L.current&&L.current.dispatch({effects:IU.reconfigure(sS(re))})},[re]),(0,V.useEffect)(()=>{if(L.current){let e=[];L.current.dispatch({effects:[ii.reconfigure.of([...Pe,IU.of(sS(re)),LU.of(Ne),RU.of(e),...j??[]])]})}},[Pe,j,b,re,Ne]),(0,V.useEffect)(()=>{f||L.current?.focus()},[f]),(0,V.useEffect)(()=>{if(P&&L.current){let e=L.current,t=e.state.doc.toString().split(`
143
+ `),n=-1,r=P.match(/-line-(\d+)$/);if(n=r?parseInt(r[1],10)-1:t.findIndex(e=>{let t=e.match(/^(#{1,6})\s+(.*)$/);if(t){let e=t[2].trim(),n=e.match(/(\d{1,2}:\d{2})/);if(n){let t=n[1];e=e.replace(t,``).replace(/\s+/g,` `).trim(),e||=t}return e.toLowerCase().replace(/[^\w]+/g,`-`)===P}return!1}),n>=0&&n<t.length){let t=e.state.doc.line(n+1).from;e.dispatch({selection:{anchor:t,head:t},effects:[Pr.scrollIntoView(t,{y:`start`,yMargin:20})]})}}},[P]),(0,H.jsxs)(`div`,{ref:ee,className:`cm-note-editor relative w-full min-w-0 ${p}`,children:[D&&(0,H.jsx)(_B,{view:he??L.current,widths:me.widths,activeSectionId:pe,renderSlot:t=>{if(!T&&t.sectionType===`frontmatter`)return null;if(t.sectionType===`time`||t.sectionType===`log`)return(0,H.jsx)(lV,{noteId:e,sectionId:t.sectionId,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,cursorLine:le,docVersion:t.docVersion,commands:Me,extendedResults:F,hoverLine:t.hoverLine,stickyTopOffset:t.stickyTopOffset,isPanelHovered:t.isPanelHovered,lineDocY:t.lineDocY,rect:t.rect});if(t.sectionType===`frontmatter`||t.sectionType===`embed`){let{sections:e}=t.view.state.field(wS),n=e.find(e=>e.id===t.sectionId);return(0,H.jsx)(UB,{sectionId:t.sectionId,section:n,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,docVersion:t.docVersion})}return t.sectionType===`widget`&&t.widgetName?(0,H.jsx)(uV,{sectionId:t.sectionId,widgetName:t.widgetName,view:t.view,registry:M??new Map,docVersion:t.docVersion}):(0,H.jsx)(`div`,{className:`h-full w-full bg-popover/80 backdrop-blur-sm border-l border-border rounded-l-md p-2 text-xs text-muted-foreground`,children:(0,H.jsx)(`div`,{className:`font-medium text-foreground`,children:t.sectionType})})},cursorLine:le}),we&&(0,H.jsxs)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:[`Workout not started. `,we,` Your draft is kept.`]}),!D&&Me.length>0&&(0,H.jsx)(kU,{view:he??L.current,commands:Me}),(0,H.jsx)(FU,{view:he??L.current,cursorVersion:de}),_e&&L.current&&(0,H.jsx)(SU,{block:_e,view:he??L.current,onClose:Oe,onCompleteWorkout:je,autoStart:ye}),(0,H.jsx)(AU,{sections:se,isRuntimeActive:_e!==null,editorState:(he??L.current)?.state??null,onSelectBlock:ke})]})};function UU(e,t){let n=e.doc.lineAt(t);if(n.number===1||e.doc.line(1).text.trim()!==`---`)return!1;for(let t=2;t<=n.number;t++)if(/^(---|\.\.\.)\s*$/.test(e.doc.line(t).text))return!1;return!0}function WU(e,t){if(!UU(e,t))return null;let n=e.doc.lineAt(t),r=n.text.slice(0,t-n.from),i=r.match(/^([a-zA-Z][\w.-]*)\s*:\s*(.*)$/);if(i)return{propertyKey:i[1],from:t-i[2].length,value:i[2]};let a=r.match(/^\s*-\s*(.*)$/);if(!a)return null;for(let r=n.number-1;r>1;r--){let n=e.doc.line(r).text.match(/^([a-zA-Z][\w.-]*)\s*:/);if(n)return{propertyKey:n[1],from:t-a[1].length,value:a[1]}}return null}function GU(e,t){if(e.type!==`time`&&e.type!==`log`)return null;let n=e.contentFrom!==void 0&&e.contentTo!==void 0?t.doc.sliceString(e.contentFrom,e.contentTo):``,r=[];try{n.trim()&&(r=vs().read(n,e.sport).statements??[])}catch{}return{id:e.id,contentId:e.contentId,dialect:e.type,sport:e.sport,startLine:e.startLine-1,endLine:e.endLine-1,content:n,statements:r,state:`idle`,version:t.field(wS).noteBlocks[e.id]?.version??1,createdAt:Date.now(),widgetIds:{}}}function KU(e,t,n){if(!t)return;let r=e.field(wS).sections.filter(e=>e.type===`time`||e.type===`log`).map(t=>GU(t,e)).filter(e=>e!==null),i=JSON.stringify(r.map(e=>({id:e.id,startLine:e.startLine,endLine:e.endLine,content:e.content})));i!==n.current&&(n.current=i,t(r))}function qU({title:e,subtitle:t,doc:n,onDocChange:r,noteId:i,onBlocksChange:a,theme:o,readonly:s=!1,showLineNumbers:c=!1,enableOverlay:l=!1,enableInlineRuntime:u=!1,enablePreview:d=!0,showFrontmatter:f=!1,enableLinting:p=!0,commands:m,hideDefaultCommands:h,onViewCreated:g,onReset:_,run:v,headerActions:y,subheader:b,children:x,className:S,editorClassName:C,bodyRef:w}){let T=(0,V.useRef)([]),E=(0,V.useCallback)(e=>{T.current=e,a?.(e)},[a]),D=(0,V.useCallback)(()=>{v?.onRun(n,T.current[0]??null)},[v,n]),O=(0,H.jsxs)(H.Fragment,{children:[y,v&&(0,H.jsxs)(`button`,{ref:v.ref,type:`button`,title:v.title??`Run the workout`,onClick:D,className:`inline-flex items-center gap-1.5 rounded-md bg-primary px-2.5 py-1 text-[11px] font-medium text-primary-foreground transition-colors hover:bg-primary/90`,children:[(0,H.jsx)(sr,{size:11,fill:`currentColor`}),v.label??`Run`]})]});return(0,H.jsx)(tB,{title:e,subtitle:t,onReset:_,headerActions:O,className:S,children:(0,H.jsxs)(`div`,{className:`flex h-full flex-col min-h-0`,children:[b,(0,H.jsxs)(`div`,{ref:w,className:U(`relative flex-1 min-h-0`,C),children:[(0,H.jsx)(HU,{noteId:i,value:n,onChange:r,onBlocksChange:E,theme:o,readonly:s,showLineNumbers:c,enableOverlay:l,enableInlineRuntime:u,enablePreview:d,showFrontmatter:f,enableLinting:p,commands:m,hideDefaultCommands:h,onViewCreated:g,className:`h-full`}),x]})]})})}function JU({editorSource:e,editorOpacity:t,activeOriginalSource:n,handleEditorChange:r,onResetToSource:i,canvasNoteId:a,theme:o,commands:s,onBlocksChange:c,onViewCreated:l,panelTitle:u,panelSubtitle:d,panelThemeClass:f,headerActions:p,onRun:m,readonly:h=!1,showFrontmatter:g}){return(0,H.jsx)(`div`,{className:`h-full`,style:{opacity:t,transition:`opacity 180ms ease`},children:(0,H.jsx)(qU,{title:u,subtitle:d,doc:e,onDocChange:r,noteId:a,onBlocksChange:c,onViewCreated:l,theme:o,readonly:h,showLineNumbers:!1,showFrontmatter:g,enableOverlay:!1,enableInlineRuntime:!1,commands:s,hideDefaultCommands:!1,headerActions:p,className:f,subheader:(0,H.jsxs)(`div`,{style:{opacity:t,transition:`opacity 180ms ease`},className:`flex items-center justify-between gap-3 border-b border-border/40 bg-primary/5 px-4 py-2 text-[11px] font-bold uppercase tracking-[0.18em] text-muted-foreground`,children:[(0,H.jsx)(`span`,{children:`Try editing this example ↓`}),e===n?null:(0,H.jsx)(`button`,{type:`button`,onClick:()=>{i()},className:`rounded-full border border-primary/30 px-3 py-1 text-[10px] font-black text-primary transition-colors hover:bg-primary/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50`,children:`Reset to example`})]}),run:m?{onRun:m}:void 0})})}function YU(e,t){return e>=t?`split`:`stack`}function XU(e,t){let n=(0,V.useCallback)(()=>{if(typeof window>`u`)return{width:0,height:0,mode:`stack`};let t=window.innerWidth,n=Math.max(0,window.innerHeight-e);return{width:t,height:n,mode:YU(t,n)}},[e]),[r,i]=(0,V.useState)(n);return(0,V.useEffect)(()=>{if(t&&typeof ResizeObserver<`u`){let e=new ResizeObserver(([e])=>{let{width:t,height:n}=e.contentRect;i(e=>e.width===t&&e.height===n?e:{width:t,height:n,mode:YU(t,n)})});return e.observe(t),()=>e.disconnect()}let e=()=>i(e=>{let t=n();return e.width===t.width&&e.height===t.height?e:t});return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[t,n]),r}var ZU=e=>Math.max(0,Math.min(1,e)),QU=(e,t,n)=>e+(t-e)*n,$U=e=>1-(1-e)**2;function eW(e,t){return e===``||t===e}var tW={id:``,range:[0,1]};function nW(e,t){if(!t||t.length===0)return{index:-1,stage:tW,t:0,ring:null};let n=ZU(e),r=t.map(e=>({...e,start:ZU(Math.min(e.range[0],e.range[1])),end:ZU(Math.max(e.range[0],e.range[1]))})),i=r.findIndex(e=>n>=e.start&&n<e.end);i===-1&&(i=n>=1?r.length-1:0);let a=r[i]??tW,o=(a.end??1)-(a.start??0),s=o>0?ZU((n-(a.start??0))/o):0,c=a.ring?{tag:a.ring===!0?void 0:a.ring.tag,key:a.ring===!0?void 0:a.ring.key,lines:a.ring===!0?void 0:a.ring.lines}:null;return{index:i,stage:a,t:s,ring:c}}function rW(e,t,n){let r=t-n;return{progress:r>0?ZU(-e/r):0,reached:e<=0,inView:e<n&&e+t>0}}function iW(e,t){let n=t/2;for(let t of e)if(t.top<=n&&t.bottom>n)return t.id;return null}var aW=(0,V.createContext)(null);function oW(){return(0,V.useContext)(aW)}function sW({children:e}){let t=(0,V.useRef)(new Map),n=(0,V.useRef)(new Map),r=(0,V.useRef)(null),i=(0,V.useRef)(0),[a,o]=(0,V.useState)(null),s=(0,V.useRef)(null),c=(0,V.useCallback)(e=>{r.current?.gateId===e&&(r.current=null,o(null))},[]),l=(0,V.useCallback)((e,t)=>{r.current={gateId:e,segmentId:t},o(e)},[]),u=(0,V.useCallback)(()=>{i.current&&cancelAnimationFrame(i.current),i.current=0;let e=window.innerHeight,a=new Map,c=(e,t)=>{let n=t();n&&a.set(e,n.getBoundingClientRect())};t.current.forEach((e,t)=>c(t,e)),n.current.forEach((e,t)=>c(t,e.getEl));let l=[];a.forEach((e,t)=>l.push({id:t,top:e.top,bottom:e.top+e.height}));let u=iW(l,e);if(u!==s.current){s.current=u;let e=r.current;e&&e.segmentId!==u&&(r.current=null,o(null))}n.current.forEach((t,n)=>{let r=a.get(n);if(!r||r.height-e<=0)return;let i=rW(r.top,r.height,e);t.onMeasure({slice:nW(i.progress,t.getStages()),progress:i.progress,reached:i.reached})})},[]),d=(0,V.useCallback)(()=>{i.current||=requestAnimationFrame(u)},[u]);(0,V.useEffect)(()=>(window.addEventListener(`scroll`,d,{passive:!0,capture:!0}),window.addEventListener(`resize`,d),u(),()=>{window.removeEventListener(`scroll`,d,{capture:!0}),window.removeEventListener(`resize`,d),i.current&&cancelAnimationFrame(i.current)}),[d,u]);let f=(0,V.useCallback)((e,n)=>(t.current.set(e,n),d(),()=>{t.current.delete(e)}),[d]),p=(0,V.useCallback)((e,t)=>(n.current.set(e,t),d(),()=>{n.current.delete(e)}),[d]),m=(0,V.useCallback)(()=>u(),[u]),h=(0,V.useMemo)(()=>({registerAnchor:f,registerDriver:p,resync:m,capturedGateId:a,captureGate:l,releaseGate:c}),[f,p,m,a,l,c]);return(0,H.jsx)(aW.Provider,{value:h,children:e})}function cW(e,t){let n=oW()?.registerAnchor;(0,V.useEffect)(()=>{if(n)return n(e,()=>t.current)},[n,e,t])}function lW({gateId:e,segmentId:t,className:n,children:r}){let i=oW(),a=(0,V.useRef)(null),[o,s]=(0,V.useState)(!1);if((0,V.useEffect)(()=>{let e=a.current;if(!e||typeof ResizeObserver>`u`)return;let t=()=>{let t=e.querySelectorAll(`.cm-scroller, [data-scroll-pane], .overflow-auto, .overflow-y-auto`);s(e.scrollHeight>e.clientHeight+1||[...t].some(e=>e.scrollHeight>e.clientHeight+1))},n=new ResizeObserver(t);n.observe(e);let r=0,i=new MutationObserver(()=>{t(),window.clearTimeout(r),r=window.setTimeout(t,400)});i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`style`]}),window.addEventListener(`resize`,t);let o=window.setTimeout(t,1200);return t(),()=>{window.clearTimeout(r),window.clearTimeout(o),n.disconnect(),i.disconnect(),window.removeEventListener(`resize`,t)}},[]),!i)return(0,H.jsx)(`div`,{className:n,children:r});let c=i.capturedGateId===e?`captured`:`yield`;return(0,H.jsxs)(`div`,{"data-scroll-gate":c,"data-gate-id":e,className:`${n??``} flex flex-col`,onFocus:n=>{let r=n.target;r instanceof HTMLElement&&r.closest(`input:not([readonly]):not([disabled]), textarea:not([readonly]):not([disabled]), select:not([disabled]), [contenteditable="true"]`)&&i.captureGate(e,t??null)},onBlur:t=>{(!(t.relatedTarget instanceof Node)||!t.currentTarget.contains(t.relatedTarget))&&i.releaseGate(e)},children:[(0,H.jsx)(`div`,{ref:a,className:`relative min-h-0 flex-1`,children:r}),(o||c===`captured`)&&(0,H.jsx)(`button`,{type:`button`,className:`min-h-11 self-start rounded px-3 py-2 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-primary`,"aria-label":`Scroll ${e.replace(/-/g,` `)} content`,"aria-pressed":c===`captured`,onClick:()=>c===`captured`?i.releaseGate(e):i.captureGate(e,t??null),onKeyDown:t=>{t.key===`Escape`&&i.releaseGate(e)},children:c===`captured`?`Scroll page`:`Scroll panel`})]})}function uW({trackRef:e,height:t,stages:n,activeIndex:r,pane:i,captions:a,status:o,segmentId:s,testId:c,className:l}){let[u,d]=(0,V.useState)(null),f=XU(104,u).mode===`split`;return(0,H.jsx)(`section`,{ref:e,"data-testid":c,className:l?`relative ${l}`:`relative`,style:{height:t},children:(0,H.jsxs)(`div`,{className:`sticky top-[65px] flex h-[calc(100dvh-65px)] flex-col overflow-hidden lg:top-[104px] lg:h-[calc(100dvh-104px)]`,children:[(0,H.jsxs)(`div`,{className:`mx-auto flex min-h-[46px] w-full max-w-[1500px] 2xl:max-w-[1720px] items-center justify-between gap-4 px-6 pt-3 pb-2 lg:px-12 xl:px-16 xl:pt-4 xl:pb-3`,children:[(0,H.jsx)(`div`,{className:`flex min-w-0 flex-1`,children:o}),(0,H.jsx)(`div`,{className:`flex items-center gap-1.5`,"aria-hidden":`true`,children:n.map((e,t)=>{let n=r===t;return(0,H.jsx)(`span`,{className:`h-1 rounded-full transition-all duration-300`,style:{width:n?30:10,background:n?e.accent??`hsl(var(--primary))`:r>t?`hsl(var(--foreground))`:`hsl(var(--foreground) / 0.15)`}},e.id)})})]}),(0,H.jsxs)(`div`,{ref:d,className:`mx-auto flex min-h-0 w-full max-w-[1500px] 2xl:max-w-[1720px] flex-1 px-5 pb-5 lg:px-10 xl:px-16 xl:pb-8 2xl:pb-10 ${f?`flex-row items-stretch gap-[clamp(20px,2.5vw,56px)] xl:gap-12 2xl:gap-16`:`flex-col gap-6 xl:gap-8`}`,children:[(0,H.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-[3_1_0%]`,children:i}),(0,H.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-[2_1_0%] flex-col`,children:s?(0,H.jsx)(lW,{gateId:`${s}-captions`,segmentId:s,className:`relative min-h-0 flex-1`,children:a}):(0,H.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:a})})]})]})})}function dW(e){let t=e.parentElement;for(;t;){let e=window.getComputedStyle(t).overflowY;if(e===`auto`||e===`scroll`)return t;t=t.parentElement}return window}function fW(e,t,n=`smooth`){let r=dW(e),i=e.offsetHeight-window.innerHeight;if(i<=0)return;if(r instanceof HTMLElement){let a=e.offsetTop;r.scrollTo({top:a+t*i,behavior:n});return}let a=e.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:a+t*i,behavior:n})}function pW(e,t,n,r){let[i,a]=(0,V.useState)(()=>nW(0,n)),[o,s]=(0,V.useState)(!1),c=(0,V.useRef)(0),l=(0,V.useRef)(i),u=(0,V.useRef)(new Set),d=(0,V.useRef)(0),f=(0,V.useRef)(t);f.current=t;let p=oW(),m=p?.registerDriver,h=(0,V.useRef)(p);h.current=p;let g=(0,V.useId)(),_=r??g,v=(0,V.useRef)(n);v.current=n;let y=(0,V.useCallback)((e,t)=>{let n=l.current;l.current=e,c.current=t,(n.index!==e.index||n.ring?.key!==e.ring?.key)&&a(e),u.current.forEach(n=>n(e,t))},[]),b=(0,V.useCallback)(()=>{if(d.current=0,f.current)return;let t=e.current;if(!t)return;let n=t.getBoundingClientRect(),r=n.height-window.innerHeight;if(r<=0)return;let i=Math.max(0,Math.min(1,-n.top/r));s(n.top<=0),y(nW(i,v.current),i)},[e,y]),x=(0,V.useCallback)(()=>{if(h.current){h.current.resync();return}b()},[b]),S=(0,V.useCallback)(()=>{d.current||=requestAnimationFrame(x)},[x]);(0,V.useEffect)(()=>{if(m)return m(_,{getEl:()=>e.current,getStages:()=>v.current,onMeasure:({slice:e,progress:t,reached:n})=>{f.current||(s(n),y(e,t))}})},[m,_,e,y]),(0,V.useEffect)(()=>{if(!m)return window.addEventListener(`scroll`,S,{passive:!0,capture:!0}),window.addEventListener(`resize`,S),b(),()=>{window.removeEventListener(`scroll`,S,{capture:!0}),window.removeEventListener(`resize`,S),d.current&&cancelAnimationFrame(d.current)}},[m,S,b]);let C=(0,V.useCallback)(e=>(u.current.add(e),e(l.current,c.current),()=>{u.current.delete(e)}),[]),w=(0,V.useCallback)(()=>{x()},[x]);return{slice:i,progress:c.current,runwayReached:o,subscribe:C,resync:w}}var mW={reference:!0},hW={start:[[`fences`,`first-workout`],[`measurements`,`actions-comments`],[`system`,`try-it`]],protocols:[[`countdown-countup`,`required-rest`],[`amrap`,`emom`],[`tabata-intervals`,`caps`,`distance-intervals`,`try-it`]],structure:[[`rounds`,`rep-schemes`,`sets`],[`nesting`,`rep-math`,`named-sections`,`try-it`]],metrics:[[`planned-vs-recorded`,`custom-metrics`],[`capture`,`session-rpe`],[`calculated`,`try-it`]],clock:[[`run-next`,`pause-skip`],[`capture-prompts`,`casting`,`provenance`,`try-it`]],wql:[[`planes`,`aggregate`,`filters`,`sources`],[`windows`,`grouping-rollup`,`joins`],[`content`,`pipes`,`try-it`]],dashboards:[[`note-frontmatter`,`avg-tis`,`weekly-tonnage`,`widgets`],[`composer`,`cookbook`,`seeded-boards`,`try-it`]],sessions:[[`intent`,`full-session`],[`nested`,`partner`,`swimming`],[`barbell-cycling`,`climbing`,`try-it`]]};function gW(e,t){let n=e.filter(e=>!mW[e.id]),r=e.filter(e=>mW[e.id]);if(n.length===0)return{groups:[],tail:r};let i=t?hW[t]:void 0;if(i){let e=new Map(n.map(e=>[e.id,e])),t=new Set,a=[];for(let n of i){let r=n.map(t=>e.get(t)).filter(e=>!!e&&!t.has(e.id));for(let e of r)t.add(e.id);r.length>0&&a.push(r)}let o=n.filter(e=>!t.has(e.id));if(o.length>0){let e=a[a.length-1];if(e&&e.length+o.length<=4)e.push(...o);else for(let e=0;e<o.length;e+=4)a.push(o.slice(e,e+4))}if(a.length>0)return{groups:a,tail:r}}let a=Math.max(1,Math.ceil(n.length/4)),o=Math.floor(n.length/a),s=n.length%a,c=[],l=0;for(let e=0;e<a;e++){let t=o+ +(e<s);c.push(n.slice(l,l+t)),l+=t}return{groups:c,tail:r}}function _W(e){let t=Math.max(1,e.length);return e.map((e,n)=>({id:e.id,range:[n/t,(n+1)/t]}))}var vW=[{src:`/images/hero/editing.png`,alt:`WhiteboardScript editor with live syntax highlighting and inline previews`,eyebrow:`Write`,title:`Type your workout in plain Markdown.`,caption:"Movements, reps, time caps, and rounds — fenced in a familiar ```time block. No drag-and-drop. No proprietary DSL."},{src:`/images/hero/timer.png`,alt:`Live runtime timer HUD counting down an interval with active round and rest indicators`,eyebrow:`Run`,title:`Press Run. The compiler takes over.`,caption:`Your Markdown becomes a live wallclock. The JIT engine dispatches rounds, counts reps, and tracks rest — all offline.`},{src:`/images/hero/journal.png`,alt:`Unified Library listing journal notes, Catalog sessions, and dated posts`,eyebrow:`Library`,title:`Browse Notes, Sessions, and Posts in one Library.`,caption:`Your dated journal entries and preloaded Catalog benchmarks live in one unified surface. Search, filter by source, or clone to today’s entry.`},{src:`/images/hero/results.png`,alt:`WQL Metric Explorer displaying volume trends and embedded dashboard blocks`,eyebrow:`Query`,title:`Ask questions with Wod Query Language (WQL).`,caption:`Aggregate volume, track TIS intensity trends, or embed live query and dashboard blocks directly in your Markdown notes.`}];function yW({slides:e=vW,className:t}){let n=(0,V.useRef)(null),[r,i]=(0,V.useState)(0);(0,V.useEffect)(()=>{let t=n.current;if(!t)return;let r=()=>{let n=t.clientWidth,r=Math.round(t.scrollLeft/n);i(Math.min(Math.max(r,0),e.length-1))};return t.addEventListener(`scroll`,r,{passive:!0}),()=>t.removeEventListener(`scroll`,r)},[e.length]);let a=e=>{let t=n.current;t&&t.scrollTo({left:e*t.clientWidth,behavior:`smooth`})};return(0,H.jsxs)(`div`,{className:U(`relative w-full`,t),children:[(0,H.jsx)(`div`,{ref:n,className:`flex w-full snap-x snap-mandatory overflow-x-auto scroll-smooth scrollbar-none`,style:{scrollbarWidth:`none`},children:e.map((t,n)=>(0,H.jsxs)(`article`,{className:`relative flex w-full shrink-0 snap-start flex-col gap-4 sm:flex-row sm:items-center sm:gap-8`,"aria-label":`Slide ${n+1} of ${e.length}: ${t.title}`,children:[(0,H.jsx)(`div`,{className:`relative aspect-[16/10] w-full overflow-hidden rounded-2xl border border-border/60 bg-muted shadow-sm sm:w-1/2`,children:(0,H.jsx)(`img`,{src:t.src,alt:t.alt,loading:n===0?`eager`:`lazy`,className:`h-full w-full object-cover`})}),(0,H.jsxs)(`div`,{className:`flex w-full flex-col gap-2 sm:w-1/2 sm:gap-3`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-[0.24em] text-primary/80`,children:t.eyebrow}),(0,H.jsx)(`h3`,{className:`text-2xl font-black tracking-[-0.04em] text-foreground sm:text-3xl`,children:t.title}),(0,H.jsx)(`p`,{className:`text-sm leading-7 text-muted-foreground sm:text-base`,children:t.caption}),(0,H.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-2 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground`,children:[(0,H.jsxs)(`span`,{className:`text-primary`,children:[`Step `,n+1]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,H.jsx)(`span`,{children:e.length})]})]})]},t.src))}),(0,H.jsx)(`div`,{className:`mt-4 flex items-center justify-center gap-2`,children:e.map((e,t)=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>a(t),"aria-label":`Go to slide ${t+1}: ${e.title}`,"aria-current":t===r?`true`:`false`,className:U(`h-2 rounded-full transition-all`,t===r?`w-8 bg-primary`:`w-2 bg-border hover:bg-muted-foreground/40`)},e.src))})]})}var bW=`wodwiki:text-filter-navigation`,xW=({paramName:e=`q`,placeholder:t=`Search…`,autoFocus:n=!1,className:r,navigationScope:i,inputTestId:a})=>{let[o,s]=Jt(e,{defaultValue:``}),c=i??e,l=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let e=e=>{e.key===`/`&&document.activeElement?.tagName!==`INPUT`&&document.activeElement?.tagName!==`TEXTAREA`&&(e.preventDefault(),l.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,H.jsxs)(`div`,{className:U(`flex items-center gap-3 px-6 lg:px-10 pb-3`,r),children:[(0,H.jsx)(an,{className:`size-5 text-muted-foreground shrink-0`}),(0,H.jsx)(`input`,{ref:l,type:`text`,"data-testid":a,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{if(e.altKey||e.ctrlKey||e.metaKey||![`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`Enter`].includes(e.key))return;let t=new CustomEvent(bW,{detail:{key:e.key,scopeId:c},cancelable:!0});window.dispatchEvent(t),t.defaultPrevented&&e.preventDefault()},placeholder:t,autoFocus:n,autoComplete:`off`,spellCheck:!1,className:`flex-1 bg-transparent border-none outline-none text-foreground placeholder:text-muted-foreground text-sm sm:text-base font-medium`}),o&&(0,H.jsx)(`button`,{onClick:()=>s(``),"aria-label":`Clear`,className:`text-muted-foreground hover:text-foreground transition-colors text-lg leading-none`,children:`×`})]})};function SW(e){let t=[],n=!1;for(let r of e){if(r.trim()===`---`){n=!n;continue}n||t.push(r)}return t}function CW(e){let t=e;return t=t.replace(/\*\*([^*]+)\*\*/g,`$1`),t=t.replace(/__([^_]+)__/g,`$1`),t=t.replace(/`([^`]+)`/g,`$1`),t=t.replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`),t=t.replace(/\*\*/g,``),t=t.replace(/__/g,``),t=t.replace(/`/g,``),t.trim()}function wW(e){return new Date(e).toISOString().slice(0,10)}function TW(e,t){let n=t.trim().toLowerCase();return!n||e.name.toLowerCase().includes(n)||e.content.toLowerCase().includes(n)||e.date!==void 0&&wW(e.date).includes(n)}function EW(e){if(!e)return null;let t=SW($v(e).split(`
144
+ `)).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&!e.startsWith("```"))[0];return t?CW(t):null}var DW=({category:e,workoutItems:t,onSelect:n,showSearch:r=!0,variant:i=`card`,className:a,navigationScope:o=`q`,getItemActions:s})=>{let[c]=Jt(`q`,{defaultValue:``}),[l,u]=(0,V.useState)(0),[d,f]=(0,V.useState)(0),p=(0,V.useRef)([]),m=(0,V.useMemo)(()=>t.filter(t=>t.category===e&&t.name.toLowerCase()!==`readme`).filter(e=>TW(e,c)),[t,e,c]),h=(0,V.useMemo)(()=>m.map(e=>({item:e,preview:EW(e.content),actions:s?.(e)??[{id:`open`,label:`Open`,onSelect:n}]})),[m,s,n]);return(0,V.useEffect)(()=>{if(h.length===0){u(0),f(0);return}let e=Math.min(l,h.length-1),t=h[e]?.actions.length??1;e!==l&&u(e),d>t-1&&f(t-1)},[h,d,l]),(0,V.useEffect)(()=>{p.current=[]},[h]),(0,V.useEffect)(()=>{u(0),f(0)},[c]),(0,V.useEffect)(()=>{(p.current[l]?.[d])?.scrollIntoView({block:`nearest`,inline:`nearest`})},[d,l]),(0,V.useEffect)(()=>{let e=e=>{let t=e;if(t.detail.scopeId===o&&h.length!==0)switch(t.detail.key){case`ArrowDown`:t.preventDefault(),u(e=>Math.min(e+1,h.length-1)),f(0);break;case`ArrowUp`:t.preventDefault(),u(e=>Math.max(e-1,0)),f(0);break;case`ArrowRight`:{let e=h[l]?.actions.length??1;if(e<=1)return;t.preventDefault(),f(t=>Math.min(t+1,e-1));break}case`ArrowLeft`:if((h[l]?.actions.length??1)<=1)return;t.preventDefault(),f(e=>Math.max(e-1,0));break;case`Enter`:{let e=h[l]?.actions[d],n=h[l]?.item;if(!e||!n)return;t.preventDefault(),e.onSelect(n);break}}};return window.addEventListener(bW,e),()=>{window.removeEventListener(bW,e)}},[h,o,d,l]),(0,H.jsxs)(`div`,{className:U(`flex flex-col`,i===`card`&&`rounded-3xl border border-border bg-card overflow-hidden shadow-2xl shadow-black/5`,a),children:[r?(0,H.jsx)(`div`,{className:`border-b border-border/60 bg-background/95 backdrop-blur-md`,children:(0,H.jsx)(xW,{placeholder:`Filter collection workouts…`,className:`pt-3`,navigationScope:o})}):null,h.length===0?(0,H.jsx)(`div`,{className:`px-6 py-10 text-sm font-medium text-muted-foreground`,children:`No workouts found.`}):(0,H.jsx)(`div`,{className:`divide-y divide-border/60`,role:`listbox`,"aria-label":`Collection workouts`,children:h.map((e,t)=>{let n=t===l;return(0,H.jsx)(`div`,{role:`option`,"aria-selected":n,className:U(`flex items-stretch gap-2 px-3 py-2 transition-colors`,n?`bg-muted/50`:`hover:bg-muted/40`),children:e.actions.map((r,i)=>{let a=i===0;return(0,H.jsx)(`button`,{ref:e=>{p.current[t]||(p.current[t]=[]),p.current[t][i]=e},onClick:()=>r.onSelect(e.item),onMouseEnter:()=>{u(t),f(i)},className:U(`transition-colors text-left`,a?`flex-1 flex items-center gap-4 rounded-2xl px-3 py-2 hover:bg-background/80`:`shrink-0 self-center rounded-full border border-border px-3 py-2 text-[11px] font-black uppercase tracking-[0.18em] text-muted-foreground hover:bg-background/80 hover:text-foreground`,n&&i===d&&`bg-background text-foreground ring-2 ring-primary/40`),children:a?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 size-10 rounded-xl bg-muted flex items-center justify-center transition-colors`,children:(0,H.jsx)(ne,{className:`size-4 text-primary`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-bold text-foreground truncate uppercase tracking-tight`,children:e.item.displayName??e.item.name}),e.preview?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium truncate mt-1`,children:e.preview}):null]}),e.item.date===void 0?null:(0,H.jsx)(`span`,{className:`shrink-0 self-center text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:uM(new Date(e.item.date))}),(0,H.jsx)(mn,{className:`size-4 text-muted-foreground shrink-0 transition-opacity`})]}):r.label},r.id)})},e.item.id)})})]})};function OW(){return(0,V.useEffect)(()=>{fN().catch(e=>console.warn(`[queryService] page source population failed`,e))},[]),(0,V.useSyncExternalStore)(hN,mN)}function kW(e,t){let n=e.find(e=>e.key===t&&!e.negate);return n&&n.values.length===1?n.values[0].value:null}function AW(e){let t=e.trim();if(!t.startsWith(`:`))return null;let n=X(t);if(n.error||!ip(n))return null;let r=`?q=${encodeURIComponent(t)}`;switch(n.target){case`effort`:return`/efforts${r}`;case`session`:case`segment`:case`event`:return`/sessions${r}`;case`note`:case`block`:{let e=kW(n.filters,`catalog`);if(e)return`/c/${encodeURIComponent(e)}${r}`;let t=kW(n.filters,`source`);return t===`journal`?`/journal${r}`:t===`playground`?`/playgrounds${r}`:t===`feeds`||t===`guides`?`/feeds${r}`:kW(n.filters,`type`)===`dashboard`?`/dashboards${r}`:`/journal${r}`}default:return null}}var jW=new Set([`pdf`,`doc`,`docx`,`xls`,`xlsx`,`ppt`,`pptx`,`zip`,`tar`,`gz`,`rar`,`mp4`,`mov`,`avi`,`mkv`,`webm`,`mp3`,`wav`,`flac`,`png`,`jpg`,`jpeg`,`gif`,`svg`,`webp`]);function MW(e){let t=e.split(`.`).pop()?.split(`?`)[0]?.toLowerCase()??``;return jW.has(t)}function NW(e){return/^https?:\/\//.test(e)||e.startsWith(`//`)}function PW({queryText:e,widgetType:t,widgetError:n}){return OW()?(0,H.jsx)(`div`,{className:`my-5 not-prose`,children:(0,H.jsx)(tS,{query:e,widgetType:t,widgetError:n,executor:vN,readOnly:!0,noteHref:e=>WI(`blockContentId`in e||`dataType`in e?LN(e):jN(e))})}):(0,H.jsx)(`div`,{className:`my-5 not-prose text-xs text-muted-foreground py-2`,children:`Loading…`})}function FW(e){let{meta:t,body:n}=Jv(e);return Object.keys(t).length===0&&n===e?{fields:null,body:e}:{fields:t,body:n.trim()}}var IW={table({children:e}){return(0,H.jsx)(`div`,{className:`my-6 overflow-x-auto rounded-xl border border-border`,children:(0,H.jsx)(`table`,{className:`w-full text-sm border-collapse`,children:e})})},thead({children:e}){return(0,H.jsx)(`thead`,{className:`bg-muted/50 text-left`,children:e})},tbody({children:e}){return(0,H.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e})},tr({children:e}){return(0,H.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e})},th({children:e}){return(0,H.jsx)(`th`,{className:`px-4 py-2.5 text-[11px] font-black tracking-widest uppercase text-muted-foreground border-b border-border`,children:e})},td({children:e}){return(0,H.jsx)(`td`,{className:`px-4 py-2.5 text-sm text-foreground`,children:e})},img({src:e,alt:t,node:n}){let r=n?.properties??{},i=r.width,a=r.height;return(0,H.jsxs)(`figure`,{className:`my-6`,children:[(0,H.jsx)(`img`,{src:e??``,alt:t??``,loading:`lazy`,width:i,height:a,className:`rounded-xl border border-border max-w-full h-auto`}),t&&(0,H.jsx)(`figcaption`,{className:`mt-2 text-center text-xs text-muted-foreground italic`,children:t})]})},a({href:e,children:t}){let n=e??``;if(n.startsWith(`:`)){let e=n;try{e=decodeURIComponent(n)}catch{}let r=AW(e);if(r)return(0,H.jsx)(Tt,{to:r,className:`underline underline-offset-2 transition-colors text-primary hover:text-primary/70`,children:t})}let r=NW(n),i=MW(n);return(0,H.jsxs)(`a`,{href:n,rel:r?`noopener noreferrer`:void 0,target:r||i?`_blank`:void 0,className:U(`underline underline-offset-2 transition-colors`,i?`text-primary font-medium`:`text-primary hover:text-primary/70`),children:[t,r&&(0,H.jsx)(`span`,{className:`ml-0.5 text-[10px] align-super opacity-60`,children:`↗`}),i&&!r&&(0,H.jsx)(`span`,{className:`ml-0.5 text-[10px] align-super opacity-60`,children:`⬇`})]})},code({children:e,className:t}){let n=t?.replace(`language-`,``)??``,r=typeof e==`string`?e:Array.isArray(e)?e.join(``):String(e??``);if(!t&&!r.includes(`
145
+ `))return(0,H.jsx)(`code`,{className:`px-1.5 py-0.5 rounded-md bg-muted font-mono text-[0.85em] text-foreground`,children:e});if(n===`query`||n.startsWith(`query:`)||n.startsWith(`query `)){let t=(typeof e==`string`?e:Array.isArray(e)?e.join(``):String(e??``)).trim(),r=n.replace(/^query[:\s]?/,``).trim(),i=r?Jh(r):void 0;return(0,H.jsx)(PW,{queryText:t,widgetType:i?.type,widgetError:i?.error})}return(0,H.jsxs)(`div`,{className:`my-5 rounded-xl overflow-hidden border border-border`,children:[n&&(0,H.jsx)(`div`,{className:`flex items-center gap-2 px-4 py-2 bg-muted border-b border-border`,children:(0,H.jsx)(`span`,{className:`text-[10px] font-black tracking-widest uppercase text-muted-foreground`,children:n})}),(0,H.jsx)(`pre`,{className:`overflow-x-auto p-4 bg-muted/30`,children:(0,H.jsx)(`code`,{className:`font-mono text-sm text-foreground`,children:e})})]})},h1({children:e,id:t}){return(0,H.jsx)(`h1`,{id:t,className:`text-2xl lg:text-3xl font-black tracking-tight text-foreground uppercase leading-tight mt-10 mb-4 first:mt-0`,children:e})},h2({children:e,id:t}){return(0,H.jsx)(`h2`,{id:t,className:`text-xl lg:text-2xl font-black tracking-tight text-foreground uppercase leading-tight mt-8 mb-3 first:mt-0`,children:e})},h3({children:e,id:t}){return(0,H.jsx)(`h3`,{id:t,className:`text-base lg:text-lg font-black tracking-wide text-foreground uppercase mt-6 mb-2 first:mt-0`,children:e})},h4({children:e,id:t}){return(0,H.jsx)(`h4`,{id:t,className:`text-sm font-black tracking-widest text-primary uppercase mt-5 mb-2 first:mt-0`,children:e})},p({children:e}){return(0,H.jsx)(`p`,{className:`text-sm lg:text-[15px] font-medium text-muted-foreground leading-relaxed my-4 first:mt-0`,children:e})},ul({children:e}){return(0,H.jsx)(`ul`,{className:`my-4 pl-5 space-y-1.5 list-disc list-outside text-left text-sm text-muted-foreground font-medium leading-relaxed`,children:e})},ol({children:e}){return(0,H.jsx)(`ol`,{className:`my-4 pl-5 space-y-1.5 list-decimal list-outside text-left text-sm text-muted-foreground font-medium leading-relaxed`,children:e})},li({children:e}){return(0,H.jsx)(`li`,{className:`leading-relaxed`,children:e})},blockquote({children:e}){return(0,H.jsx)(`blockquote`,{className:`my-5 pl-4 border-l-2 border-primary/40 text-muted-foreground italic text-sm`,children:e})},hr(){return(0,H.jsx)(`hr`,{className:`my-8 border-border/50`})},strong({children:e}){return(0,H.jsx)(`strong`,{className:`font-black text-foreground`,children:e})},em({children:e}){return(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:e})}},LW={...IW,p({children:e}){return(0,H.jsx)(`p`,{className:`text-3xl sm:text-4xl lg:text-5xl font-black tracking-tight text-foreground leading-[1.08] my-0`,children:e})},strong({children:e}){let t=V.Children.toArray(e).map(e=>typeof e==`string`||typeof e==`number`?String(e):``).join(``).trim();return t.includes(`Write it in Markdown`)&&t.includes(`Run it as a Timer`)&&t.includes(`Own the Analytics`)?(0,H.jsxs)(`span`,{className:`flex flex-col select-none mt-4 w-full gap-5 sm:gap-7`,children:[(0,H.jsxs)(`span`,{className:`block text-3xl sm:text-4xl lg:text-5xl text-primary font-black text-left pl-[5%] sm:pl-[10%] transform hover:translate-x-1 transition-transform duration-200`,children:[`Write it in `,(0,H.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Markdown`}),`.`]}),(0,H.jsxs)(`span`,{className:`block text-3xl sm:text-4xl lg:text-5xl text-primary font-black text-center transform hover:scale-[1.02] transition-transform duration-200`,children:[(0,H.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Run`}),` it as a Timer.`]}),(0,H.jsxs)(`span`,{className:`block text-3xl sm:text-4xl lg:text-5xl text-primary font-black text-right pr-[5%] sm:pr-[10%] transform hover:-translate-x-1 transition-transform duration-200`,children:[`Own the `,(0,H.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Analytics`}),`.`]})]}):(0,H.jsx)(`strong`,{className:`font-black text-foreground`,children:e})}},RW={...IW,p({children:e}){return(0,H.jsx)(`p`,{className:`text-base lg:text-lg font-medium text-foreground/75 leading-relaxed my-4 first:mt-0`,children:e})}},zW=[Xn];function BW(e){return e.startsWith(`:`)?e:Bn(e)}function VW(e){return e.type===`text`&&typeof e.value==`string`?e.value:(e.children??[]).map(VW).join(``)}function HW(e){return e.trim().toLowerCase().replace(/[^\p{L}\p{N} _-]/gu,``).replace(/ /g,`-`).replace(/-+/g,`-`)||`heading`}var UW=()=>e=>{let t=new Map,n=e=>{if(e.tagName&&/^h[1-6]$/.test(e.tagName)){let n=HW(VW(e)),r=t.get(n)??0;t.set(n,r+1),(e.properties??={}).id=r===0?n:`${n}-${r}`}for(let t of e.children??[])n(t)};n(e)};function WW({fields:e}){let t=Object.entries(e);return t.length===0?null:(0,H.jsxs)(`div`,{className:`my-6 rounded-xl border border-border bg-muted/30 overflow-hidden`,children:[(0,H.jsx)(`div`,{className:`px-4 py-2 border-b border-border bg-muted/50`,children:(0,H.jsx)(`span`,{className:`text-[10px] font-black tracking-[0.2em] uppercase text-muted-foreground`,children:`Metadata`})}),(0,H.jsx)(`dl`,{className:`divide-y divide-border/50`,children:t.map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex items-baseline gap-4 px-4 py-2`,children:[(0,H.jsx)(`dt`,{className:`text-[11px] font-semibold text-muted-foreground uppercase tracking-wide min-w-[100px] shrink-0`,children:e}),(0,H.jsx)(`dd`,{className:`text-sm text-foreground break-words`,children:Array.isArray(t)?t.join(`, `):String(t)})]},e))})]})}var GW={default:IW,heroLead:LW,heroBody:RW};function KW({prose:e,className:t,variant:n=`default`}){if(!e)return null;let{fields:r,body:i}=FW(e);return(0,H.jsxs)(`div`,{className:U(`prose-canvas`,t),children:[r&&(0,H.jsx)(WW,{fields:r}),i&&(0,H.jsx)(xn,{remarkPlugins:zW,rehypePlugins:[UW],urlTransform:BW,components:GW[n],children:i})]})}var qW=({activations:e,fullBleed:t,runState:n,deps:r})=>{if(e.length===0)return null;let i=e[0];if(_A(i)&&n){let a=e.slice(1),o=n.isReconnect?(0,H.jsxs)(`button`,{onClick:n.onReconnect,className:U(`flex items-center gap-2 px-5 py-2 text-[11px] font-black uppercase tracking-widest`,`rounded-full border transition-all active:scale-95`,`border-amber-500/40 bg-amber-500/15 text-amber-600 hover:bg-amber-500/20`,`dark:text-amber-400`,t&&`mx-auto`),children:[(0,H.jsx)(oe,{className:`size-3.5`}),`View`]}):(0,H.jsxs)(`button`,{type:`button`,onClick:n.onRun,className:U(`flex items-center gap-2 transition-all active:scale-95 bg-primary text-primary-foreground hover:bg-primary/90 font-black uppercase tracking-widest rounded-full shadow-lg shadow-primary/25 min-h-[44px] px-6 py-2 text-xs`,t&&`mx-auto`),children:[(()=>{let e=i.icon||sr;return(0,H.jsx)(e,{className:`shrink-0 size-4 fill-current sm:size-3`})})(),(0,H.jsx)(`span`,{children:i.label})]});return(0,H.jsxs)(`div`,{className:U(`flex flex-wrap items-center gap-4 mt-8`,t&&`justify-center`),children:[o,a.map((e,t)=>(0,H.jsx)(`button`,{onClick:()=>mA(e.action,r),className:`flex items-center gap-2 px-6 py-2 text-xs font-black uppercase tracking-widest rounded-full bg-background border border-border text-foreground hover:bg-muted transition-all active:scale-95`,children:e.label},e.id||t))]})}return(0,H.jsx)(`div`,{className:U(`flex flex-wrap gap-4 mt-8`,t&&`justify-center`),children:e.map((e,t)=>(0,H.jsx)(`button`,{onClick:()=>mA(e.action,r),className:U(`flex items-center gap-2 px-8 py-4 text-xs font-black uppercase tracking-widest rounded-full transition-all active:scale-95`,t===0?`bg-primary text-primary-foreground shadow-xl shadow-primary/25 hover:scale-[1.04]`:`bg-background border border-border text-foreground hover:bg-muted`),children:e.label},e.id||t))})},JW=({examples:e,activeIndex:t,onSelect:n})=>e.length===0?null:(0,H.jsx)(`div`,{className:`mt-6 rounded-2xl border border-border/70 bg-card/80 backdrop-blur-sm`,children:(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 px-3 py-3`,children:e.map((e,r)=>{let i=r===t,a=e.anchor===!0&&!i,o=!!e.badge&&a;return(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(r),"aria-current":i?`true`:void 0,className:U(`relative rounded-full px-4 py-2 text-[11px] font-black uppercase tracking-[0.18em] transition-all active:scale-95`,i?`bg-primary text-primary-foreground shadow-lg shadow-primary/25`:a?`border border-brand bg-brand/5 text-brand-deep hover:bg-brand/10 dark:text-brand-light`:`border border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground`),children:[e.label,o?(0,H.jsx)(`span`,{className:`ml-2 inline-block rounded-pill bg-brand px-1.5 py-0.5 align-middle text-[8px] font-black leading-none tracking-[0.12em] text-background`,children:e.badge}):null]},`${e.label}-${r}`)})})}),YW=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#struct-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M35 35 L65 35 L65 45 L45 45 L45 65 L35 65 Z`,fill:`url(#struct-grad)`}),(0,H.jsx)(`path`,{d:`M55 45 L65 45 L65 65 L45 65 L45 55 L55 55 Z`,fill:`url(#struct-grad)`,opacity:`0.7`})]}),XW=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`4`}),(0,H.jsx)(`circle`,{cx:`50`,cy:`50`,r:`5`,fill:`url(#proto-grad)`}),(0,H.jsx)(`circle`,{cx:`50`,cy:`50`,r:`15`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`2`,strokeDasharray:`4 2`}),(0,H.jsx)(`circle`,{cx:`50`,cy:`50`,r:`25`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`1`,opacity:`0.5`}),(0,H.jsx)(`line`,{x1:`50`,y1:`50`,x2:`50`,y2:`25`,stroke:`url(#proto-grad)`,strokeWidth:`4`,strokeLinecap:`round`})]}),ZW=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`complex-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#F50057`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#D500F9`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#complex-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M40 35 H60 V45 A5 5 0 0 1 60 55 V65 H40 V55 A5 5 0 0 0 40 45 Z`,fill:`url(#complex-grad)`})]}),QW=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsxs)(`defs`,{children:[(0,H.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]}),(0,H.jsxs)(`filter`,{id:`glow`,x:`-20%`,y:`-20%`,width:`140%`,height:`140%`,children:[(0,H.jsx)(`feGaussianBlur`,{stdDeviation:`3`,result:`blur`}),(0,H.jsx)(`feComposite`,{in:`SourceGraphic`,in2:`blur`,operator:`over`})]})]}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#basics-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M55 20 L30 55 L45 55 L40 85 L70 45 L55 45 Z`,fill:`url(#basics-grad)`,filter:`url(#glow)`})]}),$W=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#basics-grad)`,strokeWidth:`4`}),(0,H.jsx)(`text`,{x:`50`,y:`65`,fontFamily:`monospace`,fontSize:`40`,fontWeight:`bold`,fill:`url(#basics-grad)`,textAnchor:`middle`,children:`10`})]}),eG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#basics-grad)`,strokeWidth:`4`}),(0,H.jsx)(`rect`,{x:`30`,y:`30`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,H.jsx)(`rect`,{x:`30`,y:`45`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,H.jsx)(`rect`,{x:`30`,y:`60`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`})]}),tG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#struct-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M50 30 A20 20 0 1 1 35.8 35.8 L30 30 M35.8 35.8 L42 38`,fill:`none`,stroke:`url(#struct-grad)`,strokeWidth:`6`,strokeLinecap:`round`})]}),nG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#struct-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M30 40 L45 40 M30 50 L55 50 M30 60 L70 60`,fill:`none`,stroke:`url(#struct-grad)`,strokeWidth:`6`,strokeLinecap:`round`}),(0,H.jsx)(`text`,{x:`50`,y:`30`,fontFamily:`monospace`,fontSize:`12`,fill:`url(#struct-grad)`,textAnchor:`middle`,children:`21-15-9`})]}),rG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M35 35 H65 V55 L50 70 L35 55 Z`,fill:`url(#proto-grad)`}),(0,H.jsx)(`circle`,{cx:`50`,cy:`45`,r:`4`,fill:`#0b1326`})]}),iG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#metric-grad)`,strokeWidth:`4`}),(0,H.jsx)(`rect`,{x:`30`,y:`60`,width:`10`,height:`15`,fill:`url(#metric-grad)`}),(0,H.jsx)(`rect`,{x:`45`,y:`40`,width:`10`,height:`35`,fill:`url(#metric-grad)`}),(0,H.jsx)(`rect`,{x:`60`,y:`25`,width:`10`,height:`50`,fill:`url(#metric-grad)`})]}),aG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#metric-grad)`,strokeWidth:`4`}),(0,H.jsx)(`path`,{d:`M35 40 L65 60 M65 40 L35 60 M35 30 H65 M35 70 H65`,fill:`none`,stroke:`url(#metric-grad)`,strokeWidth:`4`,strokeLinecap:`round`})]}),oG=e=>(0,H.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:`dialect-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,H.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#76FF03`,stopOpacity:1}}),(0,H.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00E676`,stopOpacity:1}})]})}),(0,H.jsx)(`path`,{d:`M50 5 L90 27.5 L90 72.5 L50 95 L10 72.5 L10 27.5 Z`,fill:`none`,stroke:`url(#dialect-grad)`,strokeWidth:`4`,strokeLinecap:`round`}),(0,H.jsx)(`path`,{d:`M35 30 H65 M35 45 H65 M35 60 H55 M35 75 H65`,fill:`none`,stroke:`url(#dialect-grad)`,strokeWidth:`4`,strokeLinecap:`round`})]});function sG(e){switch(e){case`trophy`:return QW;case`dumbbell`:return ne;case`timer`:return XW;case`play`:return sr;case`blocks`:return YW;case`puzzle`:return ZW;case`activity`:return iG;case`file-text`:return oG;default:return Ze}}function cG(e){switch(e){case`basics-movement`:return QW;case`basics-reps`:return $W;case`basics-load`:return eG;case`structure-rounds`:case`complex-rounds`:case`protocols-rounds`:return tG;case`structure-repscheme`:return nG;case`protocols-timer`:case`complex-time`:return XW;case`protocols-tag`:return rG;case`metrics-custom`:return iG;case`metrics-calc`:return aG;case`dialects-log`:case`dialects-climb`:return oG;default:return null}}function lG({quest:e,onClick:t,className:n,compact:r=!1,disabled:i=!1}){let a=cG(e.id),o=t?`Select to jump to its section.`:`Open the editor to begin.`,s=e.isCompleted?`Challenge complete.`:e.result?e.result.pass?`Ready — ${e.result.detail??`looks good`}`:e.result.reason??o:o,c={"data-testid":`challenge-row-${e.id}`,"data-completed":e.isCompleted?`true`:`false`,className:U(`w-full text-left flex items-start gap-3 rounded-xl border px-3 py-2 text-sm transition-colors`,e.isCompleted?`border-primary/40 bg-primary/5`:`border-border/50 bg-background/60`,t&&!i&&`cursor-pointer hover:bg-background/80`,i&&`opacity-60 cursor-default`,r&&`px-2.5 py-1.5`,n)},l=(0,H.jsxs)(H.Fragment,{children:[a?(0,H.jsxs)(`span`,{className:U(`relative shrink-0 mt-0.5`,r?`size-5`:`size-6`),children:[(0,H.jsx)(a,{className:`w-full h-full`}),e.isCompleted&&(0,H.jsx)(`span`,{className:`absolute -bottom-1 -right-1 flex size-3.5 items-center justify-center rounded-full bg-emerald-500 text-white border border-background shadow`,children:(0,H.jsx)(Vt,{className:`size-2`,strokeWidth:3})})]}):(0,H.jsx)(`span`,{className:U(`mt-0.5 shrink-0`,e.isCompleted?`text-primary`:`text-muted-foreground/50`),"aria-hidden":`true`,children:e.isCompleted?(0,H.jsx)(nn,{className:r?`size-3.5`:`size-4`}):(0,H.jsx)(wn,{className:r?`size-3.5`:`size-4`})}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`p`,{className:U(`font-semibold`,e.isCompleted?`text-foreground line-through decoration-primary/40`:`text-foreground`,r&&`text-xs`),children:e.label}),e.desc&&!r&&(0,H.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:e.desc}),(0,H.jsx)(`p`,{"data-testid":`challenge-hint-${e.id}`,className:U(`mt-1 text-xs`,e.isCompleted||e.result?.pass?`text-primary/80`:`text-muted-foreground`),children:s})]})]});return t?(0,H.jsx)(`button`,{type:`button`,onClick:t,disabled:i,...c,children:l}):(0,H.jsx)(`div`,{...c,children:l})}function uG(e){let t=e.replace(/^\s+/,``),n=t.match(/\n\s*\n/);return!n||n.index===void 0?{lead:t,rest:``}:{lead:t.slice(0,n.index),rest:t.slice(n.index).trimStart()}}var dG=({section:e,idx:t,prose:n,blockId:r,keySuffix:i,showHeading:a=!0,showEyebrow:o=!0,renderButtons:s=!0,isActive:c=!1,hasViewDef:l=!1,runState:u,deps:d,onExampleSelect:f,selectedExampleIndex:p,chapters:m=[],challengeQuests:h=[],isCollection:g=!1,collectionSlug:_=null,workoutItems:v=[],handleSelectWorkout:y,onScrollToSection:b,variant:x=`default`})=>{let S=!!e.isFullBleed,C=!!e.isDark&&x!==`caption`,w=e.density,T=Cj[e.theme||`slate`]??Cj.slate,E=e.examples??[],D=t===-1,O=V.useMemo(()=>{if(!m||!h)return null;for(let t of m){let n=t.sectionIds.indexOf(e.id);if(n>=0&&t.questIds[n]){let e=t.questIds[n],r=h.find(t=>t.id===e);if(r)return{quest:r,chapterTitle:t.title}}}return null},[m,h,e.id]);if(D){let t=e.proseChunks.filter(e=>e.kind===`button`).map(e=>e.button),n=e.proseChunks.findIndex(e=>e.kind===`prose`&&e.text.trim()!==``),a=n>=0?e.proseChunks[n]:null,{lead:o,rest:s}=a&&a.kind===`prose`?uG(a.text.trim()):{lead:``,rest:``},c=e.proseChunks.slice(n+1);return(0,H.jsxs)(`div`,{id:r,"data-section-id":i==="default"?e.id:void 0,className:`group relative flex min-h-[70vh] lg:min-h-[80vh] items-center justify-center overflow-hidden border-b-2 border-primary/10 bg-gradient-to-b from-primary/[0.08] via-muted/30 to-background px-6 py-16 lg:px-10 lg:py-24`,children:[(0,H.jsx)(`div`,{className:`pointer-events-none absolute inset-0 bg-[radial-gradient(ellipse_75%_60%_at_50%_0%,_var(--tw-gradient-stops))] from-primary/30 via-primary/5 to-transparent`}),(0,H.jsx)(`div`,{className:`pointer-events-none absolute inset-0 text-primary opacity-[0.15]`,style:{backgroundImage:`radial-gradient(circle, currentColor 1.5px, transparent 1.5px)`,backgroundSize:`24px 24px`,maskImage:`radial-gradient(ellipse 70% 60% at 50% 40%, black 40%, transparent 90%)`,WebkitMaskImage:`radial-gradient(ellipse 70% 60% at 50% 40%, black 40%, transparent 90%)`}}),(0,H.jsxs)(`div`,{className:`relative max-w-2xl w-full text-center`,children:[o&&(0,H.jsx)(KW,{prose:o,variant:`heroLead`,className:`mb-5`}),s&&(0,H.jsx)(KW,{prose:s,variant:`heroBody`,className:`mb-2`}),c.map((e,t)=>{if(e.kind===`prose`){let n=e.text.trim();return n?(0,H.jsx)(KW,{prose:n,className:`mt-6 mb-2`},`hero-prose-${t}`):null}if(e.kind===`challenge`){let n=h.find(t=>t.id===e.id);return n?(0,H.jsx)(`div`,{className:`my-4 flex justify-center`,children:(0,H.jsx)(lG,{quest:n,onClick:()=>b?.(r),compact:!0})},`hero-challenge-${t}`):null}return null}),t.length>0&&(0,H.jsx)(qW,{activations:t.map((e,t)=>gA(e,t)),fullBleed:!0,runState:l?u:void 0,deps:d})]})]})}let k=n===void 0?e.proseChunks??[]:[{kind:`prose`,text:n}],A=!k.some(e=>e.kind===`button`)&&(e.buttons??[]).length>0;return(0,H.jsxs)(`div`,{id:r,"data-section-id":i==="default"||i===`before-workouts`?e.id:void 0,className:U(`group relative border-b border-border/50 transition-colors duration-300`,x===`caption`?`py-6 pb-10`:l?S?`flex items-center justify-center min-h-[35vh] py-12 lg:py-16 px-6 lg:px-10`:w===`compact`?`py-10 lg:py-12 px-6 lg:px-10`:`py-14 lg:py-20 px-6 lg:px-10`:w===`compact`?`py-10 lg:py-12 px-6 lg:px-12`:`py-16 lg:py-20 px-6 lg:px-12`,!x||x==="default"?C&&`bg-muted/20 overflow-hidden`:void 0,x!==`caption`&&!C&&!S&&(t%2==0?`bg-background`:`bg-muted/[0.18]`)),children:[x!==`caption`&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:U(`pointer-events-none absolute inset-y-0 left-0 w-px bg-gradient-to-b opacity-0 transition-opacity duration-300`,T.accent,c&&`opacity-100`)}),(0,H.jsx)(`div`,{className:U(`pointer-events-none absolute left-0 top-0 h-full w-1 origin-top rounded-r-full bg-gradient-to-b transition-all duration-300`,T.progress,c?`scale-y-100 opacity-100`:`scale-y-[0.18] opacity-25`)})]}),C&&(0,H.jsx)(`div`,{className:`pointer-events-none absolute inset-0 opacity-40 bg-[radial-gradient(circle_at_center,_var(--tw-gradient-stops))] from-primary/20 via-transparent to-transparent`}),(0,H.jsxs)(`div`,{className:U(`relative`,x===`caption`?`max-w-none`:l?S?`max-w-md w-full text-center`:`max-w-sm`:`max-w-4xl w-full mx-auto`),children:[o&&(!S||!l)&&O&&(0,H.jsx)(`div`,{className:`mb-4 flex items-center gap-2 select-none min-h-[14px]`,children:O.quest.isCompleted?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-wider text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 px-2 py-0.5 rounded-full border border-emerald-500/20`,children:[(0,H.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-emerald-500 dark:bg-emerald-400 animate-pulse`}),`Challenge Complete`]}):(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-wider text-muted-foreground/80 bg-muted/60 px-2 py-0.5 rounded-full border border-border/50`,children:[(0,H.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-zinc-400 dark:bg-zinc-500`}),O.chapterTitle,`: Challenge Pending`]})}),a?(0,H.jsx)(`h2`,{className:U(`font-bold tracking-tight text-foreground leading-tight`,x===`caption`?`text-xl lg:text-2xl mb-4`:`text-2xl lg:text-3xl font-black uppercase mb-5`),children:e.heading}):null,k.map((e,t)=>{if(e.kind===`prose`){let n=e.text.trim();return n?(0,H.jsx)(KW,{prose:n,className:t===0?`mb-6`:`mt-4 mb-6`},`prose-${t}`):null}if(e.kind===`button`)return(0,H.jsx)(qW,{activations:[gA(e.button,t)],fullBleed:S,runState:l?u:void 0,deps:d},`button-${t}`);if(e.kind===`widget`){if(e.widget===`hero-carousel`)return(0,H.jsx)(`div`,{className:`my-6`,children:(0,H.jsx)(yW,{})},`hero-carousel-${t}`);if(e.widget===`workouts-list`&&g&&_&&y)return(0,H.jsx)(`div`,{id:`collection-workouts`,className:`border-b border-border/50 bg-card my-6`,children:(0,H.jsx)(`div`,{className:`w-full mx-auto`,children:(0,H.jsx)(DW,{category:_,workoutItems:v,onSelect:y,showSearch:!1,variant:`flat`})})},`workouts-${t}`)}if(e.kind===`challenge`){let n=h.find(t=>t.id===e.id);return n?(0,H.jsx)(`div`,{className:`my-4`,children:(0,H.jsx)(lG,{quest:n,onClick:()=>b?.(r),compact:!0})},`challenge-${t}`):null}return null}),E.length>0?(0,H.jsx)(JW,{examples:E,activeIndex:Math.min(p,E.length-1),onSelect:t=>f(e,t)}):null,s&&A?(0,H.jsx)(qW,{activations:e.buttons.map((e,t)=>gA(e,t)),fullBleed:S,runState:l?u:void 0,deps:d}):null]})]},`${e.id}-${i}`)};function fG({sections:e,activeIndex:t,part:n,args:r}){return(0,H.jsx)(`div`,{className:`h-full min-h-0 pr-1`,"data-testid":`guide-captions-${n}`,children:e.map((e,n)=>{let i=n===t;return(0,H.jsx)(`div`,{className:`absolute inset-0 min-h-0 overflow-y-auto transition-opacity duration-300 ${i?`opacity-100`:`pointer-events-none invisible opacity-0`}`,"aria-hidden":!i,children:(0,H.jsx)(dG,{section:e,idx:n,blockId:`guide-caption-${e.id}`,keySuffix:`caption`,variant:`caption`,isActive:i,hasViewDef:r.hasViewDef??!0,runState:r.runState,deps:r.deps,onExampleSelect:r.onExampleSelect,selectedExampleIndex:r.selectedExamples[e.id]??0,chapters:r.chapters,challengeQuests:r.challengeQuests,onScrollToSection:r.onScrollToSection})},e.id)})})}function pG({sections:e,part:t,partCount:n,title:r,pane:i,cardArgs:a,onActivateSection:o}){let s=(0,V.useRef)(null),c=(0,V.useMemo)(()=>_W(e),[e]),{slice:l,subscribe:u}=pW(s,!1,c),d=(0,V.useRef)(e);d.current=e;let[f,p]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=s.current;if(!e||typeof IntersectionObserver>`u`){p(!0);return}let t=new IntersectionObserver(([e])=>{e.isIntersecting&&(p(!0),t.disconnect())},{rootMargin:`100px`});return t.observe(e),()=>t.disconnect()},[]);let m=()=>{let e=s.current;if(!e)return!1;let{top:t,bottom:n}=e.getBoundingClientRect();return t<=0&&n>window.innerHeight},[h,g]=(0,V.useState)(!1);(0,V.useEffect)(()=>u(()=>{let e=m();g(t=>t===e?t:e)}),[u]);let _=(0,V.useRef)(!1),v=(0,V.useRef)(-1),y=(0,V.useRef)(o);y.current=o,(0,V.useEffect)(()=>{let e=_.current,t=v.current;if(_.current=h,v.current=l.index,!h||e&&t===l.index)return;let n=d.current[l.index];n&&y.current(n)},[h,l.index]);let b=e[l.index]??null;return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`header`,{"data-testid":`guide-runway-header-${t}`,className:`mx-auto w-full max-w-[1500px] px-6 pt-12 pb-6 lg:px-12`,children:[(0,H.jsxs)(`div`,{className:`font-mono text-[11px] uppercase tracking-[0.22em] text-muted-foreground`,children:[`Part `,t,` / `,n]}),(0,H.jsx)(`h2`,{className:`mt-1 text-xl font-black uppercase tracking-tight text-foreground`,children:r})]}),(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(uW,{trackRef:s,height:`${(e.length+1)*100}vh`,stages:c,activeIndex:l.index,pane:f?i:null,captions:(0,H.jsx)(fG,{sections:e,activeIndex:l.index,part:t,args:a}),status:(0,H.jsxs)(`div`,{className:`truncate font-mono text-[11px] uppercase tracking-[0.22em] text-muted-foreground`,children:[String(l.index+1).padStart(2,`0`),b?` — ${b.heading}`:``]}),testId:`guide-runway-${t}`}),e.map((t,n)=>(0,H.jsx)(`span`,{id:t.id,"data-section-id":t.id,"aria-hidden":`true`,className:`pointer-events-none absolute left-0 h-px w-px`,style:{top:`calc((100% - 100vh) * ${n/e.length} + 50vh + 120px)`}},t.id))]})]})}function mG({sections:e,groupKey:t,title:n,pane:r,cardArgs:i,onActivateSection:a}){let{groups:o,tail:s}=gW(e,t);return(0,H.jsxs)(H.Fragment,{children:[o.map((e,t)=>(0,H.jsx)(pG,{sections:e,part:t+1,partCount:o.length,title:n,pane:r,cardArgs:i,onActivateSection:a},e[0]?.id??t)),s.length>0&&(0,H.jsx)(`div`,{className:`mx-auto w-full max-w-[1500px] px-6 lg:px-12`,"data-testid":`guide-static-tail`,children:(0,H.jsx)(`div`,{className:`lg:max-w-[50%]`,children:s.map((e,t)=>(0,H.jsx)(dG,{section:e,idx:t,blockId:e.id,keySuffix:`default`,isActive:i.activeSectionId===e.id,hasViewDef:i.hasViewDef??!0,runState:i.runState,deps:i.deps,onExampleSelect:i.onExampleSelect,selectedExampleIndex:i.selectedExamples[e.id]??0,chapters:i.chapters,challengeQuests:i.challengeQuests,onScrollToSection:i.onScrollToSection},`tail-${e.id}`))})})]})}function hG(){let e=$j(),{pathname:t}=zt(),n=(0,V.useMemo)(()=>hj(e).flatMap(e=>e.action?.type===`route`?[{id:e.id,label:e.label,to:e.action.to}]:[]),[e]);if(n.length===0)return null;let r=n.findIndex(e=>e.to===t),i=r>=0,a=i&&n.length>1?(r+1)%n.length:-1;return(0,H.jsx)(`nav`,{"aria-label":i?`What’s Next`:`Syntax & Guides`,"data-testid":`guide-index-footer`,className:`border-t border-border px-6 py-12 xl:py-16`,children:(0,H.jsxs)(`div`,{className:`mx-auto flex w-full max-w-3xl flex-col rounded-lg border border-border overflow-hidden`,children:[(0,H.jsxs)(`h2`,{className:`px-4 py-2 text-xs font-black uppercase tracking-wider text-muted-foreground bg-muted/40`,children:[i?`What’s Next`:`Syntax & Guides`,` · `,n.length]}),(0,H.jsx)(`ul`,{className:`flex flex-col divide-y divide-border`,children:n.map((e,t)=>(0,H.jsx)(`li`,{children:(0,H.jsxs)(Tt,{to:e.to,"aria-current":t===r?`page`:void 0,className:U(`flex flex-col gap-0.5 px-4 py-3 hover:bg-muted/50`,t===r&&`bg-muted/50`),children:[(0,H.jsxs)(`span`,{className:`flex w-full items-baseline justify-between gap-3`,children:[(0,H.jsx)(`span`,{className:`font-medium`,children:e.label}),t===a&&(0,H.jsx)(`span`,{className:`text-xs font-semibold text-primary`,"data-testid":`guide-next-marker`,children:`Next →`})]}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.to})]})},e.id))})]})})}var gG=`22rem`,_G=`42rem`,vG=`20rem`,yG=`calc(100dvh - var(--canvas-sticky-top) - 2rem)`;function bG(e){return{editorWidth:e||`50%`,editorMinWidth:gG,editorMaxWidth:_G,editorMinHeight:vG,editorMaxHeight:yG}}function xG(e){let t=Math.max(1,e.split(`
146
+ `).length);return`calc(${Math.min(560,Math.max(180,t*22))}px + 3.5rem)`}function SG(e,t){return{"--canvas-editor-width":e.editorWidth,"--canvas-editor-min-width":e.editorMinWidth,"--canvas-editor-max-width":e.editorMaxWidth,"--canvas-editor-min-height":e.editorMinHeight,"--canvas-editor-max-height":e.editorMaxHeight,"--canvas-editor-preferred-height":xG(t)}}var CG=(e,t,n)=>(0,H.jsx)(dG,{section:e,idx:t,blockId:e.id,keySuffix:`default`,isActive:n.activeSectionId===e.id,hasViewDef:n.hasViewDef,runState:n.runState,deps:n.deps,onExampleSelect:n.handleExampleSelect,selectedExampleIndex:n.selectedExamples[e.id]??0,chapters:n.chapters,challengeQuests:n.challengeQuests,isCollection:n.isCollection,collectionSlug:n.collectionSlug,workoutItems:n.workoutItems,handleSelectWorkout:n.handleSelectWorkout,onScrollToSection:n.onScrollToSection},`${e.id}-default`),wG=({heroSlot:e,mobilePanel:t,desktopPanel:n,stickyAlign:r=`right`,editorWidth:i=`50%`,contentSections:a,isCollection:o,collectionSlug:s,workoutItems:c,handleSelectWorkout:l,activeSectionId:u,selectedExamples:d,runState:f,deps:p,handleExampleSelect:m,hasWorkoutsTag:h,hasViewDef:g,chapters:_=[],challengeQuests:v=[],onScrollToSection:y,editorAppearsAtSectionId:b})=>{let x=b?a.findIndex(e=>e.id===b):-1,S=x>0&&!!n,C={activeSectionId:u,selectedExamples:d,handleExampleSelect:m,hasViewDef:g,runState:f,deps:p,chapters:_,challengeQuests:v,isCollection:o,collectionSlug:s,workoutItems:c,handleSelectWorkout:l,onScrollToSection:y},w=S?{width:`calc(100% - ${i})`,flexBasis:`calc(100% - ${i})`,maxWidth:`calc(100% - ${i})`}:{},T=o&&s&&c?(0,H.jsx)(`div`,{id:`collection-workouts`,className:`border-b border-border/50 bg-card`,children:(0,H.jsx)(`div`,{className:`w-full mx-auto`,children:(0,H.jsx)(DW,{category:s??``,workoutItems:c??[],onSelect:l,showSearch:!1,variant:`flat`})})}):null;if(S){let i=a.slice(0,x),o=a.slice(x);return(0,H.jsxs)(H.Fragment,{children:[e,i.map((e,t)=>CG(e,t,C)),(0,H.jsxs)(`div`,{className:`lg:flex`,children:[r===`left`&&n,(0,H.jsxs)(`div`,{className:`w-full min-w-0`,style:w,children:[t,o.map((e,t)=>CG(e,t,C)),T]}),r===`right`&&n]})]})}return(0,H.jsxs)(H.Fragment,{children:[t,(0,H.jsxs)(`div`,{className:`lg:flex`,children:[r===`left`&&n,(0,H.jsxs)(`div`,{className:`w-full min-w-0`,style:w,children:[e,a.map((e,t)=>CG(e,t,C)),T]}),r===`right`&&n]})]})},TG=({activations:e,runState:t,deps:n})=>{if(e.length===0)return null;let r=e[0];if(_A(r)&&t){let i=e.slice(1),a=t.isReconnect?(0,H.jsxs)(`button`,{onClick:t.onReconnect,className:`flex items-center gap-2 px-5 py-2 text-[11px] font-black uppercase tracking-widest rounded-full border transition-all active:scale-95 border-amber-500/40 bg-amber-500/15 text-amber-600 hover:bg-amber-500/20 dark:text-amber-400`,children:[(0,H.jsx)(oe,{className:`size-3.5`}),`View`]}):(0,H.jsxs)(`button`,{type:`button`,onClick:t.onRun,className:`flex items-center gap-2 transition-all active:scale-95 bg-primary text-primary-foreground hover:bg-primary/90 font-black uppercase tracking-widest rounded-full shadow-lg shadow-primary/25 min-h-[44px] px-6 py-2 text-xs`,children:[(()=>{let e=r.icon||sr;return(0,H.jsx)(e,{className:`shrink-0 size-4 fill-current sm:size-3`})})(),(0,H.jsx)(`span`,{children:r.label})]});return(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 justify-end pt-3 px-1`,children:[a,i.map((e,t)=>(0,H.jsx)(`button`,{onClick:()=>mA(e.action,n),className:`px-5 py-2 text-[11px] font-black uppercase tracking-widest rounded-full bg-muted border border-border text-foreground hover:bg-muted/80 transition-all active:scale-95`,children:e.label},e.id||t))]})}return(0,H.jsx)(`div`,{className:`flex flex-wrap gap-3 justify-end pt-3 px-1`,children:e.map((e,t)=>(0,H.jsx)(`button`,{onClick:()=>mA(e.action,n),className:`px-5 py-2 text-[11px] font-black uppercase tracking-widest rounded-full transition-all active:scale-95 bg-primary text-primary-foreground shadow-lg shadow-primary/25 hover:scale-[1.04]`,children:e.label},e.id||t))})},EG=({variant:e,panelTitle:t,panelSubtitle:n,panelContent:r,panelThemeClass:i,headerActions:a,showPanelButtons:o=!1,viewDefButtons:s,runState:c,deps:l,width:u,source:d=``})=>{let f=r,p=o&&s&&s.length>0?(0,H.jsx)(TG,{activations:s.map((e,t)=>gA(e,t)),runState:c,deps:l}):null;return e===`desktop`?(0,H.jsxs)(`div`,{className:`self-start sticky hidden lg:flex flex-col p-6 pt-8 pb-8 gap-3`,style:{top:`104px`,height:`calc(100vh - 104px)`,width:`clamp(var(--canvas-editor-min-width), var(--canvas-editor-width), var(--canvas-editor-max-width))`,...SG(bG(u),d)},children:[(0,H.jsx)(`div`,{className:`flex-1 min-h-0 flex flex-col justify-center py-4`,children:(0,H.jsx)(`div`,{className:`h-[min(var(--canvas-editor-preferred-height),var(--canvas-editor-max-height))] min-h-[var(--canvas-editor-min-height)] max-h-[var(--canvas-editor-max-height)] flex flex-col w-full`,children:f})}),p]}):(0,H.jsx)(`div`,{className:`lg:hidden sticky z-20 shrink-0 px-4 pt-2 pb-1`,"data-page-sticky-boundary":`true`,style:{top:`65px`,height:`min(var(--canvas-editor-preferred-height), calc(100dvh - 65px - 1rem))`,minHeight:`18rem`,"--canvas-editor-preferred-height":xG(d)},children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 h-full`,children:[(0,H.jsx)(`div`,{className:`flex-1 min-h-0`,children:f}),p]})})},DG=({heroSlot:e,children:t})=>(0,H.jsxs)(`section`,{className:`relative border-b border-border/50`,children:[e,t]}),OG=new Set([G.Duration,G.Time]);function kG(e){return e.metrics.some(e=>e.type===G.Hint&&e.value===`domain.wod`)}function AG(e){return e?e.filter(e=>!kG(e)&&e.metrics.some(e=>e.type===G.Effort)).length:0}function jG(e){if(!e)return 0;let t=0;for(let n of e)if(!kG(n))for(let e of n.metrics)e.type===G.Rounds&&typeof e.value==`number`&&(t+=e.value);return t}function MG(e){return e?e.some(e=>!kG(e)&&e.metrics.some(e=>OG.has(e.type))):!1}function NG(e){return e?e.some(e=>!kG(e)&&e.metrics.some(e=>e.type===G.Rep)):!1}function PG(e,t){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);if(Number.isFinite(t))return t}return null}function FG(e,t){return typeof e==`string`&&e.length>0?e:typeof e==`number`?String(e):null}var IG={"has-movement":e=>{let t=AG(e.statements);return t>0?{pass:!0,detail:`${t} movement${t===1?``:`s`}`}:{pass:!1,reason:"Add at least one movement line (e.g. `10 KB Swings`)."}},"exactly-movements":(e,t)=>{let n=PG(t.count??t.value,`count`);if(n===null)return{pass:!1,reason:"exactly-movements: missing `count`."};let r=AG(e.statements);return r===n?{pass:!0,detail:String(r)}:{pass:!1,reason:`Expected exactly ${n} movement${n===1?``:`s`}, found ${r}.`}},"has-reps":e=>NG(e.statements)?{pass:!0}:{pass:!1,reason:"Add a rep count (e.g. `10` reps on a movement line)."},"has-timer":e=>MG(e.statements)?{pass:!0}:{pass:!1,reason:"Add a timer (e.g. `*:30 Rest` or `5:00 cap`)."},"min-rounds":(e,t)=>{let n=PG(t.count??t.min,`count`);if(n===null)return{pass:!1,reason:"min-rounds: missing `count`."};let r=jG(e.statements);return r>=n?{pass:!0,detail:`${r} round${r===1?``:`s`}`}:{pass:!1,reason:`Need at least ${n} round${n===1?``:`s`} — found ${r}.`}},"contains-token":(e,t)=>{let n=FG(t.value??t.token,`value`);return n===null?{pass:!1,reason:"contains-token: missing `value`."}:(e.content??``).includes(n)?{pass:!0,detail:`"${n}"`}:{pass:!1,reason:`Script must include the token "${n}".`}}};function LG(e,t){if(!t||typeof t.type!=`string`||t.type.length===0)return{pass:!1,reason:`Quest has no validation schema.`};let n=IG[t.type];return n?n(e,t):{pass:!1,reason:`Unknown validation type "${t.type}".`}}function RG({pageRoute:e,quests:t,block:n,enabled:r=!0}){let{markComplete:i,quests:a,isComplete:o}=Zz(e,t),[s,c]=(0,V.useState)(new Set),l=(0,V.useMemo)(()=>{let e={};if(!r||!n){for(let n of t)e[n.id]={pass:!1,reason:`No active block.`};return e}let i={content:n.content,statements:n.statements??[]};for(let n of t){if(!n.validation){e[n.id]={pass:!1};continue}if(n.validation?.type===`workout-complete`){e[n.id]={pass:!1,reason:`Finish the workout to check this off.`};continue}e[n.id]=LG(i,n.validation)}return e},[n,t,r]);(0,V.useEffect)(()=>{if(r)for(let e of a)e.isCompleted||s.has(e.id)||l[e.id]?.pass&&(i(e.id),c(t=>{if(t.has(e.id))return t;let n=new Set(t);return n.add(e.id),n}))},[r,a,l,s,i]);let u=(0,V.useMemo)(()=>t.map(e=>e.id).join(`|`),[t]);return(0,V.useEffect)(()=>{c(new Set)},[e,u]),{quests:a.map(e=>{let t=l[e.id]??{pass:!1,reason:`No validator result.`},n=e.isCompleted?{...t,pass:!0,detail:`Completed`}:t;return{...e,result:n}}),isComplete:o,results:l}}function zG({page:e,wodFiles:t,theme:n,workoutItems:r,onSelect:i,contentOverride:a,panelHeaderActions:o,onPanelActionsReady:s,heroSlot:c,onScrollToSection:l}){let u=Mn(),d=zt(),{sections:f,route:p,chapters:m}=e,h=d.pathname.startsWith(`/p/`)||p.startsWith(`/p/`),g=(0,V.useMemo)(()=>sF(p),[p]),_=e.type===`guide`||p.startsWith(`/guide`);Nz(_?p:void 0);let v=p.startsWith(`/collections/`)||p.startsWith(`/c/`),y=eB(`(prefers-reduced-motion: reduce)`),b=_&&!v&&!y,x=v?p.split(`/`).pop()??null:null,S=(0,V.useCallback)(e=>{if(i){i(e);return}u(xO(e.category,e.name))},[u,i]),C=f.some(e=>e.proseChunks.some(e=>e.kind===`widget`&&e.widget===`workouts-list`)),w=f.slice(1),T=f[0]??null,E=!!T&&(T.proseChunks.some(e=>e.kind===`prose`&&e.text.trim()!==``)||T.buttons.length>0),D=f.find(e=>e.view)?.view??null,O=D?.align??`right`,k=D?.width??`50%`,A=w[0]??f[0]??null,j=p===`/`?`learn`:void 0,M=D?.source?cF(D.source,t):``,N=D?.source||`__initial__`,[P,F]=(0,V.useState)(A?.id??null),[I,ee]=(0,V.useState)(A?.heading??`Whiteboard Script`),[L,te]=(0,V.useState)(A?.heading??`Whiteboard Script`),R=(0,V.useMemo)(()=>uF(w),[w]),ne=b&&p.split(`/`).pop()||void 0,re=(0,V.useMemo)(()=>b?gW(w,ne):null,[b,ne,w]),{guideOwnerBySection:ie,guideOwnerSource:ae}=(0,V.useMemo)(()=>{if(!b)return{guideOwnerBySection:null,guideOwnerSource:null};let e=new Map,t=new Map,n=null;for(let r of w){let i=r.proseChunks.find(e=>e.kind===`button`&&e.button.pipeline.some(e=>e.action===`set-source`))?.button.pipeline.find(e=>e.action===`set-source`)?.value??r.buttons.find(e=>e.pipeline.some(e=>e.action===`set-source`))?.pipeline.find(e=>e.action===`set-source`)?.value??null;i&&(n=r,t.set(r.id,i)),e.set(r.id,n)}return{guideOwnerBySection:e,guideOwnerSource:t}},[b,w]),[oe,se]=(0,V.useState)(()=>(A??f[0])?.theme??`slate`),[ce,le]=(0,V.useState)({}),{editorSource:ue,editorOpacity:de,isEditorLoading:fe,activeOriginalSource:pe,swapSource:me,handleEditorChange:he,resetActiveSource:ge,setEditorView:_e,getSource:ve}=Uz({initialSource:M,initialSourceKey:N,contentOverride:a}),ye=(0,V.useRef)(t);ye.current=t;let be=(0,V.useCallback)(()=>Pe.current[0]??null,[]),{startRun:xe,closeRun:Se,handleWorkoutComplete:Ce,resetRun:we,resetRequested:Te,fullscreen:Ee,runState:De,completedResults:Oe}=Hz({getBlock:be,getContent:ve,title:e.frontmatter.title}),ke=(0,V.useCallback)(async()=>await we(M)?(ge(),!0):!1,[we,M,ge]),[Ae,je]=(0,V.useState)(null),Me=e.quests??[],Ne=RG({pageRoute:e.route,quests:Me,block:Ae});Qz({pageRoute:e.route,quests:Me,completedResults:Oe}),$z({pageRoute:e.route,quests:Me,initialSource:M,currentSource:ue});let Pe=(0,V.useRef)([]),Fe=(0,V.useRef)(R.get(A?.id??``)?.id??null),Ie=(0,V.useCallback)(e=>{F(e.id),ee(e.heading),se(e.theme??`slate`);let t=(ie??R).get(e.id)??null;te(t?.heading??A?.heading??`Whiteboard Script`);let n=t?.id??null;if(n===Fe.current)return;if(Fe.current=n,!t){me(M,N);return}let r=t.examples??[];if(r.length>0){let e=r[ce[t.id]??0]??r[0];e?.source&&me(cF(e.source,ye.current),e.source)}for(let e of t.commands){let t=e.pipeline.filter(e=>!(r.length>0&&e.action===`set-source`)).map(t=>hA(t,e.open??`view`));t.length!==0&&mA(t.length===1?t[0]:{type:`pipeline`,steps:t},He.current)}let i=ie?ae?.get(t.id):void 0;i&&me(cF(i,ye.current),i)},[ce,me,R,ie,ae,A,M,N]),Le=(0,V.useCallback)((e,t)=>{le(n=>({...n,[e.id]:t})),F(e.id),ee(e.heading),se(e.theme??`slate`),te(e.heading),Fe.current=e.id;let n=e.examples?.[t];n?.source&&me(cF(n.source,ye.current),n.source)},[me]),[Re,ze]=Jt(`h`,{history:`replace`,shallow:!0}),[Be]=Jt(`q`,{defaultValue:``,shallow:!0}),Ve=(0,V.useMemo)(()=>({navigate:(e,t)=>u(e,{replace:t?.replace}),setQueryParam:(e,t)=>{let n=e.h;n!==void 0&&ze(n,{history:t?`replace`:`push`})},swapSource:e=>me(cF(e,ye.current),e),setPanelState:e=>{if(e===`track`){let e=be();e&&xe(e)}}}),[u,me,ze,be,xe]),He=(0,V.useRef)(Ve);He.current=Ve;let Ue=(0,V.useCallback)(e=>{ze(e.id,{history:`replace`}),Ie(e)},[Ie,ze]),We=DP(104),Ge=(0,V.useMemo)(()=>`-${We}px 0px -30% 0px`,[We]),Ke=re?re.tail.map(e=>e.id):w.map(e=>e.id),qe=(0,V.useRef)(!1);SP({ids:Ke,enabled:Ke.length>0,rootMargin:Ge,threshold:[0,.1,.25,.5,.75],dataAttribute:`data-section-id`,scrollDirection:`topmost-when-up`,debounceMs:50,shouldAcceptChange:()=>qe.current?!0:(qe.current=window.scrollY>0,qe.current),onChange:e=>{let t=w.find(t=>t.id===e);t&&(ze(e,{history:`replace`}),Ie(t))}});let Je=(0,V.useRef)(!1);(0,V.useEffect)(()=>{Je.current||!Re||w.length===0||(Je.current=!0,requestAnimationFrame(()=>{let e=document.querySelector(`[data-section-id="${Re}"]`);if(!e)return;let t=We+8,n=e.getBoundingClientRect().top+window.scrollY-t;window.scrollTo({top:Math.max(0,n),behavior:`smooth`})}))},[w,Re,We]);let Ye=(0,V.useRef)(Be);(0,V.useEffect)(()=>{if(!v){Ye.current=Be;return}let e=Be.trim(),t=Ye.current.trim();if(e&&e!==t){let e=document.getElementById(`collection-workouts`);if(e){let t=e.getBoundingClientRect().top+window.scrollY-We-8;window.scrollTo({top:Math.max(0,t),behavior:`smooth`})}}Ye.current=Be},[Be,v,We]);let Xe=(0,V.useRef)(s);Xe.current=s,(0,V.useEffect)(()=>{Xe.current?.({run:()=>{let e=Pe.current[0]??null;e&&xe(e)},reset:()=>{we()},results:()=>{},fullscreen:()=>{let e=Pe.current[0]??null;e&&xe(e)},getSource:ve})},[xe,we,ve]);let Ze=(0,V.useMemo)(()=>[{id:`run`,label:`Run`,icon:(0,H.jsx)(sr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:e=>{xe(e)}}],[xe]),Qe=Cj[oe]??Cj.slate,$e=fe?`${I} · loading`:I,et=!fe&&I!==L?L:void 0,tt=(0,V.useCallback)(e=>{let t=e[0]??null;Pe.current=e,je(e=>e?.content===t?.content&&e?.id===t?.id?e:t)},[]),nt=c??(E&&T?(0,H.jsx)(dG,{section:T,idx:-1,prose:void 0,blockId:T.id,keySuffix:`hero`,showEyebrow:!1,isActive:!1,hasViewDef:!!D,deps:Ve,onExampleSelect:Le,selectedExampleIndex:0,onScrollToSection:l,challengeQuests:Ne.quests}):null),rt=o,it=(0,H.jsx)(JU,{editorSource:ue,editorOpacity:de,activeOriginalSource:pe,handleEditorChange:he,onResetToSource:ke,canvasNoteId:g,readonly:h,showFrontmatter:typeof e.frontmatter.showFrontmatter==`boolean`?e.frontmatter.showFrontmatter:!_&&p!==`/`&&!p.startsWith(`/syntax`),theme:n,commands:Ze,onBlocksChange:tt,onViewCreated:_e,panelTitle:$e,panelSubtitle:et,panelThemeClass:Qe.panel,headerActions:rt,onRun:(e,t)=>{t&&xe(t,e)}}),at=D&&(0,H.jsx)(EG,{variant:`desktop`,panelContent:it,panelTitle:$e,panelSubtitle:et,viewDefButtons:D.buttons,runState:De,deps:Ve,width:k,source:ue}),ot=D&&(0,H.jsx)(EG,{variant:`mobile`,panelContent:it,panelTitle:$e,panelSubtitle:et,viewDefButtons:D.buttons,runState:De,deps:Ve,width:k,source:ue});return(0,H.jsxs)(`div`,{className:`flex flex-col min-h-screen bg-background`,children:[Ee?.kind===`timer`&&(0,H.jsx)(`div`,{className:`sticky z-30 border-b border-border bg-background`,style:{top:We},children:(0,H.jsx)(`div`,{className:`mx-auto h-[max(320px,min(75vh,640px))] max-w-5xl px-4 py-2`,children:(0,H.jsx)(Cz,{block:Ee.block,onClose:Se,autoStart:!0,externalStop:Te,onComplete:(e,t)=>{Ce(t)}})})}),(0,H.jsx)(DG,{heroSlot:nt,children:b?(0,H.jsx)(mG,{sections:w,groupKey:ne,title:String(e.frontmatter.title??``),pane:(0,H.jsx)(`div`,{className:`absolute inset-0`,style:{"--canvas-editor-preferred-height":xG(ue)},children:it}),cardArgs:{activeSectionId:P,selectedExamples:ce,onExampleSelect:Le,runState:De,deps:Ve,hasViewDef:!!D,chapters:m,challengeQuests:Ne.quests,onScrollToSection:l},onActivateSection:Ue}):(0,H.jsx)(wG,{contentSections:w,isCollection:v,collectionSlug:x,workoutItems:r,handleSelectWorkout:S,activeSectionId:P,selectedExamples:ce,runState:De,deps:Ve,handleExampleSelect:Le,hasWorkoutsTag:C,hasViewDef:!!D,chapters:m,challengeQuests:Ne.quests,onScrollToSection:l,mobilePanel:ot,desktopPanel:at,stickyAlign:O,editorWidth:k,editorAppearsAtSectionId:j})}),_&&(0,H.jsx)(hG,{})]})}var BG={"workout-complete":!0,"run-started":!0};function VG(e,t,n){let{markComplete:r}=Zz(e,t),i=(0,V.useRef)(new Set);i.current=new Set(t.filter(e=>!e.validation||!BG[e.validation.type]).map(e=>e.id));let a=(0,V.useRef)({}),o={};for(let e of n)e.quest&&(o[e.id]=e.quest);return a.current=o,(0,V.useCallback)(e=>{let t=a.current[e];t&&i.current.has(t)&&r(t)},[r])}function HG(){let e=eB(`(prefers-reduced-motion: reduce)`),t=eB(`(max-width: ${oF}px)`);return e?`reduced`:t?`mobile`:`desktop`}var UG=.25;function WG({sourcesByStageId:e,doc:t,setDoc:n,subscribe:r,enabled:i}){let[a,o]=(0,V.useState)(!1),s=(0,V.useRef)(t),c=(0,V.useRef)(null),l=(0,V.useRef)(t),u=(0,V.useRef)(a),d=(0,V.useRef)(``),f=(0,V.useRef)(null),p=(0,V.useRef)(!1);return l.current=t,u.current=a,(0,V.useEffect)(()=>{let e=d.current;if(c.current!==null){if(t===c.current){s.current=t,c.current=null;return}if(t!==s.current){o(!0);return}}t!==s.current&&t!==e&&o(!0)},[t]),(0,V.useEffect)(()=>{if(!i){c.current=null;return}let t=r(t=>{if(t.stage.id!==f.current&&(f.current=t.stage.id,d.current=e[t.stage.id]??``,s.current=``,c.current=null,o(!1),p.current=!0),u.current||c.current!==null)return;let r=d.current;if(!r)return;let i=t.index===0?r.length:Math.floor($U(ZU(t.t/UG))*r.length),a=r.slice(0,i),m=l.current;p.current=!1,a!==m&&(c.current=a,n(a))});return()=>{t()}},[i,e,n,r]),{userDiverged:a,complete:(0,V.useCallback)(()=>{if(u.current)return;let e=d.current;e&&(c.current=e,n(e))},[n])}}function GG({stages:e,activeIndex:t}){return(0,H.jsx)(`div`,{className:`relative h-full w-full`,"data-testid":`scroll-captions`,children:e.map((n,r)=>(0,H.jsxs)(`div`,{className:`absolute inset-0 overflow-y-auto transition-opacity duration-300`,style:{opacity:+(r===t)},"aria-hidden":r!==t,inert:r!==t,children:[(0,H.jsxs)(`div`,{className:`font-mono text-[11px] uppercase tracking-[0.22em]`,style:{color:n.accent??`hsl(var(--muted-foreground))`},children:[String(r+1).padStart(2,`0`),` / `,String(e.length).padStart(2,`0`)]}),(0,H.jsx)(`h3`,{className:`mt-3 text-2xl font-bold tracking-tight text-foreground`,children:n.id.replace(/-/g,` `)}),n.caption&&(0,H.jsx)(KW,{prose:n.caption,className:`mt-3 text-sm text-muted-foreground`})]},n.id))})}var KG=(0,V.forwardRef)(function({text:e,accent:t},n){let r=t??`hsl(var(--metric-rounds))`;return(0,H.jsxs)(`div`,{ref:n,className:`pointer-events-none absolute top-4 left-1/2 z-40 flex -translate-x-1/2 items-center gap-2.5 whitespace-nowrap rounded-full border bg-card px-5 py-2.5 font-mono text-[10.5px] tracking-[0.04em] opacity-0 shadow-xl`,style:{borderColor:`color-mix(in srgb, ${r} 55%, transparent)`},children:[(0,H.jsx)(`span`,{className:`size-[9px] rounded-sm`,style:{background:r}}),e]})}),qG=8,JG=3,YG=2;function XG(e,t,n){let r=e.querySelectorAll(`.cm-content .cm-line`),i=Math.max(1,Math.min(n[0],n[1]))-1,a=Math.max(1,Math.max(n[0],n[1])),o=Array.from(r).slice(i,a);if(o.length===0)return null;let s=e.getBoundingClientRect(),c=1/0,l=1/0,u=-1/0,d=-1/0;for(let e of o){let t=e.getBoundingClientRect();c=Math.min(c,t.top),l=Math.min(l,t.left),u=Math.max(u,t.bottom),d=Math.max(d,t.right)}return c-=JG,l-=qG,u+=JG,d+=qG,t&&(l=Math.max(l,t.left-YG),d=Math.min(d,t.right+YG),c=Math.max(c,t.top-YG),u=Math.min(u,t.bottom+YG)),{top:c-s.top,left:l-s.left,width:d-l,height:u-c}}function ZG(e,t){if(!t)return null;let n=t.getBoundingClientRect();if(n.width===0||n.height===0)return null;let r=e.getBoundingClientRect();return{top:n.top-r.top-YG,left:n.left-r.left-YG,width:n.width+4,height:n.height+4}}function QG({accent:e,lines:t}){let n=e??`hsl(var(--foreground))`,r=(0,V.useRef)(null),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1);return(0,V.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let n=requestAnimationFrame(()=>s(!0)),i=e.parentElement;if(!i)return()=>cancelAnimationFrame(n);let o=()=>{let e=i.firstElementChild,n=e?.getBoundingClientRect()??null;a((t?XG(i,n,t):null)??ZG(i,e))};o();let c=new ResizeObserver(o);return c.observe(i),()=>{cancelAnimationFrame(n),c.disconnect()}},[t]),(0,H.jsx)(`div`,{ref:r,className:`pointer-events-none absolute z-30 transition-all duration-300 ${i?t?`rounded-lg`:`rounded-2xl`:`-inset-1.5 rounded-2xl`}`,style:{boxShadow:`0 0 0 2px ${n}`,opacity:+!!o,...i??{}},"data-testid":`scroll-ring`,"data-ring-lines":t?`${t[0]}-${t[1]}`:void 0})}function $G({scroll:e,wodFiles:t,theme:n,noteTitle:r=`note.md`,showFrontmatter:i,doc:a,onDocChange:o,onBlocksChange:s,onStageEnter:c,onRun:l,className:u}){let d=e.stages,f=(0,V.useRef)(null),p=(0,V.useRef)(null),m=(0,V.useRef)(null),h=(0,V.useRef)(new Set),g=(0,V.useMemo)(()=>Object.fromEntries(d.map(e=>[e.id,e.source?cF(e.source,t):``])),[d,t]),[_,v]=(0,V.useState)(()=>g[d[0]?.id]??``),y=a??_,b=o??v,[x,S]=(0,V.useState)(!1),{slice:C,subscribe:w,resync:T}=pW(f,x,d),[E,D]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=f.current;if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{e.isIntersecting&&D(!0)},{rootMargin:`100px`});return t.observe(e),()=>t.disconnect()},[]);let{userDiverged:O}=WG({sourcesByStageId:g,doc:y,setDoc:b,subscribe:w,enabled:!x&&e.typewriter}),k=C.stage.id,A=eW(g[k]??``,y);(0,V.useEffect)(()=>{!x&&E&&c?.(k)},[x,k,E,c]),(0,V.useEffect)(()=>{if(!x){let e=requestAnimationFrame(T);return()=>cancelAnimationFrame(e)}},[x,T]),(0,V.useEffect)(()=>{let e=requestAnimationFrame(T);return()=>cancelAnimationFrame(e)},[k,T]),(0,V.useEffect)(()=>{O&&S(!0)},[O]),(0,V.useEffect)(()=>{let e=d.flatMap(e=>e.effects??[]);return w(t=>{let n=m.current;if(n){let e=ZU((t.t-.04)/.12),r=ZU((t.t-.5)/.2);n.style.opacity=String(Math.max(0,e-r)),n.style.transform=`translateX(-50%) translateY(${QU(-14,0,e)}px)`}let r=p.current;if(!r)return;let i=new Set;for(let n of e){if(!n.stages.includes(t.stage.id))continue;i.add(n.target);let[e,a]=n.in??[0,1],o=a>e?ZU((t.t-e)/(a-e)):1,s=n.ease===`linear`?o:$U(o);r.querySelectorAll(`[data-effect-target="${n.target}"]`).forEach(e=>{n.opacity&&(e.style.opacity=String(QU(n.opacity[0],n.opacity[1],s))),n.translateY&&(e.style.transform=`translateY(${QU(n.translateY[0],n.translateY[1],s)}px)`)})}for(let e of h.current)i.has(e)||r.querySelectorAll(`[data-effect-target="${e}"]`).forEach(e=>{e.style.opacity=``,e.style.transform=``});h.current=i})},[w,d]);let j=C.stage.accent??`hsl(var(--foreground))`;return(0,H.jsxs)(`div`,{ref:p,className:u,"data-testid":`scroll-runway-section`,children:[(0,H.jsx)(uW,{trackRef:f,height:e.runway,stages:d,activeIndex:C.index,status:(0,H.jsx)(`div`,{className:`truncate font-mono text-[11px] uppercase tracking-[0.22em] text-muted-foreground`,children:x?`Playground mode`:C.stage.id.replace(/-/g,` `)}),pane:(0,H.jsxs)(`div`,{className:`absolute inset-0`,children:[(0,H.jsx)(qU,{title:r??``,noteId:`canvas:scroll-runway`,doc:y,onDocChange:b,onBlocksChange:s,theme:n,showFrontmatter:i,run:l?{onRun:l}:void 0,className:`absolute inset-x-2 top-2 bottom-2`,children:C.stage.toast&&(0,H.jsx)(KG,{ref:m,text:C.stage.toast,accent:j})}),C.ring&&!x&&A&&(0,H.jsx)(QG,{accent:j,lines:C.ring.lines})]}),captions:(0,H.jsx)(GG,{stages:d,activeIndex:C.index})}),x&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>S(!1),className:`fixed bottom-4 left-1/2 z-50 -translate-x-1/2 rounded-full bg-foreground px-5 py-2.5 font-mono text-[10px] tracking-[0.06em] text-background opacity-95 transition-opacity hover:opacity-100`,children:[`▶ Playground mode — `,O?`your edits are kept`:`editing`,` · tap here to return to the tour`]})]})}function eK({spec:e,wodFiles:t,onStageEnter:n,className:r}){let i=e.stages,a=(0,V.useMemo)(()=>Object.fromEntries(i.map(e=>[e.id,e.source?cF(e.source,t):``])),[i,t]),o=(0,V.useRef)(null);return(0,V.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=o.current;if(!e)return;let t=new IntersectionObserver(e=>{for(let r of e){if(!r.isIntersecting)continue;let e=r.target.dataset.cardId;e&&(n?.(e),t.unobserve(r.target))}},{threshold:.4});return e.querySelectorAll(`[data-card-id]`).forEach(e=>t.observe(e)),()=>t.disconnect()},[n]),(0,H.jsx)(`section`,{className:r,"data-testid":`runway-reduced`,children:(0,H.jsx)(`div`,{className:`px-6 pt-4 pb-24`,children:(0,H.jsx)(`div`,{ref:o,className:`mx-auto max-w-2xl`,children:i.map((e,t)=>(0,H.jsxs)(`article`,{"data-card-id":e.id,className:`mb-6 rounded-2xl border border-border bg-card p-7`,children:[(0,H.jsxs)(`div`,{className:`font-mono text-[11px] uppercase tracking-[0.22em]`,style:{color:e.accent??`hsl(var(--muted-foreground))`},children:[String(t+1).padStart(2,`0`),` / `,String(i.length).padStart(2,`0`)]}),(0,H.jsx)(`h3`,{className:`mt-3 text-2xl font-bold tracking-tight text-foreground`,children:e.id.replace(/-/g,` `)}),e.caption&&(0,H.jsx)(KW,{prose:e.caption,className:`mt-3 text-sm text-muted-foreground`}),a[e.id]&&(0,H.jsx)(`pre`,{className:`mt-5 overflow-x-auto rounded-lg bg-background px-4 py-4 font-mono text-[12px] tracking-[0.04em] text-muted-foreground`,children:a[e.id]})]},e.id))})})})}function tK(){return HG()}function nK({spec:e,formFactor:t,wodFiles:n,theme:r,noteTitle:i,showFrontmatter:a,doc:o,onDocChange:s,onBlocksChange:c,onStageEnter:l,onRun:u,className:d}){let f=tK();return(t??f)===`reduced`?(0,H.jsx)(eK,{spec:e,wodFiles:n,onStageEnter:l,className:d}):(0,H.jsx)($G,{scroll:e,wodFiles:n,theme:r,noteTitle:i,showFrontmatter:a,doc:o,onDocChange:s,onBlocksChange:c,onStageEnter:l,onRun:u,className:d})}function rK({page:e,wodFiles:t,theme:n,onScrollToSection:r}){let i=e.scroll,a=i.stages,o=Mn();Nz(e.type===`guide`||e.route.startsWith(`/guide`)?e.route:void 0);let s=(0,V.useMemo)(()=>Object.fromEntries(a.map(e=>[e.id,e.source?cF(e.source,t):``])),[a,t]),[c,l]=(0,V.useState)(()=>s[a[0]?.id]??``),u=(0,V.useRef)([]),[d,f]=(0,V.useState)(null),p=VG(e.route,e.quests,a),m=(0,V.useCallback)(()=>u.current[0]??null,[]),h=Hz({getBlock:m,getContent:(0,V.useCallback)(()=>c,[c]),title:e.frontmatter.title}),{startRun:g}=h,_=DP(104),v=RG({pageRoute:e.route,quests:e.quests,block:d});Qz({pageRoute:e.route,quests:e.quests,completedResults:h.completedResults});let[,y]=Jt(`h`,{history:`replace`,shallow:!0}),b=(0,V.useMemo)(()=>({navigate:(e,t)=>o(e,{replace:t?.replace}),setQueryParam:(e,t)=>{let n=e.h;n!==void 0&&y(n,{history:t?`replace`:`push`})},swapSource:e=>l(cF(e,t)),setPanelState:e=>{if(e===`track`){let e=m();e&&g(e)}}}),[o,y,t,m,g]),x=(0,V.useCallback)((e,n)=>{let r=e.examples?.[n];r?.source&&l(cF(r.source,t))},[t]),S=(0,V.useCallback)(e=>{let t=e[0]??null;u.current=e,f(e=>e?.content===t?.content&&e?.id===t?.id?e:t)},[]),C=(0,V.useCallback)((e,t)=>{t&&g(t,e)},[g]),w=`${e.route.split(`/`).pop()??`note`}.md`,T=e.sections.slice(1).map((e,t)=>(0,H.jsx)(dG,{section:e,idx:t,blockId:e.id,keySuffix:`scroll`,isActive:!1,hasViewDef:!1,deps:b,onExampleSelect:x,selectedExampleIndex:0,challengeQuests:v.quests,onScrollToSection:r},e.id));return(0,H.jsxs)(`div`,{className:`flex flex-col min-h-screen bg-background`,"data-testid":`scroll-canvas-page`,children:[h.fullscreen?.kind===`timer`&&(0,H.jsx)(`div`,{className:`sticky z-30 border-b border-border bg-background`,style:{top:_},children:(0,H.jsx)(`div`,{className:`mx-auto h-[max(320px,min(75vh,640px))] max-w-5xl px-4 py-2`,children:(0,H.jsx)(Cz,{block:h.fullscreen.block,onClose:h.closeRun,autoStart:!0,externalStop:h.resetRequested,onComplete:(e,t)=>{h.handleWorkoutComplete(t)}})})}),(0,H.jsx)(nK,{spec:i,wodFiles:t,theme:n,noteTitle:w,showFrontmatter:e.frontmatter.showFrontmatter===!0,doc:c,onDocChange:l,onBlocksChange:S,onStageEnter:p,onRun:C}),T]})}var iK=({timeLabel:e,title:t,subtitle:n,onClick:r})=>(0,H.jsxs)(`button`,{onClick:r,className:`flex items-center gap-4 px-6 py-3 hover:bg-muted/40 transition-colors text-left group w-full`,children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 w-14 text-right`,children:(0,H.jsxs)(`div`,{className:`flex items-center justify-end gap-1`,children:[(0,H.jsx)(It,{className:`size-2.5 text-muted-foreground/40`}),(0,H.jsx)(`span`,{className:`text-[10px] font-black text-muted-foreground/60 tabular-nums`,children:e})]})}),(0,H.jsx)(`div`,{className:`flex-shrink-0 size-8 rounded-lg bg-muted flex items-center justify-center group-hover:bg-background transition-colors`,children:(0,H.jsx)(vt,{className:`size-3.5 text-signal-positive`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground truncate`,children:t}),n&&(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:n})]})]});function aK(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function oK(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function sK(e,t){return aK(e)===aK(t)}var cK=(0,V.forwardRef)(({items:e,onSelect:t,onCreateEntry:n,journalEntries:r,onOpenEntry:i,onVisibleDateChange:a,stickyOffset:o=0,className:s,renderNoteCard:c,renderResultRow:l,renderEmptyDate:u,initialDate:d},f)=>{let p=(0,V.useRef)(null),m=(0,V.useRef)(null),h=(0,V.useRef)(null),g=(0,V.useRef)(null),_=(0,V.useRef)(new Map),v=(0,V.useRef)(!1),y=(0,V.useRef)(!1),b=(0,V.useRef)(!1),x=(0,V.useRef)(!1),S=(0,V.useRef)(new Date),C=(0,V.useRef)(new Date),w=(0,V.useRef)(null),T=(0,V.useRef)(null),[E,D]=(0,V.useState)(o);(0,V.useEffect)(()=>{let e=()=>{if(!T.current)return;let e=T.current.getBoundingClientRect(),t=Math.round(e.top+window.scrollY);D(Math.max(o,t))},t=requestAnimationFrame(e);return window.addEventListener(`resize`,e,{passive:!0}),()=>{cancelAnimationFrame(t),window.removeEventListener(`resize`,e)}},[o]);let O=(0,V.useRef)(null),k=(0,V.useRef)(!1),A=(0,V.useRef)(null),j=(0,V.useRef)(``),[M,N]=(0,V.useState)(()=>{let e=new Date;if(d){let t=oK(e,90);return{start:oK(d,-14),end:oK(d,14)>t?t:oK(d,14)}}return{start:oK(e,-7),end:e}}),P=(0,V.useMemo)(()=>{let e=[],t=new Date(M.end),n=M.start;for(;t>=n;)e.push(new Date(t)),t=oK(t,-1);return e},[M]),F=(0,V.useMemo)(()=>{let t=new Map;return e.forEach(e=>{if(!e.date)return;let n=aK(new Date(e.date)),r=t.get(n)??[];r.push(e),t.set(n,r)}),t},[e]),I=(0,V.useMemo)(()=>{let t=null;return r?.forEach((e,n)=>{let r=new Date(n+`T00:00:00`);(!t||r<t)&&(t=r)}),e.forEach(e=>{if(!e.date)return;let n=new Date(e.date);(!t||n<t)&&(t=n)}),t},[r,e]),ee=(0,V.useRef)(null);(0,V.useEffect)(()=>{ee.current=I},[I]),(0,V.useLayoutEffect)(()=>{S.current=M.start},[M.start]),(0,V.useLayoutEffect)(()=>{C.current=M.end},[M.end]),(0,V.useLayoutEffect)(()=>{let e=w.current;if(!e)return;w.current=null;let t=_.current.get(e.key);if(!t)return;let n=t.getBoundingClientRect().top-e.top;Math.abs(n)>1&&window.scrollBy(0,n)},[P]);let L=(0,V.useCallback)(()=>{let e=(e,t)=>{e.current&&t.current&&(e.current.unobserve(t.current),e.current.observe(t.current))};e(h,p),e(g,m)},[]),te=(0,V.useCallback)(()=>{k.current=!0,A.current&&clearTimeout(A.current);let e=()=>{k.current=!1,A.current&&=(clearTimeout(A.current),null),L()};window.addEventListener(`scrollend`,e,{once:!0});let t=window.scrollY,n=0,r=()=>{if(!k.current)return;let i=window.scrollY;if(i===t){if(n++,n>=2){window.removeEventListener(`scrollend`,e),e();return}}else t=i,n=0;A.current=setTimeout(r,100)};A.current=setTimeout(r,150)},[L]),R=(0,V.useCallback)(e=>{let t=e.getBoundingClientRect().top+window.scrollY-E-8;window.scrollTo({top:t,behavior:`smooth`})},[E]);(0,V.useImperativeHandle)(f,()=>({scrollToDate(e){let t=aK(e),n=_.current.get(t);if(n)te(),R(n);else{let n=oK(new Date,90);O.current=t,N({start:oK(e,-14),end:oK(e,14)>n?n:oK(e,14)})}}}),[te,R]),(0,V.useEffect)(()=>{requestAnimationFrame(()=>{if(d&&!sK(d,new Date)){let e=aK(d),t=_.current.get(e);if(t){let e=t.getBoundingClientRect().top+window.scrollY-E-8;window.scrollTo({top:Math.max(0,e),behavior:`auto`})}}else window.scrollTo({top:0,behavior:`instant`});b.current=!0,L()})},[E,d,L]),(0,V.useEffect)(()=>{let e=O.current;if(!e)return;let t=_.current.get(e);t&&(O.current=null,te(),requestAnimationFrame(()=>{let e=t.getBoundingClientRect().top+window.scrollY-E-8;window.scrollTo({top:Math.max(0,e),behavior:`auto`})}))},[P,te,E]),(0,V.useEffect)(()=>{let e=()=>{!b.current||k.current||x.current||(x.current=!0,L())};return window.addEventListener(`scroll`,e,{passive:!0}),()=>{window.removeEventListener(`scroll`,e)}},[L]),(0,V.useEffect)(()=>{let e=p.current;if(!e)return;let t=new IntersectionObserver(([e])=>{if(!e.isIntersecting||v.current||!b.current||k.current||!x.current)return;let t=oK(new Date,90);if(C.current>=t)return;let n=aK(C.current),r=_.current.get(n);r&&(w.current={key:n,top:r.getBoundingClientRect().top}),v.current=!0,N(e=>{let t=oK(new Date,90);if(e.end>=t)return e;let n=oK(e.end,7);return{...e,end:n>t?t:n}})},{rootMargin:`600px 0px 0px 0px`,threshold:0});return t.observe(e),h.current=t,()=>{t.disconnect(),h.current=null}},[]),(0,V.useEffect)(()=>{let e=setTimeout(()=>{v.current=!1,L()},400);return()=>clearTimeout(e)},[M.end]),(0,V.useEffect)(()=>{let e=m.current;if(!e)return;let t=new IntersectionObserver(([e])=>{if(!e.isIntersecting||y.current||!b.current||k.current)return;let t=ee.current,n=t?oK(t,-14):oK(new Date,-90);S.current<=n||(y.current=!0,N(e=>{let t=ee.current?oK(ee.current,-14):oK(new Date,-90),n=oK(e.start,-7);return{...e,start:n<t?t:n}}))},{rootMargin:`0px 0px 400px 0px`,threshold:0});return t.observe(e),g.current=t,()=>{t.disconnect(),g.current=null}},[]),(0,V.useEffect)(()=>{let e=setTimeout(()=>{y.current=!1},400);return()=>clearTimeout(e)},[M.start]);let ne=(0,V.useRef)(E);(0,V.useEffect)(()=>{ne.current=E},[E]),(0,V.useEffect)(()=>{if(!a)return;let e=new Map,t=null,n=new IntersectionObserver(n=>{if(n.forEach(t=>{t.target.id&&(t.isIntersecting?e.set(t.target.id,t.boundingClientRect.top):e.delete(t.target.id))}),k.current||!b.current)return;let r=ne.current+8,i=``,o=1/0;if(e.forEach((e,t)=>{let n=Math.abs(e-r);n<o&&(o=n,i=t)}),i&&i!==j.current){t&&clearTimeout(t);let e=i;t=setTimeout(()=>{e!==j.current&&(j.current=e,a(e))},150)}},{rootMargin:`-${E+8}px 0px -50% 0px`,threshold:[0,.1,.25,.5,.75,1]});return _.current.forEach(e=>e&&n.observe(e)),()=>{n.disconnect(),t&&clearTimeout(t)}},[P,a,E]);let re=(0,V.useCallback)(e=>t=>{t?_.current.set(e,t):_.current.delete(e)},[]),ie=aK(new Date);return(0,H.jsxs)(`div`,{className:U(`bg-card`,s),"data-testid":`journal-date-scroll`,children:[(0,H.jsx)(`div`,{ref:T,className:`h-0`,"aria-hidden":!0}),(0,H.jsx)(`div`,{ref:p,className:`h-px`,"data-testid":`top-sentinel`}),P.map(e=>{let a=aK(e),o=(F.get(a)??[]).filter(e=>e.type===`result`),s=r?.get(a),d=a===ie,f=e>new Date(ie+`T23:59:59`),p=!s&&o.length===0;return(0,H.jsxs)(`div`,{id:a,ref:re(a),className:`flex flex-col`,style:{scrollMarginTop:E+8},children:[(0,H.jsxs)(`div`,{className:`sticky z-[5] px-6 py-2 bg-muted/80 backdrop-blur-sm border-y border-border flex items-center gap-2`,style:{top:E},children:[(0,H.jsx)(pt,{className:`size-3 text-muted-foreground`}),(0,H.jsxs)(`span`,{className:`text-[10px] font-black uppercase tracking-widest text-muted-foreground`,children:[lM(e),d&&(0,H.jsx)(`span`,{className:`ml-2 text-primary font-black`,children:`— Today`})]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-0 pb-1`,children:[s?(()=>{let e={...s,title:sk(s.title)};return c?c({dateKey:a,entry:e,isToday:d,onOpenEntry:i}):(0,H.jsxs)(`button`,{onClick:()=>i?.(a),className:`flex items-center gap-4 px-6 py-3.5 hover:bg-muted/40 transition-colors text-left group`,children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl bg-primary/10 flex items-center justify-center group-hover:bg-primary/20 transition-colors`,children:(0,H.jsx)(Ye,{className:`size-4 text-primary`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`h3`,{className:U(`text-sm truncate`,e.title?`font-bold text-foreground`:`italic text-muted-foreground`),children:e.title||`Untitled note`}),(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground font-medium`,children:`Note`})]}),(0,H.jsx)(mn,{className:`size-4 text-muted-foreground/40 group-hover:text-primary transition-colors flex-shrink-0`})]})})():null,(()=>{let e=o.filter(e=>e.group!==`playground`),n=o.filter(e=>e.group===`playground`),r=e=>l?l(e,t):(0,H.jsx)(iK,{timeLabel:e.date?new Date(e.date).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):`—`,title:e.title,subtitle:e.subtitle,onClick:()=>t(e)},`result-${e.id}`),i=(e,t)=>t.length>0&&(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-6 pt-2 pb-1`,children:[(0,H.jsx)(`div`,{className:`h-px flex-1 bg-border/40`}),(0,H.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-[0.2em] text-muted-foreground/50`,children:e}),(0,H.jsx)(`div`,{className:`h-px flex-1 bg-border/40`})]}),t.map(r)]});return(0,H.jsxs)(H.Fragment,{children:[i(`Workouts`,e),i(`Playground`,n)]})})(),p&&(u?u({date:e,dateKey:a,isFuture:f,isToday:d,onCreateEntry:n}):f?(0,H.jsx)(`button`,{"data-date":a,"data-testid":`journal-plan-workout`,onClick:()=>n?.(e),className:`flex items-center gap-3 px-6 py-3 text-left hover:bg-muted/30 transition-colors group`,children:(0,H.jsx)(`span`,{className:`text-[11px] text-muted-foreground/50 font-medium group-hover:text-primary transition-colors`,children:`+ Plan a workout`})}):(0,H.jsx)(`div`,{className:`px-6 py-2.5`,children:(0,H.jsx)(`span`,{className:`text-[11px] text-muted-foreground/30 font-medium`,children:`No activity`})}))]})]},a)}),(0,H.jsx)(`div`,{ref:m,className:`h-px`,"data-testid":`bottom-sentinel`}),I&&M.start<=oK(I,-14)&&(0,H.jsxs)(`div`,{className:`flex items-center gap-3 px-6 py-6 select-none`,"aria-hidden":!0,children:[(0,H.jsx)(`div`,{className:`h-px flex-1 bg-border/30`}),(0,H.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-[0.2em] text-muted-foreground/40`,children:`Beginning of records`}),(0,H.jsx)(`div`,{className:`h-px flex-1 bg-border/30`})]})]})});cK.displayName=`JournalDateScroll`;async function lK({workoutName:e,category:t,sourceNoteLabel:n,sourceNotePath:r,wodContent:i,date:a,wrapInWod:o=!0}){let s=ck(a??new Date),c=r?.trim()||`/collections/${encodeURIComponent(t)}`,l=[`# ${e}`,``];return o?l.push("```time",i.trimEnd(),"```"):l.push(i.trimEnd()),l.push(``),mk.create({journalDate:s,title:sk(e),rawContent:l.join(`
147
+ `),sourceId:c})}function uK(){let[e,t]=Jt(`s`,{defaultValue:``,shallow:!0,history:`replace`}),n=(0,V.useMemo)(()=>{if(e){let t=new Date(e+`T00:00:00`);if(!isNaN(t.getTime()))return t}return null},[e]),r=(0,V.useCallback)(e=>{if(!e)t(``);else{let n=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,`0`),i=String(e.getDate()).padStart(2,`0`);t(`${n}-${r}-${i}`)}},[t]),[i,a]=Jt(`feed`,{defaultValue:``,shallow:!0,history:`replace`}),o=(0,V.useCallback)(e=>{a(t=>t===e?``:e)},[a]),s=(0,V.useCallback)(()=>a(``),[a]);return{dateParam:e,selectedDate:n,setSelectedDate:r,setDateParam:t,selectedFeed:i||null,selectFeed:o,clearFeed:s}}function dK({dateKeys:e,items:t,journalEntries:n,onSelectItem:r,onOpenEntry:i,onAddToToday:a,className:o}){let s=(0,V.useMemo)(()=>{let e=new Map;for(let n of t){let t=e.get(n.feedDate)??[];t.push(n),e.set(n.feedDate,t)}return e},[t]);return e.length===0?(0,H.jsxs)(`div`,{className:U(`flex flex-col items-center justify-center py-20 text-muted-foreground/50`,o),children:[(0,H.jsx)(`p`,{className:`text-sm font-medium`,children:`No feed content found.`}),(0,H.jsx)(`p`,{className:`text-xs mt-1`,children:`Feed workouts will appear here once content is available.`})]}):(0,H.jsx)(`div`,{className:U(`bg-card flex flex-col`,o),"data-testid":`feed-feed`,children:e.map(e=>{let t=new Date(e+`T00:00:00`),o=s.get(e)??[],c=n.get(e);return(0,H.jsxs)(`div`,{id:e,className:`flex flex-col`,children:[(0,H.jsxs)(`div`,{className:`sticky z-[5] px-6 py-2 bg-muted/80 backdrop-blur-sm border-y border-border flex items-center gap-2 top-0`,children:[(0,H.jsx)(pt,{className:`size-3 text-muted-foreground flex-shrink-0`}),(0,H.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-widest text-muted-foreground`,children:lM(t)})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-0 pb-1`,children:[c&&(0,H.jsxs)(`button`,{onClick:()=>i?.(e),className:`flex items-center gap-4 px-6 py-3.5 hover:bg-muted/40 transition-colors text-left group`,children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl bg-primary/10 flex items-center justify-center group-hover:bg-primary/20 transition-colors`,children:(0,H.jsx)(Ye,{className:`size-4 text-primary`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-bold text-foreground truncate`,children:c.title}),(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground font-medium`,children:`Journal note`})]}),(0,H.jsx)(mn,{className:`size-4 text-muted-foreground/40 group-hover:text-primary transition-colors flex-shrink-0`})]}),o.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-4 px-6 py-3.5 hover:bg-muted/30 transition-colors cursor-pointer group`,onClick:()=>r(e),children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl bg-primary/10 flex items-center justify-center group-hover:bg-primary/15 transition-colors`,children:(0,H.jsx)(`span`,{className:`text-[10px] font-black text-primary`,children:`WOD`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground truncate`,children:e.name}),(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground font-medium mt-0.5`,children:e.feedName})]}),a&&(0,H.jsxs)(`button`,{onClick:t=>{t.stopPropagation(),a(e)},title:`Add to today's journal`,className:U(`flex items-center gap-1 rounded-full border border-border px-2.5 py-1`,`text-[10px] font-black uppercase tracking-widest text-muted-foreground`,`hover:text-primary hover:border-primary/50 transition-colors shrink-0`,`opacity-0 group-hover:opacity-100`),children:[(0,H.jsx)(ft,{className:`size-3`}),`Today`]}),(0,H.jsx)(mn,{className:`size-4 text-muted-foreground/40 group-hover:text-primary transition-colors flex-shrink-0`})]},e.id))]})]},e)})})}function fK({feedSlug:e}){let t=Mn(),{dateParam:n}=uK(),r=n&&/^\d{4}-\d{2}-\d{2}$/.test(n)?n:null,i=ST(),a=(0,V.useMemo)(()=>i?PI(i).find(t=>t.id===e):void 0,[i,e]),[o,s]=(0,V.useState)(new Map),[c,l]=(0,V.useState)(!0);(0,V.useEffect)(()=>{let e=!1;async function t(){l(!0);try{if(!a)return;let t=Array.from(new Set(a.items.map(e=>e.feedDate))),n=await Promise.all(t.map(async e=>{let t=await jI.getPage(`journal/${e}`).catch(()=>void 0);return t?[e,{title:t.content.match(/^#\s+(.+)$/m)?.[1]?.trim()??e,updatedAt:t.updatedAt}]:null}));if(e)return;let r=new Map;n.forEach(e=>e&&r.set(e[0],e[1])),s(r)}catch{}finally{e||l(!1)}}return t(),()=>{e=!0}},[a]);let u=(0,V.useMemo)(()=>a?a.items.map(e=>({id:e.id,feedId:a.id,feedName:a.name,feedDate:e.feedDate,name:e.name,content:e.content,path:e.path})):[],[a]),d=(0,V.useMemo)(()=>{if(r)return[r];let e=new Set(u.map(e=>e.feedDate));return Array.from(e).sort().reverse()},[r,u]),f=(0,V.useCallback)(async e=>{try{let n=await lK({workoutName:e.name,category:e.feedId,sourceNoteLabel:e.feedName,sourceNotePath:`/feeds/${encodeURIComponent(e.feedId)}/${e.feedDate}/${encodeURIComponent(e.id)}`,wodContent:e.content,wrapInWod:!1}),r=aK(new Date);ND({title:`Added to journal`,description:n.journalDate===r?`Added to today's journal`:`Added to ${n.journalDate}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>t(gO(n.journalDate??r)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not add to journal`,variant:`destructive`})}},[t]),p=(0,V.useCallback)(e=>{t(`/feeds/${encodeURIComponent(e.feedId)}/${e.feedDate}/${encodeURIComponent(e.id)}`)},[t]),m=(0,V.useCallback)(e=>{t(`/journal/${e}`)},[t]);return a?c?(0,H.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-20 text-sm font-medium text-muted-foreground`,children:`Loading…`}):(0,H.jsx)(dK,{dateKeys:d,items:u,journalEntries:o,onSelectItem:p,onOpenEntry:m,onAddToToday:f}):(0,H.jsxs)(`div`,{className:`flex flex-1 items-center justify-center p-20 text-sm text-muted-foreground`,children:[`Feed not found: `,e]})}var pK=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function mK(e,t){return new Date(e,t+1,0).getDate()}function hK(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function gK(e,t,n){return`${e}-${String(t+1).padStart(2,`0`)}-${String(n).padStart(2,`0`)}`}function _K(e){return gK(e.getFullYear(),e.getMonth(),e.getDate())}var vK=({selectedDate:e,onDateSelect:t,entryDates:n=new Set,disabled:r=!1,className:i})=>{let[a,o]=(0,V.useState)(()=>e||new Date),s=a.getFullYear(),c=a.getMonth();(0,V.useEffect)(()=>{e&&o(t=>t.getFullYear()!==e.getFullYear()||t.getMonth()!==e.getMonth()?new Date(e.getFullYear(),e.getMonth(),1):t)},[e]);let l=e?_K(e):null,u=(0,V.useMemo)(()=>{let e=mK(s,c),t=hK(s,c),n=[];for(let e=0;e<t;e++)n.push(null);for(let t=1;t<=e;t++)n.push(t);return n},[s,c]),d=e=>{e.stopPropagation(),e.preventDefault(),o(new Date(s,c-1,1))},f=e=>{e.stopPropagation(),e.preventDefault(),o(new Date(s,c+1,1))},p=a.toLocaleDateString(`en-US`,{month:`short`,year:`numeric`}),m=_K(new Date);return(0,H.jsxs)(`div`,{className:U(`select-none px-2 py-2`,r&&`opacity-60 cursor-not-allowed`,i),onClick:e=>e.stopPropagation(),"aria-disabled":r||void 0,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,H.jsx)(`button`,{onClick:d,disabled:r,className:`p-1 hover:bg-muted rounded text-muted-foreground hover:text-foreground transition-colors disabled:pointer-events-none`,"aria-label":`Previous month`,children:(0,H.jsx)(rr,{className:`h-4 w-4`})}),(0,H.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:p}),(0,H.jsx)(`button`,{onClick:f,disabled:r,className:`p-1 hover:bg-muted rounded text-muted-foreground hover:text-foreground transition-colors disabled:pointer-events-none`,"aria-label":`Next month`,children:(0,H.jsx)(mn,{className:`h-4 w-4`})})]}),(0,H.jsx)(`div`,{className:`grid grid-cols-7 gap-0.5 mb-1`,children:pK.map(e=>(0,H.jsx)(`div`,{className:`text-center text-[10px] text-muted-foreground font-medium py-0.5 w-8`,children:e},e))}),(0,H.jsx)(`div`,{className:`grid grid-cols-7 gap-0.5`,children:u.map((e,i)=>{if(e===null)return(0,H.jsx)(`div`,{className:`w-8 h-8`},`empty-${i}`);let a=gK(s,c,e),o=n.has(a),u=a===l;return(0,H.jsxs)(`button`,{disabled:r,onClick:n=>{n.stopPropagation(),n.preventDefault(),t(new Date(s,c,e),n.ctrlKey||n.metaKey)},className:U(`w-8 h-8 flex items-center justify-center rounded text-xs transition-colors relative`,`disabled:pointer-events-none`,u?`bg-primary text-primary-foreground font-bold`:a===m?`font-bold text-primary ring-1 ring-primary/40`:o?`font-semibold text-foreground hover:bg-muted`:`text-muted-foreground hover:bg-muted/50`),"aria-label":`${e} ${p}${o?` (has entries)`:``}`,children:[e,o&&!u&&(0,H.jsx)(`span`,{className:`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full bg-primary/60`})]},a)})})]})};function yK({onSave:e,lineIdleMs:t=800,getSnapshotKey:n,onError:r}){let i=(0,V.useRef)(null),a=(0,V.useRef)(null),o=(0,V.useRef)(null),s=(0,V.useRef)(null),c=(0,V.useRef)(Promise.resolve()),l=(0,V.useRef)({onSave:e,getSnapshotKey:n,onError:r});l.current={onSave:e,getSnapshotKey:n,onError:r};let[u,d]=(0,V.useState)(null),f=(0,V.useCallback)(()=>{clearTimeout(s.current??void 0),s.current=null},[]),p=(0,V.useCallback)(e=>{let t=c.current.then(async()=>{e.key!==a.current&&(await l.current.onSave(e.value),a.current=e.key,d(null))});return c.current=t.catch(e=>{d(e),l.current.onError?.(e)}),t},[]),m=(0,V.useCallback)(()=>(f(),i.current?p(i.current):c.current),[f,p]),h=(0,V.useCallback)(e=>{let n=l.current.getSnapshotKey?.(e)??(typeof e==`string`?e:JSON.stringify(e));i.current={value:e,key:n},f(),s.current=setTimeout(()=>{s.current=null,i.current&&p(i.current).catch(()=>{})},t)},[f,t,p]),g=(0,V.useCallback)((e,t)=>{o.current!==null&&o.current!==e&&m().catch(()=>{}),o.current=e},[m]),_=(0,V.useCallback)(()=>{m().catch(()=>{})},[m]);return(0,V.useEffect)(()=>{let e=()=>{m().catch(()=>{})},t=()=>{document.visibilityState===`hidden`&&e()};return window.addEventListener(`pagehide`,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`pagehide`,e),document.removeEventListener(`visibilitychange`,t),m().catch(()=>{})}},[m]),{onChange:h,onLineChange:g,onBlur:_,flush:m,error:u}}var bK=8e3;function xK({category:e,name:t,mdContent:n,seedOnMount:r=!0}){let i=EI(e,t),[a,o]=(0,V.useState)(n),[s,c]=(0,V.useState)(!0),[l,u]=(0,V.useState)(),[d,f]=(0,V.useState)({}),[p,m]=(0,V.useState)(0),[h,g]=(0,V.useState)(null),_=(0,V.useRef)({id:i,revision:0}),v=(0,V.useRef)(i);v.current=i;let y=(0,V.useRef)({rawContent:n,noteBlocks:{},sourceRevision:0}),b=(0,V.useCallback)(e=>{_.current.revision=e.sourceRevision,m(e.sourceRevision),y.current.rawContent===e.rawContent&&Object.keys(y.current.noteBlocks).length===Object.keys(e.blocks).length&&Object.values(y.current.noteBlocks).every(t=>{let n=e.blocks[t.id];return n&&n.from===t.from&&n.to===t.to&&n.kind===t.kind})&&(y.current={rawContent:e.rawContent,noteBlocks:e.blocks,sourceRevision:e.sourceRevision},f(e.blocks))},[]),x=yK({onSave:(0,V.useCallback)(async e=>{if(e.routeId===v.current&&h)throw h;let t=await tk.saveNote({noteId:e.noteId,rawContent:e.rawContent,blocks:e.noteBlocks,expectedSourceRevision:_.current.id===e.noteId?_.current.revision:e.sourceRevision,metadata:{title:e.title},noteType:`playground`});v.current===e.routeId&&(_.current.id=t.id,u(t.id),b({rawContent:t.rawContent,blocks:t.blocks??{},sourceRevision:t.sourceRevision??1}))},[b,h]),lineIdleMs:500,getSnapshotKey:e=>JSON.stringify([e.noteId,e.rawContent,Object.values(e.noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport])])});(0,V.useEffect)(()=>{let e=!1;_.current={id:i,revision:0},c(!0),g(null);let a=Aa(n,{sourceRevision:1,registeredWidgets:wa}),s=(e,t,n,r)=>{o(e),f(t),m(n),u(r),_.current={id:r??i,revision:n},y.current={rawContent:e,noteBlocks:t,sourceRevision:n}},l=setTimeout(()=>{e||(e=!0,s(n,a,0),g(Error(`Note load timed out. Reload before saving to avoid overwriting stored content.`)),c(!1))},bK);return(async()=>{try{let o=await jI.getPage(i);if(e)return;if(o)s(o.content,o.noteBlocks??{},o.sourceRevision??1,o.id);else if(r){let r=await tk.saveNote({noteId:i,rawContent:n,blocks:a,expectedSourceRevision:0,metadata:{title:t},noteType:`playground`});e||s(r.rawContent,r.blocks??{},r.sourceRevision??1,r.id)}else s(n,a,0)}catch(t){e||(s(n,a,0),g(t))}finally{clearTimeout(l),e||c(!1)}})(),()=>{e=!0,clearTimeout(l)}},[i,n,t,r]);let S=(0,V.useCallback)(e=>{(y.current.rawContent!==e.rawContent||JSON.stringify(Object.values(y.current.noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))!==JSON.stringify(Object.values(e.noteBlocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport])))&&(y.current=e,o(e.rawContent),f(e.noteBlocks),x.onChange({...e,routeId:i,noteId:_.current.id,title:t}))},[x.onChange,i,t]),C=(0,V.useCallback)(e=>{if(o(e),y.current.rawContent===e)return;let t=Aa(e,{sourceRevision:_.current.revision||1,registeredWidgets:wa});S({rawContent:e,noteBlocks:t,sourceRevision:_.current.revision})},[S]),w=(0,V.useCallback)(async()=>{S({rawContent:n,sourceRevision:_.current.revision,noteBlocks:Aa(n,{sourceRevision:_.current.revision||1,registeredWidgets:wa})}),await x.flush()},[n,S,x.flush]),T=(0,V.useCallback)(()=>_.current.revision,[]);return{content:a,loading:s,entryId:l,noteBlocks:d,sourceRevision:p,onIdentityChange:S,onSaved:b,onChange:C,onLineChange:x.onLineChange,onBlur:x.onBlur,flush:x.flush,committedSourceRevision:T,resetToOriginal:w,isModified:a!==n,error:x.error??h}}var SK=new Map;function CK(e,t,n){let r=t?e.filter(e=>e.blockId===t):e;if(r.length===0)return{current:[],currentVersion:0,history:new Map};let i=new Map;for(let e of r){let t=e.blockVersion;i.has(t)||i.set(t,[]),i.get(t).push(e)}let a=[],o=0;for(let[e,t]of i)t.some(e=>e.blockContentId===n)&&(e>o?(o=e,a.length=0,a.push(...t)):e===o&&a.push(...t));let s=new Map;for(let[e,t]of i)e!==o&&s.set(e,{version:e,contentId:t[0]?.blockContentId,results:t});return{current:a,currentVersion:o,history:s}}function wK(e,t,n,r,i){let a=e.map(e=>{if(e.type!==`time`&&e.type!==`log`)return e;let i=parseInt(e.id.replace(`${e.type}-line-`,``),10),a=t.find(e=>e.startLine+1===i),o={};if(r&&a){let{current:e}=CK(r,a.id,a.contentId);o={hasResult:e.length>0,resultCount:e.length}}return e.type===`log`?{...e,...o}:{...e,...o,onRun:()=>{let e=a||t.find(e=>e.startLine+1===i)||t[0];e&&n(e)}}});if(i){let e=a.findIndex(e=>e.type===`heading`),t=e===-1?0:e;if(a[t])return a.map((e,n)=>n===t?{...e,onRun:i,runIcon:`edit`}:e)}return a}function TK({content:e,scriptBlocks:t,onStartWorkout:n,results:r,onEditNote:i}){let a=(0,V.useMemo)(()=>wK(dL(e),t,n,r,i),[e,t,n,r,i]),{setL3Items:o}=BD();return(0,V.useEffect)(()=>(o(fL(a)),()=>o([])),[a,o]),a}function EK(e){switch(e.kind){case`journal`:return gO(e.id);case`playground`:return mO(e.id);case`workout`:return e.category===`effort`?jO(e.id):e.category?xO(e.category,e.id):_O(e.raw)}}function DK(e){let t=yN(e);return t.kind===`workout`&&!t.category?_O(e):EK(t)}var OK={efforts:[],related:[],backlinks:[]},kK=8;function AK(e){let t=e.id,n=e.type===`playground`||e.sourceId===`playground`||t.startsWith(`playground/`),r=yN(t);if(e.type===`journal`||e.journalDate||!n&&r.kind===`journal`){let n=e.journalDate??(r.kind===`journal`?r.id:void 0);return{zone:`journal`,up:n?{id:n,title:`Journal`,to:hO(n)}:null,stamps:[t]}}if(n||r.kind===`playground`){let e=AN({id:t});return{zone:`playgrounds`,up:{id:`playgrounds`,title:`Playgrounds`,to:EO()},stamps:[`/playground/${e}`]}}if(r.kind===`workout`){if(r.category===`effort`)return{zone:`efforts`,up:{id:`efforts`,title:`Efforts`,to:DO()},stamps:[jO(r.id)]};if(r.category===`feeds`){let[,e,n,r]=t.split(`/`);return{zone:`feeds`,up:e?{id:e,title:e,to:yO(e)}:null,stamps:e&&n&&r?[`/feeds/${e}/${n}/${r}`]:[]}}if(r.category)return{zone:`feeds`,up:{id:r.category,title:r.category,to:bO(r.category)},stamps:[xO(r.category,r.id)]}}if(e.type===`page`&&(e.pageId??e.slug)){let t=e.pageId??e.slug;return{zone:null,up:{id:t,title:`/p/${t}`,to:TO(t)},stamps:[]}}return{zone:null,up:null,stamps:[]}}function jK(e){if(!e.startsWith(`/`))return null;let t=e.split(`#`)[0],n=t.replace(/\/+$/,``).split(`/`).filter(Boolean),r=n[n.length-1];if(r)try{r=decodeURIComponent(r)}catch{}return{id:t,title:r||t,to:t}}function MK(e,t){let n=new Set,r=[];for(let i of e){if(!i.effortSlug||n.has(i.effortSlug))continue;n.add(i.effortSlug);let e=!t||t.has(i.effortSlug);r.push({id:i.effortSlug,title:i.effortSlug,to:e?jO(i.effortSlug):`${DO()}?q=${encodeURIComponent(i.effortSlug)}`})}return r}function NK(e,t,n=kK){let r=new Set(e.filter(e=>e.noteId===t&&e.dataType===`wod`&&e.blockContentId).map(e=>e.blockContentId));if(r.size===0)return[];let i=new Map;for(let a of e)if(a.dataType===`wod`&&!(!a.blockContentId||!r.has(a.blockContentId)||a.noteId===t)&&!i.has(a.noteId)&&(i.set(a.noteId,{id:a.noteId,title:a.noteTitle||a.noteId,to:DK(a.noteId)}),i.size>=n))break;return[...i.values()]}function PK(e,t,n){if(t.length===0)return[];let r=e.filter(e=>e.id!==n&&!!e.sourceId&&t.some(t=>e.sourceId===t||e.sourceId.startsWith(`${t}#`)));return r.sort((e,t)=>t.createdAt-e.createdAt),r.map(e=>({id:e.id,title:e.title||e.id,to:DK(e.id)}))}function FK(e,t){let n=new Map;for(let r of e)r.noteId===t||n.has(r.noteId)||n.set(r.noteId,{id:r.noteId,title:r.noteId,to:DK(r.noteId)});return[...n.values()]}function IK({noteId:e,stamps:t,effortSlug:n}){let r=t.join(`
148
+ `),[i,a]=(0,V.useState)({key:``,data:OK}),o=`${e}\u0000${r}\u0000${n??``}`,s=i.key===o?i.data:OK;return(0,V.useEffect)(()=>{let t=!1,i=r?r.split(`
149
+ `):[];return Promise.all([Z.getAllFromIndex(`block_efforts`,`by-note`,e),Z.getAllFromIndex(`block_index`,`by-note`,e),Z.getAllNotes(),Z.getAllEfforts(),n?Z.getAllFromIndex(`block_efforts`,`by-effort`,n):Promise.resolve([])]).then(async([r,a,o,s,c])=>{if(t)return OK;let l=new Set(s.map(e=>e.slug)),u=[...new Set(a.filter(e=>e.dataType===`wod`&&e.blockContentId).map(e=>e.blockContentId))],d=await Promise.all(u.map(e=>Z.getAllFromIndex(`block_index`,`by-content`,e)));if(t)return OK;let f=NK([...a,...d.flat()],e);if(n){let t=new Set(f.map(e=>e.id));for(let n of FK(c,e))t.has(n.id)||(t.add(n.id),f.push(n))}return{efforts:MK(r,l),related:f,backlinks:PK(o,i,e)}}).then(e=>{!t&&e&&a({key:o,data:e})}).catch(()=>{}),()=>{t=!0}},[e,r,n,o]),s}function LK({data:e,up:t,source:n,relatedLabel:r=`Related workouts`}){let{setContextNav:i}=BD(),a=zt();return(0,V.useEffect)(()=>{let o=[],s=(e,t,n)=>{n.length!==0&&o.push({kind:`section`,id:e,label:t,entries:n.map(t=>({kind:`link`,id:`${e}:${t.id}`,label:t.title,to:t.to}))})};return s(`note-context-up`,`Up`,t?[t]:[]),s(`note-context-source`,`Source`,n?[n]:[]),s(`note-context-efforts`,`Efforts`,e.efforts),s(`note-context-backlinks`,`Journal copies`,e.backlinks),s(`note-context-related`,r,e.related),i({pathname:a.pathname,spec:o}),()=>i(void 0)},[e,t,n,r,a.pathname,i]),null}function RK(e,t){return(0,V.useMemo)(()=>{let n=[];return t.onPlay&&(e===`playground`||e===`journal-active`||e===`collection-readonly`)&&n.push({id:`play`,label:`Play`,icon:(0,H.jsx)(cn,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:t.onPlay}),t.onLog&&(e===`playground`||e===`journal-active`||e===`collection-readonly`)&&n.push({id:`log`,label:`Log`,icon:(0,H.jsx)(Be,{className:`h-3 w-3`}),primary:!0,onClick:t.onLog}),t.onOpenInPlayground&&(e===`journal-plan`||e===`collection-readonly`)&&n.push({id:`open-in-playground`,label:`Playground`,icon:(0,H.jsx)(o,{className:`h-3 w-3`}),onClick:t.onOpenInPlayground}),t.onShare&&n.push({id:`share`,label:`Share`,icon:(0,H.jsx)(g,{className:`h-3 w-3`}),onClick:t.onShare}),t.onAddToToday&&e===`playground`&&n.push({id:`add-to-today`,label:`Today`,icon:(0,H.jsx)(ye,{className:`h-3 w-3`}),onClick:t.onAddToToday}),t.onSchedule&&n.push({id:`schedule`,label:`Schedule`,icon:(0,H.jsx)(ke,{className:`h-3 w-3`}),onClick:t.onSchedule}),n},[e,t.onPlay,t.onLog,t.onShare,t.onAddToToday,t.onSchedule,t.onOpenInPlayground])}async function zK(e){let t=new TextEncoder().encode(e),n=new CompressionStream(`gzip`),r=n.writable.getWriter(),i=n.readable.getReader();r.write(t),r.close();let a=[];for(;;){let{done:e,value:t}=await i.read();if(e)break;a.push(t)}let o=a.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.length;let l=``;for(let e=0;e<s.length;e++)l+=String.fromCharCode(s[e]);return btoa(l).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}async function BK(e,t){let n=e.dialect||`time`,r=await zK(`\`\`\`${e.sport?`${n}:${e.sport}`:n}\n${e.content.trimEnd()}\n\`\`\`\n`),i=`${window.location.origin}${CO({zip:r})}`;return t?`${i}&src=${encodeURIComponent(t)}`:i}async function VK(e,t){let n=await BK(e,window.location.pathname),{pathname:r,search:i}=new URL(n);t(`${r}${i}`)}async function HK(e){let t=await BK(e,window.location.pathname);window.open(t,`_blank`)}async function UK(e){let t=e.dialect||`time`,n=await zK(`\`\`\`${e.sport?`${t}:${e.sport}`:t}\n${e.content.trimEnd()}\n\`\`\`\n`),r=`shared by ${xv()}`;return`${window.location.origin}/?z=${n}&by=${encodeURIComponent(r)}`}function WK(e){UK(e).then(e=>{navigator.clipboard.writeText(e).then(()=>{ND({title:`Link copied`,description:`Share link copied to clipboard.`})}).catch(()=>{ND({title:`Could not copy`,description:e,variant:`destructive`})})})}function GK(e=`end`){let t=(0,V.useRef)(null),[n,r]=(0,V.useState)(e);return{triggerRef:t,align:n,recompute:(0,V.useCallback)(()=>{let e=t.current;if(!e)return;let{left:n,right:i}=e.getBoundingClientRect(),a=(n+i)/2;r(a>window.innerWidth/2?`end`:`start`)},[])}}function KK(e,t){if(t){t();return}let n=new Blob([e.content],{type:`text/markdown`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`${e.name.replace(/[/\\:*?"<>|]/g,`-`)}.md`,i.click(),URL.revokeObjectURL(r)}function qK({currentWorkout:e,onDownload:t}){return e.content===``?null:(0,H.jsxs)(`button`,{type:`button`,onClick:()=>KK(e,t),className:`flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-[13px] text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:[(0,H.jsx)(Be,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:`Download Markdown`})]})}function JK(e,t,n){let r=Mn(),{l3Items:i,scrollToSection:a,secondarySpec:o,streamControls:s}=BD(),c=t&&t.length>0?t:i,l=eP(o),u=[];s&&u.push({kind:`custom`,id:`l3-stream-controls`,nav:!0,render:()=>(0,H.jsx)(iF,{streamControls:s})});for(let e of l)if(e.kind===`section`){if(e.entries.length===0)continue;u.push({kind:`heading`,id:e.id,label:e.label,nav:!0});for(let t of e.entries)u.push({kind:`row`,id:t.id,label:t.label,nav:!0,onSelect:()=>{t.onRun?t.onRun():t.to?r(t.to):t.sectionId&&a(t.sectionId)}})}else u.push({kind:`row`,id:e.id,label:e.label,nav:!0,onSelect:()=>{e.onRun?e.onRun():e.to?r(e.to):e.sectionId&&a(e.sectionId)}});if(c.length>0){u.push({kind:`heading`,id:`on-this-page`,label:`On this page`,nav:!0});for(let e of c)u.push({kind:`row`,id:e.id,label:e.label,nav:!0,secondary:e.secondaryAction?{label:e.secondaryAction.label,icon:e.secondaryAction.icon&&(0,H.jsx)(e.secondaryAction.icon,{className:`size-3.5`}),onSelect:()=>{e.secondaryAction?.action.type===`call`&&e.secondaryAction.action.handler()}}:void 0,onSelect:()=>{e.action.type===`call`?e.action.handler():a(e.id)}})}return e.content!==``&&u.push({kind:`row`,id:`download-markdown`,label:`Download Markdown`,icon:(0,H.jsx)(Be,{className:`size-4`}),nav:!1,onSelect:()=>KK(e,n)}),u}function YK({currentWorkout:e,onDownload:t,items:n}){let r=JK(e,n,t),i=e=>e.kind===`heading`?(0,H.jsx)(WP,{children:e.label},e.id):e.kind===`custom`?(0,H.jsx)(`div`,{className:`px-1 py-1`,children:e.render()},e.id):(0,H.jsxs)(VP,{onClick:e.onSelect,className:`gap-2`,children:[e.icon,(0,H.jsx)(`span`,{className:U(`flex-1 truncate`,e.secondary&&`pr-8`),children:e.label}),e.secondary&&(0,H.jsx)(`button`,{className:`ml-auto flex items-center justify-center size-5 rounded text-primary hover:bg-primary/10 transition-colors`,title:e.secondary.label,onClick:t=>{t.stopPropagation(),e.secondary?.onSelect()},children:e.secondary.icon})]},e.id),a=r.filter(e=>e.nav),o=r.filter(e=>!e.nav);return r.length===0?null:(0,H.jsxs)(RP,{children:[(0,H.jsx)(zP,{asChild:!0,children:(0,H.jsxs)(W,{variant:`ghost`,size:`icon`,"aria-label":`Page options`,className:U(`text-muted-foreground`,`2xl:hidden`),children:[(0,H.jsx)(ge,{className:`size-5`}),(0,H.jsx)(`span`,{className:`sr-only`,children:`Page options`})]})}),(0,H.jsxs)(BP,{align:`end`,className:`min-w-56 max-h-[calc(100dvh-6rem)] overflow-y-auto`,children:[a.length>0&&(0,H.jsxs)(`div`,{className:`2xl:hidden`,children:[a.map(i),(0,H.jsx)(UP,{})]}),o.map(i)]})]})}var XK=lL("# My Workout\n\n```time\n$CURSOR\n```\n"),ZK={content:XK.content,cursorOffset:XK.cursorOffset};function QK({mode:e,currentWorkout:t,index:n,onReset:r}){let i=Mn(),[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(!1),l=CF(),u=dF(),d=l&&u;return d&&e!==`playground`?null:(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e===`playground`&&(0,H.jsx)(XB,{primary:{id:`new-playground`,label:a?`Creating…`:`New`,icon:ye,action:{type:`call`,handler:async()=>{if(!a){o(!0);try{let e=await Rz(ZK.content);i(`/playground/${encodeURIComponent(e)}`)}finally{o(!1)}}}}},secondary:{id:`reset-playground`,label:s?`Resetting…`:`Reset to default`,icon:We,action:{type:`call`,handler:async()=>{if(!(!r||s)){c(!0);try{await r()}finally{c(!1)}}}}},size:`sm`}),!d&&(0,H.jsx)(iI,{}),!d&&(0,H.jsx)(bU,{}),!d&&(0,H.jsx)(YK,{currentWorkout:t,items:n&&n.length>0?fL(n):void 0})]})}function $K({feedSlug:e,feedDate:t,feedItem:n,theme:r,onViewCreated:i}){let a=Mn(),o=ST(),{item:s,feed:c}=(0,V.useMemo)(()=>{if(!o)return{item:void 0,feed:void 0};let r=PI(o).find(t=>t.id===e);return{item:r?.items.find(e=>e.feedDate===t&&e.id===n),feed:r}},[o,e,t,n]),{content:l,noteBlocks:u,sourceRevision:d,onIdentityChange:f,onSaved:p,onChange:m,onLineChange:h,onBlur:g}=xK({category:`feed/${e}/${t}`,name:n,mdContent:s?.content??`# ${n}\n\n*Feed item not found.*\n`,seedOnMount:!1}),[_,v]=(0,V.useState)([]),y=`feed/${e}/${t}/${n}`,b=(0,V.useCallback)(async r=>{try{let i=C(),o=await lK({workoutName:s?.name??n,category:e,sourceNoteLabel:c?.name,sourceNotePath:`/feeds/${encodeURIComponent(e)}/${t}/${encodeURIComponent(n)}`,wodContent:r.content}),l=Object.values(o.blocks??{}).find(e=>e.kind===`wod`);if(!l)throw Error(`The saved journal workout is unavailable.`);SK.set(i,{block:{...r,id:l.id},noteId:o.id}),a(vO(o.journalDate??``,i))}catch(e){ND({title:`Workout not started`,description:e instanceof Error?e.message:`Save failed. Your draft is kept.`,variant:`destructive`})}},[c,t,n,e,s,a,y]),x=(0,V.useCallback)(async r=>{try{let i=await lK({workoutName:s?.name??n,category:e,sourceNoteLabel:c?.name,sourceNotePath:`/feeds/${encodeURIComponent(e)}/${t}/${encodeURIComponent(n)}`,wodContent:r.content}),o=aK(new Date);ND({title:`Added to journal`,description:i.journalDate===o?`Added to today's journal`:`Added to ${i.journalDate}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>a(gO(i.journalDate??o)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not add to journal`,variant:`destructive`})}},[c,t,n,e,s,a]),[S,w]=(0,V.useState)(null),T=(0,V.useCallback)(async(r,i)=>{let o=`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,`0`)}-${String(i.getDate()).padStart(2,`0`)}`;try{await lK({workoutName:s?.name??n,category:e,sourceNoteLabel:c?.name,sourceNotePath:`/feeds/${encodeURIComponent(e)}/${t}/${encodeURIComponent(n)}`,wodContent:r.content,date:i}),a(gO(o)),ND({title:`Scheduled`,description:`Added to journal for ${o}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>a(gO(o)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not schedule workout`,variant:`destructive`})}},[c,t,n,e,s,a]),E=TK({content:l,scriptBlocks:_,onStartWorkout:b}),D=`feeds/${e}/${t}/${n}`,O=(0,V.useMemo)(()=>AK({id:D,type:`collection`}),[D]),k=IK({noteId:D,stamps:O.stamps}),A=RK(`collection-readonly`,{onPlay:b,onShare:WK,onAddToToday:x,onSchedule:w,onOpenInPlayground:e=>VK(e,a)});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(PP,{title:s?.name??n,actions:(0,H.jsx)(wF,{label:`Workout actions`,children:(0,H.jsx)(QK,{mode:`collection-readonly`,currentWorkout:{name:s?.name??n,content:l},index:E})}),editor:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 px-4 py-6 sm:px-6`,children:[(0,H.jsx)(LK,{data:k,up:O.up}),(0,H.jsx)(HU,{value:l,onChange:m,onCursorPositionChange:h,onBlur:g,noteId:y,noteBlocks:u,sourceRevision:d,onIdentityChange:e=>f({rawContent:e.rawContent,noteBlocks:e.blocks,sourceRevision:e.sourceRevision}),onSaved:p,commands:A,enableInlineRuntime:!1,onViewCreated:i,theme:r,showLineNumbers:!1,onBlocksChange:v})]})}),S&&(0,H.jsx)(Ib,{open:!0,onClose:()=>w(null),title:`Schedule workout`,children:(0,H.jsx)(vK,{selectedDate:null,onDateSelect:e=>{T(S,e),w(null)}})})]})}function eq(e,t){if(e.startsWith(`# 👋`))return e;let n=t?.replace(/^shared by:?\s*/i,``).trim();return`${n?`# 👋 ${n} sent you this workout`:`# 👋 Edit Me`}\n\nChange the reps, distance, or load below — this is live.\n\n${e}\n\n> Press **Run** ↑ to start the Clock.\n`}var tq=`wodwiki.homeShared.v1`;function nq(){return typeof window<`u`&&window.localStorage?window.localStorage:null}function rq(e){try{nq()?.setItem(tq,JSON.stringify(e)),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`wodwiki:home-shared`,{detail:e}))}catch{}}function iq(){try{let e=nq()?.getItem(tq);if(!e)return null;let t=JSON.parse(e);return typeof t?.content==`string`?{content:t.content,by:typeof t.by==`string`?t.by:void 0}:null}catch{return null}}function aq(){try{nq()?.removeItem(tq)}catch{}}function oq({pageRoute:e,quests:t,running:n}){let{markComplete:r}=Zz(e,t),i=(0,V.useMemo)(()=>t.filter(e=>e.validation?.type===`run-started`),[t]);(0,V.useEffect)(()=>{if(n)for(let e of i)r(e.id)},[n,i,r])}var sq={editor:`qs-tour-editor`,"editor-metrics":`qs-tour-editor`,"editor-run":`qs-tour-editor`,timer:`qs-tour-timer`,"timer-wallclock":`qs-tour-timer`,"timer-next":`qs-tour-timer`,analytics:`qs-tour-analytics`,"wql-idea":`qs-tour-analytics`,"wql-table":`qs-tour-analytics`,"wql-graphs":`qs-tour-analytics`,"wql-dashboard":`qs-tour-analytics`,"wql-live":`qs-tour-analytics`,library:`qs-tour-library`},cq={"workout-complete":!0,"run-started":!0};function lq(e,t){let{markComplete:n}=Zz(e,t),r=(0,V.useRef)(new Set);return r.current=new Set(t.filter(e=>!e.validation||!cq[e.validation.type]).map(e=>e.id)),(0,V.useCallback)(e=>{let t=sq[e];t&&r.current.has(t)&&n(t)},[n])}var uq=(0,V.createContext)(null);function dq({children:e}){let t=(0,V.useRef)({"editor.window":null,"editor.wodBlock":null,"editor.runButton":null,"editor.typeahead":null,"timer.floor":null,"timer.nextButton":null,"timer.castButton":null,"metrics.efforts":null,"metrics.data":null,"metrics.compound":null,"analytics.vocab":null,"analytics.table":null,"analytics.graphs":null,"analytics.dashboard":null}),[n,r]=(0,V.useState)(0),i=(0,V.useCallback)((e,n)=>{t.current[e]!==n&&(t.current[e]=n,r(e=>e+1))},[]);return(0,H.jsx)(uq.Provider,{value:{register:i,registry:t,version:n},children:e})}function fq(){return(0,V.useContext)(uq)||{registry:{current:{}},register:()=>()=>{},version:0}}function pq(e){let t=(0,V.useContext)(uq)?.register;return(0,V.useCallback)(n=>t?.(e,n),[e,t])}function mq({ringKey:e,el:t}){let{register:n}=fq();return(0,V.useLayoutEffect)(()=>{n(e,t)},[e,t,n]),null}function hq({target:e,accent:t,canvasRef:n}){let{registry:r,version:i}=fq(),[a,o]=(0,V.useState)(null),s=e?.key??null;return(0,V.useLayoutEffect)(()=>{if(!s){o(null);return}let e=()=>{let e=r.current[s],t=n.current;if(!e||!t){o(null);return}let i=e.getBoundingClientRect(),a=t.getBoundingClientRect(),c=Math.round(i.left-a.left),l=Math.round(i.top-a.top),u=Math.round(i.width),d=Math.round(i.height);if(u<=0||d<=0||c+u<0||l+d<0||c>a.width||l>a.height){o(null);return}o({x:c,y:l,w:u,h:d})};e();let t=window.setTimeout(e,120),i=window.setTimeout(e,480),a=null,c=r.current[s];c&&typeof ResizeObserver<`u`&&(a=new ResizeObserver(e),a.observe(c));let l=new MutationObserver(e);return c&&l.observe(c,{attributes:!0,attributeFilter:[`style`]}),window.addEventListener(`resize`,e),()=>{window.clearTimeout(t),window.clearTimeout(i),a?.disconnect(),l.disconnect(),window.removeEventListener(`resize`,e)}},[s,i,r,n]),!e||!a?null:(0,H.jsx)(`div`,{"data-testid":`tour-ring`,className:`pointer-events-none absolute z-30 rounded-2xl transition-all duration-500 ease-out`,style:{left:a.x-6,top:a.y-6,width:a.w+12,height:a.h+12,boxShadow:`0 0 0 2px ${t}`}})}var gq=`hsl(var(--primary))`,_q={ink:`hsl(var(--foreground))`,editor:gq,timer:gq,analytics:gq,library:gq,rounds:gq};_q.editor,_q.editor,_q.timer,_q.timer,_q.timer,_q.analytics,_q.analytics,_q.analytics,_q.analytics,_q.analytics,_q.analytics,_q.analytics,_q.analytics;var vq={editor:`WOD Editor & Autocomplete`,timer:`Clock`,analytics:`WQL Analytics`,metrics:`Own the Metrics`},yq={start:`/guide/start`,protocols:`/guide/protocols`,structure:`/guide/structure`,metrics:`/guide/metrics`,clock:`/guide/clock`,wql:`/guide/wql`,dashboards:`/guide/dashboards`,sessions:`/guide/sessions`,basics:`/guide/start`,"custom-metrics":`/guide/metrics`,dialects:`/guide/sessions#intent`,complex:`/guide/sessions#full-session`};function bq(){return(0,H.jsxs)(`div`,{className:`@container flex w-full flex-col items-center text-center`,children:[(0,H.jsxs)(`h1`,{className:`text-[clamp(32px,6.5cqi,64px)] font-extrabold leading-[1.02] tracking-[-0.04em]`,children:[(0,H.jsxs)(`span`,{className:`block`,children:[(0,H.jsx)(`span`,{className:`mr-[0.35em]`,children:`Write it.`}),(0,H.jsx)(`span`,{children:`Time it.`})]}),(0,H.jsxs)(`span`,{className:`block`,children:[(0,H.jsx)(`span`,{className:`mr-[0.35em]`,children:`Track it.`}),(0,H.jsx)(`span`,{children:`Own it.`})]})]}),(0,H.jsxs)(`p`,{className:`mt-4 xl:mt-6 max-w-xl xl:max-w-2xl 2xl:max-w-3xl text-[15px] sm:text-base xl:text-lg leading-relaxed text-muted-foreground`,children:[`Plain-text Markdown becomes a step-through workout clock, `,(0,H.jsx)(`br`,{}),`line and splits become queryable training data points.`]})]})}var xq=`https://github.com/bitcobblers/wod-wiki`;function Sq(){return(0,H.jsx)(`footer`,{"data-testid":`tour-footer`,className:`border-t border-border px-6 py-8`,children:(0,H.jsxs)(`p`,{className:`mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-2 text-sm text-muted-foreground`,children:[(0,H.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` WOD Wiki`]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,H.jsx)(`a`,{href:xq,target:`_blank`,rel:`noopener noreferrer`,className:`underline-offset-4 transition-colors hover:text-foreground hover:underline`,children:`GitHub repository`})]})})}async function Cq(){await FT.wipe();try{for(let e=localStorage.length-1;e>=0;e--){let t=localStorage.key(e);t&&t!==`wodwiki.dataSettings.v1`&&localStorage.removeItem(t)}}catch{}try{sessionStorage.clear()}catch{}}function wq({index:e,before:t,accentText:n,after:r,accent:i,blurb:a}){return(0,H.jsx)(`header`,{className:`flex items-center border-b border-border/60 px-6 py-14 lg:px-12 xl:py-20 2xl:py-24 xl:px-16`,children:(0,H.jsxs)(`div`,{className:`mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px]`,children:[(0,H.jsxs)(`h2`,{className:`flex items-baseline gap-4 xl:gap-6 text-[clamp(26px,3.6vw,52px)] font-extrabold leading-[1.1] tracking-[-0.03em]`,children:[(0,H.jsx)(`span`,{className:`font-mono text-xs font-normal tracking-normal text-muted-foreground`,children:e}),(0,H.jsxs)(`span`,{children:[t,n,r]})]}),(0,H.jsx)(`p`,{className:`mt-3 xl:mt-4 max-w-xl xl:max-w-2xl 2xl:max-w-3xl text-[clamp(14px,1.2vw,18px)] leading-[1.65] text-muted-foreground`,children:a})]})})}var Tq=`https://github.com/bitcobblers/wod-wiki`,Eq=`https://forms.gle/6YHpxwAJh6PAsyAQ6`,Dq=`underline-offset-4 transition-colors hover:text-foreground hover:underline`;function Oq(e){let t=`inline-flex items-center gap-1.5 font-medium text-foreground underline-offset-4 transition-colors hover:underline`,n=(0,H.jsxs)(H.Fragment,{children:[e.children,(0,H.jsx)(ze,{className:`size-3.5 text-muted-foreground/50`,"aria-hidden":!0})]});return e.href===void 0?e.onClick===void 0?(0,H.jsx)(Tt,{to:e.to,className:t,children:n}):(0,H.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`text-left ${t}`,children:n}):(0,H.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:t,children:n})}function kq({children:e}){return(0,H.jsxs)(`li`,{className:`flex gap-2.5 text-sm leading-6 text-muted-foreground`,children:[(0,H.jsx)(`span`,{"aria-hidden":!0,className:`mt-[11px] size-1 shrink-0 rounded-full bg-muted-foreground/50`}),(0,H.jsx)(`span`,{children:e})]})}function Aq(){return(0,H.jsx)(`span`,{className:`rounded-full border border-emerald-500/30 bg-emerald-500/10 px-2 py-0.5 font-mono text-[11px] font-medium text-emerald-600`,children:`Active`})}function jq(e){let t=e.icon;return(0,H.jsxs)(`article`,{className:`flex flex-col rounded-xl border border-border bg-background p-5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,H.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),e.badge]}),(0,H.jsx)(`h3`,{className:`mt-4 text-base font-semibold text-foreground`,children:e.title}),(0,H.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.text}),(0,H.jsx)(`div`,{className:`mt-4 flex flex-1 flex-col gap-2 text-sm`,children:e.children})]})}function Mq(){let[e,t]=(0,V.useState)(!1),n=Mn(),[r]=(0,V.useState)(kT),i=async()=>{window.confirm(`Wipe every note, result, and setting stored in this browser? This cannot be undone.`)&&(t(!0),await Cq(),window.location.reload())},a=async()=>{let e=lk(),t=await mk.create({journalDate:e,title:e,rawContent:``});kz.record(Az.noteCreated),n(_O(t.id))};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`section`,{id:`tour-section-offerings`,"data-testid":`tour-section-offerings`,"aria-label":`You own your data`,children:[(0,H.jsx)(wq,{index:`06`,before:`You `,accentText:`Own the Data`,after:``,accent:_q.library,blurb:`Browser modes run from IndexedDB, with optional backup and sync to your own Turso database. API deployments use a server you choose.`}),(0,H.jsxs)(`div`,{className:`mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px] px-6 pb-16 pt-10 lg:px-12 xl:px-16`,children:[(0,H.jsxs)(`p`,{className:`mx-auto mb-5 flex max-w-5xl flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground`,role:`status`,children:[(0,H.jsx)(`span`,{children:`Current mode: API server`}),(0,H.jsx)(Tt,{to:Q.settingsStorage,className:Dq,children:`Configure data storage`})]}),(0,H.jsxs)(`div`,{className:`mx-auto grid max-w-5xl grid-cols-1 gap-5 md:grid-cols-3`,children:[(0,H.jsxs)(jq,{icon:u,title:`Browser only`,badge:void 0,text:`Everything lives in this browser's IndexedDB — the default mode. Works offline, no account, no server copy.`,children:[(0,H.jsx)(Oq,{onClick:()=>void a(),children:`Create your journal`}),(0,H.jsx)(Oq,{to:Q.playgroundRoot,children:`Start Writing in a Playground`}),(0,H.jsx)(Oq,{to:`/feeds`,children:`Explore the feeds`}),(0,H.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,H.jsx)(kq,{children:`Offline and fast. Notes and results stay in this browser.`}),(0,H.jsx)(kq,{children:`Tied to this browser — export or back it up before switching browsers or clearing site data.`})]}),(0,H.jsx)(`button`,{type:`button`,onClick:i,disabled:e,className:`mt-1 text-left text-xs text-muted-foreground disabled:opacity-50 ${Dq}`,children:e?`Clearing…`:`Clear my data`})]}),(0,H.jsxs)(jq,{icon:$e,title:`Browser + your Turso`,badge:void 0,text:`Same local execution — plus a background backup of your data to a free Turso database you own, so multiple browsers stay in sync.`,children:[(0,H.jsx)(Oq,{to:Q.settingsStorage,children:`Configure backup & sync`}),(0,H.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,H.jsx)(kq,{children:`Queries still run locally in the browser — sync copies committed changes in the background.`}),(0,H.jsx)(kq,{children:`Bring your own free Turso database — URL and auth token, kept in this browser only.`}),(0,H.jsx)(kq,{children:`Sync needs network; without it you keep working locally and changes upload later.`})]})]}),(0,H.jsxs)(jq,{icon:jt,title:`API server`,badge:(0,H.jsx)(Aq,{}),text:`Build the app for API storage and run the Wod Wiki server yourself — local or cloud data access through a server you administer.`,children:[(0,H.jsx)(Oq,{href:Tq,children:`View source`}),(0,H.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,H.jsx)(kq,{children:`Centralized data for a team or gym — one SQLite, Turso, or Postgres backend.`}),(0,H.jsx)(kq,{children:`You run the server — network required, and server admin is on you.`})]})]})]})]})]}),(0,H.jsxs)(`section`,{id:`tour-section-hosted`,"data-testid":`tour-section-hosted`,"aria-label":`Wod-Wiki hosted`,children:[(0,H.jsx)(wq,{index:`08`,before:`Wod-Wiki `,accentText:`Hosted`,after:``,accent:_q.library,blurb:`Rather hand the caretaking to us? Wod-Wiki hosted is still taking shape — fill out the survey and help shape the plans.`}),(0,H.jsx)(`div`,{className:`mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px] px-6 pb-16 pt-10 lg:px-12 xl:px-16`,children:(0,H.jsxs)(`div`,{className:`mx-auto grid max-w-5xl grid-cols-1 gap-5 md:grid-cols-2`,children:[(0,H.jsxs)(jq,{icon:Er,title:`Individuals`,text:`For people who don't want dev-level configuration — we host the database for you and keep every device in sync.`,children:[(0,H.jsxs)(`ul`,{className:`space-y-1.5`,children:[(0,H.jsx)(kq,{children:`Managed hosting — we run the database; you just sign in.`}),(0,H.jsx)(kq,{children:`Profile page with a public feed.`}),(0,H.jsx)(kq,{children:`Sync across your apps and devices.`})]}),(0,H.jsxs)(`div`,{className:`mt-auto pt-3`,children:[(0,H.jsx)(Oq,{href:Eq,children:`Fill out interest survey`}),(0,H.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:`Takes two minutes — tell us what you'd like in a hosted personal account.`})]})]}),(0,H.jsxs)(jq,{icon:Me,title:`Coaching & gyms`,text:`For gyms and coaches — member accounts, coach views, and your brand on the surface.`,children:[(0,H.jsxs)(`ul`,{className:`space-y-1.5`,children:[(0,H.jsx)(kq,{children:`Member accounts with coach views of athlete data.`}),(0,H.jsx)(kq,{children:`Coaches portal — programming dashboards and leaderboards.`}),(0,H.jsx)(kq,{children:`Athlete portal — private journals that roll up to their coach.`}),(0,H.jsx)(kq,{children:`Gym website hosting, competition timers, and whiteboard displays.`}),(0,H.jsx)(kq,{children:`Website branding — your gym's brand on pages and feeds.`})]}),(0,H.jsxs)(`div`,{className:`mt-auto pt-3`,children:[(0,H.jsx)(Oq,{href:Eq,children:`Fill out interest survey`}),(0,H.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:`Takes two minutes — help shape our coaching and gym features.`})]})]})]})})]})]})}var Nq=({doc:e,onDocChange:t,onBlocksChange:n,onRun:r,onShare:i,theme:a,withRingTargets:o=!1})=>{let s=pq(`editor.wodBlock`),c=pq(`editor.runButton`),l=(0,V.useRef)(null),u=(0,V.useRef)(null),[d,f]=(0,V.useState)(null),[p,m]=(0,V.useState)(null),h=(0,V.useCallback)(()=>{if(!o)return null;let e=l.current;if(!e)return null;let t=null,n=e.querySelector(`.cm-wod-fence-open`),r=e.querySelector(`.cm-wod-fence-close`);if(n&&r){let i=e.getBoundingClientRect(),a=n.getBoundingClientRect(),o=r.getBoundingClientRect();if(a.top>=i.top-2&&o.bottom<=i.bottom+2){let n=e.offsetWidth?i.width/e.offsetWidth:1;t={top:(a.top-i.top)/n,left:(Math.min(a.left,o.left)-i.left)/n,width:(Math.max(a.right,o.right)-Math.min(a.left,o.left))/n,height:(o.bottom-a.top)/n}}}f(t);let i=null,a=e.querySelector(`[data-testid="${OL.EDITOR_START_WORKOUT}"]`);if(a){let t=e.getBoundingClientRect(),n=a.getBoundingClientRect();if(n.width>0&&n.height>0&&n.top>=t.top-2&&n.bottom<=t.bottom+2&&n.left>=t.left-2&&n.right<=t.right+2){let r=e.offsetWidth?t.width/e.offsetWidth:1;i={top:(n.top-t.top)/r,left:(n.left-t.left)/r,width:n.width/r,height:n.height/r}}}return m(i),{block:t,run:i}},[o]);(0,V.useLayoutEffect)(()=>{if(!o)return;let e=l.current;if(!e)return;h();let t=window.setTimeout(h,120),n=window.setTimeout(h,480),r=null;if(typeof ResizeObserver<`u`){r=new ResizeObserver(h),r.observe(e);let t=u.current?.contentDOM;t&&r.observe(t)}let i=new MutationObserver(e=>{e.some(e=>e.target instanceof Element&&e.target.closest(`.cm-note-editor`))&&h()});i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`style`]});let a=0,s=0,c=()=>{h(),performance.now()-s<3e3&&(a=requestAnimationFrame(c))},d=()=>{s=performance.now(),cancelAnimationFrame(a),a=requestAnimationFrame(c)};d(),document.fonts?.ready?.then(d).catch(()=>{});let f=u.current?.scrollDOM;return f?.addEventListener(`scroll`,h,{passive:!0}),window.addEventListener(`resize`,h),()=>{window.clearTimeout(t),window.clearTimeout(n),r?.disconnect(),i.disconnect(),f?.removeEventListener(`scroll`,h),window.removeEventListener(`resize`,h),cancelAnimationFrame(a)}},[e,o,h]);let g=(0,V.useCallback)(()=>{r()},[r]),_=(0,V.useCallback)(()=>{if(i){i();return}zK(e).then(e=>{let t=`shared by ${xv()}`,n=`${window.location.origin}/?z=${e}&by=${encodeURIComponent(t)}`;navigator.clipboard.writeText(n).then(()=>{ND({title:`Link copied`,description:`Share link copied to clipboard.`})}).catch(()=>{ND({title:`Could not copy`,description:n,variant:`destructive`})})})},[e,i]),v=(0,V.useMemo)(()=>[{id:`run`,label:`Run`,icon:(0,H.jsx)(sr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:g},{id:`playground`,label:`Playground`,icon:(0,H.jsx)(Ln,{className:`h-3 w-3`}),onClick:e=>{HK(e)},splitIcon:(0,H.jsx)(st,{className:`h-3 w-3`}),splitSuccessIcon:(0,H.jsx)(Vt,{className:`h-3 w-3 text-emerald-500`}),onSplitClick:e=>{WK(e)}}],[g]);return(0,H.jsx)(`div`,{className:`relative flex h-full flex-col bg-background text-left`,children:(0,H.jsxs)(`div`,{ref:l,className:`relative flex-1 min-h-0`,children:[(0,H.jsx)(HU,{noteId:`canvas:home`,value:e,onChange:t,onBlocksChange:n,onStartWorkout:g,commands:v,onViewCreated:e=>{u.current=e,o&&h()},theme:a,readonly:!1,showLineNumbers:!1,showFrontmatter:!1,enableOverlay:!1,enableInlineRuntime:!1,className:`h-full`}),o&&d&&(0,H.jsx)(`div`,{ref:s,"data-testid":`tour-wod-block-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:d.top,left:d.left,width:d.width,height:d.height}}),o&&p&&(0,H.jsx)(`div`,{ref:c,"data-testid":`tour-run-button-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:p.top,left:p.left,width:p.width,height:p.height}}),(0,H.jsx)(`div`,{className:`absolute bottom-2.5 left-3 z-20 lg:left-auto lg:right-3`,children:(0,H.jsx)(`button`,{type:`button`,title:`Copy share link`,onClick:_,className:`inline-flex h-7 w-7 items-center justify-center rounded-full border border-border/60 bg-background/80 text-muted-foreground shadow-sm backdrop-blur transition-colors hover:border-primary/40 hover:text-foreground`,children:(0,H.jsx)(Et,{size:13})})})]})})},Pq=e=>{let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`};function Fq({result:e,onDismiss:t,dismissLabel:n}){let[r,i]=(0,V.useState)(hb),a=e.logs??[];return(0,H.jsxs)(`div`,{className:`flex h-full w-full flex-col overflow-hidden p-4`,"data-testid":`tour-session-result`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-3 border-b border-border/60 pb-3`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-mono text-[10px] uppercase tracking-[0.18em] text-muted-foreground`,children:`Session recorded`}),(0,H.jsx)(`div`,{className:`text-2xl font-extrabold tabular-nums tracking-tight`,children:Pq(e.duration)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-muted-foreground`,children:[(0,H.jsx)(`span`,{className:e.completed?`rounded-full border border-emerald-500/30 bg-emerald-500/10 px-2 py-0.5 font-semibold text-emerald-600 dark:text-emerald-400`:`rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 font-semibold text-amber-600 dark:text-amber-400`,children:e.completed?`Completed`:`Stopped early`}),e.roundsCompleted!=null&&(0,H.jsxs)(`span`,{className:`tabular-nums`,children:[`Rounds `,e.roundsCompleted,e.totalRounds==null?``:`/${e.totalRounds}`]}),e.repsCompleted!=null&&(0,H.jsxs)(`span`,{className:`tabular-nums`,children:[`Reps `,e.repsCompleted]})]})]}),(0,H.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto py-3`,children:[(0,H.jsx)(yb,{presets:gb,filter:r,onChange:i}),(0,H.jsx)(xb,{outputs:a,filter:r,timeOrigin:e.startTime,onClearFilter:()=>i(``)})]}),t&&(0,H.jsx)(`div`,{className:`flex justify-end border-t border-border/60 pt-3`,children:(0,H.jsx)(`button`,{type:`button`,onClick:t,className:`rounded-md border border-border px-3 py-1.5 text-[12px] font-medium transition-colors hover:bg-accent`,"data-testid":`tour-session-result-dismiss`,children:n??`Back`})})]})}function Iq({options:e,displayValue:t,filter:n,anchor:r=`bottom`,className:i,placeholder:a,autoFocus:o,virtual:s=!0,"aria-label":c,children:l,icon:u,...d}){let[f,p]=(0,V.useState)(``),m=f===``?e:e.filter(e=>n?n(e,f):t(e)?.toLowerCase().includes(f.toLowerCase()));return(0,H.jsxs)(De,{as:`div`,...d,multiple:!1,...s?{virtual:{options:m}}:{},onClose:()=>p(``),children:[(0,H.jsxs)(`span`,{"data-slot":`control`,className:U([i,`relative block w-full`,`before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-background before:shadow-sm`,`dark:before:hidden`,`after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset has-data-[focus]:after:ring-2 has-data-[focus]:after:ring-ring`,`has-data-[disabled]:opacity-50 has-data-[disabled]:before:bg-muted/50 has-data-[disabled]:before:shadow-none`,`has-data-invalid:before:shadow-destructive/10`]),children:[u&&(0,H.jsx)(u,{className:`pointer-events-none absolute top-3 left-3 size-5 text-muted-foreground sm:top-2.5 sm:left-2.5 sm:size-4`}),(0,H.jsx)(Zn,{autoFocus:o,"data-slot":`control`,"aria-label":c,displayValue:e=>t(e)??``,onChange:e=>p(e.target.value),placeholder:a,className:U([i,`relative block w-full appearance-none rounded-lg py-[calc(theme(spacing.2.5)-1px)] sm:py-[calc(theme(spacing.1.5)-1px)]`,u?`pr-[calc(theme(spacing.10)-1px)] pl-10 sm:pr-[calc(theme(spacing.9)-1px)] sm:pl-8`:`pr-[calc(theme(spacing.10)-1px)] pl-[calc(theme(spacing.3.5)-1px)] sm:pr-[calc(theme(spacing.9)-1px)] sm:pl-[calc(theme(spacing.3)-1px)]`,`text-base/6 text-foreground placeholder:text-muted-foreground sm:text-sm/6`,`border border-border/60 data-[hover]:border-border dark:border-white/10 dark:data-[hover]:border-white/20`,`bg-transparent dark:bg-white/5`,`focus:outline-hidden`,`data-invalid:border-destructive data-invalid:data-[hover]:border-destructive dark:data-invalid:border-destructive dark:data-invalid:data-[hover]:border-destructive`,`data-[disabled]:border-border/40 dark:data-[disabled]:border-white/15 dark:data-[disabled]:bg-white/2.5 dark:data-[hover]:data-[disabled]:border-white/15`,`dark:scheme-dark`])}),(0,H.jsx)(et,{className:`group absolute inset-y-0 right-0 flex items-center px-2`,children:(0,H.jsxs)(`svg`,{className:`size-5 stroke-muted-foreground group-data-[disabled]:stroke-muted-foreground/70 group-data-[hover]:stroke-foreground sm:size-4 forced-colors:stroke-[CanvasText]`,viewBox:`0 0 16 16`,"aria-hidden":`true`,fill:`none`,children:[(0,H.jsx)(`path`,{d:`M5.75 10.75L8 13L10.25 10.75`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,H.jsx)(`path`,{d:`M10.25 5.25L8 3L5.75 5.25`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`})]})})]}),(0,H.jsx)(Pt,{transition:!0,anchor:r,className:U(r&&`[--anchor-gap:theme(spacing.2)] [--anchor-padding:theme(spacing.4)] sm:data-[anchor~=start]:[--anchor-offset:-4px]`,`isolate min-w-[calc(var(--input-width)+8px)] scroll-py-1 rounded-xl p-1 select-none empty:invisible`,`outline outline-transparent focus:outline-hidden`,`overflow-y-scroll overscroll-contain`,`bg-popover/75 backdrop-blur-xl dark:bg-popover/75`,`shadow-lg ring-1 ring-border/60 dark:ring-white/10 dark:ring-inset`,`transition-opacity duration-100 ease-in data-closed:data-leave:opacity-0 data-transition:pointer-events-none`),children:s?({option:e})=>l(e):m.map((e,t)=>(0,H.jsx)(V.Fragment,{children:l(e)},t))})]})}function Lq({children:e,className:t,...n}){let r=U(`flex min-w-0 items-center`,`[&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:shrink-0 sm:[&>[data-slot=icon]]:size-4`,`[&>[data-slot=icon]]:text-muted-foreground group-data-[focus]/option:[&>[data-slot=icon]]:text-primary-foreground`,`forced-colors:[&>[data-slot=icon]]:text-[CanvasText] forced-colors:group-data-[focus]/option:[&>[data-slot=icon]]:text-[Canvas]`,`[&>[data-slot=avatar]]:-mx-0.5 [&>[data-slot=avatar]]:size-6 sm:[&>[data-slot=avatar]]:size-5`);return(0,H.jsxs)(ct,{as:`div`,...n,className:U(`group/option grid w-full cursor-default grid-cols-[1fr_--spacing(5)] items-baseline gap-x-2 rounded-lg py-2.5 pr-2 pl-3.5 sm:grid-cols-[1fr_--spacing(4)] sm:py-1.5 sm:pr-2 sm:pl-3`,`text-base/6 text-foreground sm:text-sm/6 forced-colors:text-[CanvasText]`,`outline-hidden data-[focus]:bg-primary data-[focus]:text-primary-foreground`,`data-[active]:bg-primary data-[active]:text-primary-foreground`,`data-[hover]:bg-primary data-[hover]:text-primary-foreground`,`data-[focus]:[&_[data-slot=description]]:text-primary-foreground/70 dark:data-[focus]:[&_[data-slot=description]]:text-primary-foreground/70`,`forced-color-adjust-none forced-colors:data-[focus]:bg-[Highlight] forced-colors:data-[focus]:text-[HighlightText]`,`data-[disabled]:opacity-50`),children:[(0,H.jsx)(`span`,{className:U(t,r),children:e}),(0,H.jsx)(`svg`,{className:`relative col-start-2 hidden size-5 self-center stroke-current group-data-[selected]/option:inline sm:size-4`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,H.jsx)(`path`,{d:`M4 8.5l3 3L12 4`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`})})]})}function Rq({className:e,...t}){return(0,H.jsx)(i,{as:`span`,...t,className:U(e,`ml-2.5 truncate first:ml-0 sm:ml-2 sm:first:ml-0`)})}function zq({className:e,children:t,...n}){return(0,H.jsx)(`span`,{...n,"data-slot":`description`,className:U(e,`flex flex-1 overflow-hidden text-muted-foreground before:w-2 before:min-w-0 before:shrink transition-colors duration-200`),children:(0,H.jsx)(`span`,{className:`flex-1 truncate`,children:t})})}var Bq=[{label:`21-15-9 Rep Scaling`,detail:`Air Squats · Pushups`,wod:`\`\`\`time
150
+ 21-15-9
151
+ Air Squats
152
+ Pushups
153
+ // Rep scheme scaling
154
+ // Step through reps
155
+ \`\`\``},{label:`Required Rest`,detail:`3 Rounds · 10 Burpees · *:30 Rest`,wod:`\`\`\`time
156
+ (3 Rounds)
157
+ 10 Burpees
158
+ *:30 Rest
159
+ // Forced rest timer
160
+ // Locks time split
161
+ \`\`\``},{label:`Timed Distance`,detail:`5:00 Run 400m · *:45 Rest`,wod:`\`\`\`time
162
+ 5:00 Run 400m
163
+ *:45 Rest
164
+ // Fixed time window
165
+ // Distance & rest timer
166
+ // Track meter pace
167
+ \`\`\``},{label:`Load & Resistance`,detail:`5 Sets · 5 Back Squat 185lb · *1:00 Rest`,wod:`\`\`\`time
168
+ (5 Sets)
169
+ 5 Back Squat 185lb
170
+ *1:00 Rest
171
+ // Barbell resistance
172
+ // Rest between sets
173
+ \`\`\``}];function Vq(e){return`# 👋 Edit Me\n\nChange the reps, distance, or load below — this is live.\n\n${e}\n\n> Press **Run** ↑ to start the Clock.\n`}var Hq=[{id:`editor-blank`,num:`01a`,title:(0,H.jsxs)(H.Fragment,{children:[`Start with a Blank Page.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Type-ahead & freeform Markdown.`})]}),body:`Write freeform Markdown and fenced workout blocks. Typeahead suggests fence names, frontmatter properties, and tags. Workout lines are parsed live; movement names are not autocompleted.`,foot:`Markdown · property and tag suggestions · live workout parsing`,accent:_q.editor,choices:Bq,choicePrompt:`Take one for a spin ↓`,actions:[{label:`Start Lesson 1`,href:`/guide/start#first-workout`,event:Az.lessonStarted}]},{id:`editor-metrics`,num:`01a`,title:(0,H.jsxs)(H.Fragment,{children:[`Every Line Collects Metrics.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:"Fenced ```time syntax."})]}),body:"Open a fenced block with triple backticks — ```time. Each line defines the metrics collected: rep scaling (21-15-9), distance (400m Run), load resistance (24kg, 225lb), and rest (*:30 Rest).",foot:"```time syntax · 21-15-9 rep scaling · 400m distance · 24kg/225lb load",accent:_q.editor,actions:[{label:`Start Lesson 1`,href:`/guide/metrics#capture`,event:Az.lessonStarted}]},{id:`editor-run`,num:`01b`,title:(0,H.jsxs)(H.Fragment,{children:[`Press Run to Execute.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Launch the step-through clock.`})]}),body:`Click Run in the editor top bar to execute the block — the step-through Clock launches and every line starts generating collected metrics.`,foot:`Run button · step-through Clock · untimed rounds`,accent:_q.editor,commands:[{key:`try`,label:`Try it now ↓`}],actions:[{label:`Read the behaviors explainer`,href:`/guide/clock#run-next`,event:Az.behaviorsOpened}]},{id:`timer-wallclock`,num:`02a`,title:(0,H.jsxs)(H.Fragment,{children:[`What Happens When It Runs.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`The script becomes the clock.`})]}),body:`The Clock runs whatever you wrote — stepping through each line of the edited workout at your own pace, with no forced time limits.`,foot:`Clock · step-through execution · live metric capture`,accent:_q.timer,commands:[{key:`try`,label:`Run this example`}],actions:[{label:`Read the behaviors explainer`,href:`/guide/clock#run-next`,event:Az.behaviorsOpened}]},{id:`timer-next`,num:`02b`,title:(0,H.jsxs)(H.Fragment,{children:[`Next Advances the Workout.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Every click locks a time.`})]}),body:`Click Next to advance to the next movement or round at your own pace — each click locks the elapsed time into the collected metrics as a split. Click all the way through and the run completes, carrying your data onward.`,foot:`Next button · round advance · locked time splits`,accent:_q.timer,actions:[{label:`Read the behaviors explainer`,href:`/guide/clock#run-next`,event:Az.behaviorsOpened}]},{id:`timer-cast`,num:`02c`,title:(0,H.jsxs)(H.Fragment,{children:[`Cast to the Big Screen.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`The room paces together.`})]}),body:`Tap the cast button in the timer header and the running clock mirrors to any Chromecast — the receiver shows the movement stack and the live clock, so the whole room follows the same rep without crowding your screen.`,foot:`Chromecast button · receiver UI · shared pacing`,accent:_q.timer,actions:[{label:`Read the behaviors explainer`,href:`/guide/clock#casting`,event:Az.behaviorsOpened}]},{id:`metrics-e`,num:`03a`,title:(0,H.jsxs)(H.Fragment,{children:[`Every line tracks an effort.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`The registry speaks movement.`})]}),body:`Back Squat, Pullups, a 500m Row — each tracked thing is an effort, drawn from the movement registry with its tags and discipline. Efforts are the nouns your training is written in.`,foot:`effort · movement registry · discipline tags`,accent:_q.timer,commands:[{key:`q-reps`,label:`Reps by effort`},{key:`q-tonnage`,label:`Tonnage by week`}],actions:[{label:`Browse the registry`,href:`/efforts`,event:Az.effortsOpened}]},{id:`metrics-d`,num:`03b`,title:(0,H.jsxs)(H.Fragment,{children:[`Every effort collects measures.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Reps, load, distance, rest.`})]}),body:`The same lines carry micro data points: 5 reps at 225lb, a 400m distance, timed rest. Each measure is typed by the runtime — no forms, no manual entry.`,foot:`reps · load · distance · time · custom metrics`,accent:_q.editor},{id:`metrics-c`,num:`03c`,title:(0,H.jsxs)(H.Fragment,{children:[`Efforts × measures compound into facts.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Analytics becomes arithmetic.`})]}),body:`Effort × load rolls up to tonnage; effort × distance to pace; every Next click locks a split. Because everything is structured from the start, WQL queries and dashboards are just rollups of what you already logged.`,foot:`tonnage · pace · splits · queryable facts`,accent:_q.analytics},{id:`wql-idea`,num:`04a`,title:(0,H.jsxs)(H.Fragment,{children:[`Query what you just did.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Every result is one query away.`})]}),body:`WQL turns your journal into queryable facts. Pick an aggregator and a metric, filter by tag, group by a dimension, roll up over time. The labelled example dataset powers these dashboards without adding workouts to your journal.`,foot:`aggregator · metric · filter · dimension · rollup`,accent:_q.analytics,actions:[{label:`Open the WQL guide`,href:`/guide/wql`,event:Az.behaviorsOpened}]},{id:`wql-table`,num:`04b`,title:(0,H.jsxs)(H.Fragment,{children:[`Read it as a list.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`One query, one ranked table.`})]}),body:`Sum total reps grouped by effort to get a ranked table. Start with Example data, or select This run to query only the workout you recorded. Switch the query and the table updates.`,foot:`note-scoped WQL · parsed-query chips`,accent:_q.analytics,commands:[{key:`q-reps`,label:`Reps by effort`},{key:`q-tonnage`,label:`Tonnage by week`},{key:`q-tis`,label:`Avg intensity`}]},{id:`wql-graphs`,num:`04c`,title:(0,H.jsxs)(H.Fragment,{children:[`See it as trends.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`A graph is a rollup away.`})]}),body:`Roll the same facts up by week and they become a timeseries — is tonnage rising, is training polarized? A graph is not a feature you enable; it is a rollup away.`,foot:`by {week} · timeseries · stacked intensity`,accent:_q.analytics,actions:[{label:`Open the WQL guide`,href:`/guide/wql`,event:Az.behaviorsOpened}]},{id:`wql-dashboard`,num:`04d`,title:(0,H.jsxs)(H.Fragment,{children:[`Compose a dashboard.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`N queries on one screen.`})]}),body:`A dashboard is N queries on one screen. These are the app’s seeded boards, using the same DashboardView, range selector, and widget Inspect as /dashboard. Example data stays separate from your journal; each metric keeps its own unit.`,foot:`seeded boards · range · inspect`,accent:_q.analytics,commands:[{key:`board-training-block-review`,label:`Training Block Review`},{key:`board-road-to-560-total`,label:`Road to 560 Total`},{key:`board-polarized-base-marathon`,label:`Polarized Base Marathon`}]},{id:`wql-live`,num:`04e`,title:(0,H.jsxs)(H.Fragment,{children:[`It’s your data.`,` `,(0,H.jsx)(`em`,{className:`italic text-foreground/80`,children:`Query anything, your way.`})]}),body:`Every widget here runs the same WQL against the example dataset — log work of your own and the identical queries answer with your data. Open the Dashboards tab to query anything, your way.`,foot:`WQL queries · example dataset · your data`,accent:_q.analytics,actions:[{label:`Browse the seeded boards`,href:`/guide/dashboards#seeded-boards`,event:Az.behaviorsOpened}]}];function Uq({activeIndex:e,onChoice:t,onCommand:n,captions:r=Hq}){return(0,H.jsx)(`div`,{className:`relative h-full w-full`,"data-testid":`tour-captions`,children:r.map((r,i)=>(0,H.jsx)(`div`,{"data-scroll-pane":!0,className:`absolute inset-0 overflow-y-auto transition-opacity duration-300`,style:{opacity:+(i===e),pointerEvents:i===e?`auto`:`none`},"aria-hidden":i!==e,inert:i!==e,children:(0,H.jsx)(Wq,{cap:r,onChoice:t,onCommand:n})},r.id))})}function Wq({cap:e,onChoice:t,onCommand:n}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`h3`,{className:`mb-3.5 xl:mb-5 text-[clamp(22px,2vw,32px)] font-extrabold leading-[1.12] tracking-[-0.03em]`,children:[(0,H.jsx)(`span`,{className:`mr-2 align-[0.2em] font-mono text-[0.5em] font-semibold tracking-[0.08em] text-muted-foreground/50`,children:e.num}),e.title]}),(0,H.jsx)(`p`,{className:`text-[14.5px] sm:text-base xl:text-[17px] leading-[1.7] xl:leading-[1.75] text-muted-foreground`,children:e.body}),e.bullets&&e.bullets.length>0&&(0,H.jsx)(`ul`,{className:`mt-3 space-y-1.5 text-sm xl:text-[15px] leading-relaxed text-foreground/85`,children:e.bullets.map((e,t)=>(0,H.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,H.jsx)(`span`,{className:`text-primary font-bold`,children:`›`}),(0,H.jsx)(`span`,{children:e})]},t))}),e.foot&&(0,H.jsx)(`div`,{className:`mt-4 xl:mt-6 border-t border-border pt-3 xl:pt-4 font-mono text-[10px] xl:text-[11px] tracking-[0.06em] text-muted-foreground/60`,children:e.foot}),e.extra&&(0,H.jsx)(`div`,{className:`mt-3`,children:e.extra}),e.choices&&e.choices.length>0&&(0,H.jsxs)(`div`,{className:`mt-4 xl:mt-6`,"data-testid":`tour-workout-choices`,children:[e.choicePrompt&&(0,H.jsx)(`div`,{className:`mb-2 font-mono text-[11px] uppercase tracking-[0.18em]`,style:{color:e.accent},"data-testid":`tour-workout-choices-prompt`,children:e.choicePrompt}),(0,H.jsx)(Iq,{options:e.choices,value:null,by:(e,t)=>e?.label===t?.label,immediate:!0,virtual:!1,onChange:e=>{e&&t?.(e.wod)},displayValue:e=>e?.label,filter:(e,t)=>{let n=t.toLowerCase();return(e?.label.toLowerCase().includes(n)??!1)||(e?.detail.toLowerCase().includes(n)??!1)},placeholder:`Load a workout into the demo…`,"aria-label":`Load a workout into the demo`,children:e=>(0,H.jsxs)(Lq,{value:e,children:[(0,H.jsx)(Rq,{children:e.label}),(0,H.jsx)(zq,{children:e.detail})]})})]}),e.commands&&e.commands.length>0&&n&&(0,H.jsx)(`div`,{className:`mt-4 xl:mt-6 flex flex-wrap items-center gap-2`,"data-testid":`tour-caption-commands-${e.id}`,children:e.commands.map(t=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(e.id,t.key),className:`inline-flex items-center rounded-full border border-border px-3.5 py-1.5 text-[13px] font-medium text-foreground transition-colors hover:border-primary/40 hover:bg-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`,"data-testid":`tour-caption-command-${e.id}-${t.key}`,children:t.label},t.key))}),e.actions&&e.actions.length>0&&(0,H.jsx)(`div`,{className:`mt-4 xl:mt-6 flex flex-wrap items-center gap-3`,children:e.actions.map((e,t)=>{let n=t===0;return(0,H.jsx)(Tt,{to:e.href,onClick:()=>kz.record(e.event,e.data),"data-testid":e.testId,className:n?`inline-flex items-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90`:`text-sm text-primary underline-offset-2 hover:underline`,children:e.label},e.label)})})]})}var Gq=()=>(0,H.jsx)(bR,{}),Kq=({eventProvider:e,getFocusProps:t,TimerDisplayComponent:n=UL})=>{let r=Qd(),i=t=>{e.dispatch({name:t,timestamp:new Date})};return(0,H.jsx)(`div`,{className:`flex-1 flex flex-col justify-center`,children:(0,H.jsx)(n,{elapsedMs:0,hasActiveBlock:r.length>0,onStart:()=>i(`start`),onPause:()=>i(`pause`),onStop:()=>i(`stop`),onNext:()=>i(`next`),isRunning:!1,enableDisplayStack:!0,getFocusProps:t})})},qq=960,Jq=540,Yq=340/qq,Xq=e=>(0,H.jsx)(UL,{...e,disableNext:!0}),Zq={dispatch:()=>{},onEvent:()=>()=>{},dispose:()=>{}},Qq=()=>(0,H.jsx)(`div`,{className:`flex h-full w-full flex-col items-center justify-center bg-black font-mono uppercase tracking-[0.5em] text-white/60`,children:(0,H.jsx)(`div`,{className:`animate-pulse text-[28px]`,children:`Wod.Wiki // waiting`})}),$q=(0,V.forwardRef)(function({runtime:e},t){return(0,H.jsxs)(`div`,{ref:t,"data-testid":`tour-tv-card`,className:`pointer-events-none absolute left-8 bottom-12 z-20 w-[360px] opacity-0`,children:[(0,H.jsx)(`div`,{className:`mb-2 flex justify-end`,children:(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-foreground px-2.5 py-1 font-mono text-[9px] font-bold uppercase tracking-[0.14em] text-background shadow-lg`,children:[(0,H.jsx)(`span`,{className:`size-[7px] animate-pulse rounded-full bg-[hsl(var(--metric-effort))]`}),`Casting to Living Room TV`]})}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-black/80 bg-[#141311] p-[10px] pb-[22px] shadow-[0_30px_60px_-18px_rgba(18,17,14,0.5)]`,children:[(0,H.jsxs)(`div`,{className:`relative aspect-video w-full overflow-hidden rounded-[4px] bg-black ring-1 ring-white/10`,children:[(0,H.jsx)(`div`,{className:`absolute left-0 top-0 origin-top-left`,style:{width:qq,height:Jq,transform:`scale(${Yq})`},children:e?(0,H.jsx)(qd,{runtime:e,children:(0,H.jsx)(DL,{children:(0,H.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden bg-background text-foreground`,children:[(0,H.jsx)(`div`,{className:`min-w-0 flex-1 border-r border-border bg-secondary/10`,children:(0,H.jsx)(Gq,{})}),(0,H.jsx)(`div`,{className:`flex w-1/2 flex-col bg-background`,children:(0,H.jsx)(Kq,{eventProvider:Zq,TimerDisplayComponent:Xq})})]})})}):(0,H.jsx)(Qq,{})}),(0,H.jsx)(`div`,{className:`pointer-events-none absolute inset-0 bg-gradient-to-br from-white/[0.06] via-transparent to-transparent`})]}),(0,H.jsxs)(`div`,{className:`mt-[7px] flex items-center justify-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`size-[5px] animate-pulse rounded-full bg-[hsl(var(--metric-effort))]`}),(0,H.jsx)(`span`,{className:`text-[7px] font-semibold uppercase tracking-[0.3em] text-white/40`,children:`wod.wiki`})]})]}),(0,H.jsx)(`div`,{className:`mx-auto h-2.5 w-[64px] rounded-b-md bg-[#2A2822]`}),(0,H.jsx)(`div`,{className:`mx-auto h-[5px] w-[150px] rounded-[3px] bg-[#22201C] shadow-[0_4px_10px_rgba(18,17,14,0.4)]`})]})}),eJ=({block:e,autoStart:t,onClose:n,onComplete:r,onRuntimeReady:i,onRunStarted:a,onStart:o,externalPause:s,externalStop:c,onReset:l})=>{let[u,d]=(0,V.useState)(!1),f=(0,V.useCallback)(()=>{u||e||(d(!0),o?.(),setTimeout(()=>{d(!1)},450))},[u,e,o]),p=()=>{d(!1),l?.()},m=pq(`timer.floor`),h=pq(`timer.nextButton`),g=pq(`timer.castButton`),_=(0,V.useRef)(null),v=(0,V.useCallback)(e=>{_.current=e,m(e)},[m]);return(0,V.useEffect)(()=>{let e=_.current;if(!e)return;let t=()=>{let t=e.querySelector(`[data-testid="${OL.TIMER_NEXT_BLOCK}"]`);return h(t),t!=null};if(t())return()=>h(null);let n=new MutationObserver(()=>{t()&&n.disconnect()});return n.observe(e,{childList:!0,subtree:!0}),()=>{n.disconnect(),h(null)}},[h,e]),(0,H.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,H.jsxs)(`header`,{className:`flex items-center justify-end gap-2 border-b border-border px-3 py-2`,children:[o&&(0,H.jsxs)(W,{variant:`outline`,size:`sm`,onClick:f,disabled:u||!!e,title:`Run timer`,"aria-label":`Run timer`,"data-testid":`tour-timer-header-run`,className:U(`h-8 gap-1.5 px-3 font-mono text-xs font-semibold text-foreground transition-all duration-150`,u&&`animate-[pulse_0.2s_ease-in-out_2] ring-2 ring-primary scale-105 bg-primary/20 text-primary`,!!e&&`opacity-50`),children:[(0,H.jsx)(sr,{className:`size-3.5 fill-current`,"aria-hidden":!0}),`Run`]}),l&&(0,H.jsx)(W,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground`,onClick:p,title:`Reset timer`,"aria-label":`Reset timer`,"data-testid":`tour-timer-reset`,children:(0,H.jsx)(Xt,{className:`h-4 w-4`})}),(0,H.jsx)(`div`,{ref:g,children:(0,H.jsx)(bU,{})}),(0,H.jsx)(W,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground`,onClick:n,title:`Back to the tour`,"aria-label":`Back to the tour`,children:(0,H.jsx)(Te,{className:`h-4 w-4`})})]}),(0,H.jsx)(`div`,{ref:v,className:`flex-1 min-h-0`,children:e?(0,H.jsx)(Cz,{block:e,onClose:()=>{},onComplete:r,autoStart:t,onRuntimeReady:i,onRunStarted:a,externalPause:s,externalStop:c}):(0,H.jsx)(`div`,{className:`flex h-full min-h-0 flex-col overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`m-auto flex flex-col items-center gap-5 px-5 py-6 text-center`,children:[(0,H.jsx)(`span`,{className:`font-mono text-[clamp(48px,8vw,96px)] font-bold tabular-nums tracking-tight`,children:`00:00`}),o&&(0,H.jsxs)(W,{onClick:f,disabled:u||!!e,"aria-label":`Run this example`,"data-testid":`tour-timer-center-run`,className:U(`gap-2 px-6 py-2.5 font-mono text-sm font-semibold transition-all duration-150`,u&&`animate-[pulse_0.2s_ease-in-out_2] ring-4 ring-primary scale-105 bg-primary text-primary-foreground`),children:[(0,H.jsx)(sr,{className:`size-4 fill-current`,"aria-hidden":!0}),`Run`]})]})})})]})},tJ=864e5;function nJ(e){let t=new Date(e);return Math.round(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/tJ)}function rJ(e,t){let n=[...e.keys()].filter(e=>e<=t);if(n.length===0)return[];let r=Math.min(...n),i=t=>e.get(t)??0,a=[];for(let e=r;e<=t;e++){let t=0,n=0;for(let r=0;r<28;r++){let a=i(e-r);n+=a,r<7&&(t+=a)}let r=t/7,o=n/28,s=0;for(let t=0;t<7;t++){let n=i(e-t)-r;s+=n*n}let c=Math.sqrt(s/7),l={day:e};o>0&&(l.acwr=r/o),c>0&&(l.monotony=r/c,l.strain=l.monotony*t),(l.acwr!==void 0||l.monotony!==void 0)&&a.push(l)}return a}var iJ=[{key:`repsByEffort`,query:`sum:totalReps{} by {effort} last 6w`},{key:`weeklyVolume`,query:`sum:totalVolume{} by {week} last 6w`},{key:`loadByIntensity`,query:`sum:sessionLoad{} by {intensity, week} last 6w`},{key:`volumeByEffort`,query:`sum:totalVolume{discipline:strength} by {effort} last 6w`},{key:`avgTis`,query:`avg:tis{} last 6w`},{key:`totalVolume`,query:`sum:totalVolume{} last 6w`}],aJ=864e5;function oJ(e){return Math.round(e*10)/10}function sJ(e,t,n=9){let r=new Date(e-t*aJ);return r.setHours(n,0,0,0),r.getTime()}function cJ(e,t,n,r,i,a={}){let o={canonicalKey:i};a.effortSlug&&(o.effortSlug=a.effortSlug),a.discipline&&(o.effortDiscipline=a.discipline),a.intensityTier&&(o.effortIntensityTier=a.intensityTier),e.push({id:e.length,outputType:`analytics`,timeSpan:{started:0},metrics:[{type:G.Label,value:t,origin:`analyzed`},{type:G.Metric,value:n,unit:r,origin:`analyzed`,metadata:o}],sourceBlockKey:``,stackLevel:0})}var lJ=new Set([`tis`,`calc.acwr`,`calc.adherence`,`calc.ef`,`calc.pct1rm`]);function uJ(e,t){return uh(e,{noteId:t.noteId,resultId:t.resultId,blockId:`example-block`,blockVersion:1,blockContentId:t.blockContentId,origin:`journal`,workoutTimestamp:t.timestamp}).map(e=>{let t=e.metrics[0];if(!t||!(`metadata`in t))return e;let n=t.metadata?.canonicalKey;return typeof n!=`string`||!lJ.has(n)||typeof t.value!=`number`?e:{...e,reducerStats:{observedCount:1,sum:t.value,min:t.value,max:t.value}}})}function dJ(e=Date.now()){let t=[],n=new Map,r=[],i=[],a=(e,t)=>{let r=nJ(e);n.set(r,(n.get(r)??0)+t)};for(let n=0;n<16;n++){let o=(15-n)*7+1,s=sJ(e,o);{let e=[{slug:`back-squat`,top:100+4*n,reps:5,tis:12.5},{slug:`bench-press`,top:80+2.5*n,reps:5,tis:10},{slug:`deadlift`,top:140+4*n,reps:3,tis:8.4}],r=[],i=0,o=0;for(let t of e){let e=t.reps*t.top;i+=e,o+=t.tis;let n={effortSlug:t.slug,discipline:`strength`,intensityTier:`high`};cJ(r,`Total reps`,t.reps,`reps`,`totalReps`,n),cJ(r,`Training intensity score`,t.tis,`pts`,`tis`,n),cJ(r,`Total volume`,e,`kg`,`totalVolume`,n),cJ(r,`Estimated 1RM`,oJ(t.top*(1+t.reps/30)),`kg`,`calc.e1rm`,n),cJ(r,`%1RM intensity`,oJ(100/(1+t.reps/30)),`%`,`calc.pct1rm`,n)}let c=oJ(i/100+13+o/10);cJ(r,`Session load`,c,`AU`,`sessionLoad`,{discipline:`strength`,intensityTier:`high`}),t.push(...uJ(r,{noteId:`example-strength-w${n}`,resultId:`example-strength-w${n}-r`,blockContentId:`example-content-strength`,timestamp:s})),a(s,c)}let c=sJ(e,o+2);{let e=[],r;if(n%3==0){r=`high`;for(let[t,n,i,a]of[[`thruster`,45,2.2,42.5],[`pull-up`,45,1.6,0]]){let o={effortSlug:t,discipline:a?`strength`:`gymnastics`,intensityTier:r};cJ(e,`Total reps`,n,`reps`,`totalReps`,o),cJ(e,`Training intensity score`,oJ(n*i),`pts`,`tis`,o),a&&cJ(e,`Total volume`,n*a,`kg`,`totalVolume`,o)}}else if(n%3==1){r=`moderate`;let t=16+n%5;for(let[n,i,a]of[[`pull-up`,5,1.5],[`push-up`,10,1.2],[`air-squat`,15,1.1]]){let o=t*i,s={effortSlug:n,discipline:`gymnastics`,intensityTier:r};cJ(e,`Total reps`,o,`reps`,`totalReps`,s),cJ(e,`Training intensity score`,oJ(o*a),`pts`,`tis`,s)}}else{r=`moderate`;for(let[t,n,i]of[[`double-under`,150,.5],[`sit-up`,150,1.3]]){let a={effortSlug:t,discipline:`gymnastics`,intensityTier:r};cJ(e,`Total reps`,n,`reps`,`totalReps`,a),cJ(e,`Training intensity score`,oJ(n*i),`pts`,`tis`,a)}}let i=oJ(30.6);cJ(e,`Session load`,i,`AU`,`sessionLoad`,{intensityTier:r}),t.push(...uJ(e,{noteId:`example-conditioning-w${n}`,resultId:`example-conditioning-w${n}-r`,blockContentId:`example-content-conditioning`,timestamp:c})),a(c,i)}let l=sJ(e,o+4,8);if(n%4==1)r.push(nJ(l));else{let e=6e3+100*n,r=oJ(e/2.8),o=[],s={effortSlug:`running`,discipline:`running`,intensityTier:`low`};cJ(o,`Total distance`,e,`m`,`totalDistance`,s),cJ(o,`Elapsed time`,r,`s`,`elapsed`,s),cJ(o,`Training intensity score`,r,`pts`,`tis`,s);let c=oJ(r/10);cJ(o,`Session load`,c,`AU`,`sessionLoad`,{intensityTier:`low`}),t.push(...uJ(o,{noteId:`example-run-w${n}`,resultId:`example-run-w${n}-r`,blockContentId:`example-content-run`,timestamp:l})),a(l,c),i.push({day:nJ(l),pace:e/r})}let u=sJ(e,o+6,10);{let e=4e3+50*n,r=oJ(e/2),i=[],o={effortSlug:`rowing`,discipline:`rowing`,intensityTier:`moderate`};cJ(i,`Total distance`,e,`m`,`totalDistance`,o),cJ(i,`Elapsed time`,r,`s`,`elapsed`,o),cJ(i,`Training intensity score`,r,`pts`,`tis`,o);let s=oJ(r/10);cJ(i,`Session load`,s,`AU`,`sessionLoad`,{intensityTier:`moderate`}),t.push(...uJ(i,{noteId:`example-row-w${n}`,resultId:`example-row-w${n}-r`,blockContentId:`example-content-row`,timestamp:u})),a(u,s)}}let o=Math.max(...n.keys()),s=(e,t=10)=>{let n=new Date(e*aJ);return n.setHours(t,0,0,0),n.getTime()},c=(e,n,r)=>{let i=[];for(let[e,t,n]of r)cJ(i,e,t,n,e);t.push(...uJ(i,{noteId:`example-calc`,resultId:e,blockContentId:`example-content-calc`,timestamp:n}))};for(let e of rJ(n,o))e.acwr!==void 0&&c(`example-calc-d${e.day}`,s(e.day),[[`calc.acwr`,oJ(e.acwr),`ratio`]]);let l=0,u=0,d=Math.min(...n.keys());for(let e=d;e<=o;e++){let t=n.get(e)??0;l+=(t-l)/42,u+=(t-u)/7,n.has(e)&&c(`example-calc-pmc-d${e}`,s(e),[[`calc.ctl`,oJ(l),`AU`],[`calc.atl`,oJ(u),`AU`],[`calc.tsb`,oJ(l-u),`AU`]])}let f=new Set([...n.keys()]);for(let e of r)f.add(e);for(let e of f){let t=+!!n.has(e);c(`example-calc-adh-d${e}`,s(e,7),[[`calc.adherence`,t,`ratio`]])}for(let e of i)c(`example-calc-ef-d${e.day}`,s(e.day,8),[[`calc.ef`,oJ(e.pace/141*1e5),`pts`]]);return t}function fJ(e=Date.now()){return new Vh(Ag(dJ(e)))}var pJ=null;function mJ(){return pJ??=fJ()}var hJ=[4,8,16],gJ={parse(e){let t=Number.parseInt(e,10);return hJ.includes(t)?t:null},serialize(e){return String(e)},withDefault(e){return{...this,defaultValue:e}}};function _J(){return Jt(`weeks`,gJ.withDefault(16))}function vJ(e){let t=e.trim().split(/\s+/).filter(e=>e!==``);if(t.length===0)return;let n={};for(let e of t){let t=e.indexOf(`=`);if(t===-1)continue;let r=e.slice(0,t),i=e.slice(t+1);i.startsWith(`"`)&&i.endsWith(`"`)&&i.length>=2&&(i=i.slice(1,-1)),n[r]=i}return Object.keys(n).length===0?void 0:n}var yJ=[{label:`Auto`,spanCols:void 0,spanFull:!1},{label:`1 col`,spanCols:1,spanFull:!1},{label:`2 cols`,spanCols:2,spanFull:!1},{label:`4 cols`,spanCols:4,spanFull:!1},{label:`Full row`,spanCols:void 0,spanFull:!0}],bJ=300;function xJ({open:e,...t}){return e?(0,H.jsx)(SJ,{...t}):null}function SJ({onClose:e,mode:t,initialWql:n,initial:r,subsetQuery:i,destination:a,executor:o,rangeStart:s,rangeEnd:c,preferredUnit:l,tokenValues:u,onApply:d,footerExtra:f,applyLabel:p=t===`edit`?`Apply changes`:`Add widget`}){let m=t===`inspect`,[h,g]=(0,V.useState)(n),[_,v]=(0,V.useState)(r?.title??``),[y,b]=(0,V.useState)(r?.question??``),[x,S]=(0,V.useState)(r?.type||`table`),[C,w]=(0,V.useState)({spanCols:r?.spanCols,spanFull:r?.spanFull}),[T,E]=(0,V.useState)(Object.entries(r?.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `)),[D,O]=(0,V.useState)(!1),[k,A]=(0,V.useState)(()=>!X(n).error),[j,M]=(0,V.useState)(null),N=(0,V.useMemo)(()=>X(h.trim()),[h]),P=x===``?`table`:x,F=!N.error&&h.trim()!==``&&(ip(N)?P===`table`||P===`list`:P!==`list`),[I,ee]=(0,V.useState)({status:`idle`}),L=(0,V.useRef)(0);(0,V.useEffect)(()=>{if(!F||!o){ee(e=>e.status===`ok`?e:{status:`idle`});return}let e=tg(h.trim(),u??{});if(e.missing.length>0){ee({status:`blocked`,message:Kh(e.missing)});return}let t=++L.current;ee({status:`loading`});let n=setTimeout(()=>{o.runQuery(e.query,{rangeStart:s,rangeEnd:c,preferredUnit:l}).then(e=>{L.current===t&&ee({status:`ok`,result:e})}).catch(e=>{L.current===t&&ee({status:`error`,message:e instanceof Error?e.message:String(e)})})},bJ);return()=>clearTimeout(n)},[h,F,o,s,c,l,u]);let te=!F&&I.status===`ok`,R=F&&k,ne=async()=>{if(!(!R||!d||D)&&!(X(h.trim()).error||h.trim()===``)){O(!0),M(null);try{await d({title:_.trim()||void 0,question:y.trim()||void 0,type:x===`table`?``:x,spanCols:C.spanFull?void 0:C.spanCols,spanFull:C.spanFull||void 0,wql:h.trim(),attributes:vJ(T)}),e()}catch(e){M(e instanceof Error?e.message:String(e))}finally{O(!1)}}};return(0,H.jsx)(Ib,{open:!0,onClose:e,presentation:`sheet`,title:t===`inspect`?`Inspect widget`:t===`edit`?`Edit widget`:`Add widget`,description:m?`Read-only — clone the dashboard to edit this widget.`:`Dataset, calculation, visualization, preview — then apply.`,footer:m&&!f?void 0:(0,H.jsxs)(H.Fragment,{children:[f,(0,H.jsx)(`div`,{className:`flex-1`}),!m&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:e,className:`min-h-12 px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground rounded-lg border border-border hover:bg-muted transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{type:`button`,"data-testid":`widget-composer-apply`,disabled:!R||D,title:N.error?N.error:void 0,onClick:()=>void ne(),className:`min-h-12 px-3 py-1.5 text-xs font-medium text-primary-foreground bg-primary hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg shadow transition-colors`,children:D?`Applying…`:p})]})]}),children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i!==void 0&&(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Dataset — the subset`}),i?(0,H.jsx)(`code`,{className:`block rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs text-foreground break-all`,"data-testid":`widget-composer-subset`,children:i}):(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`widget-composer-subset`,children:`No subset — the calculation runs over the whole store.`})]}),a,(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Calculation`}),m?(0,H.jsx)(`code`,{className:`block rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs text-foreground break-all`,"data-testid":`widget-composer-query`,children:h}):(0,H.jsx)($x,{query:h,onQueryChange:g,onValidationChange:e=>A(e.valid),showDiagnostics:!0,...o?{execute:e=>o.runQuery(e.raw,{rangeStart:s,rangeEnd:c,preferredUnit:l})}:{}}),!m&&h.trim()!==``&&(0,H.jsx)(`code`,{className:`mt-1.5 block rounded-md border border-primary/30 bg-primary/[0.04] px-3 py-2 font-mono text-xs text-foreground break-all`,"data-testid":`widget-composer-wql`,children:h.trim()}),!m&&(0,H.jsxs)(`label`,{className:`mt-3 flex flex-col gap-1`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Visualization`}),(0,H.jsx)(`select`,{value:x,onChange:e=>S(e.target.value),"data-testid":`widget-composer-type`,className:`min-h-12 rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-foreground focus:outline-none focus:border-primary sm:min-h-0`,children:Hh.map(e=>(0,H.jsx)(`option`,{value:e,children:e},e))})]})]}),!m&&(0,H.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,H.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Title`}),(0,H.jsx)(`input`,{type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Weekly volume`,"data-testid":`widget-composer-title`,className:`rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-foreground focus:outline-none focus:border-primary`})]}),(0,H.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,H.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Coaching question `,(0,H.jsx)(`span`,{className:`normal-case font-normal`,children:`(optional)`})]}),(0,H.jsx)(`input`,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`How much work per week?`,"data-testid":`widget-composer-question`,className:`rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-foreground focus:outline-none focus:border-primary`})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Size`}),(0,H.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1 self-start`,children:yJ.map(e=>{let t=e.spanFull?C.spanFull===!0:e.spanCols==null?!C.spanFull&&C.spanCols==null:!C.spanFull&&C.spanCols===e.spanCols;return(0,H.jsx)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>w(e.spanFull?{spanFull:!0}:{spanCols:e.spanCols}),className:`text-xs px-2.5 py-1 rounded-md transition-colors ${t?`bg-primary text-primary-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:e.label},e.label)})})]}),(0,H.jsxs)(`label`,{className:`flex flex-col gap-1 sm:col-span-2`,children:[(0,H.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Parameters `,(0,H.jsx)(`span`,{className:`normal-case font-normal`,children:`(goal targets, space-separated)`})]}),(0,H.jsx)(`input`,{type:`text`,value:T,onChange:e=>E(e.target.value),placeholder:`300 200`,"data-testid":`widget-composer-params`,className:`rounded-lg border border-border bg-card px-3 py-1.5 text-sm font-mono text-foreground focus:outline-none focus:border-primary`})]})]}),m&&(0,H.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs text-muted-foreground`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Title`}),(0,H.jsx)(`div`,{className:`text-foreground`,children:r?.title||`—`})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Question`}),(0,H.jsx)(`div`,{className:`text-foreground`,children:r?.question||`—`})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Type`}),(0,H.jsx)(`div`,{className:`font-mono text-foreground`,children:x||`table`})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Size`}),(0,H.jsx)(`div`,{className:`font-mono text-foreground`,children:r?.spanFull?`full row`:r?.spanCols?`${r.spanCols} cols`:`default`})]})]}),(0,H.jsxs)(`section`,{children:[(0,H.jsxs)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5 flex items-center gap-2`,children:[`Preview`,te&&(0,H.jsx)(`span`,{"data-testid":`widget-preview-stale`,className:`font-medium normal-case tracking-normal text-amber-600`,children:`stale — showing the last valid query`})]}),(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3 h-56 overflow-hidden`,children:[I.status===`idle`&&(F?(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Preview runs as you compose…`}):(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-destructive font-mono px-4 text-center`,children:N.error?N.error:ip(N)?`find: queries return things — use a table or list widget instead`:`Compose a calculation to preview.`})),I.status===`loading`&&(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Running preview…`}),I.status===`blocked`&&(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-destructive font-mono px-4 text-center`,children:I.message}),I.status===`error`&&(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-destructive font-mono px-4 text-center`,children:I.message}),I.status===`ok`&&(0,H.jsx)(Ny,{type:x,result:I.result,label:_.trim()||void 0,unit:l,attributes:vJ(T)})]})]}),j&&(0,H.jsx)(`p`,{role:`alert`,"data-testid":`widget-composer-error`,className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive font-mono`,children:j})]})})}function CJ(e,t,n){uI.getState().open({placeholder:`Craft the query…`,wql:{initialQuery:e,execute:t,onApply:n},sources:[$I()]})}function wJ({query:e,onQueryChange:t,scopeOptions:n,execute:r,defaultQuery:i,compact:a=!1,className:o}){let s=(0,V.useCallback)(()=>CJ(e,r,t),[e,r,t]);return a?(0,H.jsx)(`div`,{"data-testid":`stream-query-bar-dock`,className:U(`flex min-h-12 w-full items-stretch overflow-hidden rounded-xl border border-border bg-muted/40 shadow-xs`,o),children:(0,H.jsxs)(`button`,{type:`button`,"data-testid":`stream-query-bar`,onClick:s,className:`flex min-w-0 flex-1 cursor-pointer items-center gap-2.5 px-3 text-left transition-colors hover:bg-muted/70`,children:[(0,H.jsx)(Bt,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{"data-testid":`stream-query-summary`,className:`min-w-0 flex-1 truncate font-mono text-xs text-muted-foreground`,children:e||i||`Filter or search…`}),(0,H.jsx)(Dt,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`})]})}):(0,H.jsx)(`div`,{"data-testid":`stream-query-bar`,className:U(`flex min-w-0 flex-1 items-center gap-1 text-xs`,o),children:(0,H.jsx)($x,{query:e,onQueryChange:t,compact:!0,showDiagnostics:!1,preferredChoices:n,placeholder:`Filter or search…`,className:`min-w-0 flex-1`})})}function TJ({label:e,value:t,className:n}){return(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded border border-border bg-background/60 px-2 py-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e}),(0,H.jsx)(`span`,{className:U(`font-mono text-xs`,n??`text-foreground`),children:t})]})}function EJ(e){return e.kind===`relative`?`last ${e.size}${e.unit}`:e.end?`from ${e.start} to ${e.end}`:`from ${e.start}`}function DJ({parsed:e}){if(e.error)return(0,H.jsx)(`div`,{className:`text-sm text-destructive font-mono`,children:e.error});if(op(e)){let t=e.source.kind===`dataset`?(0,H.jsx)(TJ,{label:`source`,value:e.source.name,className:`text-blue-400 dark:text-blue-300`}):(0,H.jsx)(TJ,{label:`source`,value:`target`in e.source.query?`:${e.source.query.target}`:`:${e.source.query.agg}`,className:`text-blue-400 dark:text-blue-300`});return(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[t,e.transforms.map((e,t)=>(0,H.jsx)(TJ,{label:`fn ${t+1}`,value:`${e.agg}:${e.metric}`,className:`text-green-400 dark:text-green-300`},t)),e.sink&&(0,H.jsx)(TJ,{label:`sink`,value:`:${e.sink.head}`,className:`text-purple-400 dark:text-purple-300`})]})}let t=e.window&&(0,H.jsx)(TJ,{label:`window`,value:EJ(e.window),className:`text-sky-400 dark:text-sky-300`}),n=e.filters.map((e,t)=>(0,H.jsx)(TJ,{label:e.negate?`exclude`:`filter`,value:`${e.key}:${e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`)}`,className:`text-amber-400 dark:text-amber-300`},t));return ap(e)?(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,H.jsx)(TJ,{label:`aggregate`,value:e.agg,className:`text-blue-400 dark:text-blue-300`}),(0,H.jsx)(TJ,{label:`metric`,value:e.metric}),n,e.groupBy.map((e,t)=>(0,H.jsx)(TJ,{label:`group by`,value:e,className:`text-green-400 dark:text-green-300`},t)),e.rollup&&(0,H.jsx)(TJ,{label:`rollup`,value:`${e.rollup.size}${e.rollup.unit}`,className:`text-purple-400 dark:text-purple-300`}),e.displayUnit&&(0,H.jsx)(TJ,{label:`in`,value:e.displayUnit,className:`text-pink-400 dark:text-pink-300`}),t,e.join&&(0,H.jsx)(TJ,{label:`where`,value:`:${e.join.target}`,className:`text-teal-400 dark:text-teal-300`})]}):ip(e)?(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,H.jsx)(TJ,{label:`target`,value:e.target,className:`text-blue-400 dark:text-blue-300`}),n,t,e.join&&(0,H.jsx)(TJ,{label:`where`,value:`${e.join.agg}:${e.join.metric}`,className:`text-teal-400 dark:text-teal-300`})]}):null}function OJ({result:e}){let{parsed:t,stages:n}=e;if(t.error)return null;let r=t.groupBy.find(e=>e===`day`||e===`week`),i=r?`by ${r}`:t.rollup?`rollup ${t.rollup.size}${t.rollup.unit}`:`no rollup`,a=t.groupBy.length?`by {${t.groupBy.join(`, `)}}`:`single series`,o=[{n:1,name:`SELECT`,desc:`tag + time index scan`,count:n.selected,unit:`points`},{n:2,name:`BUCKET`,desc:i,count:n.buckets,unit:`buckets`},{n:3,name:`AGGREGATE`,desc:`${t.agg} per bucket`,count:n.aggregated,unit:`values`},{n:4,name:`GROUP`,desc:a,count:n.groups,unit:`series`}];return(0,H.jsx)(`div`,{className:`flex items-center gap-0 mt-4 overflow-x-auto`,children:o.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex items-center`,children:[(0,H.jsxs)(`div`,{className:`border border-border rounded-lg bg-background/60 px-3 py-2 min-w-[130px]`,children:[(0,H.jsxs)(`div`,{className:`text-[10px] font-bold tracking-wide`,style:{color:by[t%by.length]},children:[e.n,`. `,e.name]}),(0,H.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e.desc}),(0,H.jsxs)(`div`,{className:`text-sm font-semibold tabular-nums mt-0.5`,children:[e.count.toLocaleString(),` `,(0,H.jsx)(`span`,{className:`text-[10px] font-normal text-muted-foreground`,children:e.unit})]})]}),t<3&&(0,H.jsx)(mn,{size:16,className:`text-muted-foreground mx-1 shrink-0`})]},e.n))})}function kJ({matched:e,displayUnit:t}){let[n,r]=(0,V.useState)(!1);if(e.length===0)return null;let i=e=>{let t=[];return e.effortSlug&&t.push(`effort:${e.effortSlug}`),e.discipline&&t.push(`discipline:${e.discipline}`),e.intensityTier&&t.push(`intensity:${e.intensityTier}`),e.origin&&t.push(`origin:${e.origin}`),t},a=e=>{let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`};return(0,H.jsxs)(`div`,{className:`bg-card border border-border rounded-lg mt-3`,children:[(0,H.jsxs)(`button`,{onClick:()=>r(!n),className:`w-full flex items-center gap-2 px-4 py-2.5 text-sm text-muted-foreground hover:text-foreground`,children:[n?(0,H.jsx)(Mt,{size:14}):(0,H.jsx)(mn,{size:14}),`Raw metric points behind this query (`,e.length,`)`,(0,H.jsx)(`span`,{className:`text-[11px] ml-auto`,children:`one row per fact from the analytics store`})]}),n&&(0,H.jsxs)(`div`,{className:`px-4 pb-3 overflow-x-auto`,children:[(0,H.jsxs)(`table`,{className:`w-full text-[11px] font-mono`,children:[(0,H.jsx)(`thead`,{children:(0,H.jsxs)(`tr`,{className:`text-muted-foreground text-left border-b border-border`,children:[(0,H.jsx)(`th`,{className:`py-1.5 pr-4 font-normal`,children:`ts`}),(0,H.jsx)(`th`,{className:`py-1.5 pr-4 font-normal`,children:`metric`}),(0,H.jsx)(`th`,{className:`py-1.5 pr-4 font-normal`,children:`value`}),(0,H.jsx)(`th`,{className:`py-1.5 font-normal`,children:`tags`})]})}),(0,H.jsx)(`tbody`,{children:e.slice(0,12).map(e=>{let n=e.unit??e.metricUnit,r=typeof e.value==`number`?e.value:void 0,o=t&&r!==void 0&&n&&Om(n)===Om(t)?Dm(r,n,t):void 0;return(0,H.jsxs)(`tr`,{className:`border-b border-border/40`,children:[(0,H.jsx)(`td`,{className:`py-1.5 pr-4 text-muted-foreground whitespace-nowrap`,children:a(e.timestamp)}),(0,H.jsx)(`td`,{className:`py-1.5 pr-4 text-primary whitespace-nowrap`,children:e.metricKey}),(0,H.jsxs)(`td`,{className:`py-1.5 pr-4 tabular-nums`,children:[String(e.value),n?` ${n}`:``,o!==void 0&&n!==t?` → ${o.toLocaleString()} ${t}`:``]}),(0,H.jsx)(`td`,{className:`py-1.5 text-muted-foreground`,children:i(e).map(e=>(0,H.jsx)(`span`,{className:`inline-block bg-background/80 rounded px-1.5 py-0.5 mr-1 mb-0.5`,children:e},e))})]},e.id)})})]}),e.length>12&&(0,H.jsxs)(`div`,{className:`text-[11px] text-muted-foreground pt-2`,children:[`… `,e.length-12,` more points`]})]})]})}function AJ(){let[e,t]=(0,V.useState)({state:`loading`});return(0,V.useEffect)(()=>{let e=!1,n=mJ();return(async()=>{try{let[r,i,a,o,s,c]=await Promise.all(iJ.map(e=>n.runQuery(e.query)));e||t({state:`ready`,data:{repsByEffort:r,weeklyVolume:i,loadByIntensity:a,volumeByEffort:o,avgTis:s,totalVolume:c}})}catch(n){e||t({state:`error`,error:n instanceof Error?n.message:String(n)})}})(),()=>{e=!0}},[]),e}function jJ({label:e,items:t}){return(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(e=>(0,H.jsx)(`span`,{className:`font-mono text-[11px] rounded bg-muted px-1.5 py-0.5 text-foreground/80`,children:e},e))})]})}function MJ(){return(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-6 gap-y-4 rounded-lg border border-border bg-card/50 p-4 md:grid-cols-3 lg:grid-cols-6`,children:[(0,H.jsx)(jJ,{label:`aggregators`,items:lf}),(0,H.jsx)(jJ,{label:`metrics`,items:[...sf,...cf]}),(0,H.jsx)(jJ,{label:`filter keys`,items:df}),(0,H.jsx)(jJ,{label:`dimensions`,items:mf}),(0,H.jsx)(jJ,{label:`intensity`,items:gf}),(0,H.jsx)(jJ,{label:`rollups`,items:Of})]})}function NJ({kind:e,children:t}){return(0,H.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-primary`,children:e}),t]})}function PJ({parsed:e}){return(0,H.jsx)(`div`,{className:`mb-2`,children:(0,H.jsx)(DJ,{parsed:e})})}function FJ({data:e}){return(0,H.jsx)(NJ,{kind:`Table list`,children:(0,H.jsxs)(ly,{title:`Reps by effort`,question:`Which movements?`,query:`sum:totalReps{} by {effort} last 6w`,children:[(0,H.jsx)(PJ,{parsed:e.repsByEffort.parsed}),(0,H.jsx)(`div`,{className:`h-44`,children:(0,H.jsx)(Ty,{result:e.repsByEffort,unit:`reps`})})]})})}function IJ({data:e}){return(0,H.jsx)(NJ,{kind:`Graphs`,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,H.jsxs)(ly,{title:`Weekly tonnage`,question:`Is volume rising?`,query:`sum:totalVolume{} by {week} last 6w`,children:[(0,H.jsx)(PJ,{parsed:e.weeklyVolume.parsed}),(0,H.jsx)(`div`,{className:`h-40`,children:(0,H.jsx)(xy,{result:e.weeklyVolume,unit:`kg`})})]}),(0,H.jsxs)(ly,{title:`Load by intensity`,question:`Is training polarized?`,query:`sum:sessionLoad{} by {intensity, week} last 6w`,children:[(0,H.jsx)(PJ,{parsed:e.loadByIntensity.parsed}),(0,H.jsx)(`div`,{className:`h-40`,children:(0,H.jsx)(Oy,{result:e.loadByIntensity,unit:`AU`})})]})]})})}function LJ({data:e}){return(0,H.jsx)(NJ,{kind:`Multi-query dashboard`,children:(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/30 p-3 flex flex-col gap-3 [&_.text-5xl]:text-2xl`,children:[(0,H.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:`Training Block Review`}),(0,H.jsxs)(`span`,{className:`text-[11px] text-muted-foreground italic text-right`,children:[iJ.length-1,` WQL widgets · mirrors DashboardView`]})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-3`,children:[(0,H.jsx)(ly,{title:`Avg TIS`,question:`How hard?`,query:`avg:tis{} last 6w`,children:(0,H.jsx)(my,{result:e.avgTis,unit:`pts`,label:`training intensity`})}),(0,H.jsx)(ly,{title:`Total volume`,question:`How much?`,query:`sum:totalVolume{} last 6w`,children:(0,H.jsx)(my,{result:e.totalVolume,unit:`kg`,label:`total volume`})}),(0,H.jsx)(`div`,{children:(0,H.jsx)(ly,{title:`Weekly tonnage`,question:`Rising?`,query:`sum:totalVolume{} by {week} last 6w`,children:(0,H.jsx)(`div`,{className:`h-32`,children:(0,H.jsx)(xy,{result:e.weeklyVolume,unit:`kg`})})})}),(0,H.jsx)(ly,{title:`Volume by effort`,question:`Where?`,query:`sum:totalVolume{discipline:strength} by {effort} last 6w`,children:(0,H.jsx)(`div`,{className:`h-32`,children:(0,H.jsx)(Ey,{result:e.volumeByEffort,unit:`kg`,limit:4})})}),(0,H.jsx)(ly,{title:`Load by intensity`,question:`Polarized?`,query:`sum:sessionLoad{} by {intensity, week} last 6w`,children:(0,H.jsx)(`div`,{className:`h-32`,children:(0,H.jsx)(Oy,{result:e.loadByIntensity,unit:`AU`})})})]})]})})}function RJ({data:e}){return(0,H.jsxs)(`section`,{"data-testid":`home-analytics-section`,className:`mx-auto flex max-w-[1500px] flex-col gap-8 px-6 py-16 lg:px-12`,children:[(0,H.jsxs)(`header`,{className:`flex flex-col gap-2`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2 text-[11px] font-semibold uppercase tracking-wide text-primary`,children:[`Own the analytics`,(0,H.jsx)(`span`,{"data-testid":`home-analytics-example-badge`,className:`rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium normal-case text-muted-foreground`,children:`Example data`})]}),(0,H.jsx)(`h2`,{className:`text-2xl font-bold text-foreground`,children:`Query what you just did — in WQL`}),(0,H.jsxs)(`p`,{className:`max-w-2xl text-sm text-muted-foreground`,children:[`Every result is one query away. WQL turns your journal into queryable facts: pick an `,(0,H.jsx)(`strong`,{children:`aggregator`}),` and a `,(0,H.jsx)(`strong`,{children:`metric`}),`, filter by `,(0,H.jsx)(`strong`,{children:`tag`}),`, group by a `,(0,H.jsx)(`strong`,{children:`dimension`}),`, roll up over `,(0,H.jsx)(`strong`,{children:`time`}),`. The same elements drive a table, a graph, or a full dashboard — executed here against a clearly labelled example dataset, never your journal.`]})]}),(0,H.jsx)(MJ,{}),(0,H.jsxs)(`div`,{className:`grid items-start gap-6 lg:grid-cols-3`,children:[(0,H.jsx)(FJ,{data:e}),(0,H.jsx)(IJ,{data:e}),(0,H.jsx)(LJ,{data:e})]})]})}function zJ(){let e=AJ();return e.state===`loading`?null:e.state===`error`?(0,H.jsx)(`div`,{role:`alert`,"data-testid":`home-analytics-error`,className:`mx-auto max-w-[1500px] px-6 py-16 lg:px-12`,children:(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Example data failed to load: `,e.error]})}):(0,H.jsx)(RJ,{data:e.data})}function BJ({data:e}){return e?(0,H.jsx)(RJ,{data:e}):(0,H.jsx)(zJ,{})}var VJ={"q-elapsed":{query:`sum:elapsed{} by {effort}`,unit:`s`},"q-reps":{query:`sum:totalReps{} by {effort}`,unit:`reps`},"q-tonnage":{query:`sum:totalVolume{} by {week}`,unit:`kg`},"q-tis":{query:`avg:tis{}`,unit:`pts`}},HJ=`q-elapsed`,UJ=[`training-block-review`,`road-to-560-total`,`polarized-base-marathon`],WJ=`training-block-review`;function GJ(e,t){let n=e.indexOf(`{`);if(n===-1)return`${e}{note:${t}}`;let r=e.indexOf(`}`,n),i=e.slice(n+1,r).trim(),a=i?`note:${t}, ${i}`:`note:${t}`;return`${e.slice(0,n)}{${a}}${e.slice(r+1)}`}function KJ({activeStageId:e,noteId:t,queryKey:n,boardSlug:r}){switch(e){case`wql-table`:return(0,H.jsx)(JJ,{noteId:t,queryKey:n});case`wql-dashboard`:return(0,H.jsx)(XJ,{boardSlug:r});default:return(0,H.jsx)(qJ,{})}}function qJ(){return(0,H.jsx)(`div`,{className:`flex h-full w-full items-center justify-center overflow-auto p-6`,"data-testid":`tour-session-vocab`,children:(0,H.jsxs)(`div`,{className:`flex w-full max-w-3xl flex-col gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-primary`,children:`Own the analytics`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`aggregator · metric · filter · dimension · rollup — the whole language fits on one strip.`})]}),(0,H.jsx)(MJ,{})]})})}function JJ(e){return(0,H.jsx)(DL,{children:(0,H.jsx)(YJ,{...e})})}function YJ({noteId:e,queryKey:t}){let{isCompact:n}=EL(),r=VJ[t]??VJ[`q-elapsed`],[i,a]=(0,V.useState)(`example`),[o,s]=(0,V.useState)(null),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(null),f=i===`run`&&e?GJ(r.query,e):r.query,p=o??f,m=i===`example`?mJ():vN,h=(0,V.useCallback)(e=>m.runQuery(e.raw),[m]);(0,V.useEffect)(()=>{let e=!1;return l(null),d(null),m.runQuery(p).then(t=>{e||(t.parsed.error?d(t.parsed.error):l(t))}).catch(t=>{e||d(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[p,m]);let g=!!c&&c.series.some(e=>e.points.length>0),_=o!==null,v=()=>s(null),y=e=>{e!==i&&(a(e),s(null))};return(0,H.jsxs)(`div`,{className:`relative flex h-full w-full flex-col p-5`,"data-testid":`tour-session-table`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col items-start gap-3`,children:[(0,H.jsxs)(`div`,{className:`w-full min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wide text-primary`,"data-testid":`tour-session-source-label`,children:i===`example`?`Example data`:e?`This run`:`Your journal`}),(0,H.jsx)(`div`,{className:`mt-1`,children:(0,H.jsx)(wJ,{query:p,onQueryChange:e=>s(e),scopeOptions:[],execute:h,defaultQuery:f,compact:n})})]}),(0,H.jsxs)(`div`,{className:`flex flex-none items-center gap-2`,children:[_&&(0,H.jsxs)(`button`,{type:`button`,onClick:v,"data-testid":`tour-session-revert`,className:`inline-flex items-center gap-1.5 rounded-full border border-border bg-card px-3 py-1.5 text-xs font-medium shadow-sm transition-colors hover:bg-accent`,children:[(0,H.jsx)(F,{className:`h-3.5 w-3.5`}),`Revert`]}),(0,H.jsxs)(`div`,{role:`group`,"aria-label":`Data source`,className:`inline-flex overflow-hidden rounded-full border border-border bg-card shadow-sm`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>y(`run`),"aria-pressed":i===`run`,"data-testid":`tour-session-source-run`,className:`px-3 py-1.5 text-xs font-medium transition-colors ${i===`run`?`bg-primary text-primary-foreground`:`hover:bg-accent`}`,children:`This run`}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>y(`example`),"aria-pressed":i===`example`,"data-testid":`tour-session-source-example`,className:`px-3 py-1.5 text-xs font-medium transition-colors ${i===`example`?`bg-primary text-primary-foreground`:`hover:bg-accent`}`,children:`Example data`})]})]})]}),(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 items-start justify-center overflow-auto pt-3`,children:u?(0,H.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:u}):c&&!g?(0,H.jsx)(`p`,{className:`max-w-sm py-6 text-center text-sm text-muted-foreground`,"data-testid":`tour-session-table-empty`,children:i===`example`?`No example metrics match this query.`:e?`This run has no logged metrics for that query yet. Use Next or Stop to log what you completed.`:`Your journal has no matching metrics yet. Switch to Example data to see these queries answer.`}):c&&g?(0,H.jsx)(`div`,{className:`max-h-full w-full max-w-3xl`,children:(0,H.jsx)(Ty,{result:c,unit:r.unit})}):(0,H.jsx)(`p`,{className:`text-center text-sm text-muted-foreground`,children:`Running query…`})})]})}function XJ({boardSlug:e}){let t=mJ(),n=ST(),r=(0,V.useMemo)(()=>n?nk(n):[],[n]),i=(0,V.useMemo)(()=>r.find(t=>t.slug===e)??r[0],[r,e]),a=(0,V.useMemo)(()=>{if(!i?.rawContent)return null;try{let{meta:e,sections:t}=fg(i.rawContent);return ig(t,e)}catch{return null}},[i]),[o]=_J(),s=Date.now()-o*7*864e5,c=Date.now(),[l,u]=(0,V.useState)(null);return(0,H.jsxs)(`div`,{className:`flex h-full w-full flex-col`,"data-testid":`tour-session-dashboard`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 px-5 pt-4`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate text-[11px] font-semibold uppercase tracking-wide text-primary`,children:i?.title??e}),(0,H.jsx)(`span`,{"data-testid":`tour-session-dashboard-source`,className:`flex-none rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground`,children:`Example data`})]}),(0,H.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,H.jsx)(Yy,{})})]}),(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-5 pb-5 pt-3 [&_[data-testid=dashboard-view]>div.grid]:grid-cols-1 [&_[data-testid=dashboard-view]>div.grid]:sm:grid-cols-2 [&_[data-testid=dashboard-view]>div.grid]:lg:grid-cols-2 [&_[data-testid=dashboard-view]>div.grid>*]:col-span-1`,children:a?(0,H.jsx)(Jy,{document:a,executor:t,onInspectWidget:u,rangeStart:s,rangeEnd:c}):(0,H.jsx)(`p`,{className:`pt-8 text-center text-sm text-muted-foreground`,children:`Loading board…`})}),(0,H.jsx)(xJ,{open:l!==null,onClose:()=>u(null),mode:`inspect`,initialWql:l?.body??`sum:totalVolume{}`,initial:l?{title:l.title,question:l.question,type:l.type,spanCols:l.spanCols,spanFull:l.spanFull,attributes:l.attributes}:void 0,executor:t,rangeStart:s,rangeEnd:c,tokenValues:a?Qh(a.tokens):void 0,onApply:void 0})]})}var ZJ=e=>Math.max(0,Math.min(1,e)),QJ=(e,t,n)=>e+(t-e)*n;function $J({visible:e,children:t}){return(0,H.jsx)(`div`,{className:`absolute inset-0 transition-opacity duration-500`,style:{opacity:+!!e,pointerEvents:e?`auto`:`none`},"aria-hidden":!e,inert:!e,children:t})}var eY=(0,V.forwardRef)(function({id:e,heightVh:t,header:n,stages:r,captions:i,onActiveStageChange:a,onViewportChange:o,onReachedChange:s,onChoice:c,onCommand:l,session:u,editor:d,timer:f,tvRuntime:p,tvStageId:m,toastLabel:h},g){let _=(0,V.useRef)(null),v=(0,V.useRef)(null),[y,b]=(0,V.useState)(null),x=(0,V.useCallback)(e=>{v.current=e,b(e)},[]),S=(0,V.useRef)(null),C=(0,V.useRef)(null),{slice:w,subscribe:T,resync:E,runwayReached:D}=pW(_,!1,r,e),O=nY(_);(0,V.useEffect)(()=>{o?.(O)},[O,o]),(0,V.useEffect)(()=>{s?.(D)},[D,s]);let[k,A]=(0,V.useState)(!1),j=tY(_);(0,V.useEffect)(()=>{(j||D)&&A(!0)},[j,D]);let M=w.stage?.screen??`editor`,[N,P]=(0,V.useState)(!1);(0,V.useEffect)(()=>{M===`timer`&&P(!0)},[M]);let F=k,I=(0,V.useRef)(null);return(0,V.useEffect)(()=>{k&&I.current!==w.stage?.id&&(I.current=w.stage?.id??null,w.stage?.id&&a?.(w.stage.id))},[w.stage?.id,a,k]),(0,V.useEffect)(()=>T(e=>{let t=S.current;if(t){if(m&&e.stage.id===m){let n=ZJ((e.t-.2)/.5),r=1-(1-n)**2;t.style.opacity=String(n),t.style.transform=`translateY(${QJ(90,0,r)}px)`}else t.style.opacity=`0`}let n=C.current;if(n){if(h!=null&&e.index===r.length-1){let t=ZJ((e.t-.04)/.2),r=ZJ((e.t-.7)/.2);n.style.opacity=String(Math.max(0,t-r)),n.style.transform=`translateY(${QJ(-14,0,t)}px)`}else n.style.opacity=`0`}}),[T,m,h,r.length]),(0,V.useImperativeHandle)(g,()=>({scrollToStage:e=>{let t=_.current,n=r.find(t=>t.id===e);!t||!n||fW(t,Math.min(n.range[0]+.02,n.range[1]-.005))},subscribe:T,resync:E}),[r,T,E]),(0,H.jsxs)(`section`,{id:`tour-section-${e}`,"data-testid":`tour-section-${e}`,children:[n,(0,H.jsx)(uW,{trackRef:_,height:t,stages:r,activeIndex:w.index,segmentId:e,testId:`tour-runway`,status:h==null?void 0:(0,H.jsxs)(`div`,{ref:C,className:`pointer-events-none flex items-center gap-2.5 whitespace-nowrap rounded-full border border-primary/40 bg-card px-5 py-2.5 font-mono text-[10.5px] tracking-[0.04em] opacity-0 shadow-xl`,children:[(0,H.jsx)(`span`,{className:`size-[9px] rounded-sm bg-primary`}),h]}),pane:(0,H.jsx)(`div`,{ref:x,className:`absolute inset-0 flex flex-col justify-center`,children:(0,H.jsxs)(dq,{children:[(0,H.jsx)(mq,{ringKey:`editor.window`,el:y}),(0,H.jsx)(tB,{title:vq[M],className:`relative h-full max-h-[760px]`,children:(0,H.jsxs)(lW,{gateId:`${e}-pane`,segmentId:e,className:`relative h-full`,children:[d&&(0,H.jsx)($J,{visible:M===`editor`,children:(0,H.jsx)(Nq,{doc:d.doc,onDocChange:d.onDocChange,onBlocksChange:d.onBlocksChange,onRun:d.onRun,theme:d.theme,withRingTargets:!0})}),F&&f&&N&&(0,H.jsx)($J,{visible:M===`timer`,children:(0,H.jsx)(eJ,{block:f.block,autoStart:f.autoStart,onClose:f.onClose,onComplete:f.onComplete,onRuntimeReady:f.onRuntimeReady,onRunStarted:f.onRunStarted,onStart:f.onStart,onReset:f.onReset,externalStop:f.externalStop},f.sessionKey)}),F&&!f&&!d&&u&&(0,H.jsx)($J,{visible:M===`analytics`||M===`metrics`,children:u.result?(0,H.jsx)(Fq,{result:u.result}):(0,H.jsx)(KJ,{activeStageId:u.fixedStage??w.stage.id,noteId:u.noteId,queryKey:u.queryKey,boardSlug:u.boardSlug})})]})}),m&&(0,H.jsx)($q,{ref:S,runtime:p??null}),(0,H.jsx)(hq,{target:w.ring?.key?{key:w.ring.key}:null,accent:w.stage.accent??_q.editor,canvasRef:v})]})}),captions:(0,H.jsx)(Uq,{activeIndex:w.index,captions:i,onChoice:c,onCommand:l})})]})});function tY(e){let[t,n]=(0,V.useState)(!1);return(0,V.useEffect)(()=>{let t=e.current;if(!t||typeof IntersectionObserver>`u`)return;let r=new IntersectionObserver(([e])=>{e.isIntersecting&&(n(!0),r.disconnect())},{threshold:.05});return r.observe(t),()=>r.disconnect()},[e]),t}function nY(e){let[t,n]=(0,V.useState)(!1);return(0,V.useEffect)(()=>{let t=e.current;if(!t||typeof IntersectionObserver>`u`)return;let r=new IntersectionObserver(([e])=>n(e.isIntersecting),{threshold:.05});return r.observe(t),()=>r.disconnect()},[e]),t}function rY(e){let[t,n]=(0,V.useState)(!1),[r,i]=(0,V.useState)({});(0,V.useEffect)(()=>{i(Gz()),n(!0);let e=e=>{e.key===`wodwiki.quests.v1`&&i(Gz())};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]);let a=e=>{for(let t in r)if(r[t]?.[e])return!0;return!1};return{chapters:e.map(e=>{let t=(e.questIds??[]).map(e=>({id:e,isComplete:a(e)})),n=t.filter(e=>e.isComplete).length;return{chapter:e,completedCount:n,totalCount:t.length,isComplete:t.length>0&&n===t.length,quests:t}}),isHydrated:t}}function iY({chapters:e,className:t}){let{chapters:n}=rY(e),r=n.find(e=>e.chapter.id===`home-tour`),i=r?.isComplete??!1,a=r?.completedCount??0,o=r?.totalCount??5;return(0,H.jsx)(`section`,{"data-testid":`celebration-bridge`,className:U(`py-12 px-4 sm:px-6 xl:py-20 2xl:py-24 border-b border-border/60 text-center`,t),children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-2xl xl:max-w-3xl 2xl:max-w-4xl flex flex-col items-center gap-4 xl:gap-6`,children:[(0,H.jsx)(`div`,{"data-testid":`celebration-badge`,className:U(`inline-flex items-center gap-2 rounded-full px-3.5 py-1.5 font-mono text-[11px] font-bold transition-colors`,i?`border border-emerald-500/40 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:`border border-border bg-muted/30 text-muted-foreground`),children:i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Vt,{className:`size-3.5 stroke-[2.5]`}),(0,H.jsx)(`span`,{children:`Take the Tour — complete ✓`})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{className:`size-2 rounded-full bg-primary`}),(0,H.jsxs)(`span`,{children:[`Take the Tour — `,a,`/`,o]})]})}),(0,H.jsx)(`h2`,{className:`text-2xl sm:text-3xl xl:text-4xl 2xl:text-5xl font-black tracking-tight text-foreground`,children:`You've seen how it works. Now master the syntax.`}),(0,H.jsxs)(`p`,{className:`text-[14px] sm:text-[15px] xl:text-base 2xl:text-lg leading-relaxed text-muted-foreground max-w-xl xl:max-w-2xl 2xl:max-w-3xl`,children:[`From your first `,(0,H.jsx)(`code`,{className:`font-mono text-[12px] bg-muted px-1.5 py-0.5 rounded text-foreground`,children:`wod`}),` block to a full training session: time-capped protocols like AMRAP and EMOM, repeating rounds and dash-format rep schemes (`,(0,H.jsx)(`code`,{className:`font-mono text-[12px] bg-muted px-1 py-0.5 rounded text-foreground`,children:`21-15-9`}),`), inline metrics for effort and heart rate, dialect fences for workout, log, plan, and climb notes — and complex workouts that chain it all into one session. Six chapters on the syntax, each with a runnable example and quests to earn. Keep scrolling to start.`]})]})})}var aY={basics:`wods/examples/syntax/single-movement.md`,protocols:`wods/examples/syntax/timers-rest.md`,structure:`wods/examples/syntax/groups-1.md`,"custom-metrics":`wods/syntax/custom-metrics-1.md`,dialects:`wods/examples/syntax/dialect-climb-bouldering.md`,complex:`wods/examples/syntax/complex-swimming.md`},oY={basics:{summary:`Statements and metrics — how a workout line reads, from movement names to reps, loads, and timed rests.`,bullets:["Freeform Markdown + fenced ```time blocks",`Single movements: 10 Pushups, 15 Air Squats`,`Inline resistance: 225lb, 100kg, 24kg`]},protocols:{summary:`Time-capped and paced protocols: AMRAP, EMOM, Tabata intervals, and required rest that paces the room.`,bullets:[`20:00 AMRAP (As Many Rounds As Possible)`,`(10) :60 EMOM (Every Minute on the Minute)`,`*:30 Rest (required, unskippable recovery)`]},structure:{summary:`Rounds, rep ladders, and nested grouping — how blocks compose into multi-part workout schemes.`,bullets:[`(3 Rounds) and (5 Sets) block repetition`,`Ladders & schemes: 21-15-9, 10-8-6-4-2`,`Section labels: (Warmup) and // Strength`]},"custom-metrics":{summary:`Capture typed data points right inline: effort intensity, heart rate, RPE, and custom JSON metrics.`,bullets:[`Inline JSON metrics: {"intensity": 80}`,`Capture prompts: :? time, ? reps, ?lb load`,`Session-level RPE & custom dimensions`]},dialects:{summary:`Dialect fences for specialized domains: workout, log, plan, and climbing session notes.`,bullets:["```time for workouts, ```log for recorded efforts","Sport dialect suffixes like ```log:climbing",`Discipline tags and session intent`]},complex:{summary:`Multi-set training sessions that chain intervals, strength, and conditioning into one complete program.`,bullets:[`Multi-set swimming and track intervals`,`Strength blocks paired with conditioned finishers`,`Full training session flow`]}},sY=[{id:`basics`,title:`Basics`,badge:`trophy`,questIds:[],sectionIds:[]},{id:`protocols`,title:`Protocols`,badge:`timer`,questIds:[],sectionIds:[]},{id:`structure`,title:`Structure`,badge:`dumbbell`,questIds:[],sectionIds:[]},{id:`custom-metrics`,title:`Custom Metrics`,badge:`trophy`,questIds:[],sectionIds:[]},{id:`dialects`,title:`Dialects`,badge:`trophy`,questIds:[],sectionIds:[]},{id:`complex`,title:`Complex Workouts`,badge:`dumbbell`,questIds:[],sectionIds:[]}];function cY({chapters:e=[],allQuests:t=[],theme:n,wodFiles:r={},onRun:i}){let a=(0,V.useMemo)(()=>{let t=(e??[]).filter(e=>e.id!==`home-tour`);return t.length>0?t:sY},[e]),o=eB(`(prefers-reduced-motion: reduce)`),{markComplete:s}=Zz(`/`,t),{chapters:c}=rY(a),[l,u]=(0,V.useState)(()=>a[0]?.id??`basics`),[d,f]=(0,V.useState)(``),p=(0,V.useRef)([]),m=(0,V.useRef)(l);m.current=l;let h=(0,V.useMemo)(()=>Object.fromEntries(a.map(e=>[e.id,cF(aY[e.id]??``,r)])),[a,r]);(0,V.useEffect)(()=>{p.current=[],f(h[l]??``)},[l,h]);let g=(0,V.useCallback)(e=>{p.current=e},[]),_=(0,V.useCallback)(()=>{let e=m.current;s(`${e}-run`),i?.(e,p.current[0]??null,d)},[d,s,i]),v=(0,V.useMemo)(()=>a.map((e,t)=>{let n=Math.max(1,a.length);return{id:e.id,range:[t/n,(t+1)/n],screen:`editor`,accent:`hsl(var(--primary))`,label:e.title,source:h[e.id]}}),[a,h]),y=(0,V.useMemo)(()=>Object.fromEntries(c.map(e=>[e.chapter.id,e])),[c]),b=(0,V.useMemo)(()=>a.map((e,t)=>{let n=oY[e.id],r=y[e.id];return{id:e.id,num:`05${String.fromCharCode(97+t)}`,title:e.title,body:n?.summary??e.title,bullets:n?.bullets,accent:`hsl(var(--primary))`,extra:r&&(0,H.jsx)(`span`,{"data-testid":`chapter-picker-progress-${e.id}`,className:U(`font-mono text-[11px] font-semibold tabular-nums`,r.isComplete?`font-bold text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`),children:r.isComplete?`done ✓`:`${r.completedCount}/${r.totalCount}`}),actions:[{label:`Read guide →`,href:yq[e.id]??`/guide/start`,event:Az.chapterGuideClicked,data:{chapter:e.id},testId:`chapter-picker-guide-${e.id}`}]}}),[a,y]);return(0,H.jsxs)(`section`,{id:`tour-chapter-picker`,"data-testid":`tour-chapter-picker`,className:`flex flex-col`,children:[(0,H.jsx)(wq,{index:`05`,before:`Learning with `,accentText:`Examples`,after:``,accent:`hsl(var(--primary))`,blurb:`Six chapters on the syntax, each with a runnable example and quests to earn. Scroll into each section to load its example code into the editor.`}),o?(0,H.jsx)(lY,{chapters:a,selectedId:l,onSelect:u,doc:d,onDocChange:f,theme:n,onBlocksChange:g,onRun:_,progressByChapter:y}):(0,H.jsx)(eY,{id:`learn`,heightVh:`600vh`,stages:v,captions:b,onActiveStageChange:u,editor:{doc:d,theme:n,onDocChange:f,onBlocksChange:g,onRun:_}})]})}function lY({chapters:e,selectedId:t,onSelect:n,doc:r,onDocChange:i,theme:a,onBlocksChange:o,onRun:s,progressByChapter:c}){return(0,H.jsx)(`div`,{className:`relative mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px] px-6 py-8 lg:px-12 xl:px-16`,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-12 xl:gap-16`,children:[(0,H.jsx)(`div`,{className:`w-full lg:w-[58%] xl:w-[60%] lg:sticky lg:top-[110px] z-10 flex-none`,children:(0,H.jsx)(`div`,{className:`h-[420px] sm:h-[480px] lg:h-[calc(100dvh-150px)] max-h-[700px] w-full rounded-2xl border border-border shadow-2xl overflow-hidden bg-background`,children:(0,H.jsx)(tB,{title:yq[t]?.split(`/`).pop()??`example.md`,subtitle:`Lesson: ${e.find(e=>e.id===t)?.title??t}`,className:`h-full`,children:(0,H.jsx)(Nq,{doc:r,onDocChange:i,onBlocksChange:o,onRun:s,theme:a,withRingTargets:!1})})})}),(0,H.jsx)(`div`,{className:`w-full lg:w-[42%] xl:w-[40%] flex flex-col gap-16 lg:py-6`,"data-testid":`chapter-picker-list`,children:e.map((e,r)=>{let i=c[e.id],a=sG(e.badge),o=e.id===t,s=oY[e.id];return(0,H.jsxs)(`div`,{"data-testid":`chapter-picker-row-${e.id}`,className:U(`rounded-2xl border p-6 sm:p-8 transition-all duration-300 min-h-[340px] flex flex-col justify-between`,o?`border-primary bg-primary/5 ring-1 ring-primary/30 shadow-lg dark:bg-primary/10`:`border-border/70 bg-card hover:border-primary/40`),children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(`span`,{className:`font-mono text-xs font-bold uppercase tracking-wider text-primary`,children:[`Chapter 0`,r+1]}),a&&(0,H.jsx)(a,{className:`size-4 text-primary`})]}),(0,H.jsx)(`span`,{className:U(`font-mono text-xs font-semibold tabular-nums`,i?.isComplete?`text-emerald-600 dark:text-emerald-400 font-bold`:`text-muted-foreground`),children:i?.isComplete?`done ✓`:`${i?.completedCount??0}/${i?.totalCount??e.questIds.length}`})]}),(0,H.jsx)(`h3`,{className:`mt-3 text-2xl font-bold tracking-tight text-foreground sm:text-3xl`,children:e.title}),(0,H.jsx)(`p`,{className:`mt-3 text-sm sm:text-base leading-relaxed text-muted-foreground`,children:s?.summary??e.title}),s?.bullets&&(0,H.jsx)(`ul`,{className:`mt-4 space-y-1.5 text-xs sm:text-sm text-foreground/80 font-mono`,children:s.bullets.map((e,t)=>(0,H.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,H.jsx)(`span`,{className:`text-primary font-bold`,children:`›`}),(0,H.jsx)(`span`,{children:e})]},t))})]}),(0,H.jsxs)(`div`,{className:`mt-6 flex flex-wrap items-center gap-3 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),"data-testid":`chapter-picker-select-${e.id}`,"aria-pressed":o,className:U(`inline-flex items-center gap-2 rounded-lg px-4 py-2 text-xs sm:text-sm font-semibold transition-colors shadow-xs`,o?`bg-primary text-primary-foreground hover:bg-primary/90`:`border border-border bg-background text-foreground hover:bg-muted`),children:[(0,H.jsx)(sr,{className:`size-3.5 fill-current`}),(0,H.jsx)(`span`,{children:o?`Loaded in editor`:`Load example`})]}),(0,H.jsxs)(Tt,{to:yq[e.id]??`/guide/start`,"data-testid":`chapter-picker-guide-${e.id}`,"aria-label":`Read guide for ${e.title}`,onClick:()=>kz.record(Az.chapterGuideClicked,{chapter:e.id}),className:`inline-flex items-center gap-1.5 rounded-lg border border-border bg-background/80 px-3.5 py-2 text-xs sm:text-sm font-medium text-muted-foreground transition-colors hover:border-primary/50 hover:bg-background hover:text-primary`,children:[(0,H.jsx)(fr,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Read guide →`})]})]})]},e.id)})})]})})}function uY({chapters:e}){let t=()=>kz.record(Az.lessonStarted),n=()=>kz.record(Az.cheatsheetOpened),{chapters:r}=rY(e),i=r.filter(e=>e.chapter.id!==`home-tour`);return(0,H.jsxs)(`section`,{"data-testid":`tour-learn`,className:`mx-auto max-w-5xl px-6 py-16 border-b border-border/60`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 lg:flex-row lg:items-end lg:justify-between`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-2xl sm:text-3xl font-bold tracking-tight`,children:`Learn the Language`}),(0,H.jsx)(`p`,{className:`mt-2 text-muted-foreground leading-relaxed max-w-xl`,children:`Six chapters, each with a runnable example and quests to earn — progress shows on the chapter cards above.`})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,H.jsx)(Tt,{to:`/guide/start`,onClick:t,className:`inline-flex items-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90`,children:`Start Lesson 1`}),(0,H.jsx)(Tt,{to:`/guide/start?h=reference`,onClick:n,className:`text-sm font-semibold text-primary underline-offset-2 hover:underline`,children:`Cheat sheet →`})]})]}),(0,H.jsx)(`div`,{className:`mt-8 flex flex-wrap items-center gap-2`,children:i.map(({chapter:e,completedCount:t,totalCount:n,isComplete:r})=>{let i=yq[e.id]??`/guide/start`,a=sG(e.badge);return(0,H.jsxs)(Tt,{to:i,"data-testid":`learn-progress-chip-${e.id}`,className:U(`group inline-flex items-center gap-2 rounded-full border px-3 py-1.5 transition-colors hover:border-primary/40`,r?`border-emerald-500/30 bg-emerald-500/5`:`border-border bg-card`),children:[a&&(0,H.jsx)(a,{className:`size-3.5 text-muted-foreground`}),(0,H.jsx)(`span`,{className:`text-[12px] font-semibold text-foreground`,children:e.title}),(0,H.jsx)(`span`,{className:U(`font-mono text-[10px] font-bold tabular-nums`,r?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`),children:r?`done ✓`:`${t}/${n}`})]},e.id)})})]})}var dY=uY,fY=`w-[290px] sm:w-[320px] md:w-[340px] shrink-0 snap-start flex flex-col justify-between rounded-xl border border-border bg-card p-5 text-left transition-colors hover:border-primary/40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`;function pY(e){let t=e.icon;return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,H.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),(0,H.jsx)(`h3`,{className:`mt-4 text-base font-semibold text-foreground`,children:e.title}),(0,H.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.description})]}),e.note?(0,H.jsx)(`span`,{className:`mt-4 text-xs font-medium text-muted-foreground`,children:e.note}):(0,H.jsxs)(`span`,{className:`mt-4 inline-flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,H.jsx)(`span`,{children:e.action}),(0,H.jsx)(ze,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]})]})}function mY(e){switch(e.phase){case`checking`:return`Checking source…`;case`fetching`:return`Downloading ${e.chunkId??`package`}…`;case`applying`:return`Importing ${e.chunkId??`package`}…`;case`committed`:return`Committed ${e.chunkId??`package`}`;case`finalizing`:return`Finalizing checkpoints…`;case`finished`:return e.error??`Done`}}function hY(e){let{pkg:t,anyBusy:n,onBusyChange:r}=e,[i,a]=(0,V.useState)(()=>YE(t.id)),[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(null);(0,V.useEffect)(()=>(a(YE(t.id)),ZE(()=>a(YE(t.id)))),[t.id]);let f=async()=>{s(!0),r(!0),d(null),l(`Checking source…`);try{let e=await cD(t.id,{onProgress:e=>l(mY(e))});if(e===`imported`||e===`current`){let n=XE(t.id,!0);a(!0),l(n?e===`imported`?`Imported — package added to your library.`:`Already up to date.`:`Subscribed for this session only — browser storage is unavailable.`)}else l(null),d(e===`server-stale`?`Published version is older than stored copy.`:e===`busy`?`Another tab is syncing. Try again shortly.`:`Sync failed. Check connection and try again.`)}catch(e){l(null),d(e instanceof Error?e.message:String(e))}finally{s(!1),r(!1)}},p=async()=>{s(!0),r(!0),d(null),l(`Removing package…`);try{await lD(t.id),a(!1),l(`Removed from library.`)}catch(e){d(e instanceof Error?e.message:`Failed to delete package`)}finally{s(!1),r(!1)}},m=()=>{i?p():f()},h=o||n;return(0,H.jsxs)(`article`,{className:fY,"data-testid":`demo-feed-${t.id}`,"aria-label":`${t.label} package`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`rounded-full border border-border bg-muted/60 px-2 py-0.5 font-mono text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:t.sourceLabel}),(0,H.jsx)(`span`,{className:`rounded-full border border-border/80 bg-accent/40 px-2 py-0.5 font-mono text-[10px] text-muted-foreground`,children:t.category}),t.category===`feeds`&&(0,H.jsx)(`span`,{className:`rounded-full border border-border px-2 py-0.5 font-mono text-[10px] text-muted-foreground`,children:`Demo`})]}),(0,H.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":i,"aria-label":`Toggle ${t.label} in library`,onClick:m,disabled:h,"data-testid":`demo-feed-toggle-${t.id}`,title:i?`Remove from library`:`Add to library`,className:`relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 ${i?`bg-emerald-600`:`bg-muted-foreground/30`}`,children:(0,H.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-3.5 transform rounded-full bg-background shadow transition-transform ${i?`translate-x-4.5`:`translate-x-0.5`}`})})]}),(0,H.jsx)(`h3`,{className:`mt-3.5 text-base font-semibold text-foreground`,children:t.label}),(0,H.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground line-clamp-3`,children:t.description})]}),(0,H.jsxs)(`div`,{className:`mt-4 pt-2 border-t border-border/60`,children:[(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:i?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-medium text-emerald-600`,children:[(0,H.jsx)(nn,{className:`size-3.5`,"aria-hidden":!0}),`In library`]}):(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`Not in library`})}),c&&(0,H.jsxs)(`p`,{role:`status`,"aria-live":`polite`,className:`mt-1.5 flex items-center gap-1.5 text-xs text-muted-foreground`,"data-testid":`demo-feed-progress-${t.id}`,children:[o&&(0,H.jsx)(Gt,{className:`size-3 animate-spin motion-reduce:animate-none`,"aria-hidden":!0}),(0,H.jsx)(`span`,{className:`truncate`,children:c})]}),u&&(0,H.jsxs)(`p`,{role:`alert`,className:`mt-1.5 flex items-start gap-1.5 text-xs text-destructive`,"data-testid":`demo-feed-error-${t.id}`,children:[(0,H.jsx)(Un,{className:`mt-0.5 size-3 shrink-0`,"aria-hidden":!0}),(0,H.jsx)(`span`,{children:u})]}),(0,H.jsx)(`div`,{className:`mt-3 flex items-center gap-2`,children:i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{f()},disabled:h,className:`inline-flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1 text-xs font-medium text-foreground transition-colors hover:bg-muted disabled:opacity-50`,"data-testid":`demo-feed-sync-${t.id}`,children:[(0,H.jsx)(Gt,{className:`size-3 ${o?`animate-spin motion-reduce:animate-none`:``}`,"aria-hidden":!0}),(0,H.jsx)(`span`,{children:o?`Syncing…`:`Sync now`})]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{p()},disabled:h,className:`inline-flex items-center gap-1 rounded-md border border-destructive/20 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/10 disabled:opacity-40`,"data-testid":`demo-feed-unsubscribe-${t.id}`,title:`Remove package from library`,children:[(0,H.jsx)(ce,{className:`size-3`,"aria-hidden":!0}),(0,H.jsx)(`span`,{children:`Delete`})]})]}):(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{f()},disabled:h,className:`inline-flex items-center gap-1.5 rounded-md bg-foreground px-2.5 py-1 text-xs font-medium text-background transition-colors hover:opacity-90 disabled:opacity-50`,"data-testid":`demo-feed-subscribe-${t.id}`,children:[(0,H.jsx)(Gt,{className:`size-3 ${o?`animate-spin motion-reduce:animate-none`:``}`,"aria-hidden":!0}),(0,H.jsx)(`span`,{children:o?`Syncing…`:`Subscribe & sync`})]})})]})]})}function gY(){let e=Mn(),[t,n]=(0,V.useState)(``),[r,i]=(0,V.useState)(!1),a=(0,V.useRef)(null),o=(0,V.useMemo)(()=>VE(),[]),s=(0,V.useMemo)(()=>{let e=t.trim().toLowerCase();return e?o.filter(t=>t.label.toLowerCase().includes(e)||t.category.toLowerCase().includes(e)||t.sourceLabel.toLowerCase().includes(e)||t.description.toLowerCase().includes(e)):o},[o,t]),c=e=>{if(!a.current)return;let t=a.current.clientWidth*.75;a.current.scrollBy({left:e===`left`?-t:t,behavior:`smooth`})},l=(0,V.useCallback)(()=>{kz.record(Az.libraryOpened)},[]),[u,d]=(0,V.useState)(!0);(0,V.useEffect)(()=>{let e=!1,t=()=>{uD().then(t=>{e||d(t.libraryImported)}).catch(()=>{})};t();let n=ZE(t);return()=>{e=!0,n()}},[r]);let f=(0,V.useCallback)(async()=>{let t=lk(),n=await mk.create({journalDate:t,title:t,rawContent:``});kz.record(Az.noteCreated),e(_O(n.id))},[e]);return(0,H.jsxs)(`section`,{id:`tour-section-community-feeds`,"data-testid":`tour-jump-section`,className:`flex flex-col border-b border-border bg-muted/20 pb-8 xl:pb-12`,"aria-label":`Library and community feeds`,children:[(0,H.jsx)(wq,{index:`00`,before:`Library & `,accentText:`Community Feeds`,after:``,accent:``,blurb:`Subscribe to Markdown repositories and sync while you keep scrolling. Publishers run npx wod build to compile manifests and chunks, then deploy them through GitHub Pages. CrossFit Programming and Dan John 40-Day Program are demo feeds; other packages and workspace shortcuts are available here too.`}),(0,H.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,H.jsxs)(`div`,{className:`relative w-full sm:w-64`,children:[(0,H.jsx)(Bt,{className:`pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`,"aria-hidden":!0}),(0,H.jsx)(`input`,{type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:`Filter packages…`,"data-testid":`package-search-input`,className:`w-full rounded-md border border-border bg-background py-1.5 pl-8 pr-7 text-xs text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary`}),t&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(``),"aria-label":`Clear search`,className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,children:(0,H.jsx)(Te,{className:`size-3.5`})})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>c(`left`),"aria-label":`Previous cards`,className:`flex size-7 items-center justify-center rounded-md border border-border bg-card text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,H.jsx)(rr,{className:`size-4`})}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>c(`right`),"aria-label":`Next cards`,className:`flex size-7 items-center justify-center rounded-md border border-border bg-card text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,H.jsx)(mn,{className:`size-4`})})]})]}),(0,H.jsxs)(`div`,{ref:a,"data-testid":`jump-carousel-track`,className:`mt-6 flex w-full gap-4 overflow-x-auto pb-4 pt-1 snap-x snap-mandatory scroll-smooth`,style:{scrollbarWidth:`thin`},children:[u?(0,H.jsx)(Tt,{to:`/catalogs`,onClick:l,"data-testid":`jump-library`,className:`group ${fY}`,children:(0,H.jsx)(pY,{icon:on,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`})}):(0,H.jsx)(`div`,{"data-testid":`jump-library`,"aria-disabled":`true`,className:`${fY} cursor-not-allowed opacity-60`,children:(0,H.jsx)(pY,{icon:on,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`,note:`0 feeds synchronized`})}),(0,H.jsx)(`button`,{type:`button`,onClick:f,"data-testid":`jump-new-note`,className:`group ${fY}`,children:(0,H.jsx)(pY,{icon:cr,title:`Start your own journal`,description:`Create today's note and log your first workout.`,action:`Create today's note`})}),s.map(e=>(0,H.jsx)(hY,{pkg:e,anyBusy:r,onBusyChange:i},e.id)),s.length===0&&t&&(0,H.jsxs)(`div`,{className:`flex w-64 shrink-0 flex-col items-center justify-center rounded-xl border border-dashed border-border p-6 text-center text-xs text-muted-foreground`,children:[(0,H.jsxs)(`p`,{children:[`No packages match “`,t,`”.`]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(``),className:`mt-2 font-medium text-foreground underline underline-offset-4`,children:`Clear filter`})]})]}),(0,H.jsx)(`p`,{className:`mt-2 font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground/60 xl:text-[11px]`,children:`— or keep scrolling ↓`})]})]})}function _Y(e){let t=Hq.find(e=>e.id===`editor-blank`),n=Hq.find(e=>e.id===`editor-metrics`),r=Hq.find(e=>e.id===`timer-wallclock`),i=Hq.find(e=>e.id===`metrics-e`);return(0,H.jsxs)(`div`,{"data-testid":`tour-flat-stack`,className:`flex flex-col gap-6`,children:[(0,H.jsxs)(`section`,{id:`tour-hero`,"data-testid":`tour-hero`,className:`grid h-[calc(100dvh-65px)] grid-rows-[2fr_3fr] gap-4 px-6 py-4 lg:h-[calc(100dvh-104px)]`,children:[(0,H.jsx)(`div`,{className:`flex min-h-0 items-center justify-center overflow-y-auto`,children:(0,H.jsx)(bq,{})}),(0,H.jsxs)(`div`,{className:`relative min-h-0 overflow-hidden rounded-xl border border-border`,children:[e.sharedBy&&e.onResetShared&&(0,H.jsx)(`button`,{type:`button`,onClick:e.onResetShared,"data-testid":`tour-hero-reset-shared`,className:`absolute right-3 top-3 z-10 rounded-md border border-border bg-background px-3 py-2 text-xs hover:bg-accent`,children:`Reset`}),e.heroContent??(0,H.jsx)(Nq,{doc:e.doc,theme:e.theme,onDocChange:e.onDocChange,onBlocksChange:e.onBlocksChange,onRun:e.onHeroRun??e.onRun})]})]}),(0,H.jsx)(gY,{}),(0,H.jsxs)(`section`,{id:`tour-section-write`,"data-testid":`tour-section-write`,className:`flex flex-col gap-4`,children:[(0,H.jsx)(wq,{index:`01`,before:`Write it in `,accentText:`Markdown`,after:``,accent:_q.editor,blurb:"Freeform Markdown notes, fenced ```time blocks, property and tag suggestions. Everything starts as plain text you can edit."}),(0,H.jsx)(`div`,{"data-testid":`tour-stack-editor`,className:`mx-6 h-[calc((100dvh-65px)*0.6)] overflow-hidden rounded-2xl border border-border shadow-sm lg:h-[calc((100dvh-104px)*0.6)]`,children:(0,H.jsx)(Nq,{doc:e.doc,onDocChange:e.onDocChange,onBlocksChange:e.onBlocksChange,onRun:e.onRun,theme:e.theme})}),t&&(0,H.jsx)(`article`,{"data-testid":`tour-editor-card`,className:`mx-6 rounded-2xl border border-border bg-card p-6`,children:(0,H.jsx)(Wq,{cap:t,onChoice:e.onChoice,onCommand:e.onCommand})}),n&&(0,H.jsx)(`article`,{"data-testid":`tour-editor-metrics-card`,className:`mx-6 rounded-2xl border border-border bg-card p-6`,children:(0,H.jsx)(Wq,{cap:n})})]}),(0,H.jsxs)(`section`,{id:`tour-section-run`,"data-testid":`tour-section-run`,className:`flex flex-col gap-4`,children:[(0,H.jsx)(wq,{index:`02`,before:`Run it as a `,accentText:`Timer`,after:``,accent:_q.timer,blurb:`The script becomes the clock. Step through rounds, cast to the big screen, and pace the room together.`}),r&&(0,H.jsx)(`article`,{"data-testid":`tour-timer-card`,className:`mx-6 rounded-2xl border border-border bg-card p-6`,children:(0,H.jsx)(Wq,{cap:r,onCommand:e.onCommand})}),(0,H.jsx)(`div`,{id:`tour-stack-timer`,"data-testid":`tour-stack-timer`,className:`mx-6 h-[calc((100dvh-65px)*0.6)] overflow-hidden rounded-2xl border border-border lg:h-[calc((100dvh-104px)*0.6)]`,children:(0,H.jsx)(eJ,{block:e.timer.block,autoStart:e.timer.autoStart,onClose:e.timer.onClose,onComplete:e.timer.onComplete,onRuntimeReady:e.timer.onRuntimeReady,onRunStarted:e.timer.onRunStarted,onStart:e.timer.onStart,onReset:e.timer.onReset,externalStop:e.timer.externalStop},e.timer.sessionKey)})]}),(0,H.jsxs)(`section`,{id:`tour-section-own`,"data-testid":`tour-section-own`,className:`flex flex-col gap-4`,children:[(0,H.jsx)(wq,{index:`03`,before:`Own the `,accentText:`Metrics`,after:``,accent:_q.analytics,blurb:`Every movement produces facts. Metrics bind to efforts, accumulating structured workout data on every pass.`}),i&&(0,H.jsx)(`article`,{"data-testid":`tour-metrics-card`,className:`mx-6 rounded-2xl border border-border bg-card p-6`,children:(0,H.jsx)(Wq,{cap:i})}),(0,H.jsx)(`div`,{className:`mx-6 h-[calc((100dvh-65px)*0.6)] overflow-hidden rounded-2xl border border-border lg:h-[calc((100dvh-104px)*0.6)]`,children:e.session?.result?(0,H.jsx)(Fq,{result:e.session.result}):(0,H.jsx)(KJ,{activeStageId:`wql-table`,noteId:e.session?.noteId??null,queryKey:e.session?.queryKey??`q-elapsed`,boardSlug:e.session?.boardSlug??`training-block-review`})})]}),(0,H.jsxs)(`section`,{id:`tour-section-explore`,"data-testid":`tour-section-explore`,className:`flex flex-col gap-4`,children:[(0,H.jsx)(wq,{index:`04`,before:``,accentText:`Explore`,after:` your analytics`,accent:_q.rounds,blurb:`Query what you just did in WQL. Roll up totals, graph volume over time, and build custom dashboards.`}),(0,H.jsx)(BJ,{})]}),e.offeringsSlot,(0,H.jsx)(cY,{wodFiles:e.wodFiles??{},theme:e.theme,chapters:e.chapters,allQuests:e.quests,onRun:e.onChapterRun}),(0,H.jsx)(dY,{quests:e.quests,chapters:e.chapters,questLabels:e.questLabels,onHomeQuestClick:e.onHomeQuestClick})]})}var vY=e=>{let t=Math.max(0,Math.floor(e/1e3));return`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},yY=`wods/examples/home/welcome-1.md`,bY={"qs-tour-timer":`timer-wallclock`,"qs-edit":`timer-wallclock`,"qs-run":`timer-wallclock`,"qs-tour-analytics":`wql-idea`},xY=[`write`,`run`,`own`,`explore`];function SY(e){if(e.length===0)return e;let t=e[0].range[0],n=e[e.length-1].range[1]-t;return e.map(e=>({...e,range:[n>0?(e.range[0]-t)/n:0,n>0?(e.range[1]-t)/n:1]}))}var CY=[{id:`editor-metrics`,range:[.12,.24],screen:`editor`,accent:_q.editor,label:`Every Line Collects Metrics`,source:yY,caption:`Every Line Collects Metrics. Reps, distance & load.`,ring:{key:`editor.wodBlock`,tag:`Line Metrics`}},{id:`editor-run`,range:[.24,.36],screen:`editor`,accent:_q.editor,label:`Press Run to Start`,source:yY,caption:`Press Run to Execute. Launch the working clock.`,ring:{key:`editor.runButton`,tag:`Run Button`}},{id:`timer-wallclock`,range:[.36,.47],screen:`timer`,accent:_q.timer,label:`What Happens When It Runs`,source:yY,caption:`What Happens When It Runs. The script becomes the clock.`,ring:{key:`timer.floor`,tag:`Clock`}},{id:`timer-next`,range:[.47,.57],screen:`timer`,accent:_q.timer,label:`Advance Rounds with Next`,source:yY,caption:`Next Advances the Workout. Every click locks a time.`,ring:{key:`timer.nextButton`,tag:`Next Button`}},{id:`timer-cast`,range:[.57,.65],screen:`timer`,accent:_q.timer,label:`Cast to the Big Screen`,source:yY,caption:`Cast to the Big Screen. Real-time mirror for the gym floor.`,ring:{key:`timer.castButton`,tag:`Cast`}},{id:`wql-idea`,range:[.65,.72],screen:`analytics`,accent:_q.analytics,label:`Query what you just did`,caption:`Query what you just did. Every result is one query away.`,ring:{key:`analytics.vocab`,tag:`WQL elements`}},{id:`wql-table`,range:[.72,.79],screen:`analytics`,accent:_q.analytics,label:`Read it as a list`,caption:`Read it as a list. One aggregator, one metric, one dimension.`,ring:{key:`analytics.table`,tag:`Table list`}},{id:`wql-graphs`,range:[.79,.86],screen:`analytics`,accent:_q.analytics,label:`See it as trends`,caption:`See it as trends. A graph is a rollup away.`,ring:{key:`analytics.graphs`,tag:`Graphs`}},{id:`wql-dashboard`,range:[.86,.93],screen:`analytics`,accent:_q.analytics,label:`Compose a dashboard`,caption:`Compose a dashboard. N queries on one screen.`,ring:{key:`analytics.dashboard`,tag:`Dashboard`}},{id:`wql-live`,range:[.93,1],screen:`analytics`,accent:_q.analytics,label:`It's your data`,caption:`It's your data. Open the Dashboards tab to query anything, your way.`}],wY=[{id:`metrics-e`,range:[0,.34],screen:`analytics`,accent:_q.timer,label:`Everything is an effort`,caption:`Every line tracks an effort from the movement registry.`,ring:{key:`metrics.efforts`,tag:`Efforts`}},{id:`metrics-d`,range:[.34,.67],screen:`analytics`,accent:_q.editor,label:`Measures ride along`,caption:`Reps, load, distance, timed rest — typed micro data points.`,ring:{key:`metrics.data`,tag:`Measures`}},{id:`metrics-c`,range:[.67,1],screen:`analytics`,accent:_q.analytics,label:`They compound`,caption:`Efforts × measures compound into queryable analytics facts.`,ring:{key:`metrics.compound`,tag:`Your data`}}];function TY(e){let t=Object.fromEntries(Hq.map(e=>[e.id,e]));return e.map(e=>t[e.id]).filter(e=>!!e)}function EY({wodFiles:e,theme:t,quests:n,chapters:r,questLabels:i,scroll:a}){let o=eB(`(prefers-reduced-motion: reduce)`),s=jz()?.track;Nz(`/`);let c=(0,V.useMemo)(()=>cF(yY,e),[e]),[l,u]=(0,V.useState)(()=>iq()),d=l?.content??c,f=l?l.by?.trim()||`anonymous`:void 0;(0,V.useEffect)(()=>{let e=e=>{let t=e.detail;t?.content&&(u(t),m(t.content))};return window.addEventListener(`wodwiki:home-shared`,e),()=>window.removeEventListener(`wodwiki:home-shared`,e)},[]);let[p,m]=(0,V.useState)(d),h=(0,V.useRef)(p);h.current=p;let g=(0,V.useRef)([]),_=(0,V.useRef)(!1),[v,y]=(0,V.useState)(null),b=(0,V.useMemo)(()=>(a?.stages??CY).map(e=>({...e,accent:`hsl(var(--primary))`})),[a]),x=(0,V.useMemo)(()=>({write:SY(b.filter(e=>e.screen===`editor`)),run:SY(b.filter(e=>e.screen===`timer`)),own:wY,explore:[{id:`wql-idea`,range:[0,.3],screen:`analytics`,accent:_q.analytics,label:`The WQL vocabulary`,caption:`The whole language fits on one strip.`,ring:{key:`analytics.vocab`,tag:`WQL elements`}},{id:`wql-dashboard`,range:[.3,1],screen:`analytics`,accent:_q.analytics,label:`Seeded dashboards`,caption:`Real boards, range, units, inspect.`,ring:{key:`analytics.dashboard`,tag:`Dashboard`}}]}),[b]),S=(0,V.useMemo)(()=>({write:TY(x.write),run:TY(x.run),own:TY(x.own),explore:TY(x.explore).map((e,t)=>({...e,num:`04${String.fromCharCode(97+t)}`}))}),[x]),C=(0,V.useRef)(null),w=(0,V.useRef)(null),T=(0,V.useRef)(null),E=(0,V.useRef)(null),D=(0,V.useMemo)(()=>({write:C,run:w,own:T,explore:E}),[]),[O,k]=(0,V.useState)(!1),A=(0,V.useCallback)(e=>k(e),[]),[j,M]=(0,V.useState)(!1),N=(0,V.useCallback)(e=>M(e),[]),[P,F]=(0,V.useState)(!1),I=(0,V.useCallback)(e=>F(e),[]),[ee,L]=(0,V.useState)({}),te=(0,V.useRef)(ee);te.current=ee;let R=(0,V.useCallback)(e=>t=>{L(n=>n[e]===t?n:{...n,[e]:t}),pe.current?.(t)},[]),ne=(0,V.useMemo)(()=>({write:R(`write`),run:R(`run`),own:R(`own`),explore:R(`explore`)}),[R]),[re,ie]=(0,V.useState)(null),[ae,oe]=(0,V.useState)(!1),[se,ce]=(0,V.useState)(`tour`),le=se===`hero`,[ue,de]=(0,V.useState)(!1),fe=(0,V.useRef)(!1),pe=(0,V.useRef)(()=>{}),{run:me,recorded:he,pendingResults:ge,start:_e,finalize:ve,reset:ye,end:be}=Vz(),xe=(0,V.useRef)(me);xe.current=me;let Se=(0,V.useRef)(!1),Ce=(0,V.useRef)(!1),we=(0,V.useRef)(null),[Te,Ee]=(0,V.useState)(!1),De=(0,V.useRef)(!1),Oe=(0,V.useRef)(null),[ke,Ae]=(0,V.useState)(HJ),[je,Me]=(0,V.useState)(WJ),[Ne,Pe]=(0,V.useState)(0),[Fe,Ie]=(0,V.useState)(!1),Le=(0,V.useCallback)(()=>{ie(null),y(null),oe(!1),ce(`tour`),de(!1),He(null)},[]),Re=(0,V.useCallback)(()=>{w.current?.scrollToStage(`timer-wallclock`),document.getElementById(`tour-stack-timer`)?.scrollIntoView?.({behavior:`instant`,block:`center`})},[]),[ze,Be]=(0,V.useState)(!1),[Ve,He]=(0,V.useState)(null),Ue=(0,V.useRef)(!1),We=(0,V.useCallback)(async(e,t,n,r)=>{if(!t||fe.current)return!1;fe.current=!0,Ce.current=!1,Se.current=!1,we.current=null,He(t),Pe(e=>e+1),Ie(!0),ie(null),ce(r),de(r===`fullscreen`||r===`hero`);try{await _e(e,t,{pageTitle:`Home`,sectionTitle:n})}catch(e){return console.error(`[HomeTour] failed to persist playground run note:`,e),de(!1),He(null),ND({title:`Could not start workout`,description:`The playground entry could not be saved.`,variant:`destructive`}),!1}finally{fe.current=!1}return!0},[_e]),Ge=(0,V.useCallback)(async()=>{try{await ye(h.current,{pageTitle:`Home`,sectionTitle:`Run`})}catch(e){return console.error(`[HomeTour] failed to reset playground run:`,e),ND({title:`Could not reset`,description:`The previous session is kept — nothing was lost.`,variant:`destructive`}),!1}return Ce.current=!1,Se.current=!1,we.current=null,Pe(e=>e+1),Ie(!1),ie(null),y(null),oe(!1),ce(`tour`),de(!1),!0},[ye]),Ke=(0,V.useCallback)(async()=>{if(De.current=!1,Ee(!1),we.current)try{await ve(we.current,!1),we.current=null}catch(e){console.error(`[HomeTour] retry save failed:`,e),ND({title:`Session still not saved`,description:`The run is kept — try again.`,variant:`destructive`});return}let e=Oe.current;if(Oe.current=null,e)switch(e.kind){case`apply-doc`:_.current=!1,m(e.doc),Le(),Pe(e=>e+1),Ie(!1);break;case`restart`:await We(e.doc,e.block,e.sectionTitle,e.location)&&e.location===`tour`&&Re();break;case`restart-unstarted`:await be(),await We(e.doc,e.block,e.sectionTitle,e.location)&&e.location===`tour`&&Re();break;case`reset`:await Ge()}},[We,Ge,Le,Re,be,ve]),qe=(0,V.useCallback)(e=>{if(!Oe.current){if(!xe.current||Ce.current||!Se.current||we.current){Oe.current=e,Ke();return}Oe.current=e,De.current=!0,Ee(!0)}},[Ke]),Je=(0,V.useRef)(null),Ye=(0,V.useRef)(null);cW(`hero`,Ye);let Xe=(0,V.useRef)(!0),Ze=(0,V.useRef)(le);Ze.current=le;let Qe=(0,V.useCallback)(()=>{Ze.current||qe({kind:`apply-doc`,doc:d})},[d,qe]);(0,V.useEffect)(()=>{let e=Je.current;if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{let t=e.isIntersecting;t&&!Xe.current&&Qe(),Xe.current=t});return t.observe(e),()=>t.disconnect()},[Qe]);let $e=(0,V.useCallback)(()=>{aq(),u(null),qe({kind:`apply-doc`,doc:c})},[c,qe]),[et,tt]=(0,V.useState)(!1),[nt,rt]=(0,V.useState)(!1);(0,V.useEffect)(()=>{if(!o||typeof IntersectionObserver>`u`)return;let e=document.getElementById(`tour-stack-timer`),t=document.getElementById(`tour-section-own`),n=new IntersectionObserver(n=>{for(let r of n)r.target===e&&tt(r.isIntersecting),r.target===t&&rt(r.isIntersecting)});return e&&n.observe(e),t&&n.observe(t),()=>n.disconnect()},[o]);let it=ee.run,at=o?et:(j||ae)&&O&&it!=null&&it.startsWith(`timer-`),[ot,st]=(0,V.useState)(!1);(0,V.useEffect)(()=>{at&&st(!0)},[at]);let ct=(0,V.useRef)(at);(0,V.useEffect)(()=>{se===`tour`&&ot&&!at&&ct.current&&xe.current&&Se.current&&!Ce.current&&qe(null),ct.current=at},[at,ot,qe,se]);let lt=o?nt:P&&ee.own!=null;(0,V.useEffect)(()=>{se===`fullscreen`||!lt||at||!xe.current||Ce.current||!Se.current||De.current||qe(null)},[lt,at,qe,se,ae]),$z({pageRoute:`/`,quests:n,initialSource:d,currentSource:p}),Qz({pageRoute:`/`,quests:n,completedResults:re}),pe.current=lq(`/`,n),oq({pageRoute:`/`,quests:n,running:ze});let ut=(0,V.useCallback)(e=>{m(e),e!==d&&!_.current&&(_.current=!0,s?.(Az.demoEdited))},[d,s]),dt=(0,V.useCallback)(e=>{g.current=e},[]),ft=(0,V.useCallback)(e=>{s?.(Az.demoEdited),qe({kind:`apply-doc`,doc:Vq(e)})},[qe,s]),pt=(0,V.useCallback)((e,t,n,r,i=`tour`)=>{if(n){if(s?.(Az.demoRun),r&&Be(!0),Ue.current=!1,i===`tour`?Re():(i===`fullscreen`||i===`hero`)&&(He(n),ce(i),de(!0),Ie(!0),Pe(e=>e+1),ie(null)),fe.current||Oe.current){Oe.current={kind:`restart`,doc:t,block:n,sectionTitle:e,location:i};return}if(xe.current&&Se.current&&!Ce.current){Oe.current={kind:`restart`,doc:t,block:n,sectionTitle:e,location:i},De.current=!0,Ee(!0);return}if(xe.current&&!Ce.current){Oe.current={kind:`restart-unstarted`,doc:t,block:n,sectionTitle:e,location:i},Ke();return}We(t,n,e,i)}},[We,Ke,Re,s]),mt=(0,V.useCallback)(()=>{pt(`Run`,h.current,g.current[0],!0)},[pt]),ht=(0,V.useCallback)(()=>{pt(`Run`,h.current,g.current[0],!0,`hero`)},[pt]);(0,V.useEffect)(()=>{Ue.current||!at||ue||fe.current||Oe.current||me&&se===`tour`||me&&!Ce.current||(Be(!0),We(h.current,g.current[0]??null,`Run`,`tour`))},[at,ue,me,se,We]);let{setL3Items:gt,scrollToSection:_t}=BD(),vt=(0,V.useCallback)(()=>{qe(null),_t(`tour-section-own`)},[qe,_t]);(0,V.useEffect)(()=>{let e=[{id:`tour-hero`,label:`Welcome`,level:3,action:{type:`scroll`,sectionId:`tour-hero`}},{id:`community-feeds`,label:`Library & Community Feeds`,level:3,action:{type:`scroll`,sectionId:`tour-section-community-feeds`}},{id:`write`,label:`Write it in Markdown`,level:3,action:{type:`scroll`,sectionId:`tour-section-write`}},{id:`run`,label:`Run it as a Timer`,level:3,action:{type:`scroll`,sectionId:`tour-section-run`},secondaryAction:{id:`run-start`,label:`Start the run`,action:{type:`call`,handler:mt}}},{id:`own`,label:`Own the Metrics`,level:3,action:{type:`scroll`,sectionId:`tour-section-own`},...ae?{secondaryAction:{id:`run-stop`,label:`Stop the timer`,action:{type:`call`,handler:vt}},secondaryRunIcon:`stop`}:{}},{id:`explore`,label:`Explore your analytics`,level:3,action:{type:`scroll`,sectionId:`tour-section-explore`}},{id:`offerings`,label:`You Own the Data`,level:3,action:{type:`scroll`,sectionId:`tour-section-offerings`}},{id:`hosted`,label:`Wod-Wiki Hosted`,level:3,action:{type:`scroll`,sectionId:`tour-section-hosted`}},{id:`learn`,label:`Learn the Language`,level:3,action:{type:`scroll`,sectionId:`tour-chapter-picker`}}];return gt(e),()=>gt([])},[gt,mt,vt,ae]);let yt=(0,V.useCallback)((e,t,n)=>{s?.(Az.chapterExampleRun,{chapter:e}),pt(`Chapter ${e}`,n,t,!1,`fullscreen`)},[pt,s]),bt=(0,V.useCallback)((e,t)=>{if(!(Ce.current&&!we.current))return oe(!1),ie(t),(t.logs??[]).length===0?(Ce.current=!0,se===`hero`&&de(!1),Ke()):(Ce.current=!0,ve(t,t.completed).then(()=>(we.current=null,se===`hero`&&de(!1),Ke())).catch(e=>{throw Ce.current=!1,Se.current=!1,we.current=t,De.current=!1,Ee(!1),Oe.current=null,ND({title:`Session not saved`,description:`The run could not be recorded. Nothing was lost — your next action retries the save.`,variant:`destructive`}),e}))},[ve,Ke,se]),xt=(0,V.useCallback)(()=>{C.current?.scrollToStage(`editor-metrics`)},[]),St=(0,V.useCallback)(()=>{de(!1)},[]),Ct=(0,V.useCallback)(()=>{ce(`tour`),Ue.current=!0,qe({kind:`reset`})},[qe]),wt=(0,V.useCallback)(e=>{y(e),Fe&&queueMicrotask(()=>e.handle(new gd(void 0,e.nowProvider)))},[Fe]),Tt=(0,V.useCallback)(()=>{Se.current=!0,oe(!0),Ie(!1)},[]),Et=(0,V.useCallback)((e,t)=>{if(VJ[t]){Ae(t);return}let n=t.startsWith(`board-`)?t.slice(6):t;if(UJ.includes(n)){Me(n);return}t===`try`&&mt()},[mt]),Dt=(0,V.useMemo)(()=>({noteId:me?.noteId??null,queryKey:ke,boardSlug:je}),[me?.noteId,ke,je]),Ot=(0,V.useCallback)(e=>{let t=bY[e];if(t){for(let e of xY)if(x[e].some(e=>e.id===t)){D[e].current?.scrollToStage(t);return}}},[x,D]),kt={sessionKey:Ne,block:se===`tour`&&!Ce.current?me?.block??null:null,autoStart:Fe,externalStop:Te,onClose:xt,onComplete:bt,onRuntimeReady:wt,onRunStarted:Tt,onStart:mt,onReset:Ct},At=le&&re?`result`:`editor`,jt=me?.block??Ve,Mt=ue&&jt&&(0,H.jsx)(SU,{block:jt,autoStart:Fe,externalStop:Te,onRunStarted:Tt,onRuntimeReady:wt,onClose:St,onCompleteWorkout:bt},Ne),Nt=(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Mq,{}),(0,H.jsx)(`p`,{className:`-mt-8 text-center font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground/60 xl:text-[11px]`,children:`— or keep scrolling for more wod wiki examples ↓`})]});return o?(0,H.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,H.jsx)(_Y,{theme:t,wodFiles:e,quests:n,chapters:r,questLabels:i,onHomeQuestClick:Ot,doc:p,onDocChange:ut,onBlocksChange:dt,onRun:mt,onHeroRun:ht,onChapterRun:yt,heroContent:At===`result`&&re?(0,H.jsx)(Fq,{result:re,onDismiss:Le,dismissLabel:`Edit again`}):void 0,onChoice:ft,onCommand:Et,sharedBy:f,onResetShared:$e,timer:kt,session:{...Dt,result:re},offeringsSlot:Nt}),(0,H.jsx)(hG,{}),(0,H.jsx)(Sq,{}),Mt]}):(0,H.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,H.jsx)(`div`,{ref:Je,"aria-hidden":!0,className:`h-px`}),(0,H.jsxs)(`section`,{ref:Ye,id:`tour-hero`,"data-testid":`tour-hero`,className:`relative grid h-[calc(100dvh-65px)] grid-rows-[2fr_3fr] justify-items-center gap-4 px-5 py-4 text-center lg:h-[calc(100dvh-104px)] lg:px-10 xl:gap-8 xl:py-8 2xl:gap-10 2xl:py-10 2xl:px-16`,children:[(0,H.jsx)(`div`,{className:`flex min-h-0 w-full items-center justify-center overflow-y-auto`,children:(0,H.jsx)(bq,{})}),(0,H.jsx)(lW,{gateId:`hero-pane`,segmentId:`hero`,className:`h-full min-h-0 w-full max-w-[720px] xl:max-w-[820px] 2xl:max-w-[920px]`,children:(0,H.jsxs)(tB,{title:At===`result`?vq.metrics:f?f.toLowerCase().startsWith(`shared by`)?f:`shared by: ${f}`:`welcome-1.md`,headerActions:f&&(0,H.jsx)(`button`,{type:`button`,onClick:$e,title:`Reset`,className:`rounded-md border border-border px-2 py-1 text-[10px] transition-colors hover:bg-accent`,"data-testid":`tour-hero-reset-shared`,children:`Reset`}),className:`h-full`,children:[At===`editor`&&(0,H.jsx)(Nq,{doc:p,theme:t,onDocChange:ut,onBlocksChange:dt,onRun:ht}),At===`result`&&re&&(0,H.jsx)(Fq,{result:re,onDismiss:Le,dismissLabel:`Edit again`})]})})]}),(0,H.jsx)(gY,{}),(0,H.jsx)(eY,{ref:C,id:`write`,heightVh:`300vh`,header:(0,H.jsx)(wq,{index:`01`,before:`Write it in `,accentText:`Markdown`,after:``,accent:_q.editor,blurb:"Freeform Markdown notes, fenced ```time blocks, property and tag suggestions. Everything starts as plain text you can edit."}),stages:x.write,captions:S.write,onChoice:ft,onCommand:Et,onActiveStageChange:ne.write,editor:{doc:p,theme:t,onDocChange:ut,onBlocksChange:dt,onRun:mt}}),(0,H.jsx)(eY,{ref:w,id:`run`,heightVh:`300vh`,header:(0,H.jsx)(wq,{index:`02`,before:`Run it as a `,accentText:`Timer`,after:``,accent:_q.timer,blurb:`The script becomes the clock. Step through rounds, cast to the big screen, and pace the room together.`}),stages:x.run,captions:S.run,onCommand:Et,onActiveStageChange:ne.run,onViewportChange:A,onReachedChange:N,timer:kt,tvRuntime:v,tvStageId:`timer-cast`}),(0,H.jsx)(eY,{ref:T,id:`own`,heightVh:`260vh`,header:(0,H.jsx)(wq,{index:`03`,before:`Own the `,accentText:`Metrics`,after:``,accent:_q.analytics,blurb:`Everything you log is an effort carrying measured data points — and together they compound into rich, queryable analytics.`}),stages:x.own,captions:S.own,onCommand:Et,onActiveStageChange:ne.own,onViewportChange:I,session:{...Dt,fixedStage:`wql-table`,result:re}}),(0,H.jsx)(eY,{ref:E,id:`explore`,heightVh:`320vh`,header:(0,H.jsx)(wq,{index:`04`,before:``,accentText:`Explore`,after:` your analytics`,accent:_q.analytics,blurb:`WQL turns your journal into queryable facts: lists, trends, dashboards — every widget one query away from anything you've logged.`}),stages:x.explore,captions:S.explore,onCommand:Et,onActiveStageChange:ne.explore,session:Dt,toastLabel:re?`Stopped at ${vY(re.duration)}. ${ge?`Results not saved`:he?`Results saved`:`Saving results…`}`:null}),(0,H.jsx)(iY,{chapters:r}),Nt,(0,H.jsx)(cY,{wodFiles:e,chapters:r,allQuests:n,theme:t,onRun:yt}),(0,H.jsx)(hG,{}),(0,H.jsx)(Sq,{}),Mt]})}function DY(e){return(0,H.jsx)(dq,{children:(0,H.jsx)(sW,{children:(0,H.jsx)(EY,{...e})})})}function OY({wodFiles:e,theme:t}){let n=$j(),r=eM(`/`),i=(0,V.useMemo)(()=>{let e={};for(let{page:t}of n)for(let n of t.quests)e[n.id]=n.label;return e},[n]);return r?(0,H.jsx)(DY,{wodFiles:e,theme:t,quests:r.quests??[],chapters:r.chapters??[],questLabels:i,scroll:r.scroll}):(0,H.jsx)(`div`,{className:`flex items-center justify-center p-20 text-muted-foreground`,children:`Home canvas content not found (markdown/canvas/routes/home.md)`})}var kY=`idle`,AY=new Set,jY=null,MY=null;function NY(){for(let e of AY)e()}function PY(e){typeof document>`u`||(document.documentElement.dataset.seedState=e)}function FY(e){typeof document>`u`||(e===null?delete document.documentElement.dataset.seedOutcome:document.documentElement.dataset.seedOutcome=e)}PY(kY);function IY(e){kY!==e&&(kY=e,PY(e),NY())}function LY(){jY&&=(clearTimeout(jY),null),MY&&=(MY.close(),null)}function RY(){LY(),FY(null),IY(`preparing`)}function zY(e){switch(FY(e),e){case`busy`:if(kY!==`preparing`)return;typeof BroadcastChannel<`u`&&!MY&&(MY=new BroadcastChannel(Rg),MY.onmessage=e=>{e.data?.kind===`seed-imported`&&(LY(),IY(`ready`))}),jY=setTimeout(()=>{oD().then(zY)},$E);break;case`error`:LY(),IY(`error`);break;default:LY(),IY(`ready`)}}function BY(){return kY===`idle`?`ready`:kY}function VY(e){return AY.add(e),()=>AY.delete(e)}function HY(){return(0,V.useSyncExternalStore)(VY,BY)}var UY=null;function WY(e={}){return UY??=GY(e),UY}async function GY(e){let t=e.sources??tD();await QE(t,e.storage).catch(e=>console.error(`[seedSync] subscription migration failed`,e));let n=e.storage??new DE,r;try{r=await n.getSeedMeta(Bg(`core`))}catch{r=void 0}if(!r||r.seedVersion<=0){RY(),zY(await oD({...e,sources:t,onFirstPaint:()=>zY(`imported`)}));return}zY(`current`),await oD({...e,sources:t}).catch(e=>console.error(`[seedSync] background boot sync failed`,e))}function KY(){let[e,t]=(0,V.useState)(null);return(0,V.useEffect)(()=>{let e=!1,n=()=>{uD().then(n=>{e||t(!n.libraryImported)}).catch(()=>{e||t(!0)})};n();let r=Vv(()=>n()),i=null;if(typeof BroadcastChannel<`u`)try{i=new BroadcastChannel(Rg),i.onmessage=()=>n()}catch{}return()=>{e=!0,r(),i?.close()}},[]),e}function qY({value:e,max:t,label:n,className:r}){let i=Math.max(1,t),a=Math.min(Math.max(e,0),i),o=Math.round(a/i*100),s=(0,V.useRef)(a),[c,l]=(0,V.useState)(!1);return(0,V.useEffect)(()=>{if(a>s.current){l(!0);let e=setTimeout(()=>l(!1),200);return s.current=a,()=>clearTimeout(e)}s.current=a},[a]),(0,H.jsxs)(`div`,{className:U(`w-full`,r),children:[n?(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between text-[11px] font-semibold uppercase tracking-[0.14em] text-brand-deep dark:text-brand-light`,children:[(0,H.jsx)(`span`,{children:n}),(0,H.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[a,`/`,i]})]}):null,(0,H.jsx)(`div`,{role:`progressbar`,"aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":i,"aria-label":n??`Progress`,className:`h-2 w-full overflow-hidden rounded-pill bg-brand/10`,children:(0,H.jsx)(`div`,{className:U(`h-full rounded-pill transition-[width] duration-500 ease-out`,c?`bg-brand-deep`:`bg-brand`),style:{width:`${o}%`}})})]})}function JY(e,t){let n=t??X(e);return n.error?null:n.groupBy?.length?n.groupBy.map(e=>String(e).toLowerCase()):null}function YY(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``)||`default`}function XY(e,t=`date`,n){let r=(Array.isArray(t)?t:[t]).map(e=>String(e).toLowerCase()).filter(Boolean);r.length===0&&r.push(`date`);let i=(e,t)=>{let r=ZY(e,t[0],n);return t.length===1?r:r.flatMap(e=>e.key===`shelf`?[e]:i(e.entries,t.slice(1)).map(t=>({...t,key:`${e.key}/${t.key}`,id:`${e.id}--${t.id}`,label:`${e.label} / ${t.label}`,isToday:e.isToday||t.isToday})))};return i(e,r)}function ZY(e,t,n){let r=t.toLowerCase(),i=RI();if(r===`date`||r===`day`){let t=new Map,r=[],a=[];for(let i of e){let e=i.date??(i.sourceCatalog===`playground`&&i.createdAt&&i.createdAt>9466848e5?new Date(i.createdAt).toISOString().slice(0,10):null);if(n?.shelfVisible&&(i.kind===`session`||e==null))r.push(i);else if(e){let n=t.get(e);n?n.push(i):t.set(e,[i])}else a.push(i)}let o=Array.from(t.keys()).sort((e,t)=>t.localeCompare(e)),s=[];n?.shelfVisible&&r.length>0&&s.push({id:`group-shelf`,key:`shelf`,label:`Catalog Sessions`,entries:r});for(let e of o)s.push({id:`date-group-${e}`,key:e,label:e===i?`Today`:zI(e),isToday:e===i,entries:t.get(e)??[]});return a.length>0&&s.push({id:`group-date-undated`,key:`undated`,label:`Undated`,entries:a}),s}if(r===`week`){let t=new Map,n=[];for(let r of e){if(!r.date){n.push(r);continue}let[e,i,a]=r.date.split(`-`).map(Number),o=new Date(Date.UTC(e,i-1,a)),s=o.getUTCDay(),c=o.getUTCDate()-s+(s===0?-6:1),l=new Date(Date.UTC(e,i-1,c)),u=l.toISOString().slice(0,10),d=`Week of ${l.toLocaleDateString(`en`,{month:`short`,day:`numeric`,year:`numeric`,timeZone:`UTC`})}`,f=t.get(u);f?f.entries.push(r):t.set(u,{label:d,entries:[r]})}let r=Array.from(t.keys()).sort((e,t)=>t.localeCompare(e)).map(e=>({id:`group-week-${e}`,key:e,label:t.get(e).label,entries:t.get(e).entries}));return n.length>0&&r.push({id:`group-week-undated`,key:`undated`,label:`Undated`,entries:n}),r}if(r===`month`){let t=new Map,n=[];for(let r of e){if(!r.date){n.push(r);continue}let e=r.date.slice(0,7),[i,a]=e.split(`-`).map(Number),o=new Date(Date.UTC(i,a-1,1)).toLocaleDateString(`en`,{month:`long`,year:`numeric`,timeZone:`UTC`}),s=t.get(e);s?s.entries.push(r):t.set(e,{label:o,entries:[r]})}let r=Array.from(t.keys()).sort((e,t)=>t.localeCompare(e)).map(e=>({id:`group-month-${e}`,key:e,label:t.get(e).label,entries:t.get(e).entries}));return n.length>0&&r.push({id:`group-month-undated`,key:`undated`,label:`Undated`,entries:n}),r}if(r===`year`){let t=new Map,n=[];for(let r of e){if(!r.date){n.push(r);continue}let e=r.date.slice(0,4),i=t.get(e);i?i.push(r):t.set(e,[r])}let r=Array.from(t.keys()).sort((e,t)=>t.localeCompare(e)).map(e=>({id:`group-year-${e}`,key:e,label:e,entries:t.get(e)??[]}));return n.length>0&&r.push({id:`group-year-undated`,key:`undated`,label:`Undated`,entries:n}),r}if(r===`discipline`){let t=new Map;for(let n of e){let e=n.effort?.discipline||n.tags?.find(e=>[`strength`,`gymnastics`,`cardio`,`running`,`rowing`,`weightlifting`,`olympic-weightlifting`].includes(e.toLowerCase()))||`General`,r=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),i=t.get(r);i?i.push(n):t.set(r,[n])}let n=[`Strength`,`Gymnastics`,`Cardio`,`Running`,`Rowing`,`Weightlifting`];return Array.from(t.keys()).sort((e,t)=>{let r=n.indexOf(e),i=n.indexOf(t);return r!==-1&&i!==-1?r-i:r===-1?i===-1?e.localeCompare(t):1:-1}).map(e=>({id:`group-discipline-${YY(e)}`,key:e,label:e,entries:t.get(e)??[]}))}if(r===`origin`){let t=new Map;for(let n of e){let e=n.effort?.registrySource===`bundled`?`Bundled Standards`:`Custom Movements`,r=t.get(e);r?r.push(n):t.set(e,[n])}return Array.from(t.entries()).map(([e,t])=>({id:`group-origin-${YY(e)}`,key:e,label:e,entries:t}))}if(r===`source`){let t=new Map;for(let n of e){let e=n.sourceCatalog||`Other`,r=e.charAt(0).toUpperCase()+e.slice(1),i=t.get(r);i?i.push(n):t.set(r,[n])}return Array.from(t.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({id:`group-source-${YY(e)}`,key:e,label:e,entries:t}))}if(r===`kind`||r===`type`){let t=new Map;for(let n of e){let e=n.kind.charAt(0).toUpperCase()+n.kind.slice(1)+`s`,r=t.get(e);r?r.push(n):t.set(e,[n])}return Array.from(t.entries()).map(([e,t])=>({id:`group-kind-${YY(e)}`,key:e,label:e,entries:t}))}if(!Af.includes(r)){let t=new Map;for(let n of e){let e=n.typedTags?.find(e=>e.type?.toLowerCase()===r)?.label??`Unassigned`,i=t.get(e);i?i.push(n):t.set(e,[n])}return Array.from(t.entries()).map(([e,t])=>({id:`group-property-${YY(r)}-${YY(e)}`,key:e,label:e,entries:t}))}let a=new Map;for(let t of e){let e=t.tags?.[0]?`#${t.tags[0]}`:`Untagged`,n=a.get(e);n?n.push(t):a.set(e,[t])}return Array.from(a.entries()).map(([e,t])=>({id:`group-tag-${YY(e)}`,key:e,label:e,entries:t}))}var QY={stream:`cards`,table:`rows`},$Y=`wodwiki.viewSettings.v1`,eX={"/sessions":`/results`,"/feeds":`/collections`},tX=new yv($Y);function nX(e,t){return{level:e,layout:t??`cards`,visibleFields:nF(e),groupBy:void 0}}function rX(e,t,n=tX,r){let i=nX(t,r),a=e.startsWith(`/`)?e:`/${e}`,o=eX[a],s=n.get(a,{alias:o});if(!s)return i;let c=typeof s.layout==`string`?s.layout:``,l=c===`cards`||c===`rows`||c===`feed`?c:QY[c]??`cards`,u=new Set(tF(t).map(e=>e.id)),d=Array.isArray(s.visibleFields)?s.visibleFields.filter(e=>typeof e==`string`&&u.has(e)):i.visibleFields,f=typeof s.groupBy==`string`?s.groupBy:void 0;return{level:t,layout:l,visibleFields:d.length>0?d:i.visibleFields,groupBy:f}}function iX(e,t,n=tX){let r=e.startsWith(`/`)?e:`/${e}`;n.set(r,{level:t.level,layout:t.layout,visibleFields:t.visibleFields,groupBy:t.groupBy})}function aX(e,t,n=tX){let r=e.startsWith(`/`)?e:`/${e}`,i=eX[r];return n.remove(r,i),nX(t)}function oX(e,t,n){let[r,i]=(0,V.useState)(()=>rX(e,t,tX,n));(0,V.useEffect)(()=>{i(rX(e,t,tX,n))},[e,t,n]);let a=(0,V.useCallback)(t=>{i(n=>{let r=t(n);return iX(e,r),r})},[e]);return{settings:r,setLayout:(0,V.useCallback)(e=>{a(t=>({...t,layout:e}))},[a]),toggleField:(0,V.useCallback)(e=>{a(t=>{let n=new Set(t.visibleFields);return n.has(e)?n.delete(e):n.add(e),{...t,visibleFields:Array.from(n)}})},[a]),setVisibleFields:(0,V.useCallback)(e=>{a(t=>({...t,visibleFields:e}))},[a]),setGroupBy:(0,V.useCallback)(e=>{a(t=>({...t,groupBy:e}))},[a]),resetSettings:(0,V.useCallback)(()=>{let n=aX(e,t);i(n)},[e,t])}}function sX(e,t=200){let[n,r]=(0,V.useState)(t),i=(0,V.useRef)(null);(0,V.useEffect)(()=>{r(t)},[e,t]);let a=n<e.length,o=(0,V.useCallback)(t=>r(n=>Math.max(n,Math.min(Math.max(t,0),e.length))),[e.length]);return(0,V.useEffect)(()=>{let n=i.current;if(!n||!a)return;let o=new IntersectionObserver(n=>{n.some(e=>e.isIntersecting)&&r(n=>Math.min(n+t,e.length))},{rootMargin:`400px`});return o.observe(n),()=>o.disconnect()},[a,e.length,t]),{visible:e.slice(0,n),hasMore:a,sentinelRef:i,total:e.length,growTo:o}}function cX(e,t){let n=X(e);return n.error||!ap(n)?e:Jp({...n,metric:t})}function lX(e){let t=X(e);return t.error?e:Jp({...t,window:void 0})}function uX(e){let t=X(e);return t.error?e:Jp({...t,filters:t.filters.filter(e=>e.key===`source`)})}function dX(e,t){let n=X(e);return n.error?e:Jp({...n,groupBy:[t]})}function fX(e){return e.kind===`session`&&!e.sourceItem?!1:e.kind===`note`||e.kind===`session`||e.kind===`post`}async function pX(e){if(e.wodBlock?.content.trim())return e.wodBlock.content;let t=await mk.resolve(e.id),n=NI(t&&typeof t==`object`&&`rawContent`in t?String(t.rawContent??``):``),r=n.find(e=>e.dialect===`time`)??n[0];if(!r)throw Error(`No runnable workout block in this entry.`);return r.script}function mX(e,t){return{id:e.wodBlock?.blockId??e.block?.blockId??C(),contentId:e.wodBlock?.blockContentId??e.blockContentId,dialect:`time`,startLine:0,endLine:t.split(`
174
+ `).length,content:t,state:`idle`,widgetIds:{},version:1,createdAt:Date.now()}}async function hX(e,t){let n=await pX(e),r=mX(e,n),i=C();if(GI(e)){let n=await mk.getById(e.id),a=e.wodBlock||e.block?n.blocks?.[r.id]:Object.values(n.blocks??{}).find(e=>e.kind===`wod`);if(!a)throw Error(`The selected saved workout is unavailable.`);SK.set(i,{block:{...r,id:a.id},noteId:e.id,origin:`playground`,returnTo:WI(e)}),t(SO(i));return}let a=await lK({workoutName:e.title,category:e.sourceCatalog,sourceNoteLabel:e.subtitle??e.title,sourceNotePath:WI(e),wodContent:n}),o=Object.values(a.blocks??{}).find(e=>e.kind===`wod`);if(!o)throw Error(`The saved journal workout is unavailable.`);SK.set(i,{block:{...r,id:o.id},noteId:a.id}),t(vO(a.journalDate??``,i))}var gX={note:Ye,session:vn,post:pt,effort:ne,result:Ze,segment:Ce,event:v,dashboard:_e,equipment:D},_X={note:`Note`,session:`Session`,post:`Post`,effort:`Effort`,result:`Result`,segment:`Segment`,event:`Event`,dashboard:`Dashboard`,equipment:`Equipment`},vX={note:`bg-primary/10 text-primary group-hover:bg-primary/20`,session:`bg-amber-500/10 text-amber-600 group-hover:bg-amber-500/20`,post:`bg-violet-500/10 text-violet-600 group-hover:bg-violet-500/20`,effort:`bg-emerald-500/10 text-emerald-600 group-hover:bg-emerald-500/20`,result:`bg-sky-500/10 text-sky-600 group-hover:bg-sky-500/20`,segment:`bg-indigo-500/10 text-indigo-600 group-hover:bg-indigo-500/20`,event:`bg-indigo-500/10 text-indigo-600 group-hover:bg-indigo-500/20`,dashboard:`bg-cyan-500/10 text-cyan-600 group-hover:bg-cyan-500/20`,equipment:`bg-orange-500/10 text-orange-600 group-hover:bg-orange-500/20`};function yX({entry:e,leading:t,actions:n,dateLabel:r,visibleFieldIds:i,tone:a=`secondary`,onAddToToday:o,onRunStart:s}){let c=Mn(),l=e.kind===`note`?e.sourceCatalog:void 0,u=l===`playground`?N:l===`guides`?h:gX[e.kind],d=l===`playground`?`Playground`:l===`guides`?`Guide`:_X[e.kind],f=a===`primary`,p=KI(e),m=WI(e),g=i?new Set(i):null,_=!g||g.has(`date`),v=!g||g.has(`catalog`)||g.has(`protocol`)||g.has(`elapsedTime`)||g.has(`splitDuration`)||g.has(`discipline`)||g.has(`met`)||g.has(`canonicalSlug`),y=!g||g.has(`excerpt`)||g.has(`movements`)||g.has(`tags`)||g.has(`aliases`);return(0,H.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>c(WI(e)),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),c(WI(e)))},className:`flex items-center gap-4 px-6 py-3.5 hover:bg-muted/40 transition-colors text-left group w-full cursor-pointer ${f?`bg-primary/[0.025]`:``}`,"data-testid":`library-row-${e.kind}`,children:[t,(0,H.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl flex items-center justify-center transition-colors ${vX[e.kind]}`,children:(0,H.jsx)(u,{className:`size-4`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-bold text-foreground min-w-0 basis-full sm:basis-auto sm:truncate`,children:e.title}),e.block&&(0,H.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-widest text-sky-600 border border-sky-500/40 bg-sky-500/10 rounded-full px-1.5 py-0.5`,"data-testid":`library-row-block-type`,children:e.block.dataType}),(0,H.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-widest text-muted-foreground/60 border border-border rounded-full px-1.5 py-0.5`,children:d}),e.execution?.effortSlug&&(0,H.jsx)(Tt,{to:jO(e.execution.effortSlug),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),"data-testid":`library-row-effort-link`,className:`text-[9px] font-bold tracking-wide text-primary/80 hover:text-primary bg-primary/10 hover:bg-primary/20 border border-primary/20 rounded-full px-2 py-0.5 transition-colors shrink-0`,title:`View movement history for ${e.detail??e.execution.effortSlug}`,children:e.detail??e.execution.effortSlug}),p&&(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,H.jsx)(Tt,{to:m,"data-testid":`library-row-details-link`,className:`text-[9px] font-bold tracking-wide text-muted-foreground hover:text-foreground bg-muted/60 hover:bg-muted border border-border rounded-full px-2 py-0.5 transition-colors`,title:`View catalog details`,children:`Details`}),(0,H.jsx)(Tt,{to:p,"data-testid":`library-row-feed-link`,className:`text-[9px] font-bold tracking-wide text-primary/80 hover:text-primary bg-primary/10 hover:bg-primary/20 border border-primary/20 rounded-full px-2 py-0.5 transition-colors`,title:`View feed`,children:`Feed`})]}),e.subtitle&&v&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60 truncate`,children:e.subtitle})]}),y&&(e.block?(0,H.jsx)(`div`,{className:`mt-0.5`,"data-testid":`library-row-block-preview`,children:e.block.preview.map((e,t)=>(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate font-mono`,children:e},t))}):e.detail?(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate mt-0.5`,children:e.detail}):null)]}),r&&_&&(0,H.jsx)(`span`,{className:`flex-shrink-0 text-[10px] text-muted-foreground/70 tabular-nums`,"data-testid":`library-row-date`,children:r}),n??(0,H.jsx)(bX,{entry:e,onAddToToday:o,onRunStart:s})]})}function bX({entry:e,onAddToToday:t,onRunStart:n}){let r=Mn(),i=qI(e),a=KI(e),o=JI(e)&&!!t,s=fX(e)&&!!n;return(0,H.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,onClick:e=>e.stopPropagation(),children:[(0,H.jsx)(xX,{title:a?`Details`:`Open`,testId:`action-open`,onClick:()=>r(WI(e)),children:(0,H.jsx)(sr,{className:`size-3.5`})}),a&&(0,H.jsx)(xX,{title:`Feed`,testId:`action-feed`,onClick:()=>r(a),children:(0,H.jsx)(vn,{className:`size-3.5`})}),o&&(0,H.jsx)(xX,{title:`Add to today`,testId:`action-add`,onClick:()=>t?.(e),children:(0,H.jsx)(ft,{className:`size-3.5`})}),s&&(0,H.jsx)(xX,{title:`Run`,testId:`action-run`,onClick:()=>n?.(e),children:(0,H.jsx)(sr,{className:`size-3.5`})}),i&&(0,H.jsx)(xX,{title:`Compare`,testId:`action-compare`,onClick:()=>r(i),children:(0,H.jsx)(Pn,{className:`size-3.5`})})]})}function xX({title:e,testId:t,onClick:n,children:r}){return(0,H.jsx)(`button`,{type:`button`,title:e,onClick:n,"data-testid":t,className:`size-8 rounded-lg flex items-center justify-center text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors`,children:r})}function SX({entries:e,level:t,visibleFieldIds:n,onRowClick:r,emptyMessage:i=`No entries to display`,className:a=``,stickyHeaderTop:o}){let s=Mn(),c=(0,V.useMemo)(()=>t||(e.length>0?QP(e[0]):`note`),[t,e]),l=(0,V.useMemo)(()=>tF(c),[c]),u=(0,V.useMemo)(()=>{let e=new Set(n??nF(c));return l.filter(t=>e.has(t.id))},[l,n,c]),d=e=>{r?r(e):s(WI(e))},[f,p]=(0,V.useState)(null),[m,h]=(0,V.useState)(`asc`),g=e=>{f===e?h(e=>e===`asc`?`desc`:`asc`):(p(e),h(`asc`))},_=(0,V.useMemo)(()=>{if(!f)return e;let t=l.find(e=>e.id===f);return t?[...e].sort((e,n)=>{let r=t.getValue(e),i=t.getValue(n);if(r==null&&i==null)return 0;if(r==null)return m===`asc`?1:-1;if(i==null)return m===`asc`?-1:1;if(typeof r==`number`&&typeof i==`number`)return m===`asc`?r-i:i-r;if(Array.isArray(r)&&Array.isArray(i)){let e=r.join(`, `),t=i.join(`, `);return m===`asc`?e.localeCompare(t):t.localeCompare(e)}let a=String(r),o=String(i);return m===`asc`?a.localeCompare(o):o.localeCompare(a)}):e},[e,f,m,l]);return e.length===0?(0,H.jsx)(`div`,{className:`w-full py-16 text-center text-sm text-muted-foreground ${a}`,"data-testid":`property-table-empty`,children:i}):(0,H.jsx)(`div`,{className:`w-full border-y border-border bg-card/50 ${o===void 0?`overflow-x-auto`:`overflow-x-clip`} ${a}`,"data-testid":`property-table`,children:(0,H.jsxs)(`table`,{className:`w-full text-left border-collapse text-xs`,children:[(0,H.jsx)(`thead`,{className:o===void 0?void 0:`sticky z-10`,style:o===void 0?void 0:{top:`${o}px`},children:(0,H.jsx)(`tr`,{className:`border-b border-border`,children:u.map(e=>{let t=e.align===`right`?`text-right`:e.align===`center`?`text-center`:`text-left`;return(0,H.jsx)(`th`,{scope:`col`,onClick:()=>g(e.id),className:`px-4 py-3 font-semibold uppercase tracking-wider text-[11px] text-muted-foreground whitespace-nowrap border-b border-border cursor-pointer select-none hover:text-foreground transition-colors group/th ${o===void 0?`bg-muted/30`:`bg-muted/95 backdrop-blur-sm`} ${t}`,"data-testid":`property-table-header-${e.id}`,children:(0,H.jsxs)(`div`,{className:`inline-flex items-center gap-1.5 ${t===`text-right`?`justify-end`:t===`text-center`?`justify-center`:`justify-start`}`,children:[(0,H.jsx)(`span`,{children:e.label}),f===e.id?(0,H.jsx)(`span`,{className:`text-primary font-bold text-xs`,"aria-label":m===`asc`?`sorted ascending`:`sorted descending`,children:m===`asc`?`↑`:`↓`}):(0,H.jsx)(`span`,{className:`opacity-0 group-hover/th:opacity-40 text-muted-foreground text-[10px]`,"aria-hidden":`true`,children:`↕`})]})},e.id)})})}),(0,H.jsx)(`tbody`,{className:`divide-y divide-border/60`,children:_.map(e=>{let t=KI(e),n=WI(e);return(0,H.jsx)(`tr`,{role:`button`,tabIndex:0,onClick:()=>d(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),d(e))},className:`hover:bg-muted/40 transition-colors cursor-pointer group`,"data-testid":`property-table-row-${e.id}`,children:u.map(r=>{let i=r.getValue(e),a=r.formatValue(i,e),o=r.align===`right`?`text-right tabular-nums`:r.align===`center`?`text-center`:`text-left`;return(0,H.jsx)(`td`,{className:`px-4 py-3 whitespace-nowrap text-foreground/90 ${o}`,"data-testid":`property-table-cell-${r.id}`,children:r.id===`pacingTier`&&e.execution?.effortSlug?(0,H.jsx)(Tt,{to:jO(e.execution.effortSlug),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),"data-testid":`property-table-effort-link`,className:`inline-flex items-center gap-1 rounded px-2 py-0.5 text-[11px] font-medium bg-primary/10 text-primary hover:bg-primary/20 border border-primary/20 transition-colors`,title:`View movement history for ${e.detail??e.execution.effortSlug}`,children:a}):r.id===`title`||r.id===`label`?(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`font-medium text-foreground group-hover:text-primary transition-colors`,children:a}),t&&(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 ml-auto`,onClick:e=>e.stopPropagation(),children:[(0,H.jsx)(Tt,{to:n,"data-testid":`property-table-details-link`,className:`rounded px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground hover:text-foreground bg-muted/60 hover:bg-muted border border-border transition-colors`,title:`View catalog details`,children:`Details`}),(0,H.jsx)(Tt,{to:t,"data-testid":`property-table-feed-link`,className:`rounded px-1.5 py-0.5 text-[10px] font-semibold bg-primary/10 text-primary hover:bg-primary/20 border border-primary/20 transition-colors`,title:`View feed`,children:`Feed`})]})]}):a},r.id)})},e.id)})})]})})}var CX={note:Ye,session:vn,post:Ye,effort:ne,result:Ze,segment:Ce,event:v,dashboard:_e,equipment:D},wX={note:`Note`,session:`Session`,post:`Post`,effort:`Effort`,result:`Result`,segment:`Segment`,event:`Event`,dashboard:`Dashboard`,equipment:`Equipment`},TX=8;function EX({entry:e}){let t=e.execution;if(!t)return null;let n=[];return t.elapsedMs!=null&&n.push(zN(t.elapsedMs)),t.reps!=null&&n.push(`${t.reps} reps`),t.loadLbs!=null&&n.push(`${t.loadLbs} lb`),t.distanceMeters!=null&&n.push(`${(t.distanceMeters/1e3).toFixed(2)} km`),t.tis!=null&&n.push(`TIS ${t.tis}`),n.length===0?null:(0,H.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,"data-testid":`stream-feed-metrics`,children:n.map(e=>(0,H.jsx)(`span`,{className:`rounded-full bg-muted/70 border border-border/60 px-2 py-0.5 text-[10px] font-bold tabular-nums text-muted-foreground`,children:e},e))})}function DX({entry:e}){let[t,n]=(0,V.useState)(!1),r=e.wodBlock?.content.trim(),i=r?r.split(`
175
+ `):e.excerpt??e.block?.preview??[],a=i.length>TX,o=t||!a?i:i.slice(0,TX);return i.length===0&&!e.detail?null:(0,H.jsxs)(`div`,{className:`mt-1.5`,"data-testid":`stream-feed-preview`,children:[i.length>0&&(0,H.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-muted-foreground ${a&&!t?`max-h-40 overflow-hidden`:``}`,children:o.join(`
176
+ `)}),i.length===0&&e.detail&&(0,H.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e.detail}),a&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(e=>!e),"data-testid":`stream-feed-preview-toggle`,className:`mt-1 min-h-[44px] px-2 -ml-2 text-[10px] font-black uppercase tracking-widest text-primary hover:text-primary/80 transition-colors`,children:t?`Show less`:`Show more (${i.length-TX} lines)`})]})}function OX({groups:e,batch:t,onRunEntry:n,onSendToPlayground:r,stickyOffset:i}){return(0,H.jsxs)(`div`,{className:`flex-1 divide-y divide-border/40`,"data-testid":`stream-feed`,children:[e.map(e=>(0,H.jsxs)(`section`,{id:e.id,"data-testid":`stream-feed-group-${e.key}`,children:[(0,H.jsx)(OP,{top:i,icon:(0,H.jsx)(pt,{className:`size-3 shrink-0 text-muted-foreground`}),label:e.label,badge:e.isToday?(0,H.jsx)(`span`,{className:`shrink-0 rounded-full bg-primary/10 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-primary`,children:`Today`}):void 0,meta:`${e.entries.length} ${e.entries.length===1?`entry`:`entries`}`}),(0,H.jsx)(`div`,{className:`divide-y divide-border/30`,children:e.entries.map(e=>{let t=e.kind===`note`?e.sourceCatalog:void 0,i=t===`playground`?N:t===`guides`?h:CX[e.kind],a=t===`playground`?`Playground`:t===`guides`?`Guide`:wX[e.kind],o=WI(e),s=KI(e),c=!GI(e)&&(e.kind===`note`||e.kind===`session`||e.kind===`post`);return(0,H.jsx)(`article`,{"data-testid":`stream-feed-item`,className:`px-6 py-4`,children:(0,H.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,H.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl bg-primary/10 flex items-center justify-center`,children:(0,H.jsx)(i,{className:`size-4 text-primary`})}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-bold text-foreground min-w-0 basis-full sm:basis-auto sm:truncate`,children:(0,H.jsx)(Tt,{to:o,className:`hover:text-primary transition-colors`,children:e.title})}),(0,H.jsx)(`span`,{className:`text-[9px] font-black uppercase tracking-widest text-muted-foreground/60 border border-border rounded-full px-1.5 py-0.5`,children:a}),e.subtitle&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/70 truncate`,children:e.subtitle})]}),(0,H.jsx)(DX,{entry:e}),(0,H.jsx)(EX,{entry:e}),(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,H.jsx)(Tt,{to:o,"data-testid":`stream-feed-open`,className:`inline-flex min-h-[44px] items-center rounded-full border border-border px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground hover:text-primary hover:border-primary/50 transition-colors`,children:s?`Details`:`Open`}),s&&(0,H.jsxs)(Tt,{to:s,"data-testid":`stream-feed-collection-feed`,className:`inline-flex min-h-[44px] items-center gap-1.5 rounded-full bg-primary/10 border border-primary/30 px-3 text-[10px] font-black uppercase tracking-widest text-primary hover:bg-primary/20 transition-colors`,children:[(0,H.jsx)(vn,{className:`size-3`}),`Feed`]}),fX(e)&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(e),"data-testid":`stream-feed-run`,className:`inline-flex min-h-[44px] items-center gap-1.5 rounded-full bg-primary/10 border border-primary/30 px-3 text-[10px] font-black uppercase tracking-widest text-primary hover:bg-primary/20 transition-colors`,children:[(0,H.jsx)(sr,{className:`size-3`}),`Run`]}),c&&r&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>r(e),"data-testid":`stream-feed-playground`,className:`inline-flex min-h-[44px] items-center gap-1.5 rounded-full border border-border px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground hover:text-primary hover:border-primary/50 transition-colors`,children:[(0,H.jsx)(xt,{className:`size-3`}),`Playground`]})]})]})]})},e.id)})})]},e.id)),t.hasMore&&(0,H.jsxs)(`div`,{ref:t.sentinelRef,className:`px-6 py-4 text-center text-xs text-muted-foreground/60`,"data-testid":`stream-feed-load-more`,children:[`Loading more — `,t.total-t.visible.length,` remaining…`]})]})}function kX(e,t,n){return{journalDate:n,title:e.title,rawContent:t,sourceId:e.sourceId,type:`journal`}}var AX=/\[([^\]]*)\]\((:[^)]*)\)!/g;function jX(e){let t=e.trim();try{return decodeURIComponent(t)}catch{return t}}function MX(e){let t=jX(e);return t.startsWith(`:`)&&!X(t).error}function NX(e){let t=[],n=0;for(let r of e.matchAll(AX)){let i=r.index??0,a=jX(r[2]);MX(a)&&(i>n&&t.push({kind:`markdown`,text:e.slice(n,i)}),t.push({kind:`query`,query:a.trim(),heading:r[1]}),n=i+r[0].length)}n<e.length&&t.push({kind:`markdown`,text:e.slice(n)});let r=[];for(let e of t){let t=r[r.length-1];e.kind===`markdown`&&t?.kind===`markdown`?t.text+=e.text:r.push(e)}return r}function PX(e){return e.some(e=>e.kind===`query`)}var FX=`9999-12-31`;function IX(e,t){return(e.date??FX).localeCompare(t.date??FX)||e.title.localeCompare(t.title,void 0,{numeric:!0,sensitivity:`base`})}function LX(e){let t=new Date(`${e}T12:00:00`);return Number.isNaN(t.getTime())?e:t.toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`,year:`numeric`})}function RX({query:e,heading:t,onAddToToday:n,onRunStart:r}){let[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(null);(0,V.useEffect)(()=>{let t=!1;return a(null),s(null),XN.query(e).then(e=>{t||a([...e].sort(IX))}).catch(e=>{t||s(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e]);let c=(0,V.useMemo)(()=>{if(!i)return null;let t=X(e);if(t.error||!(`groupBy`in t)||!t.groupBy?.includes(`date`))return null;let n=new Map;for(let e of i){let t=e.date??``,r=n.get(t);r?r.push(e):n.set(t,[e])}return[...n.entries()]},[i,e]);if(o)return(0,H.jsxs)(`p`,{className:`my-3 text-xs text-destructive`,"data-testid":`readme-query-error`,children:[`Query failed: `,o]});if(i===null)return(0,H.jsx)(`div`,{className:`my-3 text-xs text-muted-foreground/60`,"data-testid":`readme-query-loading`,children:`Loading…`});if(i.length===0)return(0,H.jsx)(`p`,{className:`my-3 text-xs text-muted-foreground/60`,"data-testid":`readme-query-empty`,children:`No entries match this query.`});let l=e=>(0,H.jsx)(yX,{entry:e,onAddToToday:n,onRunStart:r},e.id);return(0,H.jsxs)(`div`,{className:`my-3 not-prose`,"data-testid":`readme-query-block`,children:[t&&(0,H.jsx)(`p`,{className:`mt-4 mb-1 text-sm font-bold text-foreground`,"data-testid":`readme-query-heading`,children:t}),c?c.map(([e,t])=>(0,H.jsxs)(`div`,{className:`mt-3`,"data-testid":`readme-query-date-group`,children:[(0,H.jsx)(`p`,{className:`mb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:e?LX(e):`Undated`}),(0,H.jsx)(`div`,{className:`divide-y divide-border/40`,children:t.map(l)})]},e||`undated`)):(0,H.jsx)(`div`,{className:`divide-y divide-border/40`,children:i.map(l)})]})}var zX=new qT,BX=[{id:`date`,label:`Date`},{id:`week`,label:`Week`},{id:`month`,label:`Month`},{id:`year`,label:`Year`},{id:`tag`,label:`Tags`},{id:`type`,label:`Type`},{id:`discipline`,label:`Discipline`},{id:`source`,label:`Source`},{id:`origin`,label:`Origin`}];function VX({batch:e,testId:t=`stream-load-more`}){return e.hasMore?(0,H.jsxs)(`div`,{ref:e.sentinelRef,className:`px-6 py-4 text-center text-xs text-muted-foreground/60`,"data-testid":t,children:[`Loading more — `,e.total-e.visible.length,` remaining…`]}):null}var HX=150;function UX(e){switch(e.phase){case`checking`:return`Checking the community library…`;case`fetching`:return`Downloading ${e.chunkId??`library`}…`;case`applying`:return`Importing ${e.chunkId??`library`}…`;case`committed`:return`Committed ${e.chunkId??`chunk`}`;case`finalizing`:return`Finalizing checkpoints…`;case`finished`:return e.error??`Done`}}function WX({error:e,target:t,matched:n,total:r,loading:i,applied:a,ignored:o,advisories:s,groupDims:c,groupingSource:l}){return(0,H.jsxs)(`div`,{role:`status`,"data-testid":`stream-query-status`,className:`flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[11px] text-muted-foreground`,children:[e?(0,H.jsx)(`span`,{className:`font-semibold text-destructive`,children:`Invalid query — showing previous results`}):t?(0,H.jsxs)(`span`,{className:`font-mono`,children:[`:`,t]}):null,(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,H.jsxs)(`span`,{"data-testid":`stream-query-counts`,className:i?`motion-safe:animate-pulse`:void 0,children:[n,` of `,r]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,H.jsxs)(`span`,{"data-testid":`stream-query-filters`,children:[a,` applied`,o>0?`, ${o} ignored`:``]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,H.jsxs)(`span`,{children:[`by `,c.join(`, `),` `,(0,H.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[`(`,l,`)`]})]}),s.map(e=>(0,H.jsx)(`p`,{className:`w-full break-words text-amber-700 dark:text-amber-400`,children:e},e))]})}function GX({profile:e,actions:t,queryEngine:n,onAddToToday:i,registerStreamDraft:a}){let o=Mn(),s=zt(),c=HY(),l=KY(),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null),[g,_]=(0,V.useState)(null),{query:v,setQuery:y,urlQueryError:b}=GD({defaultQuery:()=>e.defaultWql,legacy:e.legacy});(0,V.useEffect)(()=>a?.(()=>v),[a,v]);let{settings:x,setLayout:S,toggleField:C,setGroupBy:w}=oX(e.route,e.level,e.defaultLayout),[T,E]=(0,V.useState)([]),[D,O]=(0,V.useState)(void 0),[k,A]=(0,V.useState)(null),[M,N]=(0,V.useState)(!0),[P,F]=(0,V.useState)(!1),[I,ee]=(0,V.useState)(null),L=dF(),te=NP(),R=(0,V.useMemo)(()=>X(v),[v]),ne=(0,V.useMemo)(()=>R.error||op(R)?!1:R.filters.some(e=>e.key===`source`&&!e.negate&&e.values.some(e=>e.value===`playground`)),[R]),re=(0,V.useMemo)(()=>{if(e.catalog)return e.catalog;if(e.route.startsWith(`/c/`)){let t=e.route.slice(3);if(t&&!t.includes(`/`))return t}if(!R.error&&ip(R)){let e=R.filters.find(e=>e.key===`catalog`&&!e.negate)?.values[0]?.value;if(e)return e}},[e,R]),ie=ST(),[ae,oe]=(0,V.useState)(null),se=(0,V.useMemo)(()=>ae?NX(ae):[],[ae]),ce=PX(se);(0,V.useEffect)(()=>{if(!re){oe(null);return}let e=`markdown/collections/${re}/README.md`,t=ie?.[e];t&&oe(t.replace(/\{\{workouts\}\}/g,``).trim());let n=!1;return c_(e).then(async e=>{try{let t=await zX.getEntry(e);!n&&t?.rawContent&&oe(t.rawContent.replace(/\{\{workouts\}\}/g,``).trim())}catch{}}),()=>{n=!0}},[re,ie]);let le=(0,V.useMemo)(()=>{let e=n??XN;return x.layout===`feed`?e.withNoteBlockInfo():e},[n,x.layout]),ue=(0,V.useCallback)(async e=>{let t=RI(),n=``,r=e.kind===`result`||e.kind===`segment`?e.execution?.noteId:e.kind===`note`?e.sourceItem:e.id;if(r){if(e.kind===`segment`&&e.blockContentId){let t=(await vN.runFind({raw:`:block{note:${r}}`,target:`block`,filters:[{key:`note`,negate:!1,values:[{value:r,wildcard:!1}]}]})).blocks.find(t=>t.id===e.blockContentId);t?.rawContent&&(n=t.rawContent)}if(!n&&(e.kind===`note`||e.kind===`result`||e.kind===`segment`)){let e=await mk.getById(r);e&&typeof e==`object`&&`rawContent`in e&&typeof e.rawContent==`string`&&(n=e.rawContent)}if(!n&&e.kind!==`note`){let e=await vN.runFind({raw:`:block{note:${r}}`,target:`block`,filters:[{key:`note`,negate:!1,values:[{value:r,wildcard:!1}]}]});e.blocks.length>0&&(n=[...e.blocks].sort((e,t)=>(e.position??0)-(t.position??0)).filter(e=>e.rawContent.trim()!==``).map(e=>e.dataType===`frontmatter`?`---\n${e.rawContent}\n---`:e.rawContent).join(`
177
+
178
+ `))}}let i=kX(e,n,t);await mk.create(i)},[]),de=i??ue,fe=(0,V.useCallback)(async e=>{ee(null);try{await hX(e,o)}catch(e){ee(e instanceof Error?e.message:`Could not start the workout.`)}},[o]),pe=(0,V.useCallback)(async e=>{ee(null);try{let t=await mk.resolve(e.id),{routeId:n}=await zz(t&&typeof t==`object`&&`rawContent`in t?String(t.rawContent??``):``,{title:e.title});o(mO(n.replace(/^playground\//,``)))}catch(e){ee(e instanceof Error?e.message:`Could not create the playground entry.`)}},[o]),me=(0,V.useCallback)(e=>ip(e)?vN.runFind(e):vN.runQuery(e.raw),[]),[he,ge]=(0,V.useState)(0);(0,V.useEffect)(()=>HR(()=>ge(e=>e+1)),[]),(0,V.useEffect)(()=>{let e=Bv().result?.id??-1;return Vv(()=>{let t=Bv().result?.id??-1;t!==e&&(e=t,ge(e=>e+1))})},[]);let _e=(0,V.useCallback)(async()=>{p(!0),_(null),h(null);try{let e=await cD(`community`,{force:!0,onProgress:h});e===`imported`||e===`current`?(d(!0),ge(e=>e+1)):e===`busy`?_(`Another tab is already syncing — wait for it to finish, then try again.`):e===`disabled`&&_(`Seed import is disabled.`)}finally{p(!1)}},[]);(0,V.useEffect)(()=>{if(c===`preparing`)return;if(R.error){F(!1);return}let e=!1,t=setTimeout(()=>{F(!0),O(void 0),le.query(v,t=>{e||O(t)}).then(t=>{e||(E(t),A(JY(v,R)),SA({pathname:s.pathname,query:v,entries:t}))}).catch(()=>{e||(E([]),SA({pathname:s.pathname,query:v,entries:[]}))}).finally(()=>{e||F(!1)})},HX);return()=>{e=!0,clearTimeout(t)}},[v,le,R,s.pathname,c,he]);let ve=(0,V.useMemo)(()=>k?.length?k:x.groupBy?[x.groupBy]:[e.level===`effort`?`discipline`:`date`],[k,x.groupBy,e.level]),ye=k?.length?`query`:x.groupBy?`view`:`level`,be=(0,V.useMemo)(()=>new Set(R.error||!ip(R)?[]:Hf(R.target,`find`)),[R]),xe=R.error||op(R)?0:R.filters.filter(e=>be.has(e.key)).length,Se=(R.error||op(R)?0:R.filters.length)-xe,Ce=e.shelfVisible&&!ne,we=(0,V.useMemo)(()=>XY(T,ve,{shelfVisible:Ce}),[T,ve,Ce]),Te=sX(T),{visible:Ee,growTo:De}=Te,Oe=(0,V.useMemo)(()=>XY(Ee,ve,{shelfVisible:Ce}),[Ee,ve,Ce]),ke=(0,V.useMemo)(()=>new Map(we.map(e=>[e.id,e.entries.length])),[we]),{setL3Items:Ae,scrollToSection:je,navState:Me,setStreamControls:Ne}=BD();(0,V.useEffect)(()=>{if(we.length===0){Ae([]);return}let e=we.map(e=>({id:e.id,label:e.label,level:3,action:{type:`scroll`,sectionId:e.id}}));return Ae(e),()=>Ae([])},[we,Ae]);let Pe=(0,V.useMemo)(()=>{let t=Uf(R.error||!ip(R)?e.level===`effort`?`effort`:`note`:R.target,`find`);return BX.filter(e=>t.includes(e.id))},[R,e.level]),Fe=(0,V.useCallback)(e=>{let t=dX(v,e);t===v?w(e):y(t)},[v,y,w]),Ie=(0,V.useCallback)(e=>{let t=ve.some(t=>t.toLowerCase()===e.toLowerCase()),n=UA(v,e,!t);y(n);let r=X(n);!r.error&&ip(r)&&Fe(r.groupBy?.[0]??``)},[ve,v,y,Fe]);(0,V.useEffect)(()=>(Ne?.({query:v,onQueryChange:y,groupDims:ve,onToggleGroupDim:Ie,availableGroupDims:Pe,settings:x,onLayoutChange:S,onToggleField:C,level:e.level}),()=>Ne?.(null)),[v,y,ve,Ie,Pe,Ne,x,S,C,e.level]);let Le=`activeL3Id`in Me&&typeof Me.activeL3Id==`string`?Me.activeL3Id:null,Re=(0,V.useRef)(null);(0,V.useEffect)(()=>{let e=Le;if(!e||Re.current===e||document.getElementById(e))return;let t=we.find(t=>t.id===e);if(!t)return;Re.current=e;let n=t.entries[t.entries.length-1],r=n?T.findIndex(e=>e.id===n.id):-1;De(r>=0?r+1:T.length)},[Le,we,T,De]),(0,V.useEffect)(()=>{let e=Re.current;!e||!document.getElementById(e)||(Re.current=null,je(e))},[Oe,je]);let ze=DP(104),Be=R.error&&v!==e.defaultWql?R.error:null,Ve=b??Be,He=(0,V.useMemo)(()=>{let e=[];if(!R.error&&R.advisories?.length&&e.push({id:`edit-query`,label:`Edit query`,apply:()=>CJ(v,me,y)}),!R.error&&R.window){let t=R.window,n=t.kind===`relative`?`last ${t.size}${t.unit}`:`from ${t.start}${t.end?` to ${t.end}`:``}`;e.push({id:`remove-window`,label:`Remove time window (${n})`,apply:()=>y(lX(v))})}let t=R.error?[]:R.filters.filter(e=>e.key!==`source`);return t.length>0&&e.push({id:`clear-filters`,label:t.length===1?`Clear filter`:`Clear filters (${t.length})`,apply:()=>y(uX(v))}),e},[R,v,y,me]),Ue=(0,H.jsxs)(`div`,{className:`px-6 py-16 text-center text-muted-foreground flex flex-col items-center justify-center gap-3`,"data-testid":`stream-empty-state`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium`,children:e.emptyMessage??(R.window?`No entries found within the selected time window.`:`No entries match your search.`)}),He.length>0&&(0,H.jsx)(`div`,{className:`flex flex-wrap items-center justify-center gap-2 mt-1`,children:He.map(e=>(0,H.jsx)(W,{variant:`outline`,size:`sm`,onClick:e.apply,className:`text-xs`,children:e.label},e.id))})]}),We=!!R.error&&T.length>0;return c===`preparing`?(0,H.jsx)(`div`,{className:`bg-card flex flex-col flex-1`,"data-testid":`stream-preparing`,role:`status`,"aria-busy":`true`,children:(0,H.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4 p-6`,children:[(0,H.jsxs)(`div`,{className:`w-full max-w-2xl space-y-3`,"aria-hidden":`true`,children:[(0,H.jsx)(`div`,{className:`h-4 w-2/3 animate-pulse rounded bg-muted`}),(0,H.jsx)(`div`,{className:`h-4 w-1/2 animate-pulse rounded bg-muted`}),(0,H.jsx)(`div`,{className:`h-4 w-3/4 animate-pulse rounded bg-muted`})]}),(0,H.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading library…`})]})}):(0,H.jsxs)(`div`,{className:`bg-card flex flex-col flex-1`,"data-testid":`queriable-stream-view`,children:[(0,H.jsx)(xP,{className:`max-lg:hidden`,actions:(0,H.jsx)(wF,{primary:e.route===`/efforts`?(0,H.jsxs)(W,{size:`sm`,onClick:()=>o(jO(`new`,void 0,{mode:`create`})),className:`h-9 px-2.5 text-xs gap-1.5`,"data-testid":`efforts-catalog-create-btn`,children:[(0,H.jsx)(ft,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`New`})]}):void 0,label:`Stream actions`,children:t}),queryBar:(0,H.jsx)(wJ,{query:v,onQueryChange:y,scopeOptions:e.scopeOptions,execute:me,defaultQuery:e.defaultWql,route:e.route})}),(0,H.jsx)(`div`,{className:`px-4 pt-2 sm:px-6 lg:px-8`,"data-testid":`stream-query-status-row`,children:(0,H.jsx)(WX,{error:Ve,target:R.error?null:ip(R)?R.target:R.family,matched:T.length,total:Math.max(D?.selected??0,T.length),loading:P,applied:xe,ignored:Se,advisories:R.error?[]:R.advisories??[],groupDims:ve,groupingSource:ye})}),e.scopeOptions.length===0&&(0,H.jsx)(`p`,{"data-testid":`route-wql-empty-options`,className:`px-4 pt-3 text-xs text-muted-foreground sm:px-6 lg:px-8`,children:`No source options are set for this route — pick a source by editing the query.`}),e.seedNotice&&l&&!u&&(0,H.jsx)(`div`,{className:`px-4 pt-3 sm:px-6 lg:px-8`,"data-testid":`seed-library-notice`,children:(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 flex flex-col sm:flex-row sm:items-center gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,H.jsxs)(`p`,{className:`text-sm font-medium text-foreground flex items-center gap-2`,children:[(0,H.jsx)(r,{className:`size-4 text-primary`}),`Only the core seed is imported`]}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:`The content for this page comes from community libraries, which are not imported yet. Sync now to import the community library — or open Sync settings to add more sources (mirrors, your own libraries).`}),m&&(0,H.jsxs)(`div`,{className:`space-y-1.5 pt-1`,"data-testid":`seed-library-notice-progress`,children:[(0,H.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`text-xs text-muted-foreground`,children:UX(m)}),m.phase!==`checking`&&m.phase!==`finished`?(0,H.jsx)(qY,{value:m.completedChunks,max:m.totalChunks,label:`Community library import progress`,className:`max-w-sm`}):f?(0,H.jsx)(`progress`,{"aria-label":`Checking the community library`,className:`h-2 max-w-sm w-full`}):null]}),(g??(m?.phase===`finished`?m.error:null))&&(0,H.jsx)(`p`,{className:`text-xs text-destructive`,"data-testid":`seed-library-notice-error`,children:g??(m?.phase===`finished`?m.error:null)})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,H.jsxs)(W,{size:`sm`,onClick:()=>void _e(),disabled:f,"data-testid":`seed-library-notice-sync`,className:`gap-2`,children:[(0,H.jsx)(Gt,{className:`size-3.5 ${f?`animate-spin`:``}`}),(0,H.jsx)(`span`,{children:f?`Syncing…`:`Sync now`})]}),(0,H.jsxs)(W,{variant:`outline`,size:`sm`,onClick:()=>o(Q.settingsSync),"data-testid":`seed-library-notice-settings`,className:`gap-2`,children:[(0,H.jsx)(nr,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Sync settings`})]})]})]})}),L&&te&&(0,Mb.createPortal)((0,H.jsx)(wJ,{query:v,onQueryChange:y,scopeOptions:e.scopeOptions,execute:me,defaultQuery:e.defaultWql,route:e.route,compact:!0}),te),Ve&&(0,H.jsxs)(`div`,{role:`alert`,className:`mx-6 mt-4 flex items-start gap-3 rounded-lg border border-destructive/30 bg-destructive/10 p-4 text-destructive`,"data-testid":`stream-query-error`,children:[(0,H.jsx)(j,{className:`size-5 flex-shrink-0 mt-0.5`}),(0,H.jsxs)(`div`,{className:`flex-1 text-xs`,children:[(0,H.jsx)(`p`,{className:`font-bold`,children:`Query error`}),(0,H.jsx)(`p`,{className:`mt-1 font-mono text-[11px] opacity-90`,children:Ve})]})]}),I&&(0,H.jsxs)(`div`,{role:`alert`,className:`mx-6 mt-4 flex items-start gap-3 rounded-lg border border-destructive/30 bg-destructive/10 p-4 text-destructive`,"data-testid":`stream-action-error`,children:[(0,H.jsx)(j,{className:`size-5 flex-shrink-0 mt-0.5`}),(0,H.jsxs)(`div`,{className:`flex-1 text-xs`,children:[(0,H.jsx)(`p`,{className:`font-bold`,children:`Action failed`}),(0,H.jsx)(`p`,{className:`mt-1 text-[11px] opacity-90`,children:I})]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>ee(null),className:`text-[11px] font-bold uppercase tracking-wider hover:opacity-80`,"data-testid":`stream-action-error-dismiss`,children:`Dismiss`})]}),ae&&(0,H.jsx)(`div`,{className:`border-b border-border/60 bg-card/20 px-6 py-4`,"data-testid":`collection-readme-note`,children:se.map((e,t)=>e.kind===`markdown`?(0,H.jsx)(KW,{prose:e.text},t):(0,H.jsx)(RX,{query:e.query,heading:e.heading,onAddToToday:de,onRunStart:fe},t))}),ce?null:x.layout===`rows`?(0,H.jsx)(`div`,{className:We?`flex-1 opacity-50 transition-opacity`:`flex-1`,children:(0,H.jsx)(SX,{entries:T,level:e.level,visibleFieldIds:x.visibleFields,stickyHeaderTop:ze,emptyMessage:e.emptyMessage??`No matching records found.`})}):x.layout===`feed`?Oe.length>0?(0,H.jsx)(OX,{groups:Oe,batch:Te,stickyOffset:ze,onRunEntry:fe,onSendToPlayground:pe}):P&&T.length===0?(0,H.jsx)(`div`,{className:`py-16 text-center text-xs text-muted-foreground/60`,"data-testid":`stream-loading`,children:`Loading…`}):T.length===0&&!P?Ue:null:(0,H.jsx)(`div`,{className:We?`flex-1 divide-y divide-border/60 opacity-50 transition-opacity`:`flex-1 divide-y divide-border/60`,children:Oe.length>0?(0,H.jsxs)(`div`,{className:`divide-y divide-border/40`,"data-testid":`stream-dated-content`,children:[Oe.map(e=>{let t=ke.get(e.id)??e.entries.length;return e.key===`shelf`?(0,H.jsxs)(`div`,{id:e.id,className:`border-b border-border/60`,"data-testid":`stream-shelf`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>N(e=>!e),className:`w-full flex items-center justify-between px-6 py-2.5 bg-muted/20 hover:bg-muted/40 transition-colors text-left`,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[M?(0,H.jsx)(Mt,{className:`size-3.5 text-muted-foreground`}):(0,H.jsx)(mn,{className:`size-3.5 text-muted-foreground`}),(0,H.jsx)(Rss,{className:`size-3.5 text-amber-500`}),(0,H.jsx)(`span`,{className:`text-xs font-bold text-foreground`,children:e.label}),(0,H.jsx)(`span`,{className:`text-[10px] font-bold text-muted-foreground/60 bg-muted px-1.5 py-0.5 rounded-full`,children:t})]})}),M&&(0,H.jsx)(`div`,{className:`divide-y divide-border/40`,children:e.entries.map(e=>(0,H.jsx)(yX,{entry:e,visibleFieldIds:x.visibleFields,onAddToToday:de,onRunStart:fe},e.id))})]},e.id):(0,H.jsxs)(`div`,{id:e.id,className:`group/date`,"data-testid":`date-group-${e.key}`,children:[(0,H.jsx)(OP,{top:ze,icon:(0,H.jsx)(pt,{className:`size-3.5 shrink-0 text-muted-foreground`}),label:e.label,badge:e.isToday?(0,H.jsx)(`span`,{className:`shrink-0 rounded-full bg-primary/10 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-primary`,children:`Today`}):void 0,meta:`${t} ${t===1?`entry`:`entries`}`}),(0,H.jsx)(`div`,{className:`divide-y divide-border/30`,children:e.entries.map(t=>(0,H.jsx)(yX,{entry:t,visibleFieldIds:x.visibleFields,tone:e.isToday?`primary`:`secondary`,onAddToToday:de,onRunStart:fe},t.id))})]},e.id)}),(0,H.jsx)(VX,{batch:Te})]}):P&&T.length===0?(0,H.jsx)(`div`,{className:`py-16 text-center text-xs text-muted-foreground/60`,"data-testid":`stream-loading`,children:`Loading…`}):T.length===0&&!P?Ue:null})]})}function KX({pageRoute:e,quests:t,challengeSectionMap:n,onScrollToSection:r}){let{quests:i,stepsComplete:a,totalSteps:o,isComplete:s}=Zz(e,t),[c,l]=(0,V.useState)(!1),u=(0,V.useRef)(null),d=(0,V.useRef)(null),f=(0,V.useRef)(null);if(o===0)return null;let p=e=>{let t=n.get(e);t&&r?.(t),l(!1)};(0,V.useEffect)(()=>{if(!c)return;let e=e=>{e.key===`Escape`&&(l(!1),u.current?.focus())},t=e=>{let t=e.relatedTarget,n=u.current?.parentElement;n&&t&&!n.contains(t)&&l(!1)},n=e=>{let t=u.current?.parentElement;t&&!t.contains(e.target)&&l(!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,n),document.addEventListener(`touchstart`,n),d.current?.addEventListener(`focusout`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,n),document.removeEventListener(`touchstart`,n),d.current?.removeEventListener(`focusout`,t)}},[c]),(0,V.useEffect)(()=>()=>{f.current&&=(window.clearTimeout(f.current),null)},[]);let m=()=>{f.current&&=(window.clearTimeout(f.current),null)},h=()=>{m(),f.current=window.setTimeout(()=>l(!1),150)};return(0,H.jsxs)(`div`,{className:`relative py-1.5 shrink-0`,onPointerEnter:e=>{e.pointerType===`mouse`&&(m(),l(!0))},onPointerLeave:e=>{e.pointerType===`mouse`&&h()},children:[(0,H.jsxs)(`button`,{ref:u,type:`button`,"aria-haspopup":`menu`,"aria-expanded":c,"aria-label":`${a} of ${o} challenges complete`,title:`${a} of ${o} challenges complete`,onClick:()=>l(!0),className:`flex items-center gap-1.5 cursor-pointer focus:outline-none select-none text-left rounded-full border border-border/70 bg-background px-3 py-1 hover:bg-muted/40 hover:border-border transition-colors shadow-sm`,children:[s?(0,H.jsx)(Vt,{className:`size-4 text-emerald-500`}):(0,H.jsx)(Hn,{className:`size-4 text-muted-foreground`}),(0,H.jsxs)(`span`,{className:U(`text-[10px] font-black uppercase tracking-wider`,s?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`),children:[a,`/`,o]})]}),c&&(0,H.jsxs)(`div`,{ref:d,role:`menu`,"aria-orientation":`vertical`,className:`absolute left-0 top-full mt-1.5 w-64 rounded-xl border border-border bg-popover text-popover-foreground shadow-2xl p-3 z-50 origin-top-left before:content-[''] before:absolute before:-top-1.5 before:left-0 before:right-0 before:h-1.5 before:bg-transparent`,children:[(0,H.jsxs)(`div`,{className:`mb-2.5 pb-2 border-b border-border/60 flex items-center justify-between gap-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h5`,{className:`text-[10px] font-black uppercase tracking-widest text-foreground`,children:`Syntax Challenges`}),(0,H.jsx)(`p`,{className:`text-[9px] text-muted-foreground mt-0.5`,children:`Click a challenge to jump to its section.`})]}),(0,H.jsxs)(`span`,{className:`text-[9px] font-black uppercase tracking-wider text-muted-foreground tabular-nums`,children:[a,`/`,o]})]}),(0,H.jsx)(`div`,{className:`flex flex-col gap-1`,children:i.map(e=>{let t=n.get(e.id);return(0,H.jsx)(lG,{quest:e,onClick:t?()=>p(e.id):void 0,disabled:!t,compact:!0,className:`border-0 bg-transparent hover:bg-muted/40`},e.id)})})]})]})}function qX(e){return(0,H.jsx)(JX,{...e},e.entry.id)}function JX({entry:e,onChange:t,registerRun:n,...r}){let[i,a]=(0,V.useState)({blocks:e.blocks??{},sourceRevision:e.sourceRevision??0}),[o,s]=(0,V.useState)(null),c=(0,V.useRef)(i.sourceRevision),l=(0,V.useRef)({rawContent:e.rawContent,...i}),u=(0,V.useCallback)(e=>{c.current=e.sourceRevision;let t=l.current,n=t.rawContent===e.rawContent&&JSON.stringify(Object.values(t.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))===JSON.stringify(Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]));a(t=>({blocks:n?e.blocks:t.blocks,sourceRevision:e.sourceRevision}))},[]),d=(0,V.useCallback)(async t=>{let n=await tk.saveNote({noteId:e.id,rawContent:t.rawContent,blocks:t.blocks,expectedSourceRevision:c.current}),r={rawContent:n.rawContent,blocks:n.blocks??{},sourceRevision:n.sourceRevision??0};return u(r),r},[e.id,u]),f=yK({onSave:async e=>{await d(e)},getSnapshotKey:e=>JSON.stringify([e.rawContent,Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport])])}),p=(0,V.useCallback)(e=>{let t=l.current.rawContent!==e.rawContent||JSON.stringify(Object.values(l.current.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))!==JSON.stringify(Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]));l.current=e,t&&f.onChange(e)},[f.onChange]);return(0,V.useEffect)(()=>(n?.(async(t,n)=>{await f.flush();let r=l.current,i=await LM({noteId:e.id,rawContent:r.rawContent,blocks:r.blocks,expectedSourceRevision:c.current},t,n);return u({rawContent:i.note.rawContent,blocks:i.note.blocks,sourceRevision:i.note.sourceRevision}),i}),()=>n?.(null)),[e.id,n,f.flush,u]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(HU,{...r,noteId:e.id,value:o??e.rawContent,noteBlocks:i.blocks,sourceRevision:i.sourceRevision,onIdentityChange:p,onSaved:u,beforeRun:async()=>(await f.flush(),c.current),onChange:e=>{s(null),t(e)},onBlur:f.onBlur}),f.error?(0,H.jsxs)(`p`,{role:`alert`,children:[`Save failed. `,f.error instanceof Error?f.error.message:String(f.error),` Your draft is kept.`]}):null,(0,H.jsx)(hM,{noteId:e.id,blocks:i.blocks,sourceRevision:i.sourceRevision,onRevert:async e=>{await f.flush();let n=mM({...l.current,sourceRevision:c.current},e),r=await d(n);l.current=r,s(n.rawContent),t(n.rawContent)}})]})}var YX=new qT;function XX({journalDate:e,theme:t,onViewCreated:n}){let[r,i]=(0,V.useState)(null),[a,o]=Yt(),s=Mn(),[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(null),[m,h]=(0,V.useState)(null),[g,_]=(0,V.useState)(null),v=(0,V.useRef)(null),y=(0,V.useRef)(null),b=(0,V.useRef)(new Map),[x,S]=(0,V.useState)(null),w=(0,V.useCallback)(async()=>{let e=v.current;if(!e||!m)throw Error(`The pending workout is unavailable.`);return e.captured?(y.current=e.captured,e.captured.block):(y.current||=e.snapshot?await LM(e.snapshot,e.block,m,e.origin):await RM(e.noteId,e.block,m,e.origin),y.current.block)},[m]),[T,E]=(0,V.useState)({}),D=(0,V.useCallback)((e,t)=>{E(n=>n[e]===t?n:{...n,[e]:t})},[]),O=(0,V.useRef)(new Map),k=(0,V.useRef)(null),[A,j]=(0,V.useState)(null),M=(0,V.useCallback)((e,t)=>{O.current.set(e,t),k.current||(k.current=t,j(t),n?.(t))},[n]),N=a.get(`note`);(0,V.useEffect)(()=>{if(!N||!r)return;let e=document.getElementById(`note-${N}`);e&&e.scrollIntoView({behavior:`smooth`,block:`start`})},[N,r]);let P=a.toString();(0,V.useEffect)(()=>{let e=new URLSearchParams(P).get(`autoStart`);if(!e)return;let t=SK.get(e);t&&(SK.delete(e),v.current=t,y.current=null,p(t.block),h(e),_(t.noteId),d(!0)),o(e=>(e.delete(`autoStart`),e),{replace:!0})},[P,o]);let F=(0,V.useCallback)((e,t)=>{i(n=>n?.map(n=>n.id===e?{...n,rawContent:t}:n)??n)},[]),I=(0,V.useCallback)((e,t,n,r,i)=>{if(!t)return Promise.reject(Error(`This run produced no results to save.`));if(n)return Promise.resolve();let a=y.current;if(!a)return Promise.reject(Error(`The saved run pin is unavailable.`));let o=a.session.id,s=O.current.get(a.session.noteId);if(s&&!s.state.doc.toString().includes(ow(o))){let e=sw(s.state,a.session.blockId,o);e&&s.dispatch({changes:e})}return GR.record({blockId:a.session.blockId,noteId:a.session.noteId,resultId:o,data:t,createdAt:t.endTime})},[]);(0,V.useEffect)(()=>{let t=!1;return mk.listByDate(e).then(e=>{t||i(e)}).catch(()=>{t||i([])}),()=>{t=!0}},[e]);let ee=/^\d{4}-\d{2}-\d{2}$/.test(e),L=(0,V.useMemo)(()=>{if(!ee)return null;let[t,n,r]=e.split(`-`).map(Number);return{prev:ck(new Date(t,n-1,r-1)),next:ck(new Date(t,n-1,r+1))}},[e,ee]),{setL3Items:te}=BD(),[R,ne]=(0,V.useState)({}),re=r?.map(e=>e.id).join(`|`)??``,ie=(0,V.useMemo)(()=>re?re.split(`|`):[],[re]);(0,V.useEffect)(()=>{if(ie.length===0)return;let e=!1;for(let t of ie)Z.getSessionsForNote(t).then(n=>{e||ne(e=>({...e,[t]:n}))}).catch(()=>{});return()=>{e=!0}},[ie]),(0,V.useEffect)(()=>HR(e=>{Z.getSessionsForNote(e.noteId).then(t=>{ne(n=>({...n,[e.noteId]:t}))}).catch(()=>{})}),[]);let ae=r!==null&&r.length===1?r[0]:null,oe=ae?R[ae.id]:void 0,se=(0,V.useCallback)(async(t,n)=>{try{let r=b.current.get(t);if(!r)throw Error(`The saved note editor is unavailable.`);let i=C(),a=await r(n,i);SK.set(i,{noteId:t,block:a.block,captured:a,returnTo:hO(e)}),s(SO(i))}catch(e){S(e instanceof Error?e.message:String(e))}},[e,s]),ce=(0,V.useCallback)(e=>{ae&&se(ae.id,e)},[ae,se]);TK({content:ae?.rawContent??``,scriptBlocks:ae?T[ae.id]??[]:[],onStartWorkout:ce,results:oe});let le=(0,V.useCallback)(e=>t=>{se(e,t)},[se]),ue=(0,V.useMemo)(()=>{if(!r||r.length<=1)return[];let e=[];for(let t of r){let n=t.title||`Untitled note`,r=wK(dL(t.rawContent),T[t.id]??[],le(t.id),R[t.id]);for(let i of r)e.push(...fL([{...i,id:`note-${t.id}:${i.id}`,label:`${n} · ${i.label}`}]))}return e},[r,T,R,le]),de=(0,V.useRef)(!1);return(0,V.useEffect)(()=>{if(ue.length!==0)return de.current=!0,te(ue),()=>{de.current&&(de.current=!1,te([]))}},[ue,te]),r?N?(0,H.jsx)(fn,{to:_O(N),replace:!0}):(0,H.jsxs)(qM,{notePersistence:tk,provider:YX,children:[(0,H.jsx)(PP,{title:e,subtitle:`${r.length} ${r.length===1?`note`:`notes`}`,actions:(0,H.jsx)(wF,{primary:(0,H.jsxs)(W,{type:`button`,onClick:()=>l(!0),children:[(0,H.jsx)(ft,{className:`size-4 mr-1.5`,"aria-hidden":`true`}),`New note`]})}),editor:(0,H.jsxs)(`div`,{className:`flex flex-col gap-8 px-4 py-6 sm:px-6`,children:[x&&(0,H.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,x,` Your draft is kept.`]}),(0,H.jsxs)(`nav`,{"aria-label":`Journal navigation`,className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>uL()?s(-1):s(`/journal`),className:`rounded-pill border border-border px-2 py-0.5 hover:bg-accent hover:text-foreground transition-colors`,children:`‹ Journal`}),L&&(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(Tt,{to:hO(L.prev),"aria-label":`Previous day`,className:`hover:bg-accent hover:text-foreground rounded-pill border border-border px-2 py-0.5 transition-colors`,children:[`‹ `,L.prev]}),(0,H.jsx)(`span`,{className:`font-semibold text-foreground`,children:e}),(0,H.jsxs)(Tt,{to:hO(L.next),"aria-label":`Next day`,className:`hover:bg-accent hover:text-foreground rounded-pill border border-border px-2 py-0.5 transition-colors`,children:[L.next,` ›`]})]})]}),r.length>1&&(0,H.jsx)(`nav`,{"aria-label":`Notes on this date`,className:`flex flex-wrap gap-2`,children:r.map(e=>(0,H.jsx)(Tt,{to:_O(e.id),className:`rounded-full border border-border px-3 py-1 text-xs text-muted-foreground hover:bg-muted`,children:e.title},e.id))}),r.length===0?(0,H.jsxs)(`div`,{className:`flex flex-col items-start gap-3 rounded-lg border border-dashed border-border p-6`,children:[(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No Notes on this date yet.`}),(0,H.jsxs)(W,{type:`button`,size:`lg`,onClick:()=>l(!0),children:[(0,H.jsx)(ft,{className:`size-4 mr-1.5`,"aria-hidden":`true`}),`Create a note`]})]}):r.length===1?(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-between border-b border-border/40 pb-2`,children:(0,H.jsx)(Tt,{to:_O(r[0].id),className:`text-sm font-semibold hover:underline text-foreground`,"aria-label":`Open note page for ${r[0].title||`untitled note`}`,children:r[0].title||`Untitled note`})}),(0,H.jsx)(qX,{entry:r[0],registerRun:e=>{e?b.current.set(r[0].id,e):b.current.delete(r[0].id)},onChange:e=>F(r[0].id,e),readonly:!1,theme:t,showLineNumbers:!1,onBlocksChange:e=>D(r[0].id,e),onCompleteWorkout:(e,t,n,i)=>I(e,t,n,i,r[0].id),onViewCreated:e=>M(r[0].id,e)},r[0].id)]}):(0,H.jsx)(`div`,{className:`space-y-6`,children:r.map((e,n)=>(0,H.jsxs)(`div`,{id:`note-${e.id}`,className:`rounded-lg border border-border/60 p-4 space-y-2`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-between border-b border-border/40 pb-2`,children:(0,H.jsx)(Tt,{to:_O(e.id),className:`text-sm font-semibold hover:underline text-foreground`,children:e.title||`Note ${n+1}`})}),(0,H.jsx)(qX,{entry:e,registerRun:t=>{t?b.current.set(e.id,t):b.current.delete(e.id)},onChange:t=>F(e.id,t),readonly:!1,theme:t,showLineNumbers:!1,onBlocksChange:t=>D(e.id,t),onCompleteWorkout:(t,n,r,i)=>I(t,n,r,i,e.id),onViewCreated:t=>M(e.id,t)})]},e.id))})]})}),(0,H.jsx)(HI,{open:c,onOpenChange:l,defaultDate:e,onCreated:t=>{mk.listByDate(e).then(i).catch(()=>{}),s(_O(t.id))}}),u&&f&&(0,H.jsx)(SU,{block:f,prepareRun:w,onClose:()=>{d(!1),h(null),_(null)},onCompleteWorkout:(e,t)=>I(e,t,m??void 0,void 0),autoStart:!0})]}):(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}function ZX({identity:e}){let t=Mn();return(0,V.useEffect)(()=>{let n=!1;return mk.resolve(e).then(e=>{!n&&e.journalDate&&t(_O(e.id),{replace:!0})}).catch(()=>{n||t(`/journal`,{replace:!0})}),()=>{n=!0}},[e,t]),(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}function QX(e){let t=window.location.pathname,n=qF(t);return n.kind===`date`?(0,H.jsx)(XX,{journalDate:n.journalDate,theme:e.theme,onViewCreated:e.onViewCreated}):n.kind===`note`?(0,H.jsx)(fn,{to:_O(n.noteId),replace:!0}):n.kind===`uuid-alias`?(0,H.jsx)(ZX,{identity:n.noteId}):n.kind===`slug-alias`?(0,H.jsx)(ZX,{identity:n.slug}):(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Journal route not found.`})}var $X=()=>(0,H.jsxs)(`div`,{className:`relative my-3 flex items-start gap-3 rounded-lg border border-primary/30 bg-primary/5 px-4 py-3`,children:[(0,H.jsx)(`div`,{className:`mt-0.5 flex-shrink-0 text-primary`,children:(0,H.jsxs)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 18 18`,fill:`none`,"aria-hidden":`true`,children:[(0,H.jsx)(`circle`,{cx:`9`,cy:`9`,r:`8`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,H.jsx)(`path`,{d:`M9 5v4.5M9 11.5v1`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})]})}),(0,H.jsxs)(`div`,{className:`flex-1 text-sm leading-relaxed text-muted-foreground`,children:[(0,H.jsx)(`span`,{className:`font-semibold text-foreground`,children:`Ready to try it?`}),` `,`Press the`,` `,(0,H.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-primary px-2 py-0.5 align-middle text-[11px] font-bold text-primary-foreground`,children:`▶ Run`}),` `,`button that appears on the workout block below to start the timer and track your rounds.`]}),(0,H.jsx)(`div`,{className:`pointer-events-none absolute -bottom-4 right-8 text-primary/50`,"aria-hidden":`true`,children:(0,H.jsxs)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,fill:`none`,children:[(0,H.jsx)(`path`,{d:`M3 3 L17 3 L17 17`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,H.jsx)(`path`,{d:`M11 11 L17 17 L23 11`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})]})})]});function eZ({config:e,onAction:t}){return!e.headline||!e.subtitle||e.pillars.length===0?(0,H.jsxs)(`section`,{className:`rounded-3xl border border-amber-400/50 bg-amber-50 p-6 text-amber-900 dark:border-amber-500/40 dark:bg-amber-950/30 dark:text-amber-100`,children:[`Invalid `,(0,H.jsx)(`code`,{children:`attention`}),` widget config.`]}):(0,H.jsxs)(`section`,{className:`p-8`,children:[(0,H.jsx)(`p`,{className:`mb-3 text-xs font-semibold uppercase tracking-[0.14em] text-zinc-500 dark:text-zinc-400`,children:`Playground`}),(0,H.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-100 sm:text-4xl`,children:e.headline}),(0,H.jsx)(`p`,{className:`mt-4 max-w-3xl text-base leading-7 text-zinc-600 dark:text-zinc-300`,children:e.subtitle}),(0,H.jsx)(`div`,{className:`mt-7 grid gap-3 md:grid-cols-3`,children:e.pillars.map(e=>(0,H.jsxs)(`div`,{className:`rounded-2xl border border-zinc-200 bg-zinc-50/80 p-4 dark:border-zinc-800 dark:bg-zinc-900/70`,children:[(0,H.jsx)(`div`,{className:`mb-3 inline-flex size-8 items-center justify-center rounded-lg border border-zinc-200 bg-white text-zinc-700 dark:border-zinc-800 dark:bg-zinc-900 dark:text-zinc-200`,children:e.icon}),(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-zinc-900 dark:text-zinc-100`,children:e.label}),(0,H.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-zinc-600 dark:text-zinc-300`,children:e.description})]},e.label))}),(0,H.jsx)(`div`,{className:`mt-7 flex flex-wrap gap-3`,children:e.actions.map(e=>(0,H.jsxs)(`button`,{type:`button`,onClick:()=>t(e.action),className:e.variant===`primary`?`inline-flex items-center gap-2 rounded-full bg-zinc-950 px-5 py-2.5 text-sm font-medium text-zinc-50 transition hover:opacity-90 dark:bg-zinc-100 dark:text-zinc-900`:`inline-flex items-center gap-2 rounded-full border border-zinc-300 px-5 py-2.5 text-sm font-medium text-zinc-700 transition hover:bg-zinc-100 dark:border-zinc-700 dark:text-zinc-200 dark:hover:bg-zinc-800`,children:[e.label,(0,H.jsx)(ze,{className:`size-4`,"aria-hidden":`true`})]},`${e.action}-${e.label}`))})]})}function tZ({config:e,isDarkMode:t,onRun:n}){let r=(0,V.useRef)(null),i=(0,V.useRef)(null),a=(0,V.useMemo)(()=>e.lines.map(e=>e.code).join(`
179
+ `),[e.lines]);return(0,V.useEffect)(()=>{if(r.current)return i.current?.destroy(),i.current=new Pr({state:di.create({doc:a,extensions:[oi(),Ci(),di.readOnly.of(!1),Pr.theme({"&":{fontSize:`13px`,borderRadius:`12px`,border:`1px solid var(--cm-border)`},".cm-scroller":{fontFamily:`JetBrains Mono, ui-monospace, SFMono-Regular, monospace`,lineHeight:`1.6`,minHeight:`180px`},".cm-content":{padding:`14px 0`},".cm-gutters":{backgroundColor:`transparent`,borderRight:`1px solid var(--cm-border)`}}),Pr.theme({"&":{"--cm-border":t?`rgba(82, 82, 91, 0.7)`:`rgba(212, 212, 216, 0.9)`}},{dark:t}),...t?[ui]:[]]}),parent:r.current}),()=>{i.current?.destroy(),i.current=null}},[t,a]),e.lines.length===0?(0,H.jsxs)(`section`,{className:`rounded-2xl border border-amber-400/50 bg-amber-50 p-6 text-amber-900 dark:border-amber-500/40 dark:bg-amber-950/30 dark:text-amber-100`,children:[`Invalid `,(0,H.jsx)(`code`,{children:`code-example`}),` widget config.`]}):(0,H.jsxs)(`section`,{className:`p-5`,children:[(0,H.jsxs)(`div`,{className:`mb-4 flex items-center justify-between gap-3`,children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-zinc-900 dark:text-zinc-100`,children:`Code example`}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(i.current?.state.doc.toString()??a),className:`inline-flex items-center gap-2 rounded-full bg-emerald-600 px-4 py-2 text-xs font-semibold text-white transition hover:bg-emerald-500`,children:[(0,H.jsx)(sr,{className:`size-3.5`,"aria-hidden":`true`}),e.cta]})]}),(0,H.jsx)(`div`,{ref:r}),(0,H.jsx)(`ul`,{className:`mt-4 space-y-2 text-sm leading-6 text-zinc-600 dark:text-zinc-300`,children:e.lines.map((e,t)=>(0,H.jsxs)(`li`,{className:`flex gap-2`,children:[(0,H.jsx)(`span`,{className:`mt-1 inline-block size-1.5 rounded-full bg-zinc-400`,"aria-hidden":`true`}),(0,H.jsxs)(`span`,{children:[(0,H.jsx)(`code`,{className:`rounded bg-zinc-200/70 px-1 py-0.5 text-[12px] dark:bg-zinc-800`,children:e.code}),` — `,e.annotation]})]},`${e.code}-${t}`))})]})}function nZ({config:e,onOpenDocs:t}){return!e.category||!e.title||!e.docsPath?(0,H.jsxs)(`article`,{className:`rounded-2xl border border-amber-400/50 bg-amber-50 p-5 text-amber-900 dark:border-amber-500/40 dark:bg-amber-950/30 dark:text-amber-100`,children:[`Invalid `,(0,H.jsx)(`code`,{children:`syntax-group`}),` widget config.`]}):(0,H.jsxs)(`article`,{className:`p-5`,children:[(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.14em] text-zinc-500 dark:text-zinc-400`,children:e.category}),(0,H.jsxs)(`h3`,{className:`mt-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100`,children:[(0,H.jsx)(`span`,{className:`mr-2`,"aria-hidden":`true`,children:e.icon}),e.title]}),(0,H.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-zinc-600 dark:text-zinc-300`,children:e.description})]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>t(e.docsPath),className:`inline-flex items-center gap-1.5 rounded-lg border border-zinc-300 px-2.5 py-1.5 text-xs font-semibold text-zinc-700 transition hover:bg-zinc-100 dark:border-zinc-700 dark:text-zinc-200 dark:hover:bg-zinc-800`,children:[`Docs`,(0,H.jsx)(Ln,{className:`size-3`,"aria-hidden":`true`})]})]}),(0,H.jsx)(`pre`,{className:`mt-4 overflow-x-auto rounded-xl border border-zinc-200 bg-white px-3 py-2 text-xs text-zinc-700 dark:border-zinc-700 dark:bg-zinc-950/70 dark:text-zinc-200`,children:(0,H.jsx)(`code`,{children:e.example})})]})}function rZ(e){return({config:t})=>(0,H.jsx)(eZ,{config:t,onAction:e})}function iZ(e,t){return({config:n})=>(0,H.jsx)(tZ,{config:n,isDarkMode:e,onRun:t})}function aZ(e){return({config:t})=>(0,H.jsx)(nZ,{config:t,onOpenDocs:e})}var oZ=[`visitedLanding`,`editedNote`,`ranWorkout`,`loggedEffort`,`openedReview`],sZ=`wodwiki.onboarding.v1`,cZ={visitedLanding:!1,editedNote:!1,ranWorkout:!1,loggedEffort:!1,openedReview:!1};function lZ(){if(typeof window>`u`||!window.localStorage)return{...cZ};try{let e=window.localStorage.getItem(sZ);if(!e)return{...cZ};let t=JSON.parse(e),n={...cZ};for(let e of oZ)n[e]=t[e]===!0;return n}catch{return{...cZ}}}function uZ(e){if(!(typeof window>`u`||!window.localStorage))try{window.localStorage.setItem(sZ,JSON.stringify(e))}catch{}}function dZ(){let[e,t]=(0,V.useState)(lZ);(0,V.useEffect)(()=>{let e=e=>{e.key===sZ&&t(lZ())};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]);let n=(0,V.useCallback)(e=>{t(t=>{if(t[e])return t;let n={...t,[e]:!0};return uZ(n),n})},[]),r=oZ.length,i=oZ.reduce((t,n)=>t+ +!!e[n],0);return{progress:e,stepsComplete:i,totalSteps:r,isComplete:i===r,mark:n}}function fZ(){let{mark:e}=dZ();return{onEditNote:(0,V.useCallback)(()=>{e(`editedNote`)},[e]),onRunWorkout:(0,V.useCallback)(()=>{e(`ranWorkout`)},[e]),onLogEffort:(0,V.useCallback)(()=>{e(`loggedEffort`)},[e])}}var pZ=new qT;function mZ({theme:e,onViewCreated:t,onScrollToSection:n,onSearch:r}){let{id:i}=_n(),a=i??`playground`,o=EI(`playground`,a),s=(0,V.useMemo)(()=>i?D_(i):`Playground`,[i]),c=Mn(),l=!i||i===`playground`,{content:u,loading:d,entryId:f,noteBlocks:p,sourceRevision:m,onIdentityChange:h,onSaved:g,error:_,onChange:v,onLineChange:y,onBlur:b,flush:x,committedSourceRevision:S,resetToOriginal:w}=xK({category:`playground`,name:a,mdContent:ZK.content,seedOnMount:l}),T=f??o,{onEditNote:E,onRunWorkout:D,onLogEffort:O}=fZ(),k=(0,V.useCallback)(e=>{E(),v(e)},[E,v]),[A,j]=(0,V.useState)([]),M=(0,V.useCallback)(()=>{Z.getSessionsForNote(T).then(e=>j(e.filter(e=>e.completed))).catch(()=>{})},[T]);(0,V.useEffect)(()=>{M()},[M]);let N=(0,V.useRef)(!1),P=(0,V.useRef)(null),F=(0,V.useCallback)(e=>{if(P.current=e,t?.(e),N.current)return;N.current=!0;let n=Math.min(ZK.cursorOffset,e.state.doc.length);e.dispatch({selection:wi.cursor(n)})},[t]),I=(0,V.useCallback)(async e=>{try{await x();let t=C(),n=await RM(T,e,t,`playground`);g({rawContent:n.note.rawContent,blocks:n.note.blocks,sourceRevision:n.note.sourceRevision}),SK.set(t,{block:n.block,noteId:n.session.noteId,captured:n,origin:`playground`,returnTo:`/playground/${encodeURIComponent(a)}`}),D(),c(SO(t))}catch(e){ND({title:`Workout not started`,description:e instanceof Error?e.message:`Save failed. Your draft is kept.`,variant:`destructive`})}},[T,a,c,D,x,g]),ee=(0,V.useCallback)(async e=>{try{O();let t=await lK({workoutName:s,category:`playground`,sourceNoteLabel:s,sourceNotePath:`/playground/${a}`,wodContent:e.content}),n=aK(new Date);ND({title:`Added to journal`,description:t.journalDate===n?`Added to today's journal`:`Added to ${t.journalDate}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>c(gO(t.journalDate??n)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not add to journal`,variant:`destructive`})}},[s,a,c,O]),[L,te]=(0,V.useState)(null),[R,ne]=(0,V.useState)(!1),re=(0,V.useCallback)(async e=>{let t=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;try{await Bz(T,t),ND({title:`Moved to journal`,description:`This playground now lives on ${t}.`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>c(gO(t)),children:`Open`})}),c(_O(T))}catch{ND({title:`Error`,description:`Could not move to journal`,variant:`destructive`})}},[T,c]),ie=(0,V.useCallback)(async(e,t)=>{let n=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`;try{await lK({workoutName:s,category:`playground`,sourceNoteLabel:s,sourceNotePath:`/playground/${a}`,wodContent:e.content,date:t}),c(gO(n)),ND({title:`Scheduled`,description:`Added to journal for ${n}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>c(gO(n)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not schedule workout`,variant:`destructive`})}},[s,a,c]),[ae,oe]=(0,V.useState)([]),se=TK({content:u,scriptBlocks:ae,onStartWorkout:I,results:A}),ce=(0,V.useMemo)(()=>AK({id:T,type:`playground`}),[T]),le=IK({noteId:T,stamps:ce.stamps}),[ue,de]=(0,V.useState)(null);(0,V.useEffect)(()=>{let e=!1;return Z.getNote(T).then(t=>{if(e||!t?.sourceId)return;let n=jK(t.sourceId);n&&de({noteId:T,link:n})}).catch(()=>{}),()=>{e=!0}},[T]);let fe=(0,H.jsxs)(wF,{label:`Playground actions`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>ne(!0),title:`Move this playground to a journal date`,className:`inline-flex items-center gap-1 rounded-pill border border-border bg-card px-2.5 py-1 text-xs font-semibold text-muted-foreground transition-colors hover:bg-accent`,children:[(0,H.jsx)(cr,{className:`size-3.5`,"aria-hidden":`true`}),`Move to journal`]}),(0,H.jsx)(QK,{mode:`playground`,currentWorkout:{name:s,content:u},index:se,onReset:w})]}),pe=RK(`playground`,{onPlay:I,onShare:WK,onAddToToday:ee,onSchedule:te}),me=(0,V.useCallback)(e=>{if(e===`scroll-to-workout`){let e=se.find(e=>e.type===`time`||e.type===`log`);e&&n?.(e.id)}else e===`open-search`&&r?.()},[se,n,r]),he=(0,V.useCallback)(e=>{let t={id:`code-example-block`,line:0,endLine:e.split(`
180
+ `).length,content:e};I(t)},[I]),ge=(0,V.useCallback)(e=>{e.startsWith(`/`)?window.open(e,`_blank`):c(e)},[c]),_e=(0,V.useCallback)((e,t)=>{if(e===`route`&&t.route)c(t.route);else if(e===`start-workout`){let e=ae[0];e&&I(e)}else e===`new-note`&&c(`/playground`)},[c,ae,I]),ve=(0,V.useMemo)(()=>new Map([[`playground-run-tip`,$X],[`attention`,rZ(me)],[`code-example`,iZ(e===`dark`,he)],[`syntax-group`,aZ(ge)]]),[me,he,ge,e]);return(0,V.useEffect)(()=>{document.title=`Wod.Wiki - ${s}`},[s]),d?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(qM,{notePersistence:tk,provider:pZ,children:(0,H.jsx)(PP,{title:s,actions:fe,editor:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 px-4 py-6 sm:px-6`,children:[(0,H.jsx)(LK,{data:le,up:ce.up,source:ue?.noteId===T?ue.link:null}),(0,H.jsx)(HU,{value:u,onChange:k,onCursorPositionChange:y,onBlur:b,noteId:T,noteBlocks:p,sourceRevision:m,onIdentityChange:e=>h({rawContent:e.rawContent,noteBlocks:e.blocks,sourceRevision:e.sourceRevision}),onSaved:g,beforeRun:async()=>(await x(),S()),commands:pe,enableInlineRuntime:!1,onViewCreated:F,theme:e,showLineNumbers:!1,onBlocksChange:oe,onButtonAction:_e,widgetComponents:ve}),_?(0,H.jsxs)(`p`,{role:`alert`,children:[`Save failed. `,_ instanceof Error?_.message:String(_),` Your draft is kept.`]}):null,(0,H.jsx)(hM,{noteId:T,blocks:p,sourceRevision:m,onRevert:async e=>{await x();let t=P.current?.state.field(wS);if(!t)throw Error(`The current note editor is unavailable.`);let n=mM({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:S()},e);h({rawContent:n.rawContent,noteBlocks:n.blocks,sourceRevision:n.sourceRevision}),await x()}})]})})}),L&&(0,H.jsx)(Ib,{open:!0,onClose:()=>te(null),title:`Schedule workout`,children:(0,H.jsx)(vK,{selectedDate:null,onDateSelect:e=>{ie(L,e),te(null)}})}),R&&(0,H.jsx)(Ib,{open:!0,onClose:()=>ne(!1),title:`Move playground to Journal`,description:`Choose a date. This keeps the workout's existing results and attachments.`,children:(0,H.jsx)(vK,{selectedDate:null,onDateSelect:e=>{ne(!1),re(e)}})})]})}function hZ({category:e,name:t,mdContent:n,theme:r,runMode:i,hidePlanningCommands:a,onViewCreated:o}){let s=i?i===`inline`:oL.has(e),c=!sL.has(e),l=EI(e,t),u=Mn(),{content:d,loading:f,entryId:p,noteBlocks:m,sourceRevision:h,onIdentityChange:g,onSaved:_,error:v,onChange:y,onLineChange:b,onBlur:x,flush:S,committedSourceRevision:w}=xK({category:e,name:t,mdContent:n,seedOnMount:!c}),T=(0,V.useMemo)(()=>c?{label:`${e}-${t}`,path:xO(e,t)}:null,[e,c,t]),[E,D]=(0,V.useState)(null),O=(0,V.useCallback)(async n=>{let r=C();if(s){try{await S();let e=await LM({noteId:p??l,rawContent:d,blocks:m,expectedSourceRevision:w(),metadata:{title:t},noteType:`playground`},n,r);_({rawContent:e.note.rawContent,blocks:e.note.blocks,sourceRevision:e.note.sourceRevision}),SK.set(r,{block:e.block,noteId:e.session.noteId,captured:e}),u(SO(r))}catch(e){ND({title:`Workout not started`,description:e instanceof Error?e.message:`Save failed. Your draft is kept.`,variant:`destructive`})}return}try{let i=await lK({workoutName:t,category:e,sourceNoteLabel:T?.label,sourceNotePath:T?.path,wodContent:n.content}),a=Object.values(i.blocks??{}).find(e=>e.kind===`wod`);if(!a)throw Error(`The saved journal workout is unavailable.`);SK.set(r,{block:{...n,id:a.id},noteId:i.id}),u(vO(i.journalDate??``,r))}catch(e){ND({title:`Workout not started`,description:e instanceof Error?e.message:`Save failed. Your draft is kept.`,variant:`destructive`})}},[s,l,p,t,e,T,u,d,m,S,w,_]),k=(0,V.useCallback)(async(n,r)=>{let i=lM(r),a;try{a=(await lK({workoutName:t,category:e,sourceNoteLabel:T?.label,sourceNotePath:T?.path,wodContent:n.content,date:r,wrapInWod:!0})).journalDate??``}catch{ND({variant:`destructive`,title:`Could not save workout`,description:`Failed to add "${t}" to ${i}. Please try again.`});return}u(gO(a));let o=gO(a);ND({title:`Added to ${i}`,description:`"${t}" was added to your journal.`,action:(0,H.jsx)(yD,{altText:`View journal entry`,onClick:()=>u(o),children:`View Note`}),duration:7e3})},[t,e,T,u]),A=RK(`collection-readonly`,{onPlay:O,onShare:WK,onAddToToday:a?void 0:e=>k(e,new Date),onSchedule:a?void 0:D,onOpenInPlayground:e=>VK(e,u)}),[j,M]=(0,V.useState)([]),N=(0,V.useCallback)(()=>{u(_O(l))},[u,l]),P=TK({content:d,scriptBlocks:j,onStartWorkout:O,onEditNote:c?N:void 0}),F=(0,V.useMemo)(()=>c?AK({id:l,type:`feed`}):null,[c,l]),I=IK({noteId:l,stamps:F?.stamps??[]}),ee=(0,H.jsx)(wF,{children:(0,H.jsx)(QK,{mode:`collection-readonly`,currentWorkout:{name:l,content:d},index:P})});return f?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(PP,{title:t,actions:ee,editor:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 px-4 py-6 sm:px-6`,children:[(0,H.jsx)(LK,{data:I,up:F?.up}),(0,H.jsx)(HU,{value:d,onChange:y,onCursorPositionChange:b,onBlur:x,noteId:l,noteBlocks:m,sourceRevision:h,onIdentityChange:e=>g({rawContent:e.rawContent,noteBlocks:e.blocks,sourceRevision:e.sourceRevision}),onSaved:_,beforeRun:async()=>(await S(),w()),readonly:!0,enableInlineRuntime:s,commands:A,onViewCreated:o,theme:r,showLineNumbers:!1,onBlocksChange:M}),v?(0,H.jsxs)(`p`,{role:`alert`,children:[`Save failed. `,v instanceof Error?v.message:String(v),` Your draft is kept.`]}):null]})}),E&&(0,H.jsx)(Ib,{open:!0,onClose:()=>D(null),title:`Schedule ${t}`,children:(0,H.jsx)(vK,{selectedDate:null,onDateSelect:e=>{e&&k(E,e),D(null)}})})]})}var gZ=un(`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground hover:bg-primary/80`,secondary:`border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80`,destructive:`border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80`,outline:`text-foreground`}},defaultVariants:{variant:`default`}}),_Z=V.memo(({className:e,variant:t,...n})=>(0,H.jsx)(`div`,{className:U(gZ({variant:t}),e),...n})),vZ=(0,V.forwardRef)(function({className:e,multiple:t,...n},r){return(0,H.jsxs)(`span`,{"data-slot":`control`,className:U(`group relative block w-full`,`before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-background before:shadow-sm`,`dark:before:hidden`,`after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset`,`has-data-[focus]:after:ring-2 has-data-[focus]:after:ring-ring`,`has-data-[disabled]:opacity-50 has-data-[disabled]:before:bg-muted/50 has-data-[disabled]:before:shadow-none`),children:[(0,H.jsx)(de,{ref:r,multiple:t,...n,className:U(`relative block w-full appearance-none rounded-lg py-[calc(theme(spacing.2.5)-1px)]`,`sm:py-[calc(theme(spacing.1.5)-1px)]`,t?`px-[calc(theme(spacing.3.5)-1px)] sm:px-[calc(theme(spacing.3)-1px)]`:`pr-[calc(theme(spacing.10)-1px)] pl-[calc(theme(spacing.3.5)-1px)] sm:pr-[calc(theme(spacing.9)-1px)] sm:pl-[calc(theme(spacing.3)-1px)]`,`[&_optgroup]:font-semibold`,`text-base/6 text-foreground placeholder:text-muted-foreground sm:text-sm/6 dark:[&>*]:text-white`,`border border-border/60 data-[hover]:border-border dark:border-white/10 dark:data-[hover]:border-white/20`,`bg-transparent dark:bg-white/5 dark:[&>*]:bg-muted`,`focus:outline-hidden`,`data-invalid:border-destructive data-invalid:data-[hover]:border-destructive`,`data-[disabled]:border-border/40 data-[disabled]:opacity-100 dark:data-[disabled]:border-white/15 dark:data-[disabled]:bg-white/2.5 dark:data-[hover]:data-[disabled]:border-white/15`,`dark:scheme-dark`,e)}),!t&&(0,H.jsx)(`span`,{className:`pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2`,children:(0,H.jsxs)(`svg`,{className:`size-5 stroke-muted-foreground group-has-data-[disabled]:stroke-muted-foreground/70 sm:size-4 forced-colors:stroke-[CanvasText]`,viewBox:`0 0 16 16`,"aria-hidden":`true`,fill:`none`,children:[(0,H.jsx)(`path`,{d:`M5.75 10.75L8 13L10.25 10.75`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,H.jsx)(`path`,{d:`M10.25 5.25L8 3L5.75 5.25`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`})]})})]})});function yZ(e){if(!e)return;let t=xZ(e.trim()).toLowerCase();if(Cs(t))return t;console.warn(`[effort-markdown] unknown discipline '${e}' — expected one of the canonical values; treating as unset`)}function bZ(e){return e?/[:"'\n#{}[\],&*?|\-<>=%!@`]/.test(e)||e!==e.trim()?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`:e:`""`}function xZ(e){return e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1).replace(/\\(["\\])/g,`$1`):e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1).replace(/\\'/g,`'`):e}function SZ(e){if(e===`true`)return!0;if(e===`false`)return!1;if(e===`null`||e===`~`)return null;if(/^-?\d+$/.test(e))return parseInt(e,10);if(/^-?\d+\.\d+$/.test(e))return parseFloat(e);try{return JSON.parse(e)}catch{return xZ(e)}}function CZ(e){let t=[`---`];if(t.push(`id: ${e.id}`),t.push(`slug: ${e.slug}`),t.push(`label: ${bZ(e.label)}`),e.aliases.length>0){t.push(`aliases:`);for(let n of e.aliases)t.push(` - ${bZ(n)}`)}else t.push(`aliases: []`);if(t.push(`baseAttributes:`),t.push(` met: ${e.baseAttributes.met}`),e.baseAttributes.discipline&&t.push(` discipline: ${e.baseAttributes.discipline}`),e.baseAttributes.intensityTier&&t.push(` intensityTier: ${e.baseAttributes.intensityTier}`),t.push(`registrySource: ${e.registrySource}`),e.derivation){if(t.push(`derivation:`),e.derivation.parentSlug&&t.push(` parentSlug: ${e.derivation.parentSlug}`),e.derivation.coefficients&&Object.keys(e.derivation.coefficients).length>0){t.push(` coefficients:`);for(let[n,r]of Object.entries(e.derivation.coefficients))t.push(` ${n}: ${r}`)}if(e.derivation.hardOverrides&&Object.keys(e.derivation.hardOverrides).length>0){t.push(` hardOverrides:`);for(let[n,r]of Object.entries(e.derivation.hardOverrides))t.push(` ${n}: ${JSON.stringify(r)}`)}}return e.createdAt&&t.push(`createdAt: ${e.createdAt}`),e.updatedAt&&t.push(`updatedAt: ${e.updatedAt}`),t.push(`---`),e.body&&(t.push(``),t.push(e.body)),t.join(`
181
+ `)}function wZ(e,t){let n=[],r=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!r)return n.push(`Missing YAML frontmatter delimiters (---)`),{effort:t??TZ(),errors:n};let i=r.index+r[0].length,a=e.slice(i).replace(/^\r?\n+/,``),o=r[1].split(`
182
+ `),s={},c={},l={},u,d,f=`root`,p=!1,m=!1;for(let e of o){let t=e.trim();if(t===``||t.startsWith(`#`))continue;let n=e.length-e.trimStart().length;if(n===0){if(f=`root`,t===`baseAttributes:`){f=`baseAttributes`;continue}if(t===`derivation:`){f=`derivation`;continue}let e=t.match(/^([^:]+):\s*(.*)$/);if(e){let t=e[1].trim(),n=e[2].trim();switch(t){case`id`:s.id=xZ(n);break;case`slug`:s.slug=xZ(n);break;case`label`:s.label=xZ(n);break;case`aliases`:n===`[]`&&(s.aliases=[]);break;case`registrySource`:s.registrySource=n;break;case`createdAt`:s.createdAt=n;break;case`updatedAt`:s.updatedAt=n;break;case`met`:p=!0}}}else if(n===2){if(t.startsWith(`- `)){let e=t.slice(2).trim();s.aliases||=[],s.aliases.push(xZ(e))}else if(t===`coefficients:`)f=`coefficients`,u={},l.coefficients=u;else if(t===`hardOverrides:`)f=`hardOverrides`,d={},l.hardOverrides=d;else{let e=t.match(/^([^:]+):\s*(.*)$/);if(e){let t=e[1].trim(),n=e[2].trim();if(f===`baseAttributes`)switch(t){case`met`:{let e=Number(n);n!==``&&Number.isFinite(e)?c.met=e:m=!0;break}case`discipline`:c.discipline=yZ(n);break;case`intensityTier`:c.intensityTier=n}else if(f===`derivation`)switch(t){case`parentSlug`:l.parentSlug=n||void 0}}}}else if(n===4){let e=t.match(/^([^:]+):\s*(.*)$/);if(e){let t=e[1].trim(),n=e[2].trim();f===`coefficients`&&u?u[t]=parseFloat(n)||0:f===`hardOverrides`&&d&&(d[t]=SZ(n))}}}s.aliases||=[];let h=t?.baseAttributes.met;s.baseAttributes={...h===void 0?{}:{met:h},...c},(Object.keys(l).length>0||u||d)&&(s.derivation=l),s.body=a||void 0;let g=s.slug?.trim()??``;g?/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(g)||n.push(`Invalid slug: must be lowercase letters, numbers, and hyphens only`):n.push(`Missing required field: slug`),s.label?.trim()||n.push(`Missing required field: label`);let _=s.baseAttributes?.met;return m?n.push(`Invalid baseAttributes.met: must be a positive number`):p?n.push(`Invalid met placement: 'met' must be nested under baseAttributes (missing baseAttributes.met)`):_==null?n.push(`Missing required field: baseAttributes.met`):(!Number.isFinite(_)||_<=0)&&n.push(`Invalid baseAttributes.met: must be a positive number`),s.id||=t?.id||`effort-user-${C()}`,s.registrySource||=t?.registrySource||`user`,{effort:s,errors:n}}function TZ(){return{id:`effort-user-${C()}`,slug:``,label:``,aliases:[],baseAttributes:{met:5},registrySource:`user`}}function EZ(e){let{registry:t,isReady:n,refresh:r}=mD(),[i,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(!0),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(null),[f,p]=(0,V.useState)(!1),m=u?.registrySource===`user`,h=(0,V.useRef)(!1),g=(0,V.useRef)(null);(0,V.useEffect)(()=>{if(!n||!e){s(!1);return}let r=!1;s(!0),l(null),h.current=!1;async function i(){try{let n=t.resolve(e),i=n??(typeof t.resolveByAlias==`function`?t.resolveByAlias(e):null),o=i?await Z.getNote(`effort/${i.slug}`):void 0;if(i&&!r){d(i),p(!n),g.current={id:`effort/${i.slug}`,revision:o?.sourceRevision??0},a(o?.rawContent??CZ(i)),s(!1);return}r||(l(`Effort "${e}" not found.`),s(!1))}catch(e){r||(l(e instanceof Error?e.message:`Failed to load effort.`),s(!1))}}return i(),()=>{r=!0}},[e,n,t]);let{onChange:_,onLineChange:v,onBlur:y,flush:b}=yK({onSave:(0,V.useCallback)(async n=>{if(!e||!u)return;let{effort:i,errors:a}=wZ(n,u);if(a.length>0)throw ND({title:`Invalid YAML`,description:a.join(`
183
+ `),variant:`destructive`}),Error(a.join(`
184
+ `));i.slug=i.slug.trim().toLowerCase().replace(/\s+/g,`-`),i.label=i.label.trim(),i.updatedAt=new Date().toISOString(),i.registrySource===`bundled`&&(i.id=`effort-user-${crypto.randomUUID()}`,i.slug=`${i.slug}-custom`,i.label=`${i.label} (Custom)`,i.registrySource=`user`,i.derivation={parentSlug:u.slug,coefficients:{},hardOverrides:{}},h.current=!0);try{let e=`effort/${i.slug}`,a=g.current?.id===e?g.current.revision:0,o=new qT,s=a>0?await o.updateEntry(e,{rawContent:n,expectedSourceRevision:a,title:i.label,slug:e}):await o.saveEntry({id:e,title:i.label,slug:e,rawContent:n,tags:[],targetDate:Date.now(),type:`note`,sourceId:`effort`});g.current={id:s.id,revision:s.sourceRevision},await t.upsert(i),await r(),d(i)}catch(e){throw ND({title:`Save failed`,description:e instanceof Error?e.message:`Failed to save effort.`,variant:`destructive`}),e}},[e,u,t,r]),lineIdleMs:1200});return{document:i,setDocument:(0,V.useCallback)(e=>{a(e),_(e)},[_]),isLoading:o,effort:u,isEditable:m,flush:b,cloneForEdit:(0,V.useCallback)(()=>{if(!u||u.registrySource!==`bundled`)return null;let e={...u,id:`effort-user-${crypto.randomUUID()}`,slug:`${u.slug}-custom`,label:`${u.label} (Custom)`,registrySource:`user`,derivation:{parentSlug:u.slug,coefficients:{},hardOverrides:{}},createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return d(e),a(CZ(e)),h.current=!0,e},[u]),error:c,isAliasMatch:f}}function DZ({resolved:e,effort:t}){return(0,H.jsxs)(`div`,{className:`my-6 p-4 border rounded-lg bg-muted/30 space-y-4`,children:[(0,H.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-2`,children:[(0,H.jsx)(oe,{className:`size-4`}),`Effective Resolution`]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground uppercase`,children:`Effective MET`}),(0,H.jsx)(`p`,{className:`text-xl font-bold`,children:e.met.toFixed(1)}),Math.abs(e.met-(t.baseAttributes.met||0))>.01&&(0,H.jsxs)(`span`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:[`(base: `,t.baseAttributes.met.toFixed(1),`)`]})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground uppercase`,children:`Discipline Factor`}),(0,H.jsxs)(`p`,{className:`text-xl font-bold`,children:[e.disciplineFactor.toFixed(2),`×`]})]})]}),Object.keys(e.modifiers).length>0&&(0,H.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground uppercase mb-2`,children:`Applied Modifiers`}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Object.entries(e.modifiers).map(([e,t])=>(0,H.jsxs)(_Z,{variant:`outline`,children:[e,`: `,t]},e))})]}),e.definition.derivation?.parentSlug&&(0,H.jsxs)(`div`,{className:`border-t pt-3 text-sm`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground uppercase mb-1`,children:`Parent`}),(0,H.jsx)(`span`,{className:`font-mono text-primary`,children:e.definition.derivation.parentSlug})]})]})}function OZ(){let{slug:e}=_n(),[t]=Yt(),n=Mn(),{theme:r}=zi(),i=r===`dark`?`dark`:`vs`,{registry:a,isReady:o,refresh:s}=mD(),{document:c,setDocument:l,isLoading:u,effort:d,isEditable:f,cloneForEdit:p,error:m}=EZ(e),[h,g]=(0,V.useState)([]),[_]=(0,V.useState)([]),[v,y]=(0,V.useState)(null),[b,x]=(0,V.useState)(!1),S=MO(t).mode===`create`,[w,T]=(0,V.useState)(()=>{let t=e&&e!==`new`?e.trim().toLowerCase().replace(/\s+/g,`-`):``,n=t?eT(t):``;return CZ({id:`effort-user-${crypto.randomUUID()}`,slug:t,label:n,aliases:t?[t.replace(/[-_]+/g,` `)]:[],baseAttributes:{met:5},registrySource:`user`,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()})}),[E,D]=(0,V.useState)(!1),[O,k]=(0,V.useState)(``),A=(0,V.useMemo)(()=>a?[...a.list()].sort((e,t)=>e.label.localeCompare(t.label)):[],[a]),j=(0,V.useCallback)(async()=>{if(!(!e||!O||!a))try{await Fs(a,O,e),await s(),ND({title:`Alias Linked`,description:`Linked "${e}" as an alias to ${O}.`}),n(jO(O))}catch(e){ND({title:`Failed to link alias`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}},[e,O,a,s,n]),N=(0,V.useCallback)(async()=>{if(!o||!a)return;let{effort:e,errors:t}=wZ(w);if(t.length>0){ND({title:`Invalid YAML`,description:t.join(`
185
+ `),variant:`destructive`});return}if(!e.slug.trim()){ND({title:`Missing slug`,description:`A unique slug is required.`,variant:`destructive`});return}e.slug=e.slug.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``),e.label=e.label.trim()||eT(e.slug),e.updatedAt=new Date().toISOString();try{await a.upsert(e);let t=`effort/${e.slug}`,r=await Z.getNote(t),i=new qT;r?await i.updateEntry(r.id,{rawContent:w,expectedSourceRevision:r.sourceRevision,title:e.label,slug:t}):await i.saveEntry({id:t,title:e.label,slug:t,rawContent:w,tags:[],targetDate:Date.now(),type:`note`,sourceId:`effort`}),await s(),n(jO(e.slug),{replace:!0})}catch(e){ND({title:`Save failed`,description:e instanceof Error?e.message:`Failed to save effort.`,variant:`destructive`})}},[w,o,a,s,n]),P=(0,V.useMemo)(()=>new As(a),[a]),F=(0,V.useMemo)(()=>!d||!o?null:P.resolveEffort(d.slug),[d,o,P]),I=(0,V.useCallback)(async t=>{try{let r=await lK({workoutName:d?.label??e??`Effort`,category:`effort`,sourceNotePath:jO(e??``),wodContent:t.content}),i=Object.values(r.blocks??{}).find(e=>e.kind===`wod`);if(!i)throw Error(`The saved journal workout is unavailable.`);let a=C();SK.set(a,{block:{...t,id:i.id},noteId:r.id}),n(`/run/${a}`)}catch(e){ND({title:`Workout not started`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}},[e,d?.label,n]),ee=(0,V.useCallback)(async(e,t)=>{if(!d)return;let r=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`;try{await lK({workoutName:d.label,category:`effort`,sourceNoteLabel:d.label,sourceNotePath:jO(d.slug),wodContent:e.content,date:t}),n(gO(r)),ND({title:`Scheduled`,description:`Added to journal for ${r}`,action:(0,H.jsx)(yD,{altText:`Open journal`,onClick:()=>n(gO(r)),children:`Open`})})}catch{ND({title:`Error`,description:`Could not schedule workout`,variant:`destructive`})}},[d,n]);TK({content:c,scriptBlocks:h,onStartWorkout:I,results:_});let L=(0,V.useMemo)(()=>e?AK({id:`effort/${e}`,type:`collection`}):null,[e]),te=IK({noteId:`effort/${e}`,stamps:L?.stamps??[],effortSlug:e}),R=RK(`collection-readonly`,{onPlay:I,onShare:WK,onSchedule:y});(0,V.useEffect)(()=>{d&&(window.document.title=`Wod.Wiki - ${d.label}`)},[d]);let ne=(0,V.useCallback)(()=>{let e=p();e&&ND({title:`Cloned`,description:`Created a custom copy of "${d?.label??e.label}". You can now edit it.`})},[p,d?.label]);if(!o)return(0,H.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,H.jsx)(`div`,{className:`animate-pulse h-4 w-32 bg-muted rounded`})});if(S)return(0,H.jsxs)(`div`,{className:`px-6 lg:px-10 py-6`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 mb-4`,children:[(0,H.jsx)(W,{variant:`ghost`,size:`icon`,onClick:()=>n(DO()),title:`Back to catalog`,children:(0,H.jsx)(M,{className:`size-4`})}),(0,H.jsx)(`h1`,{className:`text-xl font-bold tracking-tight`,children:`Create Custom Effort`})]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:`Edit the YAML frontmatter and body, then create.`}),(0,H.jsx)(`textarea`,{className:`w-full h-96 p-4 font-mono text-sm border rounded-md bg-background`,value:w,onChange:e=>T(e.target.value),"aria-label":`Effort document`}),(0,H.jsxs)(`div`,{className:`mt-4 flex gap-2`,children:[(0,H.jsx)(W,{onClick:N,children:`Create Effort`}),(0,H.jsx)(W,{variant:`outline`,onClick:()=>n(DO()),children:`Cancel`})]})]});if(u)return(0,H.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,H.jsx)(`div`,{className:`animate-pulse h-4 w-32 bg-muted rounded`})});if(m||!d)return(0,H.jsxs)(`div`,{"data-testid":OL.EFFORT_NOT_FOUND,className:`flex flex-col items-center justify-center gap-6 py-16 px-4 text-center max-w-lg mx-auto`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`h2`,{className:`text-xl font-semibold tracking-tight`,children:[`Effort “`,e,`” not found`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This movement has not been populated in the effort catalog yet. You can create a new definition page for it or link it as an alias to an existing effort.`})]}),E?(0,H.jsxs)(`div`,{className:`w-full space-y-4 p-4 border rounded-lg bg-card text-left`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsxs)(`label`,{className:`text-xs font-medium text-foreground`,children:[`Select target effort for “`,e,`”:`]}),(0,H.jsx)(vZ,{value:O,onChange:e=>k(e.target.value),"data-testid":OL.EFFORT_NOT_FOUND_ALIAS_SELECT,children:A.map(e=>(0,H.jsxs)(`option`,{value:e.slug,children:[e.label,` (`,e.slug,`)`]},e.slug))})]}),(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(W,{variant:`ghost`,size:`sm`,onClick:()=>D(!1),children:`Cancel`}),(0,H.jsx)(W,{size:`sm`,onClick:j,disabled:!O,"data-testid":OL.EFFORT_NOT_FOUND_ALIAS_CONFIRM,children:`Confirm Link`})]})]}):(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3`,children:[(0,H.jsx)(W,{onClick:()=>n(jO(e,void 0,{mode:`create`})),"data-testid":OL.EFFORT_NOT_FOUND_CREATE_BTN,children:`Create Effort Page`}),(0,H.jsx)(W,{variant:`secondary`,onClick:()=>{D(!0),A.length>0&&!O&&k(A[0].slug)},"data-testid":OL.EFFORT_NOT_FOUND_ALIAS_BTN,children:`Link as Alias`}),(0,H.jsx)(W,{variant:`outline`,onClick:()=>n(DO()),children:`Back to Catalog`})]})]});let re=(0,H.jsxs)(wF,{primary:f?void 0:(0,H.jsxs)(W,{variant:`outline`,onClick:ne,"data-testid":OL.EFFORT_DETAIL_CLONE_BTN,children:[(0,H.jsx)(Se,{className:`size-4 mr-1.5`}),`Clone`]}),children:[(0,H.jsx)(W,{variant:`ghost`,size:`icon`,onClick:()=>uL()?n(-1):n(DO()),"aria-label":`Back to catalog`,title:uL()?`Back`:`Back to catalog`,children:(0,H.jsx)(M,{className:`size-4`})}),(0,H.jsx)(_Z,{"data-testid":OL.EFFORT_DETAIL_SOURCE,variant:d.registrySource===`bundled`?`secondary`:`default`,children:d.registrySource===`bundled`?`Bundled`:`Custom`}),F&&(0,H.jsxs)(W,{variant:b?`default`:`outline`,onClick:()=>x(e=>!e),children:[(0,H.jsx)(oe,{className:`size-4 mr-1.5`}),b?`Hide Resolved`:`Show Resolved`]})]}),ie=`effort/${d.slug}`;return(0,H.jsxs)(`div`,{"data-testid":OL.EFFORT_DETAIL_ROOT,className:`contents`,children:[(0,H.jsx)(PP,{title:d.label,titleTestId:OL.EFFORT_DETAIL_LABEL,actions:re,editor:(0,H.jsxs)(`div`,{className:`relative`,"data-testid":OL.EFFORT_DETAIL_NOTEBOOK_EDITOR,children:[b&&F&&(0,H.jsx)(`div`,{className:`px-6 lg:px-10 pt-4`,children:(0,H.jsx)(DZ,{resolved:F,effort:d})}),(0,H.jsx)(HU,{noteId:ie,value:c,onChange:l,theme:i,readonly:!1,showLineNumbers:!0,enablePreview:!0,enableLinting:!0,enableOverlay:!0,mode:`edit`,commands:R,onBlocksChange:g}),(0,H.jsx)(LK,{data:te,up:L?.up,relatedLabel:`Used in`})]})}),v&&(0,H.jsx)(Ib,{open:!0,onClose:()=>y(null),title:`Schedule workout`,children:(0,H.jsx)(vK,{selectedDate:null,onDateSelect:e=>{ee(v,e),y(null)}})})]})}var kZ=`h-11 w-full rounded-md border border-input bg-background px-3 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`;function AZ({open:e,onOpenChange:t,entry:n,mode:r,provider:i,onSaved:a,onCloned:o}){let[s,c]=(0,V.useState)(``),[l,u]=(0,V.useState)(``),[d,f]=(0,V.useState)(``),[p,m]=(0,V.useState)([]),[h,g]=(0,V.useState)(!1),[_,v]=(0,V.useState)(null),y=(0,V.useRef)(!1),b=n.id,x=n.journalDate,S=n.slug,C=n.sourceId;(0,V.useEffect)(()=>{e&&(c(x??(r===`clone`?lk():``)),u(r===`clone`?``:S??``),f(C??``),v(null))},[e,r,b,x,S,C]),(0,V.useEffect)(()=>{if(!e||r!==`relationships`)return;let t=!1;return i.getEntries().then(e=>{t||m(e.filter(e=>e.id!==n.id&&!e.catalog))}).catch(()=>{}),()=>{t=!0}},[e,r,i,n.id]);let w=r===`clone`,T=`note-placement-sources-${n.id}`,E=()=>{y.current||t(!1)};return(0,H.jsx)(Ib,{open:e,onClose:E,title:w?`Clone note`:`Note relationships`,description:w?`Independent copy. Results and attachments are not copied.`:void 0,presentation:`sheet`,footer:(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(W,{type:`button`,variant:`outline`,size:`lg`,onClick:E,disabled:h,children:`Cancel`}),(0,H.jsx)(W,{type:`submit`,form:`note-placement-form`,size:`lg`,disabled:h,children:h?`Saving…`:w?`Clone`:`Save`})]}),children:(0,H.jsxs)(`form`,{id:`note-placement-form`,onSubmit:async e=>{if(e.preventDefault(),!y.current){y.current=!0,g(!0),v(null);try{let e=s.trim(),r=l.trim(),c=d.trim(),u=e===``?null:dk(e);if(e&&!u){v(`Enter a valid date (YYYY-MM-DD).`);return}if(w){if(!e&&!r){v(`Choose a destination date or named page for the clone.`);return}let i=await mk.create({journalDate:e||void 0,slug:r||void 0,title:n.title,rawContent:n.rawContent,tags:n.tags,sourceId:n.id,type:`journal`});o?.(i),t(!1);return}let f={};if(c!==(C??``)){if(c===``)f.sourceId=null;else try{let e=await mk.resolve(c);if(!e||e.id===n.id)throw Error(`invalid source`);f.sourceId=e.id}catch{v(`Source note not found.`);return}}if(e!==(x??``)&&(f.journalDate=e===``?null:e,u&&(f.targetDate=u.date.getTime())),r!==(S??``)&&(f.slug=r===``?null:r),Object.keys(f).length===0){t(!1);return}let p=await i.updateEntry(n.id,f);a?.(p),t(!1)}catch{v(`Could not save — your fields are kept. Try again.`)}finally{y.current=!1,g(!1)}}},className:`flex flex-col gap-4`,noValidate:!0,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`note-placement-date`,className:`text-sm font-medium`,children:`Journal date`}),(0,H.jsx)(`input`,{id:`note-placement-date`,type:`date`,className:kZ,value:s,onChange:e=>c(e.target.value),disabled:h}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:w?`Defaults to the note’s date.`:`Leave empty to detach from the calendar.`})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`note-placement-slug`,className:`text-sm font-medium`,children:`Named page`}),(0,H.jsx)(`input`,{id:`note-placement-slug`,type:`text`,className:kZ,value:l,onChange:e=>u(e.target.value),placeholder:`e.g. marathon-block`,autoCapitalize:`none`,spellCheck:!1,disabled:h}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Optional /p/<slug> link. Typing an existing page's slug shares that page with its notes — it does not create a unique copy.`})]}),w?null:(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`label`,{htmlFor:`note-placement-source`,className:`text-sm font-medium`,children:`Source note`}),(0,H.jsx)(`input`,{id:`note-placement-source`,type:`text`,className:kZ,value:d,onChange:e=>f(e.target.value),list:T,autoCapitalize:`none`,spellCheck:!1,disabled:h}),(0,H.jsx)(`datalist`,{id:T,children:p.map(e=>(0,H.jsx)(`option`,{value:e.id,children:e.title||`Untitled`},e.id))}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Leave empty to clear.`})]}),_&&(0,H.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:_})]})})}var jZ=new qT;function MZ({noteId:e,theme:t}){let n=Mn(),r=zt(),[i]=Yt(),[a,o]=(0,V.useState)(null),[s,c]=(0,V.useState)(!1),l=(0,V.useRef)(0),u=(0,V.useRef)(null),d=(0,V.useRef)(async()=>{}),f=r.pathname.startsWith(`/p/`),[p,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(null),y=OW();(0,V.useEffect)(()=>{pN().catch(()=>{})},[e]),(0,V.useEffect)(()=>{let t=!1;return o(null),c(!1),m(null),jZ.getEntry(e).then(e=>{if(!t){if(!e){c(!0);return}o(e),l.current=e.sourceRevision??0,u.current={rawContent:e.rawContent,blocks:e.blocks??{},sourceRevision:e.sourceRevision??0}}}).catch(()=>{t||c(!0)}),()=>{t=!0}},[e,i]);let b=a?.sourceId;(0,V.useEffect)(()=>{if(v(null),!b)return;let e=!1;return jZ.getEntry(b).then(t=>{e||v(t)}).catch(()=>{}),()=>{e=!0}},[b]);let x=(0,V.useMemo)(()=>a?AK(a):{zone:null,up:null,stamps:[]},[a]);VD(x.zone);let[S,w]=(0,V.useState)([]),[T,E]=(0,V.useState)([]),D=a?.id;(0,V.useEffect)(()=>{if(E([]),w([]),!D)return;let e=!1,t=()=>{Z.getSessionsForNote(D).then(t=>{e||E(t)}).catch(()=>{})};t();let n=HR(n=>{!e&&n.noteId===D&&t()});return()=>{e=!0,n()}},[D]);let O=(0,V.useCallback)(async t=>{if(a)try{await d.current();let e=u.current;if(!e)throw Error(`The note draft is unavailable.`);let r=C(),i=await LM({noteId:a.id,rawContent:e.rawContent,blocks:e.blocks,expectedSourceRevision:l.current},t,r);l.current=i.note.sourceRevision,SK.set(r,{block:i.block,noteId:a.id,captured:i,returnTo:_O(a.id)}),n(SO(r))}catch(t){m({noteId:e,message:`Workout not started. ${t instanceof Error?t.message:String(t)} Your draft is kept.`})}},[a,e,n]);TK({content:a?.rawContent??``,scriptBlocks:S,onStartWorkout:O,results:T});let k=IK(a?{noteId:a.id,stamps:x.stamps}:{noteId:``,stamps:[]}),A=(0,V.useCallback)(e=>{l.current=e.sourceRevision;let t=u.current,n=t?.rawContent===e.rawContent&&JSON.stringify(Object.values(t.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))===JSON.stringify(Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]));o(t=>t&&{...t,...n?{blocks:e.blocks}:{},sourceRevision:e.sourceRevision})},[]),j=(0,V.useCallback)(async t=>{let n=await tk.saveNote({noteId:e,rawContent:t.rawContent,blocks:t.blocks,expectedSourceRevision:l.current});return A({rawContent:n.rawContent,blocks:n.blocks??{},sourceRevision:n.sourceRevision??l.current}),m(null),o(e=>e?.id===n.id?{...e,title:n.title}:e),{rawContent:n.rawContent,blocks:n.blocks??{},sourceRevision:n.sourceRevision??0}},[e,A]),{onChange:M,onBlur:N,flush:P}=yK({onSave:async e=>{await j(e)},lineIdleMs:500,getSnapshotKey:e=>JSON.stringify([e.rawContent,Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport])]),onError:t=>m({noteId:e,message:`Save failed. ${t instanceof Error?t.message:String(t)} Your draft is kept. Retry saving.`})});d.current=P;let F=(0,V.useCallback)(e=>{let t=u.current?.rawContent!==e.rawContent||JSON.stringify(Object.values(u.current?.blocks??{}).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]))!==JSON.stringify(Object.values(e.blocks).map(e=>[e.id,e.from,e.to,e.kind,e.dialect,e.sport]));u.current=e,t&&M(e)},[M]),I=(0,V.useCallback)(e=>{o(t=>t&&{...t,rawContent:e})},[]),ee=(0,V.useCallback)(async e=>{await P();let t=u.current;if(!t)throw Error(`The note draft is unavailable.`);let n=mM({...t,sourceRevision:l.current},e),r=await j(n);u.current=r,o(e=>e&&{...e,...r})},[P,j]),L=(0,V.useCallback)(()=>Promise.resolve(),[]),te;if(s)te=(0,H.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 text-zinc-400`,children:[(0,H.jsx)(`p`,{children:`Note not found.`}),(0,H.jsx)(W,{variant:`outline`,onClick:()=>n(-1),children:`Go back`})]});else if(!a)te=(0,H.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-zinc-400`,children:`Loading…`});else{let r=`inline-flex min-h-11 items-center gap-1 rounded-pill border border-border bg-card px-2.5 text-xs font-semibold text-muted-foreground transition-colors hover:bg-accent`,i=(0,H.jsxs)(wF,{label:`Note actions`,children:[(0,H.jsxs)(`button`,{type:`button`,className:r,onClick:()=>g(`relationships`),children:[(0,H.jsx)(xr,{className:`size-3.5`,"aria-hidden":`true`}),`Note relationships`]}),(0,H.jsxs)(`button`,{type:`button`,className:r,onClick:()=>g(`clone`),children:[(0,H.jsx)(st,{className:`size-3.5`,"aria-hidden":`true`}),`Clone`]})]});te=(0,H.jsxs)(qM,{notePersistence:tk,provider:jZ,children:[(0,H.jsx)(PP,{title:a.title,subtitle:_O(a.id),actions:i,editor:(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 px-4 py-6 sm:px-6 min-w-0 max-w-full`,children:[(0,H.jsx)(LK,{data:k,up:x.up}),(a.journalDate||a.slug||a.sourceId)&&(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[a.journalDate&&(0,H.jsx)(Tt,{to:hO(a.journalDate),className:`underline-offset-2 hover:underline`,children:a.journalDate}),a.slug&&(0,H.jsxs)(Tt,{to:TO(a.slug),className:`underline-offset-2 hover:underline`,children:[`/p/`,a.slug]}),a.sourceId&&(0,H.jsxs)(`span`,{children:[`Cloned from`,` `,_?(0,H.jsx)(Tt,{to:_O(_.id),className:`underline-offset-2 hover:underline`,children:_.title||_.id}):(()=>{let e=jK(a.sourceId);return e?(0,H.jsx)(Tt,{to:e.to,className:`underline-offset-2 hover:underline`,children:e.title}):a.sourceId})()]})]}),y?(0,H.jsx)(`div`,{className:`rounded-lg border border-border bg-card p-4 shadow-sm min-h-[240px] focus-within:border-accent/80 transition-colors`,children:(0,H.jsx)(HU,{value:a.rawContent,onChange:I,onBlur:N,noteId:a.id,noteBlocks:a.blocks,sourceRevision:a.sourceRevision,onIdentityChange:F,onSaved:A,beforeRun:async()=>(await P(),l.current),readonly:f,theme:t,showLineNumbers:!1,onCompleteWorkout:L,onBlocksChange:w,placeholder:`Write workout or notes here…`})}):(0,H.jsx)(`div`,{className:`flex items-center justify-center text-zinc-400 text-sm py-8`,children:`Loading…`}),(0,H.jsx)(hM,{noteId:a.id,blocks:a.blocks,sourceRevision:a.sourceRevision,onRevert:f?void 0:ee}),p?.noteId===e&&(0,H.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:p.message})]})}),h!==null&&(0,H.jsx)(AZ,{open:!0,onOpenChange:e=>{e||g(null)},entry:a,mode:h,provider:jZ,onSaved:e=>o(t=>t&&t.id===e.id?{...t,journalDate:e.journalDate,slug:e.slug,sourceId:e.sourceId}:t),onCloned:e=>n(`${_O(e.id)}?edit=1`)})]})}return te}var NZ=new qT;function PZ(e){let t=new Map;for(let n of e){let e=n.tags[0]?.toLowerCase()??`untagged`,r=t.get(e);r?r.push(n):t.set(e,[n])}return Array.from(t.entries()).map(([e,t])=>({id:`day-group-${e}`,label:e===`untagged`?`Untagged`:`#${e}`,entries:t}))}function FZ({slug:e,date:t}){let[n,r]=(0,V.useState)(null);(0,V.useEffect)(()=>{let n=!1;return NZ.getEntries().then(i=>{if(n)return;let a=new Date(`${t}T00:00:00`).getTime(),o=a+864e5,s=i.filter(t=>{if(t.catalog!==e)return!1;let n=t.createdAt;return Number.isFinite(n)&&n>=a&&n<o});r(s.sort((e,t)=>t.createdAt-e.createdAt))}).catch(()=>{n||r([])}),()=>{n=!0}},[e,t]);let i=(0,V.useMemo)(()=>n?PZ(n):[],[n]),{setL3Items:a}=BD();(0,V.useEffect)(()=>{if(i.length===0){a([]);return}let e=i.map(e=>({id:e.id,label:e.label,level:3,action:{type:`scroll`,sectionId:e.id}}));return a(e),()=>a([])},[i,a]);let o=n===null?(0,H.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-zinc-400`,children:`Loading…`}):n.length===0?(0,H.jsxs)(`p`,{className:`rounded-lg border border-dashed border-border p-6 text-sm text-muted-foreground`,children:[`No notes in this collection for `,t,`.`]}):(0,H.jsx)(`div`,{className:`flex flex-col gap-6`,children:i.map(e=>(0,H.jsxs)(`section`,{id:e.id,className:`flex flex-col rounded-lg border border-border overflow-hidden`,children:[(0,H.jsxs)(`h3`,{className:`px-4 py-2 text-xs font-black uppercase tracking-wider text-muted-foreground bg-muted/40`,children:[e.label,` · `,e.entries.length]}),(0,H.jsx)(`ul`,{className:`flex flex-col divide-y divide-border`,children:e.entries.map(e=>(0,H.jsx)(`li`,{children:(0,H.jsxs)(Tt,{to:_O(e.id),className:`flex flex-col gap-0.5 px-4 py-3 hover:bg-muted/50`,children:[(0,H.jsx)(`span`,{className:`font-medium`,children:e.title}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.createdAt).toLocaleTimeString()})]})},e.id))})]},e.id))});return(0,H.jsx)(PP,{title:t,subtitle:e,editor:(0,H.jsx)(`div`,{className:`flex flex-col gap-6 px-4 py-6 sm:px-6`,children:o})})}var IZ=`__new__`;function LZ(e){return e.open?(0,H.jsx)(RZ,{...e},e.subsetQuery??`(whole-store)`):null}function RZ({onOpenChange:e,initialQuery:t,subsetQuery:n,rangeStart:r,rangeEnd:i,preferredUnit:a}){let o=Mn(),{items:s,loading:c}=ak(),l=s.filter(e=>e.editable),[u,d]=(0,V.useState)(l[0]?.slug??IZ),[f,p]=(0,V.useState)(``),[m,h]=(0,V.useState)(null),g=()=>e(!1);return(0,H.jsx)(xJ,{open:!0,onClose:g,mode:`add`,initialWql:t,subsetQuery:n,rangeStart:r,rangeEnd:i,preferredUnit:a,onApply:async e=>{h(null);let t={title:e.title,question:e.question,type:e.type,spanCols:e.spanCols,spanFull:e.spanFull,wql:e.wql,attributes:e.attributes};try{if(u===IZ){let e=f.trim()||`New Dashboard`,n=await gk.createDashboard(e);await mk.update(n,Sg(n.rawContent,t)),g(),o(AO(mg(e)))}else{let e=await mk.resolve(u);await mk.update(e,Sg(e.rawContent,t)),g(),o(AO(u))}}catch(e){let t=e instanceof Error?e.message:String(e);throw h(t),e}},applyLabel:`Add to dashboard`,destination:(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Destination`}),c?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading dashboards…`}):(0,H.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[l.map(e=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":u===e.slug,onClick:()=>d(e.slug),className:`rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors ${u===e.slug?`border-primary/60 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:e.title},e.slug)),(0,H.jsxs)(`button`,{type:`button`,"data-testid":`dashboard-dest-new`,"aria-pressed":u===IZ,onClick:()=>d(IZ),className:`flex items-center gap-1 rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors ${u===IZ?`border-primary/60 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:[(0,H.jsx)(ft,{className:`size-3`}),` New dashboard`]})]}),u===IZ&&(0,H.jsx)(`input`,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`New Dashboard`,"data-testid":`dashboard-new-title`,className:`w-full sm:w-64 rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-foreground focus:outline-none focus:border-primary`})]}),m&&(0,H.jsxs)(`p`,{role:`alert`,"data-testid":`dashboard-save-error`,className:`mt-2 text-xs text-destructive font-mono`,children:[`Could not save: `,m]})]})})}function zZ({catalog:e}){let[t,n]=(0,V.useState)([]),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(``);return(0,V.useEffect)(()=>{let t=!1,r=()=>{e.listByPrefix(a,50).then(e=>{t||n(e)}).catch(()=>{})};r();let i=e.onChange?.(()=>r());return()=>{t=!0,i?.()}},[e,a]),(0,H.jsxs)(`section`,{className:`rounded-lg border p-3 text-sm`,"data-testid":`available-fields`,children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between font-medium`,onClick:()=>i(e=>!e),children:[(0,H.jsxs)(`span`,{children:[`Available fields (`,t.length,`)`]}),(0,H.jsx)(`span`,{"aria-hidden":!0,children:r?`▾`:`▸`})]}),r&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`input`,{className:`mt-2 w-full rounded border px-2 py-1`,placeholder:`Filter fields…`,value:a,onChange:e=>o(e.target.value)}),(0,H.jsxs)(`ul`,{className:`mt-2 max-h-64 space-y-1 overflow-auto`,children:[t.map(e=>(0,H.jsxs)(`li`,{className:`flex items-baseline justify-between gap-2`,children:[(0,H.jsx)(`span`,{className:`font-mono`,children:e.path}),(0,H.jsxs)(`span`,{className:`text-xs opacity-70`,children:[e.kind,e.dimension?` · ${e.dimension}`:``,e.units.length?` · ${e.units.join(`/`)}`:``,e.spellings.length&&e.spellings[0]!==e.path?` · “${e.spellings[0]}”`:``]})]},e.id)),t.length===0&&(0,H.jsx)(`li`,{className:`opacity-60`,children:`No discovered fields for this prefix.`})]})]})]})}function BZ(e){return{id:e.id,path:e.path,kind:e.kind,...e.dimension?{dimension:e.dimension}:{},units:Object.keys(e.units??{}),spellings:Object.keys(e.spellings??{})}}var VZ=new class{storageInstance;listeners=new Set;constructor(e=FT){this.storageInstance=e}async listByPrefix(e,t=20){let n=e&&typeof IDBKeyRange<`u`?IDBKeyRange.bound(e,`${e}\uFFFF`,!1,!0):void 0;return(await this.storageInstance.readonly(`field_catalog`).getAllFromIndex(`by-path`,n,t)).map(BZ)}async lookup(e){return(await this.storageInstance.readonly(`field_catalog`).getAllFromIndex(`by-path`,e)).map(BZ)}async listValues(e,t,n=20){let r=await this.lookup(e),i=[];for(let e of r){if(i.length>=n)break;let r=t&&typeof IDBKeyRange<`u`?IDBKeyRange.bound([e.id,t],[e.id,`${t}\uFFFF`],!1,!0):void 0,a=await this.storageInstance.readonly(`field_values`).getAllFromIndex(`by-field`,r,n-i.length);for(let e of a)i.push({fieldId:e.fieldId,value:e.value})}return i}notifyChanged(){for(let e of this.listeners)e()}observeStore(e){}}(FT),HZ=[`totalVolume`,`tis`,`sessionLoad`,`totalReps`],UZ=[`effort`,`discipline`,`intensity`,`tags`,`note`,`origin`];function WZ(){let[e,t]=(0,V.useState)(HZ);return(0,V.useEffect)(()=>{let e=!1;async function n(){try{let n=Date.now(),r=n-31536e6,i=await vN.getFactsByTimeRange(r,n);if(e)return;let a=new Set([...HZ,...i.map(e=>e.metricKey)].filter(e=>e!==void 0));t(Array.from(a).sort())}catch{}}return n(),()=>{e=!0}},[]),{metricKeys:e,tagKeys:UZ}}var GZ=[4,8,16],KZ=`sum:totalVolume{}`;function qZ(e){let t=Number.parseInt(e??``,10);return GZ.includes(t)?t:16}function JZ(e={}){let{defaultQuery:t=KZ,runOnLanding:n=!1}=e,[r,i]=Yt(),a=r.get(`q`)??``,o=qZ(r.get(`weeks`)),[s,c]=(0,V.useState)(()=>a&&!X(a).error?a:t),[l,u]=(0,V.useState)(a||(n?t:``)),d=(0,V.useRef)(s);d.current=s;let f=(0,V.useRef)(r);f.current=r;let p=(0,V.useRef)(!0),m=(0,V.useRef)(a);m.current=a;let h=(0,V.useRef)(a);return(0,V.useEffect)(()=>{a!==h.current&&(h.current=a,d.current!==a&&(p.current=!0,c(a&&!X(a).error?a:t),u(a||(n?t:``))))},[a,t,n]),{draft:s,setDraft:(0,V.useCallback)(e=>{if(e===d.current)return;let t=new URLSearchParams(f.current);t.set(`q`,e),i(t,{replace:!p.current}),p.current=!1,c(e)},[i]),submitted:l,submit:(0,V.useCallback)(e=>{let t=e??d.current;if(X(t).error)return;if(p.current&&m.current===t){u(t);return}let n=new URLSearchParams(f.current);n.set(`q`,t),i(n,{replace:!0}),p.current=!0,u(t)},[i]),weeks:o,setWeeks:(0,V.useCallback)(e=>{let t=new URLSearchParams(f.current);t.set(`weeks`,String(e)),i(t,{replace:!0})},[i])}}function YZ({weeks:e,onWeeks:t,unitForced:n}){let[r,i]=(0,V.useState)(!1),a=(0,V.useRef)(null),{unit:o,setUnit:s}=ib();(0,V.useEffect)(()=>{if(!r)return;let e=e=>{a.current?.contains(e.target)||i(!1)},t=e=>{e.key===`Escape`&&i(!1)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[r]);let c=e=>()=>{e(),i(!1)};return(0,H.jsxs)(`div`,{ref:a,className:`relative`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),"data-testid":`explorer-options`,"aria-expanded":r,className:U(`flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-xs font-semibold transition-colors`,r?`border-primary/60 text-primary bg-primary/10`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`),children:[(0,H.jsx)(_t,{className:`size-3.5`}),`Options`,(0,H.jsx)(Mt,{className:U(`size-3 transition-transform`,r&&`rotate-180`)})]}),r&&(0,H.jsxs)(`div`,{className:`absolute right-0 top-full z-40 mt-1 w-72 rounded-xl border border-border bg-card shadow-xl p-1.5`,"data-testid":`explorer-options-menu`,children:[(0,H.jsx)(`div`,{className:`px-2 pt-1.5 pb-1 text-[10px] font-black uppercase tracking-widest text-muted-foreground/70`,children:`Range`}),GZ.map(n=>(0,H.jsxs)(`button`,{type:`button`,onClick:c(()=>t(n)),className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs text-foreground hover:bg-muted transition-colors`,children:[(0,H.jsx)(`span`,{className:`w-3.5 text-primary`,children:e===n?(0,H.jsx)(Vt,{className:`size-3.5`}):null}),`Past `,n,` weeks`]},n)),(0,H.jsxs)(`div`,{className:`mt-1 border-t border-border/60 px-2 pt-2 pb-1 text-[10px] font-black uppercase tracking-widest text-muted-foreground/70`,children:[`Units`,n?` — pinned by query`:``]}),[`kg`,`lb`].map(e=>(0,H.jsxs)(`button`,{type:`button`,disabled:n,onClick:c(()=>s(e)),className:U(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs transition-colors`,n?`text-muted-foreground/50 cursor-not-allowed`:`text-foreground hover:bg-muted`),children:[(0,H.jsx)(`span`,{className:`w-3.5 text-primary`,children:o===e?(0,H.jsx)(Vt,{className:`size-3.5`}):null}),e]},e))]})]})}var XZ=Z,ZZ=`sample`,QZ=6048e5;function $Z(e){return Math.round(e*10)/10}var eQ={thruster:`high`,"pull-up":`high`,"push-up":`moderate`,"air-squat":`moderate`,"double-under":`high`,"sit-up":`low`,rowing:`moderate`,running:`moderate`,"recovery-run":`low`,"back-squat":`high`,deadlift:`high`},tQ={fran:`high`,cindy:`moderate`,annie:`moderate`,rowing:`moderate`,running:`moderate`,strength:`high`,recoveryRun:`low`};function nQ(e,t,n,r){return{effortSlug:n,discipline:r,reps:e,loadLbs:t,tisSeconds:$Z(e*(n===`thruster`?2.2:1.6))}}function rQ(e,t,n){let r=330-n*16,i=Math.max(180,$Z(r+(Math.random()-.5)*20)),a=95+n*5;return{noteId:`sample-fran-${t}-${crypto.randomUUID()}`,title:`Sample — Fran (week ${16-t})`,workoutType:`fran`,timestamp:e-t*QZ,durationSeconds:i,movements:[nQ(45,a,`thruster`,`strength`),nQ(45,0,`pull-up`,`gymnastics`)]}}function iQ(e,t,n){let r=10+n+Math.round((Math.random()-.5)*2),i=Math.max(8,r);return{noteId:`sample-cindy-${t}-${crypto.randomUUID()}`,title:`Sample — Cindy (week ${16-t})`,workoutType:`cindy`,timestamp:e-t*QZ,durationSeconds:1200,movements:[{effortSlug:`pull-up`,discipline:`gymnastics`,reps:i*5,loadLbs:0,tisSeconds:$Z(i*5*1.5)},{effortSlug:`push-up`,discipline:`gymnastics`,reps:i*10,loadLbs:0,tisSeconds:$Z(i*10*1.2)},{effortSlug:`air-squat`,discipline:`bodyweight`,reps:i*15,loadLbs:0,tisSeconds:$Z(i*15*1.1)}]}}function aQ(e,t,n){let r=540-n*22,i=Math.max(360,$Z(r+(Math.random()-.5)*30));return{noteId:`sample-annie-${t}-${crypto.randomUUID()}`,title:`Sample — Annie (week ${16-t})`,workoutType:`annie`,timestamp:e-t*QZ,durationSeconds:i,movements:[{effortSlug:`double-under`,discipline:`gymnastics`,reps:150,loadLbs:0,tisSeconds:$Z(75)},{effortSlug:`sit-up`,discipline:`bodyweight`,reps:150,loadLbs:0,tisSeconds:$Z(195)}]}}function oQ(e,t,n){let r=135+n*5,i=185+n*5;return{noteId:`sample-strength-${t}-${crypto.randomUUID()}`,title:`Sample — Strength accessory (week ${16-t})`,workoutType:`strength`,timestamp:e-t*QZ,durationSeconds:1800,movements:[{effortSlug:`back-squat`,discipline:`strength`,reps:25,loadLbs:r,tisSeconds:$Z(62.5)},{effortSlug:`deadlift`,discipline:`strength`,reps:15,loadLbs:i,tisSeconds:$Z(42)}]}}function sQ(e,t,n){let r=2e3+n*250,i=$Z(r/2+(Math.random()-.5)*30);return{noteId:`sample-rowing-${t}-${crypto.randomUUID()}`,title:`Sample — Rowing (week ${16-t})`,workoutType:`rowing`,timestamp:e-t*QZ,durationSeconds:i,movements:[{effortSlug:`rowing`,discipline:`rowing`,reps:1,loadLbs:0,tisSeconds:i,distanceMeters:r}]}}function cQ(e,t,n){let r=5e3+n*500,i=$Z(r/2.8+(Math.random()-.5)*60);return{noteId:`sample-running-${t}-${crypto.randomUUID()}`,title:`Sample — Running (week ${16-t})`,workoutType:`running`,timestamp:e-t*QZ,durationSeconds:i,movements:[{effortSlug:`running`,discipline:`running`,reps:1,loadLbs:0,tisSeconds:i,distanceMeters:r}]}}function lQ(e,t,n){let r=3e3+n*50,i=$Z(r/2.2+(Math.random()-.5)*60);return{noteId:`sample-recovery-run-${t}-${crypto.randomUUID()}`,title:`Sample — Recovery run (week ${16-t})`,workoutType:`recoveryRun`,timestamp:e-t*QZ,durationSeconds:i,movements:[{effortSlug:`recovery-run`,discipline:`running`,reps:1,loadLbs:0,tisSeconds:i,distanceMeters:r}]}}function uQ(e){let t=[];for(let n=0;n<16;n++){let r=Math.floor(n/4);t.push(oQ(e,n,n)),n%4==0?t.push(rQ(e,n,r)):n%4==1?t.push(iQ(e,n,r)):n%4==2?t.push(aQ(e,n,r)):n===3||n===11?t.push(sQ(e,n,r)):(n===7||n===15)&&t.push(cQ(e,n,r)),t.push(lQ(e,n,n))}return t.sort((e,t)=>e.timestamp-t.timestamp)}function dQ(e){let t=e.timestamp,n=tQ[e.workoutType],r=e.movements.reduce((e,t)=>e+t.reps,0),i=e.movements.reduce((e,t)=>e+t.reps*t.loadLbs,0),a=e.movements.reduce((e,t)=>e+t.tisSeconds,0),o=e.movements.reduce((e,t)=>e+(t.distanceMeters??0),0),s=$Z(i/100+r+e.durationSeconds/10),c=[],l=(e,n,r,i,a)=>{let o={canonicalKey:i};a?.effortSlug&&(o.effortSlug=a.effortSlug),a?.discipline&&(o.effortDiscipline=a.discipline),a?.intensityTier&&(o.effortIntensityTier=a.intensityTier);let s={id:c.length,outputType:`analytics`,timeSpan:{started:t},metrics:[{type:G.Label,value:e,origin:`analyzed`},{type:G.Metric,value:n,unit:r,metadata:o,origin:`analyzed`}],sourceBlockKey:``,stackLevel:0};c.push(s)};if(l(`Elapsed time`,e.durationSeconds,`s`,`elapsed`,{intensityTier:n}),l(`Total reps`,r,`reps`,`totalReps`,{intensityTier:n}),l(`Time in motion`,$Z(a),`s`,`tis`,{intensityTier:n}),i>0&&l(`Total volume`,$Z(i),`lb`,`totalVolume`,{intensityTier:n}),o>0){let t=e.movements.find(e=>e.distanceMeters&&e.distanceMeters>0)?.discipline;l(`Total distance`,$Z(o),`m`,`totalDistance`,{discipline:t,intensityTier:n})}l(`Session load`,s,`AU`,`sessionLoad`,{intensityTier:n});for(let t of e.movements){let e=t.reps*t.loadLbs,n=eQ[t.effortSlug]??`moderate`,r={effortSlug:t.effortSlug,discipline:t.discipline,intensityTier:n};l(`Total reps`,t.reps,`reps`,`totalReps`,r),l(`Time in motion`,t.tisSeconds,`s`,`tis`,r),e>0&&l(`Total volume`,$Z(e),`lb`,`totalVolume`,r),l(`Session load`,$Z(e/100+t.reps+t.tisSeconds/10),`AU`,`sessionLoad`,r)}return c}function fQ(e,t){let n=`${`sample-${e.noteId}`}-result`,r=e.timestamp,i=r+e.durationSeconds*1e3;return{id:n,noteId:e.noteId,blockId:`sample-block`,blockVersion:1,blockContentId:t,origin:`journal`,status:`completed`,createdAt:Date.now(),startTime:r,endTime:i,duration:e.durationSeconds*1e3,completed:!0}}async function pQ(){return(await XZ.getTagByLabel(ZZ))?.id}async function mQ(){return(await XZ.getNotesForTag(ZZ)).map(e=>e.id)}async function hQ(){let e=await mQ();return e.length!==0&&(await XZ.scanAll()).some(t=>e.includes(t.noteId))}async function gQ(){if(await hQ()){let e=await mQ();return{facts:(await XZ.scanAll()).filter(t=>t.grain===`summary`&&e.includes(t.noteId)).length}}let e=uQ(Date.now()),t=0;for(let n of e){let e=n.movements.map(e=>`${e.distanceMeters?`${e.distanceMeters}m`:e.reps} ${e.effortSlug.replaceAll(`-`,` `)}${e.loadLbs?` ${e.loadLbs}lb`:``}`).join(`
186
+ `),r=`# ${n.title}\n\n\`\`\`log\n${e}\n\`\`\`\n`,i=Aa(r,{sourceRevision:1,createId:()=>`sample-block`}),a=dQ(n),o=fQ(n,xa(e)),s={noteId:n.noteId,resultId:o.id,blockId:o.blockId,blockVersion:o.blockVersion,blockContentId:o.blockContentId,origin:o.origin,pageId:o.pageId,workoutTimestamp:n.timestamp};t+=await XZ.withTransaction([`notes`,`block_revisions`,`block_index`,`block_efforts`,`tags`,`note_tags`,`tag_types`,`sessions`,`events`],async e=>{await e.saveNoteSource({noteId:n.noteId,rawContent:r,blocks:i,expectedSourceRevision:0,metadata:{title:n.title},noteType:`playground`,createdAt:n.timestamp}),await e.setNoteTags(n.noteId,[ZZ]),await e.saveSession(o),await e.appendEvents(lh(a,s));let t=uh(a,s);return await e.finalizeSummaries(o.id,t),t.length})}return{facts:t}}async function _Q(){let e=await mQ();if(e.length!==0){for(let t of e)await XZ.deleteEvents((await XZ.getEventsForNote(t)).map(e=>e.id)),await XZ.deleteNote(t);if((await XZ.getNotesForTag(ZZ)).length===0){let e=await pQ();e&&await XZ.deleteTag(e)}}}function vQ({result:e,onChanged:t,layout:n=`inline`,refreshKey:r}){let[i,a]=(0,V.useState)(void 0),[o,s]=(0,V.useState)(!1),c=(0,V.useCallback)(async()=>{a(await hQ()),s(!1)},[]);(0,V.useEffect)(()=>{c()},[c,r]);let l=async()=>{await gQ(),await c(),t?.()},u=(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-3 rounded-md border border-border bg-muted/50 px-3 py-2 text-xs text-foreground`,children:[(0,H.jsx)(`span`,{children:`Sample data loaded`}),(0,H.jsx)(`button`,{onClick:async()=>{await _Q(),await c(),t?.()},className:`font-medium text-destructive hover:text-destructive/80 transition-colors`,children:`Purge sample data`}),(0,H.jsx)(`button`,{onClick:()=>s(!0),className:`text-muted-foreground hover:text-foreground transition-colors`,"aria-label":`Dismiss`,children:(0,H.jsx)(Te,{size:14})})]});if(n===`banner`)return i&&!o?u:null;let d=i?o?null:u:(0,H.jsxs)(`div`,{className:`text-center`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:`Facts appear when you log or run workouts.`}),(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-3`,children:[(0,H.jsx)(`button`,{onClick:l,className:`text-xs font-medium rounded-md bg-primary text-primary-foreground px-3 py-1.5 hover:opacity-90 transition-opacity`,children:`Preview with sample data`}),(0,H.jsx)(Tt,{to:`/collections`,className:`text-xs text-primary underline-offset-2 hover:underline`,children:`Log your first workout`})]})]});return n===`card`?(0,H.jsxs)(`div`,{className:`bg-card border border-border rounded-lg p-6 flex flex-col items-center justify-center text-sm text-muted-foreground`,children:[e!==void 0&&(0,H.jsx)(py,{result:e}),i!==void 0&&d&&(0,H.jsx)(`div`,{className:`mt-3`,children:d})]}):(0,H.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center`,children:[e!==void 0&&(0,H.jsx)(py,{result:e}),i!==void 0&&d&&(0,H.jsx)(`div`,{className:`mt-3`,children:d})]})}var yQ=`:dashboard{}`,bQ=864e5,xQ=`agg:metric{filters} by {dims} .rollup(period)`,SQ=new Set([`tags`,`catalog`,`text`,`type`,`has`]);function CQ(e){let t=e.find(e=>e.key===`source`&&!e.negate);return t?t.values.map(e=>e.value).join(`|`):null}function wQ({entries:e,stickyOffset:t,idPrefix:n=``}){return(0,H.jsx)(`div`,{className:`-mx-4`,children:XY(e,`date`).map(e=>(0,H.jsxs)(`div`,{id:`${n}${e.id}`,className:`flex flex-col`,children:[(0,H.jsx)(OP,{top:t,icon:(0,H.jsx)(pt,{className:`size-3 shrink-0 text-muted-foreground`}),label:e.label,meta:(0,H.jsx)(`span`,{"data-testid":`library-group-count`,className:`font-bold tabular-nums`,children:e.entries.length})}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0 pb-1`,children:e.entries.map(e=>(0,H.jsx)(yX,{entry:e,dateLabel:e.date?zI(e.date):void 0},e.block?`${e.id}#${e.block.blockId}`:e.id))})]},e.id))})}function TQ(e,t){if(e===t)return!0;let n=X(e),r=X(t);return!n.error&&!r.error&&Jp(n)===Jp(r)}function EQ({actions:e}){(0,V.useEffect)(()=>{},[]);let t=(0,V.useMemo)(()=>uA(`/dashboards`),[]),{draft:n,setDraft:r,submitted:i,submit:a,weeks:o,setWeeks:s}=JZ({defaultQuery:t.defaultWql??yQ,runOnLanding:!0}),{unit:c}=ib(),{forced:l}=(0,V.useMemo)(()=>ab(i,c),[i,c]),[u,d]=(0,V.useState)(void 0),[f,p]=(0,V.useState)(void 0),[m,h]=(0,V.useState)(void 0),[g,_]=(0,V.useState)(void 0),[v,y]=(0,V.useState)(!1),[b,x]=(0,V.useState)(!1),[S,C]=(0,V.useState)(!0),w=WZ(),T=t.typeOptions,E=(0,V.useMemo)(()=>X(n),[n]),D=CQ(ip(E)?E.filters:[]),O=ip(E)&&E.window?EJ(E.window):null,k=DP(104),A=!E.error&&n.trim().length>0,j=A&&S,M=(0,V.useMemo)(()=>{if(!A)return null;if(ip(E))return n;if(ap(E)&&E.join){let e=E.join;return Jp({family:`find`,raw:``,target:e.target,filters:e.filters,window:e.last?{kind:`relative`,size:e.last.size,unit:e.last.unit}:void 0})}return null},[E,n,A]),N=(0,V.useMemo)(()=>{if(!i)return null;let e=X(i);if(ip(e)||e.error)return null;if(e.join){let t=e.join;return Jp({family:`find`,raw:``,target:t.target,filters:t.filters,window:t.last?{kind:`relative`,size:t.last.size,unit:t.last.unit}:void 0})}return Jp({family:`find`,raw:``,target:`note`,filters:e.filters.filter(e=>SQ.has(e.key)&&!e.negate),window:{kind:`relative`,size:o,unit:`w`}})},[i,o]);(0,V.useEffect)(()=>{if(!N){h(void 0);return}let e=!1;return ZN(N).then(t=>{e||h(t)}).catch(()=>{e||h(void 0)}),()=>{e=!0}},[N]);let[P,F]=(0,V.useState)(0),[I,ee]=(0,V.useState)(!1),[L,te]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=!1;if(!i){d(void 0),p(void 0),_(void 0),y(!1);return}y(!0);let t=X(i);if(ip(t))d(void 0),t.target===`effort`?vN.runFind(t).then(t=>{e||(_(t.efforts??[]),p([]))}).catch(()=>{e||(_(void 0),p(void 0))}).finally(()=>{e||y(!1)}):ZN(i).then(t=>{e||(p(t),_([]))}).catch(()=>{e||(p(void 0),_(void 0))}).finally(()=>{e||y(!1)});else{p(void 0),_(void 0);let t=Date.now(),n=t-o*7*bQ;vN.runQuery(i,{rangeStart:n,rangeEnd:t,preferredUnit:c}).then(t=>{e||d(t)}).catch(()=>{e||d(void 0)}).finally(()=>{e||y(!1)})}return()=>{e=!0}},[i,o,P,c]);let R=fy(u),ne=e=>{let t=cX(n,e);r(t),a(t)},{setL3Items:re}=BD(),ie=(0,V.useMemo)(()=>f!==void 0&&f.length>0?XY(f,`date`):[],[f]);(0,V.useEffect)(()=>{if(ie.length===0){re([]);return}let e=ie.map(e=>({id:e.id,label:e.label,level:3,action:{type:`scroll`,sectionId:e.id}}));return re(e),()=>re([])},[ie,re]);let ae=_k.find(e=>e.query===i)?.question??`custom query`,oe=(0,V.useMemo)(()=>{let e=X(i);return e.error?i:Jp(e)},[i]),se=u!==void 0&&(TQ(u.parsed.raw,n)||u.parsed.raw===i&&n===oe),ce=!i||!v&&R.kind===`empty`,le=(0,H.jsxs)(`button`,{type:`button`,"data-testid":`inspect-pipeline`,"aria-expanded":I,onClick:()=>ee(e=>!e),className:`flex items-center gap-1.5 rounded-lg border border-border px-3 py-1.5 text-xs font-semibold text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[I?(0,H.jsx)(Mt,{size:12}):(0,H.jsx)(mn,{size:12}),`Inspect pipeline`]});return(0,H.jsxs)(`div`,{className:`bg-card flex flex-col flex-1`,children:[(0,H.jsx)(zZ,{catalog:VZ}),(0,H.jsx)(xP,{title:`Metric Explorer`,actions:(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(YZ,{weeks:o,onWeeks:s,unitForced:l}),e]})}),(0,H.jsxs)(`div`,{className:`flex flex-col min-h-0 p-4`,children:[(0,H.jsx)(`div`,{className:`min-w-[280px]`,children:(0,H.jsx)($x,{query:n,onQueryChange:r,onValidationChange:e=>C(e.valid),onSubmit:e=>a(e),actionLabel:`Run`,preferredChoices:T,showDiagnostics:!1,placeholder:xQ,diagnosticsActions:(0,H.jsxs)(`button`,{type:`button`,"data-testid":`save-query`,disabled:!j,onClick:()=>x(!0),title:`Save this query — decide where it lands (dashboard, …)`,className:`flex min-h-12 items-center gap-1.5 rounded-lg border border-primary/40 text-primary px-3 text-[11px] font-semibold hover:bg-primary/10 transition-all shrink-0 disabled:opacity-40 disabled:hover:bg-transparent`,children:[(0,H.jsx)(Nn,{size:12}),` Save`]})})}),(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-x-1.5 gap-y-1`,"data-testid":`explorer-meta`,children:[n.trim().length>0&&(0,H.jsx)(`span`,{"data-testid":`draft-validity`,className:`mr-1 inline-flex items-center gap-1 text-[11px]`,children:E.error?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-red-600`,children:[(0,H.jsx)(Jn,{size:11,className:`shrink-0`}),` `,E.error]}):(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-green-600`,children:[(0,H.jsx)(nn,{size:11,className:`shrink-0`}),` valid`]})}),w.metricKeys.map(e=>(0,H.jsx)(`button`,{type:`button`,disabled:!j||!ap(E),title:A&&!ap(E)?`Metric shortcuts apply to measure queries — pivot the kind through the composer first`:void 0,onClick:()=>ne(e),className:U(`rounded-full border px-2 py-0.5 text-[11px] font-mono transition-colors disabled:opacity-40 disabled:hover:bg-transparent`,n.includes(e)?`border-primary/60 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`),children:e},e)),(0,H.jsx)(`span`,{className:`mx-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/50`,children:`filters`}),w.tagKeys.map(e=>(0,H.jsx)(`span`,{className:`rounded-full border border-border/60 px-2 py-0.5 text-[11px] font-mono text-muted-foreground/70`,children:e},e))]}),(0,H.jsx)(`section`,{className:`min-w-0`,children:ip(E)?(0,H.jsx)(`div`,{className:`mt-3`,children:(0,H.jsxs)(`div`,{className:`bg-card border border-border rounded-lg p-4`,children:[(0,H.jsxs)(`div`,{className:`text-[11px] uppercase tracking-wider text-muted-foreground mb-2`,children:[`Find `,E.target,D&&(0,H.jsxs)(`span`,{className:`ml-1`,children:[`in `,D]}),O&&(0,H.jsx)(`span`,{className:`ml-1`,children:O})]}),E.error?(0,H.jsx)(`div`,{className:`text-sm text-destructive font-mono`,children:E.error}):v?(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Searching…`}):g&&g.length>0?(0,H.jsx)(`div`,{className:`flex flex-col divide-y divide-border/50`,children:g.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-3 py-2.5`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:e.label}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:e.slug}),e.baseAttributes.discipline&&(0,H.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e.baseAttributes.discipline})]},e.slug))}):f&&f.length>0?(0,H.jsx)(wQ,{entries:f,stickyOffset:k}):(0,H.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`No `,E.target,`s found.`]})]})}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`mt-3`,children:(0,H.jsx)(vQ,{layout:`banner`,refreshKey:P,onChanged:()=>F(e=>e+1)})}),E.error&&i&&(0,H.jsx)(`div`,{"data-testid":`explorer-results-stale`,className:`mt-3 rounded-lg border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs font-medium text-amber-700`,children:`Stale — showing the last run's results; the current draft is invalid and not applied.`}),(0,H.jsx)(`div`,{className:`mt-3`,children:(0,H.jsx)(ly,{title:`Query result`,question:ae,query:i||`(empty)`,children:(0,H.jsx)(`div`,{className:`h-64`,children:i?v?(0,H.jsx)(py,{result:void 0}):R.kind===`error`?(0,H.jsx)(`div`,{className:`h-full flex items-center justify-center text-sm text-destructive font-mono px-4 text-center`,children:R.message}):R.kind===`empty`?(0,H.jsxs)(`div`,{className:`h-full flex flex-wrap items-center justify-center gap-6`,children:[(0,H.jsx)(vQ,{result:u,refreshKey:P,onChanged:()=>F(e=>e+1)}),le]}):R.kind===`scalar`?(0,H.jsx)(my,{result:u,label:`${u.parsed.agg}(${u.parsed.metric})`}):R.kind===`timeseries`?(0,H.jsx)(xy,{result:u}):(0,H.jsx)(Sy,{result:u}):(0,H.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center gap-3`,children:[(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Enter a WQL query or choose an example to explore your data.`}),le]})})})}),i&&(0,H.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[!v&&!ce&&le,N&&m!==void 0&&(0,H.jsxs)(`button`,{type:`button`,"data-testid":`records-toggle`,"aria-expanded":L,onClick:()=>te(e=>!e),className:`flex items-center gap-1.5 rounded-lg border border-border px-3 py-1.5 text-xs font-semibold text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[L?(0,H.jsx)(Mt,{size:12}):(0,H.jsx)(mn,{size:12}),`Records in this calculation`,(0,H.jsx)(`span`,{className:`text-[10px] font-bold text-muted-foreground/60 tabular-nums`,children:m.length})]})]}),I&&(0,H.jsx)(`div`,{className:`mt-3`,"data-testid":`pipeline-anatomy`,children:i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(DJ,{parsed:se?u.parsed:E}),se&&(0,H.jsx)(OJ,{result:u})]}):(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Submit a query to see its anatomy.`})}),L&&N&&m!==void 0&&(0,H.jsxs)(`div`,{className:`mt-3`,children:[(0,H.jsx)(`code`,{className:`block mb-3 rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs text-foreground`,"data-testid":`records-wql`,children:N}),m.length===0?(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`No records match this calculation.`}):(0,H.jsx)(wQ,{entries:m,stickyOffset:k,idPrefix:`records-`})]}),u&&(0,H.jsx)(kJ,{matched:u.matched,displayUnit:u.unit})]})})]}),(0,H.jsx)(LZ,{open:b,onOpenChange:x,initialQuery:n,subsetQuery:M,rangeStart:Date.now()-o*7*bQ,rangeEnd:Date.now(),preferredUnit:c})]})}function DQ({className:e,...t}){return(0,H.jsx)(L,{"data-slot":`control`,...t,className:U(e,`group relative isolate inline-flex h-6 w-10 cursor-default rounded-full p-[3px] sm:h-5 sm:w-8`,`transition duration-0 ease-in-out data-changing:duration-200`,`forced-colors:outline forced-colors:bg-[Highlight] dark:forced-colors:bg-[Highlight]`,`bg-muted ring-1 ring-black/5 ring-inset dark:bg-white/5 dark:ring-white/15`,`data-checked:bg-primary data-checked:ring-primary/90`,`dark:data-checked:bg-primary dark:data-checked:ring-primary/90`,`focus:not-data-[focus]:outline-hidden data-[focus]:outline-2 data-[focus]:outline-offset-2 data-[focus]:outline-ring`,`data-[hover]:ring-black/15 dark:data-[hover]:ring-white/25 data-[hover]:data-checked:ring-primary/90 dark:data-[hover]:data-checked:ring-primary/90`,`data-[disabled]:bg-muted dark:data-[disabled]:bg-white/15 data-[disabled]:opacity-50 data-[disabled]:data-checked:bg-muted dark:data-[disabled]:data-checked:bg-white/15 data-[disabled]:data-checked:ring-black/5 dark:data-[disabled]:data-checked:ring-white/15`),children:(0,H.jsx)(`span`,{"aria-hidden":`true`,className:U(`pointer-events-none relative inline-block size-4.5 rounded-full sm:size-3.5`,`translate-x-0 transition duration-200 ease-in-out`,`border border-transparent`,`bg-background shadow-sm ring-1 ring-black/5 dark:ring-white/5`,`group-data-checked:bg-primary-foreground group-data-checked:shadow-sm group-data-checked:ring-primary/90`,`group-data-checked:translate-x-4 sm:group-data-checked:translate-x-3`,`group-data-checked:group-data-[disabled]:bg-background group-data-checked:group-data-[disabled]:shadow-sm group-data-checked:group-data-[disabled]:ring-black/5 dark:group-data-checked:group-data-[disabled]:ring-white/5`)})})}var OQ=[{id:eO.route,label:`Journal`,profile:eO,shortcuts:!0},{id:nO.route,label:`Feeds`,profile:nO,shortcuts:!0},{id:tO.route,label:`Catalogs`,profile:tO},{id:rO.route,label:`Efforts`,profile:rO,shortcuts:!0},{id:iO.route,label:`Sessions`,profile:iO,shortcuts:!0},{id:aO.route,label:`Playgrounds`,profile:aO,shortcuts:!0},{id:`/dashboards`,label:`Dashboards`,systemDefaultWql:`:dashboard{}`},{id:eA,label:`⌘K Command Palette`}];function kQ(e){return{defaultWql:e.defaultWql??``,customType:e.typeOptions!==void 0,typeOptions:e.typeOptions??[],customGroup:e.groupByOptions!==void 0,groupByOptions:e.groupByOptions??[]}}function AQ(e){return{defaultWql:e.defaultWql.trim()||void 0,typeOptions:e.customType?e.typeOptions:void 0,groupByOptions:e.customGroup?e.groupByOptions:void 0}}var jQ=Object.fromEntries([...Vb,...Bb].map(e=>[e.value,e.label])),MQ=Object.fromEntries(rA.map(e=>[e.id,e.label]));function NQ({values:e,choices:t,labels:n,onChange:r,testPrefix:i}){return(0,H.jsxs)(`div`,{className:`space-y-2`,children:[e.length>0&&(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map(t=>(0,H.jsxs)(`span`,{"data-testid":`${i}-chip-${t}`,className:`inline-flex items-center gap-1 rounded-full border border-border/70 bg-muted/40 px-2.5 py-1 text-xs font-medium`,children:[n[t]??t,(0,H.jsx)(`button`,{type:`button`,"aria-label":`Remove ${t}`,"data-testid":`${i}-remove-${t}`,onClick:()=>r(e.filter(e=>e!==t)),className:`text-muted-foreground hover:text-foreground`,children:(0,H.jsx)(Te,{className:`size-3`})})]},t))}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.filter(t=>!e.includes(t.value)).map(t=>(0,H.jsxs)(`button`,{type:`button`,"aria-label":`Add ${t.value}`,"data-testid":`${i}-add-${t.value}`,onClick:()=>r([...e,t.value]),className:`rounded-full border border-dashed border-border/70 px-2.5 py-1 text-xs text-muted-foreground hover:text-foreground hover:border-foreground/40`,children:[`+ `,t.label]},t.value))})]})}function PQ({surface:e}){let t=e.profile?.defaultWql??e.systemDefaultWql??`:note{source:journal,feeds} by {date}`,n=e.profile?.target,r=e.profile?.scopeOptions??[],[i,a]=(0,V.useState)(()=>kQ(uA(e.id))),[o,s]=(0,V.useState)(()=>uA(e.id)),[c,l]=(0,V.useState)(null),u=(0,V.useMemo)(()=>{let e=i.defaultWql.trim();return e?Wx(e).error??null:null},[i.defaultWql]),d=AQ(i),f=JSON.stringify(d)!==JSON.stringify(o),p=Object.values(o).some(e=>e!==void 0),m=[...o.invalidTypeOptions??[],...o.invalidGroupByOptions??[]];return(0,H.jsxs)(`div`,{className:`space-y-4 rounded-lg border border-border/60 bg-card/40 p-4`,"data-testid":`query-defaults-card-${e.id}`,children:[(0,H.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:e.label}),(0,H.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.id})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Landing default query`}),(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`System default: `,(0,H.jsx)(`span`,{className:`font-mono`,children:t})]}),(0,H.jsx)(`textarea`,{rows:2,value:i.defaultWql,onChange:e=>a({...i,defaultWql:e.target.value}),placeholder:t,"data-testid":`query-defaults-wql-${e.id}`,className:`w-full rounded-md border border-border bg-background px-3 py-2 font-mono text-xs focus:outline-none focus:ring-1 focus:ring-primary/40`}),u?(0,H.jsxs)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-defaults-wql-error-${e.id}`,children:[`Couldn't parse — `,u]}):!i.defaultWql.trim()&&(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Empty — the system default is used.`})]}),m.length>0&&(0,H.jsxs)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-defaults-invalid-${e.id}`,children:[`Stored options no longer recognized: `,m.join(`, `),` — remove them; they are never turned into query clauses.`]}),e.profile&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Where-stored options`}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`Custom`,(0,H.jsx)(DQ,{checked:i.customType,onChange:e=>a({...i,customType:e}),"data-testid":`query-defaults-type-custom-${e.id}`})]})]}),(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`System: target `,n,`, scopes `,r.join(`, `)||`—`]}),i.customType&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(NQ,{values:i.typeOptions,choices:n===`note`?Vb:[],labels:jQ,onChange:e=>a({...i,typeOptions:e}),testPrefix:`query-defaults-type-${e.id}`}),i.typeOptions.length===0&&(0,H.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-defaults-type-empty-${e.id}`,children:`No predefined options — the route nudges for a pick instead.`})]})]}),e.profile&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Arrange-cards-by options`}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`Custom`,(0,H.jsx)(DQ,{checked:i.customGroup,onChange:e=>a({...i,customGroup:e}),"data-testid":`query-defaults-group-custom-${e.id}`})]})]}),i.customGroup&&(0,H.jsx)(NQ,{values:i.groupByOptions,choices:rA.map(e=>({value:e.id,label:e.label})),labels:MQ,onChange:e=>a({...i,groupByOptions:e}),testPrefix:`query-defaults-group-${e.id}`})]}),e.shortcuts&&(0,H.jsx)(FQ,{surface:e}),c&&(0,H.jsx)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-defaults-storage-error-${e.id}`,role:`alert`,children:c}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,H.jsx)(W,{size:`sm`,onClick:async()=>{if(!f)return;let t=i.defaultWql.trim();if(!(t&&Wx(t).error)){if(!await dA(e.id,d)){l(`Save failed — storage is unavailable; the previous default still stands.`);return}l(null),s(uA(e.id))}},disabled:!f||!!u,"data-testid":`query-defaults-save-${e.id}`,children:`Save`}),p&&(0,H.jsxs)(W,{variant:`ghost`,size:`sm`,onClick:async()=>{if(!await fA(e.id)){l(`Reset failed — storage is unavailable; the stored override still stands.`);return}l(null),s({}),a(kQ({}))},"data-testid":`query-defaults-reset-${e.id}`,children:[(0,H.jsx)(Xt,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Reset to system default`})]})]})]})}function FQ({surface:e}){let t=Jk(e.id),[n,r]=(0,V.useState)(null),[i,a]=(0,V.useState)(null),o=async n=>{a(null),await Hk(e.id,t.filter(e=>e.id!==n.id))||a(`Delete failed — storage is unavailable. Nothing was lost; the link remains.`)};return(0,H.jsxs)(`div`,{className:`space-y-2`,"data-testid":`query-defaults-shortcuts-${e.id}`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Saved shortcuts (navigation links)`}),(0,H.jsxs)(W,{variant:`ghost`,size:`sm`,onClick:()=>r({editing:null}),"data-testid":`query-defaults-shortcut-new-${e.id}`,children:[(0,H.jsx)(ft,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`New shortcut`})]})]}),t.map(t=>{let n=Mk[t.icon],i=t.to?`Opens ${t.to}`:t.wql||`Landing (no query)`;return(0,H.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border/50 px-2 py-1.5`,"data-testid":`query-defaults-shortcut-${e.id}:${t.id}`,children:[(0,H.jsx)(n,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{className:`min-w-0 max-w-40 truncate text-xs font-medium`,children:t.label}),(0,H.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[10px] text-muted-foreground`,children:i}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Edit ${t.label}`,"data-testid":`query-defaults-shortcut-edit-${e.id}:${t.id}`,onClick:()=>r({editing:t}),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-foreground`,children:(0,H.jsx)(br,{className:`size-3`})}),!t.to&&t.id!==`all`&&(0,H.jsx)(`button`,{type:`button`,"aria-label":`Delete ${t.label}`,"data-testid":`query-defaults-shortcut-delete-${e.id}:${t.id}`,onClick:()=>o(t),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-destructive`,children:(0,H.jsx)(ce,{className:`size-3`})})]},t.id)}),i&&(0,H.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`query-defaults-shortcut-error-${e.id}`,children:i}),n&&(0,H.jsx)($k,{open:!0,onOpenChange:e=>{e||r(null)},route:e.id,editing:n.editing})]})}function IQ(){return(0,H.jsxs)(`section`,{"data-testid":`query-defaults-section`,className:`space-y-6`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`Query Defaults`}),(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Override the landing query and the Where-stored / arrangement options per surface. An empty query uses the system default; an emptied options list nudges you to pick instead of presetting one. Option lists are favorites — they reorder choices, they don't change what queries mean. Stored`,` `,$T?`on the server.`:`in this browser only.`]})]}),OQ.map(e=>(0,H.jsx)(PQ,{surface:e},e.id))]})}var LQ=2.20462,RQ=2.54,zQ=`w-full h-9 rounded-md border border-input bg-background px-3 text-xs outline-none focus:border-primary`;function BQ(e){if(!e)return;let t=new Date(e);if(Number.isNaN(t.getTime()))return;let n=new Date,r=n.getFullYear()-t.getFullYear(),i=n.getMonth()-t.getMonth();return(i<0||i===0&&n.getDate()<t.getDate())&&r--,r}function VQ(e){let t=(e??``).trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:t.slice(0,2).map(e=>e[0].toUpperCase()).join(``)}function HQ({unit:e,other:t,onSwitch:n}){return(0,H.jsx)(`div`,{className:`flex rounded-md border border-input overflow-hidden shrink-0`,role:`group`,children:[e,t].map((e,t)=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":t===0,onClick:t===1?n:void 0,className:U(`px-2.5 h-9 text-xs font-medium transition-colors`,t===0?`bg-primary/10 text-primary`:`bg-background text-muted-foreground hover:bg-muted`),children:e},e))})}function UQ(){let[e,t]=(0,V.useState)(null),[n,r]=(0,V.useState)({displayName:``,birthDate:``,weight:``,height:``}),i=(0,V.useRef)(null);(0,V.useEffect)(()=>{let e=!0;return MT.current().then(n=>{e&&t(n)}).catch(console.error),()=>{e=!1}},[]),(0,V.useEffect)(()=>{e&&r({displayName:e.displayName?.trim()||`Anonymous`,birthDate:e.birthDate??``,weight:e.weight==null?``:String(e.weight),height:e.height==null?``:String(e.height)})},[e?.id]);let a=(0,V.useCallback)(async e=>{try{t(await MT.update(e))}catch(e){console.error(e)}},[]),o=(0,V.useCallback)(async e=>{if(e)try{await a({picture:await Dv(e)})}catch(e){console.error(e)}},[a]);if(!e)return(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`profile-loading`,children:`Loading profile…`});let s=BQ(e.birthDate),c=e.weightUnit??`kg`,l=e.heightUnit??`cm`;return(0,H.jsxs)(`div`,{className:`space-y-8`,children:[(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(f,{className:`size-4 text-primary`}),`Profile Picture`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Click the picture to choose an image — it is center-cropped and stored locally.`})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>i.current?.click(),"aria-label":`Change profile picture`,"data-testid":`profile-avatar`,className:`relative group size-20 rounded-full overflow-hidden border border-border bg-muted shrink-0 cursor-pointer`,children:[e.picture?(0,H.jsx)(`img`,{src:e.picture,alt:``,className:`size-full object-cover`}):(0,H.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center text-lg font-semibold text-muted-foreground`,children:VQ(e.displayName)}),(0,H.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/45 opacity-0 group-hover:opacity-100 focus-visible:opacity-100 transition-opacity`,children:(0,H.jsx)(Kt,{className:`size-5 text-white`})})]}),(0,H.jsx)(`input`,{ref:i,type:`file`,accept:`image/*`,className:`hidden`,"aria-hidden":`true`,tabIndex:-1,onChange:e=>{o(e.target.files?.[0]),e.target.value=``}})]})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Details`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Used by journal analytics (age from birth date, metric conversions). Changes are saved immediately.`})]}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{htmlFor:`profile-display-name`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Display Name`}),(0,H.jsx)(`input`,{id:`profile-display-name`,"data-testid":`profile-display-name`,className:zQ,placeholder:`Anonymous`,value:n.displayName,onChange:e=>{r(t=>({...t,displayName:e.target.value})),a({displayName:e.target.value})}})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`label`,{htmlFor:`profile-birth-date`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:[`Birth Date`,s===void 0?``:` · Age ${s}`]}),(0,H.jsx)(`input`,{id:`profile-birth-date`,"data-testid":`profile-birth-date`,type:`date`,className:zQ,value:n.birthDate,onChange:e=>{r(t=>({...t,birthDate:e.target.value})),a({birthDate:e.target.value||void 0})}})]}),(0,H.jsx)(`div`,{})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{htmlFor:`profile-weight`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Weight`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsx)(`input`,{id:`profile-weight`,"data-testid":`profile-weight`,type:`number`,inputMode:`decimal`,min:`0`,className:zQ,placeholder:c===`kg`?`e.g. 75`:`e.g. 165`,value:n.weight,onChange:e=>{let t=e.target.value;r(e=>({...e,weight:t})),t===``?a({weight:void 0}):Number.isFinite(Number(t))&&a({weight:Number(t)})}}),(0,H.jsx)(HQ,{unit:c,other:c===`kg`?`lb`:`kg`,onSwitch:()=>void a({weightUnit:c===`kg`?`lb`:`kg`,weight:e.weight==null?void 0:c===`kg`?e.weight*LQ:e.weight/LQ})})]})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{htmlFor:`profile-height`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Height`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsx)(`input`,{id:`profile-height`,"data-testid":`profile-height`,type:`number`,inputMode:`decimal`,min:`0`,className:zQ,placeholder:l===`cm`?`e.g. 180`:`e.g. 71`,value:n.height,onChange:e=>{let t=e.target.value;r(e=>({...e,height:t})),t===``?a({height:void 0}):Number.isFinite(Number(t))&&a({height:Number(t)})}}),(0,H.jsx)(HQ,{unit:l,other:l===`cm`?`in`:`cm`,onSwitch:()=>void a({heightUnit:l===`cm`?`in`:`cm`,height:e.height==null?void 0:l===`cm`?e.height/RQ:e.height*RQ})})]})]})]})]})]})]})}function WQ(){let[e]=(0,V.useState)(kT);return e?.state,(0,H.jsx)(`div`,{className:`space-y-8`,children:(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Storage`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This deployment uses its API server for storage and queries.`})]}),(0,H.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4 text-sm text-muted-foreground`,"data-testid":`storage-option-api`,children:`This deployment stores data on its server; storage is managed by the deployment.`})]})})}var GQ=[`date`,`datetime-local`,`month`,`time`,`week`],KQ=(0,V.forwardRef)(function({className:e,...t},n){return(0,H.jsx)(`span`,{"data-slot":`control`,className:U(`relative block w-full`,`before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-background before:shadow-sm`,`dark:before:hidden`,`after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset`,`sm:focus-within:after:ring-2 sm:focus-within:after:ring-ring`,`has-data-[disabled]:opacity-50 has-data-[disabled]:before:bg-muted/50 has-data-[disabled]:before:shadow-none`),children:(0,H.jsx)(je,{ref:n,...t,className:U(t.type&&GQ.includes(t.type)&&[`[&::-webkit-datetime-edit-fields-wrapper]:p-0`,`[&::-webkit-date-and-time-value]:min-h-[1.5em]`,`[&::-webkit-datetime-edit]:inline-flex`,`[&::-webkit-datetime-edit]:p-0`,`[&::-webkit-datetime-edit-year-field]:p-0`,`[&::-webkit-datetime-edit-month-field]:p-0`,`[&::-webkit-datetime-edit-day-field]:p-0`,`[&::-webkit-datetime-edit-hour-field]:p-0`,`[&::-webkit-datetime-edit-minute-field]:p-0`,`[&::-webkit-datetime-edit-second-field]:p-0`,`[&::-webkit-datetime-edit-millisecond-field]:p-0`,`[&::-webkit-datetime-edit-meridiem-field]:p-0`],`relative block w-full appearance-none rounded-lg px-[calc(theme(spacing.3.5)-1px)] py-[calc(theme(spacing.2.5)-1px)]`,`sm:px-[calc(theme(spacing.3)-1px)] sm:py-[calc(theme(spacing.1.5)-1px)]`,`text-base/6 text-foreground placeholder:text-muted-foreground sm:text-sm/6`,`border border-border/60 hover:border-border data-[hover]:border-border`,`bg-transparent dark:bg-white/5`,`focus:outline-hidden`,`data-invalid:border-destructive data-invalid:data-[hover]:border-destructive`,`data-[disabled]:border-border/40 dark:data-[disabled]:border-border/30 dark:data-[disabled]:bg-white/2.5`,`dark:scheme-dark`,e)})})}),qQ=e=>fM(new Date(e));function JQ(e,t){ND(e===`imported`?{title:`${t} synced`,description:`Content was imported from the published seed. Your own edits were kept.`}:e===`error`?{title:`${t} sync failed`,description:`Check your connection and the browser console for details.`,variant:`destructive`}:e===`busy`?{title:`Another tab is already syncing`,description:`Wait for it to finish, then try again.`}:{title:`${t}: nothing to import (${e})`})}var YQ={imported:`Synced`,current:`Up to date`,"server-stale":`Published version is older than the stored version`,busy:`Another tab is syncing`,disabled:`Seed import is disabled`,error:`Sync failed`};function XQ(e){switch(e.phase){case`checking`:return`Checking source…`;case`fetching`:return`Downloading ${e.chunkId}…`;case`applying`:return`Importing ${e.chunkId}…`;case`committed`:return`Committed ${e.chunkId}`;case`finalizing`:return`Finalizing checkpoints…`;case`finished`:return e.error??YQ[e.outcome]}}function ZQ({source:e,custom:t,running:n,disabled:r,onSync:i,onRemove:a}){let[o,s]=(0,V.useState)(()=>YE(e.id));return(0,V.useEffect)(()=>ZE(()=>{s(YE(e.id))}),[e.id]),(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`seed-source-${e.id}`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:e.label}),e.autoImport?(0,H.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600 shrink-0`,children:`Auto`}):(0,H.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground shrink-0`,children:`Manual`})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[!e.autoImport&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>XE(e.id,!o),disabled:r,"data-testid":`seed-subscribe-${e.id}`,className:`text-xs font-medium text-muted-foreground hover:text-foreground disabled:opacity-50`,title:o?`Subscribed — syncs at launch. Click to unsubscribe; your imported content stays.`:`Subscribe to sync this source at launch.`,children:o?`Subscribed ✓`:`Subscribe`}),t&&(0,H.jsxs)(W,{variant:`ghost`,size:`sm`,onClick:()=>a(e.id),disabled:r,"data-testid":`seed-remove-${e.id}`,className:`gap-1.5 text-muted-foreground hover:text-destructive`,title:`Remove this source from the sync list. Imported notes stay in your library.`,children:[(0,H.jsx)(ce,{className:`size-3.5`}),(0,H.jsx)(`span`,{className:`text-xs`,children:`Remove`})]}),(0,H.jsxs)(W,{variant:`outline`,size:`sm`,onClick:()=>i(e.id),disabled:r,"data-testid":`seed-sync-${e.id}`,className:`gap-2`,children:[(0,H.jsx)(Gt,{className:`size-3.5 ${n?`animate-spin`:``}`}),(0,H.jsx)(`span`,{children:n?`Syncing…`:`Sync`})]})]})]}),t&&(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono break-all`,children:t.url}),(0,H.jsxs)(`div`,{className:`grid gap-1 text-sm`,"data-testid":`seed-status-card`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Local database`}),(0,H.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`seed-local-version`,children:e.stored?`v${e.stored.version} · schema ${e.stored.schema} · imported ${qQ(e.stored.importedAt)}`:`Not imported yet`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Published version`}),(0,H.jsx)(`span`,{className:`font-medium text-foreground text-xs flex items-center gap-1.5`,"data-testid":`seed-remote-version`,children:e.remote?`v${e.remote.version} · schema ${e.remote.schema}`:e.remoteError?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Jn,{className:`size-3.5 text-muted-foreground`}),`Unavailable`]}):`Checking…`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Status`}),(0,H.jsx)(`span`,{className:`font-medium text-xs flex items-center gap-1.5`,"data-testid":`seed-sync-status`,children:e.upToDate?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(nn,{className:`size-3.5 text-emerald-500`}),`Up to date`]}):e.remote==null?`Unknown (remote unreachable)`:e.autoImport?`Update available — re-imports automatically on next launch`:`Update available`})]})]})]})}function QQ(){let[e,t]=(0,V.useState)(null),[n,i]=(0,V.useState)([]),[a,o]=(0,V.useState)(!0),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(null),[f,p]=(0,V.useState)([]),[m,h]=(0,V.useState)(``),[g,_]=(0,V.useState)(``),[v,y]=(0,V.useState)(null),b=(0,V.useCallback)(async()=>{i(FE()),l(null);try{t(await dD())}catch(e){l(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,V.useEffect)(()=>{b()},[b]);let x=(0,V.useCallback)(async t=>{d(t??`all`),p([]);let n=e=>p(t=>{let n=t.find(t=>t.event.sourceId===e.sourceId),r={event:e,imported:e.phase===`checking`||e.phase===`finished`?n?.imported??null:e,chunks:e.phase===`committed`&&e.chunkId!==null?[...n?.chunks??[],e.chunkId]:n?.chunks??[]};return n?t.map(t=>t.event.sourceId===e.sourceId?r:t):[...t,r]});try{JQ(t?await cD(t,{force:!0,onProgress:n}):await aD({force:!0,onProgress:n}),t?e?.sources.find(e=>e.id===t)?.label??t:`All sources`),await b()}finally{d(null)}},[b,e]),S=(0,V.useCallback)(async()=>{y(null);let e;try{e=LE(m,g)}catch(e){y(e instanceof Error?e.message:String(e));return}h(``),_(``),await x(e.id)},[m,g,x]),C=(0,V.useCallback)(async e=>{RE(e),ND({title:`Source removed`,description:`Imported notes stay in your library; only the source was unregistered.`}),await b()},[b]),w=f.at(-1)?.event;return(0,H.jsxs)(`div`,{className:`space-y-8`,children:[(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(r,{className:`size-4 text-primary`}),`Content Sources`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Catalogs, feeds, guides, dashboards, and efforts import into your active data location from seed sources. The core seed (home page, template) imports automatically on launch; community and custom libraries sync when you ask — one at a time or all at once.`})]}),c&&(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-destructive`,"data-testid":`seed-status-error`,children:[(0,H.jsx)(Jn,{className:`size-3.5 shrink-0`}),`Couldn't read the seed status from the active storage: `,c]}),w&&(0,H.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-border bg-card p-4`,"data-testid":`seed-sync-progress`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4 text-sm font-medium`,children:[(0,H.jsx)(`span`,{children:u===null?f.some(e=>e.event.phase===`finished`&&e.event.outcome===`error`)?`Sync finished with errors`:`Sync finished`:`Syncing…`}),(0,H.jsxs)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[`Source `,w.sourceIndex,` of `,w.totalSources]})]}),(0,H.jsxs)(`p`,{role:`status`,"aria-live":`polite`,className:`sr-only`,"data-testid":`seed-sync-live-status`,children:[w.sourceLabel,`: `,XQ(w)]}),f.map(({event:e,imported:t,chunks:n})=>(0,H.jsxs)(`div`,{className:`space-y-2 border-t border-border/50 pt-3`,children:[(0,H.jsxs)(`p`,{className:`text-xs ${e.phase===`finished`&&e.outcome===`error`?`text-destructive`:`text-muted-foreground`}`,children:[(0,H.jsx)(`span`,{className:`font-medium text-foreground`,children:e.sourceLabel}),` · `,XQ(e)]}),t&&t.totalChunks>0?(0,H.jsx)(qY,{value:t.completedChunks,max:t.totalChunks,label:`Chunks committed · ${e.sourceLabel}`}):e.phase===`finished`?null:(0,H.jsx)(`progress`,{"aria-label":`Checking ${e.sourceLabel}`,className:`h-2 w-full`}),t&&(0,H.jsxs)(`p`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-xs tabular-nums`,"data-testid":`seed-sync-totals`,children:[(0,H.jsxs)(`span`,{children:[t.totalNotes.toLocaleString(),` notes`]}),(0,H.jsxs)(`span`,{children:[t.totalEfforts.toLocaleString(),` efforts`]}),(0,H.jsxs)(`span`,{children:[t.totalBlocks.toLocaleString(),` blocks`]}),t.skippedUserOwned>0&&(0,H.jsxs)(`span`,{children:[t.skippedUserOwned.toLocaleString(),` user-owned rows preserved`]}),t.deleted>0&&(0,H.jsxs)(`span`,{children:[t.deleted.toLocaleString(),` seed rows removed`]})]}),n.length>0&&(0,H.jsxs)(`details`,{className:`text-xs`,"data-testid":`seed-sync-chunks`,children:[(0,H.jsxs)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:[`Committed chunks (`,n.length,`)`]}),(0,H.jsx)(`ul`,{className:`mt-2 max-h-32 space-y-1 overflow-y-auto font-mono text-muted-foreground`,children:n.map(e=>(0,H.jsx)(`li`,{children:e},e))})]})]},e.sourceId))]}),(0,H.jsxs)(`div`,{className:`grid gap-3`,"data-testid":`seed-source-list`,children:[e?.sources.map(e=>(0,H.jsx)(ZQ,{source:e,custom:n.find(t=>t.id===e.id),running:u===e.id||u===`all`,disabled:u!==null,onSync:e=>{x(e)},onRemove:e=>{C(e)}},e.id)),a&&e===null&&(0,H.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4 text-sm text-muted-foreground`,children:`Checking sources…`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between pt-3 border-t border-border/50`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Sync re-applies every published chunk. Your own notes, results, and edits are never overwritten.`}),(0,H.jsxs)(W,{variant:`outline`,size:`sm`,onClick:()=>{x(null)},disabled:u!==null||a,"data-testid":`seed-resync-button`,className:`gap-2`,children:[(0,H.jsx)(Gt,{className:`size-3.5 ${u===`all`?`animate-spin`:``}`}),(0,H.jsx)(`span`,{children:u===`all`?`Syncing all…`:`Sync All Sources`})]})]})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(s,{className:`size-4 text-primary`}),`Add a Source`]}),(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Register any URL serving a Wod Wiki seed (a directory with `,(0,H.jsx)(`code`,{children:`manifest.json`}),` and`,` `,(0,H.jsx)(`code`,{children:`chunks/`}),`) — a community library mirror or one you compiled yourself. The host must allow cross-origin reads (CORS). Added sources sync immediately.`]})]}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`seed-add-source-form`,children:[(0,H.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{htmlFor:`seed-source-label`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Label`}),(0,H.jsx)(KQ,{id:`seed-source-label`,value:m,onChange:e=>h(e.target.value),placeholder:`My library (optional — defaults to the host name)`,disabled:u!==null})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{htmlFor:`seed-source-url`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Seed directory URL`}),(0,H.jsx)(KQ,{id:`seed-source-url`,type:`text`,autoComplete:`off`,spellCheck:!1,value:g,onChange:e=>_(e.target.value),placeholder:`https://example.com/seed/library/`,className:`font-mono`,disabled:u!==null})]})]}),v&&(0,H.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-1.5 text-xs text-destructive`,"data-testid":`seed-add-error`,children:[(0,H.jsx)(Jn,{className:`size-3.5 mt-0.5 shrink-0`}),(0,H.jsx)(`span`,{children:v})]}),(0,H.jsx)(`div`,{className:`flex justify-end`,children:(0,H.jsxs)(W,{size:`sm`,onClick:()=>{S()},disabled:u!==null||!g.trim(),"data-testid":`seed-add-button`,className:`gap-2`,children:[(0,H.jsx)(ft,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Add & Sync`})]})})]})]})]})}var $Q=[{id:`appearance`,content:(0,H.jsx)(n$,{})},{id:`profile`,content:(0,H.jsx)(UQ,{})},{id:`storage`,content:(0,H.jsx)(WQ,{})},{id:`sync`,content:(0,H.jsx)(QQ,{})},{id:`queries`,content:(0,H.jsx)(IQ,{})},{id:`tags`,content:(0,H.jsx)(i$,{})},{id:`routes`,content:(0,H.jsx)(t$,{})},{id:`system`,content:(0,H.jsx)(r$,{})}];function e$(){let e=zt(),t=e.pathname.endsWith(`/system`)?`system`:e.pathname.endsWith(`/profile`)?`profile`:e.pathname.endsWith(`/storage`)?`storage`:e.pathname.endsWith(`/sync`)?`sync`:e.pathname.endsWith(`/queries`)?`queries`:e.pathname.endsWith(`/tags`)?`tags`:e.pathname.endsWith(`/routes`)?`routes`:`appearance`;return(0,H.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 bg-background`,children:[(0,H.jsx)(xP,{title:`Settings`,subtitle:`Manage profile, appearance, audio, and system preferences`}),(0,H.jsx)(`main`,{className:`flex-1 overflow-y-auto px-4 sm:px-6 lg:px-8 py-6 sm:py-8`,children:(0,H.jsx)(`div`,{className:`max-w-4xl mx-auto space-y-8`,children:$Q.find(e=>e.id===t)?.content})})]})}function t$(){let[e,t]=(0,V.useState)([]);return(0,V.useEffect)(()=>{let e=!0;return FT.readonly(`page`).getAll().then(n=>{e&&t(n)}).catch(console.error),()=>{e=!1}},[]),(0,H.jsxs)(`section`,{className:`space-y-6`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h3`,{className:`text-lg font-medium`,children:`Route Review`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:"All page routes (`/p/:slug`, `/c/:slug`, `/journal/:date`) currently registered in storage."})]}),(0,H.jsx)(`div`,{className:`border rounded-md`,children:(0,H.jsxs)(`table`,{className:`w-full text-sm text-left`,children:[(0,H.jsx)(`thead`,{className:`bg-muted/50 border-b`,children:(0,H.jsxs)(`tr`,{children:[(0,H.jsx)(`th`,{className:`px-4 py-2 font-medium`,children:`Route`}),(0,H.jsx)(`th`,{className:`px-4 py-2 font-medium`,children:`Title`}),(0,H.jsx)(`th`,{className:`px-4 py-2 font-medium`,children:`ID`})]})}),(0,H.jsx)(`tbody`,{className:`divide-y`,children:e.length===0?(0,H.jsx)(`tr`,{children:(0,H.jsx)(`td`,{colSpan:3,className:`px-4 py-4 text-center text-muted-foreground`,children:`No pages found.`})}):e.map(e=>(0,H.jsxs)(`tr`,{children:[(0,H.jsx)(`td`,{className:`px-4 py-2 font-mono text-xs`,children:e.slug?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] font-semibold bg-primary/10 text-primary`,children:`SLUG`}),e.slug]}):e.date?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] font-semibold bg-secondary/10 text-secondary`,children:`DATE`}),e.date]}):`—`}),(0,H.jsx)(`td`,{className:`px-4 py-2`,children:e.title??`—`}),(0,H.jsx)(`td`,{className:`px-4 py-2 font-mono text-[10px] text-muted-foreground`,children:e.id})]},e.id))})]})})]})}function n$(){let{theme:e,setTheme:t}=zi(),[n,r]=vF(),i={right:m,left:dr};return(0,H.jsxs)(`div`,{className:`space-y-8`,children:[(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Interface Theme`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Select your preferred color theme. Changes are saved and applied immediately.`})]}),(0,H.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4`,children:[{id:`system`,label:`System`,description:`Follows your operating system color scheme preferences`,icon:T,isDefault:!0},{id:`light`,label:`Light`,description:`Crisp light background with dark text for high daytime readability`,icon:lt},{id:`dark`,label:`Dark`,description:`Relaxed dark background for lower eye strain in low-light settings`,icon:x}].map(n=>{let r=e===n.id,i=n.icon;return(0,H.jsxs)(`button`,{type:`button`,"data-testid":`theme-option-${n.id}`,onClick:()=>t(n.id),className:U(`relative flex flex-col items-start p-4 rounded-xl border text-left transition-all`,r?`border-primary ring-2 ring-primary/20 bg-primary/5 text-foreground shadow-xs`:`border-border bg-card text-muted-foreground hover:text-foreground hover:bg-muted/40`),children:[(0,H.jsxs)(`div`,{className:`w-full flex items-center justify-between mb-3`,children:[(0,H.jsx)(`div`,{className:U(`p-2 rounded-lg`,r?`bg-primary text-primary-foreground`:`bg-muted text-foreground`),children:(0,H.jsx)(i,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n.isDefault&&(0,H.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`Default`}),(0,H.jsx)(`div`,{className:U(`size-4 rounded-full border flex items-center justify-center transition-colors`,r?`border-primary bg-primary text-primary-foreground`:`border-muted-foreground/40`),children:r&&(0,H.jsx)(Vt,{className:`size-2.5 stroke-[3]`})})]})]}),(0,H.jsx)(`div`,{className:`font-semibold text-foreground text-sm`,children:n.label}),(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1 leading-relaxed`,children:n.description})]},n.id)})})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(Bt,{className:`size-4 text-primary`}),`Actions Button Position`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`On phones, search and page actions float as a button cluster at the bottom of the screen. Place the cluster near your dominant thumb.`})]}),(0,H.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4`,children:pF.map(e=>{let t=n===e.id,a=i[e.id];return(0,H.jsxs)(`button`,{type:`button`,"data-testid":`fab-alignment-${e.id}`,onClick:()=>r(e.id),className:U(`relative flex flex-col items-start p-4 rounded-xl border text-left transition-all`,t?`border-primary ring-2 ring-primary/20 bg-primary/5 text-foreground shadow-xs`:`border-border bg-card text-muted-foreground hover:text-foreground hover:bg-muted/40`),children:[(0,H.jsxs)(`div`,{className:`w-full flex items-center justify-between mb-3`,children:[(0,H.jsx)(`div`,{className:U(`p-2 rounded-lg`,t?`bg-primary text-primary-foreground`:`bg-muted text-foreground`),children:(0,H.jsx)(a,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.id===`right`&&(0,H.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`Default`}),(0,H.jsx)(`div`,{className:U(`size-4 rounded-full border flex items-center justify-center transition-colors`,t?`border-primary bg-primary text-primary-foreground`:`border-muted-foreground/40`),children:t&&(0,H.jsx)(Vt,{className:`size-2.5 stroke-[3]`})})]})]}),(0,H.jsx)(`div`,{className:`font-semibold text-foreground text-sm`,children:e.label}),(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1 leading-relaxed`,children:e.description})]},e.id)})})]})]})}function r$(){let{isEnabled:e,toggleAudio:t,playTestSound:n}=CE(),{isDebugMode:r,toggleDebugMode:i}=g_(),{consent:a,setConsent:o}=jz(),[s,c]=(0,V.useState)(!1),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)(null);kT();let p=`your Wod Wiki server`;return(0,V.useEffect)(()=>{if(!s)return;let e=e=>{e.key===`Escape`&&(e.preventDefault(),c(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[s]),(0,H.jsxs)(`div`,{className:`space-y-8`,children:[(0,H.jsxs)(`section`,{className:`space-y-4`,"data-testid":`settings-about`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(ee,{className:`size-4 text-primary`}),`About`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Build version and release information for this playground.`})]}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsxs)(`p`,{className:`text-sm font-medium text-foreground font-mono`,children:[`v`,lP]}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Wod Wiki playground build`})]}),(0,H.jsx)(W,{asChild:!0,variant:`outline`,size:`sm`,className:`gap-2`,children:(0,H.jsxs)(`a`,{href:dP(lP),target:`_blank`,rel:`noopener noreferrer`,"data-testid":`settings-release-link`,children:[(0,H.jsx)(Ln,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Release notes`})]})})]})]}),(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[e?(0,H.jsx)(fe,{className:`size-4 text-primary`}):(0,H.jsx)(te,{className:`size-4 text-muted-foreground`}),`Audio Feedback`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Configure sound effects for workout timers, interval countdowns, and completion cues.`})]}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(`label`,{htmlFor:`sound-switch`,className:`text-sm font-medium text-foreground cursor-pointer`,children:`Workout Sound Effects`}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Play countdown beeps, interval alerts, and workout finish chimes`})]}),(0,H.jsx)(DQ,{id:`sound-switch`,"data-testid":`sound-toggle`,checked:e,onChange:t})]}),(0,H.jsxs)(`div`,{className:`pt-3 border-t border-border/50 flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Test audio output device`}),(0,H.jsxs)(W,{variant:`outline`,size:`sm`,onClick:n,disabled:!e,"data-testid":`play-test-sound-btn`,className:`gap-2`,children:[(0,H.jsx)(fe,{className:`size-3.5`}),(0,H.jsx)(`span`,{children:`Play Test Chime`})]})]})]})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(St,{className:`size-4 text-primary`}),`Developer Diagnostics`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Logging and runtime inspection tools for Whiteboard scripts and execution trees.`})]}),(0,H.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4`,children:(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(`label`,{htmlFor:`debug-switch`,className:`text-sm font-medium text-foreground cursor-pointer`,children:`Debug Mode`}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Output verbose AST compilation and runtime execution traces to browser console`})]}),(0,H.jsx)(DQ,{id:`debug-switch`,"data-testid":`debug-mode-toggle`,checked:r,onChange:i})]})})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,"data-testid":`settings-telemetry`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,H.jsx)(v,{className:`size-4 text-primary`}),`Anonymous Telemetry`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Anonymous usage telemetry is internal to Wod Wiki only. It helps us improve timer accuracy, workout execution, and query reliability. Your data will never be sold or shared with third parties.`})]}),(0,H.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4`,children:(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(`label`,{htmlFor:`telemetry-switch`,className:`text-sm font-medium text-foreground cursor-pointer`,children:`Share Anonymous Usage Statistics`}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Sends anonymous feature usage events. Turn off to opt out at any time.`})]}),(0,H.jsx)(DQ,{id:`telemetry-switch`,"data-testid":`telemetry-toggle`,checked:a,onChange:o})]})})]}),(0,H.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`h2`,{className:`text-base font-semibold text-destructive flex items-center gap-2`,children:[(0,H.jsx)(j,{className:`size-4 text-destructive`}),`Data & Cache (Danger Zone)`]}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Manage your local database storage and reset client state.`})]}),(0,H.jsxs)(`div`,{className:`rounded-xl border border-destructive/30 bg-destructive/5 p-4 sm:p-5 space-y-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`div`,{className:`font-semibold text-sm text-foreground`,children:`Reset & Clear Cache`}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:(0,H.jsxs)(H.Fragment,{children:[`Wipes ALL data stored in `,p,`: notes, workouts, custom efforts, recorded results, and attachments, plus this browser's localStorage preferences. Your separate IndexedDB copy is kept. Bundled core content re-imports automatically on the next launch; community and custom libraries must be re-synced from Settings > Sync. Your connection settings are preserved.`]})})]}),(0,H.jsx)(`div`,{children:(0,H.jsxs)(W,{variant:`destructive`,size:`sm`,onClick:()=>c(!0),"data-testid":`reset-cache-button`,className:`gap-2`,children:[(0,H.jsx)(Xt,{className:`size-4`}),(0,H.jsx)(`span`,{children:`Reset & Clear Cache`})]})})]})]}),s&&(0,H.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm p-4 animate-in fade-in duration-150`,onClick:e=>{e.target===e.currentTarget&&!l&&c(!1)},"data-testid":`reset-confirmation-modal`,children:(0,H.jsxs)(`div`,{className:`w-full max-w-md rounded-xl border border-border bg-card p-6 shadow-2xl flex flex-col gap-4`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`reset-modal-title`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 text-destructive font-semibold text-base`,id:`reset-modal-title`,children:[(0,H.jsx)(j,{className:`size-5`}),`Reset All Application Data?`]}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:(0,H.jsxs)(H.Fragment,{children:[`This permanently deletes every note, result, cached effort, and local setting stored in `,p,`. It cannot be undone.`]})}),d&&(0,H.jsxs)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`reset-error`,children:[`Reset failed: `,d,` — your data and connection were left untouched; try again.`]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-2`,children:[(0,H.jsx)(W,{variant:`outline`,onClick:()=>c(!1),disabled:l,children:`Cancel`}),(0,H.jsx)(W,{variant:`destructive`,onClick:async()=>{u(!0),f(null);try{await Cq(),window.location.reload()}catch(e){f(e instanceof Error?e.message:String(e)),u(!1)}},disabled:l,"data-testid":`confirm-reset-button`,className:`gap-2`,children:l?(0,H.jsx)(`span`,{children:`Resetting…`}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Xt,{className:`size-4`}),(0,H.jsx)(`span`,{children:`Yes, Reset Everything`})]})})]})]})})]})}function i$(){let[e,t]=(0,V.useState)([]),[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(`#3b82f6`),[u,d]=(0,V.useState)(``),[f,p]=(0,V.useState)(``),[m,h]=(0,V.useState)(``),[g,_]=(0,V.useState)(``),[v,y]=(0,V.useState)(null),[b,x]=(0,V.useState)(``),[S,C]=(0,V.useState)(null),w=(0,V.useCallback)(async()=>{try{let[e,n]=await Promise.all([Z.getAllTagTypes(),Z.getAllTags()]);t(e),r(n)}catch{}},[]);(0,V.useEffect)(()=>{w()},[w]);let T=async t=>{t.preventDefault();let n=i.trim().toLowerCase().replace(/[^a-z0-9_-]/g,`-`),r=o.trim();if(!n||!r){C(`Both type name and display label are required`);return}if(e.some(e=>e.name.toLowerCase()===n)){C(`Tag type "${n}" already exists`);return}C(null);let l={id:typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,9)}`,name:n,label:r,color:c,createdAt:Date.now()};await Z.putTagType(l),a(``),s(``),await w()},E=async e=>{if(n.some(t=>t.type?.toLowerCase()===e.name.toLowerCase())){C(`Cannot delete tag type "${e.label}" while tags are assigned to it`);return}C(null),await Z.deleteTagType(e.id),await w()},D=async e=>{e.preventDefault();let t=u.trim();if(!t)return;let r=n.find(e=>e.label.toLowerCase()===t.toLowerCase());if(r)f&&r.type!==f&&await Z.updateTagType(r.id,f);else{let e={id:typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,9)}`,label:t,type:f||void 0,createdAt:Date.now()};await Z.putTag(e)}d(``),await w()},O=async(e,t)=>{await Z.updateTagType(e,t===``?void 0:t),await w()},k=async e=>{await Z.deleteTag(e),await w()},A=async e=>{let t=b.trim();if(y(null),!t)return;let r=n.find(t=>t.id===e);!r||r.label===t||(await Z.putTag({...r,label:t}),await w())},j=n.filter(t=>!t.type||!e.some(e=>e.name.toLowerCase()===t.type?.toLowerCase()));return(0,H.jsxs)(`div`,{className:`space-y-8`,children:[(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Tag Types`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Define classification dimensions for tags. Note frontmatter properties matching a type name will automatically provide typeahead suggestions.`})]}),(0,H.jsxs)(`div`,{className:`p-4 sm:p-5 rounded-xl border border-border bg-card shadow-xs space-y-4`,children:[(0,H.jsxs)(`form`,{onSubmit:T,className:`flex flex-wrap items-end gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex-1 min-w-[160px]`,children:[(0,H.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Type Name`}),(0,H.jsx)(`input`,{className:`w-full h-9 rounded-md border border-input bg-background px-3 text-xs outline-none focus:border-primary font-mono`,placeholder:`Type name (e.g. discipline)`,value:i,onChange:e=>a(e.target.value)})]}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-[160px]`,children:[(0,H.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Display Label`}),(0,H.jsx)(`input`,{className:`w-full h-9 rounded-md border border-input bg-background px-3 text-xs outline-none focus:border-primary`,placeholder:`Display label (e.g. Discipline)`,value:o,onChange:e=>s(e.target.value)})]}),(0,H.jsxs)(`div`,{className:`w-24`,children:[(0,H.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Color`}),(0,H.jsx)(`input`,{type:`color`,className:`w-full h-9 p-1 rounded-md border border-input bg-background cursor-pointer`,value:c,onChange:e=>l(e.target.value)})]}),(0,H.jsxs)(W,{type:`submit`,size:`sm`,className:`h-9`,children:[(0,H.jsx)(ft,{className:`size-3.5 mr-1`}),` Add Type`]})]}),S&&(0,H.jsx)(`p`,{className:`text-xs text-destructive`,children:S}),(0,H.jsxs)(`div`,{className:`border-t border-border pt-3`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2`,children:`Registered Types`}),e.length===0?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:`No custom tag types created yet.`}):(0,H.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2`,children:e.map(e=>{let t=n.filter(t=>t.type?.toLowerCase()===e.name.toLowerCase()).length;return(0,H.jsxs)(`div`,{className:`flex items-center justify-between p-2.5 rounded-lg border border-border/70 bg-background/50 text-xs`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,H.jsx)(`span`,{className:`size-2.5 rounded-full shrink-0`,style:{backgroundColor:e.color||`#3b82f6`}}),(0,H.jsx)(`span`,{className:`font-semibold truncate`,children:e.label}),(0,H.jsxs)(`span`,{className:`text-muted-foreground font-mono text-[11px] truncate`,children:[`(`,e.name,`)`]}),(0,H.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.2 text-[10px] text-muted-foreground`,children:t})]}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Delete tag type ${e.label}`,disabled:t>0,title:t>0?`Cannot delete type while ${t} tag(s) are assigned`:`Delete unused tag type`,className:U(`p-1 rounded transition`,t>0?`text-muted-foreground/30 cursor-not-allowed`:`text-muted-foreground hover:text-destructive cursor-pointer`),onClick:()=>E(e),children:(0,H.jsx)(ce,{className:`size-3.5`})})]},e.id)})})]})]})]}),(0,H.jsxs)(`section`,{className:`space-y-4`,children:[(0,H.jsx)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Tags Table`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Filter, search, edit, reassign, or delete stored tags.`})]})}),(0,H.jsxs)(`div`,{className:`p-4 sm:p-5 rounded-xl border border-border bg-card shadow-xs space-y-4`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,H.jsxs)(`div`,{className:`relative flex-1 min-w-[200px]`,children:[(0,H.jsx)(Bt,{className:`absolute left-2.5 top-2.5 size-3.5 text-muted-foreground`}),(0,H.jsx)(`input`,{"aria-label":`Filter tags`,className:`w-full h-9 rounded-md border border-input bg-background pl-8 pr-3 text-xs outline-none focus:border-primary`,placeholder:`Filter tags by label…`,value:m,onChange:e=>h(e.target.value)})]}),(0,H.jsx)(`div`,{className:`w-48`,children:(0,H.jsxs)(`select`,{"aria-label":`Filter by type`,className:`w-full h-9 rounded-md border border-input bg-background px-2.5 text-xs outline-none focus:border-primary`,value:g,onChange:e=>_(e.target.value),children:[(0,H.jsxs)(`option`,{value:``,children:[`All Types (`,n.length,`)`]}),(0,H.jsxs)(`option`,{value:`__untyped__`,children:[`Untyped / General (`,j.length,`)`]}),e.map(e=>{let t=n.filter(t=>t.type?.toLowerCase()===e.name.toLowerCase()).length;return(0,H.jsxs)(`option`,{value:e.name,children:[e.label,` (`,t,`)`]},e.id)})]})}),(0,H.jsxs)(`form`,{onSubmit:D,className:`flex items-center gap-2`,children:[(0,H.jsx)(`input`,{className:`h-9 w-36 sm:w-44 rounded-md border border-input bg-background px-3 text-xs outline-none focus:border-primary font-mono`,placeholder:`New tag…`,value:u,onChange:e=>d(e.target.value)}),(0,H.jsxs)(`select`,{className:`h-9 w-28 rounded-md border border-input bg-background px-2 text-xs outline-none focus:border-primary`,value:f,onChange:e=>p(e.target.value),children:[(0,H.jsx)(`option`,{value:``,children:`Untyped`}),e.map(e=>(0,H.jsx)(`option`,{value:e.name,children:e.label},e.id))]}),(0,H.jsxs)(W,{type:`submit`,size:`sm`,className:`h-9`,children:[(0,H.jsx)(ft,{className:`size-3.5 mr-1`}),` Add`]})]})]}),(0,H.jsx)(`div`,{className:`border border-border rounded-lg overflow-hidden`,children:(0,H.jsx)(`div`,{className:`overflow-x-auto`,children:(0,H.jsxs)(`table`,{className:`w-full text-xs text-left`,children:[(0,H.jsx)(`thead`,{className:`bg-muted/50 border-b border-border`,children:(0,H.jsxs)(`tr`,{children:[(0,H.jsx)(`th`,{className:`px-4 py-2.5 font-medium`,children:`Tag Label`}),(0,H.jsx)(`th`,{className:`px-4 py-2.5 font-medium`,children:`Type`}),(0,H.jsx)(`th`,{className:`px-4 py-2.5 font-medium`,children:`Created`}),(0,H.jsx)(`th`,{className:`px-4 py-2.5 font-medium text-right`,children:`Actions`})]})}),(0,H.jsx)(`tbody`,{className:`divide-y divide-border`,children:n.filter(t=>m&&!t.label.toLowerCase().includes(m.toLowerCase().trim())?!1:g===`__untyped__`?!t.type||!e.some(e=>e.name.toLowerCase()===t.type?.toLowerCase()):!g||t.type?.toLowerCase()===g.toLowerCase()).map(t=>{let n=e.find(e=>e.name.toLowerCase()===t.type?.toLowerCase()),r=v===t.id;return(0,H.jsxs)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:[(0,H.jsx)(`td`,{className:`px-4 py-2 font-mono`,children:r?(0,H.jsx)(`input`,{autoFocus:!0,className:`h-7 w-full max-w-[200px] rounded border border-primary bg-background px-2 font-mono text-xs outline-none`,value:b,onChange:e=>x(e.target.value),onKeyDown:async e=>{e.key===`Enter`?await A(t.id):e.key===`Escape`&&y(null)},onBlur:()=>A(t.id)}):(0,H.jsx)(`button`,{type:`button`,className:`font-mono text-foreground hover:underline text-left`,title:`Click to rename`,onClick:()=>{y(t.id),x(t.label)},children:t.label})}),(0,H.jsx)(`td`,{className:`px-4 py-2`,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,H.jsx)(`span`,{className:`size-2 rounded-full shrink-0`,style:{backgroundColor:n.color||`#3b82f6`}}),(0,H.jsxs)(`select`,{"aria-label":`Type for ${t.label}`,className:`h-7 rounded border border-input bg-background px-2 text-xs outline-none cursor-pointer focus:border-primary`,value:t.type??``,onChange:e=>O(t.id,e.target.value),children:[(0,H.jsx)(`option`,{value:``,children:`Untyped`}),e.map(e=>(0,H.jsx)(`option`,{value:e.name,children:e.label},e.id))]})]})}),(0,H.jsx)(`td`,{className:`px-4 py-2 text-muted-foreground text-[11px]`,children:t.createdAt?new Date(t.createdAt).toLocaleDateString():`—`}),(0,H.jsx)(`td`,{className:`px-4 py-2 text-right`,children:(0,H.jsx)(`button`,{type:`button`,"aria-label":`Delete tag ${t.label}`,className:`text-muted-foreground hover:text-destructive p-1 rounded transition`,onClick:()=>k(t.id),children:(0,H.jsx)(ce,{className:`size-3.5`})})})]},t.id)})})]})})})]})]})]})}var a$=`dashboard-title`;function o$(){let{slug:e}=_n(),t=Mn(),[n]=_J(),{unit:r}=ib(),i=Date.now()-n*7*864e5,a=Date.now(),[o,s]=(0,V.useState)(0),[c,l]=(0,V.useState)(null);(0,V.useEffect)(()=>{let e=!1;return Z.countEvents().then(t=>{e||l(t>0)}),()=>{e=!0}},[o]);let{source:u,loading:d}=ik(e,o),f=(0,V.useMemo)(()=>{if(!u?.rawContent)return null;let{meta:e,sections:t}=fg(u.rawContent);return{doc:ig(t,e),sections:t}},[u]),p=f?.doc??null,{setL3Items:m,registerScrollFn:h}=BD(),g=(0,V.useMemo)(()=>{if(!f)return{headings:[],items:[]};let{doc:e,sections:t}=f,n=new Set;t.forEach((e,r)=>{if(e.type!==`query`)return;let i=t[r-1];if(i?.type===`markdown`&&i.subtype===`paragraph`){let e=t[r-2];e?.type===`markdown`&&e.subtype===`heading`&&n.add(r-2)}else i?.type===`markdown`&&i.subtype===`heading`&&n.add(r-1)});let r=[],i=[];e.title&&i.push({id:a$,label:e.title,level:3,action:{type:`scroll`,sectionId:a$}});let a=0;return t.forEach((t,o)=>{if(t.type===`markdown`&&t.subtype===`heading`){if(n.has(o)||/^#\s/.test(t.content))return;let e=`note-h${o}`,s=t.content.replace(/^#+\s*/,``);r.push({id:e,level:/^#+/.exec(t.content)?.[0].length??2,text:s,beforeWidget:a}),i.push({id:e,label:s,level:3,action:{type:`scroll`,sectionId:e}});return}if(t.type!==`query`)return;let s=e.widgets[a];if(!s)return;a++;let c=`widget-${s.key}`;i.push({id:c,label:s.title||s.body,level:3,action:{type:`scroll`,sectionId:c}})}),{headings:r,items:i}},[f]),_=g.items;(0,V.useEffect)(()=>(m(_),()=>m([])),[_,m]),(0,V.useEffect)(()=>(h(e=>{let t=globalThis.document.getElementById(e);t&&(window.scrollTo({top:t.getBoundingClientRect().top+window.scrollY-80,behavior:`smooth`}),typeof t.animate==`function`&&t.animate([{boxShadow:`0 0 0 3px hsl(var(--primary))`},{boxShadow:`0 0 0 3px transparent`}],{duration:1500,easing:`ease-out`}))}),()=>h(e=>{let t=globalThis.document.getElementById(e);t&&window.scrollTo({top:t.getBoundingClientRect().top+window.scrollY-80,behavior:`smooth`})})),[h]);let[v,y]=(0,V.useState)(!1),[b,x]=(0,V.useState)(null),[S,C]=(0,V.useState)(null),w=(0,V.useCallback)(async(e,t)=>{if(!u?.editable||!u.noteId)return;let n=await mk.getById(u.noteId);if(n.rawContent!==e)throw s(e=>e+1),Error(`The dashboard changed elsewhere — this edit was not saved.`);let r=t(n.rawContent);if(r==null)throw s(e=>e+1),Error(`The widget changed on disk — this edit was not saved.`);await mk.update(n,typeof r==`string`?r:r.note,typeof r==`string`?void 0:r),s(e=>e+1)},[u]),T=(0,V.useCallback)(async(e,t)=>{if(!u?.editable||!u.noteId)return;let n=await mk.getById(u.noteId),{meta:r,body:i}=Jv(n.rawContent),a=`---\n${Qv($h(r,e,t))}\n---\n${i}`;await mk.update(n,a),s(e=>e+1)},[u]),E=(0,V.useCallback)((e,t)=>{C(null),w(e,e=>{let n=t(e);if(!n.ok){let e=n.reason;throw Error(e===`stale-body`?`Widget changed since you opened this page — reload and retry.`:`Widget no longer exists — reload the dashboard.`)}return n}).catch(e=>{C(e instanceof Error?e.message:String(e))})},[w]),D=(0,V.useCallback)(async e=>{if(!(!b||b.mode===`inspect`)){if(b.mode===`add`)await w(b.expectedRaw,t=>Sg(t,e));else{let t=b.widget;await w(b.expectedRaw,n=>{let r=Tg(n,t.key,t.body,e);if(!r.ok){let e=r.reason;throw Error(e===`stale-body`?`Widget changed since you opened this page — reload and retry.`:`Widget no longer exists — reload the dashboard.`)}return r})}}},[b,w]),O=(0,V.useCallback)(async()=>{!u||u.editable||(await gk.cloneDashboard(u.slug,u.rawContent,u.title),s(e=>e+1))},[u]),k=u!=null&&u.slug===e;if(d&&!k)return(0,H.jsx)(`div`,{className:`p-8 text-sm text-muted-foreground`,children:`Loading dashboard…`});if(!k||!u)return(0,H.jsxs)(`div`,{className:`p-8`,"data-testid":`dashboard-not-found`,children:[(0,H.jsx)(`h1`,{className:`text-lg font-bold text-foreground mb-2`,children:`Dashboard not found`}),(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:[`No dashboard named `,(0,H.jsx)(`code`,{children:e}),`. It may have been removed.`]}),(0,H.jsx)(`button`,{onClick:()=>t(`/dashboard`),className:`px-4 py-2 text-sm font-medium bg-primary text-primary-foreground rounded-lg hover:opacity-90`,children:`Back to explorer`})]});let A=u.editable;return(0,H.jsxs)(`div`,{className:`min-h-screen bg-background flex flex-col`,children:[(0,H.jsx)(xP,{id:a$,title:p?.title||u.title,subtitle:A?`Editable dashboard note.`:`Prebuilt — read-only until cloned to your vault.`,actions:(0,H.jsxs)(wF,{label:`Dashboard actions`,primary:A?(0,H.jsxs)(`button`,{type:`button`,"data-testid":`dashboard-edit-toggle`,"aria-pressed":v,onClick:()=>y(e=>!e),className:`flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-xs font-semibold transition-colors ${v?`bg-primary text-primary-foreground`:`border border-border text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:[(0,H.jsx)(br,{size:12}),` `,v?`Done`:`Edit`]}):void 0,children:[(0,H.jsx)(Yy,{}),(0,H.jsx)(ob,{})]})}),(0,H.jsxs)(`div`,{className:`max-w-[1500px] w-full mx-auto p-4 md:p-6 lg:p-8 flex-1`,children:[S&&(0,H.jsxs)(`div`,{role:`alert`,"data-testid":`dashboard-action-error`,className:`mb-4 flex items-center justify-between rounded-lg border border-destructive/40 bg-destructive/10 px-4 py-2 text-xs text-destructive`,children:[(0,H.jsx)(`span`,{children:S}),(0,H.jsx)(`button`,{type:`button`,"aria-label":`Dismiss`,onClick:()=>C(null),className:`font-medium hover:opacity-70 transition-opacity`,children:`×`})]}),!A&&(0,H.jsxs)(`div`,{className:`mb-4 flex items-center justify-between rounded-lg border border-primary/30 bg-primary/5 px-4 py-2 text-xs`,children:[(0,H.jsx)(`span`,{className:`text-foreground`,children:`This is a read-only prebuilt. Clone it to edit widgets and tokens.`}),(0,H.jsx)(`button`,{type:`button`,"data-testid":`clone-dashboard`,onClick:O,className:`font-medium text-primary hover:text-primary/80 transition-colors`,children:`Clone to vault`})]}),A&&v&&(0,H.jsxs)(`button`,{type:`button`,"data-testid":`add-widget`,onClick:()=>x({mode:`add`,expectedRaw:u.rawContent}),className:`mb-4 flex items-center gap-1.5 rounded-lg border border-dashed border-primary/50 px-4 py-2 text-xs font-semibold text-primary hover:bg-primary/5 transition-colors`,children:[(0,H.jsx)(ft,{size:13}),` Add widget`]}),c===!1?(0,H.jsx)(vQ,{layout:`card`,refreshKey:o,onChanged:()=>s(e=>e+1)}):(0,H.jsx)(`div`,{className:`mb-4`,children:(0,H.jsx)(vQ,{layout:`banner`,refreshKey:o,onChanged:()=>s(e=>e+1)})}),p&&(0,H.jsx)(Jy,{document:p,headings:g.headings,executor:vN,onTokenChange:A?T:void 0,editMode:A&&v,onEditWidget:A?e=>x({mode:`edit`,widget:e,expectedRaw:u.rawContent}):void 0,onDuplicateWidget:A?e=>E(u.rawContent,t=>Eg(t,e.key,e.body)):void 0,onRemoveWidget:A?e=>E(u.rawContent,t=>Dg(t,e.key,e.body)):void 0,onMoveWidget:A?(e,t)=>E(u.rawContent,n=>Og(n,e.key,e.body,t)):void 0,onResizeWidget:A?(e,t)=>E(u.rawContent,n=>kg(n,e.key,e.body,t)):void 0,onInspectWidget:A?void 0:e=>x({mode:`inspect`,widget:e,expectedRaw:u.rawContent}),onOpenInExplorer:(e,n)=>t(OO({q:n})),rangeStart:i,rangeEnd:a,preferredUnit:r})]}),(0,H.jsx)(xJ,{open:b!==null,onClose:()=>x(null),mode:b?.mode??`add`,initialWql:b&&b.mode!==`add`?b.widget.body:`sum:totalVolume{}`,initial:b&&b.mode!==`add`?{title:b.widget.title,question:b.widget.question,type:b.widget.type,spanCols:b.widget.spanCols,spanFull:b.widget.spanFull,attributes:b.widget.attributes}:void 0,executor:vN,rangeStart:i,rangeEnd:a,preferredUnit:r,tokenValues:p?Qh(p.tokens):void 0,onApply:b?.mode===`inspect`?void 0:D,footerExtra:b?.mode===`inspect`?(0,H.jsx)(`button`,{type:`button`,"data-testid":`inspect-clone`,onClick:()=>{O().then(()=>{x(null),y(!0)})},className:`px-3 py-1.5 text-xs font-medium text-primary hover:text-primary/80 rounded-lg border border-primary/40 hover:bg-primary/10 transition-colors`,children:`Clone to vault to edit`}):void 0})]})}function s$({sessionId:e}){let[t,n]=(0,V.useState)(null),[r,i]=(0,V.useState)(null),[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(``);return(0,V.useEffect)(()=>{let t=!1;return n(null),i(null),(async()=>{let r=await tk.getSessionById?.(e);if(!r)throw Error(`Session not found.`);let i=await tk.getBlockRevision(r.noteId,r.blockId,r.blockVersion);if(!i)throw Error(`The pinned saved workout is unavailable.`);t||n({session:r,revision:i})})().catch(e=>{t||i(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e]),(0,H.jsxs)(`section`,{"aria-label":`Pinned workout source`,className:`space-y-3 border-b p-4`,children:[(0,H.jsx)(`h2`,{className:`font-semibold`,children:`Saved workout used by this session`}),r&&(0,H.jsx)(`p`,{role:`alert`,children:r}),t?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`p`,{className:`break-all text-sm`,children:[`Block `,t.session.blockId,` · v`,t.revision.version,` · `,t.revision.dialect,t.revision.sport?` · ${t.revision.sport}`:``]}),(0,H.jsx)(`pre`,{className:`max-h-72 overflow-auto whitespace-pre-wrap break-words rounded bg-muted p-3 text-xs`,children:t.revision.rawContent}),(0,H.jsx)(`button`,{type:`button`,disabled:a,className:`rounded border px-3 py-2 hover:bg-accent focus-visible:ring-2`,onClick:async()=>{o(!0),i(null);try{await new ek().rederiveResultAnalytics(e),c(`Analytics replayed from the pinned saved workout. Reload the results to view them.`)}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}},children:a?`Replaying…`:`Replay saved analytics`}),(0,H.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`text-sm`,children:s}),(0,H.jsx)(hM,{noteId:t.session.noteId})]}):r?null:(0,H.jsx)(`p`,{role:`status`,children:`Loading saved workout…`})]})}function c$({searchHandlerRef:e}){let t=Mn(),n=zt(),{theme:r}=zi(),i=ST()??BF,a=zF(),o=$j(),s=nI(),c=tI(),{workout:l,nav:u}=s,[d,f]=(0,V.useState)(!1),[p,m]=(0,V.useState)(`blank`),h=(0,V.useCallback)(e=>{m(e?.mode??`blank`),f(!0)},[]),g=(0,V.useMemo)(()=>/^\/journal\/(\d{4}-\d{2}-\d{2})\/?$/.exec(n.pathname)?.[1],[n.pathname]),_=(0,V.useCallback)(e=>{t(`${_O(e.id)}?edit=1`)},[t]),{tree:v,navState:y,setL3Items:b,setSecondarySpec:x,registerCreateJournal:S}=BD(),C=y?.activeL1Id??null,w=(v??[]).find(e=>e?.id===C)??null,T=s.shell.title??l.name,E=(0,V.useMemo)(()=>s.page===`library`?pA(dO(n.pathname)):void 0,[s.page,n.pathname]),D=s.shell.secondary;(0,V.useEffect)(()=>(x(D),()=>x(void 0)),[D,x]),(0,V.useEffect)(()=>S(h),[S,h]),(0,V.useEffect)(()=>{let e=new URLSearchParams(n.search);if(e.get(`create`)===`1`||e.get(`new`)===`1`){let r=e.get(`mode`)===`source`?`source`:`blank`;h({mode:r}),e.delete(`create`),e.delete(`new`),e.delete(`mode`);let i=e.toString()?`?${e.toString()}`:``;t(`${n.pathname}${i}`,{replace:!0})}},[n.pathname,n.search,h,t]),(0,V.useEffect)(()=>{if(!(!s.shell.withIndex||u.length===0))return b(fL(u)),()=>b([])},[s.shell.withIndex,u,b]);let O=(0,V.useRef)(()=>null),k=(0,V.useCallback)(e=>(O.current=e,()=>{O.current===e&&(O.current=()=>null)}),[]),A=(0,V.useCallback)(()=>{uI.getState().open({wql:{initialQuery:O.current()??nL(),execute:iL,preferredChoices:rL()},sources:[$I(),tL(MI(o)),tL(TI())]}).then(e=>{e.dismissed||aL(e.item,t)})},[t,o]);(0,V.useEffect)(()=>{e.current=A},[A,e]),(0,V.useEffect)(()=>{let e=e=>{(e.key===`k`||e.key===`/`||e.key===`p`)&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.stopPropagation(),A())};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[A]);let[j,M]=(0,V.useState)(()=>typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches),{handleViewCreated:N,scrollToSection:P}=pL(u);(0,V.useEffect)(()=>{if(r!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=e=>M(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[r]);let F=(0,V.useMemo)(()=>r===`system`?j?`vs-dark`:`vs`:r===`dark`?`vs-dark`:`vs`,[r,j]),I={feedDetail:()=>(0,H.jsx)(fK,{feedSlug:decodeURIComponent(s.feedDetailMatch)}),feedItem:()=>(0,H.jsx)($K,{feedSlug:decodeURIComponent(s.feedItemMatch[0]),feedDate:decodeURIComponent(s.feedItemMatch[1]),feedItem:decodeURIComponent(s.feedItemMatch[2]),theme:F,onViewCreated:N,onScrollToSection:P}),effortDetail:()=>(0,H.jsx)(OZ,{}),analyticsExplorer:()=>(0,H.jsx)(EQ,{actions:(0,H.jsx)(QK,{mode:`collection-readonly`,currentWorkout:l,index:[]})}),dashboardExplorer:()=>(0,H.jsx)(EQ,{actions:(0,H.jsx)(QK,{mode:`collection-readonly`,currentWorkout:l,index:[]})}),dashboardView:()=>(0,H.jsx)(o$,{}),canvas:()=>s.canvasPage.route===`/`?(0,H.jsx)(OY,{wodFiles:i,theme:F}):s.canvasPage.scroll?(0,H.jsx)(rK,{page:s.canvasPage,wodFiles:i,theme:F,workoutItems:a,onSelect:c,onScrollToSection:P}):(0,H.jsx)(zG,{page:s.canvasPage,wodFiles:i,theme:F,workoutItems:a,onSelect:c,onScrollToSection:P}),playground:()=>(0,H.jsx)(mZ,{theme:F,onViewCreated:N,onScrollToSection:P,onSearch:A},s.effectivePlaygroundId),journalEntry:()=>(0,H.jsx)(QX,{theme:F,onViewCreated:N,onScrollToSection:P,onSearch:A},s.journalEntryId),note:()=>(0,H.jsx)(MZ,{noteId:s.noteById,theme:F},s.noteById),collectionDate:()=>(0,H.jsx)(FZ,{slug:s.collectionDate.slug,date:s.collectionDate.date,theme:F},`${s.collectionDate.slug}/${s.collectionDate.date}`),workout:()=>(0,H.jsx)(hZ,{category:s.workout.category,name:s.workout.name,mdContent:s.workout.content,theme:F,onViewCreated:N},`${s.workout.category}/${s.workout.name}`),library:()=>{let e=E??pA(dO(n.pathname));return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(l$,{pathname:n.pathname}),(0,H.jsx)(GX,{profile:e,registerStreamDraft:k,actions:(0,H.jsx)(QK,{mode:`collection-readonly`,currentWorkout:l,index:[]})},e.route)]})},settings:()=>(0,H.jsx)(e$,{})},ee=s.page===`canvas`?s.canvasPage?.route:void 0,L=ee===`/`||!!ee?.startsWith(`/guide/`),te=s.page===`canvas`&&s.canvasPage?(0,H.jsx)(H.Fragment,{children:s.canvasPage.quests.length>0&&(0,H.jsx)(KX,{pageRoute:s.canvasPage.route,quests:s.canvasPage.quests,challengeSectionMap:Tj(s.canvasPage),onScrollToSection:P})}):void 0;return(0,H.jsxs)(NF,{navbar:(0,H.jsxs)(tM,{children:[(0,H.jsxs)(`nav`,{"aria-label":`Breadcrumb`,className:`flex items-center gap-1.5 min-w-0 shrink-2 truncate text-sm`,children:[w&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>w?.action?.type===`route`&&t(w.action.to),className:`shrink-0 text-muted-foreground hover:text-foreground transition-colors`,children:w.label}),w&&!!T&&T.toLowerCase()!==w.label.toLowerCase()&&(0,H.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted-foreground/50 shrink-0`,children:`›`}),T&&T.toLowerCase()!==w?.label.toLowerCase()&&(0,H.jsx)(`span`,{className:`text-sm font-semibold text-zinc-950 dark:text-white truncate`,children:T}),te]}),(0,H.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1`,children:[(0,H.jsx)(iI,{}),(0,H.jsx)(EF,{}),(0,H.jsx)(bU,{})]})]}),sidebar:(0,H.jsx)(cP,{navSpec:s.shell.nav}),hideDesktopSidebar:L,secondary:D,pageAction:l.content===``?void 0:(0,H.jsx)(qK,{currentWorkout:l}),onSearch:A,onCreate:h,children:[(0,H.jsx)(HI,{open:d,onOpenChange:f,defaultDate:g,defaultMode:p,onCreated:_}),(0,H.jsx)(`div`,{className:`flex flex-col h-full min-h-[calc(100vh-theme(spacing.20))]`,children:(0,H.jsx)(`div`,{className:`flex-1 flex flex-col min-h-0`,children:(e=>{if(s.shell.wrap===`bare`)return e;let t=s.shell.subheader===`filter-collection-workouts`?(0,H.jsx)(xW,{placeholder:`Filter catalog workouts… Press / to start filtering`}):void 0;return(0,H.jsx)(CP,{title:s.shell.title,titleAccessory:te,subheader:t,index:s.shell.withIndex?u:void 0,actions:s.shell.actionsMode?(0,H.jsx)(QK,{mode:s.shell.actionsMode,currentWorkout:l,index:u}):void 0,children:e})})(I[s.page]())})}),(0,H.jsx)(CI,{}),(0,H.jsx)(cI,{})]})}function l$({pathname:e}){let t=/^\/results\/([^/]+)\/?$/.exec(e);return t?(0,H.jsx)(s$,{sessionId:decodeURIComponent(t[1])}):null}function u$(){let{name:e}=_n();return(0,H.jsx)(fn,{to:mO(e),replace:!0})}function d$(){let{category:e,name:t}=_n();return(0,H.jsx)(fn,{to:xO(e,t),replace:!0})}function f$(){let{slug:e,target:t}=_n(),{search:n}=zt();return t==null?(0,H.jsx)(fn,{to:{pathname:bO(e),search:n},replace:!0}):WF(decodeURIComponent(t))?(0,H.jsx)(fn,{to:{pathname:_O(decodeURIComponent(t)),search:n},replace:!0}):(0,H.jsx)(fn,{to:{pathname:xO(e,decodeURIComponent(t)),search:n},replace:!0})}function p$(){let{search:e}=zt();return(0,H.jsx)(fn,{to:{pathname:`/feeds`,search:e},replace:!0})}function m$(){let{slug:e}=_n();return(0,H.jsx)(fn,{to:jO(e),replace:!0})}function h$(){let{search:e}=zt();return(0,H.jsx)(fn,{to:{pathname:`/sessions`,search:e},replace:!0})}function g$(){return(0,H.jsx)(fn,{to:`/sessions?q=%3Asegment%7B%7D%20last%208w`,replace:!0})}function _$(){let{search:e}=zt();return(0,H.jsx)(fn,{to:{pathname:`/dashboards`,search:e},replace:!0})}function v$(){let{runtimeId:e}=_n();return(0,H.jsx)(fn,{to:SO(e),replace:!0})}function y$(){let{runtimeId:e,noteId:t,resultId:n}=_n(),r=n??e;return r?(0,H.jsx)(fn,{to:wO(r),replace:!0}):t?(0,H.jsx)(fn,{to:`/sessions?q=${encodeURIComponent(`:session{note:${t}}`)}`,replace:!0}):(0,H.jsx)(fn,{to:`/sessions`,replace:!0})}function b$(){let e=zt().search,t=e&&e.startsWith(`?`)?`${e}&mode=plan`:`?mode=plan`;return(0,H.jsx)(fn,{to:`/journal${t}`,replace:!0})}function x$(){let{search:e}=zt();return(0,H.jsx)(fn,{to:{pathname:`/dashboards`,search:e},replace:!0})}var S$=`G-PROD-ID`,C$=!1;function w$(){if(C$||typeof document>`u`)return;C$=!0,window.dataLayer=window.dataLayer??[],window.gtag=function(){window.dataLayer.push(arguments)};let e=document.createElement(`script`);e.async=!0,e.src=`https://www.googletagmanager.com/gtag/js?id=${S$}`,document.head.appendChild(e),window.gtag(`js`,new Date),window.gtag(`config`,S$,{send_page_view:!1})}function T$(e,t){typeof window>`u`||!kz.consent||window.gtag?.(`event`,`page_view`,{page_title:e??document.title,page_location:window.location.href,page_path:t??window.location.pathname+window.location.search})}kz.setForwarder(e=>{window.gtag?.(`event`,e.name,e.payload??{})}),kz.consent?w$():kz.subscribeConsent(e=>{e&&w$()});function E$(){let e=zt();return(0,V.useEffect)(()=>{let t=e.pathname;if(!t.startsWith(`/effort/`)&&!t.startsWith(`/e/`)&&!t.startsWith(`/playground/`)){let e=`Wod.Wiki`;t.startsWith(`/journal`)?e=`Wod.Wiki - Journal`:t.startsWith(`/catalogs`)?e=`Wod.Wiki - Catalogs`:t.startsWith(`/feeds`)||t.startsWith(`/feed`)||t.startsWith(`/collections`)||t.startsWith(`/c/`)?e=`Wod.Wiki - Feeds`:t.startsWith(`/efforts`)?e=`Wod.Wiki - Efforts`:t.startsWith(`/sessions`)||t.startsWith(`/session/`)||t.startsWith(`/results`)?e=`Wod.Wiki - Sessions`:t.startsWith(`/dashboards`)||t===`/dashboard`||t.startsWith(`/dashboard/`)||t.startsWith(`/d/`)?e=`Wod.Wiki - Dashboards`:t.startsWith(`/playgrounds`)?e=`Wod.Wiki - Playgrounds`:t.startsWith(`/analytics`)&&(e=`Wod.Wiki - Analytics`),document.title=e}let n=setTimeout(()=>{T$(document.title,e.pathname+e.search)},0);return()=>clearTimeout(n)},[e.pathname,e.search]),null}function D$(e,t){let n=e.match(RegExp(`^${t}:\\s*"([^"]+)"`,`m`));if(!n?.[1])throw Error(`Guide example is missing frontmatter field: ${t}`);return n[1]}function O$(e){let t=e.match(/```time\n([\s\S]*?)\n```/);if(!t)throw Error("Guide example is missing a ```time fenced block.");return t[1]}function k$(e,t){let n=D$(e,`title`),r=D$(e,`subtitle`),i=O$(e);return{title:n,subtitle:r,docsPath:t,workout:i,storyContent:[`# `+n,``,r,``,"```time",i,"```"].join(`
187
+ `)}}var A$={coreRules:{path:`markdown/canvas/syntax/core-rules.md`,docsPath:`/guide/start?h=first-workout`},measurements:{path:`markdown/canvas/syntax/measurements.md`,docsPath:`/guide/start?h=measurements`},timerModifiers:{path:`markdown/canvas/syntax/timer-modifiers.md`,docsPath:`/guide/protocols?h=countdown-countup`},simpleRounds:{path:`markdown/canvas/syntax/groups-1.md`,docsPath:`/guide/structure?h=rounds`},repSchemes:{path:`markdown/canvas/syntax/groups-2.md`,docsPath:`/guide/structure?h=rep-schemes`},timersAndRest:{path:`markdown/canvas/syntax/timers-rest.md`,docsPath:`/guide/protocols?h=required-rest`},classicAmrap:{path:`markdown/canvas/syntax/classic-amrap.md`,docsPath:`/guide/protocols?h=amrap`},basicEmom:{path:`markdown/canvas/syntax/basic-emom.md`,docsPath:`/guide/protocols?h=emom`},standardTabata:{path:`markdown/canvas/syntax/protocols-4.md`,docsPath:`/guide/protocols?h=tabata-intervals`},mixedSections:{path:`markdown/canvas/syntax/mixed-sections.md`,docsPath:`/guide/structure?h=named-sections`},complexNestedProtocols:{path:`markdown/canvas/syntax/complex-nested-protocols.md`,docsPath:`/guide/sessions?h=nested`}};function j$(e){let t={};for(let[n,{path:r,docsPath:i}]of Object.entries(A$)){let a=e[r];if(!a){t[n]=void 0;continue}try{t[n]=k$(a,i)}catch{t[n]=void 0}}return t}function M$({actionsSlot:e,heroSlot:t,children:n,className:r}){return(0,H.jsxs)(`main`,{className:U(`mx-auto w-full max-w-7xl px-6 py-10 sm:px-8 lg:px-12 lg:py-14`,r),children:[e&&(0,H.jsx)(`div`,{className:`mb-6 flex justify-end`,children:e}),t,n]})}var N$={headline:`Build and preview widget-driven workout pages.`,subtitle:`Phase 2.2 integrates the attention, code-example, and syntax-group widgets into one interactive playground surface.`,pillars:[{icon:(0,H.jsx)(Hn,{className:`size-4`,"aria-hidden":`true`}),label:`Attention widget`,description:`High-signal hero block with actionable CTAs.`},{icon:(0,H.jsx)(Pe,{className:`size-4`,"aria-hidden":`true`}),label:`Code example widget`,description:`Editable CodeMirror sample with runnable workout output.`},{icon:(0,H.jsx)(me,{className:`size-4`,"aria-hidden":`true`}),label:`Syntax group widget`,description:`Grouped syntax cards linked to docs.`}],actions:[{label:`Jump to workout`,action:`scroll-to-workout`,variant:`primary`},{label:`Open search`,action:`open-search`,variant:`secondary`}]};function P$(){let e=Mn(),{theme:t,setTheme:n}=zi(),r=(0,V.useRef)(null),i=ST(),a=(0,V.useMemo)(()=>i?j$(i):null,[i]),o=(0,V.useMemo)(()=>(a?.classicAmrap?.workout??`20:00 AMRAP
188
+ 5 Pullups
189
+ 10 Pushups
190
+ 15 Air Squats`).split(`
191
+ `),[a]),s=(0,V.useMemo)(()=>({lines:[{code:o[0]??`20:00 AMRAP`,annotation:`Classic AMRAP from the guide — fixed time window with unbounded rounds.`},{code:o[1]??` 5 Pullups`,annotation:`Start each round with five pullups.`},{code:o[2]??` 10 Pushups`,annotation:`Then move into ten pushups.`},{code:o[3]??` 15 Air Squats`,annotation:`Finish the round with fifteen air squats before looping.`}],cta:`Run this example`}),[o]),c=(0,V.useMemo)(()=>{let e=a?.simpleRounds,t=a?.timersAndRest,n=a?.repSchemes;return[{category:`Structure`,icon:`🔁`,title:e?.title??`Simple Rounds`,description:e?.subtitle??`Rounds repeated for time or reps.`,example:e?.workout??`3 rounds
192
+ 10 Air Squats`,docsPath:e?.docsPath??`/guide/structure?h=rounds`},{category:`Timing`,icon:`⏱️`,title:t?.title??`Timers And Rest`,description:t?.subtitle??`Timed windows with rest periods.`,example:t?.workout??`10:00
193
+ 5 Burpees
194
+ rest 1:00`,docsPath:t?.docsPath??`/guide/protocols?h=required-rest`},{category:`Structure`,icon:`🏋️`,title:`Rep Schemes`,description:n?.subtitle??`Rep counts per movement.`,example:n?.workout??`21-15-9
195
+ Thrusters`,docsPath:n?.docsPath??`/guide/structure?h=rep-schemes`}]},[a]),l=(0,V.useMemo)(()=>t===`dark`||t!==`light`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches,[t]),u=$j(),d=(0,V.useCallback)(async()=>{let t=await uI.getState().open({wql:{initialQuery:nL(),execute:iL,preferredChoices:rL()},sources:[$I(),tL(MI(u))]});t.dismissed||aL(t.item,e)},[e,u]),f=(0,V.useCallback)(e=>{if(e===`scroll-to-workout`){r.current?.scrollIntoView({behavior:`smooth`,block:`start`});return}e===`open-search`&&d()},[d]),p=(0,V.useCallback)(async t=>{let n=await Rz([`# Playground Widget Example`,``,"```time",t,"```",``,`[▶ Run Workout]{.button action=start-workout}`,``].join(`
196
+ `));e(mO(n))},[e]),m=(0,V.useCallback)(t=>{if(/^https?:\/\//i.test(t)){window.open(t,`_blank`,`noopener,noreferrer`);return}e(t)},[e]);return(0,H.jsxs)(M$,{actionsSlot:(0,H.jsxs)(`div`,{className:`flex items-center gap-3 rounded-2xl border border-zinc-200 bg-zinc-50/80 px-4 py-3 dark:border-zinc-700 dark:bg-zinc-900/70`,children:[(0,H.jsx)(lt,{className:`size-4 text-zinc-500`,"aria-hidden":`true`}),(0,H.jsx)(DQ,{checked:l,onChange:e=>n(e?`dark`:`light`),"aria-label":`Toggle dark mode`}),(0,H.jsx)(x,{className:`size-4 text-zinc-500`,"aria-hidden":`true`})]}),heroSlot:(0,H.jsx)(eZ,{config:N$,onAction:f}),children:[(0,H.jsxs)(`section`,{ref:r,id:`workout-widget-surface`,className:`mt-8 grid grid-cols-1 gap-4 xl:grid-cols-3`,children:[(0,H.jsx)(`div`,{className:`xl:col-span-2`,children:(0,H.jsx)(tZ,{config:s,isDarkMode:l,onRun:p})}),(0,H.jsx)(`div`,{className:`space-y-4`,children:c.map(e=>(0,H.jsx)(nZ,{config:e,onOpenDocs:m},e.title))})]}),(0,H.jsx)(Mq,{})]})}function F$(){let e=Mn();return(0,H.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center gap-6 p-8 text-center`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-muted`,children:(0,H.jsx)(k,{className:`w-8 h-8 text-muted-foreground`})}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight`,children:`Page not found`}),(0,H.jsx)(`p`,{className:`text-muted-foreground max-w-sm`,children:`The page you are looking for does not exist or has been moved.`})]}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>e(`/`),className:`inline-flex items-center gap-2 px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium hover:bg-primary/90 transition-colors`,children:[(0,H.jsx)(ue,{className:`w-4 h-4`}),`Go home`]})]})}var $=(e=0,t=0,n=0,r=0,i=0)=>[e,t,n,r,i],I$=(e,t)=>e.map((e,n)=>e+t[n]),L$=(e,t)=>e.map((e,n)=>e-t[n]),R$=(e,t)=>e.every((e,n)=>e===t[n]),z$=$(),B$=[`length`,`mass`,`time`,`count`,`energy`];function V$(e){if(R$(e,z$))return`dimensionless`;let t=[];return e.forEach((e,n)=>{e!==0&&t.push(`${B$[n]}${e===1?``:`^`+e}`)}),t.join(` · `)}var H$={m:{dim:$(1),toBase:1},km:{dim:$(1),toBase:1e3},mi:{dim:$(1),toBase:1609.34},kg:{dim:$(0,1),toBase:1},lb:{dim:$(0,1),toBase:.4536},ms:{dim:$(0,0,1),toBase:.001},s:{dim:$(0,0,1),toBase:1},min:{dim:$(0,0,1),toBase:60},h:{dim:$(0,0,1),toBase:3600},reps:{dim:$(0,0,0,1),toBase:1},cal:{dim:$(0,0,0,0,1),toBase:1},MET:{dim:z$,toBase:1},pts:{dim:z$,toBase:1},AU:{dim:z$,toBase:1},ratio:{dim:z$,toBase:1},"MET-min":{dim:$(0,0,1),toBase:60},"reps/min":{dim:L$($(0,0,0,1),$(0,0,1)),toBase:1/60},"m/s":{dim:L$($(1),$(0,0,1)),toBase:1},"min/km":{dim:L$($(0,0,1),$(1)),toBase:60/1e3},"sec/km":{dim:L$($(0,0,1),$(1)),toBase:1/1e3},"min/mi":{dim:L$($(0,0,1),$(1)),toBase:60/1609.34},"km/h":{dim:L$($(1),$(0,0,1)),toBase:1e3/3600},"kg/s":{dim:L$(I$($(0,1),$(0,0,0,1)),$(0,0,1)),toBase:1},"lb/s":{dim:L$(I$($(0,1),$(0,0,0,1)),$(0,0,1)),toBase:.4536}},U$=[{dim:L$($(0,0,1),$(1)),name:`pace`,units:[`min/km`,`sec/km`,`min/mi`]},{dim:L$($(1),$(0,0,1)),name:`speed`,units:[`m/s`,`km/h`]},{dim:I$($(0,1),$(0,0,0,1)),name:`volume`,units:[`kg`,`lb`]},{dim:L$(I$($(0,1),$(0,0,0,1)),$(0,0,1)),name:`power`,units:[`kg/s`,`lb/s`]},{dim:$(0,0,1),name:`time`,units:[`min`,`s`,`MET-min`]},{dim:$(0,0,0,1),name:`count`,units:[`reps`]},{dim:$(1),name:`length`,units:[`m`,`km`,`mi`]},{dim:$(0,1),name:`mass`,units:[`kg`,`lb`]},{dim:z$,name:`dimensionless`,units:[`pts`,`AU`,`MET`]}],W$=e=>U$.find(t=>R$(t.dim,e)),G$=(e,t=z$)=>({v:e,dim:t}),K$={thruster:{met:6,discipline:`strength`,disciplineFactor:1.2,intensityTier:`high`,resolvedFrom:`bundled`},"pull-up":{met:5,discipline:`gymnastics`,disciplineFactor:1.2,intensityTier:`moderate`,resolvedFrom:`bundled`},run:{met:9.8,discipline:`running`,disciplineFactor:1,intensityTier:`high`,resolvedFrom:`bundled`},squat:{met:5,discipline:`strength`,disciplineFactor:1.2,intensityTier:`moderate`,resolvedFrom:`bundled`}},q$={met:$(0,0,0,0,0),disciplineFactor:z$},J$={easy:3,moderate:5,hard:7,"all-out":10,max:10},Y$={effort:{fields:[`met`,`discipline`,`disciplineFactor`,`intensityTier`,`resolvedFrom`],get:(e,t)=>{let n=K$[e];if(!n)return t===`resolvedFrom`?G$(NaN):void 0;let r=n[t];return typeof r==`number`?{v:r,dim:q$[t]??z$}:void 0}},"rpe-labels":{fields:[`rpe`],get:e=>J$[e]===void 0?void 0:G$(J$[e])}},X$={min:e=>G$(Math.min(...e.map(e=>e.v)),e[0]?.dim??z$),max:e=>G$(Math.max(...e.map(e=>e.v)),e[0]?.dim??z$),abs:e=>G$(Math.abs(e[0].v),e[0].dim),round:e=>G$(e.length>1?+e[0].v.toFixed(e[1].v):Math.round(e[0].v),e[0].dim),floor:e=>G$(Math.floor(e[0].v),e[0].dim),ceil:e=>G$(Math.ceil(e[0].v),e[0].dim),clamp:e=>G$(Math.min(Math.max(e[0].v,e[1].v),e[2].v),e[0].dim),convert:e=>{let t=e[1].unit??``,n=H$[t];if(!n||!R$(n.dim,e[0].dim))throw Error(`convert: ${t} dimension ≠ value dimension`);return{v:e[0].v/n.toBase,dim:e[0].dim}}},Z$=Object.keys(X$).concat([`has`,`lookup`]);function Q$(e){let t=[],n=/\s*("(?:[^"]*)"|\d+\.?\d*|[a-zA-Z_][\w.-]*(?::[\w.:*!|,-]+(?:\{[^}]*\})?(?:\s+by\s+\{[^}]*\})?)?|[-+*/(),<>!=]=?|>=|<=|==)/y,r,i=0;for(;i<e.length;){if(n.lastIndex=i,r=n.exec(e),!r||r.index!==i){/\S/.test(e[i])&&t.push({t:`err`,s:e[i]}),i+=1;continue}i=n.lastIndex;let a=r[1];/^".*"$/.test(a)?t.push({t:`str`,s:a.slice(1,-1)}):/^\d/.test(a)?t.push({t:`num`,s:a}):/^[-+*/(),]$/.test(a)||[`>=`,`<=`,`==`,`!=`,`>`,`<`,`=`].includes(a)?t.push({t:`op`,s:a}):t.push({t:`id`,s:a})}return t}function $$(e){let t=0,n=()=>e[t];function r(i){let a,o=e[t++];if(!o)throw Error(`unexpected end`);if(o.t===`num`)a={k:`num`,v:parseFloat(o.s)};else if(o.t===`str`)a={k:`str`,s:o.s};else if(o.s===`-`)a={k:`neg`,e:r(70)};else if(o.s===`(`){if(a=r(0),n()?.s!==`)`)throw Error(`missing )`);t++}else if(o.t===`id`){if(n()?.s===`(`){t++;let e=[];if(n()?.s!==`)`)for(;;){if(e.push(r(0)),n()?.s===`,`){t++;continue}break}if(n()?.s!==`)`)throw Error(`missing )`);t++,a={k:`call`,f:o.s,args:e}}else a={k:`id`,s:o.s}}else throw Error(`unexpected "${o.s}"`);for(;;){let e=n()?.s,o=e===`*`||e===`/`?60:e===`+`||e===`-`?50:[`<`,`<=`,`>`,`>=`,`==`,`!=`].includes(e)?40:e===`and`?30:e===`or`?20:0;if(!o||o<i)break;t++;let s=r(o+1);a={k:`bin`,op:e,l:a,r:s}}return a}let i=r(0);if(t<e.length)throw Error(`trailing "${e[t].s}"`);return i}function e1(e,t,n){switch(e.k){case`num`:return G$(e.v);case`str`:return{v:NaN,dim:z$,unit:e.s};case`neg`:{let r=e1(e.e,t,n);return G$(-r.v,r.dim)}case`id`:{if(/^(sum|avg|max|min|count|last):/.test(e.s)){let t=n(e.s);if(!t)throw Error(`no data for ${e.s}`);return t}let r=t[e.s];if(r===void 0)throw Error(`unknown or absent: ${e.s}`);return r}case`bin`:{if(e.op===`and`)return G$(e1(e.l,t,n).v&&e1(e.r,t,n).v?1:0);if(e.op===`or`)return G$(e1(e.l,t,n).v||e1(e.r,t,n).v?1:0);let r=e1(e.l,t,n),i=e1(e.r,t,n);switch(e.op){case`+`:if(!R$(r.dim,i.dim))throw Error(`+ : ${V$(r.dim)} vs ${V$(i.dim)}`);return G$(r.v+i.v,r.dim);case`-`:if(!R$(r.dim,i.dim))throw Error(`- : ${V$(r.dim)} vs ${V$(i.dim)}`);return G$(r.v-i.v,r.dim);case`*`:return G$(r.v*i.v,I$(r.dim,i.dim));case`/`:return G$(r.v/i.v,L$(r.dim,i.dim));case`<`:return G$(+(r.v<i.v));case`<=`:return G$(+(r.v<=i.v));case`>`:return G$(+(r.v>i.v));case`>=`:return G$(+(r.v>=i.v));case`==`:return G$(+(r.v===i.v));case`!=`:return G$(r.v===i.v?0:1)}throw Error(e.op)}case`call`:{if(e.f===`has`){let r=e.args[0];return r.k===`id`?G$(t[r.s]!==void 0||/^(sum|avg|max|min|count|last):/.test(r.s)&&n(r.s)!==void 0?1:0):G$(0)}if(e.f===`lookup`){let[n,r,i]=e.args,a=n.k===`str`?n.s:``,o=r.k===`str`?r.s:r.k===`id`?String(t[r.s]?.v??r.s):``,s=i.k===`str`?i.s:``,c=Y$[a];if(!c)throw Error(`unknown table "${a}"`);if(!c.fields.includes(s))throw Error(`table "${a}" has no field "${s}"`);if(a===`effort`&&s===`resolvedFrom`)return G$(+!!K$[o]);let l=c.get(o,s);if(!l)throw Error(`lookup miss: ${a}/${o}/${s}`);return l}let r=X$[e.f];if(!r)throw Error(`unknown function ${e.f}`);return r(e.args.map((r,i)=>e.f===`convert`&&i>0&&r.k===`id`?{v:NaN,dim:z$,unit:r.s}:e1(r,t,n)))}}}var t1=[{effort:`thruster`,label:`hard`,reps:21,resistanceKg:43,elapsedMs:95e3},{effort:`pull-up`,reps:21,elapsedMs:6e4},{effort:`thruster`,reps:15,resistanceKg:43,elapsedMs:7e4},{effort:`pull-up`,reps:15,elapsedMs:5e4},{effort:`sled-push`,reps:9,resistanceKg:43,elapsedMs:45e3},{effort:`pull-up`,reps:9,elapsedMs:3e4}],n1=[420,0,380,510,0,290,610,450,0,520,340,0,480,390,560,0,410,470,0,530,360,440,0,500,580,320,0,460];function r1(e){let t=K$[e.effort]?.met??4,n=!K$[e.effort];return{segmentVolume:e.reps&&e.resistanceKg?G$(e.reps*e.resistanceKg,I$($(0,1),$(0,0,0,1))):void 0,metMinutes:G$(t*(e.elapsedMs/6e4),$(0,0,1)),metMinutesEstimated:n?G$(1):void 0,effortRpe:e.label?G$(J$[e.label]??0):void 0}}function i1(e){let t={name:``,exprSrc:``,alternates:[],library:!1,bindings:[]};try{let n=e.trim(),r=/\s+when\s+/.exec(n);r&&(t.whenSrc=n.slice(r.index+r[0].length).trim(),n=n.slice(0,r.index));let i=/\s+where\s+/.exec(n);if(i){let e=n.slice(i.index+i[0].length).trim();n=n.slice(0,i.index);for(let n of e.split(/,\s*(?=[a-zA-Z_][\w]*\s*=)/)){let e=n.indexOf(`=`);e>0&&t.bindings.push({name:n.slice(0,e).trim(),src:n.slice(e+1).trim()})}}let a=/\s*->\s*/.exec(n);a&&(t.unit=n.slice(a.index+a[0].length).trim().replace(/\s+(key|grouped).*$/,``),n=n.slice(0,a.index)),/\(library\)/.test(n)&&(t.library=!0,n=n.replace(`(library)`,``));let o=n.indexOf(`=`);if(o<0)throw Error(`expected name = expression`);t.name=n.slice(0,o).trim();let s=n.slice(o+1).trim().split(`|`).map(e=>e.trim());return t.exprSrc=s[0],t.alternates=s.slice(1).map(e=>({src:e.replace(/\s*estimated\s*$/,``),estimated:/\bestimated\b/.test(e)})),t}catch(e){return t.error=e instanceof Error?e.message:String(e),t}}function a1(e,t,n,r){let i=r1(e);return{elapsed:G$(e.elapsedMs/1e3,$(0,0,1)),reps:e.reps===void 0?void 0:G$(e.reps,$(0,0,0,1)),resistance:e.resistanceKg===void 0?void 0:G$(e.resistanceKg,$(0,1)),distance:e.distanceM===void 0?void 0:G$(e.distanceM,$(1)),effort:G$(NaN),effortLabel:e.label?G$(NaN):void 0,segmentVolume:i.segmentVolume,metMinutes:i.metMinutes,effortRpe:i.effortRpe,sessionRpe:n===void 0?void 0:G$(n),"profile.vo2max":r===void 0?void 0:G$(r),...t}}var o1=e=>e.effort;function s1(e,t,n,r){let i=i1(e),a=[];if(i.error)return{calc:i,diagnostics:[i.error]};let o={calc:i,diagnostics:a},s=e=>e instanceof Error?e.message:String(e);if(t!==`store`){try{$$(Q$(i.exprSrc))}catch(e){a.push(`expression: ${s(e)}`)}for(let e of i.bindings)for(let t of e.src.split(`|`))try{$$(Q$(t.replace(/\s*estimated\s*$/,``)))}catch(t){a.push(`${e.name}: ${s(t)}`)}if(i.whenSrc)try{$$(Q$(i.whenSrc))}catch(e){a.push(`when: ${s(e)}`)}}let c=t1,l=(e,t=c.length)=>{let i=/^(sum|avg|max|min|count|last):([\w.]+)/.exec(e);if(!i)return;let[,a,o]=i,s=c.slice(0,t),l=[];for(let e of s){let t=a1(e,{},n,r)[o];t!==void 0&&!Number.isNaN(t.v)&&l.push(t)}if(o===`sessionLoad`&&e.includes(`by {day}`))return G$(NaN);if(!l.length)return;let u=l[0].dim,d=l.map(e=>e.v);if(a===`sum`)return G$(d.reduce((e,t)=>e+t,0),u);if(a===`avg`)return G$(d.reduce((e,t)=>e+t,0)/d.length,u);if(a===`max`)return G$(Math.max(...d),u);if(a===`min`)return G$(Math.min(...d),u);if(a===`count`)return G$(d.length,$(0,0,0,1));if(a===`last`)return l[l.length-1]},u=(e,t,n)=>{let r={...t};for(let e of i.bindings){let t=e.src.split(`|`).map(e=>e.replace(/\s*estimated\s*$/,``).trim()),i;for(let e of t)try{i=d(e,r,n);break}catch{}if(i===void 0)throw Error(`${e.name}: no applicable variant`);r[e.name]=i}return d(e,r,n)},d=(e,t,n)=>e1($$(Q$(e)),t,e=>l(e,n));try{if(t===`segment`){let e=[],t;c.forEach((a,o)=>{try{let s=a1(a,{},n,r);if(s.effort=void 0,i.whenSrc&&!d(i.whenSrc,s,o+1).v){e.push(null);return}let c=i.exprSrc.replace(/lookup\("effort",\s*effort\s*,/g,`lookup("effort", "${o1(a)}",`).replace(/lookup\("rpe-labels",\s*effortLabel\s*,/g,`lookup("rpe-labels", "${a.label??``}",`),l=u(c,s,o+1);t||=l.dim;let f=i.unit&&i.unit!==`auto`?` ${i.unit}`:t?` [${V$(l.dim)}]`:``;e.push(`${Math.round(l.v*100)/100}${f}`)}catch(t){e.push(`∅ ${s(t)}`)}}),o.perSegment=e,o.dim=t}else if(t===`workout`){let e=[],t;for(let a=1;a<=c.length;a++)try{let s=c[a-1],l=a1(s,{"session.duration":G$(c.slice(0,a).reduce((e,t)=>e+t.elapsedMs,0)/1e3,$(0,0,1))},n,r);if(i.whenSrc&&!d(i.whenSrc,l,a).v){e.push(null);continue}let f=i.exprSrc.replace(/lookup\("effort",\s*effort\s*,/g,`lookup("effort", "${o1(s)}",`),p,m=`primary`;try{p=u(f,l,a)}catch(e){for(let e of i.alternates)try{p=u(e.src,l,a),m=e.estimated?`estimated`:`alternate`;break}catch{}if(p===void 0)throw e}t=p.dim,e.push(`${Math.round(p.v*100)/100}${i.unit&&i.unit!==`auto`?` `+i.unit:``}${m===`estimated`?` (est.)`:``}`),o.variantUsed=m}catch(t){e.push(`∅ ${s(t)}`)}o.running=e,o.dim=t}else{let e=n1,t=(e,t,n)=>e.map((r,i)=>i+1>=t?n(e.slice(i+1-t,i+1)):NaN),n=e=>e.reduce((e,t)=>e+t,0)/e.length,r=e=>{let t=n(e);return Math.sqrt(n(e.map(e=>(e-t)**2)))},a=i.name,s=[];if(a.includes(`acwr`)){let r=t(e,7,n),i=t(e,28,n);s=e.map((e,t)=>r[t]/i[t])}else if(a.includes(`monotony`)){let i=t(e,7,n),a=t(e,7,r);s=e.map((e,t)=>i[t]/a[t])}else if(a.includes(`strain`)){let i=t(e,7,n),a=t(e,7,r),o=t(e,7,e=>e.reduce((e,t)=>e+t,0));s=e.map((e,t)=>i[t]/a[t]*o[t])}else s=t(e,7,n);o.perSegment=s.slice(-7).map(e=>Number.isNaN(e)?null:String(Math.round(e*100)/100)),o.dim=z$}}catch(e){a.push(s(e))}if(o.dim&&i.unit&&i.unit!==`auto`){let e=H$[i.unit];e?!R$(e.dim,o.dim)&&!R$(e.dim,z$)&&a.push(`unit "${i.unit}" is ${V$(e.dim)} but expression computes ${V$(o.dim)}`):a.push(`unknown unit "${i.unit}"`)}return o}function c1(e,t){let n=/([a-zA-Z_][\w.:-]*|"[\w-]*|)$/.exec(e)[1],r=e.length-n.length,i=e.slice(0,r),a=[],o=(e,t,n)=>a.push({label:e,insert:t,detail:n}),s=/lookup\("([\w-]*)",?\s*("[\w-]*",?\s*)?"?([\w-]*)$/.exec(e);if(s){if(s[2]===void 0&&!e.endsWith(`"`))Y$&&Object.keys(Y$).forEach(e=>o(e,`"${e}"`,`lookup table`));else{let t=s[1];(e.split(`"`).length<=5&&s[3]!==void 0||/,\s*"[\w-]*$/.test(e))&&(Y$[t]?.fields??[]).forEach(e=>o(e,`"${e}"`,`${t} field`)),t===`effort`&&/,\s*$/.test(e)&&Object.keys(K$).concat([`effort`]).forEach(e=>o(e,e===`effort`?`effort`:`"${e}"`,`key`))}return{items:a.filter(e=>e.label.startsWith(n.replace(/"/g,``))),from:r}}return/^(sum|avg|max|min|count|last):[\w.]*$/.test(n)?((t===`segment`?[]:[`reps`,`distance`,`segmentVolume`,`metMinutes`,`elapsed`,`effortRpe`,`sessionLoad`]).forEach(e=>o(e,e,`metric key`)),{items:a.filter(e=>e.label.startsWith(n.split(`:`)[1]??``)),from:r+n.indexOf(`:`)+1}):/->\s*[\w/]*$/.test(i+n)?(Object.keys(H$).forEach(e=>o(e,e,`unit`)),{items:a.filter(e=>e.label.startsWith(n)),from:r}):((t===`segment`?[`elapsed`,`reps`,`resistance`,`distance`,`effort`,`effortLabel`,`segmentVolume`,`metMinutes`,`effortRpe`,`sessionRpe`]:[`sessionRpe`,`session.duration`,`profile.vo2max`]).forEach(e=>o(e,e,t===`segment`?`segment metric / context`:`context node`)),Z$.forEach(e=>o(`${e}()`,`${e}()`,`function`)),[`sum:`,`avg:`,`max:`,`count:`,`last:`].forEach(e=>o(`${e}{}`,e,`WQL atom`)),i.includes(`=`)&&o(`estimated`,`estimated`,`variant origin`),[`when `,`-> `,`where `,`| `,` key `,`(library)`].forEach(e=>o(e.trim(),e,`clause`)),{items:a.filter(e=>e.label.startsWith(n)).slice(0,9),from:r})}var l1={background:`#18181b`,border:`1px solid #3f3f46`,borderRadius:8,padding:12},u1={fontFamily:`ui-monospace, monospace`,fontSize:13};function d1({r:e}){let t=W$(e.dim??z$);return(0,H.jsxs)(`div`,{style:{marginTop:8,fontSize:12},children:[e.dim&&(0,H.jsxs)(`div`,{style:{color:`#a1a1aa`,marginBottom:4},children:[`computes `,(0,H.jsx)(`b`,{style:{color:`#e4e4e7`},children:V$(e.dim)}),t&&t.name!==`dimensionless`&&(0,H.jsxs)(H.Fragment,{children:[` → `,(0,H.jsx)(`span`,{style:{color:`#c084fc`},children:t.name}),` — units: `,t.units.map(t=>(0,H.jsx)(f1,{u:t,active:e.calc.unit===t},t))]})]}),e.diagnostics.map((e,t)=>(0,H.jsxs)(`div`,{style:{color:`#f87171`},children:[`⚠ `,e]},t)),!e.diagnostics.length&&(0,H.jsxs)(`div`,{style:{color:`#34d399`},children:[`✓ valid`,e.variantUsed===`estimated`?` — estimated variant in use`:``]})]})}var f1=({u:e,active:t})=>(0,H.jsx)(`span`,{style:{border:`1px solid ${t?`#c084fc`:`#52525b`}`,borderRadius:4,padding:`0 5px`,marginRight:4,color:t?`#c084fc`:`#a1a1aa`},children:e});function p1({r:e,scope:t,sessionRpe:n,vo2max:r}){return(0,H.jsxs)(`div`,{style:{...l1,minWidth:320},children:[(0,H.jsxs)(`div`,{style:{fontSize:11,color:`#71717a`,marginBottom:6},children:[`LIVE PREVIEW — `,t===`store`?`last 7 of 28 days (fixture)`:`Fran, 2026-07-28 (fixture)${r?` · VO₂max ${r}`:` · VO₂max unknown`}${n?` · sRPE ${n}`:``}`]}),t===`segment`&&t1.map((t,n)=>(0,H.jsxs)(`div`,{style:{...u1,display:`flex`,justifyContent:`space-between`,color:`#d4d4d8`},children:[(0,H.jsxs)(`span`,{style:{color:`#71717a`},children:[t.effort,t.reps?` ×${t.reps}`:``,t.resistanceKg?` ${t.resistanceKg}kg`:``]}),(0,H.jsx)(`span`,{style:{color:e.perSegment?.[n]?.startsWith(`∅`)?`#f87171`:`#7dd3fc`},children:e.perSegment?.[n]??`—`})]},n)),t===`workout`&&t1.map((t,n)=>(0,H.jsxs)(`div`,{style:{...u1,display:`flex`,justifyContent:`space-between`,color:`#d4d4d8`},children:[(0,H.jsxs)(`span`,{style:{color:`#71717a`},children:[`after line `,n+1]}),(0,H.jsx)(`span`,{style:{color:e.running?.[n]?.startsWith(`∅`)?`#f87171`:`#7dd3fc`},children:e.running?.[n]??`—`})]},n)),t===`store`&&(e.perSegment??[]).map((e,t)=>(0,H.jsxs)(`div`,{style:{...u1,display:`flex`,justifyContent:`space-between`,color:`#d4d4d8`},children:[(0,H.jsxs)(`span`,{style:{color:`#71717a`},children:[`D-`,6-t]}),(0,H.jsx)(`span`,{style:{color:`#7dd3fc`},children:e??`—`})]},t))]})}function m1({scope:e,onSrc:t}){let[n,r]=(0,V.useState)(`power`),[i,a]=(0,V.useState)(`reps * resistance / convert(elapsed, s)`),[o,s]=(0,V.useState)(`kg/s`),[c,l]=(0,V.useState)(`has(reps) and has(resistance) and elapsed > 0`),[u,d]=(0,V.useState)(null),f=`${n} = ${i}${o?` -> ${o}`:``}${c?` when ${c}`:``}`,p=(0,V.useMemo)(()=>s1(f,e,void 0,void 0),[f,e]);(0,V.useEffect)(()=>t(f),[f]);let m=[{id:`name`,label:`name`,value:n,set:r,hint:`calc id`},{id:`expr`,label:`=`,value:i,set:a,hint:`expression — metrics, lookups, functions`},{id:`unit`,label:`->`,value:o,set:s,hint:`output unit (auto allowed)`},{id:`when`,label:`when`,value:c,set:l,hint:`applicability predicate`}];return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{style:{display:`flex`,gap:6,flexWrap:`wrap`,alignItems:`center`},children:m.map(e=>(0,H.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4},children:[(0,H.jsx)(`span`,{style:{color:`#71717a`,fontSize:12},children:e.label}),(0,H.jsx)(`button`,{onClick:()=>d(u===e.id?null:e.id),style:{...u1,fontSize:12,background:u===e.id?`#3b0764`:`#27272a`,border:`1px solid ${u===e.id?`#c084fc`:`#3f3f46`}`,borderRadius:6,color:`#e4e4e7`,padding:`4px 10px`,cursor:`pointer`,maxWidth:340,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.value||(0,H.jsx)(`span`,{style:{color:`#52525b`},children:`∅`})})]},e.id))}),u&&(0,H.jsxs)(`div`,{style:{...l1,marginTop:8},children:[(0,H.jsx)(`div`,{style:{fontSize:11,color:`#71717a`,marginBottom:4},children:m.find(e=>e.id===u)?.hint}),(0,H.jsx)(`input`,{autoFocus:!0,value:m.find(e=>e.id===u).value,onChange:e=>m.find(e=>e.id===u).set(e.target.value),style:{...u1,width:`100%`,background:`#09090b`,border:`1px solid #3f3f46`,borderRadius:6,color:`#e4e4e7`,padding:`4px 8px`,outline:`none`}}),(0,H.jsx)(`div`,{style:{display:`flex`,gap:4,flexWrap:`wrap`,marginTop:6},children:c1(m.find(e=>e.id===u).value,e).items.map((e,t)=>(0,H.jsx)(`button`,{onClick:()=>m.find(e=>e.id===u).set(e.insert),style:{...u1,fontSize:12,background:`#27272a`,border:`1px solid #3f3f46`,borderRadius:5,color:`#7dd3fc`,padding:`2px 8px`,cursor:`pointer`},children:e.label},t))})]}),(0,H.jsx)(`div`,{style:{...u1,marginTop:8,color:`#52525b`,fontSize:12},children:f}),(0,H.jsx)(d1,{r:p})]})}function h1({scope:e,onSrc:t}){let[n,r]=(0,V.useState)(`power`),[i,a]=(0,V.useState)([`reps`,`*`,`resistance`,`/`,`convert(elapsed, s)`]),o=[{group:`metrics`,items:e===`segment`?[`elapsed`,`reps`,`resistance`,`distance`]:[`sum:reps{}`,`sum:distance{}`,`sum:metMinutes{}`,`sum:elapsed{}`]},{group:`functions`,items:[`convert(·, min)`,`convert(·, km)`,`convert(·, s)`,`min(·, 100)`,`round(·)`]},{group:`lookups`,items:[`lookup("effort", effort, "met")`,`lookup("effort", effort, "disciplineFactor")`,`lookup("rpe-labels", effortLabel, "rpe")`]},{group:`operators`,items:[`+`,`-`,`*`,`/`,`(`,`)`]}],s=`${n} = ${i.join(` `)} -> auto`,c=(0,V.useMemo)(()=>s1(s,e,void 0,void 0),[s,e]);(0,V.useEffect)(()=>t(s),[s]);let l=W$(c.dim??z$);return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:8,alignItems:`center`},children:[(0,H.jsx)(`span`,{style:{fontSize:12,color:`#71717a`},children:`name`}),(0,H.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),style:{...u1,background:`#09090b`,border:`1px solid #3f3f46`,borderRadius:6,color:`#e4e4e7`,padding:`3px 8px`}})]}),o.map(e=>(0,H.jsxs)(`div`,{style:{marginBottom:6},children:[(0,H.jsx)(`div`,{style:{fontSize:11,color:`#71717a`,marginBottom:3},children:e.group}),(0,H.jsx)(`div`,{style:{display:`flex`,gap:4,flexWrap:`wrap`},children:e.items.map(e=>(0,H.jsx)(`button`,{onClick:()=>a(t=>[...t,e]),style:{...u1,fontSize:12,background:`#27272a`,border:`1px solid #3f3f46`,borderRadius:5,color:`#7dd3fc`,padding:`2px 8px`,cursor:`pointer`},children:e},e))})]},e.group)),(0,H.jsxs)(`div`,{style:{...l1,...u1,marginTop:8,color:`#d4d4d8`,minHeight:34},children:[i.map((e,t)=>(0,H.jsx)(`span`,{onClick:()=>a(e=>e.filter((e,n)=>n!==t)),title:`click to remove`,style:{cursor:`pointer`,background:`#27272a`,borderRadius:4,padding:`1px 6px`,marginRight:4,display:`inline-block`},children:e},t)),!i.length&&(0,H.jsx)(`span`,{style:{color:`#52525b`},children:`click palette items to build the formula…`})]}),(0,H.jsxs)(`div`,{style:{fontSize:12,color:`#71717a`,marginTop:6},children:[`unit: `,(0,H.jsx)(`b`,{style:{color:`#c084fc`},children:l?l.units.join(` / `):`—`}),` (derived)`]}),(0,H.jsx)(`div`,{style:{...u1,marginTop:6,color:`#52525b`,fontSize:12},children:s}),(0,H.jsx)(d1,{r:c})]})}var g1={segment:`power = reps * resistance / convert(elapsed, s) -> kg/s when has(reps) and has(resistance) and elapsed > 0`,workout:`sessionLoad = round(rpe * convert(session.duration, min)) -> AU where rpe = sessionRpe | max:effortRpe{} | 5 estimated`,store:`acwr = windowMean(daily, 7d) / windowMean(daily, 28d) -> ratio`};function _1(){let[e,t]=Yt(),n=e.get(`v`)??`text`,[r,i]=(0,V.useState)(`segment`),[a,o]=(0,V.useState)(void 0),[s,c]=(0,V.useState)(void 0),[l,u]=(0,V.useState)(g1.segment),[d,f]=(0,V.useState)(``),p=n===`text`?l:d||l,m=(0,V.useMemo)(()=>s1(p,r,a,s),[p,r,a,s]),h=[[`text`,`A · text + completion`],[`slots`,`B · token slots`],[`guided`,`C · guided builder`]];return(0,H.jsxs)(`div`,{style:{background:`#09090b`,minHeight:`100vh`,color:`#e4e4e7`,padding:24,fontFamily:`system-ui`},children:[(0,H.jsxs)(`div`,{style:{maxWidth:1100,margin:`0 auto`},children:[(0,H.jsx)(`div`,{style:{fontSize:11,color:`#f59e0b`,marginBottom:4},children:`PROTOTYPE — throwaway · issue #863`}),(0,H.jsx)(`h1`,{style:{fontSize:20,fontWeight:700,marginBottom:12},children:`Calc-line guided authoring`}),(0,H.jsxs)(`div`,{style:{display:`flex`,gap:12,marginBottom:16,alignItems:`center`,fontSize:13},children:[[`segment`,`workout`,`store`].map(e=>(0,H.jsxs)(`button`,{onClick:()=>{i(e),u(g1[e])},style:{padding:`3px 12px`,borderRadius:6,border:`1px solid ${r===e?`#7dd3fc`:`#3f3f46`}`,background:`none`,color:r===e?`#7dd3fc`:`#a1a1aa`,cursor:`pointer`},children:[e,` scope`]},e)),(0,H.jsx)(`span`,{style:{color:`#3f3f46`},children:`|`}),(0,H.jsxs)(`label`,{style:{color:`#71717a`},children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:!!a,onChange:e=>o(e.target.checked?8:void 0)}),` sRPE captured`]}),(0,H.jsxs)(`label`,{style:{color:`#71717a`},children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:!!s,onChange:e=>c(e.target.checked?42:void 0)}),` VO₂max known`]})]}),(0,H.jsxs)(`div`,{style:{display:`flex`,gap:16,alignItems:`flex-start`},children:[(0,H.jsxs)(`div`,{style:{flex:1},children:[n===`text`&&(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),style:{...l1,...u1,width:`100%`,color:`#e4e4e7`,outline:`none`},placeholder:`name = expression -> unit when predicate`}),(0,H.jsx)(v1,{src:l,scope:r,onApply:e=>u(e)}),(0,H.jsx)(d1,{r:m})]}),n===`slots`&&(0,H.jsx)(m1,{scope:r,onSrc:f}),n===`guided`&&(0,H.jsx)(h1,{scope:r,onSrc:f})]}),(0,H.jsx)(p1,{r:m,scope:r,sessionRpe:a,vo2max:s})]})]}),(0,H.jsx)(`div`,{style:{position:`fixed`,bottom:16,left:`50%`,transform:`translateX(-50%)`,display:`flex`,gap:6,background:`#18181b`,border:`1px solid #3f3f46`,borderRadius:10,padding:6},children:h.map(([e,r])=>(0,H.jsx)(`button`,{onClick:()=>t({v:e}),style:{padding:`4px 14px`,borderRadius:7,border:`none`,background:n===e?`#7dd3fc`:`transparent`,color:n===e?`#09090b`:`#a1a1aa`,cursor:`pointer`,fontSize:13},children:r},e))})]})}function v1({src:e,scope:t,onApply:n}){let r=(0,V.useMemo)(()=>c1(e,t),[e,t]);return r.items.length?(0,H.jsx)(`div`,{style:{display:`flex`,gap:4,flexWrap:`wrap`,marginTop:6},children:r.items.map((t,i)=>(0,H.jsxs)(`button`,{onClick:()=>n(e.slice(0,r.from)+t.insert),style:{...u1,fontSize:12,background:`#27272a`,border:`1px solid #3f3f46`,borderRadius:5,color:`#7dd3fc`,padding:`2px 8px`,cursor:`pointer`},children:[t.label,` `,(0,H.jsx)(`span`,{style:{color:`#52525b`},children:t.detail})]},i))}):null}var y1=`01a09d45-885a-738d-ab1e-be31d44fe919`,b1=`:session{result:${y1}}`,x1=`## Morning session
197
+
198
+ Fran went unbroken until round three. Throat on fire.
199
+
200
+ \`\`\`time
201
+ (21-15-9)
202
+ Thruster 43kg
203
+ Pull-up
204
+ \`\`\``,S1=`Should have paced the first round. Next time: breathing ladder on thrusters.`,C1=[{effort:`Thruster`,round:1,reps:21,load:`43kg`,elapsed:`0:48`},{effort:`Pull-up`,round:1,reps:21,load:`bw`,elapsed:`1:12`},{effort:`Thruster`,round:2,reps:15,load:`43kg`,elapsed:`1:05`},{effort:`Pull-up`,round:2,reps:15,load:`bw`,elapsed:`1:31`},{effort:`Thruster`,round:3,reps:9,load:`43kg`,elapsed:`1:22`},{effort:`Pull-up`,round:3,reps:9,load:`bw`,elapsed:`1:47`}];function w1(e){if(!/:session/.test(e))return{rows:[],note:`no :session head — block would render chart/value instead`};let t=/text:"?([\w-]+)"?/.exec(e)?.[1];return{rows:t?C1.filter(e=>e.effort.toLowerCase().includes(t.toLowerCase())):C1}}function T1({wql:e}){let{rows:t,note:n}=(0,V.useMemo)(()=>w1(e),[e]);return(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-card overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`flex items-baseline justify-between px-3 py-2 border-b border-border/60 bg-muted/30`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Fran — 2026-09-13`}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-mono`,children:n??`${t.length} rows`})]}),t.length===0?(0,H.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground italic`,children:n??`no rows match`}):(0,H.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,H.jsx)(`thead`,{children:(0,H.jsxs)(`tr`,{className:`text-left text-muted-foreground border-b border-border/40`,children:[(0,H.jsx)(`th`,{className:`px-3 py-1.5 font-medium`,children:`Effort`}),(0,H.jsx)(`th`,{className:`px-3 py-1.5 font-medium`,children:`Rd`}),(0,H.jsx)(`th`,{className:`px-3 py-1.5 font-medium text-right`,children:`Reps`}),(0,H.jsx)(`th`,{className:`px-3 py-1.5 font-medium text-right`,children:`Load`}),(0,H.jsx)(`th`,{className:`px-3 py-1.5 font-medium text-right`,children:`Split`})]})}),(0,H.jsx)(`tbody`,{children:t.map((e,t)=>(0,H.jsxs)(`tr`,{className:`border-b border-border/20 last:border-0`,children:[(0,H.jsx)(`td`,{className:`px-3 py-1.5`,children:e.effort}),(0,H.jsx)(`td`,{className:`px-3 py-1.5 text-muted-foreground`,children:e.round}),(0,H.jsx)(`td`,{className:`px-3 py-1.5 text-right font-mono`,children:e.reps}),(0,H.jsx)(`td`,{className:`px-3 py-1.5 text-right font-mono`,children:e.load}),(0,H.jsx)(`td`,{className:`px-3 py-1.5 text-right font-mono`,children:e.elapsed})]},t))})]})]})}function E1({children:e}){return(0,H.jsx)(`p`,{className:`text-sm text-foreground/80 whitespace-pre-wrap leading-relaxed`,children:e})}function D1(){return(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-card px-3 py-2`,children:[(0,H.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground mb-1`,children:`time · 3 rounds`}),(0,H.jsx)(`div`,{className:`text-xs font-mono text-foreground/90`,children:`21-15-9 · Thruster 43kg · Pull-up`})]})}function O1({wql:e}){return(0,H.jsxs)(`div`,{className:`rounded-lg border border-dashed border-amber-500/40 bg-muted/20 p-3`,children:[(0,H.jsx)(`div`,{className:`text-[10px] text-amber-500 mb-2 font-mono`,children:`note.md — live fence state`}),(0,H.jsxs)(`pre`,{className:`text-[11px] font-mono text-muted-foreground whitespace-pre-wrap leading-relaxed`,children:[x1.split("```time")[0],(0,H.jsx)(`span`,{className:`opacity-50`,children:"```time … ```"}),`
205
+
206
+ `,(0,H.jsxs)(`span`,{className:`text-sky-400 bg-sky-400/10 rounded px-1 -mx-1`,children:["```query:table\n",e,"\n```"]}),`
207
+
208
+ `,S1]})]})}var k1=`✎`;function A1({wql:e,setWql:t}){let[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(e);return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(T1,{wql:e}),!n&&(0,H.jsx)(`button`,{onClick:()=>{a(e),r(!0)},className:`absolute top-2 right-2 text-muted-foreground hover:text-foreground text-xs px-1.5 py-0.5 rounded hover:bg-muted`,children:k1})]}),n&&(0,H.jsxs)(`div`,{className:`rounded-lg border border-sky-500/50 bg-card p-3 space-y-2 shadow-lg shadow-sky-500/5`,children:[(0,H.jsx)(`div`,{className:`text-[10px] text-sky-400 font-mono`,children:`editing query:table — Apply writes the fence`}),(0,H.jsx)($x,{query:i,onQueryChange:a,autoFocus:!0,placeholder:`:session…`}),(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(`button`,{onClick:()=>r(!1),className:`px-3 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:()=>{t(i),r(!1)},className:`px-3 py-1 text-xs rounded-md bg-sky-500 text-zinc-950 font-medium`,children:`Apply to fence`})]})]})]})}function j1({wql:e,setWql:t}){let[n,r]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`space-y-3 pb-24`,children:[(0,H.jsx)(`button`,{onClick:()=>r(!0),className:`block w-full text-left rounded-lg transition-shadow ${n?`ring-2 ring-sky-500/70`:`hover:ring-1 hover:ring-border`}`,children:(0,H.jsx)(T1,{wql:e})}),(0,H.jsxs)(`div`,{className:`sticky bottom-20 rounded-xl border p-3 space-y-2 shadow-xl backdrop-blur transition-colors ${n?`border-sky-500/60 bg-card/95`:`border-border bg-card/80 opacity-70`}`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-mono ${n?`text-sky-400`:`text-muted-foreground`}`,children:n?`◉ bound: query:table · ${y1.slice(0,8)}…`:`○ click a query block to bind the composer`}),n&&(0,H.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-muted-foreground hover:text-foreground`,children:`Done`})]}),n&&(0,H.jsx)($x,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`})]})]})}function M1({wql:e,setWql:t}){let[n,r]=(0,V.useState)(!1);return(0,V.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&r(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),n?(0,H.jsxs)(`div`,{className:`rounded-lg border border-sky-500/50 bg-muted/60 shadow-lg shadow-sky-500/5`,children:[(0,H.jsx)(`div`,{className:`px-3 pt-2 text-[10px] font-mono text-muted-foreground select-none`,children:"```query:table"}),(0,H.jsx)(`div`,{className:`px-3 py-2`,children:(0,H.jsx)($x,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`,className:`bg-transparent border-0 shadow-none`})}),(0,H.jsxs)(`div`,{className:`px-3 pb-2 flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-mono text-muted-foreground select-none`,children:"```"}),(0,H.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-sky-400 hover:text-sky-300 font-mono`,children:`Esc / leave fence ↩`})]})]}):(0,H.jsx)(`button`,{onClick:()=>r(!0),className:`block w-full text-left hover:ring-1 hover:ring-border rounded-lg`,children:(0,H.jsx)(T1,{wql:e})})}var N1=[[`inline`,`A · in-flow expansion`],[`dock`,`B · bound dock`],[`fence`,`C · fence-as-composer`]];function P1(){let[e,t]=Yt(),n=e.get(`v`)??`inline`,[r,i]=(0,V.useState)(b1),a=e=>{let r=N1[(N1.findIndex(([e])=>e===n)+e+N1.length)%N1.length][0];t({v:r})};return(0,V.useEffect)(()=>{let e=e=>{e.target.closest(`input, textarea, [contenteditable]`)||(e.key===`ArrowLeft`&&a(-1),e.key===`ArrowRight`&&a(1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)}),(0,H.jsxs)(`div`,{className:`min-h-screen bg-background text-foreground p-6`,children:[(0,H.jsxs)(`div`,{className:`max-w-5xl mx-auto grid grid-cols-[1fr_320px] gap-6 items-start`,children:[(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-[11px] text-amber-500 mb-1`,children:`PROTOTYPE — throwaway · query:table editing via WqlComposer`}),(0,H.jsx)(`h1`,{className:`text-xl font-bold`,children:`Journal — 2026-09-13`})]}),(0,H.jsx)(E1,{children:x1.split("```time")[0].trim()}),(0,H.jsx)(D1,{}),n===`inline`&&(0,H.jsx)(A1,{wql:r,setWql:i}),n===`dock`&&(0,H.jsx)(j1,{wql:r,setWql:i}),n===`fence`&&(0,H.jsx)(M1,{wql:r,setWql:i}),(0,H.jsx)(E1,{children:S1})]}),(0,H.jsx)(`div`,{className:`sticky top-6`,children:(0,H.jsx)(O1,{wql:r})})]}),(0,H.jsxs)(`div`,{className:`fixed bottom-4 left-1/2 -translate-x-1/2 flex items-center gap-1 rounded-xl border border-border bg-card/95 backdrop-blur px-2 py-1.5 shadow-2xl z-50`,children:[(0,H.jsx)(`button`,{onClick:()=>a(-1),className:`px-2 text-muted-foreground hover:text-foreground`,children:`←`}),N1.map(([e,r])=>(0,H.jsx)(`button`,{onClick:()=>t({v:e}),className:`px-3 py-1 rounded-lg text-xs transition-colors ${n===e?`bg-sky-400 text-zinc-950 font-medium`:`text-muted-foreground hover:text-foreground`}`,children:r},e)),(0,H.jsx)(`button`,{onClick:()=>a(1),className:`px-2 text-muted-foreground hover:text-foreground`,children:`→`})]})]})}function F1(e,t,n=`absent`){return{id:e,fields:t,missPolicy:n,get:()=>void 0}}function I1(){let e=new Pu;return e.register(F1(`effort`,{met:{dimension:q,type:`number`},disciplineFactor:{dimension:q,type:`number`},discipline:{dimension:q,type:`string`},intensityTier:{dimension:q,type:`string`},resolvedFrom:{dimension:q,type:`string`}},`default-row`)),e.register(F1(`rpe-labels`,{rpe:{dimension:q,type:`number`}})),e.register(F1(`profile`,{vo2max:{dimension:q,type:`number`}})),e.register(F1(`disciplines`,{disciplineFactor:{dimension:q,type:`number`}},`default-row`)),e}function L1(e,t){for(let n of t)try{e.register(n)}catch{}}function R1(e,t=`segment`){let n=[],r=[];try{let i=Sd(e,{scope:t});r=i.defs;for(let e of i.warnings)n.push({severity:`warning`,message:e})}catch(e){return{defs:r,diagnostics:[{severity:`error`,message:e instanceof Error?e.message:String(e)}],dim:void 0,compound:void 0}}let i=new vu(I1());L1(i,[...Iu,...Bu]);let a;for(let e of r){try{i.register(e)}catch(e){n.push({severity:`error`,message:e instanceof Error?e.message:String(e)});continue}let t=Id(e)??(e.kind===`library`?Object.keys(e.variants[0]?.nodes??{})[0]:void 0),r=[...e.variants].sort((e,t)=>t.priority-e.priority)[0],o=t&&r.nodeDims?.[t];o&&(a=o)}let o;return a&&(o=Ml(a)),r.length===0&&n.push({severity:`warning`,message:`No calc line parsed.`}),{defs:r,diagnostics:n,dim:a,compound:o}}var z1=[`segment`,`workout`,`store`],B1=[`when`,`where`,`key`,`grouped`,`label`,`emit`,`meta`,`estimated`,`library`,`on`,`by`,`without`,`and`,`or`,`not`],V1=[`convert`,`lookup`,`has`,`round`,`floor`,`ceil`,`abs`,`clamp`,`min`,`max`,`sum`,`avg`,`count`,`last`,`windowMean`,`windowSum`,`windowSd`,`mean`],H1=[{name:`elapsed`,dim:Nl.elapsed.dim,detail:`s (time)`},{name:`reps`,dim:Nl.reps.dim,detail:`count`},{name:`resistance`,dim:Nl.resistance.dim,detail:`kg (mass)`},{name:`distance`,dim:Nl.distance.dim,detail:`m (length)`},{name:`effort`,dim:Pl.effort,detail:`resolved effort slug`},{name:`effortLabel`,dim:Pl.effortLabel,detail:`raw effort label`}],U1=[{name:`sessionRpe`,dim:Pl.sessionRpe,detail:`captured session RPE`},{name:`session.duration`,dim:Pl[`session.duration`],detail:`workout duration`},{name:`profile.vo2max`,dim:Pl[`profile.vo2max`],detail:`user VO₂max (mL/kg/min)`}],W1=Object.keys(Nl),G1=Object.keys(Fl),K1=[{name:`effort`,detail:`effort catalog`,fields:[`met`,`disciplineFactor`,`discipline`,`intensityTier`,`resolvedFrom`]},{name:`rpe-labels`,detail:`effort label → RPE`,fields:[`rpe`]},{name:`profile`,detail:`user profile`,fields:[`vo2max`]},{name:`disciplines`,detail:`canonical disciplines`,fields:[`disciplineFactor`]}],q1=Object.keys(zl),J1=Object.keys(Fl);function Y1(e){if(!e)return q1;let t=q1.filter(t=>{let n=zl[t];return n?n.dim.every((t,n)=>t===e[n]):!1});return t.length?t:q1}var X1=new Set([...B1,...z1,`lookup`]),Z1=new Set(V1),Q1=new Set([...H1.map(e=>e.name),...U1.map(e=>e.name),...W1,...K1.map(e=>e.name)]),$1=/^\d*\.?\d+(?:d)?/,e0=/^[A-Za-z_][\w.]*/,t0=Mr.define({name:`calcLine`,token(e){if(e.eatSpace())return null;if(e.match(`#`,!1))return e.skipToEnd(),`comment`;if(e.match(/^"([^"]*)"/)||e.match(/^'([^']*)'/))return`string`;if(e.match(/^(->|==|!=|<=|>=)/)||e.match(/^[+\-*/=<>(),:{}[\]]/))return`operator`;if(e.match($1))return`number`;if(e.match(e0)){let t=e.current();return X1.has(t)?`keyword`:Z1.has(t)?`function`:(Q1.has(t),`variableName`)}return e.next(),null}}),n0=zr.define([{tag:B.keyword,color:`#c084fc`},{tag:B.function(B.variableName),color:`#60a5fa`},{tag:B.variableName,color:`#e4e4e7`},{tag:B.number,color:`#fbbf24`},{tag:B.string,color:`#34d399`},{tag:B.operator,color:`#a1a1aa`},{tag:B.comment,color:`#71717a`,fontStyle:`italic`}]);function r0(){return new Hr(t0,[Rr(n0)])}var i0=[`effort`,`thruster`,`push-press`,`front-squat`,`wall-ball`,`row`,`run`];function a0(e={}){let t=e.scope??`segment`;return e=>{let n=e.state.sliceDoc(0,e.pos),r=e.matchBefore(/[\w./"]*/);if(!r)return null;if(/lookup\(\s*/.test(n)){let t=n.lastIndexOf(`lookup(`),r=n.slice(t+7);if(!/,/.test(r)&&/^"?[\w.-]*"?$/.test(r.replace(/"/g,``).trim()||``)){let t=r.replace(/"/g,``).trim(),n=K1.filter(e=>e.name.startsWith(t)).map(e=>({label:e.name,insert:`"${e.name}"`,detail:e.detail}));if(n.length)return{from:e.pos-t.length,options:n,validFor:/^[\w.-]*$/}}let i=/lookup\(\s*"[^"]+"\s*,\s*[^,]+,\s*"?([\w-]*)"?$/.exec(n);if(i){let t=/lookup\(\s*"([^"]+)"/.exec(n)?.[1],r=(K1.find(e=>e.name===t)?.fields??[]).filter(e=>e.startsWith(i[1])).map(e=>({label:e,insert:`"${e}"`,detail:`${t} field`}));return{from:e.pos-i[1].length,options:r,validFor:/^[\w-]*$/}}let a=/lookup\(\s*"(effort)"\s*,\s*"?([\w.-]*)"?$/.exec(n);if(a){let t=i0.filter(e=>e.startsWith(a[2])).map(e=>({label:e,insert:e===`effort`?e:`"${e}"`,detail:`effort key`}));return{from:e.pos-a[2].length,options:t,validFor:/^[\w.-]*$/}}}let i=/->\s*([\w/]*)$/.exec(n);if(i){let n=e.state.doc.lineAt(e.pos).text,r=R1(n,t),a=r.diagnostics.length===0?r.dim:void 0,o=Y1(a).filter(e=>e.startsWith(i[1])).map(e=>({label:e,detail:a?`matches inferred dimension`:`unit`}));return{from:e.pos-i[1].length,options:o,validFor:/^[\w/]*$/}}if(t===`store`){let e=/^(sum|avg|max|min|count|last):([\w.]*)$/.exec(r.text);if(e){let t=W1.filter(t=>t.startsWith(e[2])).map(e=>({label:e,detail:`metric key`}));return{from:r.from+r.text.indexOf(`:`)+1,options:t,validFor:/^[\w.]*$/}}}let a=[];if(t===`segment`)a.push(...H1.map(e=>({label:e.name,insert:e.name,detail:e.detail})));else if(a.push(...U1.map(e=>({label:e.name,insert:e.name,detail:e.detail}))),t===`workout`){for(let e of G1)for(let t of[`reps`,`distance`,`segmentVolume`,`metMinutes`,`elapsed`,`effortRpe`])a.push({label:`${e}(${t})`,insert:`${e}(${t})`,detail:`aggregate`});a.push({label:`sum(reps, without: rest)`,insert:`sum(reps, without: rest)`,detail:`exclusion aggregate`})}a.push(...V1.map(e=>({label:`${e}()`,insert:`${e}()`,detail:`function`}))),t===`store`&&a.push(...J1.map(e=>({label:`${e}:{}`,insert:`${e}:`,detail:`WQL atom`}))),a.push(...B1.map(e=>({label:e,insert:e===`when`?`when `:e,detail:`clause`}))),a.push({label:`estimated`,insert:`estimated`,detail:`variant origin`}),a.push({label:`(library)`,insert:`(library)`,detail:`library calc`});let o=a.filter(e=>e.label.startsWith(r.text)).slice(0,20);return o.length?{from:r.from,options:o,validFor:/^[\w./]*$/}:null}}function o0(e){return ni({override:[a0(e)]})}function s0({value:e,onChange:t,scope:n=`segment`,placeholder:r,readOnly:i=!1,autoFocus:a=!1,className:o}){let s=(0,V.useRef)(null),c=(0,V.useRef)(null),l=(0,V.useRef)(t);return l.current=t,(0,V.useEffect)(()=>{let t=s.current;if(!t)return;c.current?.destroy();let r=Pr.updateListener.of(e=>{e.docChanged&&l.current(e.state.doc.toString())}),o=new Pr({state:di.create({doc:e,extensions:[r0(),o0({scope:n}),oi(),xi(),Dr.of([li,...si,...gi]),Pr.lineWrapping,di.readOnly.of(i),r,Pr.theme({"&":{height:`auto`,minHeight:`120px`,fontSize:`13px`,border:`1px solid rgb(63 63 70)`,borderRadius:`8px`},".cm-scroller":{fontFamily:`ui-monospace, SFMono-Regular, Menlo, monospace`,lineHeight:`1.55`},".cm-content":{padding:`8px 4px`},".cm-gutters":{borderRight:`1px solid rgb(63 63 70)`,minWidth:`28px`},"&.cm-focused":{outline:`2px solid rgb(139 92 246 / 0.5)`,outlineOffset:`1px`}})]}),parent:t});return a&&requestAnimationFrame(()=>o.focus()),c.current=o,()=>o.destroy()},[n,i]),(0,V.useEffect)(()=>{let t=c.current;if(!t)return;let n=t.state.doc.toString();n!==e&&t.dispatch({changes:{from:0,to:n.length,insert:e}})},[e]),(0,H.jsx)(`div`,{ref:s,className:`calc-line-editor ${o??``}`,"data-testid":`calc-line-editor`})}function c0({analysis:e}){let{dim:t,compound:n,diagnostics:r}=e,i=r.filter(e=>e.severity===`error`),a=r.filter(e=>e.severity===`warning`),o=i.length===0&&a.length===0&&t!==void 0;return(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 px-3 py-2 text-xs`,"data-testid":`calc-diagnostics`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[t?(0,H.jsxs)(`div`,{className:`text-muted-foreground`,children:[`computes `,(0,H.jsx)(`b`,{className:`text-foreground`,children:u0(t)}),n&&(0,H.jsxs)(`span`,{className:`text-purple-400 dark:text-purple-300`,children:[` → `,n]})]}):!o&&(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`dimension unknown`}),o&&(0,H.jsx)(`span`,{className:`text-signal-positive`,children:`✓ valid`})]}),i.map((e,t)=>(0,H.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e.message]},`e-${t}`)),a.map((e,t)=>(0,H.jsxs)(`div`,{className:`text-signal-caution`,children:[`⚠ `,e.message]},`w-${t}`)),i.length===0&&a.length===0&&t===void 0&&(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Type a calc line to see diagnostics.`})]})}var l0=[[`L`,`length`],[`M`,`mass`],[`T`,`time`],[`C`,`count`],[`E`,`energy`]];function u0(e){let t=[];return e.forEach((e,n)=>{e!==0&&t.push(e===1?l0[n][1]:`${l0[n][1]}${e}`)}),t.length?t.join(`·`):`dimensionless`}function d0(e){return new ya({outputType:e.outputType,timeSpan:e.timeSpan,sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,sourceStatementId:e.sourceStatementId,line:e.line,text:e.text,dialect:e.dialect,metrics:e.metrics,parent:e.parent,completionReason:e.completionReason})}function f0(e){return{...e,metrics:e.metrics.filter(e=>e.origin!==`analyzed`)}}function p0(e){return e.output?.emitType??e.output?.key??e.id}function m0(e,t){for(let n of e){if(n.outputType!==`analytics`||!(n.metrics.find(e=>e.type?.toLowerCase()===`label`&&String(e.value)===t)??n.metrics.find(e=>String(e.value)===t)))continue;let e=n.metrics.find(e=>typeof e.value==`number`);if(e)return{value:e.value,unit:e.unit,origin:e.origin}}}function h0(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function g0(e,t,n){return Zu(e,{userProfile:t.vo2max===void 0?void 0:{vo2max:t.vo2max},calcs:n}).engine}function _0(e){let t=[],n=e.defs[0];if(!n)return{rows:[],errors:[`No calc line to preview.`]};let r=p0(n),i=e.logs.filter(e=>e.outputType===`segment`);if(e.scope===`segment`){let n=g0(e.block,e,e.defs),a=[];for(let e of i){let t=n.run(d0(f0(e))).metrics.rawMetrics.find(e=>e.type===r);if(!t){a.push(null);continue}let i=typeof t.value==`number`?t.value:NaN;if(!Number.isFinite(i)){a.push(null);continue}a.push({label:e.metrics.find(e=>e.type===`effort-data`)?.value?.label??`segment`,text:h0(i),unit:t.unit,estimated:t.origin===`analyzed-estimated`,raw:i})}return{rows:a,errors:t}}if(e.scope===`workout`){let n=i.map(f0),a=[];for(let t=1;t<=n.length;t++){let i=g0(e.block,e,e.defs);for(let e=0;e<t;e++)i.run(d0(n[e]));let o=m0(i.finalize(),r),s=o&&typeof o.value==`number`?o.value:NaN;o&&Number.isFinite(s)?a.push({label:`after line ${t}`,text:h0(s),unit:o.unit,estimated:o.origin===`analyzed-estimated`,raw:s}):a.push(null)}return{rows:a,errors:t}}return y0(n,t)}var v0=[420,0,380,510,0,290,610,450,0,520,340,0,480,390,560,0,410,470,0,530,360,440,0,500,580,320,0,460];function y0(e,t){let n=[],r=e.variants[0]?.nodes[Id(e)??`value`]?.expression??``,i=e=>e.reduce((e,t)=>e+t,0)/e.length,a=e=>{let t=i(e);return Math.sqrt(i(e.map(e=>(e-t)**2)))},o=(e,t)=>v0.map((n,r)=>r+1>=e?t(v0.slice(r+1-e,r+1)):NaN),s=o(7,i),c=o(28,i),l=o(7,a),u=o(7,e=>e.reduce((e,t)=>e+t,0)),d=r.includes(`windowSd`)||r.length===0?s.map((e,t)=>e/l[t]):s.map((e,t)=>e/c[t]);return b0(r.includes(`windowSum`)||r.includes(` * sum`)?u:d,n),{rows:[],series:n,errors:t}}function b0(e,t){for(let n of e.slice(-7))t.push(Number.isNaN(n)?null:Number(Math.round(n*100)/100))}var x0=[{label:`Thruster`,slug:`thruster`,met:8.5,discipline:`strength`,elapsedMs:15e4,reps:21,resistanceKg:43},{label:`Pull-up`,slug:`pull-up`,met:7,discipline:`gymnastics`,elapsedMs:12e4,reps:21,resistanceKg:0},{label:`Thruster`,slug:`thruster`,met:8.5,discipline:`strength`,elapsedMs:15e4,reps:15,resistanceKg:43},{label:`Pull-up`,slug:`pull-up`,met:7,discipline:`gymnastics`,elapsedMs:12e4,reps:15,resistanceKg:0},{label:`Thruster`,slug:`thruster`,met:8.5,discipline:`strength`,elapsedMs:15e4,reps:9,resistanceKg:43},{label:`Pull-up`,slug:`pull-up`,met:7,discipline:`gymnastics`,elapsedMs:12e4,reps:9,resistanceKg:0}];function S0(e){return{type:`effort-data`,origin:`analyzed`,value:{slug:e.slug,label:e.label,aliases:[],baseAttributes:{met:e.met,discipline:e.discipline},registrySource:`bundled`}}}function C0(e,t){let n=[S0(e)];return n.push({type:`elapsed`,value:e.elapsedMs,origin:`runtime`}),e.reps!==void 0&&n.push({type:`rep`,value:e.reps,origin:`runtime`}),e.resistanceKg!==void 0&&n.push({type:`resistance`,value:e.resistanceKg,origin:`runtime`}),BO(new ya({outputType:`segment`,timeSpan:{started:t*1e3,ended:t*1e3+e.elapsedMs},sourceBlockKey:`preview-block`,stackLevel:1,metrics:n}))}function w0(){return{id:`preview-block`,dialect:`time`,startLine:0,endLine:10,content:"```time\nFran preview\n```",state:`idle`,widgetIds:{},version:1,createdAt:0}}var T0=x0.map((e,t)=>C0(e,t+1)),E0=w0();function D0(e){return e==null?`—`:String(e)}function O0({scope:e,analysis:t,vo2max:n}){let r=(0,V.useMemo)(()=>t.defs.filter(()=>t.diagnostics.length===0),[t]),i=r[0],a=(0,V.useMemo)(()=>{if(i)return _0({logs:T0,block:E0,defs:r,scope:e,vo2max:n})},[i,e,n]);return(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 p-3 text-xs`,"data-testid":`calc-preview`,children:[(0,H.jsxs)(`div`,{className:`mb-2 text-[11px] uppercase tracking-wide text-muted-foreground`,children:[`Live preview — `,e===`store`?`last 7 of 28 fixture days`:`Fran (fixture)`]}),!i&&(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Enter a valid calc line to see live results.`}),i&&a?.rows&&(0,H.jsxs)(`div`,{className:`space-y-1 font-mono`,children:[a.rows.length===0&&(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`No applicable segments.`}),a.rows.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e?e.label:`segment ${t+1}`}),(0,H.jsx)(`span`,{className:e?`text-sky-300 dark:text-sky-400`:`text-muted-foreground`,children:e?`${e.text}${e.unit?` ${e.unit}`:``}${e.estimated?` (est.)`:``}`:`—`})]},t))]}),i&&a?.series&&(0,H.jsx)(`div`,{className:`space-y-1 font-mono`,children:a.series.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[`D-`,6-t]}),(0,H.jsx)(`span`,{className:`text-sky-300 dark:text-sky-400`,children:D0(e)})]},t))}),a?.errors?.length?a.errors.map((e,t)=>(0,H.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e]},`e-${t}`)):null]})}var k0=`wodwiki-user-calcs`,A0=1,j0=`calcs`,M0=`user-calc:`,N0;function P0(){return N0||=pr(k0,A0,{upgrade(e){e.objectStoreNames.contains(j0)||e.createObjectStore(j0,{keyPath:`id`})}}),N0}async function F0(){return $T?(await sE(M0)).map(e=>e.value).sort((e,t)=>t.updatedAt-e.updatedAt):(await(await P0()).getAll(j0)).sort((e,t)=>t.updatedAt-e.updatedAt)}async function I0(e){if($T){await cE(M0+e.id,{id:e.id,lineForm:e.lineForm,updatedAt:e.updatedAt??Date.now()});return}await(await P0()).put(j0,{...e,updatedAt:e.updatedAt??Date.now()})}async function L0(e){if($T)return lE(M0+e);await(await P0()).delete(j0,e)}var R0=[`segment`,`workout`,`store`];function z0(e,t){let n=e[0]?.id;if(n)return n;let r=/^[\s\S]*?^\s*([A-Za-z_][\w.-]*)\s*=.*$/m.exec(t);return r?r[1]:`custom-${Date.now().toString(36)}`}function B0({defaultScope:e=`segment`,initialId:t}){let[n,r]=(0,V.useState)(`# ${e} calc line
209
+ segmentVolume = reps * resistance (library) when has(reps) and has(resistance)
210
+ `),[i,a]=(0,V.useState)(e),[o,s]=(0,V.useState)([]),[c,l]=(0,V.useState)(),u=(0,V.useMemo)(()=>R1(n,i),[n,i]),d=z0(u.defs,n),f=u.diagnostics.every(e=>e.severity!==`error`)&&u.defs.length>0,p=async()=>{s(await F0())};(0,V.useEffect)(()=>{p()},[]),(0,V.useEffect)(()=>{t&&(async()=>{let e=(await F0()).find(e=>e.id===t);e&&(r(e.lineForm),l(`Loaded "${e.id}".`))})()},[t]);let m=async()=>{if(!f){l(`Cannot save: fix the errors first.`);return}try{await I0({id:d,lineForm:n,updatedAt:Date.now()}),await p(),l(`Saved "${d}".`)}catch(e){console.error(`[CalcAuthoringPanel] save failed:`,e),l(`Save failed: ${e instanceof Error?e.message:String(e)}`)}},h=async e=>{try{await L0(e),await p(),l(`Deleted "${e}".`)}catch(e){console.error(`[CalcAuthoringPanel] delete failed:`,e),l(`Delete failed: ${e instanceof Error?e.message:String(e)}`)}},g=e=>{let t=/^\s*(segment|workout|store)\b/.exec(e.lineForm);t&&a(t[1]),r(e.lineForm),l(`Loaded "${e.id}".`)};return(0,H.jsxs)(`div`,{className:`space-y-3`,"data-testid":`calc-authoring-panel`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`Scope`}),(0,H.jsx)(`div`,{className:`flex gap-1`,children:R0.map(e=>(0,H.jsx)(`button`,{onClick:()=>a(e),className:`rounded px-2.5 py-1 text-xs font-medium transition-colors ${i===e?`bg-purple-600 text-white dark:bg-purple-700 dark:text-white`:`bg-muted text-muted-foreground hover:bg-muted/80`}`,children:e},e))}),(0,H.jsx)(`div`,{className:`ml-auto flex gap-2`,children:(0,H.jsx)(`button`,{onClick:m,disabled:!f,className:`rounded bg-signal-positive px-3 py-1 text-xs font-medium text-white dark:text-white disabled:opacity-40`,children:`Save`})})]}),(0,H.jsx)(s0,{value:n,onChange:r,scope:i,autoFocus:!0}),(0,H.jsx)(c0,{analysis:u}),(0,H.jsx)(O0,{scope:i,analysis:u}),c&&(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:c}),o.length>0&&(0,H.jsxs)(`div`,{className:`mt-2`,children:[(0,H.jsx)(`div`,{className:`mb-1 text-[11px] uppercase tracking-wide text-muted-foreground`,children:`Saved user calcs`}),(0,H.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:o.map(e=>(0,H.jsxs)(`li`,{className:`flex items-center justify-between px-3 py-2 text-sm`,children:[(0,H.jsx)(`button`,{onClick:()=>g(e),className:`text-left font-mono text-purple-300 dark:text-purple-400 hover:underline`,children:e.id}),(0,H.jsx)(`button`,{onClick:()=>h(e.id),className:`text-xs text-muted-foreground hover:text-destructive`,children:`delete`})]},e.id))})]})]})}function V0(){let e=Mn(),[t]=Jt(`zip`),[n]=Jt(`z`),[r]=(0,V.useState)(()=>{let e=window.location.search;return e.includes(`zip=`)||e.includes(`z=`)});return(0,V.useEffect)(()=>{!t&&!n&&!r&&e(`/`,{replace:!0})},[t,n,e,r]),(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}async function H0(e){try{let t=e.replace(/-/g,`+`).replace(/_/g,`/`);for(;t.length%4!=0;)t+=`=`;let n=atob(t),r=Uint8Array.from(n,e=>e.charCodeAt(0));try{let e=new DecompressionStream(`gzip`),t=e.writable.getWriter(),n=e.readable.getReader();t.write(r),t.close();let i=[];for(;;){let{done:e,value:t}=await n.read();if(e)break;i.push(t)}let a=i.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.length;return new TextDecoder().decode(o)}catch{return new TextDecoder().decode(r)}}catch{return null}}function U0(){let e=Mn(),t=zt(),{date:n}=_n(),[r]=Jt(`zip`),[i,a]=(0,V.useState)({state:`loading`});return(0,V.useEffect)(()=>{if(!(t.pathname===`/load/journal`||t.pathname.startsWith(`/load/journal/`)))return;if(!r){e(Q.journal,{replace:!0});return}let i=!1,o=async()=>{try{a({state:`loading`});let t;try{t=await H0(r)}catch(e){console.error(`Failed to decode zip:`,e),a({state:`error`,error:`Failed to decode the journal entry`,onRetry:()=>{o()}}),ND({title:`Error`,description:`Failed to decode the journal entry. Please check the link.`,variant:`destructive`});return}if(i)return;let c;if(n){let t=dk(n);if(!t){a({state:`error`,error:`Invalid date format`}),ND({title:`Error`,description:`Invalid date format. Expected YYYY-MM-DD.`,variant:`destructive`}),e(Q.journal,{replace:!0});return}c=t.dateKey}else c=lk();if(i)return;if(uk(c)){a({state:`pending-confirmation`,content:t,dateKey:c,onConfirmBackdate:async()=>{i||await s(t,c)}});return}await s(t,c)}catch(e){console.error(`Unexpected error in journal zip processor:`,e),i||(a({state:`error`,error:`An unexpected error occurred`,onRetry:()=>{o()}}),ND({title:`Error`,description:`An unexpected error occurred.`,variant:`destructive`}))}},s=async(t,n)=>{if(!i)try{a({state:`creating`});let r=await mk.create({journalDate:n,title:n,rawContent:t});i||(a({state:`success`,content:t,dateKey:n}),e(_O(r.id),{replace:!0}))}catch(e){console.error(`Failed to create journal entry:`,e),i||(a({state:`error`,error:`Failed to create journal entry`,onRetry:()=>{s(t,n)}}),ND({title:`Error`,description:`Failed to create journal entry.`,variant:`destructive`}))}};return o(),()=>{i=!0}},[r,n,e]),i}var W0=({selectedDate:e,onImportToday:t,onDateSelect:n,entryDates:r,isLoading:i=!1,className:a})=>{let[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(!1),{triggerRef:u,align:d,recompute:f}=GK(`end`),p=async()=>{l(!0);try{await t()}finally{l(!1)}},m=async e=>{l(!0),s(!1);try{await n(e)}finally{l(!1)}},h=e=>{e&&f(),s(e)},g=e?uM(e):`Date`,_=i||c;return(0,H.jsxs)(`div`,{className:U(`inline-flex items-stretch rounded-lg overflow-hidden border border-border/70`,`bg-muted text-muted-foreground shadow-sm hover:shadow-md transition-shadow font-medium`,`text-xs`,a),children:[(0,H.jsxs)(`button`,{type:`button`,title:`Import to today's journal`,onClick:p,disabled:_,className:U(`flex items-center gap-2 px-3 py-2 transition-colors`,`hover:bg-accent hover:text-accent-foreground`,_&&`opacity-60 cursor-not-allowed`),children:[c?(0,H.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}):(0,H.jsx)(nn,{className:`h-4 w-4 shrink-0`}),(0,H.jsx)(`span`,{children:`Import Today`})]}),(0,H.jsx)(`div`,{className:`w-px bg-border/60 self-stretch`}),(0,H.jsxs)(RP,{open:o,onOpenChange:h,children:[(0,H.jsx)(zP,{asChild:!0,children:(0,H.jsxs)(`button`,{ref:e=>{u.current=e},type:`button`,title:`Select a date to plan for the future`,className:U(`flex items-center gap-1.5 px-2.5 py-2 transition-colors`,`hover:bg-accent hover:text-accent-foreground`,e&&`text-primary`,_&&`opacity-60 cursor-not-allowed`),disabled:_,children:[(0,H.jsx)(xr,{className:`h-4 w-4 shrink-0`}),e&&(0,H.jsx)(`span`,{className:`leading-none text-xs`,children:g})]})}),(0,H.jsx)(BP,{align:d,className:`p-0 w-auto`,children:(0,H.jsx)(vK,{selectedDate:e||null,onDateSelect:m,entryDates:r})})]})]})},G0=({dateKey:e,onConfirm:t,onCancel:n,isLoading:r=!1})=>{let[i,a]=V.useState(!1),o=lM(new Date(`${e}T00:00:00`));return(0,H.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,className:`fixed inset-0 z-50 flex items-center justify-center`,onKeyDown:e=>{e.key===`Escape`&&n()},onClick:e=>{e.target===e.currentTarget&&n()},children:[(0,H.jsx)(`div`,{className:`absolute inset-0 bg-black/50 animate-in fade-in`}),(0,H.jsx)(`div`,{className:`relative z-10 w-full max-w-sm mx-auto px-4 animate-in zoom-in-95 fade-in`,children:(0,H.jsxs)(`div`,{className:`bg-background rounded-lg border border-border shadow-lg`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-border`,children:[(0,H.jsx)(`h2`,{className:`text-base font-semibold`,children:`Backdate Journal Entry`}),(0,H.jsx)(`button`,{onClick:n,className:`p-1 text-muted-foreground hover:text-foreground hover:bg-muted rounded transition-colors`,"aria-label":`Close modal`,children:(0,H.jsx)(Te,{className:`h-4 w-4`})})]}),(0,H.jsxs)(`div`,{className:`px-6 py-4 space-y-4`,children:[(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The date you selected is in the past.`}),(0,H.jsxs)(`p`,{className:`text-sm`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`Import to: `}),(0,H.jsx)(`span`,{className:`font-medium text-foreground`,children:o})]}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`This will create a journal entry for the selected date. Are you sure you want to proceed?`})]}),(0,H.jsxs)(`div`,{className:`px-6 py-4 border-t border-border flex gap-2 justify-end`,children:[(0,H.jsx)(W,{variant:`outline`,onClick:n,disabled:r||i,children:`Cancel`}),(0,H.jsx)(W,{onClick:async()=>{a(!0);try{await t()}finally{a(!1)}},disabled:r||i,className:U(r||i?`opacity-70`:``),children:i?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{className:`inline-block animate-spin mr-2`,children:`⏳`}),`Importing...`]}):`Confirm & Import`})]})]})})]})},K0={h1:({children:e})=>(0,H.jsx)(`h1`,{className:`text-3xl font-bold mt-8 mb-4 first:mt-0 text-foreground`,children:e}),h2:({children:e})=>(0,H.jsx)(`h2`,{className:`text-2xl font-bold mt-6 mb-3 text-foreground`,children:e}),h3:({children:e})=>(0,H.jsx)(`h3`,{className:`text-xl font-semibold mt-5 mb-2 text-foreground`,children:e}),h4:({children:e})=>(0,H.jsx)(`h4`,{className:`text-lg font-semibold mt-4 mb-2 text-foreground`,children:e}),h5:({children:e})=>(0,H.jsx)(`h5`,{className:`text-base font-semibold mt-3 mb-1 text-foreground`,children:e}),h6:({children:e})=>(0,H.jsx)(`h6`,{className:`text-sm font-semibold mt-2 mb-1 text-muted-foreground`,children:e}),p:({children:e})=>(0,H.jsx)(`p`,{className:`text-sm leading-relaxed mb-4 text-muted-foreground`,children:e}),strong:({children:e})=>(0,H.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e}),em:({children:e})=>(0,H.jsx)(`em`,{className:`italic text-muted-foreground`,children:e}),ul:({children:e})=>(0,H.jsx)(`ul`,{className:`list-disc list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),ol:({children:e})=>(0,H.jsx)(`ol`,{className:`list-decimal list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),li:({children:e})=>(0,H.jsx)(`li`,{className:`ml-2`,children:e}),code:({children:e,className:t})=>t?null:(0,H.jsx)(`code`,{className:`px-1.5 py-0.5 rounded bg-muted text-primary font-mono text-xs`,children:e}),pre:({children:e})=>(0,H.jsx)(`pre`,{className:`bg-muted rounded-lg p-4 overflow-x-auto mb-4 text-xs font-mono text-muted-foreground border border-border`,children:e}),blockquote:({children:e})=>(0,H.jsx)(`blockquote`,{className:`border-l-4 border-primary/30 pl-4 py-2 mb-4 italic text-muted-foreground text-sm`,children:e}),a:({href:e,children:t})=>(0,H.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary hover:underline font-medium`,children:t}),table:({children:e})=>(0,H.jsx)(`div`,{className:`my-4 overflow-x-auto rounded border border-border`,children:(0,H.jsx)(`table`,{className:`w-full text-xs`,children:e})}),thead:({children:e})=>(0,H.jsx)(`thead`,{className:`bg-muted/50`,children:e}),tbody:({children:e})=>(0,H.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e}),tr:({children:e})=>(0,H.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e}),th:({children:e})=>(0,H.jsx)(`th`,{className:`px-3 py-2 text-left font-semibold text-foreground text-xs`,children:e}),td:({children:e})=>(0,H.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground`,children:e}),hr:()=>(0,H.jsx)(`hr`,{className:`my-6 border-border/50`})};function q0(){let e=Mn(),t=U0(),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(null),{state:o,content:s,dateKey:c,error:l,onConfirmBackdate:u,onRetry:d}=t;return(0,H.jsxs)(`div`,{className:`flex flex-col h-screen bg-background`,children:[(0,H.jsxs)(`div`,{className:`border-b border-border/50 bg-muted/30 px-6 py-4 flex items-center justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`button`,{onClick:()=>{e(-1)},className:`p-1.5 rounded hover:bg-muted transition-colors text-muted-foreground hover:text-foreground`,title:`Go back`,children:(0,H.jsx)(S,{className:`h-5 w-5`})}),(0,H.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:`Import Journal Entry`})]}),o===`loading`?(0,H.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}),`Preparing preview...`]}):o===`error`?(0,H.jsx)(W,{variant:`outline`,size:`sm`,onClick:d,children:`Retry`}):o===`pending-confirmation`||o===`creating`?null:(0,H.jsx)(W0,{selectedDate:i,onImportToday:async()=>{u&&await u()},onDateSelect:async e=>{a(e);let t=new Date;t.setHours(0,0,0,0);let n=new Date(e);n.setHours(0,0,0,0),n<t?r(!0):u&&await u()},isLoading:o===`creating`})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-auto px-6 py-6`,children:[o===`loading`&&(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,H.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Loading preview...`})]}),o===`error`&&(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,H.jsx)(`div`,{className:`bg-destructive/10 border border-destructive/50 rounded-lg p-4 max-w-md`,children:(0,H.jsxs)(`div`,{className:`flex gap-3 items-start`,children:[(0,H.jsx)(Jn,{className:`h-5 w-5 text-destructive mt-0.5 shrink-0`}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h3`,{className:`font-semibold text-foreground`,children:`Error Loading Preview`}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:l||`Failed to decode the zip content`})]})]})}),(0,H.jsx)(W,{onClick:d,variant:`outline`,children:`Try Again`})]}),o===`pending-confirmation`&&(0,H.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,H.jsxs)(`div`,{className:`text-center`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`Backdate Confirmation Required`}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`This date is in the past. Please confirm to proceed.`})]})}),o===`creating`&&(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,H.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Creating journal entry...`})]}),o===`success`&&(0,H.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,H.jsxs)(`div`,{className:`text-center`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`✓ Entry Created`}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Redirecting...`})]})}),o===`loading`||o===`error`||o===`pending-confirmation`||o===`creating`||o===`success`?null:s?(0,H.jsx)(`article`,{className:`prose prose-sm max-w-2xl mx-auto`,children:(0,H.jsx)(xn,{remarkPlugins:[Xn],components:K0,children:s})}):null]}),n&&c&&(0,H.jsx)(G0,{dateKey:c,onConfirm:async()=>{u&&(r(!1),await u())},onCancel:()=>r(!1),isLoading:o===`creating`})]})}async function J0(e,t,n){let r=await Z.getNote(e);if(!r)return;let i=`:session{result:${n}}`;if(r.rawContent.includes(i))return;let a=Object.values(r.blocks??{}).find(e=>e.id===t);if(!a||a.to==null)return;let o=`${r.rawContent.slice(0,a.to)}\n\n\`\`\`query:table\n${i}\n\`\`\`${r.rawContent.slice(a.to)}`;await new qT().updateEntry(r.id,{rawContent:o,expectedSourceRevision:r.sourceRevision})}function Y0(){let{runtimeId:e}=_n(),t=Mn(),n=(0,V.useRef)(e?SK.get(e):void 0),r=(0,V.useRef)(null),i=(0,V.useCallback)(async()=>{let t=n.current;if(!t||!e)throw Error(`The pending workout is unavailable.`);return t.captured?(r.current=t.captured,t.captured.block):(r.current||=t.snapshot?await LM(t.snapshot,t.block,e,t.origin):await RM(t.noteId,t.block,e,t.origin),r.current.block)},[e]);(0,V.useEffect)(()=>{e&&SK.delete(e)},[e]);let a=n.current,o=(0,V.useCallback)((n,r)=>!r||!e||!a?Promise.reject(Error(`Run cannot be saved — its session data or runtime id is missing.`)):GR.record({runBlock:a.block,blockId:a.block.id,noteId:a.noteId,resultId:e,data:r,createdAt:r.endTime||Date.now(),...a.origin?{origin:a.origin}:{}}).then(async()=>{if(r.completed){try{await J0(a.noteId,a.block.id,e)}catch{}t(wO(e),{replace:!0})}}),[e,a,t]),s=(0,V.useCallback)(()=>{if(!a){t(`/`);return}if(a.returnTo){t(a.returnTo,{replace:!0});return}t(EK(yN(a.noteId)),{replace:!0})},[a,t]);return a?(0,H.jsx)(SU,{block:a.block,prepareRun:i,onClose:s,onCompleteWorkout:o,autoStart:!0}):(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-red-400`,children:`Runtime not found. Please start the workout from the editor.`})}var X0=null;async function Z0(e){(!X0||X0.attempt!==e)&&(X0={attempt:e,promise:Rz(ZK.content)});try{return await X0.promise}finally{X0?.attempt===e&&(X0=null)}}function Q0(){let e=Mn(),[t,n]=(0,V.useState)(!1),[r,i]=(0,V.useState)(0);return(0,V.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await Z0(r);t||e(mO(n),{replace:!0})}catch{t||n(!0)}})(),()=>{t=!0}},[e,r]),t?(0,H.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-3 text-zinc-300 px-4 text-center`,children:[(0,H.jsx)(`p`,{role:`alert`,children:`Unable to create a new playground note.`}),(0,H.jsx)(`button`,{type:`button`,className:`rounded border border-zinc-600 px-3 py-1 text-sm hover:bg-zinc-800`,onClick:()=>{n(!1),i(e=>e+1)},children:`Try again`})]}):(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}function $0(){let e=Mn(),t=zt(),[n]=Jt(`zip`),[r]=Jt(`z`),[i]=Jt(`by`),[a]=Jt(`src`);(0,V.useEffect)(()=>{if(t.pathname!==`/load`&&!(t.pathname===`/`&&r))return;if(r){let t=!1;return(async()=>{try{let e=await H0(r);if(e===null)throw Error(`Invalid workout link`);if(t)return;let n=eq(e,i??void 0);if(await zz(n,{reuseKey:`home`,title:`Home playground`}),t)return;rq({content:n,by:i??void 0})}catch(e){console.error(`Failed to decode zip:`,e),t||ND({title:`Could not import workout`,description:`The link was invalid or the workout could not be saved.`,variant:`destructive`})}t||e(`/`,{replace:!0})})(),()=>{t=!0}}if(!n)return;let o=!1,s=a&&a.startsWith(`/`)?a:void 0;return(async()=>{try{let t=await H0(n);if(t===null)throw Error(`Invalid workout link`);if(o)return;let r=s?await Rz(t,{sourcePath:s}):await Rz(t);o||e(mO(r),{replace:!0})}catch(t){console.error(`Failed to decode zip:`,t),o||(ND({title:`Could not import workout`,description:`The link was invalid or the workout could not be saved.`,variant:`destructive`}),e(Q.home,{replace:!0}))}})(),()=>{o=!0}},[n,r,i,a,e,t.pathname])}function e2(){let{pathname:e,hash:t}=zt(),{scrollToSection:n}=BD();return(0,V.useEffect)(()=>{if(t){let e=t.slice(1);n(e);let r=setTimeout(()=>{n(e)},50);return()=>clearTimeout(r)}window.scrollTo(0,0)},[e,t]),null}function t2(){return $0(),U0(),(0,V.useEffect)(()=>{MT.current().catch(console.error),wT(),WY()},[]),null}function n2({settling:e}){return e?(0,H.jsx)(`div`,{role:`status`,className:`flex min-h-dvh items-center justify-center text-muted-foreground`,children:`Loading library…`}):(0,H.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,H.jsx)(`p`,{className:`text-sm font-semibold`,children:`The library's routed content failed to load.`}),(0,H.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:`The seed corpus is missing the root page. Re-running the seed import usually restores it.`}),(0,H.jsx)(W,{variant:`outline`,size:`sm`,"data-testid":`root-reseed`,onClick:()=>{aD().then(()=>yT())},children:`Re-seed library`})]})}function r2(){let e=(0,V.useRef)(()=>{}),t=$j(),n=HY(),r=(0,V.useMemo)(()=>Sj(()=>e.current(),t),[t]);return(0,H.jsx)(Ri,{defaultTheme:`system`,storageKey:`wod-wiki-playground-theme`,children:(0,H.jsx)(h_,{children:(0,H.jsx)(pD,{children:(0,H.jsx)(SE,{children:(0,H.jsx)(Kn,{children:(0,H.jsxs)(Dn,{children:[(0,H.jsx)(t2,{}),(0,H.jsx)(FD,{}),(0,H.jsxs)(HD,{tree:r,children:[(0,H.jsx)(e2,{}),(0,H.jsxs)(At,{children:[(0,H.jsx)(z,{path:`*`,element:t.some(({route:e})=>e===Q.home)?(0,H.jsx)(F$,{}):(0,H.jsx)(n2,{settling:n===`preparing`})}),(0,H.jsx)(z,{path:`/proto/calc-authoring`,element:(0,H.jsx)(_1,{})}),(0,H.jsx)(z,{path:`/proto/query-block-composer`,element:(0,H.jsx)(P1,{})}),(0,H.jsx)(z,{path:`/settings`,element:(0,H.jsx)(fn,{to:`/settings/appearance`,replace:!0})}),(0,H.jsx)(z,{path:`/settings/appearance`,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.settingsProfile,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.settingsData,element:(0,H.jsx)(fn,{to:Q.settingsStorage,replace:!0})}),(0,H.jsx)(z,{path:Q.settingsDatabase,element:(0,H.jsx)(fn,{to:Q.settingsStorage,replace:!0})}),(0,H.jsx)(z,{path:Q.settingsStorage,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.settingsSync,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:`/settings/system`,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.settingsQueries,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.settingsTags,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:`/settings/library/calcs`,element:(0,H.jsx)(`div`,{className:`p-6`,children:(0,H.jsx)(B0,{})})}),(0,H.jsx)(z,{path:`/legacy`,element:(0,H.jsx)(P$,{})}),(0,H.jsx)(z,{path:`/chapters/basics`,element:(0,H.jsx)(fn,{to:`/guide/start`,replace:!0})}),(0,H.jsx)(z,{path:`/chapters/sequences`,element:(0,H.jsx)(fn,{to:`/guide/start`,replace:!0})}),(0,H.jsx)(z,{path:`/chapters/protocols`,element:(0,H.jsx)(fn,{to:`/guide/protocols`,replace:!0})}),(0,H.jsx)(z,{path:`/challenge`,element:(0,H.jsx)(fn,{to:`/`,replace:!0})}),(0,H.jsx)(z,{path:Q.plan,element:(0,H.jsx)(b$,{})}),(0,H.jsx)(z,{path:Q.feeds,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.feed,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.feedDetail,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.feedItem,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.catalogs,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.collections,element:(0,H.jsx)(p$,{})}),(0,H.jsx)(z,{path:`/collections/:slug`,element:(0,H.jsx)(f$,{})}),(0,H.jsx)(z,{path:`/collections/:slug/:target`,element:(0,H.jsx)(f$,{})}),(0,H.jsx)(z,{path:Q.collection,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.collectionTarget,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.load,element:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,H.jsx)(V0,{})})}),(0,H.jsx)(z,{path:Q.loadJournal,element:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,H.jsx)(q0,{})})}),(0,H.jsx)(z,{path:Q.loadJournalDate,element:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,H.jsx)(q0,{})})}),(0,H.jsx)(z,{path:Q.playgroundRoot,element:(0,H.jsx)(Q0,{})}),(0,H.jsx)(z,{path:Q.playground,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.playgrounds,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.notePlaygroundAlias,element:(0,H.jsx)(u$,{})}),(0,H.jsx)(z,{path:Q.note,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.journalNote,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.journalEntry,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.noteById,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.journal,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.pages,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.run,element:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,H.jsx)(Y0,{})})}),(0,H.jsx)(z,{path:Q.tracker,element:(0,H.jsx)(v$,{})}),(0,H.jsx)(z,{path:`/results`,element:(0,H.jsx)(h$,{})}),(0,H.jsx)(z,{path:`/results/segments`,element:(0,H.jsx)(g$,{})}),(0,H.jsx)(z,{path:Q.sessionDetail,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.sessions,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.sessionDate,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:`/review/:runtimeId`,element:(0,H.jsx)(y$,{})}),(0,H.jsx)(z,{path:`/note/:noteId/review`,element:(0,H.jsx)(y$,{})}),(0,H.jsx)(z,{path:`/note/:noteId/review/:sectionId`,element:(0,H.jsx)(y$,{})}),(0,H.jsx)(z,{path:`/note/:noteId/review/:sectionId/:resultId`,element:(0,H.jsx)(y$,{})}),(0,H.jsx)(z,{path:`/workout/:category/:name`,element:(0,H.jsx)(d$,{})}),(0,H.jsx)(z,{path:Q.efforts,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.effort,element:(0,H.jsx)(m$,{})}),(0,H.jsx)(z,{path:Q.effortSlug,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.dashboard,element:(0,H.jsx)(_$,{})}),(0,H.jsx)(z,{path:Q.dashboards,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.dashboardView,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.dashboardSlug,element:(0,H.jsx)(c$,{searchHandlerRef:e})}),(0,H.jsx)(z,{path:Q.analytics,element:(0,H.jsx)(fn,{to:`/dashboards`,replace:!0})}),(0,H.jsx)(z,{path:Q.analyticsExplorer,element:(0,H.jsx)(x$,{})}),t.map(({route:t})=>(0,H.jsx)(z,{path:t,element:(0,H.jsx)(c$,{searchHandlerRef:e})},t))]}),(0,H.jsx)(E$,{})]})]})})})})})})}function i2({error:e,onRetry:t}){let n=e instanceof Error?e.message:String(e);return kT(),(0,H.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-4 p-6 text-center`,children:[(0,H.jsx)(`p`,{className:`text-sm font-semibold`,children:`The API data store could not be opened.`}),(0,H.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground font-mono break-all`,"data-testid":`boot-recovery-error`,children:n}),(0,H.jsxs)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:[`Your stored data has not been cleared. Retry after resolving the error above.`,!1]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:t,"data-testid":`boot-recovery-retry`,className:`rounded-md border border-border bg-card px-3 py-1.5 text-xs font-medium hover:bg-accent`,children:`Retry`}),!1]}),!1]})}function a2(){let e=(0,V.useSyncExternalStore)(Gv,Wv),t=e.phase===`updating`;return(0,H.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`flex min-h-dvh flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,H.jsx)(`p`,{className:`text-sm font-semibold`,children:t?`Updating local database…`:`Checking for storage updates…`}),t&&e.fromVersion!==null&&(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Schema v`,e.fromVersion,` → v`,e.toVersion]}),e.message&&(0,H.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:e.message})]})}var o2=(0,Ii.createRoot)(document.getElementById(`root`));function s2(){let[e,t]=(0,V.useState)(!1),[n,r]=(0,V.useState)(null),[i,a]=(0,V.useState)(0),o=(0,V.useSyncExternalStore)(Gv,Wv);return(0,V.useEffect)(()=>{let e=!1,n;return LT().then(()=>$T?iE():void 0).then(()=>{e||(n=BT(),t(!0))}).catch(t=>{e||r(t)}),()=>{e=!0,n?.()}},[i]),n?(0,H.jsx)(i2,{error:n,onRetry:()=>{r(null),a(e=>e+1)}}):o.phase===`checking`||o.phase===`updating`?(0,H.jsx)(a2,{}):e?(0,H.jsx)(r2,{}):(0,H.jsx)(`div`,{role:`status`,className:`flex min-h-dvh items-center justify-center text-muted-foreground`,children:`Loading…`})}o2.render((0,H.jsx)(V.StrictMode,{children:(0,H.jsx)(s2,{})}));export{uI as t};
211
+ //# sourceMappingURL=main-CPRFCrjV.js.map