@bitcobblers/wod-wiki-tools 0.49.2179 → 0.49.2181

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 (598) hide show
  1. package/dist/bin/wod.cjs +1 -1
  2. package/dist/bin/wod.cjs.map +1 -1
  3. package/dist/bin/wod.mjs +2 -2
  4. package/dist/{chunk-AVECBM6C.mjs → chunk-4LXXQE5N.mjs} +3 -3
  5. package/dist/chunk-4LXXQE5N.mjs.map +1 -0
  6. package/dist/{chunk-PTWORSGP.mjs → chunk-66OSZNMC.mjs} +4 -4
  7. package/dist/{chunk-PTWORSGP.mjs.map → chunk-66OSZNMC.mjs.map} +1 -1
  8. package/dist/index.cjs +1 -1
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.mjs +2 -2
  11. package/dist/{scaffoldFeed-HQYC5FBB.mjs → scaffoldFeed-E2VH7D3J.mjs} +3 -3
  12. package/dist/{scaffoldFeed-HQYC5FBB.mjs.map → scaffoldFeed-E2VH7D3J.mjs.map} +1 -1
  13. package/dist/web/playground/assets/{main-CCvRRg88.css → main-C2Vk9c4n.css} +1 -1
  14. package/dist/web/playground/assets/{main-D0MbuRhX.js → main-euGENSOK.js} +7 -7
  15. package/dist/web/playground/assets/{statementBuilderFlow-DpxfY0SA.js → statementBuilderFlow-DV7Wny36.js} +2 -2
  16. package/dist/web/playground/index.html +2 -2
  17. package/dist/web/{server/seed/core/chunks/canvas.1fcf8471.json → playground/seed/core/chunks/canvas.e0a0a836.json} +1 -1
  18. package/dist/web/playground/seed/core/chunks/{dashboards.383e9f8e.json → dashboards.6568b91b.json} +1 -1
  19. package/dist/web/playground/seed/core/chunks/{efforts.c946bce7.json → efforts.98a44deb.json} +1 -1
  20. package/dist/web/playground/seed/core/chunks/{equipment.ef72a67e.json → equipment.563c04e4.json} +1 -1
  21. package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +180 -180
  22. package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +16 -16
  23. package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +326 -326
  24. package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +50 -50
  25. package/dist/web/playground/seed/core/manifest.json +27 -27
  26. package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
  27. package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +4 -4
  28. package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +1 -1
  29. package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +2 -2
  30. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  31. package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +12 -12
  32. package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +20 -20
  33. package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +30 -30
  34. package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +10 -10
  35. package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +24 -24
  36. package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +5 -5
  37. package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
  38. package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  39. package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  40. package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  41. package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  42. package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  43. package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  44. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  45. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
  46. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  47. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  48. package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
  49. package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  50. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  51. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  52. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  53. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  54. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
  55. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  56. package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  57. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  58. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  59. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  60. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  61. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  62. package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  63. package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  64. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  65. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  66. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  67. package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +4 -4
  68. package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
  69. package/dist/web/playground/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  70. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  71. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  72. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  73. package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  74. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  75. package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  76. package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +4 -4
  77. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  78. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  79. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  80. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
  81. package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  82. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
  83. package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  84. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  85. package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  86. package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
  87. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  88. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  89. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  90. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  91. package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  92. package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  93. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  94. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  95. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  96. package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  97. package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  98. package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  99. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  100. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  101. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
  102. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  103. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  104. package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  105. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  106. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  107. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  108. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  109. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  110. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  111. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  112. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  113. package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  114. package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  115. package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  116. package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  117. package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  118. package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  119. package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
  120. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  121. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  122. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  123. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  124. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  125. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  126. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  127. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  128. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  129. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  130. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  131. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  132. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  133. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  134. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  135. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  136. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  137. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  138. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  139. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  140. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  141. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  142. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  143. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  144. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  145. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  146. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  147. package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  148. package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  149. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  150. package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  151. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  152. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  153. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  154. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  155. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  156. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  157. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  158. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  159. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  160. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  161. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  162. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  163. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  164. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  165. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  166. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  167. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  168. package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  169. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  170. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  171. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  172. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  173. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  174. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  175. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  176. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  177. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  178. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  179. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  180. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  181. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  182. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  183. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  184. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  185. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  186. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  187. package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  188. package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
  189. package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  190. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  191. package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  192. package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  193. package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
  194. package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  195. package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  196. package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  197. package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
  198. package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  199. package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  200. package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  201. package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
  202. package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  203. package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
  204. package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  205. package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  206. package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  207. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  208. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  209. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  210. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  211. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  212. package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  213. package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  214. package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  215. package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  216. package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  217. package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  218. package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  219. package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  220. package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  221. package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  222. package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  223. package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  224. package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  225. package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  226. package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  227. package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  228. package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  229. package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  230. package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
  231. package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  232. package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  233. package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  234. package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  235. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  236. package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  237. package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  238. package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
  239. package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  240. package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  241. package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  242. package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  243. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  244. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  245. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  246. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  247. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  248. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  249. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  250. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  251. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  252. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  253. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  254. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  255. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  256. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  257. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  258. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  259. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  260. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  261. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  262. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  263. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  264. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  265. package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  266. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  267. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  268. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  269. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  270. package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  271. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  272. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  273. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  274. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  275. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  276. package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  277. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  278. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  279. package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  280. package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  281. package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
  282. package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
  283. package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
  284. package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
  285. package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
  286. package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
  287. package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
  288. package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
  289. package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  290. package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
  291. package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
  292. package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
  293. package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
  294. package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
  295. package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
  296. package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  297. package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
  298. package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
  299. package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
  300. package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
  301. package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
  302. package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
  303. package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
  304. package/dist/web/playground/seed/core/report.html +13 -13
  305. package/dist/web/server/assets/{main-D_Bo1S7k.js → main-BikjCkfv.js} +7 -7
  306. package/dist/web/server/assets/{main-CCvRRg88.css → main-C2Vk9c4n.css} +1 -1
  307. package/dist/web/server/assets/{statementBuilderFlow-BAjbd6jT.js → statementBuilderFlow-CDJlnoro.js} +2 -2
  308. package/dist/web/server/index.html +2 -2
  309. package/dist/web/{playground/seed/core/chunks/canvas.1fcf8471.json → server/seed/core/chunks/canvas.e0a0a836.json} +1 -1
  310. package/dist/web/server/seed/core/chunks/{dashboards.383e9f8e.json → dashboards.6568b91b.json} +1 -1
  311. package/dist/web/server/seed/core/chunks/{efforts.c946bce7.json → efforts.98a44deb.json} +1 -1
  312. package/dist/web/server/seed/core/chunks/{equipment.ef72a67e.json → equipment.563c04e4.json} +1 -1
  313. package/dist/web/server/seed/core/indexes/notebooks/canvas.json +180 -180
  314. package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +16 -16
  315. package/dist/web/server/seed/core/indexes/notebooks/efforts.json +326 -326
  316. package/dist/web/server/seed/core/indexes/notebooks/equipment.json +50 -50
  317. package/dist/web/server/seed/core/manifest.json +27 -27
  318. package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
  319. package/dist/web/server/seed/core/markdown/canvas/guide/README.json +4 -4
  320. package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +1 -1
  321. package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +2 -2
  322. package/dist/web/server/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
  323. package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +12 -12
  324. package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +20 -20
  325. package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +30 -30
  326. package/dist/web/server/seed/core/markdown/canvas/guide/start.json +10 -10
  327. package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +24 -24
  328. package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +5 -5
  329. package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
  330. package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
  331. package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
  332. package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
  333. package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
  334. package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
  335. package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
  336. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
  337. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +9 -9
  338. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
  339. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
  340. package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +3 -3
  341. package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
  342. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
  343. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
  344. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
  345. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
  346. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +2 -2
  347. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
  348. package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
  349. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
  350. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
  351. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
  352. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
  353. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
  354. package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
  355. package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
  356. package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
  357. package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
  358. package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
  359. package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +4 -4
  360. package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +4 -4
  361. package/dist/web/server/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
  362. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
  363. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
  364. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
  365. package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
  366. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
  367. package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
  368. package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +4 -4
  369. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
  370. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
  371. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
  372. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +5 -5
  373. package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
  374. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +8 -8
  375. package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
  376. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
  377. package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
  378. package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +5 -5
  379. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
  380. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
  381. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
  382. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
  383. package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
  384. package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
  385. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
  386. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
  387. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
  388. package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
  389. package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
  390. package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
  391. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
  392. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
  393. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +3 -3
  394. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
  395. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
  396. package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
  397. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
  398. package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
  399. package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
  400. package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
  401. package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
  402. package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
  403. package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
  404. package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
  405. package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
  406. package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
  407. package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
  408. package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
  409. package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
  410. package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
  411. package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
  412. package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
  413. package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
  414. package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
  415. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
  416. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
  417. package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
  418. package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
  419. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
  420. package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
  421. package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
  422. package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
  423. package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
  424. package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
  425. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
  426. package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
  427. package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
  428. package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
  429. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
  430. package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
  431. package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
  432. package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
  433. package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
  434. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
  435. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
  436. package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
  437. package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
  438. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
  439. package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
  440. package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
  441. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
  442. package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
  443. package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
  444. package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
  445. package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
  446. package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
  447. package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
  448. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
  449. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
  450. package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
  451. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
  452. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
  453. package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
  454. package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
  455. package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
  456. package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
  457. package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
  458. package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
  459. package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
  460. package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
  461. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
  462. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
  463. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
  464. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
  465. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
  466. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
  467. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
  468. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
  469. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
  470. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
  471. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
  472. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
  473. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
  474. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
  475. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
  476. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
  477. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
  478. package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
  479. package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
  480. package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
  481. package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
  482. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
  483. package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
  484. package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
  485. package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
  486. package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
  487. package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
  488. package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
  489. package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
  490. package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
  491. package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
  492. package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
  493. package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
  494. package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
  495. package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
  496. package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
  497. package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
  498. package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
  499. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
  500. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
  501. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
  502. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
  503. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
  504. package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
  505. package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
  506. package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
  507. package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
  508. package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
  509. package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
  510. package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
  511. package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
  512. package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
  513. package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
  514. package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
  515. package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
  516. package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
  517. package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
  518. package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
  519. package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
  520. package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
  521. package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
  522. package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
  523. package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
  524. package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
  525. package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
  526. package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
  527. package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
  528. package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
  529. package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
  530. package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
  531. package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
  532. package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
  533. package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
  534. package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
  535. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
  536. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
  537. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
  538. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
  539. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
  540. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
  541. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
  542. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
  543. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
  544. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
  545. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
  546. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
  547. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
  548. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
  549. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
  550. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
  551. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
  552. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
  553. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
  554. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
  555. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
  556. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
  557. package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
  558. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
  559. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
  560. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
  561. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
  562. package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
  563. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
  564. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
  565. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
  566. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
  567. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
  568. package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
  569. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
  570. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
  571. package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
  572. package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
  573. package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
  574. package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
  575. package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
  576. package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
  577. package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
  578. package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
  579. package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
  580. package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
  581. package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
  582. package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
  583. package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
  584. package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
  585. package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
  586. package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
  587. package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
  588. package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
  589. package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
  590. package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
  591. package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
  592. package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
  593. package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
  594. package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
  595. package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
  596. package/dist/web/server/seed/core/report.html +13 -13
  597. package/package.json +6 -6
  598. package/dist/chunk-AVECBM6C.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-DnqYaW-D.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-CelWxf33.css","assets/statementBuilderFlow-DpxfY0SA.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-DnqYaW-D.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-CelWxf33.css","assets/statementBuilderFlow-DV7Wny36.js"])))=>i.map(i=>d[i]);
2
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,Ct as g,D as _,Dn as v,Dr as y,Dt as b,E as x,En as S,Er as C,Et as w,F as T,Fn as E,Fr 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 L,Ir as R,J as ee,Jn as z,Jr as te,Jt as ne,K as re,Kn as ie,Kr as ae,Kt as oe,L as se,Ln as ce,Lr as le,M as B,Mn as V,Mr as ue,Mt as de,N as fe,Nn as pe,Nr as me,O as he,On as ge,Or as _e,Ot as ve,P as ye,Pn as be,Pr as xe,Q as Se,Qn as Ce,Qr as we,Qt as Te,R as Ee,Rn as De,Rr as Oe,S as ke,Sn as Ae,Sr as je,St as Me,T as Ne,Tn as Pe,Tr as Fe,Tt as Ie,U as Le,Un as Re,Ur as ze,Ut as Be,V as Ve,Vn as He,Vr as Ue,Vt as We,W as Ge,Wn as Ke,Wr as qe,Wt as Je,X as Ye,Xn as Xe,Xr as Ze,Xt as Qe,Y as $e,Yn as et,Yr as tt,Yt as nt,Z as rt,Zn as it,Zr as at,Zt as ot,_ as st,_i as ct,_n as lt,_r as eee,_t as ut,a as dt,ai as ft,an as pt,ar as mt,at as ht,b as gt,bn as _t,br as vt,bt as yt,c as bt,ci as xt,cn as St,cr as Ct,ct as wt,d as Tt,di as Et,dn as Dt,dr as Ot,dt as kt,ei as At,en as jt,er as Mt,et as Nt,f as Pt,fi as Ft,fn as It,fr as Lt,ft as tee,g as Rt,gi as zt,gn as Bt,gr as Vt,gt as Ht,h as Ut,hi as Wt,hn as Gt,hr as Kt,ht as qt,i as Jt,ii as Yt,in as Xt,ir as Zt,it as Qt,j as $t,jn as en,jr as tn,jt as nn,k as rn,kn as an,kr as on,kt as sn,l as cn,li as ln,ln as nee,lr as un,lt as dn,m as fn,mi as pn,mn,mr as hn,mt as gn,n as _n,ni as vn,nn as yn,nr as bn,nt as xn,o as Sn,oi as Cn,on as wn,or as Tn,ot as En,p as Dn,pi as On,pn as kn,pr as An,pt as jn,q as Mn,qn as Nn,qr as Pn,qt as Fn,r as In,ri as Ln,rn as Rn,rr as ree,rt as zn,s as Bn,si as Vn,sn as Hn,sr as Un,st as Wn,t as Gn,ti as Kn,tn as qn,tr as Jn,tt as Yn,u as Xn,ui as Zn,un as Qn,ur as $n,ut as er,v as tr,vi as nr,vn as rr,vr as ir,vt as ar,w as or,wn as sr,wr as cr,wt as lr,x as ur,xn as dr,xr as fr,xt as pr,y as mr,yi as hr,yn as gr,yr as _r,yt as vr,z as yr,zn as br,zr as xr,zt as Sr}from"./vendor-DnqYaW-D.js";import{$ as Cr,A as wr,B as H,C as Tr,D as Er,E as Dr,F as Or,G as kr,H as Ar,I as iee,J as aee,K as oee,L as jr,M as Mr,N as Nr,O as Pr,P as Fr,Q as Ir,R as Lr,S as Rr,T as zr,U as Br,V as Vr,W as Hr,X as Ur,Y as Wr,Z as Gr,_ as Kr,a as qr,at as Jr,b as Yr,c as see,ct as Xr,d as Zr,et as Qr,f as $r,g as ei,h as ti,i as ni,it as ri,j as ii,k as ai,l as oi,lt as si,m as ci,n as li,nt as ui,o as di,ot as fi,p as pi,q as mi,r as hi,rt as gi,s as _i,st as vi,t as yi,tt as bi,u as xi,ut as Si,v as Ci,w as wi,x as Ti,y as Ei,z as Di}from"./vendor-codemirror-DiPqXWq7.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 Oi=ct(),U=e(hr(),1),W=ft(),ki=(0,U.createContext)({theme:`system`,setTheme:()=>null});function Ai({children:e,defaultTheme:t=`system`,storageKey:n=`vite-ui-theme`}){let[r,i]=(0,U.useState)(()=>localStorage.getItem(n)||t);(0,U.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,U.useCallback)(e=>{localStorage.setItem(n,e),i(e)},[n]),o=(0,U.useMemo)(()=>({theme:r,setTheme:a}),[r,a]);return(0,W.jsx)(ki.Provider,{value:o,children:e})}var ji=()=>{let e=(0,U.useContext)(ki);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e};function G(...e){return xe(Yt(e))}function Mi(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 Ni=D(`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-11 w-11 min-h-11 min-w-11`}},defaultVariants:{variant:`default`,size:`default`}}),K=U.memo(U.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>{let o=r?R:`button`;return(0,W.jsx)(Ln,{as:o,className:G(Ni({variant:t,size:n,className:e})),ref:a,...i})}));K.displayName=`Button`;var Pi=[`parser`,`dialect`,`user-plan`,`runtime`,`user-entry`],Fi={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`,diagnostic:`runtime`};function Ii(e){return Fi[e??`parser`]??`parser`}var q=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.Equipment=`equipment`,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.Diagnostic=`diagnostic`,e.Choice=`choice`,e}({}),Li={parser:0,dialect:1,"user-plan":2,runtime:3,"user-entry":4};function Ri(e){return e.ownershipLayer??Ii(e.origin)}function zi(e){return Li[Ri(e)]??0}function Bi(e){return e.map((e,t)=>{let n=Ri(e);return{metric:e,type:e.type,layer:n,layerRank:Li[n]??0,index:t,isSuppressor:e.action===`suppress`}})}function Vi(e,t){return t?e.filter(e=>!(t.types&&!t.types.includes(e.type)||t.layers&&!t.layers.includes(e.layer))):[...e]}function Hi(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 Ui(e){let t;for(let n of e)n.isSuppressor||(t==null||n.layerRank>t)&&(t=n.layerRank);return t}function Wi(e,t){return{metric:e.metric,type:e.type,layer:e.layer,outcome:t}}function Gi(e,t){return e.index-t.index}function Ki(e){let t=Bi(e);return{raw(e){return Vi(t,e).map(e=>e.metric)},visible(e){let n=Hi(Vi(t,e)),r=[];for(let e of n.values()){if(e.some(e=>e.isSuppressor))continue;let t=Ui(e);if(t!=null)for(let n of e)!n.isSuppressor&&n.layerRank===t&&r.push(n)}return r.sort(Gi),r.map(e=>e.metric)},byLayer(e){let n=Vi(t,e),r={};for(let e of Pi)r[e]=[];for(let e of n)r[e.layer].push(e.metric);for(let e of Pi)r[e]?.length===0&&delete r[e];return r},promotionCandidates(e){let n=Hi(Vi(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:Pi[i]});continue}let i=Ui(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:Pi[i]})}return r.sort((e,t)=>{let n=(Li[t.layer]??0)-(Li[e.layer]??0);return n===0?0:n}),r},explain(e){let n=Hi(Vi(t,e)),r=[];for(let[e,t]of n.entries()){let n=t.some(e=>e.isSuppressor),i=n?void 0:Ui(t),a=t.map(e=>e.isSuppressor?Wi(e,`suppressor`):n?Wi(e,`hidden-by-suppressor`):i!=null&&e.layerRank===i?Wi(e,`visible`):Wi(e,`hidden-by-layer`));r.push({type:e,winnerLayer:i==null?void 0:Pi[i],suppressed:n,entries:a})}return r}}}function qi(e,t){let n=[...e];return(t?.types?.includes(q.Hint)??!1)||(n=n.filter(e=>e.type!==q.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 Ji=class{resolve(e,t){return Ki(qi(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)=>zi(t)-zi(e))}};function Yi(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 Xi(e){let t=Yi(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 Zi(e){return e.split(`.`).map(Xi).filter(e=>e.length>0).join(`.`)}function Qi(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 $i(e){return JSON.stringify([e.path,e.kind,e.dimension??null])}var ea=class extends Error{code;constructor(e,t){super(t),this.name=`UnitConversionError`,this.code=e}},ta=[{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`]}],na=(()=>{let e=new Map;for(let t of ta){e.set(t.canonical.toLowerCase(),t);for(let n of t.aliases??[])e.has(n.toLowerCase())||e.set(n.toLowerCase(),t)}return e})();function ra(e){if(typeof e==`string`)return na.get(e.trim().toLowerCase())}function ia(e){return ra(e)?.dimension}var aa=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 oa(e){return aa[e]}function sa(e,t,n){let r=ra(t);if(!r)throw new ea(`unknown-unit`,`Unknown unit "${t}"`);let i=ra(n);if(!i)throw new ea(`unknown-unit`,`Unknown unit "${n}"`);if(r.dimension!==i.dimension)throw new ea(`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 ea(`scale-mismatch`,`Named scales ${t} and ${n} are not interchangeable`);if(!Number.isFinite(e))throw new ea(`non-finite`,`Non-finite value cannot be converted`);return e*r.factor/i.factor}var ca=`references`,cee=[`explicit`,`split`,`whole`,`default`,`none`];function lee(e){if(!e||typeof e!=`object`)return!1;let t=e;return(t.kind===`effort`||t.kind===`equipment`)&&typeof t.slug==`string`&&!!t.slug&&typeof t.label==`string`}function la(e){return!e||typeof e!=`object`?!1:typeof e.reason==`string`}function ua(e){let t=e?.[ca];if(!t||typeof t!=`object`)return;let n=t;if(!(typeof n.matched!=`string`||!cee.includes(n.matched))&&typeof n.source==`string`&&!(n.refs!==void 0&&(!Array.isArray(n.refs)||!n.refs.every(lee)))&&!(n.diagnostics!==void 0&&(!Array.isArray(n.diagnostics)||!n.diagnostics.every(la))))return t}var da=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}},fa=class e{_metrics;_indexedLength=0;_resolver=new Ji;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)=>zi(t)-zi(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=>zi(e))),i=Math.max(...t.map(e=>zi(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(`, `)}]`}},pa=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 fa?this.metrics:fa.from(this.metrics,this.id)}},ma=class extends pa{id=0;parent;children=[];meta=new da(0,0,0,0);_metrics=fa.empty();metricMeta=new Map;isLeaf;get metrics(){return this._metrics}set metrics(e){this._metrics=fa.from(e,this.id)}constructor(e){super(),e&&(Object.assign(this,e),e.metrics&&(this.metrics=fa.from(e.metrics,this.id)),this.metricMeta||=new Map)}},ha=class e extends pa{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=fa.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 da(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=fa.from(n,this.id),this.metricMeta=new Map,this.children=[],this.isLeaf=!0,this.meta=i?.meta??new da(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}},ga=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 _a(e){let t=new Map;for(let n of e)t.set(n.slug,n);return{resolve:e=>t.get(e),list:()=>[...t.values()]}}var va=`tagReference`;function ya(e){let t=e?.[va];if(!t||typeof t!=`object`)return;let n=t;if(!(typeof n.slug!=`string`||!n.slug)&&typeof n.label==`string`&&!(n.functions!==void 0&&!Array.isArray(n.functions))&&(n.soundProfileId===void 0||typeof n.soundProfileId==`string`))return t}function ba(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`)}`}function xa(e,t){let n=e.position??1/0,r=t.position??1/0;return n===r?e.createdAt===t.createdAt?e.id<t.id?-1:+(e.id>t.id):e.createdAt-t.createdAt:n-r}function Sa(e){return[...e].sort(xa)}function Ca(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[];for(let t of Sa(e)){let e=n.get(t.pageId);e&&r.push({pageId:e.id,noteId:t.noteId,position:t.position,createdAt:t.createdAt,date:e.date,slug:e.slug,title:e.title})}return r}function wa(e){let t={};for(let n of e)t.pageId===void 0&&(t.pageId=n.pageId),t.journalDate===void 0&&n.date&&(t.journalDate=n.date),t.pageSlug===void 0&&n.slug&&!n.date&&(t.pageSlug=n.slug);return t}var Ta=[`segment`,`system`,`load`,`event`,`compiler`,`completion`,`analytics`,`wellness`];function Ea(e){return e===`time`?`run`:e===`log`?`log`:null}function Da(e){let t=e.trim();return t.startsWith(`notebook/`)||t.startsWith(`notebook:`)?t.slice(9):t}function Oa(e){return`notebook/${Da(e)}`}function ka(e,t){return t?t!==`feed`:e.seedOrigin!==`seed`&&e.feedOrigin!==`feed`}var Aa=[{slug:`journal`,notebookId:`notebook/journal`,name:`Journal`,description:`Dated training log and scheduled workouts.`,icon:`📅`,href:`/journal`},{slug:`playground`,notebookId:`notebook/playground`,name:`Playground`,description:`Scratchpad workouts and timer experiments.`,icon:`🧪`,href:`/playgrounds`},{slug:`defaults`,notebookId:`notebook/defaults`,name:`Defaults`,description:`Starter notes — clone any of them into your own notebooks.`,icon:`📝`,href:`/notebook/defaults`},{slug:`guides`,notebookId:`notebook/guides`,name:`Guides`,description:`Built-in Whiteboard Language and WQL guides.`,icon:`📖`,href:`/notebook/guides`,feedEntryId:`core`,seedChunkId:`canvas`},{slug:`efforts`,notebookId:`notebook/efforts`,name:`Efforts`,description:`The effort library — every effort the parser and analytics resolve, across the canonical disciplines.`,icon:`🏋️`,href:`/efforts`,feedEntryId:`core`,seedChunkId:`efforts`},{slug:`equipment`,notebookId:`notebook/equipment`,name:`Equipment`,description:`The equipment library — gear definitions the language resolves.`,icon:`🔧`,href:`/equipment`,feedEntryId:`core`,seedChunkId:`equipment`},{slug:`dashboards`,notebookId:`notebook/dashboards`,name:`Dashboards`,description:`Prebuilt WQL dashboards — query compositions ready to open.`,icon:`📊`,href:`/dashboards`,feedEntryId:`core`,seedChunkId:`dashboards`}],ja=[`playground-run-tip`,`attention`,`code-example`,`syntax-group`];function Ma(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 Na(e){let t=e.type?.toLowerCase();if(t===`youtube`||t===`strava`||t===`amazon`||t===`file`||t===`effort`||t===`equipment`)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`,`metrics.met`,`discipline`,`effortType`,`targetRPE`,`equipment`,`aliases`,`derivation`].some(t=>t in e)?`effort`:[`slug`,`label`,`registrySource`,`ownerNoteId`,`sourcePath`].some(t=>t in e)?`equipment`:`default`}function Pa(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 Fa(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
3
  `,a)?`\r
4
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]==="`"?Ma(`\`\`\`${h}`):null,_=a[0]==="`"?h.match(/^widget:([\w-]+)$/):null,v=a[0]==="`"?h.match(/^query(?:[:\s](.*))?$/i):null,y=t.registeredWidgets??ja,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=ba(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=Na(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=Pa(m.displayContent.trim()),a&&(c=!1),o.push(m),l=p+1}return o}function Ia(e){return e.type===`time`||e.type===`log`?`wod`:e.type===`query`||e.type===`widget`||e.type===`embed`?e.type:null}function La(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 Fa(e,t)){let e=Ia(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 Ra(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=La(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 za(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 Ba=/^[A-Za-z][\w.-]*$/,Va=/^---\r?\n([\s\S]*?)\r?\n---/;function Ha(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ua(e){let t=e.trim();return t===``||t.startsWith(`#`)}function Wa(e){return Array.isArray(e)}function Ga(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,`\\"`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/\t/g,`\\t`)}"`:e}function Ka(e,t,n){let r=` `.repeat(e);return Wa(n)?n.length===0?[`${r}${t}: []`]:[`${r}${t}:`,...n.map(e=>`${r} - ${typeof e==`number`?String(e):Ga(e)}`)]:[`${r}${t}: ${typeof n==`number`?String(n):Ga(n)}`]}function qa(e,t,n,r){let i=[],a=r;for(let r=t;r<e.length;r++)r===e.length-1?i.push(...Ka(a,e[r],n)):i.push(`${` `.repeat(a)}${e[r]}:`),a+=2;return i}function Ja(e){let t=!1,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(n){i===`\\`?r++:i===`"`&&(n=!1);continue}if(t){i===`'`&&(t=!1);continue}if(i===`"`)n=!0;else if(i===`'`)t=!0;else if(i===`#`&&(r===0||/\s/.test(e[r-1])))return r}return-1}function Ya(e,t,n){let r=[t],i=[];for(let a=t+1;a<e.length;a++){let t=e[a];if(Ua(t)){i.push(a);continue}if(t.length-t.trimStart().length>n)r.push(...i,a),i=[];else break}return r}function Xa(e,t,n,r,i){let a=RegExp(`^ {${n}}${Ha(t)}\\s*:`);for(let t=r;t<i;t++)if(a.test(e[t]))return t;return-1}function Za(e,t,n){if(t.length===0||!t.every(e=>typeof e==`string`&&Ba.test(e)))return e;let r=e.includes(`\r
@@ -60,7 +60,7 @@ sum:$metric{} by {week}
60
60
  `)).trim())??{}}var xx=class{options;opening;constructor(e={}){this.options=e}open(){if(typeof indexedDB>`u`)return Promise.reject(Error(`IndexedDB is unavailable in this environment`));if(!this.opening){let e=!1,t=0,n;this.opening=sn(this.options.dbName??ex,32,{upgrade:async(r,i,a,o)=>{if(o.done.catch(()=>{}),i>32){e=!0,o.abort();return}if(i!==0&&i<20){t=i,o.abort();return}try{Cx(r,o),i!==0&&i<32&&this.options.onUpgradeStart?.(i),await wx(r,i,o)}catch(e){n=e instanceof Error?e:Error(String(e));try{o.abort()}catch{}}},blocking:()=>{this.close()}}).catch(r=>{throw this.opening=void 0,n||(t===0?e||r instanceof DOMException&&r.name===`VersionError`?Error(`database schema is newer than this client supports (v32); refusing to downgrade`):r:Error(`local database schema v${t} predates the supported migration chain (v20+). Open this browser profile in an intermediate app version to export your data, or clear site data to start fresh — the old database was left untouched.`))})}return this.opening}stamp(e,t){let n=this.options.getUserId?.();return n?Eee(e,t,n):t}async policyContext(e){return Oy(e?await e.objectStore(`notes`).getAll():await(await this.open()).getAll(`notes`))}readonly(e){return new vx(this,e)}readwrite(e){return new vx(this,e,void 0,!0)}async transaction(e,t,n){let r=await this.open(),i=t===`readwrite`?new ux:void 0,a=new Set(e);t===`readwrite`&&(a.add(`block_revisions`),a.add(tx),a.add(`notes`),a.has(`notes`)&&(a.add(`block_index`),a.add(`block_efforts`),a.add(`block_equipment`)));let o=r.transaction([...a],t),s=o.done;s.catch(()=>{});let c={notes:new Set,sessions:new Set},l={readonly:e=>{if(!a.has(e))throw Error(`store outside transaction scope`);return new vx(this,e,o)},readwrite:e=>{if(t!==`readwrite`)throw Error(`read-only transaction`);if(!a.has(e))throw Error(`store outside transaction scope`);return new vx(this,e,o,!0,c,i)}};try{let e=await n(l);return await Dy((await Promise.all([...c.notes].map(e=>o.objectStore(`notes`).get(e)))).filter(Boolean),(await Promise.all([...c.sessions].map(e=>o.objectStore(`sessions`).get(e)))).filter(Boolean),e=>Promise.all(e.map(e=>o.objectStore(`block_revisions`).get(e)))),i&&i.ops.length>0&&await o.objectStore(tx).put({id:crypto.randomUUID(),at:Date.now(),ops:i.ops}),await s,i&&i.ops.length>0&&px(),e}catch(e){try{o.abort()}catch{}throw await s.catch(()=>{}),e}}async wipeUserData(){let e=vy.filter(e=>!e.system&&e.name!==`block_revisions`).map(e=>e.name);await this.transaction(e,`readwrite`,async t=>{for(let n of e)await t.readwrite(n).clear()})}async wipe(){let e=await this.open(),t=vy.filter(e=>!e.system).map(e=>e.name),n=e.transaction([...t,tx],`readwrite`);await Promise.all(t.map(e=>n.objectStore(e).clear())),await n.objectStore(tx).put({id:crypto.randomUUID(),at:Date.now(),ops:[{op:`wipe`}]}),await n.done,px()}async readOutbox(e,t){let n=await this.open(),r=IDBKeyRange.lowerBound(e,!0);return await n.getAll(tx,r,Math.min(t,4294967295))}async ackOutbox(e){let t=await this.open(),n=await t.getAllKeys(tx,IDBKeyRange.upperBound(e)),r=t.transaction(tx,`readwrite`);await Promise.all(n.map(e=>r.store.delete(e))),await r.done}async getSyncState(e){return(await(await this.open()).get(nx,e))?.value}async setSyncState(e,t){await(await this.open()).put(nx,{key:e,value:t})}async captureSyncBootstrap(e){let t=(await this.open()).transaction([...ax,tx,nx],`readwrite`),n=t.objectStore(nx),r=await n.get(e);if(r!==void 0&&Array.isArray(r.value))return await t.done,r.value;let i=new Set,a=new Set,o=!1;for(let e of await t.objectStore(tx).getAll())for(let t of e.ops)t.op===`put`||t.op===`delete`?i.add(`${t.store}:${JSON.stringify(t.key)}`):t.op===`clear`?a.add(t.store):o=!0;let s=crypto.randomUUID(),c=[];if(!o){let e=[],n=0,r=()=>{e.length!==0&&(c.push({id:`bootstrap:${s}:${c.length}`,at:Date.now(),ops:e}),e=[],n=0)};for(let o of await _x(e=>t.objectStore(e).getAll())){if(a.has(o.store)||o.store!==`block_revisions`&&i.has(`${o.store}:${JSON.stringify(o.key)}`))continue;let t=hx(o);e.length>0&&(e.length>=ox||n+t>sx)&&r(),e.push(o),n+=t}r()}return await n.put({key:e,value:c}),await t.done,c}async validateSyncState(){let e=(await this.open()).transaction([`notes`,`sessions`,`block_revisions`],`readonly`),t=await e.objectStore(`notes`).getAll(),n=await e.objectStore(`sessions`).getAll(),r=e.objectStore(`block_revisions`);await Dy(t,n,e=>Promise.all(e.map(e=>r.get(e)))),await e.done}async applySyncMutations(e,t,n=`cursor`){let r=new Map(vy.map(e=>[e.name,e]));for(let t of e){if(t.op===`clear`||t.op===`wipe`)continue;let e=r.get(t.store);if(!e)throw Error(`unknown store in sync mutation: ${String(t.store)}`);if(t.op===`put`||t.op===`delete`){let n=Array.isArray(t.key)?t.key:[t.key];if(n.length!==e.keyPath.length||!n.every(e=>typeof e==`string`||typeof e==`number`))throw Error(`sync ${t.op} key arity/shape mismatch for ${t.store}`)}t.op===`put`&&Ey(t.store,t.value)}let i=await this.open(),a=ax,o=i.transaction([...a,tx,nx],`readwrite`),s=e=>e===`notes`||e===`efforts`,c=new Map;for(let t of e){if(t.op===`clear`||t.op===`wipe`||!s(t.store))continue;let e=`${t.store}:${JSON.stringify(t.key)}`;if(c.has(e))continue;let n=t.key,r=await o.objectStore(t.store).get(n);c.set(e,{store:t.store,key:n,before:r,beforeExists:r!==void 0})}let l=async(e,t)=>{if(e.op===`wipe`){for(let e of a)await o.objectStore(e).clear();return}if(e.store===`memberships`)return;if(e.op===`clear`){if(e.store===`block_revisions`)return;let n=o.objectStore(e.store),i=Oy(await o.objectStore(`notes`).getAll());for(let a of await n.getAll()){if(!ky(e.store,a,i))continue;let n=Sy(r.get(e.store),a);e.store===`meta`&&typeof n==`string`&&n.startsWith(`user-deleted-seed:`)||await l({op:`delete`,store:e.store,key:n},t)}return}if(e.op===`delete`){if(e.store===`notes`){let t=String(Array.isArray(e.key)?e.key[0]:e.key);for(let e of[`block_index`,`block_efforts`,`block_equipment`]){let n=o.objectStore(e);for(let e of await n.index(`by-note`).getAllKeys(t))await n.delete(e)}}e.store!==`block_revisions`&&await o.objectStore(e.store).delete(e.key);return}let n=o.objectStore(e.store);if(e.store===`block_revisions`){let r=await n.get(e.key);if(r!==void 0&&!wy(r,e.value)&&!t){let t=e.value,i=r.version+1;for(;await n.get([t.noteId,t.blockId,i])!==void 0;)i+=1;await n.put({...t,version:i});return}(r===void 0||!wy(r,e.value))&&await n.put(e.value);return}if(e.store===`notes`&&!t){let t=await n.get(e.key);if(t!==void 0){let n=t,r=e.value;if(n.sourceRevision>r.sourceRevision)return}}await n.put(e.value)};for(let t of e)await l(t,!1);let u=(await o.objectStore(tx).getAll()).sort((e,t)=>e.seq-t.seq);for(let e of u)for(let t of e.ops)await l(t,!0);let d=0,f=0;for(let e of c.values()){let t=await o.objectStore(e.store).get(e.key);t!==void 0&&(e.beforeExists?wy(e.before,t)||(f+=1):d+=1)}return t!==null&&await o.objectStore(nx).put({key:n,value:{rev:t}}),await o.done,{added:d,updated:f}}async snapshotRows(){let e=await this.open(),t=vy.filter(e=>!e.system),n=e.transaction(t.map(e=>e.name),`readonly`),r=Oy(await n.objectStore(`notes`).getAll()),i=await Promise.all(t.map(async e=>({store:e.name,rows:(await n.objectStore(e.name).getAll()).filter(t=>ky(e.name,t,r))})));return await n.done,i}async snapshotAllRows(){let e=await this.open(),t=vy.filter(e=>!e.system),n=e.transaction(t.map(e=>e.name),`readonly`),r=await Promise.all(t.map(async e=>({store:e.name,rows:await n.objectStore(e.name).getAll()})));return await n.done,r}async close(){let e=this.opening;this.opening=void 0,(await e?.catch(()=>void 0))?.close()}},Sx=[...vy.map(e=>({name:e.name,keyPath:e.keyPath})),...lx.map(e=>({name:e.name,keyPath:Array.isArray(e.keyPath)?e.keyPath:[e.keyPath]}))];Object.fromEntries(Sx.map(e=>[e.name,e.keyPath]));function Cx(e,t){for(let n of vy){if(e.objectStoreNames.contains(n.name)){let e=t.objectStore(n.name);for(let t of n.indexes)e.indexNames.contains(t.name)||e.createIndex(t.name,t.keyPath.length===1?t.keyPath[0]:t.keyPath,{unique:t.unique,multiEntry:t.multiEntry});continue}let r=e.createObjectStore(n.name,{keyPath:n.keyPath.length===1?n.keyPath[0]:n.keyPath});for(let e of n.indexes)r.createIndex(e.name,e.keyPath.length===1?e.keyPath[0]:e.keyPath,{unique:e.unique,multiEntry:e.multiEntry})}for(let t of rx)e.objectStoreNames.contains(t.name)||e.createObjectStore(t.name,{keyPath:t.keyPath,autoIncrement:`autoIncrement`in t&&t.autoIncrement})}async function wx(e,t,n){let r=e=>n.objectStore(e);if(t===20&&e.objectStoreNames.contains(`sessions`)){let e=r(`sessions`),t=r(`events`);for await(let n of e){let e=n.value,r=e.data?.logs??[],i=!1;for await(let n of t.index(`by-result-grain`).iterate(IDBKeyRange.bound([e.id,``],[e.id,[]]))){i=!0;break}if(!i&&r.length>0){let n={noteId:e.noteId,resultId:e.id,segmentId:e.segmentId,segmentVersion:e.segmentVersion,blockContentId:e.blockContentId,origin:e.origin,pageId:e.pageId,workoutTimestamp:e.data?.endTime??e.createdAt};for(let e of p_(r,n))await t.put(e);for(let e of m_(r,n))await t.put(e)}let a={...e,startTime:e.data?.startTime??e.createdAt,endTime:e.data?.endTime??e.createdAt,duration:e.data?.duration??0,completed:e.data?.completed??!0,roundsCompleted:e.data?.roundsCompleted,totalRounds:e.data?.totalRounds,repsCompleted:e.data?.repsCompleted};delete a.data,await n.update(a)}}if(t===21&&e.objectStoreNames.contains(`meta`)&&await r(`meta`).delete(`seed`),t<25)for(let t of xy){if(!e.objectStoreNames.contains(t))continue;let n=r(t);n.indexNames.contains(`by-user`)||n.createIndex(`by-user`,`userId`)}if(e.objectStoreNames.contains(`results`)){let t=r(`sessions`),n=r(`results`),i=r(`events`);for await(let e of n){let{data:n,...r}=e.value,a=n?.logs??[];if(a.length>0){let e={noteId:r.noteId,resultId:r.id,segmentId:r.segmentId,segmentVersion:r.segmentVersion,blockContentId:r.blockContentId,origin:r.origin,pageId:r.pageId,workoutTimestamp:n?.endTime??r.createdAt};for(let t of p_(a,e))await i.get(t.id)===void 0&&await i.put(t);for(let t of m_(a,e))await i.get(t.id)===void 0&&await i.put(t)}await t.getKey(r.id)===void 0&&await t.put({...r,startTime:n?.startTime??r.startTime??r.createdAt,endTime:n?.endTime??r.endTime??r.createdAt,duration:n?.duration??r.duration??0,completed:n?.completed??r.completed??!0,roundsCompleted:n?.roundsCompleted??r.roundsCompleted,totalRounds:n?.totalRounds??r.totalRounds,repsCompleted:n?.repsCompleted??r.repsCompleted})}e.deleteObjectStore(`results`)}if(e.objectStoreNames.contains(`block_index`)&&!r(`block_index`).indexNames.contains(`by-source`)&&r(`block_index`).createIndex(`by-source`,`sourceId`),e.objectStoreNames.contains(`notes`)&&!r(`notes`).indexNames.contains(`by-created`)&&r(`notes`).createIndex(`by-created`,`createdAt`),e.objectStoreNames.contains(`efforts`)&&!r(`efforts`).indexNames.contains(`by-source`)&&r(`efforts`).createIndex(`by-source`,`registrySource`),e.objectStoreNames.contains(`note_tags`)&&!r(`note_tags`).indexNames.contains(`by-note-tag`)){let e=r(`note_tags`),t=new Map,n=[];for await(let r of e){let e=r.value,i=`${e.noteId}${e.tagId}`,a=t.get(i);a===void 0||e.id<a?(t.set(i,e.id),a!==void 0&&n.push(a)):n.push(e.id)}for(let t of n)await e.delete(t);e.createIndex(`by-note-tag`,[`noteId`,`tagId`],{unique:!0})}if(e.objectStoreNames.contains(`notes`)&&e.objectStoreNames.contains(`segments`)){let e=r(`segments`),t=r(`notes`),n=new Set;for await(let r of e){let e=r.value;if(e.dataType!==`frontmatter`||n.has(e.noteId)||!/(^|\n)dashboard:\s*["']?true["']?\s*(\n|$)/.test(e.rawContent))continue;n.add(e.noteId);let i=await t.get(e.noteId);!i||i.type===`dashboard`&&i.sourceId===`dashboards`||await t.put({...i,type:`dashboard`,sourceId:i.sourceId??`dashboards`})}}if(e.objectStoreNames.contains(`segments`)&&await Tx(e,n),t>=30&&t<32&&e.objectStoreNames.contains(tx)){let t=r(tx),n=[];for(let e of await t.getAll())for(let t of e.ops)if(t.op===`wipe`)for(let e of ax)e!==`block_revisions`&&n.push({op:`clear`,store:e});else t.op!==`put`&&t.store!==`memberships`&&t.store!==`block_revisions`&&n.push(t);if(n.push(...await _x(e=>r(e).getAll())),await t.clear(),n.length>0&&await t.put({id:crypto.randomUUID(),at:Date.now(),ops:n}),e.objectStoreNames.contains(nx)){let e=r(nx);for(let t of await e.getAllKeys())typeof t==`string`&&t.startsWith(ix)&&await e.delete(t)}}}async function Tx(e,t){let n=e=>t.objectStore(e),r=await n(`segments`).getAll(),i=n(`notes`),a=n(`block_revisions`),o=new Map;for(let e of r){let t=o.get(e.noteId);t?t.push(e):o.set(e.noteId,[e])}let s=new Map,c=new Map;for(let[e,t]of o){let n=new Map;for(let e of t){let t=n.get(e.id);(!t||e.version>t.version)&&n.set(e.id,e)}let r=[...n.values()].sort((e,t)=>(e.position??2**53-1)-(t.position??2**53-1)||e.id.localeCompare(t.id)),o=r.map(e=>e.sourceContent??`${e.rawContent}\n`).join(``),l=await i.get(e);if(!l)continue;let u=Fa(o,{registeredWidgets:ja}).filter(e=>Ia(e)!==null),d=r.filter(e=>e.dataType in yx),f={};u.forEach((t,n)=>{let r=Ia(t),i=d[n],a=i?.id??`migrated-${n}`;for(;Object.hasOwn(f,a);)a=`${a}-${n}`;let o=r===`wod`&&(t.type===`time`||t.type===`log`)?{dialect:t.type,...t.sport?{sport:t.sport}:{}}:{};f[a]={id:a,kind:r,version:i?.version??1,sourceRevision:1,from:t.from,to:t.to,...o},i&&s.set(`${e}${i.id}`,a),c.set(`${e}${a}`,{noteId:e,from:t.from,to:t.to,version:f[a].version})});let p=l;delete p.segments,delete p.segmentIds,await i.put({...p,rawContent:o,sourceRevision:1,blocks:f});let m=new Set(d.map(e=>e.id));for(let n of t){if(!m.has(n.id))continue;let t=bx(n.rawContent);await a.put({noteId:e,blockId:n.id,version:n.version,kind:`wod`,rawContent:n.rawContent,savedAt:n.createdAt,...t})}}let l=n(`sessions`);for(let e of await l.getAll()){if(e.segmentId===void 0&&e.segmentVersion===void 0&&e.version===void 0)continue;let{segmentId:t,segmentVersion:n,version:r,...i}=e;await l.put({...i,blockId:i.blockId??t??``,blockVersion:i.blockVersion??n??r??1})}let u=n(`events`);for(let e of await u.getAll()){if(e.segmentVersion===void 0&&e.segmentId===void 0)continue;let{segmentVersion:t,segmentId:n,...r}=e;await u.put({...r,...r.blockId===void 0&&n!==void 0?{blockId:n}:{},...r.blockVersion===void 0&&t!==void 0?{blockVersion:t}:{}})}let d=n(`block_index`);for(let e of await d.getAll()){let t=s.get(`${e.noteId}${e.segmentId}`)??e.segmentId,n=c.get(`${e.noteId}${t}`),r={...e,id:`${e.noteId}:${t}`,blockId:t,blockVersion:n?.version??e.segmentVersion??1,sourceRevision:1,...n?{from:n.from,to:n.to}:{},dataType:e.dataType===`script`?`wod`:e.dataType};delete r.segmentId,delete r.segmentVersion,r.id!==e.id&&await d.delete(e.id),await d.put(r)}e.deleteObjectStore(`segments`)}var Ex={registeredWidgets:ja},Dx=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 Ox(e){return typeof IDBKeyRange<`u`?IDBKeyRange.bound([e,``],[e,`￿`]):{lower:[e,``],upper:[e,`￿`]}}function kx(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function Ax(e){let t=ey(e),n=typeof t[`metrics.effort`]==`string`?t[`metrics.effort`].trim():``,r=t[`metrics.equipment`],i=(Array.isArray(r)?r:typeof r==`string`?[r]:[]).map(e=>e.trim()).filter(Boolean);return{...n?{effort:n}:{},...i.length>0?{equipment:i}:{}}}var jx=64,Mx=[{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`}],Nx=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 Dx(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=Sa(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 getDetailBatches(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+=jx){let t=await this.storage.queryDomain({plan:`detail`,selection:[{field:`id`,values:n.slice(e,e+jx)}]});t&&t.plan===`detail`?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`,`block_equipment`,`page_notes`,`meta`],`readwrite`,async t=>{let n=await t.readonly(`notes`).get(e);await t.readwrite(`notes`).delete(e);let r=t.readwrite(`attachments`);for(let t of await r.getAllFromIndex(`by-note`,e))await r.delete(t.id);let i=t.readwrite(`note_tags`);for(let t of await i.getAllFromIndex(`by-note`,e))await i.delete(t.id);let a=t.readwrite(`block_index`);for(let t of await a.getAllFromIndex(`by-note`,e))await a.delete(t.id);let o=t.readwrite(`block_efforts`);for(let t of await o.getAllFromIndex(`by-note`,e))await o.delete(t.id);let s=t.readwrite(`block_equipment`);for(let t of await s.getAllFromIndex(`by-note`,e))await s.delete(t.id);let c=t.readwrite(`page_notes`);for(let t of await c.getAllFromIndex(`by-note`,e))await c.delete(t.id);n&&(n.seedOrigin===`seed`||n.seedChunkId!==void 0||n.sourcePath!==void 0)&&await t.readwrite(`meta`).put({key:jee(e),value:Date.now()})})}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 getNotePlacements(e){let t=await this.getNotePages(e);if(t.length===0)return[];let n=[];for(let e of new Set(t.map(e=>e.pageId))){let t=await this.getPage(e);t&&n.push(t)}return Ca(t,n)}async getPageNote(e,t){return(await this.storage.readonly(`page_notes`).getAllFromIndex(`by-page-note`,[e,t]))[0]}async getPagePlacements(e){let t=Sa(await this.getPageNotes(e));if(t.length===0)return[];let n=await this.getPage(e);return n?Ca(t,[n]):[]}async addNoteToPage(e,t,n){return this.withTransaction([`page_notes`],async r=>{let i=await r.getPageNote(t,e);if(i)return i.id;let a=kx();return await r.storage.readwrite(`page_notes`).put({id:a,pageId:t,noteId:e,position:n??await r.nextAppendPosition(t,e),createdAt:Date.now()}),a})}async nextAppendPosition(e,t){let n=[...await this.getPageNotes(e),...await this.getNotePages(t)],r=-1;for(let e of n)typeof e.position==`number`&&e.position>r&&(r=e.position);return r+1}async removeNoteFromPage(e,t){await this.withTransaction([`page_notes`],async n=>{let r=await n.getPageNote(t,e);r&&await n.storage.readwrite(`page_notes`).delete(r.id)})}async moveNoteBetweenPages(e,t,n,r){await this.withTransaction([`page_notes`],async i=>{let a=await i.getPageNote(t,e);if(!a)throw new wb(`NOTE_NOT_PLACED`,`Note ${e} is not placed on page ${t}`);await i.storage.readwrite(`page_notes`).delete(a.id),await i.getPageNote(n,e)||await i.storage.readwrite(`page_notes`).put({id:kx(),pageId:n,noteId:e,position:r??await i.nextAppendPosition(n,e),createdAt:Date.now()})})}async getOrCreatePageForDate(e){let t=await this.getPageByDate(e);if(t)return t;let n={id:kx(),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 Mx)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:kx(),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:kx(),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`,`block_equipment`,`efforts`,`equipment`],async t=>{let n=await t.getNote(e.noteId);if((n?.sourceRevision??0)!==e.expectedSourceRevision)throw new wb(`STALE_SOURCE`,`Note ${e.noteId} changed since it was loaded`);if(!n&&!e.metadata?.title)throw new wb(`NOTE_NOT_FOUND`,`Note not found: ${e.noteId}`);let r=e.blocks??La(e.rawContent,{...Ex,sourceRevision:e.expectedSourceRevision||1,blocks:n?.blocks}),i=Object.fromEntries(Object.entries(r).map(([t,n])=>[t,{...n,version:1,sourceRevision:e.expectedSourceRevision||1}]));Ra(e.rawContent,i,e.expectedSourceRevision||1,Ex);let a=await t.storage.readonly(`block_revisions`).getAllFromIndexMany(`by-block`,Object.keys(i).map(t=>[e.noteId,t])),o=new Map;for(let e of a)for(let t of e)t.version>(o.get(t.blockId)?.version??0)&&o.set(t.blockId,t);let s={},c=[],l=Date.now();for(let t of Object.values(i)){let r=o.get(t.id),i=e.rawContent.slice(t.from,t.to),a=r&&r.rawContent===i&&r.kind===t.kind&&r.dialect===t.dialect&&r.sport===t.sport,u=a?r.version:(r?.version??0)+1;s[t.id]={...t,version:u,sourceRevision:n?.sourceRevision??1},a||c.push({noteId:e.noteId,blockId:t.id,version:u,kind:t.kind,rawContent:i,dialect:t.dialect,sport:t.sport,savedAt:l})}let u=!n||n.rawContent!==e.rawContent||Object.keys(n.blocks).length!==Object.keys(s).length||Object.values(s).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}),d=(n?.sourceRevision??0)+ +!!u;for(let e of Object.values(s))e.sourceRevision=d;let f={...n,id:e.noteId,title:e.metadata?.title??n?.title??``,createdAt:n?.createdAt??e.createdAt??l,rawContent:e.rawContent,sourceRevision:d,blocks:s,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&&wy(n,f)?n:(c.length&&await t.storage.readwrite(`block_revisions`).putMany(c),await t.saveNote(f),await t.rebuildBlockIndexForNote(f.id),f)})}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`,Ox(e)));return i}async getEventsByResult(e){return this.storage.readonly(`events`).getAllFromIndex(`by-result-grain`,Ox(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`,Ox(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(`notebook:`,`notebook;`,!1,!0)),e.countFromIndex(`by-source`,IDBKeyRange.bound(`page:`,`page;`,!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=Fa(t.rawContent,Ex),r=yc({efforts:await this.getAllEfforts(),equipment:await this.getAllEquipment()}),i=Ax(t.rawContent);await this.storage.transaction([`block_index`,`block_efforts`,`block_equipment`,`block_revisions`],`readwrite`,async a=>{let o=a.readwrite(`block_index`),s=a.readwrite(`block_efforts`),c=a.readwrite(`block_equipment`),l=new Map((await o.getAllFromIndex(`by-note`,e)).map(e=>[e.id,e])),u=new Map((await s.getAllFromIndex(`by-note`,e)).map(e=>[e.id,e])),d=new Map((await c.getAllFromIndex(`by-note`,e)).map(e=>[e.id,e])),f=0;for(let p of Object.values(t.blocks).sort((e,t)=>e.from-t.from)){let m=`${e}:${p.id}`,h=l.get(m);l.delete(m);let g=n.find(e=>e.from===p.from&&e.to===p.to),_=await a.readonly(`block_revisions`).get([e,p.id,p.version]);if(!_)throw Error(`Missing saved revision ${m}:${p.version}`);let v={id:m,noteId:e,blockId:p.id,blockVersion:p.version,sourceRevision:t.sourceRevision,from:p.from,to:p.to,position:f++,dataType:p.kind,blockContentId:g?.scriptBlock?.contentId,rawContent:t.rawContent.slice(p.from,p.to),noteTitle:t.title,createdAt:_.savedAt,isStatic:t.seedOrigin===`seed`||void 0,sourceId:t.sourceId,sourcePath:t.sourcePath,routeId:h?.routeId};if((!h||!wy(h,v))&&await o.put(v),p.kind!==`wod`||!g?.scriptBlock)continue;let y=xc(g.scriptBlock.content,{sport:p.sport,references:r,defaults:i}).statements,b=bc(y),x=new Set(b.efforts);if(x.size===0)for(let e of y){let t=e.metrics?.getMetric?.(q.Effort),n=(typeof t?.value==`string`?t.value:t&&`effort`in t?String(t.effort):``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);n&&![`rest`,`amrap`,`emom`,`tabata`,`for-time`].includes(n)&&x.add(n)}for(let n of x){let r=`${e}:${p.id}:${n}`,i=u.get(r);u.delete(r);let a={id:r,noteId:e,blockId:p.id,blockContentId:v.blockContentId,effortSlug:n,createdAt:i?.createdAt??_.savedAt,isStatic:v.isStatic,sourcePath:t.sourcePath};(!i||!wy(i,a))&&await s.put(a)}for(let n of b.equipment){let r=`${e}:${p.id}:${n}`,i=d.get(r);d.delete(r);let a={id:r,noteId:e,blockId:p.id,blockContentId:v.blockContentId,equipmentSlug:n,createdAt:i?.createdAt??_.savedAt,isStatic:v.isStatic,sourcePath:t.sourcePath};(!i||!wy(i,a))&&await c.put(a)}}for(let e of l.values())await o.delete(e.id);for(let e of u.values())await s.delete(e.id);for(let e of d.values())await c.delete(e.id)})}async getEffort(e){return this.storage.readonly(`efforts`).get(e)}async getAllEfforts(){return this.storage.readonly(`efforts`).getAll()}async saveEffort(e){return await this.withTransaction([`efforts`,`page`],async t=>{await t.storage.readwrite(`efforts`).put(e);let n=t.storage.readwrite(`page`);for(let r of e.aliases){let i=r.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);if(!i)continue;let a=`e/${i}`;(await t.storage.readonly(`page`).getAllFromIndex(`by-slug`,a)).length===0&&await n.put({id:kx(),slug:a,title:`${e.label} (Alias)`,createdAt:Date.now()})}}),e.slug}async deleteEffort(e){await this.withTransaction([`efforts`,`page`],async t=>{let n=await t.storage.readonly(`efforts`).get(e);if(!n)return;await t.storage.readwrite(`efforts`).delete(e);let r=t.storage.readwrite(`page`);for(let e of n.aliases){let i=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);if(i)for(let e of await t.storage.readonly(`page`).getAllFromIndex(`by-slug`,`e/${i}`))e.title===`${n.label} (Alias)`&&await r.delete(e.id)}})}async getEquipment(e){return this.storage.readonly(`equipment`).get(e)}async getAllEquipment(){return this.storage.readonly(`equipment`).getAll()}async saveEquipment(e){return await this.withTransaction([`equipment`,`page`],async t=>{await t.storage.readwrite(`equipment`).put(e);let n=t.storage.readwrite(`page`);for(let r of e.aliases){let i=r.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);if(!i)continue;let a=`eq/${i}`;(await t.storage.readonly(`page`).getAllFromIndex(`by-slug`,a)).length===0&&await n.put({id:kx(),slug:a,title:`${e.label} (Alias)`,createdAt:Date.now()})}}),e.slug}async deleteEquipment(e){await this.withTransaction([`equipment`,`page`],async t=>{let n=await t.storage.readonly(`equipment`).get(e);if(!n)return;await t.storage.readwrite(`equipment`).delete(e);let r=t.storage.readwrite(`page`);for(let e of n.aliases){let i=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``);if(i)for(let e of await t.storage.readonly(`page`).getAllFromIndex(`by-slug`,`eq/${i}`))e.title===`${n.label} (Alias)`&&await r.delete(e.id)}})}async getEquipmentUsage(e){let t=await this.storage.readonly(`block_equipment`).getAllFromIndex(`by-equipment`,e),n=this.storage.readonly(`notes`),r=new Map;for(let e of t){if(r.has(e.noteId))continue;let t=await n.get(e.noteId);t&&r.set(e.noteId,t.title)}return Array.from(r,([e,t])=>({noteId:e,title:t}))}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()}},Px={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{}}},Fx=class{prefix;backend;constructor(e=``,t=Px){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))}},Ix=`wodwiki.membership`;function Lx(){try{let e=typeof window<`u`&&window.localStorage?window.localStorage.getItem(Ix):null;if(e){let t=JSON.parse(e);if(typeof t?.displayName==`string`&&t.displayName.trim())return t.displayName.trim()}}catch{}return`Anonymous`}var Rx=class{store;cache;updates=Promise.resolve();constructor(e=new Fx){this.store=e}currentSync(){return this.cache??this.store.get(Ix)??void 0}async current(){return this.cache||(this.cache=this.store.get(Ix)??by(),this.store.set(Ix,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(Ix)??by(),...e,updatedAt:Date.now()};return this.cache=t,this.store.set(Ix,t),t}},zx;function Bx(){return zx??=zt(()=>Promise.resolve().then(()=>Jk).then(e=>e.storage),void 0)}var Vx=class{cache;updates=Promise.resolve();currentSync(){return this.cache}async current(){if(this.cache)return this.cache;let e=await Bx(),t=await e.readonly(`memberships`).get(yy);return t||(t=by(),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 Bx()).readwrite(`memberships`).put(t),this.cache=t,t}};function Hx(e){return e===`indexed-db`?new Rx:new Vx}function Ux(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 Wx=0,Gx=0,Kx=null,qx=null,Jx=null,Yx=1,Xx=[],Zx=new Set,Qx={uploading:0,downloading:0,label:null,result:null,error:null};function $x(){Qx={uploading:Wx,downloading:Gx,label:Xx.length?Xx[Xx.length-1].label:null,result:Kx,error:qx,activeProgress:Jx};for(let e of Zx)e()}function eS(e,t){let n={direction:e,label:t};Xx.push(n),e===`upload`?Wx+=1:Gx+=1,$x();let r=!1;return()=>{if(r)return;r=!0;let t=Xx.indexOf(n);t>=0&&Xx.splice(t,1),e===`upload`?Wx=Math.max(0,Wx-1):Gx=Math.max(0,Gx-1),$x()}}function tS(e){Kx={id:Yx++,source:e.source,added:e.added,updated:e.updated},qx=null,$x()}function nS(e){Jx=e,$x()}function rS(e){qx=e,$x()}function iS(){return Qx}function aS(e){return Zx.add(e),()=>{Zx.delete(e)}}function oS(e){return e.rows}function sS(e){let t=Promise.resolve(),n=e=>{let n=t.then(e,e);return t=n.then(()=>void 0,()=>void 0),n};return{dialect:`sqlite`,query:(t,r=[])=>n(()=>e.execute({sql:t,args:r}).then(oS)),exec:async(t,r=[])=>{await n(()=>e.execute({sql:t,args:r}))},transaction(t){return n(async()=>{let n=await e.transaction(`write`);try{let e=await t({query:(e,t=[])=>n.execute({sql:e,args:t}).then(oS),exec:async(e,t=[])=>{await n.execute({sql:e,args:t})},batch:async e=>(await n.batch(e.map(({sql:e,params:t=[]})=>({sql:e,args:t})))).map(oS)});return await n.commit(),e}catch(e){try{await n.rollback()}catch{}let t=e instanceof Error?e.message:String(e);for(let e of[`revision_conflict`,`transaction_conflict`,`invalid_session_pin`])if(t.includes(e))throw new Cy(409,t,e);throw e}finally{n.close()}})},close:async()=>{await t,e.close()}}}[...ym.filter(e=>e!==`journal`)];var cS={phase:`idle`,message:``,fromVersion:null,toVersion:0},lS=new Set;function uS(e){cS=e;for(let e of lS)e()}function dS(){return cS}function fS(e){return lS.add(e),()=>lS.delete(e)}function pS(e){uS({phase:`idle`,message:``,fromVersion:null,toVersion:e})}function mS(e){uS({...cS,phase:`checking`,message:e})}function hS(e,t){uS({phase:`updating`,message:`Updating local database schema v${e} → v${t}…`,fromVersion:e,toVersion:t})}function gS(e){uS({...cS,phase:`error`,message:e})}var _S={feedStart:`feed:start`,homeFirstPaint:`home:first-paint`,corpusReady:`corpus:ready`,feedSettled:`feed:settled`},vS={feedStart:`bootFeedStart`,homeFirstPaint:`bootHomeFirstPaint`,corpusReady:`bootCorpusReady`,feedSettled:`bootFeedSettled`},yS=new Set;function bS(e){if(yS.has(e)||(yS.add(e),typeof performance>`u`||typeof performance.mark!=`function`))return;let t=performance.mark(_S[e]);typeof document<`u`&&(document.documentElement.dataset[vS[e]]=t.startTime.toFixed(3))}function xS(...e){return xe(Yt(e))}function SS({id:e,title:t,question:n,query:r,span:i,showQuery:a=!1,onInspect:o,onOpenInExplorer:s,toolbar:c,children:l}){return(0,W.jsxs)(`div`,{id:e,className:xS(`relative group/frame bg-card border border-border rounded-lg p-4 flex flex-col min-h-0`,i),children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-2`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:t}),n&&(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:n})]}),(o||s)&&(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[o&&(0,W.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,W.jsx)(Ht,{className:`w-3.5 h-3.5`})}),s&&(0,W.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,W.jsx)(ut,{className:`w-3.5 h-3.5`})})]})]}),c&&(0,W.jsx)(`div`,{className:`mb-3`,children:c}),a&&r!=null&&r!==``&&(0,W.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,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:l})]})}function CS({label:e,onClick:t,disabled:n,active:r,children:i}){return(0,W.jsx)(`button`,{type:`button`,onClick:t,title:e,"aria-label":e,disabled:n,className:xS(`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 wS({title:e,onClick:t}){return(0,W.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,W.jsx)(gn,{className:`w-3.5 h-3.5`})})}function TS(e){return(0,U.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 ES({result:e,className:t,actions:n}){let r=(0,U.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,W.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,W.jsx)(`div`,{children:r}),n&&(0,W.jsx)(`div`,{className:`mt-3`,children:n})]})}function DS({result:e,unit:t,label:n,thresholds:r}){let i=TS(e),a=e.series[0]?.unit??t??``,o=(0,U.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,U.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,W.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center`,children:[(0,W.jsx)(ES,{result:e}),e.series.length>0&&!e.parsed.error&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`text-5xl font-bold tabular-nums ${s}`,children:[o.toLocaleString(void 0,{maximumSignificantDigits:3}),(0,W.jsx)(`span`,{className:`text-lg font-normal text-muted-foreground ml-1`,children:a})]}),(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2 text-center`,children:n})]})]})}function OS(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 kS(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 AS(e){let t=typeof e==`number`?e:Number(e);return Math.abs(t)>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function jS(e){return new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function MS(e){return new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}var NS=[`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 PS({result:e,unit:t}){let r=TS(e),i=(0,U.useMemo)(()=>kS(e.series),[e]),a=e.series[0]?.unit??t;return r.kind!==`timeseries`&&r.kind!==`scalar`?(0,W.jsx)(ES,{result:e}):(0,W.jsx)(wt,{width:`100%`,height:`100%`,children:(0,W.jsxs)(Se,{data:i,margin:{top:4,right:8,bottom:0,left:-12},children:[(0,W.jsx)(zn,{stroke:`hsl(var(--border))`,vertical:!1}),(0,W.jsx)(Nt,{dataKey:`ts`,tickFormatter:jS,tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,W.jsx)(n,{tickLine:!1,axisLine:!1,width:64,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:a?` ${a}`:``}),(0,W.jsx)(En,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},labelFormatter:e=>MS(e),formatter:e=>[`${Number(e).toLocaleString()} ${a??``}`.trim(),``]}),e.series.length>1&&(0,W.jsx)(Wn,{wrapperStyle:{fontSize:11}}),e.series.map((e,t)=>(0,W.jsx)(xn,{type:`monotone`,dataKey:e.label,name:e.label,stroke:NS[t%NS.length],strokeWidth:2,dot:!1},e.key))]})})}function FS({result:e,unit:t}){let r=TS(e),i=(0,U.useMemo)(()=>e.series.map((e,t)=>({name:e.label,value:e.points[0]?.value??0,fill:NS[t%NS.length]})),[e]),a=e.series[0]?.unit??t;return r.kind!==`bars`&&r.kind!==`scalar`?(0,W.jsx)(ES,{result:e}):(0,W.jsx)(wt,{width:`100%`,height:`100%`,children:(0,W.jsxs)(rt,{data:i,margin:{top:4,right:8,bottom:0,left:48},children:[(0,W.jsx)(zn,{stroke:`hsl(var(--border))`,vertical:!1}),(0,W.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,W.jsx)(n,{tickLine:!1,axisLine:!1,width:48,tickFormatter:AS,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:a?` ${a}`:``}),(0,W.jsx)(En,{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()} ${a??``}`.trim(),r]}}),(0,W.jsx)(Yn,{dataKey:`value`,radius:[4,4,0,0],children:i.map(e=>(0,W.jsx)(ht,{fill:e.fill},e.name))})]})})}var IS=12;function LS(e,t){return`${e.toLocaleString()}${t?` ${t}`:``}`}function RS({result:e,unit:t}){let n=TS(e),r=e.series[0]?.unit??t??``,i=(0,U.useMemo)(()=>{if(n.kind===`scalar`)return{head:[`Metric`,`Value`],body:[[e.series[0]?.label??`scalar`,LS(n.value,r)]],more:0};if(n.kind===`bars`){let t=e.series.map(e=>[e.label,LS(e.points[0]?.value??0,r)]);return{head:[`Series`,`Value`],body:t.slice(0,IS),more:Math.max(0,t.length-IS)}}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,IS).map(t=>[jS(t),...e.series.map(e=>{let i=n.get(e.label)?.get(t);return i===void 0?`—`:LS(i,r)})]),more:Math.max(0,t.length-IS)}}return{head:[],body:[],more:0}},[e,n,r]);return n.kind===`error`||n.kind===`empty`?(0,W.jsx)(ES,{result:e}):(0,W.jsxs)(`div`,{className:`h-full overflow-auto`,children:[(0,W.jsxs)(`table`,{className:`w-full text-[11px] font-mono`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{className:`border-b border-border text-muted-foreground text-left`,children:i.head.map((e,t)=>(0,W.jsx)(`th`,{className:`py-1 px-2 font-medium ${t===0?`text-left`:`text-right`}`,children:e},e))})}),(0,W.jsx)(`tbody`,{children:i.body.map((e,t)=>(0,W.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/30 transition-colors`,children:e.map((e,t)=>(0,W.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,W.jsxs)(`div`,{className:`text-[11px] text-muted-foreground pt-2`,children:[`… `,i.more,` more rows`]})]})}function zS({result:e,unit:t,limit:n=8}){let r=TS(e),i=e.series[0]?.unit??t,a=(0,U.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,W.jsx)(ES,{result:e}):(0,W.jsx)(`div`,{className:`space-y-2 pt-1`,children:a.map((e,t)=>(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground w-4 text-right`,children:t+1}),(0,W.jsx)(`span`,{className:`text-xs w-36 truncate text-foreground`,children:e.name}),(0,W.jsx)(`div`,{className:`flex-1 h-4 bg-muted/60 rounded-sm overflow-hidden`,children:(0,W.jsx)(`div`,{className:`h-full rounded-sm`,style:{width:`${e.value/o*100}%`,background:NS[t%NS.length]}})}),(0,W.jsxs)(`span`,{className:`text-xs tabular-nums text-muted-foreground w-20 text-right`,children:[e.value.toLocaleString(),` `,i]})]},e.name))})}var BS=[`low`,`moderate`,`high`];function VS({result:e,unit:t}){let r=TS(e),i=(0,U.useMemo)(()=>kS(e.series),[e]),a=e.series[0]?.unit??t,o=(0,U.useMemo)(()=>e.series.map(e=>e.label).sort((e,t)=>{let n=BS.indexOf(e),r=BS.indexOf(t);return n===-1&&r===-1?e.localeCompare(t):n===-1?1:r===-1?-1:n-r}),[e]);return r.kind!==`timeseries`&&r.kind!==`bars`?(0,W.jsx)(ES,{result:e}):(0,W.jsx)(wt,{width:`100%`,height:`100%`,children:(0,W.jsxs)(rt,{data:i,margin:{top:4,right:8,bottom:0,left:48},children:[(0,W.jsx)(zn,{stroke:`hsl(var(--border))`,vertical:!1}),(0,W.jsx)(Nt,{dataKey:`ts`,tickFormatter:jS,tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10}}),(0,W.jsx)(n,{tickLine:!1,axisLine:!1,width:48,tickFormatter:AS,stroke:`hsl(var(--muted-foreground))`,tick:{fill:`hsl(var(--muted-foreground))`,fontSize:10},unit:a?` ${a}`:``}),(0,W.jsx)(En,{contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,fontSize:`12px`,color:`hsl(var(--popover-foreground))`},labelFormatter:e=>MS(e),formatter:(e,t,n)=>{let r=typeof n?.payload?.name==`string`?n.payload.name:``;return[`${Number(e).toLocaleString()} ${a??``}`.trim(),r]}}),(0,W.jsx)(Wn,{wrapperStyle:{fontSize:11}}),o.map(t=>{let n=e.series.findIndex(e=>e.label===t);return(0,W.jsx)(Yn,{dataKey:t,stackId:`a`,fill:NS[n>=0?n%NS.length:0]},t)})]})})}function HS({result:e,attributes:t,params:n,label:r,unit:i}){if(!e||e.series.length===0)return(0,W.jsx)(ES,{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,W.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,W.jsx)(US,{label:u,current:a,target:o,pct:l,unit:t.unit||c},t.key||n)})})}function US({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,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-w-28 text-center`,"data-testid":`goal-ring-item`,children:[(0,W.jsxs)(`div`,{className:`relative w-24 h-24 flex items-center justify-center`,children:[(0,W.jsxs)(`svg`,{className:`w-full h-full transform -rotate-90`,viewBox:`0 0 100 100`,children:[(0,W.jsx)(`circle`,{cx:`50`,cy:`50`,r:38,className:`stroke-muted`,strokeWidth:`8`,fill:`transparent`}),r!==void 0&&(0,W.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,W.jsxs)(`div`,{className:`absolute flex flex-col items-center justify-center`,children:[r===void 0?(0,W.jsx)(`span`,{className:`text-sm font-semibold tabular-nums leading-none text-foreground`,children:a}):(0,W.jsxs)(`span`,{className:`text-base font-bold tabular-nums leading-none ${u}`,children:[r,`%`]}),r!==void 0&&(0,W.jsxs)(`span`,{className:`text-[10px] text-muted-foreground mt-0.5`,children:[a,` `,i]})]})]}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-col items-center max-w-32`,children:[(0,W.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate w-full`,title:e,children:e}),o&&(0,W.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Goal: `,o,` `,i]})]})]})}function WS(e,t){if(!e)return t;let n=parseFloat(e);return isNaN(n)?t:n}function GS({result:e,params:t,attributes:n}){if(!e||e.series.length===0)return(0,W.jsx)(ES,{result:e});let r=80,i=0,a=20,o=n?.targets;if(o){let e=o.trim().split(/\s+/);e.length>=3?(r=WS(e[0],80),i=WS(e[1],0),a=WS(e[2],20)):e.length===2?(r=WS(e[0],80),a=WS(e[1],20),i=Math.max(0,100-(r+a))):e.length===1&&(r=WS(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=WS(e[0],80),i=WS(e[1],0),a=WS(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,W.jsxs)(`div`,{className:`flex flex-col justify-between h-full p-2 gap-4`,"data-testid":`zone-distribution-widget`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground px-0.5`,children:[(0,W.jsx)(`span`,{children:`Actual vs Target Distribution`}),(0,W.jsxs)(`span`,{className:`font-mono text-[10px]`,children:[`T: `,r,`/`,i,`/`,a,`%`]})]}),(0,W.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,W.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,W.jsxs)(`span`,{className:`text-[10px] font-bold text-white leading-none drop-shadow-sm`,children:[e.pct,`%`]})},e.key):null)})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:m.map(e=>{let t=e.pct-e.target;return(0,W.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,W.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 mb-1`,children:[(0,W.jsx)(`span`,{className:`w-2 h-2 rounded-full ${e.colorClass}`}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.label})]}),(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground mb-1.5`,children:e.sublabel}),(0,W.jsxs)(`div`,{className:`flex items-baseline justify-center gap-1`,children:[(0,W.jsxs)(`span`,{className:`text-lg font-bold tabular-nums text-foreground`,children:[e.pct,`%`]}),(0,W.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`/ `,e.target,`%`]})]}),e.target>0&&(0,W.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 KS({type:e,result:t,label:n,unit:r,params:i,attributes:a}){if(e!==``&&!pv(e))return(0,W.jsx)(JS,{message:hv(e)});let o=mv(e);return o===`table`&&t?.table?(0,W.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:(0,W.jsx)(QS,{table:t.table})}):o===`list`&&t?.parsed?.family===`find`?(0,W.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:(0,W.jsx)($S,{result:t})}):!t||t.parsed.error||`series`in t&&t.series.length===0?(0,W.jsx)(ES,{result:t}):(0,W.jsx)(`div`,{className:`w-full h-full min-h-[160px]`,children:qS(o,t,n,r,i,a)})}function qS(e,t,n,r,i,a){switch(e){case`value`:return(0,W.jsx)(DS,{result:t,label:n??``,unit:r});case`donut`:return(0,W.jsx)(XS,{result:t,unit:r,label:n});case`timeseries`:return(0,W.jsx)(PS,{result:t,unit:r});case`bar`:case`bars`:return(0,W.jsx)(FS,{result:t,unit:r});case`top`:case`toplist`:return(0,W.jsx)(zS,{result:t,unit:r});case`stacked`:case`stacked-bar`:return(0,W.jsx)(VS,{result:t,unit:r});case`goal-rings`:return(0,W.jsx)(HS,{result:t,attributes:a,params:i,label:n,unit:r});case`zone-distribution`:return(0,W.jsx)(GS,{result:t,attributes:a,params:i,unit:r});case`table`:return(0,W.jsx)(RS,{result:t,unit:r});default:return(Array.isArray(_v)?_v.includes(e):_v.has?.(e))?(0,W.jsx)(YS,{type:e}):(0,W.jsx)(RS,{result:t,unit:r})}}function JS({message:e}){return(0,W.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 YS({type:e}){return(0,W.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 XS({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:NS[t%NS.length]})).filter(e=>e.value>0),i=e.series[0]?.unit??t??``,a=r.length>0?`${n??`distribution`}: ${r.map(e=>`${e.name} ${AS(e.value)}${i}`).join(`, `)}`:`no data`;return(0,W.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,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`No data`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px] shrink-0`,children:(0,W.jsx)(ZS,{data:r,unit:i})}),(0,W.jsx)(`ul`,{className:`shrink-0 text-[10px] font-mono text-muted-foreground space-y-0.5`,"aria-hidden":`true`,children:r.map(e=>(0,W.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block size-2 rounded-sm`,style:{background:e.fill}}),(0,W.jsx)(`span`,{children:`${e.name} ${AS(e.value)}${i}`})]},e.name))})]})})}function ZS({data:e,unit:t}){return(0,W.jsx)(wt,{width:`100%`,height:`100%`,children:(0,W.jsxs)(Ye,{margin:{top:4,right:8,bottom:4,left:8},children:[(0,W.jsx)(Qt,{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,W.jsx)(ht,{fill:e.fill},e.name))}),(0,W.jsx)(En,{formatter:e=>`${AS(Number(e))}${t}`})]})})}function QS({table:e}){return(0,W.jsx)(`div`,{className:`h-full overflow-auto`,"data-testid":`tabular-table`,children:(0,W.jsxs)(`table`,{className:`w-full text-[11px] font-mono border-collapse`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{className:`border-b border-border text-muted-foreground text-left`,children:e.columns.map(e=>(0,W.jsxs)(`th`,{className:`py-1 px-2 font-medium`,children:[e.name,e.unit?` (${e.unit})`:``]},e.name))})}),(0,W.jsx)(`tbody`,{children:e.groups?e.groups.map(t=>(0,W.jsxs)(U.Fragment,{children:[(0,W.jsx)(`tr`,{className:`bg-muted/40 font-semibold border-b border-border/60`,children:(0,W.jsx)(`td`,{colSpan:e.columns.length,className:`py-1 px-2`,children:t.label})}),t.rows.map((t,n)=>(0,W.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/20`,children:e.columns.map(e=>(0,W.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,W.jsx)(`tr`,{className:`border-b border-border/40 hover:bg-muted/20`,children:e.columns.map(e=>(0,W.jsx)(`td`,{className:`py-1 px-2 whitespace-nowrap`,children:String(t[e.name]??``)},e.name))},n))})]})})}function $S({result:e}){let t=e.notes?.length?e.notes:e.blocks?.length?e.blocks:e.efforts?.length?e.efforts:e.runs??[];return(0,W.jsx)(`div`,{className:`h-full overflow-auto space-y-1`,"data-testid":`thing-list`,children:t.map((e,t)=>(0,W.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 eC({name:e,value:t,disabled:n,onCommit:r}){let[i,a]=(0,U.useState)(t);(0,U.useEffect)(()=>a(t),[t]);let o=()=>{i!==t&&r(i)};return(0,W.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 tC({tokens:e,values:t,onChange:n}){if(e.length===0)return null;let r=!n;return(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`span`,{className:`font-mono text-[11px] text-muted-foreground`,children:[`$`,e.name]}),e.isList?(0,W.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1`,children:e.values.map(t=>(0,W.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>{t!==i&&n?.(e.name,t)},className:xS(`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,W.jsx)(`span`,{className:`text-xs text-foreground font-mono`,children:i}):(0,W.jsx)(eC,{name:e.name,value:i,onCommit:t=>n?.(e.name,t)})]},e.name)})})}function nC(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(!ah(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 rC(e,t){let n=OS({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 iC(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=mv(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 aC=[{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 oC(e,t){return t.spanFull?e.spanFull===!0:!e.spanFull&&(e.spanCols??null)===(t.spanCols??null)}function sC({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:_}){let v=(0,U.useMemo)(()=>({...Sv(e.tokens),...i}),[e.tokens,i]),y=(0,U.useMemo)(()=>e.widgets.map(e=>{let{query:t,missing:n}=Tv(e.body,v),r={},i=new Set(n);for(let[t,n]of Object.entries(e.attributes)){let e=Tv(n,v);r[t]=e.query;for(let t of e.missing)i.add(t)}return{widget:e,query:t,missing:[...i],attributes:r}}),[e.widgets,v]),[b,x]=(0,U.useState)({}),[S,C]=(0,U.useState)(!0),w=(0,U.useMemo)(()=>y.map(e=>`${e.widget.key}:${e.query}`).join(`|`),[y]);return(0,U.useEffect)(()=>{let e=!1;C(!0);async function t(){let t={},i=[];for(let{widget:e,query:n,missing:r}of y){if(e.type!==``&&!pv(e.type)){t[e.key]={error:hv(e.type)};continue}if(r.length>0){t[e.key]={error:gv(r)};continue}let a=X(n);if(a.error){t[e.key]={error:a.error};continue}let o=mv(e.type);if(ah(a)){if(o!==`table`&&o!==`list`){t[e.key]={error:`content queries return things — use a table or list widget instead`};continue}}else if(!sh(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||(x(t),C(!1));return}let a=nC(n,{rangeStart:m,rangeEnd:h,preferredUnit:_,rollupEnsure:r});await Promise.all(i.map(async({widget:e,query:n,parsed:r})=>{try{let i=await new i_(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:rC(r,o),...s?{error:s}:{}}}catch(n){t[e.key]={error:n instanceof Error?n.message:String(n)}}})),e||(x(t),C(!1))}return t(),()=>{e=!0}},[w,y,n,r,m,h,_]),(0,W.jsxs)(`div`,{"data-testid":`dashboard-view`,children:[(0,W.jsx)(tC,{tokens:e.tokens,values:v,onChange:a}),S&&(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground mb-3`,children:`Loading widgets…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`,children:[y.map(({widget:e,query:n,attributes:r},i)=>{let a=b[e.key],m=o&&(s||u||d||f||p),h=(t??[]).filter(e=>e.beforeWidget===i);return(0,W.jsxs)(U.Fragment,{children:[h.map(e=>(0,W.jsx)(`div`,{id:e.id,className:xS(`col-span-full font-semibold text-foreground`,e.level<=2?`text-base mt-2`:`text-sm`),children:e.text},e.id)),(0,W.jsx)(SS,{id:`widget-${e.key}`,title:e.title??``,question:e.question??``,query:n,span:iC(e),onInspect:c?()=>c(e):void 0,onOpenInExplorer:l?()=>l(e,n):void 0,toolbar:m?(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,"data-testid":`widget-toolbar-${e.key}`,children:[s&&(0,W.jsx)(wS,{title:e.title??``,onClick:()=>s(e)}),f&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(CS,{label:`Move ${e.title||`widget`} up`,disabled:i===0,onClick:()=>f(e,-1),children:(0,W.jsx)(pr,{className:`w-3.5 h-3.5`})}),(0,W.jsx)(CS,{label:`Move ${e.title||`widget`} down`,disabled:i===y.length-1,onClick:()=>f(e,1),children:(0,W.jsx)(g,{className:`w-3.5 h-3.5`})})]}),p&&(0,W.jsx)(`div`,{className:`flex items-center gap-0 rounded bg-muted/60 p-0.5`,children:aC.map(t=>(0,W.jsx)(`button`,{type:`button`,"data-testid":`${t.testId}-${e.key}`,title:t.label,"aria-label":`${t.label} for ${e.title||`widget`}`,"aria-pressed":oC(e,t.span),disabled:oC(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,W.jsx)(Me,{className:`w-3 h-3`}):t.span.spanCols},t.testId))}),u&&(0,W.jsx)(CS,{label:`Duplicate ${e.title||`widget`}`,onClick:()=>u(e),children:(0,W.jsx)(ar,{className:`w-3.5 h-3.5`})}),d&&(0,W.jsx)(CS,{label:`Remove ${e.title||`widget`}`,onClick:()=>d(e),children:(0,W.jsx)(kt,{className:`w-3.5 h-3.5`})})]}):void 0,children:a?.error?(0,W.jsx)(JS,{message:a.error}):(0,W.jsx)(KS,{type:e.type,result:a?.result,label:e.title,unit:_,attributes:r})},e.key)]},e.key)}),(t??[]).filter(e=>e.beforeWidget>=y.length).map(e=>(0,W.jsx)(`div`,{id:e.id,className:xS(`col-span-full font-semibold text-foreground`,e.level<=2?`text-base mt-2`:`text-sm`),children:e.text},e.id))]})]})}function cC({weeks:e,onWeeksChange:t,className:n}){let[r,i]=(0,U.useState)(16),a=e??r,o=e=>{t?t(e):i(e)};return(0,W.jsx)(`div`,{className:xS(`inline-flex items-center gap-1.5 rounded-lg border border-border bg-card p-1`,n),children:[4,8,16].map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e),className:xS(`min-h-11 min-w-11 px-3 py-2 text-xs rounded-md transition-colors flex items-center justify-center font-medium`,a===e?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:[e,`w`]},e))})}var lC=`wod.analytics.unit`,uC=[`kg`,`lb`],dC=new Map,fC={getItem:e=>dC.get(e)??null,setItem:(e,t)=>{dC.set(e,t)},removeItem:e=>{dC.delete(e)}},pC=new Set;function mC(){for(let e of pC)e()}function hC(e){return e??fC}function gC(e){let t=hC(e).getItem(lC);return uC.includes(t??``)?t:`kg`}function _C(e){let t=hC(e),[n,r]=(0,U.useState)(()=>gC(t));(0,U.useEffect)(()=>{r(gC(t));let e=()=>r(gC(t));return pC.add(e),()=>{pC.delete(e)}},[t]);let i=(0,U.useCallback)(e=>{t.setItem(lC,e),r(e),mC()},[t]);return{unit:n,setUnit:i,toggleUnit:(0,U.useCallback)(()=>{i(n===`kg`?`lb`:`kg`)},[n,i])}}function vC(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 yC({className:e,unit:t,forced:n=!1,storage:r}){let{unit:i,setUnit:a}=_C(r),o=t??i;return(0,W.jsxs)(`div`,{"data-testid":`analytics-unit-preference`,className:xS(`inline-flex items-center gap-1 text-xs`,e),children:[(0,W.jsxs)(`div`,{className:xS(`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,W.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>a(`kg`),className:xS(`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,W.jsx)(`button`,{type:`button`,disabled:n,onClick:()=>a(`lb`),className:xS(`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,W.jsx)(`span`,{className:`text-[11px] text-muted-foreground italic`,children:`forced by note`})]})}function bC(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 xC(e){return e.toLocaleTimeString(`en-US`,{hour12:!1,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}var SC={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 CC({token:e}){return!e.visible||!e.label?null:e.renderKind===`comment`?(0,W.jsx)(`span`,{className:`text-[10px] italic text-muted-foreground`,title:e.tooltip,children:e.label}):(0,W.jsx)(`span`,{className:`rounded-md border px-1.5 py-0.5 text-[10px] font-medium leading-tight select-none ${SC[e.tone]??SC.unknown}`,title:e.tooltip,children:e.label})}function wC(e){return(0,W.jsx)(W.Fragment,{children:Io.presentGroup(Array.from(e),`runtime-badge`).map((e,t)=>(0,W.jsx)(CC,{token:e},t))})}var TC={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`},EC={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 DC(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 OC=`type:segment`,zee=[{label:`All`,query:``},{label:`Segments`,query:`type:segment`},{label:`Events`,query:`type:event`}];function Bee(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 Vee(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 Hee({presets:e,filter:t,onChange:n}){return(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,W.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 Uee({rows:e,outputs:t,t0:n,onClearFilter:r}){if(e.length===0){let e=t.length>0;return(0,W.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,W.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,W.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,W.jsx)(`ol`,{className:`flex flex-col`,"data-testid":`output-statements-cards`,children:e.map((t,r)=>{let i=DC(t.metrics),a=t.timeSpan?.started,o=t.timeSpan?.ended,s=o!==void 0&&a!==void 0?bC(o-a):`running`,c=a!==void 0&&n!==void 0?`+${bC(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,W.jsxs)(`li`,{className:`relative pb-3 pl-6 last:pb-0`,title:u,children:[r<e.length-1&&(0,W.jsx)(`span`,{"aria-hidden":!0,className:`absolute bottom-0 left-[5px] top-5 w-px bg-border/60`}),(0,W.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 ${EC[l]??EC.system}`}),(0,W.jsxs)(`article`,{className:`rounded-xl border border-border/60 bg-card px-3 py-2.5`,children:[(0,W.jsxs)(`header`,{className:`flex items-start justify-between gap-2 border-b border-border/40 pb-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-1`,children:[(0,W.jsx)(`span`,{className:`inline-block shrink-0 rounded px-1.5 py-0.2 text-[9px] font-bold uppercase tracking-wider ${TC[l]??TC.system}`,children:String(t.outputType??`system`).slice(0,4)}),wC(i.efforts)]}),(0,W.jsxs)(`div`,{className:`whitespace-nowrap text-right font-mono text-[11px] tabular-nums leading-tight`,children:[(0,W.jsx)(`span`,{className:`font-bold text-primary`,children:c}),` `,(0,W.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/80`,children:[`(`,s,`)`]})]})]}),f&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 pt-1.5`,children:wC(d)}),i.hints.length>0&&(0,W.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-1 border-t border-border/30 pt-1.5`,children:wC(i.hints)}),!f&&i.hints.length===0&&(0,W.jsx)(`p`,{className:`pt-1.5 text-[11px] text-muted-foreground/60`,children:`No metrics on this statement`})]})]},t.id??r)})})}function Wee({outputs:e,filter:t=``,timeOrigin:n,onClearFilter:r}){let i=n??(e.length>0?e[0].timeSpan?.started:void 0),a=(0,U.useMemo)(()=>t.trim()?e.filter(e=>Vee(e,t)):e,[e,t]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`sm:hidden`,children:(0,W.jsx)(Uee,{rows:a,outputs:e,t0:i,onClearFilter:r})}),(0,W.jsx)(`div`,{className:`hidden overflow-x-auto rounded-md border border-border/50 bg-background/40 sm:block`,children:(0,W.jsxs)(`table`,{className:`w-full text-left font-mono text-xs border-collapse`,"data-testid":`output-statements-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.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,W.jsx)(`th`,{className:`p-2 w-12 text-center`,children:`Type`}),(0,W.jsx)(`th`,{className:`p-2 min-w-[110px]`,children:`Time`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[140px]`,children:`🏃 Movement`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[60px]`,children:`🔢 Reps`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`💪 Load`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[80px]`,children:`🔄 Rounds`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`⏱️ Target`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[70px]`,children:`📏 Distance`}),(0,W.jsx)(`th`,{className:`p-2 font-sans min-w-[110px]`,children:`🏷️ Hints`})]})}),(0,W.jsx)(`tbody`,{className:`divide-y divide-border/40`,children:a.length===0?(0,W.jsx)(`tr`,{children:(0,W.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=DC(e.metrics),r=e.timeSpan?.started,a=e.timeSpan?.ended,o=a!==void 0&&r!==void 0?bC(a-r):`running`,s=xC(new Date(a??r??0)),c=r!==void 0&&i!==void 0?`+${bC(r-i)}`:`+00:00`,l=`#${e.id??t+1} · Block: ${e.sourceBlockKey||`session`}${e.completionReason?` · Reason: ${e.completionReason}`:``}`,u=e=>(0,W.jsx)(`td`,{className:`p-2 font-sans`,children:e.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:wC(e)}):(0,W.jsx)(`span`,{className:`text-muted-foreground/30 font-mono text-[11px] select-none`,children:`—`})});return(0,W.jsxs)(`tr`,{title:l,className:`hover:bg-muted/30 transition-colors group cursor-default`,children:[(0,W.jsx)(`td`,{className:`p-2 text-center whitespace-nowrap`,children:(0,W.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.2 text-[9px] font-bold uppercase tracking-wider ${TC[String(e.outputType)]??TC.system}`,title:`Type: ${e.outputType} | ${l}`,children:String(e.outputType??`system`).slice(0,4)})}),(0,W.jsxs)(`td`,{className:`p-2 whitespace-nowrap leading-tight`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 font-mono text-[11px]`,children:[(0,W.jsx)(`span`,{className:`font-bold text-primary tabular-nums`,children:c}),(0,W.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/80 tabular-nums`,children:[`(`,o,`)`]})]}),(0,W.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 Gee(e){return new Date(e.timestamp).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function kC({result:e,renderRunHeaderExtra:t,presets:n,filter:r,onFilterChange:i}){let[a,o]=(0,U.useState)(OC),s=r??a,c=i??o,l=(0,U.useMemo)(()=>(n??zee).map(Bee),[n]),u=(0,U.useMemo)(()=>e.runs.map(e=>({run:e,statements:e.events,startTime:e.events[0]?.timeSpan?.started??e.timestamp})),[e]);return u.length===0?(0,W.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,W.jsxs)(`div`,{"data-testid":`rows-table`,className:`flex flex-col gap-3`,children:[(0,W.jsx)(Hee,{presets:l,filter:s,onChange:c}),u.map(({run:e,statements:n,startTime:r})=>(0,W.jsxs)(`section`,{children:[u.length>1&&(0,W.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,W.jsx)(`span`,{children:Gee(e)}),t?.(e)]}),(0,W.jsx)(Wee,{outputs:n,filter:s,timeOrigin:r})]},e.resultId))]})}var Kee=Array.from({length:10},(e,t)=>t+1);function qee(e){if(e){for(let t of e)for(let e of t.metrics)if((e.type===q.SessionRPE||e.type===`session_rpe`)&&typeof e.value==`number`)return e.value}}function AC({resultId:e,events:t,readOnly:n,onCapture:r}){let i=qee(t),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1);if(n)return i===void 0?null:(0,W.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,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,"data-testid":`rpe-chip-${e}`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:xS(`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,W.jsx)(`span`,{className:`inline-flex gap-0.5`,"data-testid":`rpe-scale-${e}`,children:Kee.map(e=>(0,W.jsx)(`button`,{type:`button`,disabled:s,onClick:()=>void l(e),"aria-label":`RPE ${e}`,className:xS(`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 Jee({resultId:e,sessionResult:t,executor:n,onCaptureRpe:r,onCaptured:i}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(void 0),l=t.runs[0],u=l?.events[0]?.blockContentId,d=(0,U.useCallback)(async t=>{r&&await r(e,t),i?.()},[e,r,i]);(0,U.useEffect)(()=>{if(!a||!u||!n){c(void 0);return}let e=!1,t=X(`:session{block:${u}}`);if(ah(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,W.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`rows-results-chrome`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pb-2 border-b border-border/60 text-xs`,children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center rounded-md border border-border bg-muted/40 p-0.5`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!1),className:xS(`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,W.jsxs)(`button`,{type:`button`,disabled:!m,onClick:()=>o(!0),title:m?void 0:`No block content association for this run`,className:xS(`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,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.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,W.jsx)(AC,{resultId:e,events:l?.events,onCapture:d})]})]}),(0,W.jsx)(kC,{result:f,renderRunHeaderExtra:t=>t.resultId===e?(0,W.jsx)(AC,{resultId:e,events:t.events,onCapture:d}):(0,W.jsx)(AC,{resultId:t.resultId,events:t.events,readOnly:!0,onCapture:d})})]})}var jC=/^(\s*query\s*:\s*)(['"]?)(.*?)\2(\s*)$/;function Yee(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}function MC(e){let t=e.split(`
61
61
  `),n=[];for(let e=0;e<t.length;e++){let r=t[e].match(jC);r&&n.push({queryIndex:n.length,query:Yee(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 Xee(e,t,n=0){let r=MC(e).find(e=>e.queryIndex===n);if(!r)return e;let i=e.split(`
62
62
  `),a=i[r.lineIndex];if(r.isYamlKey){let e=a.match(jC);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(`
63
- `)}var NC=e(nr(),1);function PC(){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 FC(){let[e,t]=(0,U.useState)(PC);return(0,U.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let n=()=>t(PC());return e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),()=>{e.removeEventListener(`resize`,n),e.removeEventListener(`scroll`,n)}},[]),e}var IC=`a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])`;function LC({open:e,onClose:t,title:n,description:r,children:i,footer:a,presentation:o=`default`}){let s=(0,U.useId)(),c=(0,U.useId)(),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=FC(),f=o===`sheet`;if((0,U.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(),e.defaultPrevented||t();return}if(e.key!==`Tab`)return;let n=l.current;if(!n)return;let r=Array.from(n.querySelectorAll(IC));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,NC.createPortal)((0,W.jsx)(`div`,{className:xS(`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,W.jsxs)(`div`,{ref:l,role:`dialog`,"aria-modal":`true`,"aria-labelledby":s,"aria-describedby":r?c:void 0,tabIndex:-1,onKeyDown:p,className:xS(`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,W.jsx)(`div`,{"aria-hidden":!0,className:`flex justify-center pt-2 sm:hidden`,children:(0,W.jsx)(`div`,{className:`h-1 w-10 rounded-full bg-border`})}),(0,W.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,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`h2`,{id:s,className:`text-base font-semibold text-foreground`,children:n}),r&&(0,W.jsx)(`p`,{id:c,className:`mt-0.5 text-xs text-muted-foreground`,children:r})]}),(0,W.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,W.jsx)(dn,{className:`size-5 sm:size-4`})})]}),(0,W.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4 sm:px-6`,children:i}),a&&(0,W.jsx)(`div`,{className:xS(`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 RC=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 zC(e=RC){let t=(0,U.useSyncExternalStore)(t=>e.subscribe(t),()=>e.listSlots());return(0,U.useMemo)(()=>t,[t])}var BC=[{value:`find`,label:`Find`,description:`Find things: notes, blocks, efforts, sessions, tables`},{value:`aggregate`,label:`Measure`,description:`Measure numbers: aggregate a metric by dimensions`}],VC=vm.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{note:`Find notes across journal, notebooks 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`,notebook:`Find notebooks — every notebook, narrowed with notebook:`,page:`Find page placements — notes placed on pages, narrowed with page:`,tag:`Find tags — labels, types, and what they contribute`,equipment:`Find equipment notes — narrowed with equipment: or tags:`}[e]})),HC=ym.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{journal:`Daily journal notes`,notebooks:`Notebook notes`,guides:`Static guide pages`,playground:`Playground scratch pages`,dashboards:`Dashboard notes`,efforts:`Exercise library notes`,equipment:`Equipment library notes`}[e]})),UC=Om.map(e=>({value:e,label:e})),WC=[{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`}],GC=lm.map(e=>({value:e,label:e})),KC=[{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`}],qC=[...mm,...dm].map(e=>({value:e,label:e})),JC=[...cm,...sm,...hm].map(e=>({value:e,label:e})),YC=Am.map(e=>({value:e,label:e}));[...cm,...sm,...hm];var XC={source:!0,time:!0},ZC={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, notebooks…`,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:`},notebook:{label:`Notebook`,inputType:`select`,placeholder:`Pick notebook...`,placeholderText:`notebook: [id]`,icon:`📓`,description:`Filter by canonical notebook container id, e.g. notebook/journal, notebook/playground, notebook/guides`,prefix:`notebook:`},tag:{label:`Tag`,inputType:`select`,placeholder:`Pick tag...`,placeholderText:`tags: [tag]`,icon:`🏷`,description:`Filter by note/workout tags`,prefix:`tags:`},contributes:{label:`Contributes`,inputType:`select`,placeholder:`metric, tag, function…`,placeholderText:`contributes: [kind]`,icon:`❇`,description:`On :tag — what a tag contributes (metric, tag:<slug>, function:<name>) — never a label filter`,prefix:`contributes:`},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:`slug, date, true…`,placeholderText:`page: [slug|date]`,icon:`📄`,description:`On :page — the page slug or YYYY-MM-DD date; on :note — page-ness (true/false)`,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`},feed:{label:`Feed`,inputType:`select`,placeholder:`core, local, feed id…`,placeholderText:`feed: [id]`,icon:`📡`,description:`Filter by publishing feed source`,prefix:`feed:`},subscribed:{label:`Subscribed`,inputType:`select`,placeholder:`true, false`,placeholderText:`subscribed: [true|false]`,icon:`⭐`,description:`Filter by notebook subscription state`,prefix:`subscribed:`}},QC=`🧩`;function $C(e){let t=ZC[e];if(t)return t;let n=RC.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:QC,description:``}}function ew({clause:e,isActive:t,invalid:n=!1,invalidReason:r,onClick:i,onRemove:a,compact:o=!1,placeholderOverride:s}){let c=$C(e.type),l=!!(e.value&&e.value.trim()),u=XC[e.type]?`Clear ${c.label}`:`Remove ${c.label}`;return(0,W.jsxs)(`span`,{className:`relative inline-flex items-center`,children:[(0,W.jsxs)(`button`,{type:`button`,"data-testid":`token-slot-${e.type}`,onClick:i,"aria-pressed":t||void 0,title:n?r:void 0,className:xS(`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,W.jsx)(`span`,{className:`text-[10px] opacity-70`,children:c.icon}),t&&(0,W.jsxs)(`span`,{className:`font-semibold text-[11px] opacity-90`,children:[c.label,`:`]}),(0,W.jsx)(`span`,{"data-testid":`token-slot-value-${e.type}`,className:xS(`truncate max-w-44`,!l&&`italic opacity-60`),children:l?e.value:s||c.placeholder})]}),a&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`token-slot-remove-${e.type}`,onClick:a,"aria-label":u,title:u,className:xS(`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,W.jsx)(dn,{className:`w-3 h-3`})})]})}function tw(e,t){return e?`${e}-option-${t}`:void 0}function nw({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=$C(e.type),h=e.value.trim(),g=t.length,_=n,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,W.jsxs)(`div`,{className:`min-w-0 pt-0.5`,"data-testid":`wql-clause-editor`,"data-clause-type":e.type,children:[r&&_.length>0&&(0,W.jsxs)(`div`,{className:`border-b border-border/50 px-2 pb-1.5`,children:[(0,W.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,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-primary/15 text-primary text-xs sm:text-[10px] font-mono min-h-8 sm:min-h-0`,children:[(0,W.jsx)(`span`,{className:`max-w-40 truncate`,children:e}),p&&_.length>1&&(0,W.jsxs)(W.Fragment,{children:[(0,W.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,W.jsx)(w,{className:`w-3 h-3`})}),(0,W.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,W.jsx)(b,{className:`w-3 h-3`})})]}),r&&(0,W.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,W.jsx)(dn,{className:`w-2.5 h-2.5`})})]},e))}),r&&(0,W.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,W.jsxs)(`div`,{id:d,role:`listbox`,"aria-label":`${m.label} options`,"aria-multiselectable":r||void 0,className:`max-h-[min(38svh,16rem)] sm:max-h-36 overflow-y-auto overscroll-contain touch-pan-y flex flex-col gap-0.5 pt-1`,children:[a&&(0,W.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,id:tw(d,g),"data-active":s===g||void 0,onMouseEnter:()=>c(g),onClick:()=>u(i),"data-testid":`clause-commit-typed-${e.type}`,className:xS(`flex items-center justify-between px-2.5 py-2 sm:py-1.5 text-sm sm:text-xs text-left rounded-md hover:bg-muted/60 transition-colors font-mono min-h-11 sm:min-h-0`,s===g&&`bg-muted/70 ring-1 ring-border`),children:[(0,W.jsxs)(`span`,{className:`truncate`,children:[`Search for `,(0,W.jsxs)(`span`,{className:`font-semibold text-foreground`,children:[`“`,i,`”`]})]}),(0,W.jsx)(`span`,{className:`text-muted-foreground/60 ml-1 shrink-0 font-sans text-xs`,children:`↵`})]}),t.map((t,i)=>{let a=n.includes(t.value)||!r&&h===t.value,o=i===s;return(0,W.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":a,id:tw(d,i),"data-active":o||void 0,"data-testid":`wql-clause-editor-${e.type}-opt-${i}`,onMouseEnter:()=>c(i),onClick:()=>l(t.value),className:xS(`flex items-center justify-between px-2.5 py-2 sm:py-1.5 text-sm sm:text-xs text-left rounded-md transition-colors min-h-11 sm:min-h-0`,o?`bg-primary/10 text-foreground font-medium`:`hover:bg-muted/60 text-muted-foreground hover:text-foreground`,a&&`text-primary font-medium`),children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:t.label}),t.label!==t.value&&(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`font-mono text-[11px] text-muted-foreground/70 shrink-0`,children:t.value})]}),a&&(0,W.jsx)(lr,{className:`w-3.5 h-3.5 text-primary shrink-0 ml-1.5`})]},t.value)}),o&&(0,W.jsx)(`div`,{className:`px-2.5 py-2 text-sm sm:text-xs text-muted-foreground italic`,children:o})]}),(t.length>0||a)&&(0,W.jsxs)(`div`,{className:`hidden sm:flex items-center justify-between px-2 pt-2 text-[10px] text-muted-foreground/70 font-mono border-t border-border/40 mt-1`,children:[(0,W.jsxs)(`span`,{children:[`↑↓ choose · Enter `,r?`toggle`:`set`]}),(0,W.jsx)(`span`,{children:`Tab next segment · Esc close`})]}),r&&f&&(0,W.jsx)(`div`,{className:`pt-2 flex justify-end`,children:(0,W.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-10 sm:min-h-7 px-3 rounded-md bg-primary text-primary-foreground 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 rw={tag:!0,notebook:!0,contributes:!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},iw={kind:BC,target:VC,source:HC,plane:UC,time:WC,agg:GC,rollup:KC,groupby:qC,metric:JC,unit:YC,intensity:gm.map(e=>({value:e,label:e})),subscribed:[{value:`true`,label:`Subscribed`},{value:`false`,label:`All / unsubscribed`}]};function aw(e){let t=new Set;for(let n of e){let e=S_(n.sourceId);e&&t.add(e)}return Array.from(t).sort((e,t)=>e.localeCompare(t))}function ow(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 sw(e,t){return uw([...e,...t].map(e=>({value:e.trim()})),[]).map(e=>e.value)}var cw=[`wod`,`query`,`widget`,`embed`];function lw(e){return e.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}))}function uw(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 dw={discipline:{load:async()=>lw(Gc),cache:`static`,open:!1,emptyText:`No disciplines available`},notebook:{load:async()=>[],cache:`static`,open:!1,emptyText:`No notebooks in the static corpus`},intensity:{load:async()=>lw(gm),cache:`static`,open:!1,emptyText:`No intensity tiers available`},type:{load:async()=>lw(cw),cache:`static`,open:!1,emptyText:`No indexed block types yet`},contributes:{load:async()=>lw([`metric`,`tag`,`function`]),cache:`static`,open:!0,emptyText:`metric, tag, or function`}},fw={...dw},pw=new Set,mw=Object.keys(fw);function hw(e){return pw.add(e),()=>{pw.delete(e)}}function gw(){return(0,U.useSyncExternalStore)(hw,()=>mw)}function _w(e,t){t?fw[e]=t:dw[e]?fw[e]=dw[e]:delete fw[e],xw(e),mw=Object.keys(fw);for(let e of pw)e()}function vw(e){return fw[e]}var yw=new Map;async function bw(e){let t=vw(e);if(!t)return[];let n=Date.now(),r=yw.get(e);if(r&&r.expiresAt>n)return r.items;try{let r=uw(await t.load(),[]),i=typeof t.cache==`object`?t.cache.ttlMs:1/0;return yw.set(e,{items:r,expiresAt:n+i}),r}catch{return r?r.items:[]}}function xw(e){e?yw.delete(e):yw.clear()}function Sw(e){let t=vw(e),[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!!t);return(0,U.useEffect)(()=>{if(!t){r([]),a(!1);return}let n=!1;return a(!0),bw(e).then(e=>{n||(r(e),a(!1))}),()=>{n=!0}},[e,t]),{items:n,loading:i,binding:t}}function Cw(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 ww(e,t,n){let r=e?.type??``,{items:i,loading:a,binding:o}=Sw(r),s=iw[r],c=r in rw||!!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=Cw(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 ${$C(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 Tw(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 Ew(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 Dw(e){return e.kind===`dataset`?e.name:`target`in e.query?`:${e.query.target}`:`:${e.query.agg}`}function Ow(e){let t=e.source.kind===`query`?e.source.query:void 0;return{source:Dw(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 kw({label:e,value:t,testId:n,warnTitle:r}){let i=n.startsWith(`diag-`)?n.replace(`diag-`,`wql-`):n;return(0,W.jsxs)(`span`,{"data-testid":n,title:r,className:`inline-flex items-center gap-1 whitespace-nowrap`,children:[(0,W.jsxs)(`span`,{className:`opacity-60`,children:[e,`:`]}),(0,W.jsx)(`span`,{"data-testid":i,className:xS(`font-semibold`,r&&`text-signal-caution underline decoration-wavy underline-offset-2`),children:t})]})}function Aw({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(sh(c)?[]:Wm(c.family===`find`?c.target:``,c.family)),p=sh(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,W.jsxs)(`div`,{"data-testid":`wql-diagnostics-strip`,"aria-live":`polite`,className:xS(`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-border/60 bg-muted/20 text-muted-foreground`:`border-b border-destructive/40 bg-destructive/5 text-destructive`:xS(`rounded-lg border`,s?`bg-muted/30 border-border text-muted-foreground`:`bg-destructive/5 border-destructive/30 text-destructive`),o),children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,W.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,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(er,{className:`w-3.5 h-3.5 text-signal-caution shrink-0`}),(0,W.jsx)(`span`,{className:`text-signal-caution`,children:`Warning`}),(0,W.jsx)(`span`,{className:`opacity-80`,children:h})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(vr,{className:`w-3.5 h-3.5 text-signal-positive shrink-0`}),(0,W.jsx)(`span`,{className:`text-signal-positive`,children:`Valid`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(yt,{className:`w-3.5 h-3.5 text-destructive shrink-0`}),(0,W.jsx)(`span`,{children:`Invalid`}),(0,W.jsxs)(`span`,{children:[t?`${t}: `:``,l||`Syntax error`]})]})}),!r&&s&&ah(c)&&(0,W.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=Tw(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`target`,value:e.target,testId:`diag-summary-target`}),(0,W.jsx)(kw,{label:`scope`,value:e.scope,testId:`diag-summary-scope`}),e.timeWindow&&(0,W.jsx)(kw,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`}),e.groupBy&&(0,W.jsx)(kw,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.hasJoin&&(0,W.jsx)(`span`,{"data-testid":`diag-summary-join`,className:`text-primary font-semibold`,children:`+join`})]})})()}),!r&&s&&oh(c)&&(0,W.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=Ew(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`agg`,value:e.agg,testId:`diag-summary-agg`}),e.metric&&(0,W.jsx)(kw,{label:`metric`,value:e.metric,testId:`diag-summary-metric`}),e.groupBy&&(0,W.jsx)(kw,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.rollup&&(0,W.jsx)(kw,{label:`every`,value:e.rollup,testId:`diag-summary-rollup`}),e.unit&&(0,W.jsx)(kw,{label:`as`,value:e.unit,testId:`diag-summary-unit`})]})})()}),!r&&s&&sh(c)&&(0,W.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=Ow(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`source`,value:e.source,testId:`diag-summary-source`}),e.functions.map((e,t)=>(0,W.jsx)(kw,{label:`fn ${t+1}`,value:e,testId:`diag-summary-fn-${t+1}`},t)),e.sink&&(0,W.jsx)(kw,{label:`sink`,value:e.sink,testId:`diag-summary-sink`}),e.timeWindow&&(0,W.jsx)(kw,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`})]})})()}),s&&n&&(0,W.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,W.jsxs)(`span`,{children:[n.matched,` matched of `,n.selected]}):(0,W.jsxs)(`span`,{children:[n.selected,` selected → `,n.aggregated,` aggregated (`,n.groups,` series)`]})})]}),a&&(0,W.jsx)(`div`,{className:`flex items-center gap-1.5 ml-auto`,children:a})]})}function jw(e,t,n,r=150){let[i,a]=(0,U.useState)(void 0),o=(0,U.useRef)(void 0),s=(0,U.useRef)(n);s.current=n;let c=t&&!e.error&&n!==void 0&&!sh(e);return(0,U.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(ah(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 Mw={tags:`tag`},Nw={tag:`tags`};function Pw(e){return Array.isArray(e)?e.map(Pw):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,Pw(t)])):e}function Fw(e){if(e.error)return!1;let t=X(Qh(e));return!t.error&&JSON.stringify(Pw(e))===JSON.stringify(Pw(t))}function Iw(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 Lw(e){let t=Qh(e),n=Iw(t);return n.valid&&!Fw(e)?Iw(t,`This value cannot be represented losslessly in WQL.`):n}function Rw(e,t,n){return{id:`c-${e}`,type:e,...$C(e),value:t,...n}}function zw(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 Bw(e){if(sh(e)||e.error||!Fw(e)||e.filters.some(e=>e.values.some(e=>e.value.includes(`|`)||!e.wildcard&&e.value.endsWith(`*`))))return null;let t=[Rw(`kind`,e.family)];e.family===`find`?t.push(Rw(`target`,e.target)):t.push(Rw(`agg`,e.agg),Rw(`metric`,e.metric)),(e.window||Hm(e.family===`find`?e.target:``,e.family).has(`time`))&&t.push(Rw(`time`,zw(e))),e.filters.forEach((e,n)=>{let r=e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`),i=RC.getAllSlots().find(t=>{if(!t.parseValue)return!1;let n=t.parseValue(r);return n!==void 0&&t.wqlGenerator(n)===Vw(e)})?.type??Mw[e.key]??e.key;t.push(Rw(i,r,{id:`c-filter-${n}`,filterIndex:n,negate:e.negate}))}),e.groupBy?.length&&t.push(Rw(`groupby`,e.groupBy.join(`|`))),e.family===`aggregate`&&e.rollup&&t.push(Rw(`rollup`,`${e.rollup.size}${e.rollup.unit}`)),e.displayUnit&&t.push(Rw(`unit`,e.displayUnit));let n=Qh(e);return e.join&&t.push(Rw(`where`,n.split(` where `)[1]?.split(` | `)[0]??``)),e.family===`find`&&e.pipes&&t.push(Rw(`pipes`,n.split(` | `).slice(1).join(` | `))),t}function Vw(e){return Qh({family:`find`,raw:``,target:`note`,sourceScope:[...wm],filters:[e]}).replace(/^[^{]*\{/,``).replace(/\}$/,``)}function Hw(e,t,n){let r=RC.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||!ah(n)?void 0:n.filters[0]}let i={key:Nw[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{${Vw(i)}}`);return!a.error&&ah(a)&&a.filters.length===1&&JSON.stringify(Pw(a.filters[0]))===JSON.stringify(Pw(i))?a.filters[0]:void 0}function Uw(e,t,n){let r=Iw(e);if(!r.valid)return r;let i=r.ast;if(sh(i))return Iw(e,`Pipelines are edited as WQL text — structured pills cannot change a stage without flattening it.`);if(!Fw(i))return Iw(e,`This query requires Edit WQL to preserve every clause.`);let a=n?.trim()??``;if(t.type===`kind`||t.type===`target`)return Ww(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`)?Hw(t.type,a,t.negate??!1):void 0;if(a&&!n&&(t.type!==`source`||a!==`all`))return Iw(e,`Invalid ${$C(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 Lw({...i,filters:o})}if(t.type===`time`){if(!a||a===`all`)return Lw({...i,window:void 0});let t=X(`:note ${/^(last|from)\b/.test(a)?a:`last ${a}`}`);return t.error||!ah(t)||!t.window?Iw(e,t.error??`Invalid time window`):Lw({...i,window:t.window})}if(t.type===`groupby`)return Lw({...i,groupBy:[...new Set(a.split(`|`).filter(Boolean))]});if(t.type===`unit`)return Lw({...i,displayUnit:a||void 0});if(t.type===`agg`&&i.family===`aggregate`)return Iw(Qh(i).replace(/^[^:]+:/,`${a}:`));if(t.type===`metric`&&i.family===`aggregate`)return Lw({...i,metric:a});if(t.type===`rollup`&&i.family===`aggregate`){if(!a)return Lw({...i,rollup:void 0});let t=X(`sum:tis{} by {week}.rollup(${a})`);return t.error||t.family!==`aggregate`||!t.rollup?Iw(e,t.error??`Invalid bucket width`):Lw({...i,rollup:t.rollup})}if(t.type===`where`){let e=Qh({...i,join:void 0});return Iw(a?`${e} where ${a}`:e)}if(t.type===`pipes`&&i.family===`find`){let e=Qh({...i,pipes:void 0});return Iw(a?`${e} | ${a}`:e)}return r}function Ww(e,t,n){let r=Iw(e),i=r.ast;if(!r.valid)return{draft:r,removed:[]};if(sh(i))return{draft:Iw(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=Hm(o,a===`aggregate`?`aggregate`:`find`),c=[],l=i.filters.filter(e=>{let t=(a===`aggregate`||o===`segment`||o===`event`)&&!(e.key in ZC)&&!!vw(e.key),n=s.has(Mw[e.key]??e.key)||t||!!RC.getSlot(e.key);return n||c.push(Vw(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:Lw({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:Lw({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 Gw(e,t=``){if(!t.trim())return Iw(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 Iw(t);let r=Iw(e);if(!r.valid||sh(r.ast))return Iw(t);if(!Fw(r.ast))return Iw(e,`Use Edit WQL for this query.`);if(/^(last|from)\b/.test(n)){let e=X(`:note ${n}`);return e.error||!ah(e)||!e.window?Iw(t,e.error??`Invalid time window`):Lw({...r.ast,window:e.window})}if(/^!?[\w-]+:/.test(n)){let e=X(`:note{${n}}`);if(e.error||!ah(e)||!e.filters.length)return Iw(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 Lw({...r.ast,filters:i})}if(/[{}]/.test(n))return Iw(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,Lw({...r.ast,filters:a})}var Kw=$e(),qw=Ar.theme({".cm-tooltip":{backgroundColor:`hsl(var(--popover))`,color:`hsl(var(--popover-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`var(--radius-md)`,boxShadow:`0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`,fontFamily:`var(--font-sans, Inter, system-ui, sans-serif)`,fontSize:`14px`,zIndex:`40`},".cm-tooltip-autocomplete":{overflow:`hidden`,minWidth:`min(18rem, calc(100vw - 2rem))`,maxWidth:`calc(100vw - 2rem)`},".cm-tooltip-autocomplete > ul":{padding:`4px`,maxHeight:`min(45svh, 20rem)`,overscrollBehavior:`contain`,fontFamily:`inherit`,fontSize:`inherit`},".cm-tooltip-autocomplete > ul > li":{display:`flex`,alignItems:`center`,gap:`8px`,minHeight:`40px`,padding:`8px 10px`,borderRadius:`var(--radius-sm)`,lineHeight:`20px`},".cm-tooltip-autocomplete > ul > li:hover":{backgroundColor:`hsl(var(--muted) / 0.6)`},'.cm-tooltip-autocomplete > ul > li[aria-selected="true"]':{backgroundColor:`hsl(var(--primary) / 0.15)`,fontWeight:`600`},".cm-completionLabel":{fontFamily:`var(--font-mono, ui-monospace, SFMono-Regular, monospace)`,fontWeight:`500`,overflow:`hidden`,textOverflow:`ellipsis`},".cm-completionMatchedText":{textDecoration:`none`,fontWeight:`700`,color:`hsl(var(--primary))`},".cm-completionDetail":{marginLeft:`auto`,paddingLeft:`12px`,fontFamily:`var(--font-sans, Inter, system-ui, sans-serif)`,fontSize:`12px`,fontStyle:`normal`,color:`hsl(var(--muted-foreground))`},"@media (pointer: coarse)":{".cm-tooltip-autocomplete > ul > li":{minHeight:`48px`}}}),Jw={search:(0,Kw.renderToStaticMarkup)((0,U.createElement)(jn,{size:16})),metric:(0,Kw.renderToStaticMarkup)((0,U.createElement)(Ie,{size:16})),filter:(0,Kw.renderToStaticMarkup)((0,U.createElement)(qt,{size:16})),value:(0,Kw.renderToStaticMarkup)((0,U.createElement)(tee,{size:16}))},Yw={Head:!0,Filter:!0,TagValue:!0,Rollup:!0},Xw=Xr.define(),Zw=si.define({create:()=>Vr.none,update(e,t){let n=e.map(t.changes);for(let e of t.effects){if(!e.is(Xw))continue;let t=e.value;return!t||t.from>=t.to?Vr.none:Vr.set([Vr.mark({class:`wql-active-segment`}).range(t.from,t.to)])}return n},provide:e=>Ar.decorations.from(e)});function Qw(e,t){if(!t)return;let n,r=Lr(e);if(t.filterIndex!==void 0){let e=0;return r.iterate({enter:r=>{if(r.name===`Filter`){if(e===t.filterIndex)return n={from:r.from,to:r.to},!1;e++}return!0}}),n}if([`kind`,`target`,`agg`,`metric`].includes(t.type))return r.iterate({enter:e=>e.name!==`Head`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`groupby`)return r.iterate({enter:e=>e.name!==`GroupBy`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`rollup`)return r.iterate({enter:e=>e.name!==`Rollup`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`time`){let t=e.doc.toString(),n=/\b(last\s+\d+[dw]|from\s+\S+(?:\s+to\s+\S+)?)/i.exec(t);if(n)return{from:n.index,to:n.index+n[0].length}}}function $w(e){let t=[];return Lr(e).iterate({enter:e=>((Yw[e.name]||e.name===`Word`&&[`GroupBy`,`Dimension`].includes(e.node.parent?.name??``))&&t.push(e.from),!0)}),t.sort((e,t)=>e-t)}function eT(e,t,n){if(!n)return;let r=Lr(e.state).resolveInner(t,1);for(;r.parent&&![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(r.name);)r=r.parent;if(![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(r.name))return;let i;r.name===`Filter`&&(i=0,Lr(e.state).iterate({enter:e=>{if(e.name===`Filter`){if(e.from===r.from)return!1;e.from<r.from&&(i+=1)}return!0}}));let a=e.state.sliceDoc(r.from,r.to);if(r.name===`Head`){let n=e.state.doc.lineAt(t),r=Array.from(n.text.matchAll(/[\w.*-]+/g)).find(e=>n.from+e.index<=t&&t<=n.from+e.index+e[0].length);r&&(a=r[0])}n({node:r.name,filterIndex:i,from:r.from,to:r.to,text:a})}function tT(e,t,n){let r=e.state.selection.main.head,i=$w(e.state),a=t>0?i.find(e=>e>r):[...i].reverse().find(e=>e<r);return a!==void 0&&(e.dispatch({selection:{anchor:a},scrollIntoView:!0}),eT(e,a,n),!0)}function nT(e){let t=e.state.doc.toString();if(!t.trim())return[];let n=X(t);if(n.error){let r=[];return Lr(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(sh(n))return[];let r=[];if(Lr(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(Gm(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 rT(e,t,n){return[{key:`Mod-Enter`,run:()=>(e(),!0)},{key:`Ctrl-Space`,run:ii},{key:`ArrowDown`,run:e=>zr(e.state)===`active`&&Er(!0)(e)},{key:`ArrowUp`,run:e=>zr(e.state)===`active`&&Er(!1)(e)},{key:`PageUp`,run:e=>zr(e.state)===`active`?Er(!1,`page`)(e):Zr(e)},{key:`PageDown`,run:e=>zr(e.state)===`active`?Er(!0,`page`)(e):xi(e)},{key:`Home`,run:e=>zr(e.state)===`active`?(e.dispatch({effects:Pr(0)}),!0):oi(e)},{key:`End`,run:e=>zr(e.state)===`active`?(e.dispatch({effects:Pr(Dr(e.state).length-1)}),!0):see(e)},{key:`Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Ei(e);return tT(e,1,n)||t}},{key:`Shift-Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Ei(e);return tT(e,-1,n)||t}},{key:`Enter`,run:t=>t.compositionStarted?!1:Ei(t)?!0:(Tr(t),e(),!0)},{key:`Escape`,run:e=>e.compositionStarted||Tr(e)||t()||(e.contentDOM.blur(),!0)},...ci]}function iT({value:e,onChange:t,onSubmit:n,onEscape:r,placeholder:i,autoFocus:a=!1,dense:o=!1,onSlotActivate:s,activeRange:c,activeClause:l,className:u}){let d=(0,U.useRef)(null),f=(0,U.useRef)(void 0),p=(0,U.useRef)({onChange:t,onSubmit:n,onEscape:r,onSlotActivate:s});p.current={onChange:t,onSubmit:n,onEscape:r,onSlotActivate:s};let m=(0,U.useRef)(!1),h=(0,U.useRef)(e);return(0,U.useEffect)(()=>{if(!d.current)return;let e=kg({values:async e=>(await bw(e===`tags`?`tag`:e)).map(e=>({label:e.value,detail:e.label,type:`constant`}))}),t=new Ar({parent:d.current,state:ri.create({doc:h.current,extensions:[eg,jr(Ag),pi(),Ar.lineWrapping,Zw,...i?[bi(i)]:[],Ar.contentAttributes.of({"aria-label":`WQL`,"data-testid":`wql-text-input`}),Yr({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`?Jw.search:e.type===`keyword`||e.type===`variable`?Jw.metric:e.type===`property`?Jw.filter:Jw.value,t}}]}),_i(nT),Cr.of(rT(()=>p.current.onSubmit(),()=>p.current.onEscape(),e=>p.current.onSlotActivate?.(e))),Ar.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=Lr(t.state).resolveInner(r,-1);for(;a.parent&&![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(a.name);)a=a.parent;if(![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(a.name))return!1;p.current.onSlotActivate||t.dispatch({selection:{anchor:n,head:r}})}return p.current.onSlotActivate?(Tr(t),eT(t,n,e=>p.current.onSlotActivate?.(e))):ii(t),!1},keydown:(e,t)=>e.isComposing||t.compositionStarted?!0:((e.key===`Enter`||e.key===`Escape`||[`ArrowDown`,`ArrowUp`].includes(e.key)&&zr(t.state)===`active`)&&e.stopPropagation(),!1)}),Ar.updateListener.of(e=>{e.docChanged&&!m.current&&p.current.onChange(e.state.doc.toString())}),Ar.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))`},".wql-completion-icon":{display:`inline-flex`,flexShrink:`0`,color:`hsl(var(--primary))`},".wql-active-segment":{backgroundColor:`hsl(var(--primary) / 0.16)`,boxShadow:`inset 0 -2px hsl(var(--primary))`,borderRadius:`4px`,padding:`1px 2px`,margin:`0 -2px`,fontWeight:`600`}}),qw]})});return f.current=t,a&&t.focus(),()=>{t.destroy(),f.current=void 0}},[a,i,o]),(0,U.useEffect)(()=>{let t=f.current;!t||t.state.doc.toString()===e||(m.current=!0,t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}),m.current=!1)},[e]),(0,U.useEffect)(()=>{let e=f.current;if(!e)return;let t=c??Qw(e.state,l);e.dispatch({effects:Xw.of(t??null)})},[c,l,e]),(0,W.jsx)(`div`,{ref:d,className:u??`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 aT({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,segmentEditRequest:b}){let[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)(t??e??`:note`),[T,E]=(0,U.useState)(``),[D,O]=(0,U.useState)({kind:`closed`}),[k,A]=(0,U.useState)(``),[j,M]=(0,U.useState)(-1),[N,P]=(0,U.useState)(),[F,I]=(0,U.useState)(),[L,R]=(0,U.useState)(),ee=(0,U.useRef)(null),z=(0,U.useRef)(null),te=(0,U.useRef)(null),ne=(0,U.useRef)(t??e??`:note`),re=(0,U.useRef)(t),ie=(0,U.useRef)(Gw(C)),ae=(0,U.useRef)({onQueryChange:n,onValidationChange:r,onAstChange:i});ae.current={onQueryChange:n,onValidationChange:r,onAstChange:i};let oe=`${(0,U.useId)()}-options`,se=zC(),ce=gw(),le=t!==void 0&&t!==re.current&&t!==ne.current,B=(0,U.useMemo)(()=>Gw(le?t:C,le?``:T),[C,T,le,t]);ie.current=B;let V=(0,U.useMemo)(()=>Bw(B.ast)??[],[B.ast]),ue=B.valid&&Bw(B.ast)!==null,de=new Set(h),fe=D.kind===`value`?D.clause:void 0,pe=fe?RC.getSlot(fe.type):void 0,me=ww(fe,k,{supportedValues:fe?.type===`groupby`&&B.ast.family===`find`&&[`note`,`block`].includes(B.ast.target)?jm:void 0}),he=[...me.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)}),ge=sh(B.ast)?new Set:Hm(B.ast.family===`find`?B.ast.target:``,B.ast.family),_e=sh(B.ast)?void 0:B.ast.window,ve=()=>{let e=ie.current.ast;return sh(e)?void 0:e.window},ye=B.ast.family===`aggregate`||B.ast.family===`find`&&[`segment`,`event`].includes(B.ast.target)?ce.filter(e=>!(e in ZC)):[],be=[...Object.keys(ZC),...ye,...se.map(e=>e.type)].filter((e,t,n)=>n.indexOf(e)===t&&!de.has(e)).filter(e=>[`kind`,`target`].includes(e)||ge.has(e)||ye.includes(e)||se.some(t=>t.type===e)).filter(e=>e!==`target`||B.ast.family===`find`).filter(e=>e!==`pipes`&&e!==`where`).filter(e=>e.toLowerCase().includes(T.toLowerCase())||$C(e).label.toLowerCase().includes(T.toLowerCase())).sort((e,t)=>Number(t.startsWith(T))-Number(e.startsWith(T))),xe=D.kind===`closed`&&T.trim()!==``&&be.length>0&&!/[{}:]/.test(T),Se=xe||ge.has(`text`),Ce=D.kind===`value`?me.filteredItems.length+Number(me.canCommitTyped):be.length+Number(Se),we=jw(B.ast,B.valid&&!N,d?void 0:u,f),Te=d??we;(0,U.useEffect)(()=>{t!==void 0&&t!==re.current&&(re.current=t,t!==ne.current&&(ne.current=t,w(t),E(``),O({kind:`closed`}),A(``),M(-1),P(void 0),R(void 0)))},[t]),(0,U.useEffect)(()=>{ae.current.onValidationChange?.({valid:B.valid&&!N&&!L,error:N??B.error??(L?`Confirm or cancel the query change`:void 0)}),ae.current.onAstChange?.(B.ast)},[B,N,L]),(0,U.useEffect)(()=>{let e=window.matchMedia?.(`(min-width: 640px)`);if(!e)return;let t=()=>S(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,U.useEffect)(()=>{_&&ee.current?.focus()},[_]),(0,U.useEffect)(()=>{D.kind===`value`&&z.current?.focus()},[D]),(0,U.useEffect)(()=>{j>=0&&document.getElementById(`${oe}-option-${j}`)?.scrollIntoView?.({block:`nearest`})},[j,oe]);let Ee=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)},De=e=>{w(e.wql),E(``),P(void 0),Ee(e)},Oe=()=>{O({kind:`closed`}),A(``),M(-1),P(void 0),te.current?.isConnected?te.current.focus():ee.current?.focus()},ke=(e,t)=>{T&&ie.current.valid&&De(ie.current),te.current=document.activeElement instanceof HTMLElement?document.activeElement:null,e.type===`where`||e.type===`pipes`?(O({kind:`wql`}),De(ie.current)):(O({kind:`value`,clause:e,range:t}),A(``)),M(-1),P(void 0)},Ae=e=>{let t=V.find(t=>t.type===e);T&&De(Gw(C)),ke(t??{id:`new-${e}`,type:e,...$C(e),value:``})},je=(0,U.useRef)(Ae);je.current=Ae,(0,U.useEffect)(()=>{b&&je.current(b.type)},[b]);let Me=e=>{let t=e.filterIndex===void 0?e.node===`GroupBy`?V.find(e=>e.type===`groupby`):e.node===`Rollup`?V.find(e=>e.type===`rollup`):e.node===`Head`?V.find(t=>[`kind`,`target`,`agg`,`metric`].includes(t.type)&&t.value===e.text):void 0:V.find(t=>t.filterIndex===e.filterIndex);t&&ke(t,{from:e.from,to:e.to})},Ne=e=>{if(D.kind!==`value`)return!1;let t=V.filter(e=>!de.has(e.type)),n=t[t.findIndex(e=>e.id===D.clause.id)+e];return n?(ke(n),!0):!1},Pe=(e,t)=>{if(e.type===`kind`||e.type===`target`){let n=Ww(ie.current.wql,e.type,t??``);if(!n.draft.valid){P(n.draft.error);return}if(n.removed.length){R(n);return}De(n.draft),Oe();return}let n=Uw(ie.current.wql,e,t);if(!n.valid){P(n.error);return}if(De(n),D.kind===`value`){let r=e.filterIndex,i=Bw(n.ast)?.find(n=>r===void 0?n.type===e.type:n.filterIndex===r&&!!t);O({kind:`value`,clause:i??{...e,value:t??``,filterIndex:void 0}})}},Fe=e=>{if(D.kind===`value`){if(me.isMulti){let t=me.selectedValues,n=D.clause.value!==``&&D.clause.value.split(`|`).every(e=>e.endsWith(`*`))&&!e.endsWith(`*`)?`${e}*`:e;Pe(D.clause,(t.includes(n)?t.filter(e=>e!==n):[...t,n]).join(`|`))}else{let t=Uw(ie.current.wql,D.clause,e);if(!t.valid){P(t.error);return}Pe(D.clause,e),[`kind`,`target`].includes(D.clause.type)||Oe()}}},Ie=()=>{let e=ie.current;!e.valid||N||L||(De(e),a?.(e.wql))},Le=e=>{if(D.kind===`value`&&e.key===`Tab`&&!e.nativeEvent.isComposing){Ne(e.shiftKey?-1:1)&&(e.preventDefault(),e.stopPropagation());return}if(!e.nativeEvent.isComposing){if(e.key===`Enter`&&(e.ctrlKey||e.metaKey)){e.preventDefault(),e.stopPropagation(),Ie();return}if(e.key===`Escape`){if(L){e.preventDefault(),e.stopPropagation(),R(void 0);return}if(D.kind!==`closed`){e.preventDefault(),e.stopPropagation(),Oe();return}if(xe){e.preventDefault(),e.stopPropagation(),De(ie.current),M(-1);return}}if(D.kind===`value`&&e.currentTarget instanceof HTMLInputElement&&e.currentTarget===ee.current){[`Enter`,`ArrowDown`,`ArrowUp`].includes(e.key)&&e.stopPropagation(),e.key===`Enter`&&(e.preventDefault(),Ie());return}if((D.kind===`value`||xe)&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault(),e.stopPropagation(),M(t=>e.key===`ArrowDown`?(t+1)%Ce:t<=0?Ce-1:t-1);return}if(e.key===`Enter`){e.preventDefault(),e.stopPropagation(),j>=0&&xe&&be[j]?Ae(be[j]):xe&&j===be.length?Ie():D.kind===`value`?j>=0&&j<he.length?Fe(he[j].value):me.canCommitTyped&&(j===he.length||j<0)?Fe(me.typedValue):k&&!me.openSlot&&P(`Unknown ${$C(D.clause.type).label} value`):Ie();return}e.key===`Backspace`&&D.kind===`closed`&&!T&&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()}},Re=(0,W.jsxs)(W.Fragment,{children:[o&&(0,W.jsx)(`button`,{type:`button`,onClick:Ie,disabled:!B.valid||!!N||!!L,className:`min-h-12 rounded-lg bg-primary px-4 text-primary-foreground disabled:opacity-50`,children:o}),m]}),ze={...B,valid:B.valid&&!N,error:N??B.error},Be=V.filter(e=>!de.has(e.type)),Ve=D.kind===`value`?Be.findIndex(e=>e.id===D.clause.id):-1;return(0,W.jsxs)(`div`,{className:xS(`min-w-0`,s?`flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-xs transition-shadow focus-within:ring-2 focus-within:ring-ring`:`space-y-2`,y),"data-testid":`wql-composer-root`,children:[l===`top`&&c&&(0,W.jsx)(Aw,{diagnostics:ze,stages:Te,actions:Re,variant:`header`}),(x||D.kind===`wql`||!ue)&&(0,W.jsxs)(`div`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(iT,{value:B.wql,placeholder:v,dense:s,className:s?`min-w-0 w-full bg-transparent`:void 0,activeRange:D.kind===`value`?D.range:void 0,activeClause:D.kind===`value`?D.clause:void 0,onSlotActivate:Me,onChange:e=>De(Gw(e)),onSubmit:Ie,onEscape:()=>D.kind!==`closed`&&(Oe(),!0),autoFocus:_})}),x&&s&&F&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(Gw(F)),I(void 0)},className:`min-h-9 shrink-0 rounded-lg px-2.5 text-xs text-muted-foreground hover:text-foreground`,children:`Undo removal`})]}),(0,W.jsxs)(`div`,{className:xS(`flex min-w-0 flex-wrap items-center gap-1`,!x&&!s&&`rounded-xl border border-border p-2`,x&&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=Be[t.indexOf(e.target)];!n||[`kind`,`target`,`agg`,`metric`].includes(n.type)||(e.preventDefault(),e.stopPropagation(),I(ie.current.wql),Pe(n,null),ee.current?.focus())},children:[ue&&D.kind!==`wql`&&Be.map(e=>(0,W.jsx)(ew,{clause:e,compact:s,isActive:D.kind===`value`&&D.clause.id===e.id,onClick:()=>ke(e),onRemove:[`kind`,`target`,`agg`,`metric`].includes(e.type)?void 0:()=>{I(ie.current.wql),Pe(e,null)}},e.id)),!x&&D.kind!==`wql`&&ue&&(0,W.jsx)(`input`,{ref:ee,type:`text`,role:`combobox`,"aria-label":`Search text or WQL`,"aria-controls":xe?oe:void 0,"aria-expanded":xe,"aria-activedescendant":xe&&j>=0?`${oe}-option-${j}`:void 0,value:T,placeholder:v,onChange:e=>{let t=e.target.value;E(t),M(-1),P(void 0),Ee(Gw(C,t))},onKeyDown:Le,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]}),(!x&&!s||!s&&F)&&(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[!x&&!s&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(ie.current),D.kind===`wql`?Oe():O({kind:`wql`})},disabled:D.kind===`wql`&&!ue,className:`min-h-12 rounded-lg px-3`,children:D.kind===`wql`?`Guided controls`:`Edit WQL`}),F&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(Gw(F)),I(void 0)},className:`min-h-12 rounded-lg px-3`,children:`Undo removal`})]}),D.kind===`value`&&(0,W.jsxs)(`div`,{"data-testid":`wql-field-picker`,className:xS(`min-w-0`,s?`border-t border-border/70 bg-muted/20 px-2.5 py-2 space-y-1.5`:`space-y-2 rounded-xl border border-border/80 bg-muted/30 p-2 sm:p-2.5 shadow-xs backdrop-blur-sm`),onKeyDown:e=>{(e.key===`Escape`||e.key===`Enter`&&(e.ctrlKey||e.metaKey))&&Le(e)},children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`div`,{className:`inline-flex shrink-0 items-center gap-1.5 rounded-md border border-border/70 bg-background/80 px-2.5 py-1 text-xs font-semibold text-foreground font-mono`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-xs`,children:$C(D.clause.type).icon}),(0,W.jsx)(`span`,{children:$C(D.clause.type).label})]}),(0,W.jsxs)(`label`,{className:`sr-only`,children:[`Search `,$C(D.clause.type).label]}),(0,W.jsx)(`input`,{ref:z,type:`search`,role:`combobox`,"aria-label":`Search ${$C(D.clause.type).label}`,"aria-controls":oe,"aria-expanded":`true`,"aria-activedescendant":j>=0?`${oe}-option-${j}`:void 0,value:k,placeholder:D.clause.value?`Current: ${D.clause.value}`:`Type value for ${$C(D.clause.type).label}…`,onChange:e=>{A(e.target.value),M(-1),P(void 0)},onKeyDown:Le,className:`min-h-10 sm:min-h-8 min-w-0 flex-1 rounded-lg border border-border/80 bg-background px-2.5 font-mono text-sm sm:text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary shadow-xs`,"data-testid":`wql-picker-search`}),D.clause.filterIndex!==void 0&&(0,W.jsxs)(`div`,{className:`order-last flex w-full items-center gap-1.5 sm:order-none sm:w-auto`,children:[(0,W.jsxs)(`label`,{className:`inline-flex cursor-pointer select-none items-center gap-1.5 px-2 py-0.5 rounded-md border border-border/60 bg-background/70 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D.clause.negate??!1,onChange:e=>Pe({...D.clause,negate:e.target.checked},D.clause.value),className:`size-3 rounded border-border text-primary focus:ring-primary`}),(0,W.jsx)(`span`,{children:`Exclude`})]}),(0,W.jsxs)(`label`,{className:`inline-flex cursor-pointer select-none items-center gap-1.5 px-2 py-0.5 rounded-md border border-border/60 bg-background/70 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D.clause.value.split(`|`).every(e=>e.endsWith(`*`)),onChange:e=>Pe(D.clause,D.clause.value.split(`|`).map(t=>`${t.replace(/\*$/,``)}${e.target.checked?`*`:``}`).join(`|`)),className:`size-3 rounded border-border text-primary focus:ring-primary`}),(0,W.jsx)(`span`,{children:`Starts with`})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":`Previous WQL segment`,"data-testid":`wql-segment-previous`,disabled:Ve<=0,onClick:()=>{Ne(-1)&&z.current?.focus()},className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md border border-border/70 bg-background/80 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:pointer-events-none text-xs transition-colors`,children:`←`}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Next WQL segment`,"data-testid":`wql-segment-next`,disabled:Ve<0||Ve>=Be.length-1,onClick:()=>{Ne(1)&&z.current?.focus()},className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md border border-border/70 bg-background/80 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:pointer-events-none text-xs transition-colors`,children:`→`}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Close segment editor`,onClick:Oe,className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md text-muted-foreground hover:bg-muted hover:text-foreground text-xs transition-colors`,children:`✕`})]})]}),D.kind===`value`&&D.clause.type===`time`&&(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 pt-0.5 text-xs`,children:[(0,W.jsxs)(`label`,{className:`block text-muted-foreground`,children:[`Start date`,(0,W.jsx)(`input`,{type:`date`,"aria-label":`Start date`,className:`mt-1 min-h-8 w-full rounded-md border border-border/80 bg-background px-2.5 text-xs text-foreground`,onChange:e=>{let t=ve();Pe(D.clause,`from ${e.target.value}${t?.kind===`range`&&t.end?` to ${t.end}`:``}`)},value:_e?.kind===`range`?_e.start:``})]}),(0,W.jsxs)(`label`,{className:`block text-muted-foreground`,children:[`End date`,(0,W.jsx)(`input`,{type:`date`,"aria-label":`End date`,className:`mt-1 min-h-8 w-full rounded-md border border-border/80 bg-background px-2.5 text-xs text-foreground`,onChange:e=>{let t=ve();t?.kind===`range`?Pe(D.clause,`from ${t.start}${e.target.value?` to ${e.target.value}`:``}`):P(`Choose a start date first`)},value:_e?.kind===`range`?_e.end??``:``})]})]}),D.kind===`value`&&(pe?(0,W.jsx)(pe.Editor,{value:pe.parseValue?pe.parseValue(D.clause.value):D.clause.value,onChange:e=>Pe(D.clause,pe.formatValue?pe.formatValue(e):String(e)),onClose:Oe}):(0,W.jsx)(nw,{clause:D.clause,filteredItems:he,selectedValues:me.selectedValues,isMulti:me.isMulti,typedValue:me.typedValue,canCommitTyped:me.canCommitTyped,emptyText:me.emptyText,highlightIdx:j,onHighlight:M,onCommitValue:Fe,onCommitTyped:Fe,listId:oe,onDone:Oe,onReorder:e=>Pe(D.clause,e.join(`|`))}))]}),xe&&(0,W.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:[be.map((e,t)=>(0,W.jsxs)(`button`,{id:`${oe}-option-${t}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>M(t),onClick:()=>Ae(e),className:xS(`flex min-h-12 w-full items-center gap-2 rounded px-3 text-left`,t===j&&`bg-muted`),"data-testid":`wql-filter-typeahead-${e}`,children:[(0,W.jsxs)(`span`,{children:[V.some(t=>t.type===e)?`Edit`:`Add`,` `,$C(e).label]}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e})]},e)),Se&&(0,W.jsxs)(`button`,{id:`${oe}-option-${be.length}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>M(be.length),className:xS(`min-h-12 w-full rounded px-3 text-left`,j===be.length&&`bg-muted`),onClick:Ie,children:[`Search text `,T]})]}),L&&(0,W.jsxs)(`div`,{role:`alertdialog`,"aria-label":`Confirm query pivot`,className:`rounded-xl border border-border p-3`,children:[(0,W.jsx)(`p`,{children:`Changing the query removes incompatible clauses:`}),(0,W.jsx)(`ul`,{children:L.removed.map(e=>(0,W.jsx)(`li`,{children:e},e))}),(0,W.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>R(void 0),children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>{De(L.draft),R(void 0),Oe()},children:`Change query`})]}),!c&&(N??B.error)&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:N??B.error}),!ue&&!B.error&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Use Edit WQL to preserve every clause.`}),T&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`wql-composer-pending`,children:B.valid?`Current draft includes this text`:B.error}),c&&l===`bottom`?(0,W.jsx)(Aw,{diagnostics:ze,stages:Te,actions:Re}):l!==`top`||!c?!!(o||m)&&(0,W.jsx)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:Re}):null]})}function oT({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,U.useState)(n),[u,d]=(0,U.useState)({valid:!X(n).error}),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null);(0,U.useEffect)(()=>{e&&(l(n),d({valid:!X(n).error}),h(null))},[e,n]);let g=(0,U.useCallback)(e=>{if(!s)throw Error(`No executor provided`);return ah(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,W.jsx)(LC,{open:e,onClose:t,presentation:`sheet`,title:i,description:a,footer:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`flex-1 min-w-0 truncate font-mono text-xs text-muted-foreground`,"data-testid":`wql-inspector-draft`,children:c}),(0,W.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,W.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,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(aT,{query:c,onQueryChange:l,onValidationChange:d,execute:s?g:void 0,showDiagnostics:!0}),m&&(0,W.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 sT({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,U.useState)(!1),h=(0,U.useMemo)(()=>MC(e),[e]),{query:g,missing:_}=(0,U.useMemo)(()=>{let t=Tv(h.length>0?h[0].query:e,c??{}),n=new Set(t.missing);for(let e of Object.values(l??{}))for(let t of Tv(e,c??{}).missing)n.add(t);return{query:t.query,missing:[...n]}},[h,e,c,l]),v=(0,U.useMemo)(()=>{let e={};for(let[t,n]of Object.entries(l??{}))e[t]=Tv(n,c??{}).query;return e},[l,c]),y=(0,U.useMemo)(()=>X(g),[g]),b=o!=null&&o!==``&&!pv(o),[x,S]=(0,U.useState)(void 0),[C,w]=(0,U.useState)(void 0),[T,E]=(0,U.useState)(void 0),[D,O]=(0,U.useState)(void 0),[k,A]=(0,U.useState)(0);(0,U.useEffect)(()=>{if(n){let e=n(()=>{A(e=>e+1)});return()=>{typeof e==`function`&&e()}}},[n]),(0,U.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(ah(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(sh(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,U.useMemo)(()=>{if(!(!ah(y)||y.target!==`session`))return y.filters.find(e=>e.key===`result`)?.values[0]?.value},[y]);return(0,W.jsxs)(`div`,{"data-testid":`query-block-view`,children:[s?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:s})}):b?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(JS,{message:hv(o)})}):_.length>0?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(JS,{message:gv(_)})}):y.error?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.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,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsxs)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:[`Query execution error: `,D]})}):ah(y)?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:C?.table?(0,W.jsx)(KS,{type:`table`,result:C}):N&&C?.runs&&C.runs.length>0?(0,W.jsx)(Jee,{resultId:N,sessionResult:C,executor:t,onCaptureRpe:u,onCaptured:()=>A(e=>e+1)}):C?.runs?(0,W.jsx)(kC,{result:C}):C?(0,W.jsx)(uT,{target:y.target,notes:C.notes,blocks:C.blocks,containers:C.containers,onOpenNote:d,noteHref:f}):(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading rows…`})}):sh(y)?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(dT,{result:T,onOpenNote:d,noteHref:f,widgetType:o,attributes:v,fallbackLabel:y.raw})}):(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(cT,{result:x,metric:y.metric,widgetType:o,attributes:v})}),j&&(0,W.jsx)(oT,{isOpen:p,onClose:()=>m(!1),initialQuery:g,executor:t,onApply:e=>r(e)})]})}function cT({result:e,metric:t,widgetType:n,attributes:r}){let i=TS(e);return n!=null&&n!==``?(0,W.jsx)(KS,{type:n,result:e,label:t,attributes:r}):i.kind===`scalar`?(0,W.jsx)(DS,{result:e,label:t}):i.kind===`timeseries`?(0,W.jsx)(PS,{result:e}):i.kind===`bars`?(0,W.jsx)(FS,{result:e}):(0,W.jsx)(ES,{result:e})}function lT(e){if(!e||e.kind!==`page`)return;let{slug:t,date:n}=e;if(t)return`/page/${encodeURIComponent(t)}`;if(n)return`/day/${encodeURIComponent(n)}`}function uT({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,W.jsxs)(`div`,{className:`text-xs text-muted-foreground py-2`,children:[`No `,e,`s matched this query.`]}):(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsxs)(`div`,{className:`text-[11px] font-medium text-muted-foreground mb-1`,children:[s.length,` `,e,s.length===1?``:`s`,` matched`]}),(0,W.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?lT(r[e.id])??(a?a(t):void 0):a?a(t):void 0;return(0,W.jsx)(`li`,{className:`rounded hover:bg-muted/50 truncate`,children:s?(0,W.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,W.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,W.jsx)(`span`,{className:`block py-0.5 px-1.5 text-foreground truncate`,children:n})},e.id)})})]})}function dT({result:e,onOpenNote:t,noteHref:n,widgetType:r,attributes:i,fallbackLabel:a}){if(!e)return(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading…`});if(e.error)return(0,W.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,W.jsx)(uT,{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,W.jsx)(kC,{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,W.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,W.jsx)(KS,{type:s,result:OS(e),label:a,attributes:{...t,...i}})})}return e.series&&e.series.length>0?(0,W.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,W.jsx)(cT,{result:OS(e),metric:a})}):(0,W.jsx)(ES,{result:OS(e)})}function fT({children:e,onEdit:t,readOnly:n}){return(0,W.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,W.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,W.jsx)(gn,{className:`w-3.5 h-3.5`})}),e]})}function pT(e){let t=Ar.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?[ni,t]:[t]}var mT=Hr.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 vi,{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,Vr.line({attributes:{id:s}}))}return t.finish()}},{decorations:e=>e.decorations}),hT=Jr.define({combine(e){return e.length>0?e[e.length-1]:null}});function gT(e){return/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e)}function _T(e,t){let n=Lr(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(gT(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)),gT(n))return r=n,!1}}),r}var vT=[Ir((e,t)=>_T(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}),Hr.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=_T(e,n);if(!r)return;t.preventDefault(),t.stopPropagation();let i=e.state.facet(hT);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){}}),Ar.domEventHandlers({mousemove(e,t){let n=t.posAtCoords({x:e.clientX,y:e.clientY});if(n==null)return!1;let r=_T(t,n);return t.dom.style.cursor=r&&(e.ctrlKey||e.metaKey)?`pointer`:``,!1},keydown(e,t){return t.dom.style.cursor=``,!1}})],yT=Jr.define({combine:e=>e[0]}),bT=Jr.define({combine:e=>e.length?e.flat():void 0}),xT=Xr.define(),ST=Xr.define(),CT=Xr.define(),wT=Xr.define(),TT=Xr.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 ET(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 DT(e,t,n){let r=e.doc.lineAt(n);return t[r.number-1]+n-r.from}function OT(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 kT(e,t,n,r,i,a=[]){let o=e.facet(bT),s=La(t,{sourceRevision:n,blocks:r,registeredWidgets:o}),c=ET(t),l=Fa(t,{registeredWidgets:o}).map(e=>{let t=c.editorStarts[e.startLine],n=c.editorStarts[e.endLine]+e.to-c.rawStarts[e.endLine],r=Ia(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?vv(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 AT=si.define({create(e){let t=e.facet(yT),n=t?.rawContent??e.doc.toString();if(n.replace(/\r\n|\r/g,`
63
+ `)}var NC=e(nr(),1);function PC(){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 FC(){let[e,t]=(0,U.useState)(PC);return(0,U.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let n=()=>t(PC());return e.addEventListener(`resize`,n),e.addEventListener(`scroll`,n),()=>{e.removeEventListener(`resize`,n),e.removeEventListener(`scroll`,n)}},[]),e}var IC=`a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])`;function LC({open:e,onClose:t,title:n,description:r,children:i,footer:a,presentation:o=`default`}){let s=(0,U.useId)(),c=(0,U.useId)(),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=FC(),f=o===`sheet`;if((0,U.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(),e.defaultPrevented||t();return}if(e.key!==`Tab`)return;let n=l.current;if(!n)return;let r=Array.from(n.querySelectorAll(IC));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,NC.createPortal)((0,W.jsx)(`div`,{className:xS(`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,W.jsxs)(`div`,{ref:l,role:`dialog`,"aria-modal":`true`,"aria-labelledby":s,"aria-describedby":r?c:void 0,tabIndex:-1,onKeyDown:p,className:xS(`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,W.jsx)(`div`,{"aria-hidden":!0,className:`flex justify-center pt-2 sm:hidden`,children:(0,W.jsx)(`div`,{className:`h-1 w-10 rounded-full bg-border`})}),(0,W.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,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`h2`,{id:s,className:`text-base font-semibold text-foreground`,children:n}),r&&(0,W.jsx)(`p`,{id:c,className:`mt-0.5 text-xs text-muted-foreground`,children:r})]}),(0,W.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,W.jsx)(dn,{className:`size-5 sm:size-4`})})]}),(0,W.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4 sm:px-6`,children:i}),a&&(0,W.jsx)(`div`,{className:xS(`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 RC=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 zC(e=RC){let t=(0,U.useSyncExternalStore)(t=>e.subscribe(t),()=>e.listSlots());return(0,U.useMemo)(()=>t,[t])}var BC=[{value:`find`,label:`Find`,description:`Find things: notes, blocks, efforts, sessions, tables`},{value:`aggregate`,label:`Measure`,description:`Measure numbers: aggregate a metric by dimensions`}],VC=vm.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{note:`Find notes across journal, notebooks 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`,notebook:`Find notebooks — every notebook, narrowed with notebook:`,page:`Find page placements — notes placed on pages, narrowed with page:`,tag:`Find tags — labels, types, and what they contribute`,equipment:`Find equipment notes — narrowed with equipment: or tags:`}[e]})),HC=ym.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),description:{journal:`Daily journal notes`,notebooks:`Notebook notes`,guides:`Static guide pages`,playground:`Playground scratch pages`,dashboards:`Dashboard notes`,efforts:`Exercise library notes`,equipment:`Equipment library notes`}[e]})),UC=Om.map(e=>({value:e,label:e})),WC=[{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`}],GC=lm.map(e=>({value:e,label:e})),KC=[{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`}],qC=[...mm,...dm].map(e=>({value:e,label:e})),JC=[...cm,...sm,...hm].map(e=>({value:e,label:e})),YC=Am.map(e=>({value:e,label:e}));[...cm,...sm,...hm];var XC={source:!0,time:!0},ZC={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, notebooks…`,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:`},notebook:{label:`Notebook`,inputType:`select`,placeholder:`Pick notebook...`,placeholderText:`notebook: [id]`,icon:`📓`,description:`Filter by canonical notebook container id, e.g. notebook/journal, notebook/playground, notebook/guides`,prefix:`notebook:`},tag:{label:`Tag`,inputType:`select`,placeholder:`Pick tag...`,placeholderText:`tags: [tag]`,icon:`🏷`,description:`Filter by note/workout tags`,prefix:`tags:`},contributes:{label:`Contributes`,inputType:`select`,placeholder:`metric, tag, function…`,placeholderText:`contributes: [kind]`,icon:`❇`,description:`On :tag — what a tag contributes (metric, tag:<slug>, function:<name>) — never a label filter`,prefix:`contributes:`},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:`slug, date, true…`,placeholderText:`page: [slug|date]`,icon:`📄`,description:`On :page — the page slug or YYYY-MM-DD date; on :note — page-ness (true/false)`,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`},feed:{label:`Feed`,inputType:`select`,placeholder:`core, local, feed id…`,placeholderText:`feed: [id]`,icon:`📡`,description:`Filter by publishing feed source`,prefix:`feed:`},subscribed:{label:`Subscribed`,inputType:`select`,placeholder:`true, false`,placeholderText:`subscribed: [true|false]`,icon:`⭐`,description:`Filter by notebook subscription state`,prefix:`subscribed:`}},QC=`🧩`;function $C(e){let t=ZC[e];if(t)return t;let n=RC.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:QC,description:``}}function ew({clause:e,isActive:t,invalid:n=!1,invalidReason:r,onClick:i,onRemove:a,compact:o=!1,placeholderOverride:s}){let c=$C(e.type),l=!!(e.value&&e.value.trim()),u=XC[e.type]?`Clear ${c.label}`:`Remove ${c.label}`;return(0,W.jsxs)(`span`,{className:`relative inline-flex items-center`,children:[(0,W.jsxs)(`button`,{type:`button`,"data-testid":`token-slot-${e.type}`,onClick:i,"aria-pressed":t||void 0,title:n?r:void 0,className:xS(`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,W.jsx)(`span`,{className:`text-[10px] opacity-70`,children:c.icon}),t&&(0,W.jsxs)(`span`,{className:`font-semibold text-[11px] opacity-90`,children:[c.label,`:`]}),(0,W.jsx)(`span`,{"data-testid":`token-slot-value-${e.type}`,className:xS(`truncate max-w-44`,!l&&`italic opacity-60`),children:l?e.value:s||c.placeholder})]}),a&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`token-slot-remove-${e.type}`,onClick:a,"aria-label":u,title:u,className:xS(`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,W.jsx)(dn,{className:`w-3 h-3`})})]})}function tw(e,t){return e?`${e}-option-${t}`:void 0}function nw({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=$C(e.type),h=e.value.trim(),g=t.length,_=n,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,W.jsxs)(`div`,{className:`min-w-0 pt-0.5`,"data-testid":`wql-clause-editor`,"data-clause-type":e.type,children:[r&&_.length>0&&(0,W.jsxs)(`div`,{className:`border-b border-border/50 px-2 pb-1.5`,children:[(0,W.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,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-primary/15 text-primary text-xs sm:text-[10px] font-mono min-h-8 sm:min-h-0`,children:[(0,W.jsx)(`span`,{className:`max-w-40 truncate`,children:e}),p&&_.length>1&&(0,W.jsxs)(W.Fragment,{children:[(0,W.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,W.jsx)(w,{className:`w-3 h-3`})}),(0,W.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,W.jsx)(b,{className:`w-3 h-3`})})]}),r&&(0,W.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,W.jsx)(dn,{className:`w-2.5 h-2.5`})})]},e))}),r&&(0,W.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,W.jsxs)(`div`,{id:d,role:`listbox`,"aria-label":`${m.label} options`,"aria-multiselectable":r||void 0,className:`max-h-[min(38svh,16rem)] sm:max-h-36 overflow-y-auto overscroll-contain touch-pan-y flex flex-col gap-0.5 pt-1`,children:[a&&(0,W.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!1,id:tw(d,g),"data-active":s===g||void 0,onMouseEnter:()=>c(g),onClick:()=>u(i),"data-testid":`clause-commit-typed-${e.type}`,className:xS(`flex items-center justify-between px-2.5 py-2 sm:py-1.5 text-sm sm:text-xs text-left rounded-md hover:bg-muted/60 transition-colors font-mono min-h-11 sm:min-h-0`,s===g&&`bg-muted/70 ring-1 ring-border`),children:[(0,W.jsxs)(`span`,{className:`truncate`,children:[`Search for `,(0,W.jsxs)(`span`,{className:`font-semibold text-foreground`,children:[`“`,i,`”`]})]}),(0,W.jsx)(`span`,{className:`text-muted-foreground/60 ml-1 shrink-0 font-sans text-xs`,children:`↵`})]}),t.map((t,i)=>{let a=n.includes(t.value)||!r&&h===t.value,o=i===s;return(0,W.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":a,id:tw(d,i),"data-active":o||void 0,"data-testid":`wql-clause-editor-${e.type}-opt-${i}`,onMouseEnter:()=>c(i),onClick:()=>l(t.value),className:xS(`flex items-center justify-between px-2.5 py-2 sm:py-1.5 text-sm sm:text-xs text-left rounded-md transition-colors min-h-11 sm:min-h-0`,o?`bg-primary/10 text-foreground font-medium`:`hover:bg-muted/60 text-muted-foreground hover:text-foreground`,a&&`text-primary font-medium`),children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`truncate`,children:t.label}),t.label!==t.value&&(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`font-mono text-[11px] text-muted-foreground/70 shrink-0`,children:t.value})]}),a&&(0,W.jsx)(lr,{className:`w-3.5 h-3.5 text-primary shrink-0 ml-1.5`})]},t.value)}),o&&(0,W.jsx)(`div`,{className:`px-2.5 py-2 text-sm sm:text-xs text-muted-foreground italic`,children:o})]}),(t.length>0||a)&&(0,W.jsxs)(`div`,{className:`hidden sm:flex items-center justify-between px-2 pt-2 text-[10px] text-muted-foreground/70 font-mono border-t border-border/40 mt-1`,children:[(0,W.jsxs)(`span`,{children:[`↑↓ choose · Enter `,r?`toggle`:`set`]}),(0,W.jsx)(`span`,{children:`Tab next segment · Esc close`})]}),r&&f&&(0,W.jsx)(`div`,{className:`pt-2 flex justify-end`,children:(0,W.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-10 sm:min-h-7 px-3 rounded-md bg-primary text-primary-foreground 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 rw={tag:!0,notebook:!0,contributes:!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},iw={kind:BC,target:VC,source:HC,plane:UC,time:WC,agg:GC,rollup:KC,groupby:qC,metric:JC,unit:YC,intensity:gm.map(e=>({value:e,label:e})),subscribed:[{value:`true`,label:`Subscribed`},{value:`false`,label:`All / unsubscribed`}]};function aw(e){let t=new Set;for(let n of e){let e=S_(n.sourceId);e&&t.add(e)}return Array.from(t).sort((e,t)=>e.localeCompare(t))}function ow(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 sw(e,t){return uw([...e,...t].map(e=>({value:e.trim()})),[]).map(e=>e.value)}var cw=[`wod`,`query`,`widget`,`embed`];function lw(e){return e.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)}))}function uw(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 dw={discipline:{load:async()=>lw(Gc),cache:`static`,open:!1,emptyText:`No disciplines available`},notebook:{load:async()=>[],cache:`static`,open:!1,emptyText:`No notebooks in the static corpus`},intensity:{load:async()=>lw(gm),cache:`static`,open:!1,emptyText:`No intensity tiers available`},type:{load:async()=>lw(cw),cache:`static`,open:!1,emptyText:`No indexed block types yet`},contributes:{load:async()=>lw([`metric`,`tag`,`function`]),cache:`static`,open:!0,emptyText:`metric, tag, or function`}},fw={...dw},pw=new Set,mw=Object.keys(fw);function hw(e){return pw.add(e),()=>{pw.delete(e)}}function gw(){return(0,U.useSyncExternalStore)(hw,()=>mw)}function _w(e,t){t?fw[e]=t:dw[e]?fw[e]=dw[e]:delete fw[e],xw(e),mw=Object.keys(fw);for(let e of pw)e()}function vw(e){return fw[e]}var yw=new Map;async function bw(e){let t=vw(e);if(!t)return[];let n=Date.now(),r=yw.get(e);if(r&&r.expiresAt>n)return r.items;try{let r=uw(await t.load(),[]),i=typeof t.cache==`object`?t.cache.ttlMs:1/0;return yw.set(e,{items:r,expiresAt:n+i}),r}catch{return r?r.items:[]}}function xw(e){e?yw.delete(e):yw.clear()}function Sw(e){let t=vw(e),[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!!t);return(0,U.useEffect)(()=>{if(!t){r([]),a(!1);return}let n=!1;return a(!0),bw(e).then(e=>{n||(r(e),a(!1))}),()=>{n=!0}},[e,t]),{items:n,loading:i,binding:t}}function Cw(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 ww(e,t,n){let r=e?.type??``,{items:i,loading:a,binding:o}=Sw(r),s=iw[r],c=r in rw||!!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=Cw(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 ${$C(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 Tw(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 Ew(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 Dw(e){return e.kind===`dataset`?e.name:`target`in e.query?`:${e.query.target}`:`:${e.query.agg}`}function Ow(e){let t=e.source.kind===`query`?e.source.query:void 0;return{source:Dw(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 kw({label:e,value:t,testId:n,warnTitle:r}){let i=n.startsWith(`diag-`)?n.replace(`diag-`,`wql-`):n;return(0,W.jsxs)(`span`,{"data-testid":n,title:r,className:`inline-flex items-center gap-1 whitespace-nowrap`,children:[(0,W.jsxs)(`span`,{className:`opacity-60`,children:[e,`:`]}),(0,W.jsx)(`span`,{"data-testid":i,className:xS(`font-semibold`,r&&`text-signal-caution underline decoration-wavy underline-offset-2`),children:t})]})}function Aw({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(sh(c)?[]:Wm(c.family===`find`?c.target:``,c.family)),p=sh(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,W.jsxs)(`div`,{"data-testid":`wql-diagnostics-strip`,"aria-live":`polite`,className:xS(`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-border/60 bg-muted/20 text-muted-foreground`:`border-b border-destructive/40 bg-destructive/5 text-destructive`:xS(`rounded-lg border`,s?`bg-muted/30 border-border text-muted-foreground`:`bg-destructive/5 border-destructive/30 text-destructive`),o),children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,W.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,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(er,{className:`w-3.5 h-3.5 text-signal-caution shrink-0`}),(0,W.jsx)(`span`,{className:`text-signal-caution`,children:`Warning`}),(0,W.jsx)(`span`,{className:`opacity-80`,children:h})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(vr,{className:`w-3.5 h-3.5 text-signal-positive shrink-0`}),(0,W.jsx)(`span`,{className:`text-signal-positive`,children:`Valid`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(yt,{className:`w-3.5 h-3.5 text-destructive shrink-0`}),(0,W.jsx)(`span`,{children:`Invalid`}),(0,W.jsxs)(`span`,{children:[t?`${t}: `:``,l||`Syntax error`]})]})}),!r&&s&&ah(c)&&(0,W.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=Tw(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`target`,value:e.target,testId:`diag-summary-target`}),(0,W.jsx)(kw,{label:`scope`,value:e.scope,testId:`diag-summary-scope`}),e.timeWindow&&(0,W.jsx)(kw,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`}),e.groupBy&&(0,W.jsx)(kw,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.hasJoin&&(0,W.jsx)(`span`,{"data-testid":`diag-summary-join`,className:`text-primary font-semibold`,children:`+join`})]})})()}),!r&&s&&oh(c)&&(0,W.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=Ew(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`agg`,value:e.agg,testId:`diag-summary-agg`}),e.metric&&(0,W.jsx)(kw,{label:`metric`,value:e.metric,testId:`diag-summary-metric`}),e.groupBy&&(0,W.jsx)(kw,{label:`by`,value:e.groupBy,testId:`diag-summary-groupby`,warnTitle:p.length>0?`Unsupported grouping: ${p.join(`, `)}`:void 0}),e.rollup&&(0,W.jsx)(kw,{label:`every`,value:e.rollup,testId:`diag-summary-rollup`}),e.unit&&(0,W.jsx)(kw,{label:`as`,value:e.unit,testId:`diag-summary-unit`})]})})()}),!r&&s&&sh(c)&&(0,W.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=Ow(c);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kw,{label:`source`,value:e.source,testId:`diag-summary-source`}),e.functions.map((e,t)=>(0,W.jsx)(kw,{label:`fn ${t+1}`,value:e,testId:`diag-summary-fn-${t+1}`},t)),e.sink&&(0,W.jsx)(kw,{label:`sink`,value:e.sink,testId:`diag-summary-sink`}),e.timeWindow&&(0,W.jsx)(kw,{label:`time`,value:e.timeWindow,testId:`diag-summary-time`})]})})()}),s&&n&&(0,W.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,W.jsxs)(`span`,{children:[n.matched,` matched of `,n.selected]}):(0,W.jsxs)(`span`,{children:[n.selected,` selected → `,n.aggregated,` aggregated (`,n.groups,` series)`]})})]}),a&&(0,W.jsx)(`div`,{className:`flex items-center gap-1.5 ml-auto`,children:a})]})}function jw(e,t,n,r=150){let[i,a]=(0,U.useState)(void 0),o=(0,U.useRef)(void 0),s=(0,U.useRef)(n);s.current=n;let c=t&&!e.error&&n!==void 0&&!sh(e);return(0,U.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(ah(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 Mw={tags:`tag`},Nw={tag:`tags`};function Pw(e){return Array.isArray(e)?e.map(Pw):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,Pw(t)])):e}function Fw(e){if(e.error)return!1;let t=X(Qh(e));return!t.error&&JSON.stringify(Pw(e))===JSON.stringify(Pw(t))}function Iw(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 Lw(e){let t=Qh(e),n=Iw(t);return n.valid&&!Fw(e)?Iw(t,`This value cannot be represented losslessly in WQL.`):n}function Rw(e,t,n){return{id:`c-${e}`,type:e,...$C(e),value:t,...n}}function zw(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 Bw(e){if(sh(e)||e.error||!Fw(e)||e.filters.some(e=>e.values.some(e=>e.value.includes(`|`)||!e.wildcard&&e.value.endsWith(`*`))))return null;let t=[Rw(`kind`,e.family)];e.family===`find`?t.push(Rw(`target`,e.target)):t.push(Rw(`agg`,e.agg),Rw(`metric`,e.metric)),(e.window||Hm(e.family===`find`?e.target:``,e.family).has(`time`))&&t.push(Rw(`time`,zw(e))),e.filters.forEach((e,n)=>{let r=e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`),i=RC.getAllSlots().find(t=>{if(!t.parseValue)return!1;let n=t.parseValue(r);return n!==void 0&&t.wqlGenerator(n)===Vw(e)})?.type??Mw[e.key]??e.key;t.push(Rw(i,r,{id:`c-filter-${n}`,filterIndex:n,negate:e.negate}))}),e.groupBy?.length&&t.push(Rw(`groupby`,e.groupBy.join(`|`))),e.family===`aggregate`&&e.rollup&&t.push(Rw(`rollup`,`${e.rollup.size}${e.rollup.unit}`)),e.displayUnit&&t.push(Rw(`unit`,e.displayUnit));let n=Qh(e);return e.join&&t.push(Rw(`where`,n.split(` where `)[1]?.split(` | `)[0]??``)),e.family===`find`&&e.pipes&&t.push(Rw(`pipes`,n.split(` | `).slice(1).join(` | `))),t}function Vw(e){return Qh({family:`find`,raw:``,target:`note`,sourceScope:[...wm],filters:[e]}).replace(/^[^{]*\{/,``).replace(/\}$/,``)}function Hw(e,t,n){let r=RC.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||!ah(n)?void 0:n.filters[0]}let i={key:Nw[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{${Vw(i)}}`);return!a.error&&ah(a)&&a.filters.length===1&&JSON.stringify(Pw(a.filters[0]))===JSON.stringify(Pw(i))?a.filters[0]:void 0}function Uw(e,t,n){let r=Iw(e);if(!r.valid)return r;let i=r.ast;if(sh(i))return Iw(e,`Pipelines are edited as WQL text — structured pills cannot change a stage without flattening it.`);if(!Fw(i))return Iw(e,`This query requires Edit WQL to preserve every clause.`);let a=n?.trim()??``;if(t.type===`kind`||t.type===`target`)return Ww(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`)?Hw(t.type,a,t.negate??!1):void 0;if(a&&!n&&(t.type!==`source`||a!==`all`))return Iw(e,`Invalid ${$C(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 Lw({...i,filters:o})}if(t.type===`time`){if(!a||a===`all`)return Lw({...i,window:void 0});let t=X(`:note ${/^(last|from)\b/.test(a)?a:`last ${a}`}`);return t.error||!ah(t)||!t.window?Iw(e,t.error??`Invalid time window`):Lw({...i,window:t.window})}if(t.type===`groupby`)return Lw({...i,groupBy:[...new Set(a.split(`|`).filter(Boolean))]});if(t.type===`unit`)return Lw({...i,displayUnit:a||void 0});if(t.type===`agg`&&i.family===`aggregate`)return Iw(Qh(i).replace(/^[^:]+:/,`${a}:`));if(t.type===`metric`&&i.family===`aggregate`)return Lw({...i,metric:a});if(t.type===`rollup`&&i.family===`aggregate`){if(!a)return Lw({...i,rollup:void 0});let t=X(`sum:tis{} by {week}.rollup(${a})`);return t.error||t.family!==`aggregate`||!t.rollup?Iw(e,t.error??`Invalid bucket width`):Lw({...i,rollup:t.rollup})}if(t.type===`where`){let e=Qh({...i,join:void 0});return Iw(a?`${e} where ${a}`:e)}if(t.type===`pipes`&&i.family===`find`){let e=Qh({...i,pipes:void 0});return Iw(a?`${e} | ${a}`:e)}return r}function Ww(e,t,n){let r=Iw(e),i=r.ast;if(!r.valid)return{draft:r,removed:[]};if(sh(i))return{draft:Iw(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=Hm(o,a===`aggregate`?`aggregate`:`find`),c=[],l=i.filters.filter(e=>{let t=(a===`aggregate`||o===`segment`||o===`event`)&&!(e.key in ZC)&&!!vw(e.key),n=s.has(Mw[e.key]??e.key)||t||!!RC.getSlot(e.key);return n||c.push(Vw(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:Lw({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:Lw({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 Gw(e,t=``){if(!t.trim())return Iw(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 Iw(t);let r=Iw(e);if(!r.valid||sh(r.ast))return Iw(t);if(!Fw(r.ast))return Iw(e,`Use Edit WQL for this query.`);if(/^(last|from)\b/.test(n)){let e=X(`:note ${n}`);return e.error||!ah(e)||!e.window?Iw(t,e.error??`Invalid time window`):Lw({...r.ast,window:e.window})}if(/^!?[\w-]+:/.test(n)){let e=X(`:note{${n}}`);if(e.error||!ah(e)||!e.filters.length)return Iw(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 Lw({...r.ast,filters:i})}if(/[{}]/.test(n))return Iw(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,Lw({...r.ast,filters:a})}var Kw=$e(),qw=Ar.theme({".cm-tooltip":{backgroundColor:`hsl(var(--popover))`,color:`hsl(var(--popover-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`var(--radius-md)`,boxShadow:`0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`,fontFamily:`var(--font-sans, Inter, system-ui, sans-serif)`,fontSize:`14px`,zIndex:`40`},".cm-tooltip-autocomplete":{overflow:`hidden`,minWidth:`min(18rem, calc(100vw - 2rem))`,maxWidth:`calc(100vw - 2rem)`},".cm-tooltip-autocomplete > ul":{padding:`4px`,maxHeight:`min(45svh, 20rem)`,overscrollBehavior:`contain`,fontFamily:`inherit`,fontSize:`inherit`},".cm-tooltip-autocomplete > ul > li":{display:`flex`,alignItems:`center`,gap:`8px`,minHeight:`40px`,padding:`8px 10px`,borderRadius:`var(--radius-sm)`,lineHeight:`20px`},".cm-tooltip-autocomplete > ul > li:hover":{backgroundColor:`hsl(var(--muted) / 0.6)`},'.cm-tooltip-autocomplete > ul > li[aria-selected="true"]':{backgroundColor:`hsl(var(--primary) / 0.15)`,fontWeight:`600`},".cm-completionLabel":{fontFamily:`var(--font-mono, ui-monospace, SFMono-Regular, monospace)`,fontWeight:`500`,overflow:`hidden`,textOverflow:`ellipsis`},".cm-completionMatchedText":{textDecoration:`none`,fontWeight:`700`,color:`hsl(var(--primary))`},".cm-completionDetail":{marginLeft:`auto`,paddingLeft:`12px`,fontFamily:`var(--font-sans, Inter, system-ui, sans-serif)`,fontSize:`12px`,fontStyle:`normal`,color:`hsl(var(--muted-foreground))`},"@media (pointer: coarse)":{".cm-tooltip-autocomplete > ul > li":{minHeight:`48px`}}}),Jw={search:(0,Kw.renderToStaticMarkup)((0,U.createElement)(jn,{size:16})),metric:(0,Kw.renderToStaticMarkup)((0,U.createElement)(Ie,{size:16})),filter:(0,Kw.renderToStaticMarkup)((0,U.createElement)(qt,{size:16})),value:(0,Kw.renderToStaticMarkup)((0,U.createElement)(tee,{size:16}))},Yw={Head:!0,Filter:!0,TagValue:!0,Rollup:!0},Xw=Xr.define(),Zw=si.define({create:()=>Vr.none,update(e,t){let n=e.map(t.changes);for(let e of t.effects){if(!e.is(Xw))continue;let t=e.value;return!t||t.from>=t.to?Vr.none:Vr.set([Vr.mark({class:`wql-active-segment`}).range(t.from,t.to)])}return n},provide:e=>Ar.decorations.from(e)});function Qw(e,t){if(!t)return;let n,r=Lr(e);if(t.filterIndex!==void 0){let e=0;return r.iterate({enter:r=>{if(r.name===`Filter`){if(e===t.filterIndex)return n={from:r.from,to:r.to},!1;e++}return!0}}),n}if([`kind`,`target`,`agg`,`metric`].includes(t.type))return r.iterate({enter:e=>e.name!==`Head`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`groupby`)return r.iterate({enter:e=>e.name!==`GroupBy`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`rollup`)return r.iterate({enter:e=>e.name!==`Rollup`||(n={from:e.from,to:e.to},!1)}),n;if(t.type===`time`){let t=e.doc.toString(),n=/\b(last\s+\d+[dw]|from\s+\S+(?:\s+to\s+\S+)?)/i.exec(t);if(n)return{from:n.index,to:n.index+n[0].length}}}function $w(e){let t=[];return Lr(e).iterate({enter:e=>((Yw[e.name]||e.name===`Word`&&[`GroupBy`,`Dimension`].includes(e.node.parent?.name??``))&&t.push(e.from),!0)}),t.sort((e,t)=>e-t)}function eT(e,t,n){if(!n)return;let r=Lr(e.state).resolveInner(t,1);for(;r.parent&&![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(r.name);)r=r.parent;if(![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(r.name))return;let i;r.name===`Filter`&&(i=0,Lr(e.state).iterate({enter:e=>{if(e.name===`Filter`){if(e.from===r.from)return!1;e.from<r.from&&(i+=1)}return!0}}));let a=e.state.sliceDoc(r.from,r.to);if(r.name===`Head`){let n=e.state.doc.lineAt(t),r=Array.from(n.text.matchAll(/[\w.*-]+/g)).find(e=>n.from+e.index<=t&&t<=n.from+e.index+e[0].length);r&&(a=r[0])}n({node:r.name,filterIndex:i,from:r.from,to:r.to,text:a})}function tT(e,t,n){let r=e.state.selection.main.head,i=$w(e.state),a=t>0?i.find(e=>e>r):[...i].reverse().find(e=>e<r);return a!==void 0&&(e.dispatch({selection:{anchor:a},scrollIntoView:!0}),eT(e,a,n),!0)}function nT(e){let t=e.state.doc.toString();if(!t.trim())return[];let n=X(t);if(n.error){let r=[];return Lr(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(sh(n))return[];let r=[];if(Lr(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(Gm(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 rT(e,t,n){return[{key:`Mod-Enter`,run:()=>(e(),!0)},{key:`Ctrl-Space`,run:ii},{key:`ArrowDown`,run:e=>zr(e.state)===`active`&&Er(!0)(e)},{key:`ArrowUp`,run:e=>zr(e.state)===`active`&&Er(!1)(e)},{key:`PageUp`,run:e=>zr(e.state)===`active`?Er(!1,`page`)(e):Zr(e)},{key:`PageDown`,run:e=>zr(e.state)===`active`?Er(!0,`page`)(e):xi(e)},{key:`Home`,run:e=>zr(e.state)===`active`?(e.dispatch({effects:Pr(0)}),!0):oi(e)},{key:`End`,run:e=>zr(e.state)===`active`?(e.dispatch({effects:Pr(Dr(e.state).length-1)}),!0):see(e)},{key:`Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Ei(e);return tT(e,1,n)||t}},{key:`Shift-Tab`,run:e=>{if(e.compositionStarted)return!1;let t=Ei(e);return tT(e,-1,n)||t}},{key:`Enter`,run:t=>t.compositionStarted?!1:Ei(t)?!0:(Tr(t),e(),!0)},{key:`Escape`,run:e=>e.compositionStarted||Tr(e)||t()||(e.contentDOM.blur(),!0)},...ci]}function iT({value:e,onChange:t,onSubmit:n,onEscape:r,placeholder:i,autoFocus:a=!1,dense:o=!1,onSlotActivate:s,activeRange:c,activeClause:l,className:u}){let d=(0,U.useRef)(null),f=(0,U.useRef)(void 0),p=(0,U.useRef)({onChange:t,onSubmit:n,onEscape:r,onSlotActivate:s});p.current={onChange:t,onSubmit:n,onEscape:r,onSlotActivate:s};let m=(0,U.useRef)(!1),h=(0,U.useRef)(e);return(0,U.useEffect)(()=>{if(!d.current)return;let e=kg({values:async e=>(await bw(e===`tags`?`tag`:e)).map(e=>({label:e.value,detail:e.label,type:`constant`}))}),t=(e,t,n)=>{let{from:r,to:i}=e.state.selection.main;if(t!==void 0&&n!==void 0){let a=e.posAtCoords({x:t,y:n});if(a===null)return!1;r=i=a}if(r===i){let t=e.state.doc.lineAt(r),n=Array.from(t.text.matchAll(/[\w.*-]+/g)).find(e=>t.from+e.index<=r&&r<=t.from+e.index+e[0].length);if(!n)return!1;r=t.from+n.index,i=r+n[0].length;let a=Lr(e.state).resolveInner(i,-1);for(;a.parent&&![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(a.name);)a=a.parent;if(![`Head`,`Filter`,`GroupBy`,`Rollup`].includes(a.name))return!1;p.current.onSlotActivate||e.dispatch({selection:{anchor:r,head:i}})}return p.current.onSlotActivate?(Tr(e),eT(e,r,e=>p.current.onSlotActivate?.(e))):ii(e),!1},n=new Ar({parent:d.current,state:ri.create({doc:h.current,extensions:[eg,jr(Ag),pi(),Ar.lineWrapping,Zw,...i?[bi(i)]:[],Ar.contentAttributes.of({"aria-label":`WQL`,"data-testid":`wql-text-input`}),Yr({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`?Jw.search:e.type===`keyword`||e.type===`variable`?Jw.metric:e.type===`property`?Jw.filter:Jw.value,t}}]}),_i(nT),Cr.of(rT(()=>p.current.onSubmit(),()=>p.current.onEscape(),e=>p.current.onSlotActivate?.(e))),Ar.domEventHandlers({mouseup:(e,n)=>e.button===0&&t(n),touchend:(e,n)=>{if(e.changedTouches.length!==1)return!1;let r=e.changedTouches[0];return t(n,r.clientX,r.clientY)},keydown:(e,t)=>e.isComposing||t.compositionStarted?!0:((e.key===`Enter`||e.key===`Escape`||[`ArrowDown`,`ArrowUp`].includes(e.key)&&zr(t.state)===`active`)&&e.stopPropagation(),!1)}),Ar.updateListener.of(e=>{e.docChanged&&!m.current&&p.current.onChange(e.state.doc.toString())}),Ar.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))`},".wql-completion-icon":{display:`inline-flex`,flexShrink:`0`,color:`hsl(var(--primary))`},".wql-active-segment":{backgroundColor:`hsl(var(--primary) / 0.16)`,boxShadow:`inset 0 -2px hsl(var(--primary))`,borderRadius:`4px`,padding:`1px 2px`,margin:`0 -2px`,fontWeight:`600`}}),qw]})});return f.current=n,a&&n.focus(),()=>{n.destroy(),f.current=void 0}},[a,i,o]),(0,U.useEffect)(()=>{let t=f.current;!t||t.state.doc.toString()===e||(m.current=!0,t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e}}),m.current=!1)},[e]),(0,U.useEffect)(()=>{let e=f.current;if(!e)return;let t=c??Qw(e.state,l);e.dispatch({effects:Xw.of(t??null)})},[c,l,e]),(0,W.jsx)(`div`,{ref:d,className:u??`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 aT({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,segmentEditRequest:b}){let[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)(t??e??`:note`),[T,E]=(0,U.useState)(``),[D,O]=(0,U.useState)({kind:`closed`}),[k,A]=(0,U.useState)(``),[j,M]=(0,U.useState)(-1),[N,P]=(0,U.useState)(),[F,I]=(0,U.useState)(),[L,R]=(0,U.useState)(),ee=(0,U.useRef)(null),z=(0,U.useRef)(null),te=(0,U.useRef)(null),ne=(0,U.useRef)(t??e??`:note`),re=(0,U.useRef)(t),ie=(0,U.useRef)(Gw(C)),ae=(0,U.useRef)({onQueryChange:n,onValidationChange:r,onAstChange:i});ae.current={onQueryChange:n,onValidationChange:r,onAstChange:i};let oe=`${(0,U.useId)()}-options`,se=zC(),ce=gw(),le=t!==void 0&&t!==re.current&&t!==ne.current,B=(0,U.useMemo)(()=>Gw(le?t:C,le?``:T),[C,T,le,t]);ie.current=B;let V=(0,U.useMemo)(()=>Bw(B.ast)??[],[B.ast]),ue=B.valid&&Bw(B.ast)!==null,de=new Set(h),fe=D.kind===`value`?D.clause:void 0,pe=fe?RC.getSlot(fe.type):void 0,me=ww(fe,k,{supportedValues:fe?.type===`groupby`&&B.ast.family===`find`&&[`note`,`block`].includes(B.ast.target)?jm:void 0}),he=[...me.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)}),ge=sh(B.ast)?new Set:Hm(B.ast.family===`find`?B.ast.target:``,B.ast.family),_e=sh(B.ast)?void 0:B.ast.window,ve=()=>{let e=ie.current.ast;return sh(e)?void 0:e.window},ye=B.ast.family===`aggregate`||B.ast.family===`find`&&[`segment`,`event`].includes(B.ast.target)?ce.filter(e=>!(e in ZC)):[],be=[...Object.keys(ZC),...ye,...se.map(e=>e.type)].filter((e,t,n)=>n.indexOf(e)===t&&!de.has(e)).filter(e=>[`kind`,`target`].includes(e)||ge.has(e)||ye.includes(e)||se.some(t=>t.type===e)).filter(e=>e!==`target`||B.ast.family===`find`).filter(e=>e!==`pipes`&&e!==`where`).filter(e=>e.toLowerCase().includes(T.toLowerCase())||$C(e).label.toLowerCase().includes(T.toLowerCase())).sort((e,t)=>Number(t.startsWith(T))-Number(e.startsWith(T))),xe=D.kind===`closed`&&T.trim()!==``&&be.length>0&&!/[{}:]/.test(T),Se=xe||ge.has(`text`),Ce=D.kind===`value`?me.filteredItems.length+Number(me.canCommitTyped):be.length+Number(Se),we=jw(B.ast,B.valid&&!N,d?void 0:u,f),Te=d??we;(0,U.useEffect)(()=>{t!==void 0&&t!==re.current&&(re.current=t,t!==ne.current&&(ne.current=t,w(t),E(``),O({kind:`closed`}),A(``),M(-1),P(void 0),R(void 0)))},[t]),(0,U.useEffect)(()=>{ae.current.onValidationChange?.({valid:B.valid&&!N&&!L,error:N??B.error??(L?`Confirm or cancel the query change`:void 0)}),ae.current.onAstChange?.(B.ast)},[B,N,L]),(0,U.useEffect)(()=>{let e=window.matchMedia?.(`(min-width: 640px)`);if(!e)return;let t=()=>S(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,U.useEffect)(()=>{_&&ee.current?.focus()},[_]),(0,U.useEffect)(()=>{D.kind===`value`&&z.current?.focus()},[D]),(0,U.useEffect)(()=>{j>=0&&document.getElementById(`${oe}-option-${j}`)?.scrollIntoView?.({block:`nearest`})},[j,oe]);let Ee=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)},De=e=>{w(e.wql),E(``),P(void 0),Ee(e)},Oe=()=>{O({kind:`closed`}),A(``),M(-1),P(void 0),te.current?.isConnected?te.current.focus():ee.current?.focus()},ke=(e,t)=>{T&&ie.current.valid&&De(ie.current),te.current=document.activeElement instanceof HTMLElement?document.activeElement:null,e.type===`where`||e.type===`pipes`?(O({kind:`wql`}),De(ie.current)):(O({kind:`value`,clause:e,range:t}),A(``)),M(-1),P(void 0)},Ae=e=>{let t=V.find(t=>t.type===e);T&&De(Gw(C)),ke(t??{id:`new-${e}`,type:e,...$C(e),value:``})},je=(0,U.useRef)(Ae);je.current=Ae,(0,U.useEffect)(()=>{b&&je.current(b.type)},[b]);let Me=e=>{let t=e.filterIndex===void 0?e.node===`GroupBy`?V.find(e=>e.type===`groupby`):e.node===`Rollup`?V.find(e=>e.type===`rollup`):e.node===`Head`?V.find(t=>[`kind`,`target`,`agg`,`metric`].includes(t.type)&&t.value===e.text):void 0:V.find(t=>t.filterIndex===e.filterIndex);t&&ke(t,{from:e.from,to:e.to})},Ne=e=>{if(D.kind!==`value`)return!1;let t=V.filter(e=>!de.has(e.type)),n=t[t.findIndex(e=>e.id===D.clause.id)+e];return n?(ke(n),!0):!1},Pe=(e,t)=>{if(e.type===`kind`||e.type===`target`){let n=Ww(ie.current.wql,e.type,t??``);if(!n.draft.valid){P(n.draft.error);return}if(n.removed.length){R(n);return}De(n.draft),Oe();return}let n=Uw(ie.current.wql,e,t);if(!n.valid){P(n.error);return}if(De(n),D.kind===`value`){let r=e.filterIndex,i=Bw(n.ast)?.find(n=>r===void 0?n.type===e.type:n.filterIndex===r&&!!t);O({kind:`value`,clause:i??{...e,value:t??``,filterIndex:void 0}})}},Fe=e=>{if(D.kind===`value`){if(me.isMulti){let t=me.selectedValues,n=D.clause.value!==``&&D.clause.value.split(`|`).every(e=>e.endsWith(`*`))&&!e.endsWith(`*`)?`${e}*`:e;Pe(D.clause,(t.includes(n)?t.filter(e=>e!==n):[...t,n]).join(`|`))}else{let t=Uw(ie.current.wql,D.clause,e);if(!t.valid){P(t.error);return}Pe(D.clause,e),[`kind`,`target`].includes(D.clause.type)||Oe()}}},Ie=()=>{let e=ie.current;!e.valid||N||L||(De(e),a?.(e.wql))},Le=e=>{if(D.kind===`value`&&e.key===`Tab`&&!e.nativeEvent.isComposing){Ne(e.shiftKey?-1:1)&&(e.preventDefault(),e.stopPropagation());return}if(!e.nativeEvent.isComposing){if(e.key===`Enter`&&(e.ctrlKey||e.metaKey)){e.preventDefault(),e.stopPropagation(),Ie();return}if(e.key===`Escape`){if(L){e.preventDefault(),e.stopPropagation(),R(void 0);return}if(D.kind!==`closed`){e.preventDefault(),e.stopPropagation(),Oe();return}if(xe){e.preventDefault(),e.stopPropagation(),De(ie.current),M(-1);return}}if(D.kind===`value`&&e.currentTarget instanceof HTMLInputElement&&e.currentTarget===ee.current){[`Enter`,`ArrowDown`,`ArrowUp`].includes(e.key)&&e.stopPropagation(),e.key===`Enter`&&(e.preventDefault(),Ie());return}if((D.kind===`value`||xe)&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault(),e.stopPropagation(),M(t=>e.key===`ArrowDown`?(t+1)%Ce:t<=0?Ce-1:t-1);return}if(e.key===`Enter`){e.preventDefault(),e.stopPropagation(),j>=0&&xe&&be[j]?Ae(be[j]):xe&&j===be.length?Ie():D.kind===`value`?j>=0&&j<he.length?Fe(he[j].value):me.canCommitTyped&&(j===he.length||j<0)?Fe(me.typedValue):k&&!me.openSlot&&P(`Unknown ${$C(D.clause.type).label} value`):Ie();return}e.key===`Backspace`&&D.kind===`closed`&&!T&&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()}},Re=(0,W.jsxs)(W.Fragment,{children:[o&&(0,W.jsx)(`button`,{type:`button`,onClick:Ie,disabled:!B.valid||!!N||!!L,className:`min-h-12 rounded-lg bg-primary px-4 text-primary-foreground disabled:opacity-50`,children:o}),m]}),ze={...B,valid:B.valid&&!N,error:N??B.error},Be=V.filter(e=>!de.has(e.type)),Ve=D.kind===`value`?Be.findIndex(e=>e.id===D.clause.id):-1;return(0,W.jsxs)(`div`,{className:xS(`min-w-0`,s?`flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-xs transition-shadow focus-within:ring-2 focus-within:ring-ring`:`space-y-2`,y),"data-testid":`wql-composer-root`,children:[l===`top`&&c&&(0,W.jsx)(Aw,{diagnostics:ze,stages:Te,actions:Re,variant:`header`}),(x||s||D.kind===`wql`||!ue)&&(0,W.jsxs)(`div`,{className:`flex min-w-0 w-full items-center gap-2`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(iT,{value:B.wql,placeholder:v,dense:s,className:s?`min-w-0 w-full bg-transparent`:void 0,activeRange:D.kind===`value`?D.range:void 0,activeClause:D.kind===`value`?D.clause:void 0,onSlotActivate:Me,onChange:e=>De(Gw(e)),onSubmit:Ie,onEscape:()=>D.kind!==`closed`&&(Oe(),!0),autoFocus:_})}),x&&s&&F&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(Gw(F)),I(void 0)},className:`min-h-9 shrink-0 rounded-lg px-2.5 text-xs text-muted-foreground hover:text-foreground`,children:`Undo removal`})]}),(0,W.jsxs)(`div`,{className:xS(`flex min-w-0 flex-wrap items-center gap-1`,!x&&!s&&`rounded-xl border border-border p-2`,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=Be[t.indexOf(e.target)];!n||[`kind`,`target`,`agg`,`metric`].includes(n.type)||(e.preventDefault(),e.stopPropagation(),I(ie.current.wql),Pe(n,null),ee.current?.focus())},children:[ue&&D.kind!==`wql`&&Be.map(e=>(0,W.jsx)(ew,{clause:e,compact:s,isActive:D.kind===`value`&&D.clause.id===e.id,onClick:()=>ke(e),onRemove:[`kind`,`target`,`agg`,`metric`].includes(e.type)?void 0:()=>{I(ie.current.wql),Pe(e,null)}},e.id)),!x&&D.kind!==`wql`&&ue&&(0,W.jsx)(`input`,{ref:ee,type:`text`,role:`combobox`,"aria-label":`Search text or WQL`,"aria-controls":xe?oe:void 0,"aria-expanded":xe,"aria-activedescendant":xe&&j>=0?`${oe}-option-${j}`:void 0,value:T,placeholder:v,onChange:e=>{let t=e.target.value;E(t),M(-1),P(void 0),Ee(Gw(C,t))},onKeyDown:Le,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]}),(!x&&!s||!s&&F)&&(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[!x&&!s&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(ie.current),D.kind===`wql`?Oe():O({kind:`wql`})},disabled:D.kind===`wql`&&!ue,className:`min-h-12 rounded-lg px-3`,children:D.kind===`wql`?`Guided controls`:`Edit WQL`}),F&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{De(Gw(F)),I(void 0)},className:`min-h-12 rounded-lg px-3`,children:`Undo removal`})]}),D.kind===`value`&&(0,W.jsxs)(`div`,{"data-testid":`wql-field-picker`,className:xS(`min-w-0`,s?`border-t border-border/70 bg-muted/20 px-2.5 py-2 space-y-1.5`:`space-y-2 rounded-xl border border-border/80 bg-muted/30 p-2 sm:p-2.5 shadow-xs backdrop-blur-sm`),onKeyDown:e=>{(e.key===`Escape`||e.key===`Enter`&&(e.ctrlKey||e.metaKey))&&Le(e)},children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`div`,{className:`inline-flex shrink-0 items-center gap-1.5 rounded-md border border-border/70 bg-background/80 px-2.5 py-1 text-xs font-semibold text-foreground font-mono`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-xs`,children:$C(D.clause.type).icon}),(0,W.jsx)(`span`,{children:$C(D.clause.type).label})]}),(0,W.jsxs)(`label`,{className:`sr-only`,children:[`Search `,$C(D.clause.type).label]}),(0,W.jsx)(`input`,{ref:z,type:`search`,role:`combobox`,"aria-label":`Search ${$C(D.clause.type).label}`,"aria-controls":oe,"aria-expanded":`true`,"aria-activedescendant":j>=0?`${oe}-option-${j}`:void 0,value:k,placeholder:D.clause.value?`Current: ${D.clause.value}`:`Type value for ${$C(D.clause.type).label}…`,onChange:e=>{A(e.target.value),M(-1),P(void 0)},onKeyDown:Le,className:`min-h-10 sm:min-h-8 min-w-0 flex-1 rounded-lg border border-border/80 bg-background px-2.5 font-mono text-sm sm:text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary shadow-xs`,"data-testid":`wql-picker-search`}),D.clause.filterIndex!==void 0&&(0,W.jsxs)(`div`,{className:`order-last flex w-full items-center gap-1.5 sm:order-none sm:w-auto`,children:[(0,W.jsxs)(`label`,{className:`inline-flex cursor-pointer select-none items-center gap-1.5 px-2 py-0.5 rounded-md border border-border/60 bg-background/70 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D.clause.negate??!1,onChange:e=>Pe({...D.clause,negate:e.target.checked},D.clause.value),className:`size-3 rounded border-border text-primary focus:ring-primary`}),(0,W.jsx)(`span`,{children:`Exclude`})]}),(0,W.jsxs)(`label`,{className:`inline-flex cursor-pointer select-none items-center gap-1.5 px-2 py-0.5 rounded-md border border-border/60 bg-background/70 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D.clause.value.split(`|`).every(e=>e.endsWith(`*`)),onChange:e=>Pe(D.clause,D.clause.value.split(`|`).map(t=>`${t.replace(/\*$/,``)}${e.target.checked?`*`:``}`).join(`|`)),className:`size-3 rounded border-border text-primary focus:ring-primary`}),(0,W.jsx)(`span`,{children:`Starts with`})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":`Previous WQL segment`,"data-testid":`wql-segment-previous`,disabled:Ve<=0,onClick:()=>{Ne(-1)&&z.current?.focus()},className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md border border-border/70 bg-background/80 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:pointer-events-none text-xs transition-colors`,children:`←`}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Next WQL segment`,"data-testid":`wql-segment-next`,disabled:Ve<0||Ve>=Be.length-1,onClick:()=>{Ne(1)&&z.current?.focus()},className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md border border-border/70 bg-background/80 text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:pointer-events-none text-xs transition-colors`,children:`→`}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Close segment editor`,onClick:Oe,className:`flex items-center justify-center min-h-9 min-w-9 sm:min-h-7 sm:min-w-7 rounded-md text-muted-foreground hover:bg-muted hover:text-foreground text-xs transition-colors`,children:`✕`})]})]}),D.kind===`value`&&D.clause.type===`time`&&(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 pt-0.5 text-xs`,children:[(0,W.jsxs)(`label`,{className:`block text-muted-foreground`,children:[`Start date`,(0,W.jsx)(`input`,{type:`date`,"aria-label":`Start date`,className:`mt-1 min-h-8 w-full rounded-md border border-border/80 bg-background px-2.5 text-xs text-foreground`,onChange:e=>{let t=ve();Pe(D.clause,`from ${e.target.value}${t?.kind===`range`&&t.end?` to ${t.end}`:``}`)},value:_e?.kind===`range`?_e.start:``})]}),(0,W.jsxs)(`label`,{className:`block text-muted-foreground`,children:[`End date`,(0,W.jsx)(`input`,{type:`date`,"aria-label":`End date`,className:`mt-1 min-h-8 w-full rounded-md border border-border/80 bg-background px-2.5 text-xs text-foreground`,onChange:e=>{let t=ve();t?.kind===`range`?Pe(D.clause,`from ${t.start}${e.target.value?` to ${e.target.value}`:``}`):P(`Choose a start date first`)},value:_e?.kind===`range`?_e.end??``:``})]})]}),D.kind===`value`&&(pe?(0,W.jsx)(pe.Editor,{value:pe.parseValue?pe.parseValue(D.clause.value):D.clause.value,onChange:e=>Pe(D.clause,pe.formatValue?pe.formatValue(e):String(e)),onClose:Oe}):(0,W.jsx)(nw,{clause:D.clause,filteredItems:he,selectedValues:me.selectedValues,isMulti:me.isMulti,typedValue:me.typedValue,canCommitTyped:me.canCommitTyped,emptyText:me.emptyText,highlightIdx:j,onHighlight:M,onCommitValue:Fe,onCommitTyped:Fe,listId:oe,onDone:Oe,onReorder:e=>Pe(D.clause,e.join(`|`))}))]}),xe&&(0,W.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:[be.map((e,t)=>(0,W.jsxs)(`button`,{id:`${oe}-option-${t}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>M(t),onClick:()=>Ae(e),className:xS(`flex min-h-12 w-full items-center gap-2 rounded px-3 text-left`,t===j&&`bg-muted`),"data-testid":`wql-filter-typeahead-${e}`,children:[(0,W.jsxs)(`span`,{children:[V.some(t=>t.type===e)?`Edit`:`Add`,` `,$C(e).label]}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e})]},e)),Se&&(0,W.jsxs)(`button`,{id:`${oe}-option-${be.length}`,type:`button`,role:`option`,"aria-selected":!1,onMouseEnter:()=>M(be.length),className:xS(`min-h-12 w-full rounded px-3 text-left`,j===be.length&&`bg-muted`),onClick:Ie,children:[`Search text `,T]})]}),L&&(0,W.jsxs)(`div`,{role:`alertdialog`,"aria-label":`Confirm query pivot`,className:`rounded-xl border border-border p-3`,children:[(0,W.jsx)(`p`,{children:`Changing the query removes incompatible clauses:`}),(0,W.jsx)(`ul`,{children:L.removed.map(e=>(0,W.jsx)(`li`,{children:e},e))}),(0,W.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>R(void 0),children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,className:`min-h-12 px-3`,onClick:()=>{De(L.draft),R(void 0),Oe()},children:`Change query`})]}),!c&&(N??B.error)&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:N??B.error}),!ue&&!B.error&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Use Edit WQL to preserve every clause.`}),T&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`wql-composer-pending`,children:B.valid?`Current draft includes this text`:B.error}),c&&l===`bottom`?(0,W.jsx)(Aw,{diagnostics:ze,stages:Te,actions:Re}):l!==`top`||!c?!!(o||m)&&(0,W.jsx)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:Re}):null]})}function oT({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,U.useState)(n),[u,d]=(0,U.useState)({valid:!X(n).error}),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null);(0,U.useEffect)(()=>{e&&(l(n),d({valid:!X(n).error}),h(null))},[e,n]);let g=(0,U.useCallback)(e=>{if(!s)throw Error(`No executor provided`);return ah(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,W.jsx)(LC,{open:e,onClose:t,presentation:`sheet`,title:i,description:a,footer:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`flex-1 min-w-0 truncate font-mono text-xs text-muted-foreground`,"data-testid":`wql-inspector-draft`,children:c}),(0,W.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,W.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,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(aT,{query:c,onQueryChange:l,onValidationChange:d,execute:s?g:void 0,showDiagnostics:!0}),m&&(0,W.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 sT({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,U.useState)(!1),h=(0,U.useMemo)(()=>MC(e),[e]),{query:g,missing:_}=(0,U.useMemo)(()=>{let t=Tv(h.length>0?h[0].query:e,c??{}),n=new Set(t.missing);for(let e of Object.values(l??{}))for(let t of Tv(e,c??{}).missing)n.add(t);return{query:t.query,missing:[...n]}},[h,e,c,l]),v=(0,U.useMemo)(()=>{let e={};for(let[t,n]of Object.entries(l??{}))e[t]=Tv(n,c??{}).query;return e},[l,c]),y=(0,U.useMemo)(()=>X(g),[g]),b=o!=null&&o!==``&&!pv(o),[x,S]=(0,U.useState)(void 0),[C,w]=(0,U.useState)(void 0),[T,E]=(0,U.useState)(void 0),[D,O]=(0,U.useState)(void 0),[k,A]=(0,U.useState)(0);(0,U.useEffect)(()=>{if(n){let e=n(()=>{A(e=>e+1)});return()=>{typeof e==`function`&&e()}}},[n]),(0,U.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(ah(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(sh(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,U.useMemo)(()=>{if(!(!ah(y)||y.target!==`session`))return y.filters.find(e=>e.key===`result`)?.values[0]?.value},[y]);return(0,W.jsxs)(`div`,{"data-testid":`query-block-view`,children:[s?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:s})}):b?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(JS,{message:hv(o)})}):_.length>0?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(JS,{message:gv(_)})}):y.error?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.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,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsxs)(`div`,{className:`text-xs text-destructive bg-destructive/10 border border-destructive/20 rounded p-2`,children:[`Query execution error: `,D]})}):ah(y)?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:C?.table?(0,W.jsx)(KS,{type:`table`,result:C}):N&&C?.runs&&C.runs.length>0?(0,W.jsx)(Jee,{resultId:N,sessionResult:C,executor:t,onCaptureRpe:u,onCaptured:()=>A(e=>e+1)}):C?.runs?(0,W.jsx)(kC,{result:C}):C?(0,W.jsx)(uT,{target:y.target,notes:C.notes,blocks:C.blocks,containers:C.containers,onOpenNote:d,noteHref:f}):(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading rows…`})}):sh(y)?(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(dT,{result:T,onOpenNote:d,noteHref:f,widgetType:o,attributes:v,fallbackLabel:y.raw})}):(0,W.jsx)(fT,{onEdit:M,readOnly:a,children:(0,W.jsx)(cT,{result:x,metric:y.metric,widgetType:o,attributes:v})}),j&&(0,W.jsx)(oT,{isOpen:p,onClose:()=>m(!1),initialQuery:g,executor:t,onApply:e=>r(e)})]})}function cT({result:e,metric:t,widgetType:n,attributes:r}){let i=TS(e);return n!=null&&n!==``?(0,W.jsx)(KS,{type:n,result:e,label:t,attributes:r}):i.kind===`scalar`?(0,W.jsx)(DS,{result:e,label:t}):i.kind===`timeseries`?(0,W.jsx)(PS,{result:e}):i.kind===`bars`?(0,W.jsx)(FS,{result:e}):(0,W.jsx)(ES,{result:e})}function lT(e){if(!e||e.kind!==`page`)return;let{slug:t,date:n}=e;if(t)return`/page/${encodeURIComponent(t)}`;if(n)return`/day/${encodeURIComponent(n)}`}function uT({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,W.jsxs)(`div`,{className:`text-xs text-muted-foreground py-2`,children:[`No `,e,`s matched this query.`]}):(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsxs)(`div`,{className:`text-[11px] font-medium text-muted-foreground mb-1`,children:[s.length,` `,e,s.length===1?``:`s`,` matched`]}),(0,W.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?lT(r[e.id])??(a?a(t):void 0):a?a(t):void 0;return(0,W.jsx)(`li`,{className:`rounded hover:bg-muted/50 truncate`,children:s?(0,W.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,W.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,W.jsx)(`span`,{className:`block py-0.5 px-1.5 text-foreground truncate`,children:n})},e.id)})})]})}function dT({result:e,onOpenNote:t,noteHref:n,widgetType:r,attributes:i,fallbackLabel:a}){if(!e)return(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground py-2`,children:`Loading…`});if(e.error)return(0,W.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,W.jsx)(uT,{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,W.jsx)(kC,{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,W.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,W.jsx)(KS,{type:s,result:OS(e),label:a,attributes:{...t,...i}})})}return e.series&&e.series.length>0?(0,W.jsx)(`div`,{className:`w-full h-[220px] min-h-[160px]`,children:(0,W.jsx)(cT,{result:OS(e),metric:a})}):(0,W.jsx)(ES,{result:OS(e)})}function fT({children:e,onEdit:t,readOnly:n}){return(0,W.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,W.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,W.jsx)(gn,{className:`w-3.5 h-3.5`})}),e]})}function pT(e){let t=Ar.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?[ni,t]:[t]}var mT=Hr.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 vi,{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,Vr.line({attributes:{id:s}}))}return t.finish()}},{decorations:e=>e.decorations}),hT=Jr.define({combine(e){return e.length>0?e[e.length-1]:null}});function gT(e){return/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e)}function _T(e,t){let n=Lr(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(gT(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)),gT(n))return r=n,!1}}),r}var vT=[Ir((e,t)=>_T(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}),Hr.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=_T(e,n);if(!r)return;t.preventDefault(),t.stopPropagation();let i=e.state.facet(hT);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){}}),Ar.domEventHandlers({mousemove(e,t){let n=t.posAtCoords({x:e.clientX,y:e.clientY});if(n==null)return!1;let r=_T(t,n);return t.dom.style.cursor=r&&(e.ctrlKey||e.metaKey)?`pointer`:``,!1},keydown(e,t){return t.dom.style.cursor=``,!1}})],yT=Jr.define({combine:e=>e[0]}),bT=Jr.define({combine:e=>e.length?e.flat():void 0}),xT=Xr.define(),ST=Xr.define(),CT=Xr.define(),wT=Xr.define(),TT=Xr.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 ET(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 DT(e,t,n){let r=e.doc.lineAt(n);return t[r.number-1]+n-r.from}function OT(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 kT(e,t,n,r,i,a=[]){let o=e.facet(bT),s=La(t,{sourceRevision:n,blocks:r,registeredWidgets:o}),c=ET(t),l=Fa(t,{registeredWidgets:o}).map(e=>{let t=c.editorStarts[e.startLine],n=c.editorStarts[e.endLine]+e.to-c.rawStarts[e.endLine],r=Ia(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?vv(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 AT=si.define({create(e){let t=e.facet(yT),n=t?.rawContent??e.doc.toString();if(n.replace(/\r\n|\r/g,`
64
64
  `)!==e.doc.toString())throw Error(`Editor source and identity map disagree`);t&&Ra(n,t.blocks,t.sourceRevision,{registeredWidgets:e.facet(bT)});let r=Object.fromEntries(Object.values(t?.blocks??{}).map(e=>[e.id,e.version]));return kT(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}=ET(n),a=[],o=n.includes(`\r
65
65
  `)?`\r
66
66
  `:n.includes(`\r`)?`\r`:`
@@ -99,7 +99,7 @@ sum:$metric{} by {week}
99
99
  `,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 Tz({noteId:e,sourceRevision:t,blocks:n={},persistence:r=Dj,onRevert:i}){let[a,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(0),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(!1);(0,U.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,W.jsxs)(`details`,{className:`rounded-lg border border-border p-3`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer font-medium focus-visible:ring-2`,children:`Saved block history`}),(0,W.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[p&&(0,W.jsx)(`p`,{role:`alert`,children:p}),_.length===0?(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No saved actionable blocks.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`label`,{className:`block text-sm`,children:[`Block occurrence`,(0,W.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,W.jsxs)(`option`,{value:e,children:[`Block `,t+1,` · `,e,n[e]?``:` · removed`]},e))})]}),(0,W.jsx)(`ol`,{"aria-label":`Saved versions`,className:`space-y-1 text-sm`,style:{contentVisibility:`auto`},children:y.map(e=>(0,W.jsxs)(`li`,{children:[`v`,e.version,` · `,(0,W.jsx)(`time`,{dateTime:new Date(e.savedAt).toISOString(),children:eb(new Date(e.savedAt))}),` · `,e.kind,e.dialect?` · ${e.dialect}`:``,e.sport?` · ${e.sport}`:``]},e.version))}),(0,W.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,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`label`,{className:`block text-sm`,children:[e,(0,W.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,W.jsxs)(`option`,{value:e.version,children:[`v`,e.version]},e.version))})]}),(0,W.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,W.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,W.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 Ez(e){let t=await pk(),n=[`markdown/notebooks/${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 Dz(e){return await Ez(e)??null}var Oz=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 kz(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 Az(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:kz(e),nextFragments:o,behaviorsMetadata:s}}function jz(e){return{type:`rpc-stack-update`,snapshotType:e.type,blocks:e.blocks.map(Az),affectedBlockKey:e.affectedBlock?.key.toString(),depth:e.depth,clockTime:e.clockTime.getTime()}}function Mz(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 Nz(e,t,n){return{type:`rpc-analytics-summary`,totalDurationMs:t,completedSegments:n,projections:e}}function Pz(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 Fz=class{transport;id;lastFingerprint=``;constructor(e,t){this.transport=e,this.id=t?.id??`chromecast`}onStackSnapshot(e){if(!this.transport.connected)return;let t=jz(e),n=this.computeFingerprint(t);n!==this.lastFingerprint&&(this.lastFingerprint=n,this.transport.send(t))}onOutput(e){this.transport.connected&&this.transport.send(Mz(e))}sendAnalyticsSummary(e,t,n){this.transport.connected&&this.transport.send(Nz(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:${Pz(n.displayFragments)}`),t.push(`promote:${Pz(n.promoteFragments)}`),t.push(`result:${Pz(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(`|`)}},Iz=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 Lz(e,...t){console.warn(`[${e}]`,...t)}function Rz(e,...t){console.error(`[${e}]`,...t)}var zz={createSubscription:(e,t)=>new Fz(e,{id:t}),createEventProvider:e=>new Oz(e),createClockSync:e=>new Iz(e)},Bz=new class{deps;activeHandle=null;activeMeta=null;constructor(e=zz){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=>{Rz(`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 Vz(){return(0,U.useSyncExternalStore)(fM,cM,cM)}function Hz(e,t){if(!e||e.trim().length===0)return{statements:[],errors:[],success:!0};try{let n=e.endsWith(`
100
100
  `)?e:e+`
101
101
  `;return{statements:tc(ri.create({doc:n,extensions:[Wc]}),t),errors:[],success:!0}}catch(e){return{statements:[],errors:[{message:e instanceof Error?e.message:`Unknown parse error`,severity:`error`}],success:!1}}}function Uz(e,t={}){let n=t.sourceRevision??1,r=La(e,{...t,blocks:t.noteBlocks,sourceRevision:n}),i=Fa(e,t),a=[];for(let e of i){if(!Ia(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=Wz({...e.scriptBlock,id:t.id,version:t.version}),a.push(e.scriptBlock)))}return{sections:i,blocks:a,noteBlocks:r,rawContent:e,sourceRevision:n}}function Wz(e){try{let t=Hz(e.content,e.sport);return{...e,statements:t.statements,errors:t.errors,state:t.success?`parsed`:`error`}}catch(t){return gM(`WorkbenchDocumentModel`,`Block parse error:`,t),e}}var Gz={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:{handleStart:()=>{},handlePause:()=>{},handleStop:()=>{},handleNext:()=>{},handleStartWorkoutAction:()=>{}},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`},Kz=5e3;function qz(e={}){let t=e.listeners??[],n=e.nowProvider??Ml,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=Dn()((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{...Gz,setContent:r=>{let s=Uz(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(()=>{})},Kz))),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(()=>{})},Kz))},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=wz({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=Uz(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 pM({noteId:a,rawContent:i.content,blocks:i.noteBlocks,expectedSourceRevision:i.sourceRevision},e,nn(),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=Uz(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 Yy.process(r),{v7:c}=await zt(async()=>{let{v7:e}=await import(`./vendor-DnqYaW-D.js`).then(e=>e.At);return{v7:e}},__vite__mapDeps([0,1,2]));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.getRecord(o)));if(d){let e=Uz(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 Dz(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}=Sz(t.runtime);return t.runtime?{outputStatementList:n,analyticsSegments:r,analyticsGroups:i}:{outputStatementList:n}}),clearOutputStatementList:()=>t({outputStatementList:[]}),feedLogOutputs:(e,n)=>{let{segments:r,groups:i}=Cz(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,fa.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}),Bz.setSubscriptionRegistry(e)},setViewMode:e=>t({viewMode:e}),setRuntime:e=>{for(let e of s)e();if(s=[],e){let r=Sz(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(Mi(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=PM();if(i?.connected){let t=new Fz(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({...Gz})}}});return t.length>0&&c.subscribe(e=>{for(let n of t)n(e)}),Object.assign(c,{__nowProvider:n})}var Jz=qz();function Yz(e){let t=Jz;return Jz=e,t}function Xz(){return Jz}var Zz=e=>Pt(Jz,e),Qz=({nowProvider:e,notePersistence:t,provider:n,navigate:r,children:i})=>{let a=(0,U.useMemo)(()=>qz({nowProvider:e,notePersistence:t,provider:n,navigate:r}),[e,t,n,r]);return(0,U.useEffect)(()=>{let e=Yz(a);return()=>{Yz(e),a.getState().resetStore()}},[a]),U.createElement(U.Fragment,null,i)},$z={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)},eB={getAllNotes:()=>Z.getAllNotes(),getNotesByIds:async e=>[...(await Z.getDetailBatches(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}},tB={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}},nB=class{async getAllEfforts(){let e=UO();return e.isInitialized()||await RO(e),[...e.list()]}},rB=new n_,iB={events:[],notes:[]},aB={events:[],notes:[]};rB.set(`@session`,iB),rB.set(`@today`,aB);function oB(){let e=Xz().getState(),t=e.runtime?.getOutputStatements()??[],n=e.currentEntry;return iB.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?(iB.events=[],iB):(iB.events=p_(t.map(om),{noteId:n?.id??``,resultId:`live:${n?.id??`session`}`,origin:`playground`,workoutTimestamp:n?.targetDate}),iB)}function sB(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 Bg(e.date??e.createdAt,r)}async function cB(e,t){let n=Bg(e.instant,e.timeZone),r=Gg(n,e.timeZone),i=Gg(Vg(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)sB(t,d.get(t.id)??[],u,e.timeZone)===n&&f.push(t);t===dB&&(aB.events=l,aB.notes=f,oB())}var lB=null,uB=null,dB=0,fB=!1,pB=new Set;function mB(){for(let e of pB)e()}function hB(e,t){uB=t;let n=++dB;return lB=cB(e,n),lB.then(()=>{n===dB&&gB()},()=>{n===dB&&gB()}),lB}function gB(){fB=!0,mB()}function _B(){let e=Pg(),t=Bg(e.instant,e.timeZone);return!lB||uB!==t?hB(e,t):lB}function vB(){fB=!1;let e=Pg();return hB(e,Bg(e.instant,e.timeZone))}function yB(){return fB}function bB(e){return pB.add(e),()=>{pB.delete(e)}}var xB=class extends tv{async runQuery(e,t){return await _B(),super.runQuery(e,t)}async runPipeline(e,t){return await _B(),super.runPipeline(e,t)}async runFind(e,t){return await _B(),super.runFind(e,t)}async runRows(e,t){return await _B(),super.runRows(e,t)}async run(e,t){return await _B(),super.run(e,t)}};function SB(){return new xB({eventStore:$z,noteStore:eB,blockStore:tB,effortStore:new nB,blockEffortsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`block_efforts`,e,t)},tagsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`tags`,e,t),getAll:()=>Z.getAllTags()},noteTagsStore:{getAllFromIndex:(e,t)=>Z.getAllFromIndex(`note_tags`,e,t)},pageStore:{getNotePages:e=>Z.getNotePages(e),getPage:e=>Z.getPage(e),getAllPages:()=>Z.getAllPages(),getAllLinks:()=>Z.getAllPageNotes()},relationStore:{getBatches:e=>Z.getDetailBatches(e)},datasetStore:{getDataset:e=>e===`@session`?oB():rB.getDataset(e)}})}var CB=SB();function wB(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 TB=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function EB(e){return typeof e==`string`&&e&&!TB.test(e)?e:void 0}function DB(e){return!!e.sourceId?.startsWith(`notebook:`)||e.sourcePath?.startsWith(`markdown/notebooks/`)===!0}function OB(e){return e.type===`dashboard`||e.sourceId===`dashboards`||e.sourcePath?.startsWith(`markdown/dashboards/`)===!0}function kB(e){return e.sourceId===`efforts`||e.sourcePath?.startsWith(`markdown/efforts/`)===!0}function AB(e){return e.sourceId===`equipment`||e.sourcePath?.startsWith(`markdown/equipment/`)===!0}function jB(e){return e.type===`tag`&&e.id.startsWith(`tag/`)}function MB(e){let t=/^tag\/([^/]+)\/(.+)$/.exec(e.id);return t?{type:t[1],label:t[2]}:void 0}function NB(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 PB(e){let t=e.sourceId;if(t?.startsWith(`notebook:`)){let e=t.slice(9);if(e&&e!==`_root`){let t=e.indexOf(`/`);return t===-1?{slug:e,item:``}:{slug:e.slice(0,t),item:e.slice(t+1)}}}let n=/^markdown\/notebooks\/([^/]+)\/(.+)\.md$/.exec(e.sourcePath??``);if(n)return{slug:n[1],item:n[2].toLowerCase()===`readme`?``:n[2]};let r=e.id;if(TB.test(r))return{slug:``,item:``};let[i,...a]=r.split(`/`);return{slug:i,item:a.join(`/`)}}function FB(e){return e.sourceId===`playground`||e.type===`playground`||e.id.startsWith(`playground/`)}function IB(e){return e.id.startsWith(`playground/`)?e.id.slice(11):e.id}function LB(e){return{...RB(e),noteType:e.type,notebookId:C_(e),feedId:e.feedSourceId??(w_(e)===`user`?`local`:`core`),editable:ka(e,w_(e))}}function RB(e){let t=e.id,n=e.title,r=e.tags&&e.tags.length>0?e.tags:void 0;if(FB(e))return{id:t,kind:`note`,sourceNotebook:`playground`,sourceNote:IB(e),sourceId:e.sourceId,title:n,date:null,createdAt:e.createdAt,...r?{tags:r}:{}};if(DB(e)){let{slug:i,item:a}=PB(e),o=!a,s=a.split(`/`),c=s.length>1&&/^\d{4}-\d{2}-\d{2}$/.test(s[0])?s[0]:null;return{id:t,kind:`note`,sourceNotebook:i,sourceNote:o?``:a,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:c??(e.date?hF(new Date(e.date)):null),createdAt:e.createdAt,subtitle:i,...r?{tags:r}:{}}}if(OB(e))return{id:t,kind:`dashboard`,sourceNotebook:`dashboards`,sourceNote:NB(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`dashboards`,...r?{tags:r}:{}};if(kB(e)){let i=NB(e,2)??t,a=e.sourcePath?.match(/^markdown\/efforts\/([^/]+)\//)?.[1];return{id:t,kind:`effort`,sourceNotebook:`efforts`,sourceNote:i,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:a,effort:{slug:i},...r?{tags:r}:{}}}if(AB(e))return{id:t,kind:`equipment`,sourceNotebook:`equipment`,sourceNote:NB(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`equipment`,...r?{tags:r}:{}};if(jB(e)){let i=MB(e);return{id:t,kind:`tag`,sourceNotebook:`tags`,sourceNote:i?.label??n,title:n||i?.label||t,date:null,createdAt:e.createdAt,subtitle:(`tagType`in e&&typeof e.tagType==`string`?e.tagType:void 0)??i?.type,detail:e.rawContent||void 0,...r?{tags:r}:{}}}if(e.sourceId?.startsWith(`guides:`)){let i=e.sourceId.slice(7)||t;return{id:t,kind:`note`,sourceNotebook:`guides`,sourceNote:i,sourceId:e.sourceId,sourcePath:e.sourcePath,pageSlug:EB(i.replace(/^\//,``).replace(/^page\//,``)),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=hF(new Date(e.targetDate)):e.createdAt&&(i=hF(new Date(e.createdAt))),{id:t,kind:`note`,sourceNotebook:`journal`,sourceNote:t,sourceId:e.sourceId,sourcePath:e.sourcePath,pageId:`pageId`in e&&typeof e.pageId==`string`?e.pageId:void 0,pageSlug:`slug`in e?EB(e.slug):void 0,title:n,date:i,createdAt:e.createdAt,...r?{tags:r}:{}}}function zB(e){return{id:e.noteId,title:e.noteTitle,createdAt:e.createdAt,type:`note`,sourceId:e.sourceId,sourcePath:e.sourcePath,rawContent:``,sourceRevision:1,blocks:{}}}var BB=3,VB=120;function HB(e){return e.split(`
102
- `).map(e=>e.trim()).filter(Boolean).slice(0,BB).map(e=>e.length>VB?`${e.slice(0,119)}…`:e)}function UB(e){let t=LB(zB(e));return{...t,blockContentId:e.blockContentId??t.blockContentId,block:{blockId:e.blockId,dataType:e.dataType,preview:HB(e.rawContent)}}}function WB(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 GB(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 KB(e){if(!e)return`Workout Session`;let t=wB(e);return t.kind===`journal`?t.id?`Journal: ${t.id}`:`Journal Entry`:t.kind===`workout`?WB(t.id)||t.id:t.id?WB(t.id):e}function qB(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`,sourceNotebook:e.registrySource??`effort`,sourceNote: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 JB(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 YB(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=JB(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 XB(e,t){let n=YB(e),r=[];n.elapsedMs!=null&&r.push(GB(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(WB),a=hF(new Date(e.timestamp)),o=e.events.find(e=>!!e.blockContentId)?.blockContentId;return{id:e.resultId,kind:`result`,sourceNotebook:`results`,sourceNote:e.resultId,title:t?.noteTitle??KB(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 ZB(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=JB(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?WB(e.effortSlug):e.outputType===`segment`?`Round ${c+1}`:`${e.outputType.charAt(0).toUpperCase()+e.outputType.slice(1)} ${c+1}`,u=[];n!=null&&u.push(GB(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=hF(new Date(e.timestamp));return{id:e.id,kind:s,sourceNotebook:`results`,sourceNote:e.id,title:l,date:d,blockContentId:e.blockContentId,subtitle:u.join(` • `),detail:e.effortSlug?WB(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 QB(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(ZB(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(ZB(i,{index:e++}))}return t}return e.runs.map(e=>XB(e,{noteTitle:t?.noteTitles?.get(e.noteId)}))}function $B(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,sourceNotebook:`results`,sourceNote:i??r??`${t}:${n}`,title:a?WB(a):`${t===`segment`?`Segment`:`Event`} ${n+1}`,date:typeof e.date==`string`?e.date:null,subtitle:o.length>0?o.join(` • `):void 0}}function eV(e){let t=e.parsed.family===`aggregate`?e.parsed.metric:`metric`;return e.series.map(e=>{let n=e.points.map(t=>`${t.value}${e.unit?` ${e.unit}`:``}`).join(` • `);return{id:`aggregate:${t}:${e.key}`,kind:`result`,sourceNotebook:`results`,sourceNote:e.label,title:`${t}: ${n}`,subtitle:e.label,date:null}})}function tV(e,t,n){e&&e({selected:Math.max(t?.selected??0,n.length),matched:n.length})}function nV(e){return typeof e==`object`&&!!e&&`runFind`in e}var rV=new class e{customService;noteTitleResolver;noteTagsResolver;noteBlockInfo;constructor(e){nV(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??CB}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=new Set;for(let r of e)r.sourceNotebook===`journal`&&n.add(r.id),t&&(!r.title||!r.tags||r.tags.length===0)&&n.add(r.id);if(n.size===0)return;let r=await Z.getDetailBatches([...n]);for(let t of e){if(t.sourceNotebook!==`journal`)continue;let e=r.get(t.id),n=Ca(e?.links??[],e?.pages??[]);t.placements=n;let i=wa(n);t.pageId??=i.pageId,i.pageSlug&&(t.pageSlug=i.pageSlug)}if(t)for(let t of e){let e=r.get(t.id);!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(ah(n)){if(n.target===`effort`){let e=this.service.runFindEffort?await this.service.runFindEffort(n):await this.service.runFind(n),r=new Map(e.notes.map(e=>[e.id,e])),i=(e.efforts??[]).map(e=>e.ownerNoteId&&r.has(e.ownerNoteId)?LB(r.get(e.ownerNoteId)):qB(e));return tV(t,e.stages,i),i}if(n.target===`block`){let e=await this.service.runFind(n),r=e.blocks.map(UB);return await this.hydrateEntries(r,!0),tV(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=QB(e,{noteTitles:r});return tV(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)=>$B(t,e,n));return tV(t,r.stages,i),i}let e=await this.service.runFind(n),r=e.notes.map(LB);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),tV(t,e.stages,r),this.noteBlockInfo)for(let t=0;t<r.length;t++){let n=r[t],i=e.notes[t];n.excerpt=HB(i.rawContent);try{Ra(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&&Fa(i.rawContent).find(e=>e.from===a.from&&e.scriptBlock);if(a&&o?.scriptBlock){let e=o.scriptBlock.content,t=ba(e);n.wodBlock={blockId:a.id,blockVersion:a.version,blockContentId:t,content:e},n.blockContentId=t}}return r}if(n.family===`aggregate`){if(!this.service.runQuery)return[];let e=await this.service.runQuery(n.raw),r=eV(e);return t?.({selected:e.stages?.selected??r.length,matched:r.length}),r}return[]}};async function iV(e,t=rV,n){return t.query(e,n)}function aV(e){return e?e.map(e=>e.kind===`wql`?`${e.id}|${e.query}|${e.limit??``}`:`s:${e.id}`).join(`;`):``}async function oV(e){try{let t=(await iV(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 sV(e){let t=aV(e),n=(0,U.useRef)(e);n.current=e;let[r,i]=(0,U.useState)(()=>e&&!e.some(e=>e.kind===`wql`)?e:[]);return(0,U.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`?oV(e):Promise.resolve(e))).then(e=>{t||i(e)}),()=>{t=!0}},[t]),r}function cV(){let[e]=fn(`s`,{shallow:!0}),{navState:t}=IP(),n=t.activeL3Id??``;return e||n||``}function lV({entry:e,active:t,onActivate:n}){let r=e.onRun;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:G(`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`:G(`hover:bg-muted/60 hover:text-foreground`,e.muted?`text-muted-foreground/70`:`text-muted-foreground`)),children:[e.icon&&(0,W.jsx)(e.icon,{className:`size-4 shrink-0`}),e.timestamp&&(0,W.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/60`,children:e.timestamp}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 line-clamp-2 break-words`,title:e.label,children:e.label}),e.badge&&(0,W.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/50`,children:e.badge}),r&&(0,W.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,W.jsx)(O,{className:`size-3.5`}):e.runIcon===`stop`?(0,W.jsx)(x,{className:`size-3.5`}):e.runIcon===`edit`?(0,W.jsx)($t,{className:`size-3.5`}):(0,W.jsx)(o,{className:`size-3.5`})})]})}function uV({entries:e,activeId:t,onSection:n}){let r=On(),{scrollToSection:i}=IP(),a=OF(),o=e=>{if(a(),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,W.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.map(e=>e.kind===`section`?e.entries.length===0?null:(0,W.jsxs)(`div`,{className:`mt-1 flex flex-col gap-0.5 first:mt-0`,children:[(0,W.jsx)(`div`,{className:`px-2 pb-1 pt-3 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,W.jsx)(uV,{entries:e.entries,activeId:t,onSection:n})]},e.id):e.kind===`wql`?null:(0,W.jsx)(lV,{entry:e,active:t!=null&&e.sectionId===t,onActivate:o},e.id))})}function dV(){let e=On(),{scrollToSection:t}=IP();return{navigate:(t,n)=>e(t,{replace:n?.replace}),setQueryParam:(e,t)=>{},scrollToSection:t}}function fV(){let e=dV(),{openCreateJournal:t}=IP(),n=OF();return r=>{if(n(),r.id===`home-new-journal`){t({mode:`blank`});return}_L(r.action,e)}}function pV(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 mV({items:e}){let{navState:t}=IP(),n=Ft(),r=fV();return(0,W.jsx)(fI,{children:e.map(e=>{if(e.variant===`notable`)return(0,W.jsx)(`div`,{className:`mb-2`,children:(0,W.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,W.jsx)(rr,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{children:e.label})]})},e.id);let i=pV(e,t,n);return e.children&&e.children.length>0?(0,W.jsx)(SL,{title:e.label,count:e.children.length,defaultOpen:e.children.some(e=>pV(e,t,n)),collapsible:e.id!==`syntax-group`,children:e.children.map(e=>{let i=pV(e,t,n);return(0,W.jsxs)(pI,{onClick:()=>r(e),current:i,children:[e.icon&&(0,W.jsx)(e.icon,{"data-slot":`icon`}),(0,W.jsx)(mI,{children:e.label})]},e.id)})},e.id):(0,W.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,W.jsxs)(pI,{onClick:e.disabled?void 0:()=>r(e),current:i,disabled:e.disabled,"aria-label":e.disabled?`${e.label} (coming soon)`:void 0,className:G(`flex-1`,e.disabled&&`opacity-60`),children:[e.icon&&(0,W.jsx)(e.icon,{"data-slot":`icon`}),(0,W.jsx)(mI,{children:e.disabled?`+`:e.label})]}),e.onTogglePin&&(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),e.onTogglePin?.()},title:e.pinned?`Unpin from sidebar`:`Pin to sidebar`,"aria-label":e.pinned?`Unpin ${e.label}`:`Pin ${e.label}`,className:`opacity-0 group-hover:opacity-100 focus-visible:opacity-100 p-1 text-muted-foreground hover:text-foreground transition-opacity`,children:(0,W.jsx)(_t,{className:`size-3.5`})})]},e.id)})})}function hV({navSpec:e}){let{tree:t,navState:n,dispatch:r,contextNav:i}=IP(),a=Ft(),o=sV(e),s=(t??[]).find(e=>e?.id===n.activeL1Id)??null,c=i?.pathname===a.pathname?i:null;return(0,W.jsxs)(lI,{children:[(0,W.jsx)(uI,{children:(0,W.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,W.jsxs)(dI,{children:[(()=>{if(c||!s)return null;if(s.panel){let e=s.panel;return(0,W.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,W.jsx)(e,{item:s,navState:n,dispatch:r})})}return s.children&&s.children.length>0?(0,W.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,W.jsx)(mV,{items:s.children})}):null})(),c?(0,W.jsx)(`div`,{className:`pt-1`,children:(0,W.jsx)(uV,{entries:c.spec})}):o.length>0&&(0,W.jsx)(`div`,{className:`pt-1`,children:(0,W.jsx)(uV,{entries:o})})]})]})}var gV=`0.49.2179`,_V=`https://github.com/bitcobblers/wod-wiki/releases`;function vV(e){return/-pr\.\d+$/.test(e)?_V:`${_V}/tag/v${e}`}function yV({onSearch:e,onCreate:t}){let{tree:n,navState:r,dispatch:i}=IP(),a=On(),o=Ft(),s=OF(),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`);o.pathname===`/`||o.pathname;let d=`pointer-events-none absolute left-full top-1/2 -translate-y-1/2 z-50 ml-2 w-max rounded-md border border-border bg-popover px-2 py-1 text-xs text-popover-foreground opacity-0 shadow-md transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{onClick:()=>{s(),a(`/`)},title:`Wod Wiki home`,"aria-label":`Wod Wiki home`,className:`group relative 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,W.jsx)(Ce,{size:17}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Wod Wiki home`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Wod Wiki home`})]}),(0,W.jsx)(`nav`,{"aria-label":`Primary`,className:`flex flex-col items-center gap-1.5`,children:l.map(e=>{let t=e.icon,n=pV(e,r,o);return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(),i({type:`SET_ACTIVE_L1`,id:e.id}),_L(e.action,c)},title:e.label,"aria-label":e.label,"aria-current":n?`page`:void 0,className:G(`group 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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(t,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:e.label}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:e.label})]},e.id)})}),(0,W.jsx)(`div`,{className:`flex-1`}),(0,W.jsxs)(`button`,{type:`button`,onClick:e,title:`Search (⌘/)`,"aria-label":`Search`,className:`group relative grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:[(0,W.jsx)(B,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Search`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Search (⌘/)`})]}),(0,W.jsxs)(`a`,{href:kR,target:`_blank`,rel:`noopener noreferrer`,title:`Buy Me a Coffee`,"aria-label":`Buy Me a Coffee`,className:`group relative grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:[(0,W.jsx)(AR,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Buy Me a Coffee`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Buy Me a Coffee`})]}),(0,W.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:G(`group 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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(Be,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Profile`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Profile`})]}),(0,W.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:G(`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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(Qn,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Settings`}),(0,W.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 text-xs text-popover-foreground opacity-0 shadow-md transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[`Settings (v`,gV,`)`]})]})]})}function bV({activations:e,activeSection:t,variant:n,deps:r,className:i}){return(0,W.jsx)(`nav`,{className:G(`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,W.jsx)(`button`,{onClick:()=>_L(e.action,r),className:G(`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 xV=class e{now;name=`tick`;timestamp;data;static _counter=0;constructor(t,n=Ml){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this.data=t}},SV=20,CV=e=>{let[t,n]=(0,U.useState)(`idle`),[r,i]=(0,U.useState)(0),[a,o]=(0,U.useState)(0),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),n(`idle`)},[]),f=(0,U.useCallback)(()=>{if(e)try{let t=new xV(void 0,e.nowProvider);e.handle(t),o(e=>e+1)}catch{d(),n(`error`)}},[e,d]);(0,U.useEffect)(()=>{if(e)return e.subscribeToStack(e=>{e.blocks.length===0&&t!==`completed`&&(l.current&&=(clearInterval(l.current),null),n(`completed`))})},[e,t]),(0,U.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]);let p=(0,U.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()??Ml.nowMs();u.current=i-r,r===0&&c(i),l.current=setInterval(f,SV)},[e,t,r,f]),m=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),e&&e.handle({name:`timer:pause`,timestamp:new Date,data:{}}),n(`paused`)},[e]),h=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),i(0),o(0),n(`idle`),c(null),u.current=null},[e]),g=(0,U.useCallback)(()=>{!e||t===`running`||(n(`paused`),f())},[e,t,f]);return(0,U.useEffect)(()=>{if(t!==`running`||!u.current)return;let n=setInterval(()=>{i((e?.nowProvider?.nowMs()??Ml.nowMs())-u.current)},100);return()=>clearInterval(n)},[t,e?.nowProvider]),(0,U.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]),(0,U.useEffect)(()=>{h()},[e,h]),(0,U.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])},wV=(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 TV(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,U.useState)(r);return(0,U.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 EV(e){return TV(e,`round`)}function DV(e){return TV(e,`display`)}function OV(e){let t=EV(e),n=DV(e);return(0,U.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 kV=(0,U.createContext)(void 0),AV=({runtime:e,children:t})=>(0,W.jsx)(kV.Provider,{value:e,children:t});function jV(){let e=(0,U.useContext)(kV);if(!e)throw Error(`useScriptRuntime must be used within ScriptRuntimeProvider`);return e}function MV(e){let t=jV(),n=e===void 0?t:e,[r,i]=(0,U.useState)(()=>n?.getOutputStatements?.()??[]);return(0,U.useEffect)(()=>{if(!n){i([]);return}return i(n.getOutputStatements()),n.subscribeToOutput?.(()=>{i(n.getOutputStatements())})},[n]),(0,U.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 NV(e){let t=jV(),n=e===void 0?t:e,[r,i]=(0,U.useState)(()=>n?.getLiveAnalytics?.()??[]);return(0,U.useEffect)(()=>{if(!n){i([]);return}return i(n.getLiveAnalytics?.()??[]),n.subscribeToOutput?.(()=>{i(n.getLiveAnalytics?.()??[])})},[n]),r}function PV(){let e=jV(),[t,n]=(0,U.useState)({type:`initial`,blocks:e.stack.blocks,depth:e.stack.count,clockTime:e.clock.currentDate});return(0,U.useEffect)(()=>e.subscribeToStack(e=>{n(e)}),[e]),t}function FV(){return PV().blocks}function IV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.useMemo)(()=>{for(let t of e){let e=t.getMemoryByTag(`metric:next`);if(e.length===0)continue;let n=fa.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 LV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 RV(){let e=LV();return(0,U.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 zV(){let e=LV(),t=RV();return(0,U.useMemo)(()=>t?e.filter(e=>e.block!==t.block):[],[e,t])}function BV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 VV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 HV(e){let t=jV(),n=(0,U.useMemo)(()=>t.stack.blocks.find(t=>t.key.toString()===e),[t,e]),[r,i]=(0,U.useState)(()=>n?.getMemoryByTag(`time`)[0]?.metrics[0]?.value);(0,U.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,U.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,U.useMemo)(()=>r?.spans??[],[r]),o=a.length>0&&a[a.length-1].ended===void 0,[s,c]=(0,U.useState)(bu()),l=(0,U.useMemo)(()=>a.length===0?0:wV(a,s),[a,s]);return(0,U.useEffect)(()=>{if(!o)return;let e,t=()=>{c(bu()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[o]),{elapsed:l,isRunning:o,timeSpans:a}}var UV=(0,U.createContext)(void 0),WV=(0,U.createContext)(null),GV={getState:()=>Xz().getState(),setState:(e,t)=>{let n=Xz();typeof e==`function`?n.setState(e(n.getState()),t):n.setState(e,t)},subscribe:e=>Xz().subscribe(e)},KV=({factory:e,children:t})=>{let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null),u=(0,U.useRef)(e);u.current=e;let d=(0,U.useRef)(null),f=(0,U.useRef)(null),p=(0,U.useRef)(!1),m=(0,U.useCallback)(()=>{f.current&&=(f.current.dispose(),null),a(null),GV.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,U.useCallback)((e,t)=>{if(!p.current){p.current=!0,s(!0),l(null);try{f.current&&=(f.current.dispose(),null);let n=d.current;if(d.current=null,n)try{u.current.disposeRuntime(n)}catch(e){console.error(`[RuntimeProvider] Error disposing existing runtime:`,e)}let i=u.current.createRuntime(e,t);if(d.current=i,r(i),i){let e=new am(i);e.add(new im({id:`local`})),f.current=e,a(e),GV.getState().setSubscriptionManager(e)}else f.current=null,a(null),GV.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,U.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,W.jsx)(UV.Provider,{value:g,children:(0,W.jsx)(WV.Provider,{value:i,children:t})})};function qV({factory:e,children:t}){return(0,W.jsx)(KV,{factory:e,children:t})}var JV=`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`,YV=`flex flex-col flex-1 min-w-0 xl:max-w-[984px] 2xl:max-w-none min-h-screen lg:rounded-[2.5rem]`;function XV({id:e,title:t,subtitle:n,titleAccessory:r,actions:i,queryBar:a,subheader:o,titleTestId:s,className:c}){return(0,W.jsxs)(`div`,{id:e,"data-page-sticky-boundary":`true`,className:G(`max-lg:hidden lg:sticky lg:top-0 z-30 border-b border-border/50 bg-background/95 backdrop-blur-md transition-colors`,c),children:[(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-2.5 sm:gap-3 min-w-0`,children:[(0,W.jsx)(`div`,{className:`h-5 w-1.5 shrink-0 rounded-full bg-primary`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`h1`,{"data-testid":s,className:`text-base sm:text-lg font-black tracking-tight text-foreground leading-none truncate`,children:t}),n&&(0,W.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground truncate`,children:n})]}),r]})]}),a&&(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),i&&(0,W.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto`,children:i})]}),o&&(0,W.jsx)(`div`,{className:`bg-background/40`,children:o})]})}function ZV({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,U.useRef)(``),u=(0,U.useRef)(i),d=(0,U.useRef)(a),f=(0,U.useRef)(null),p=(0,U.useRef)(1);(0,U.useEffect)(()=>{u.current=i},[i]),(0,U.useEffect)(()=>{d.current=a},[a]);let m=e.filter(Boolean).join(`\0`),h=r.join(`,`),g=(0,U.useMemo)(()=>m?m.split(`\0`):[],[m]),_=(0,U.useMemo)(()=>h.split(`,`).map(Number),[h]),v=(0,U.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null)},[]);(0,U.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 QV({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]=fn(`s`,{defaultValue:o??a[0]?.id??``,shallow:!0,history:`replace`}),[f,p]=(0,U.useState)(c?.[0]?.id??``);if(ZV({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}),ZV({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,W.jsxs)(`div`,{className:G(`flex flex-col min-h-screen bg-background`,l),children:[s,(0,W.jsx)(bV,{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,W.jsx)(`div`,{className:`flex-1`,children:c.map(e=>{let t=(0,W.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,W.jsx)(qV,{factory:e.runtimeFactory,children:t},e.id):t})})]})}return(0,W.jsx)(`div`,{className:G(`relative flex w-full min-h-screen justify-start items-start`,l),children:(0,W.jsxs)(`div`,{className:G(YV,JV),children:[(0,W.jsx)(XV,{title:e,titleAccessory:t,actions:n,subheader:r}),(0,W.jsx)(`div`,{className:`flex-1`,children:i})]})})}var $V=`[data-page-sticky-boundary="true"]`,eH=0;function tH(e,t=eH){if(typeof document>`u`)return e;let n=Array.from(document.querySelectorAll($V)).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 nH(e,t=eH){let[n,r]=(0,U.useState)(e);return(0,U.useEffect)(()=>{let n=0,i=()=>r(tH(e,t)),a=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(i)};i(),window.addEventListener(`scroll`,a,{passive:!0}),window.addEventListener(`resize`,i);let o=typeof ResizeObserver>`u`?void 0:new ResizeObserver(i);document.querySelectorAll($V).forEach(e=>o?.observe(e));let s=typeof MutationObserver>`u`?void 0:new MutationObserver(()=>{document.querySelectorAll($V).forEach(e=>o?.observe(e)),i()});return typeof document<`u`&&document.body&&s?.observe(document.body,{childList:!0,subtree:!0}),()=>{s?.disconnect(),o?.disconnect(),cancelAnimationFrame(n),window.removeEventListener(`scroll`,a),window.removeEventListener(`resize`,i)}},[e,t]),n}function rH({top:e,label:t,icon:n,badge:r,meta:i,testId:a,className:o}){return(0,W.jsxs)(`div`,{"data-testid":a,className:G(`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,W.jsx)(`span`,{className:`min-w-0 truncate text-xs font-bold text-foreground`,children:t}),r,i&&(0,W.jsx)(`span`,{className:`ml-auto shrink-0 pl-2 font-mono text-[10px] text-muted-foreground`,children:i})]})}var iH=(0,U.createContext)(null),aH=(0,U.createContext)(null);function oH({children:e}){let[t,n]=(0,U.useState)(null);return(0,W.jsx)(aH.Provider,{value:n,children:(0,W.jsx)(iH.Provider,{value:t,children:e})})}function sH({className:e}){let t=(0,U.useContext)(aH);return(0,W.jsx)(`div`,{ref:t,className:e,"data-testid":`mobile-query-slot`})}function cH(){return(0,U.useContext)(iH)}function lH({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,W.jsxs)(`div`,{className:G(`relative flex w-full min-h-screen justify-start items-start`,d),children:[(0,W.jsxs)(`div`,{className:G(YV,JV),children:[(0,W.jsx)(XV,{title:t,subtitle:n,titleTestId:r,actions:i}),(0,W.jsx)(`main`,{className:`flex-1 min-w-0 max-w-full`,children:e})]}),s&&a&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,W.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,W.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,W.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,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:a})]})}),c&&o&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,W.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,W.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,W.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,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:o})]})})]})}function uH(e){return e.map(e=>{let t=e.action,n=e.secondaryAction?.action,r={kind:`link`,id:e.id,label:e.label};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 dH=U.createContext(null);function fH(){let e=U.useContext(dH);if(!e)throw Error(`DropdownMenu components must be used inside a DropdownMenu`);return e}function pH(){let e=U.useContext(dH);return U.useCallback(()=>{e?.setIsOpen(!1)},[e])}var mH=({children:e,open:t,onOpenChange:n})=>{let r=U.useContext(dH),i=U.useId(),a=r?`${r.portalChain}/${i}`:i,[o,s]=U.useState(t??!1),c=U.useRef(null),[l,u]=U.useState(-1),d=U.useRef(new Map),[,f]=U.useReducer(e=>e+1,0);U.useEffect(()=>{t!==void 0&&s(t)},[t]);let p=U.useCallback(e=>{s(e),u(-1),n?.(e)},[n]),m=U.useCallback((e,t)=>{d.current.set(e,t),f()},[]),h=U.useCallback(e=>{d.current.delete(e),f()},[]),g=U.useCallback(e=>Array.from(d.current.keys()).indexOf(e),[]),_=d.current.size,v=U.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,W.jsx)(dH.Provider,{value:v,children:(0,W.jsx)(`div`,{ref:c,className:`relative inline-block`,children:e})})},hH=U.forwardRef(({className:e,children:t,asChild:n,...r},i)=>{let{isOpen:a,setIsOpen:o}=fH(),s=e=>{e.stopPropagation(),o(!a)};return n&&U.isValidElement(t)?U.cloneElement(t,{...r,onClick:s}):(0,W.jsx)(`button`,{ref:i,className:e,onClick:s,...r,children:t})});hH.displayName=`DropdownMenuTrigger`;var gH=U.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}=fH(),p=U.useRef(null),m=a||p,[h,g]=U.useState({top:0,bottom:0,left:0,width:0}),_=r===`bottom`,[v,y]=U.useState(!1);U.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}),y(!1)},[o,c]),U.useLayoutEffect(()=>{if(!o||!_||!m.current)return;let e=m.current.getBoundingClientRect();y(h.top+e.height>window.innerHeight)},[o,_,h.top,m]),U.useEffect(()=>{if(!o||u===0)return;let e=setTimeout(()=>{l(0)},0);return()=>clearTimeout(e)},[o,u,l]),U.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 b=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 x={position:`fixed`,zIndex:9999};return r===`top`||v?x.bottom=h.bottom:x.top=h.top,n===`end`?x.right=window.innerWidth-h.left-h.width:n===`start`?x.left=h.left:(x.left=h.left+h.width/2,x.transform=`translateX(-50%)`),NC.createPortal((0,W.jsx)(`div`,{ref:m,role:`menu`,"data-dropdown-chain":f,className:G(`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:x,onKeyDown:b,...i,children:t}),document.body)});gH.displayName=`DropdownMenuContent`;var _H=U.forwardRef(({className:e,disabled:t,inset:n,onClick:r,onKeyDown:i,...a},o)=>{let{setIsOpen:s,registerItem:c,unregisterItem:l,getItemIndex:u,activeIndex:d}=fH(),f=U.useId(),p=U.useRef(null),m=U.useCallback(e=>{p.current=e,typeof o==`function`?o(e):o&&(o.current=e)},[o]);U.useEffect(()=>(c(f,p),()=>l(f)),[f,c,l]);let h=u(f)===d;return U.useEffect(()=>{h&&p.current?.focus()},[h]),(0,W.jsx)(`div`,{ref:m,role:`menuitem`,tabIndex:t?-1:h?0:-1,"aria-disabled":t,"data-active":h?`true`:void 0,className:G(`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})});_H.displayName=`DropdownMenuItem`;var vH=U.forwardRef(({className:e,inset:t,...n},r)=>(0,W.jsx)(`div`,{ref:r,className:G(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));vH.displayName=`DropdownMenuLabel`;var yH=U.forwardRef(({className:e,...t},n)=>(0,W.jsx)(`div`,{ref:n,className:G(`-mx-1 my-1 h-px bg-muted`,e),...t}));yH.displayName=`DropdownMenuSeparator`;function bH({className:e,children:t,...n}){return(0,W.jsx)(`div`,{className:G(`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,e),...n,children:t})}var xH=[{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`}],SH=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function CH(e,t){return new Date(e,t+1,0).getDate()}function wH(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function TH(e,t){let n=X(e);if(n.error)return e;if(!t||t===`all`)return Qh({...n,window:void 0});let r=X(`:note ${t}`);return r.error||r.family!==`find`||!r.window?e:Qh({...n,window:r.window})}function EH(e){let t=X(e);return t.error||t.family===`pipeline`?null:`window`in t?t.window??null:null}function DH({query:e,onQueryChange:t,highlightDates:n=new Set,className:r}){let i=(0,U.useMemo)(()=>EH(e),[e]),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(()=>new Date),l=s.getFullYear(),u=s.getMonth(),d=(0,U.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,U.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:hF(t),end:hF(e)}},[i]),p=(0,U.useMemo)(()=>{let e=CH(l,u),t=wH(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(TH(e,`from ${n} to ${n}`));else{let[r,i]=a<=n?[a,n]:[n,a];o(null),t(TH(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=hF(new Date);return(0,W.jsxs)(`div`,{className:G(`relative inline-flex items-center`,r),children:[(0,W.jsxs)(mH,{children:[(0,W.jsx)(hH,{asChild:!0,children:(0,W.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,W.jsx)(vt,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:d}),(0,W.jsx)(hn,{className:`size-3 text-muted-foreground`,"aria-hidden":`true`})]})}),(0,W.jsxs)(gH,{align:`end`,className:`w-72 p-3`,children:[(0,W.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1 border-b border-border/60 pb-2`,children:xH.map(n=>{let r=n.value===`all`?!i:i?.kind===`relative`&&`last ${i.size}${i.unit}`===n.value;return(0,W.jsx)(`button`,{type:`button`,"data-testid":`wql-window-preset-${n.value}`,onClick:()=>{o(null),t(TH(e,n.value))},className:G(`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,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,W.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,W.jsx)(An,{className:`size-4`})}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-foreground`,children:_}),(0,W.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,W.jsx)(Lt,{className:`size-4`})})]}),(0,W.jsx)(`div`,{className:`mb-1 grid grid-cols-7 gap-1`,children:SH.map(e=>(0,W.jsx)(`div`,{className:`text-center text-[10px] font-medium text-muted-foreground`,children:e},e))}),(0,W.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,"data-testid":`wql-calendar-grid`,children:p.map((e,t)=>{if(e===null)return(0,W.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,W.jsxs)(`button`,{type:`button`,"data-testid":`wql-calendar-day-${r}`,onClick:()=>m(r),className:G(`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,W.jsx)(`span`,{children:e}),d&&!o&&!s&&(0,W.jsx)(`span`,{className:`absolute bottom-0.5 size-1 rounded-full bg-primary`})]},r)})}),a&&(0,W.jsxs)(`div`,{className:`mt-2 text-center text-[10px] text-muted-foreground`,children:[`Select second date to complete range (starting from `,a,`)`]})]})]}),i&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`wql-window-picker-clear`,onClick:()=>{o(null),t(TH(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,W.jsx)(Sr,{className:`size-3.5`})})]})}function OH({onOpen:e}){let t=pH();return(0,W.jsxs)(K,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{t(),e()},"data-testid":`query-settings-trigger`,className:`w-full justify-start gap-2 rounded-lg text-xs`,children:[(0,W.jsx)(Hn,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:`Query settings`})]})}function kH(e){switch(e.kind){case`note`:return`note`;case`result`:return`result`;case`segment`:case`event`:return`segment`;case`effort`:return`effort`;default:return`note`}}var AH=[{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:`sourceNotebook`,label:`Notebook`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.sourceNotebook,formatValue:e=>String(e??``)},{id:`date`,label:`Date`,level:`note`,defaultVisible:!0,align:`right`,getValue:e=>e.date,formatValue:e=>String(e??``)}],jH={note:AH,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?``:GB(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?``:GB(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?``:GB(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 MH(e){return jH[e]??AH}function NH(e){return MH(e).filter(e=>e.defaultVisible).map(e=>e.id)}var PH=[{id:`cards`,label:`Cards`,icon:be},{id:`rows`,label:`Rows`,icon:ot},{id:`feed`,label:`Feed`,icon:Gt}];function FH({streamControls:e}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`l3-stream-controls`,children:[e.onOpenQuerySettings&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`This page`}),(0,W.jsx)(OH,{onOpen:e.onOpenQuerySettings})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Date window`}),(0,W.jsx)(DH,{query:e.query,onQueryChange:e.onQueryChange,className:`w-full justify-between`})]}),e.availableGroupDims.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Group by`}),(0,W.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,W.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,W.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleGroupDim(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,W.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Layout`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,"data-testid":`l3-layout-options`,children:PH.map(t=>{let n=t.icon,r=e.settings.layout===t.id;return(0,W.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,W.jsx)(n,{"aria-hidden":!0,className:`size-3`}),t.label]},t.id)})})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Fields`}),(0,W.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-field-options`,children:MH(e.level).map(t=>{let n=e.settings.visibleFields.includes(t.id);return(0,W.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,W.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleField(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,W.jsx)(`span`,{children:t.label})]},t.id)})})]})]})}function IH({spec:e,pageAction:t}){let{l3Items:n,streamControls:r}=IP(),i=sV(e),a=(0,U.useMemo)(()=>uH(n),[n]),o=cV();return i.length===0&&a.length===0&&!r&&!t?null:(0,W.jsxs)(`div`,{className:`flex flex-col px-3 py-4 gap-4`,children:[r&&(0,W.jsx)(`div`,{className:`pb-3 border-b border-border/50`,children:(0,W.jsx)(FH,{streamControls:r})}),i.length>0&&(0,W.jsx)(uV,{entries:i,activeId:o}),a.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col`,children:[(0,W.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,W.jsx)(uV,{entries:a,activeId:o})]}),t&&(0,W.jsx)(`div`,{className:`pt-2 border-t border-border/50`,children:t})]})}var LH=1023;function RH(e){return e===`/`?`canvas:home`:`canvas:${e.replace(/^\//,``)}`}function zH(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);if(r===null)return null;let i=t[r],{meta:a,body:o}=jv(i),s=new Set([`search`,`template`,`route`,`type`,`title`,`description`,`subtitle`,`section`,`order`]);return Object.keys(a).some(e=>!s.has(e.trim().toLowerCase()))?i:o};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(`canvas/`))i=`markdown/canvas/`+e.replace(/^canvas\//,``);else{let t=r(`markdown/canvas/`+e);if(t!==null)return t;i=`markdown/`+e}return r(i)??`# Source not found\n\nPath: \`${e}\`\nResolved: \`${i}\``}function BH(e){return(e.examples??[]).length>0||e.commands.some(e=>e.pipeline.length>0)}function VH(e){let t=new Map,n=null;for(let r of e)BH(r)&&(n=r),t.set(r.id,n);return t}function HH(){let[e,t]=(0,U.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: ${LH}px)`).matches);return(0,U.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(max-width: ${LH}px)`),n=e=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var UH=`wodwiki:fabAlignment`,WH=[{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 GH(){try{return KH(localStorage.getItem(UH))}catch{return}}function KH(e){return e===`right`||e===`left`?e:void 0}var qH=typeof window>`u`?void 0:GH();typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===UH&&(qH=KH(e.newValue))});function JH(e){qH=e;try{e===`right`?localStorage.removeItem(UH):localStorage.setItem(UH,e)}catch{}window.dispatchEvent(new StorageEvent(`storage`,{key:UH,newValue:e}))}function YH(){let[e,t]=(0,U.useState)(()=>qH??`right`);return(0,U.useEffect)(()=>{let e=e=>{e.key===UH&&t(KH(e.newValue)??`right`)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),[e,JH]}function XH({onOpen:e}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search`,title:`Search`,"data-testid":`search-fab`,className:G(`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,W.jsx)(B,{className:`size-6`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Search`})]})}var ZH=(0,U.createContext)(null),QH=(0,U.createContext)(!1),$H=(0,U.createContext)(null);function eU(){return(0,U.useContext)(ZH)!==null}function tU({primary:e,navbar:t,children:n,label:r,fallback:i=!1}){let a=(0,U.useContext)(ZH),o=(0,U.useContext)(QH),s=HH(),c=(0,U.useId)(),l=a!==null&&!o&&s&&!i,u=a!==null&&i,d=(0,W.jsx)(QH.Provider,{value:!0,children:n});return(0,U.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,W.jsx)(QH.Provider,{value:!0,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t,e,n]})})}function nU({onSearch:e,children:t}){let[n,r]=(0,U.useState)([]),i=(0,U.useCallback)(e=>r(t=>[...t.filter(t=>t.id!==e.id),e]),[]),a=(0,U.useCallback)(e=>r(t=>t.filter(t=>t.id!==e)),[]),o=(0,U.useMemo)(()=>({register:i,unregister:a}),[i,a]),s=(0,U.useMemo)(()=>{for(let e=n.length-1;e>=0;--e)if(!n[e].fallback)return n[e].navbar??null;return null},[n]);return(0,W.jsx)(ZH.Provider,{value:o,children:(0,W.jsxs)($H.Provider,{value:s,children:[t,(0,W.jsx)(iU,{registrations:n,onSearch:e})]})})}function rU(){let e=(0,U.useContext)($H);return e?(0,W.jsx)(W.Fragment,{children:e}):null}function iU({registrations:e,onSearch:t}){let n=HH(),[r]=YH(),i=FC(),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(null),l=(0,U.useRef)(null),u=(0,U.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(!e[t].fallback)return e[t]},[e]),d=(0,U.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(e[t].fallback)return e[t]},[e]);(0,U.useLayoutEffect)(()=>{a&&s.current?.focus()},[a]);let[f,p]=(0,U.useState)({active:0,global:0});(0,U.useLayoutEffect)(()=>{let e=c.current?.childElementCount??0,t=l.current?.childElementCount??0;p(n=>n.active===e&&n.global===t?n:{active:e,global:t})},[u,d]);let m=f.active>0||f.global>0;return!n||!t&&!u&&!d?null:(0,W.jsxs)(`div`,{"data-testid":`actions-dock`,className:G(`lg:hidden relative z-40 mt-4 flex flex-col items-center gap-2`,`transition-[transform,visibility] duration-200 ease-out`,r===`left`?`self-start items-start`:`self-end items-end`),children:[(0,W.jsxs)(`div`,{className:`relative z-40 flex flex-col items-center gap-2`,children:[u?.primary&&(0,W.jsx)(`div`,{className:`[&_button]:min-h-11 [&_button]:min-w-11`,children:u.primary}),t&&(0,W.jsx)(XH,{onOpen:()=>{o(!1),t()}})]}),a&&m&&(0,W.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-hidden":`true`,className:`fixed inset-0 z-30 cursor-default`,onClick:()=>o(!1)}),(0,W.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":u?.label??d?.label??`Page options`,tabIndex:-1,hidden:!a||!m,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),o(!1))},className:G(`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,W.jsx)(`div`,{ref:c,className:`contents`,children:u?.children}),f.active>0&&f.global>0&&(0,W.jsx)(`div`,{className:`my-1 border-t border-border/60`,"aria-hidden":`true`}),(0,W.jsx)(`div`,{ref:l,className:`contents`,children:d?.children})]}),m&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":u?.label??d?.label??`Page options`,title:u?.label??d?.label??`Page options`,"aria-expanded":a,"data-testid":`actions-overflow`,className:G(`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,W.jsx)(or,{className:`size-6`}):(0,W.jsx)(ye,{className:`size-6`}),(0,W.jsx)(`span`,{className:`sr-only`,children:u?.label??d?.label??`Page options`})]})]})}function aU(){return(0,W.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,W.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 oU(){return(0,W.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,W.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 sU(){let{tree:e,navState:t,contextNav:n}=IP(),r=Ft(),i=OF();return!e.find(e=>e.id===t.activeL1Id)?.applyFooter||n?.pathname===r.pathname?null:(0,W.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,W.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 cU({open:e,close:t,onSearch:n,onCreate:r,children:i}){return(0,W.jsxs)(Ze,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,W.jsx)(te,{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,W.jsx)(we,{transition:!0,className:`fixed inset-y-0 left-0 w-full transition duration-300 ease-out data-closed:-translate-x-full`,children:(0,W.jsx)(DF,{close:t,children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 bg-card`,children:[(0,W.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,W.jsx)(yV,{onSearch:()=>{t(),n?.()},onCreate:r?()=>{t(),r()}:void 0})}),(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,W.jsx)(`div`,{className:`flex items-center px-4 pt-3`,children:(0,W.jsxs)(vn,{as:_z,"aria-label":`Close navigation`,title:`Close navigation`,children:[(0,W.jsx)(oU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close navigation`})]})}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:i}),(0,W.jsx)(sU,{})]})]})})})]})}function lU({open:e,close:t,children:n}){return(0,W.jsxs)(Ze,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,W.jsx)(te,{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,W.jsx)(we,{transition:!0,className:`fixed inset-y-0 right-0 w-full transition duration-300 ease-out data-closed:translate-x-full`,children:(0,W.jsx)(DF,{close:t,children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-end px-4 pt-3`,children:(0,W.jsxs)(vn,{as:_z,"aria-label":`Close page options`,title:`Close page options`,children:[(0,W.jsx)(oU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close page options`})]})}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:n}),(0,W.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,W.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 uU({navbar:e,sidebar:t,onSearch:n,onCreate:r,secondary:i,pageAction:a,hideDesktopSidebar:o,children:s}){let[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(!1),{streamControls:f,l3Items:p}=IP(),m=!!(i&&i.length>0||p&&p.length>0||f||a),h=(0,U.useMemo)(()=>{let e=X(f?.query??``);return!e.error&&ah(e)&&e.filters.length>0},[f?.query]);return(0,W.jsx)(oH,{children:(0,W.jsx)(nU,{onSearch:n,children:(0,W.jsx)(`div`,{className:`relative isolate flex min-h-svh w-full bg-background max-lg:flex-col lg:flex-row`,children:(0,W.jsxs)(`div`,{className:`flex flex-1 w-full max-lg:flex-col lg:flex-row`,children:[(0,W.jsxs)(`nav`,{"aria-label":`Main`,className:`hidden lg:flex`,children:[(0,W.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,W.jsx)(yV,{onSearch:n??(()=>{}),onCreate:r})}),(0,W.jsx)(`div`,{className:G(`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,W.jsx)(cU,{open:c,close:()=>l(!1),onSearch:n,onCreate:r,children:t}),(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col min-w-0 xl:max-w-[984px] 2xl:max-w-none`,children:[(0,W.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`,children:[(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:()=>l(!0),"aria-label":`Open navigation`,title:`Open navigation`,children:[(0,W.jsx)(aU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Open navigation`})]})}),(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),r&&(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:r,"aria-label":`New journal note`,title:`New journal note`,children:[(0,W.jsx)(fr,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`New journal note`})]})}),m&&(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:()=>d(!0),"aria-label":`Open page options`,title:`Open page options`,children:[(0,W.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,W.jsx)(Hn,{className:`size-5`}),h&&(0,W.jsx)(`span`,{"data-testid":`drawer-filters-active`,className:`absolute -top-1 -right-1 size-2 rounded-full bg-amber-500`,"aria-hidden":`true`})]}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Open page options`})]})})]}),(0,W.jsxs)(`main`,{className:`flex flex-1 flex-col lg:min-w-0`,children:[(0,W.jsx)(`div`,{className:`grow w-full max-lg:pb-48 lg:overflow-visible`,children:s}),(0,W.jsx)(dU,{})]})]}),(0,W.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,W.jsx)(IH,{spec:i,pageAction:a})}),(0,W.jsx)(lU,{open:u,close:()=>d(!1),children:(0,W.jsx)(IH,{spec:i,pageAction:a})})]})})})})}function dU(){let e=(0,U.useRef)(null),[t,n]=(0,U.useState)(0);return(0,U.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,U.useEffect)(()=>(document.documentElement.style.setProperty(`--thumb-dock-lift`,`${t}px`),()=>document.documentElement.style.setProperty(`--thumb-dock-lift`,`0px`)),[t]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:G(`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,W.jsx)(`div`,{ref:e,className:`w-full min-w-0`,children:(0,W.jsx)(sH,{className:`flex w-full min-w-0`})})}),(0,W.jsx)(`div`,{className:`lg:hidden`,"aria-hidden":`true`,style:{height:t}})]})}function fU(e){let t=e.indexOf(`markdown`);return t!==-1&&e.length>t+2?e[t+2]:`General`}function pU(e){return String(ub(ib(e).meta,`search`)??``).toLowerCase()===`hidden`}function mU(e){let t=ub(ib(e).meta,`date`);if(typeof t!=`string`||!/^\d{4}-\d{2}-\d{2}$/.test(t))return;let n=new Date(`${t}T12:00:00Z`);return Number.isFinite(n.getTime())&&n.toISOString().slice(0,10)===t?n.getTime():void 0}function hU(e){return Object.entries(e).map(([e,t])=>{let n=e.split(`/`),r=n[n.length-1].replace(`.md`,``),i=t,a=ub(ib(i).meta,`title`);return{id:e,name:r,displayName:typeof a==`string`&&a.trim()?a.trim():JO(r),category:fU(n),content:i,date:mU(i),searchHidden:pU(i)}})}function gU(){let e=_k();return(0,U.useMemo)(()=>e?hU(e):[],[e])}var _U={};function vU(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 yU(e,t){let{canvasPage:n,workoutItems:r,recentResults:i,selectWorkout:a}=t;if(e===`/`)return[];if(n){let t=/^\/notebook\//.test(e),i=t?e.split(`/`).pop()??null:null,o=[],s=e.startsWith(`/page/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=zR(e).split(`
102
+ `).map(e=>e.trim()).filter(Boolean).slice(0,BB).map(e=>e.length>VB?`${e.slice(0,119)}…`:e)}function UB(e){let t=LB(zB(e));return{...t,blockContentId:e.blockContentId??t.blockContentId,block:{blockId:e.blockId,dataType:e.dataType,preview:HB(e.rawContent)}}}function WB(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 GB(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 KB(e){if(!e)return`Workout Session`;let t=wB(e);return t.kind===`journal`?t.id?`Journal: ${t.id}`:`Journal Entry`:t.kind===`workout`?WB(t.id)||t.id:t.id?WB(t.id):e}function qB(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`,sourceNotebook:e.registrySource??`effort`,sourceNote: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 JB(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 YB(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=JB(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 XB(e,t){let n=YB(e),r=[];n.elapsedMs!=null&&r.push(GB(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(WB),a=hF(new Date(e.timestamp)),o=e.events.find(e=>!!e.blockContentId)?.blockContentId;return{id:e.resultId,kind:`result`,sourceNotebook:`results`,sourceNote:e.resultId,title:t?.noteTitle??KB(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 ZB(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=JB(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?WB(e.effortSlug):e.outputType===`segment`?`Round ${c+1}`:`${e.outputType.charAt(0).toUpperCase()+e.outputType.slice(1)} ${c+1}`,u=[];n!=null&&u.push(GB(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=hF(new Date(e.timestamp));return{id:e.id,kind:s,sourceNotebook:`results`,sourceNote:e.id,title:l,date:d,blockContentId:e.blockContentId,subtitle:u.join(` • `),detail:e.effortSlug?WB(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 QB(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(ZB(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(ZB(i,{index:e++}))}return t}return e.runs.map(e=>XB(e,{noteTitle:t?.noteTitles?.get(e.noteId)}))}function $B(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,sourceNotebook:`results`,sourceNote:i??r??`${t}:${n}`,title:a?WB(a):`${t===`segment`?`Segment`:`Event`} ${n+1}`,date:typeof e.date==`string`?e.date:null,subtitle:o.length>0?o.join(` • `):void 0}}function eV(e){let t=e.parsed.family===`aggregate`?e.parsed.metric:`metric`;return e.series.map(e=>{let n=e.points.map(t=>`${t.value}${e.unit?` ${e.unit}`:``}`).join(` • `);return{id:`aggregate:${t}:${e.key}`,kind:`result`,sourceNotebook:`results`,sourceNote:e.label,title:`${t}: ${n}`,subtitle:e.label,date:null}})}function tV(e,t,n){e&&e({selected:Math.max(t?.selected??0,n.length),matched:n.length})}function nV(e){return typeof e==`object`&&!!e&&`runFind`in e}var rV=new class e{customService;noteTitleResolver;noteTagsResolver;noteBlockInfo;constructor(e){nV(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??CB}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=new Set;for(let r of e)r.sourceNotebook===`journal`&&n.add(r.id),t&&(!r.title||!r.tags||r.tags.length===0)&&n.add(r.id);if(n.size===0)return;let r=await Z.getDetailBatches([...n]);for(let t of e){if(t.sourceNotebook!==`journal`)continue;let e=r.get(t.id),n=Ca(e?.links??[],e?.pages??[]);t.placements=n;let i=wa(n);t.pageId??=i.pageId,i.pageSlug&&(t.pageSlug=i.pageSlug)}if(t)for(let t of e){let e=r.get(t.id);!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(ah(n)){if(n.target===`effort`){let e=this.service.runFindEffort?await this.service.runFindEffort(n):await this.service.runFind(n),r=new Map(e.notes.map(e=>[e.id,e])),i=(e.efforts??[]).map(e=>e.ownerNoteId&&r.has(e.ownerNoteId)?LB(r.get(e.ownerNoteId)):qB(e));return tV(t,e.stages,i),i}if(n.target===`block`){let e=await this.service.runFind(n),r=e.blocks.map(UB);return await this.hydrateEntries(r,!0),tV(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=QB(e,{noteTitles:r});return tV(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)=>$B(t,e,n));return tV(t,r.stages,i),i}let e=await this.service.runFind(n),r=e.notes.map(LB);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),tV(t,e.stages,r),this.noteBlockInfo)for(let t=0;t<r.length;t++){let n=r[t],i=e.notes[t];n.excerpt=HB(i.rawContent);try{Ra(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&&Fa(i.rawContent).find(e=>e.from===a.from&&e.scriptBlock);if(a&&o?.scriptBlock){let e=o.scriptBlock.content,t=ba(e);n.wodBlock={blockId:a.id,blockVersion:a.version,blockContentId:t,content:e},n.blockContentId=t}}return r}if(n.family===`aggregate`){if(!this.service.runQuery)return[];let e=await this.service.runQuery(n.raw),r=eV(e);return t?.({selected:e.stages?.selected??r.length,matched:r.length}),r}return[]}};async function iV(e,t=rV,n){return t.query(e,n)}function aV(e){return e?e.map(e=>e.kind===`wql`?`${e.id}|${e.query}|${e.limit??``}`:`s:${e.id}`).join(`;`):``}async function oV(e){try{let t=(await iV(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 sV(e){let t=aV(e),n=(0,U.useRef)(e);n.current=e;let[r,i]=(0,U.useState)(()=>e&&!e.some(e=>e.kind===`wql`)?e:[]);return(0,U.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`?oV(e):Promise.resolve(e))).then(e=>{t||i(e)}),()=>{t=!0}},[t]),r}function cV(){let[e]=fn(`s`,{shallow:!0}),{navState:t}=IP(),n=t.activeL3Id??``;return e||n||``}function lV({entry:e,active:t,onActivate:n}){let r=e.onRun;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:G(`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`:G(`hover:bg-muted/60 hover:text-foreground`,e.muted?`text-muted-foreground/70`:`text-muted-foreground`)),children:[e.icon&&(0,W.jsx)(e.icon,{className:`size-4 shrink-0`}),e.timestamp&&(0,W.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/60`,children:e.timestamp}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 line-clamp-2 break-words`,title:e.label,children:e.label}),e.badge&&(0,W.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/50`,children:e.badge}),r&&(0,W.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,W.jsx)(O,{className:`size-3.5`}):e.runIcon===`stop`?(0,W.jsx)(x,{className:`size-3.5`}):e.runIcon===`edit`?(0,W.jsx)($t,{className:`size-3.5`}):(0,W.jsx)(o,{className:`size-3.5`})})]})}function uV({entries:e,activeId:t,onSection:n}){let r=On(),{scrollToSection:i}=IP(),a=OF(),o=e=>{if(a(),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,W.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.map(e=>e.kind===`section`?e.entries.length===0?null:(0,W.jsxs)(`div`,{className:`mt-1 flex flex-col gap-0.5 first:mt-0`,children:[(0,W.jsx)(`div`,{className:`px-2 pb-1 pt-3 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,W.jsx)(uV,{entries:e.entries,activeId:t,onSection:n})]},e.id):e.kind===`wql`?null:(0,W.jsx)(lV,{entry:e,active:t!=null&&e.sectionId===t,onActivate:o},e.id))})}function dV(){let e=On(),{scrollToSection:t}=IP();return{navigate:(t,n)=>e(t,{replace:n?.replace}),setQueryParam:(e,t)=>{},scrollToSection:t}}function fV(){let e=dV(),{openCreateJournal:t}=IP(),n=OF();return r=>{if(n(),r.id===`home-new-journal`){t({mode:`blank`});return}_L(r.action,e)}}function pV(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 mV({items:e}){let{navState:t}=IP(),n=Ft(),r=fV();return(0,W.jsx)(fI,{children:e.map(e=>{if(e.variant===`notable`)return(0,W.jsx)(`div`,{className:`mb-2`,children:(0,W.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,W.jsx)(rr,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{children:e.label})]})},e.id);let i=pV(e,t,n);return e.children&&e.children.length>0?(0,W.jsx)(SL,{title:e.label,count:e.children.length,defaultOpen:e.children.some(e=>pV(e,t,n)),collapsible:e.id!==`syntax-group`,children:e.children.map(e=>{let i=pV(e,t,n);return(0,W.jsxs)(pI,{onClick:()=>r(e),current:i,children:[e.icon&&(0,W.jsx)(e.icon,{"data-slot":`icon`}),(0,W.jsx)(mI,{children:e.label})]},e.id)})},e.id):(0,W.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,W.jsxs)(pI,{onClick:e.disabled?void 0:()=>r(e),current:i,disabled:e.disabled,"aria-label":e.disabled?`${e.label} (coming soon)`:void 0,className:G(`flex-1`,e.disabled&&`opacity-60`),children:[e.icon&&(0,W.jsx)(e.icon,{"data-slot":`icon`}),(0,W.jsx)(mI,{children:e.disabled?`+`:e.label})]}),e.onTogglePin&&(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),e.onTogglePin?.()},title:e.pinned?`Unpin from sidebar`:`Pin to sidebar`,"aria-label":e.pinned?`Unpin ${e.label}`:`Pin ${e.label}`,className:`opacity-0 group-hover:opacity-100 focus-visible:opacity-100 p-1 text-muted-foreground hover:text-foreground transition-opacity`,children:(0,W.jsx)(_t,{className:`size-3.5`})})]},e.id)})})}function hV({navSpec:e}){let{tree:t,navState:n,dispatch:r,contextNav:i}=IP(),a=Ft(),o=sV(e),s=(t??[]).find(e=>e?.id===n.activeL1Id)??null,c=i?.pathname===a.pathname?i:null;return(0,W.jsxs)(lI,{children:[(0,W.jsx)(uI,{children:(0,W.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,W.jsxs)(dI,{children:[(()=>{if(c||!s)return null;if(s.panel){let e=s.panel;return(0,W.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,W.jsx)(e,{item:s,navState:n,dispatch:r})})}return s.children&&s.children.length>0?(0,W.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,W.jsx)(mV,{items:s.children})}):null})(),c?(0,W.jsx)(`div`,{className:`pt-1`,children:(0,W.jsx)(uV,{entries:c.spec})}):o.length>0&&(0,W.jsx)(`div`,{className:`pt-1`,children:(0,W.jsx)(uV,{entries:o})})]})]})}var gV=`0.49.2181`,_V=`https://github.com/bitcobblers/wod-wiki/releases`;function vV(e){return/-pr\.\d+$/.test(e)?_V:`${_V}/tag/v${e}`}function yV({onSearch:e,onCreate:t}){let{tree:n,navState:r,dispatch:i}=IP(),a=On(),o=Ft(),s=OF(),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`);o.pathname===`/`||o.pathname;let d=`pointer-events-none absolute left-full top-1/2 -translate-y-1/2 z-50 ml-2 w-max rounded-md border border-border bg-popover px-2 py-1 text-xs text-popover-foreground opacity-0 shadow-md transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{onClick:()=>{s(),a(`/`)},title:`Wod Wiki home`,"aria-label":`Wod Wiki home`,className:`group relative 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,W.jsx)(Ce,{size:17}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Wod Wiki home`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Wod Wiki home`})]}),(0,W.jsx)(`nav`,{"aria-label":`Primary`,className:`flex flex-col items-center gap-1.5`,children:l.map(e=>{let t=e.icon,n=pV(e,r,o);return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(),i({type:`SET_ACTIVE_L1`,id:e.id}),_L(e.action,c)},title:e.label,"aria-label":e.label,"aria-current":n?`page`:void 0,className:G(`group 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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(t,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:e.label}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:e.label})]},e.id)})}),(0,W.jsx)(`div`,{className:`flex-1`}),(0,W.jsxs)(`button`,{type:`button`,onClick:e,title:`Search (⌘/)`,"aria-label":`Search`,className:`group relative grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:[(0,W.jsx)(B,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Search`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Search (⌘/)`})]}),(0,W.jsxs)(`a`,{href:kR,target:`_blank`,rel:`noopener noreferrer`,title:`Buy Me a Coffee`,"aria-label":`Buy Me a Coffee`,className:`group relative grid size-9 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:[(0,W.jsx)(AR,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Buy Me a Coffee`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Buy Me a Coffee`})]}),(0,W.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:G(`group 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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(Be,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Profile`}),(0,W.jsx)(`span`,{role:`tooltip`,className:d,children:`Profile`})]}),(0,W.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:G(`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,W.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,W.jsx)(Qn,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Settings`}),(0,W.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 text-xs text-popover-foreground opacity-0 shadow-md transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[`Settings (v`,gV,`)`]})]})]})}function bV({activations:e,activeSection:t,variant:n,deps:r,className:i}){return(0,W.jsx)(`nav`,{className:G(`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,W.jsx)(`button`,{onClick:()=>_L(e.action,r),className:G(`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 xV=class e{now;name=`tick`;timestamp;data;static _counter=0;constructor(t,n=Ml){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this.data=t}},SV=20,CV=e=>{let[t,n]=(0,U.useState)(`idle`),[r,i]=(0,U.useState)(0),[a,o]=(0,U.useState)(0),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),n(`idle`)},[]),f=(0,U.useCallback)(()=>{if(e)try{let t=new xV(void 0,e.nowProvider);e.handle(t),o(e=>e+1)}catch{d(),n(`error`)}},[e,d]);(0,U.useEffect)(()=>{if(e)return e.subscribeToStack(e=>{e.blocks.length===0&&t!==`completed`&&(l.current&&=(clearInterval(l.current),null),n(`completed`))})},[e,t]),(0,U.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]);let p=(0,U.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()??Ml.nowMs();u.current=i-r,r===0&&c(i),l.current=setInterval(f,SV)},[e,t,r,f]),m=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),e&&e.handle({name:`timer:pause`,timestamp:new Date,data:{}}),n(`paused`)},[e]),h=(0,U.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),i(0),o(0),n(`idle`),c(null),u.current=null},[e]),g=(0,U.useCallback)(()=>{!e||t===`running`||(n(`paused`),f())},[e,t,f]);return(0,U.useEffect)(()=>{if(t!==`running`||!u.current)return;let n=setInterval(()=>{i((e?.nowProvider?.nowMs()??Ml.nowMs())-u.current)},100);return()=>clearInterval(n)},[t,e?.nowProvider]),(0,U.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]),(0,U.useEffect)(()=>{h()},[e,h]),(0,U.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])},wV=(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 TV(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,U.useState)(r);return(0,U.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 EV(e){return TV(e,`round`)}function DV(e){return TV(e,`display`)}function OV(e){let t=EV(e),n=DV(e);return(0,U.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 kV=(0,U.createContext)(void 0),AV=({runtime:e,children:t})=>(0,W.jsx)(kV.Provider,{value:e,children:t});function jV(){let e=(0,U.useContext)(kV);if(!e)throw Error(`useScriptRuntime must be used within ScriptRuntimeProvider`);return e}function MV(e){let t=jV(),n=e===void 0?t:e,[r,i]=(0,U.useState)(()=>n?.getOutputStatements?.()??[]);return(0,U.useEffect)(()=>{if(!n){i([]);return}return i(n.getOutputStatements()),n.subscribeToOutput?.(()=>{i(n.getOutputStatements())})},[n]),(0,U.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 NV(e){let t=jV(),n=e===void 0?t:e,[r,i]=(0,U.useState)(()=>n?.getLiveAnalytics?.()??[]);return(0,U.useEffect)(()=>{if(!n){i([]);return}return i(n.getLiveAnalytics?.()??[]),n.subscribeToOutput?.(()=>{i(n.getLiveAnalytics?.()??[])})},[n]),r}function PV(){let e=jV(),[t,n]=(0,U.useState)({type:`initial`,blocks:e.stack.blocks,depth:e.stack.count,clockTime:e.clock.currentDate});return(0,U.useEffect)(()=>e.subscribeToStack(e=>{n(e)}),[e]),t}function FV(){return PV().blocks}function IV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.useMemo)(()=>{for(let t of e){let e=t.getMemoryByTag(`metric:next`);if(e.length===0)continue;let n=fa.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 LV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 RV(){let e=LV();return(0,U.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 zV(){let e=LV(),t=RV();return(0,U.useMemo)(()=>t?e.filter(e=>e.block!==t.block):[],[e,t])}function BV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 VV(){let e=FV(),[t,n]=(0,U.useState)(0);return(0,U.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,U.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 HV(e){let t=jV(),n=(0,U.useMemo)(()=>t.stack.blocks.find(t=>t.key.toString()===e),[t,e]),[r,i]=(0,U.useState)(()=>n?.getMemoryByTag(`time`)[0]?.metrics[0]?.value);(0,U.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,U.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,U.useMemo)(()=>r?.spans??[],[r]),o=a.length>0&&a[a.length-1].ended===void 0,[s,c]=(0,U.useState)(bu()),l=(0,U.useMemo)(()=>a.length===0?0:wV(a,s),[a,s]);return(0,U.useEffect)(()=>{if(!o)return;let e,t=()=>{c(bu()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[o]),{elapsed:l,isRunning:o,timeSpans:a}}var UV=(0,U.createContext)(void 0),WV=(0,U.createContext)(null),GV={getState:()=>Xz().getState(),setState:(e,t)=>{let n=Xz();typeof e==`function`?n.setState(e(n.getState()),t):n.setState(e,t)},subscribe:e=>Xz().subscribe(e)},KV=({factory:e,children:t})=>{let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null),u=(0,U.useRef)(e);u.current=e;let d=(0,U.useRef)(null),f=(0,U.useRef)(null),p=(0,U.useRef)(!1),m=(0,U.useCallback)(()=>{f.current&&=(f.current.dispose(),null),a(null),GV.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,U.useCallback)((e,t)=>{if(!p.current){p.current=!0,s(!0),l(null);try{f.current&&=(f.current.dispose(),null);let n=d.current;if(d.current=null,n)try{u.current.disposeRuntime(n)}catch(e){console.error(`[RuntimeProvider] Error disposing existing runtime:`,e)}let i=u.current.createRuntime(e,t);if(d.current=i,r(i),i){let e=new am(i);e.add(new im({id:`local`})),f.current=e,a(e),GV.getState().setSubscriptionManager(e)}else f.current=null,a(null),GV.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,U.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,W.jsx)(UV.Provider,{value:g,children:(0,W.jsx)(WV.Provider,{value:i,children:t})})};function qV({factory:e,children:t}){return(0,W.jsx)(KV,{factory:e,children:t})}var JV=`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`,YV=`flex flex-col flex-1 min-w-0 xl:max-w-[984px] 2xl:max-w-none min-h-screen lg:rounded-[2.5rem]`;function XV({id:e,title:t,subtitle:n,titleAccessory:r,actions:i,queryBar:a,subheader:o,titleTestId:s,className:c}){return(0,W.jsxs)(`div`,{id:e,"data-page-sticky-boundary":`true`,className:G(`max-lg:hidden lg:sticky lg:top-0 z-30 border-b border-border/50 bg-background/95 backdrop-blur-md transition-colors`,c),children:[(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-2.5 sm:gap-3 min-w-0`,children:[(0,W.jsx)(`div`,{className:`h-5 w-1.5 shrink-0 rounded-full bg-primary`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`h1`,{"data-testid":s,className:`text-base sm:text-lg font-black tracking-tight text-foreground leading-none truncate`,children:t}),n&&(0,W.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground truncate`,children:n})]}),r]})]}),a&&(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),i&&(0,W.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto`,children:i})]}),o&&(0,W.jsx)(`div`,{className:`bg-background/40`,children:o})]})}function ZV({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,U.useRef)(``),u=(0,U.useRef)(i),d=(0,U.useRef)(a),f=(0,U.useRef)(null),p=(0,U.useRef)(1);(0,U.useEffect)(()=>{u.current=i},[i]),(0,U.useEffect)(()=>{d.current=a},[a]);let m=e.filter(Boolean).join(`\0`),h=r.join(`,`),g=(0,U.useMemo)(()=>m?m.split(`\0`):[],[m]),_=(0,U.useMemo)(()=>h.split(`,`).map(Number),[h]),v=(0,U.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null)},[]);(0,U.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 QV({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]=fn(`s`,{defaultValue:o??a[0]?.id??``,shallow:!0,history:`replace`}),[f,p]=(0,U.useState)(c?.[0]?.id??``);if(ZV({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}),ZV({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,W.jsxs)(`div`,{className:G(`flex flex-col min-h-screen bg-background`,l),children:[s,(0,W.jsx)(bV,{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,W.jsx)(`div`,{className:`flex-1`,children:c.map(e=>{let t=(0,W.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,W.jsx)(qV,{factory:e.runtimeFactory,children:t},e.id):t})})]})}return(0,W.jsx)(`div`,{className:G(`relative flex w-full min-h-screen justify-start items-start`,l),children:(0,W.jsxs)(`div`,{className:G(YV,JV),children:[(0,W.jsx)(XV,{title:e,titleAccessory:t,actions:n,subheader:r}),(0,W.jsx)(`div`,{className:`flex-1`,children:i})]})})}var $V=`[data-page-sticky-boundary="true"]`,eH=0;function tH(e,t=eH){if(typeof document>`u`)return e;let n=Array.from(document.querySelectorAll($V)).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 nH(e,t=eH){let[n,r]=(0,U.useState)(e);return(0,U.useEffect)(()=>{let n=0,i=()=>r(tH(e,t)),a=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(i)};i(),window.addEventListener(`scroll`,a,{passive:!0}),window.addEventListener(`resize`,i);let o=typeof ResizeObserver>`u`?void 0:new ResizeObserver(i);document.querySelectorAll($V).forEach(e=>o?.observe(e));let s=typeof MutationObserver>`u`?void 0:new MutationObserver(()=>{document.querySelectorAll($V).forEach(e=>o?.observe(e)),i()});return typeof document<`u`&&document.body&&s?.observe(document.body,{childList:!0,subtree:!0}),()=>{s?.disconnect(),o?.disconnect(),cancelAnimationFrame(n),window.removeEventListener(`scroll`,a),window.removeEventListener(`resize`,i)}},[e,t]),n}function rH({top:e,label:t,icon:n,badge:r,meta:i,testId:a,className:o}){return(0,W.jsxs)(`div`,{"data-testid":a,className:G(`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,W.jsx)(`span`,{className:`min-w-0 truncate text-xs font-bold text-foreground`,children:t}),r,i&&(0,W.jsx)(`span`,{className:`ml-auto shrink-0 pl-2 font-mono text-[10px] text-muted-foreground`,children:i})]})}var iH=(0,U.createContext)(null),aH=(0,U.createContext)(null);function oH({children:e}){let[t,n]=(0,U.useState)(null);return(0,W.jsx)(aH.Provider,{value:n,children:(0,W.jsx)(iH.Provider,{value:t,children:e})})}function sH({className:e}){let t=(0,U.useContext)(aH);return(0,W.jsx)(`div`,{ref:t,className:e,"data-testid":`mobile-query-slot`})}function cH(){return(0,U.useContext)(iH)}function lH({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,W.jsxs)(`div`,{className:G(`relative flex w-full min-h-screen justify-start items-start`,d),children:[(0,W.jsxs)(`div`,{className:G(YV,JV),children:[(0,W.jsx)(XV,{title:t,subtitle:n,titleTestId:r,actions:i}),(0,W.jsx)(`main`,{className:`flex-1 min-w-0 max-w-full`,children:e})]}),s&&a&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,W.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,W.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,W.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,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:a})]})}),c&&o&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,W.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,W.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,W.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,W.jsx)(`div`,{className:`flex-1 min-h-0`,children:o})]})})]})}function uH(e){return e.map(e=>{let t=e.action,n=e.secondaryAction?.action,r={kind:`link`,id:e.id,label:e.label};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 dH=U.createContext(null);function fH(){let e=U.useContext(dH);if(!e)throw Error(`DropdownMenu components must be used inside a DropdownMenu`);return e}function pH(){let e=U.useContext(dH);return U.useCallback(()=>{e?.setIsOpen(!1)},[e])}var mH=({children:e,open:t,onOpenChange:n})=>{let r=U.useContext(dH),i=U.useId(),a=r?`${r.portalChain}/${i}`:i,[o,s]=U.useState(t??!1),c=U.useRef(null),[l,u]=U.useState(-1),d=U.useRef(new Map),[,f]=U.useReducer(e=>e+1,0);U.useEffect(()=>{t!==void 0&&s(t)},[t]);let p=U.useCallback(e=>{s(e),u(-1),n?.(e)},[n]),m=U.useCallback((e,t)=>{d.current.set(e,t),f()},[]),h=U.useCallback(e=>{d.current.delete(e),f()},[]),g=U.useCallback(e=>Array.from(d.current.keys()).indexOf(e),[]),_=d.current.size,v=U.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,W.jsx)(dH.Provider,{value:v,children:(0,W.jsx)(`div`,{ref:c,className:`relative inline-block`,children:e})})},hH=U.forwardRef(({className:e,children:t,asChild:n,...r},i)=>{let{isOpen:a,setIsOpen:o}=fH(),s=e=>{e.stopPropagation(),o(!a)};return n&&U.isValidElement(t)?U.cloneElement(t,{...r,onClick:s}):(0,W.jsx)(`button`,{ref:i,className:e,onClick:s,...r,children:t})});hH.displayName=`DropdownMenuTrigger`;var gH=U.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}=fH(),p=U.useRef(null),m=a||p,[h,g]=U.useState({top:0,bottom:0,left:0,width:0}),_=r===`bottom`,[v,y]=U.useState(!1);U.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}),y(!1)},[o,c]),U.useLayoutEffect(()=>{if(!o||!_||!m.current)return;let e=m.current.getBoundingClientRect();y(h.top+e.height>window.innerHeight)},[o,_,h.top,m]),U.useEffect(()=>{if(!o||u===0)return;let e=setTimeout(()=>{l(0)},0);return()=>clearTimeout(e)},[o,u,l]),U.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 b=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 x={position:`fixed`,zIndex:9999};return r===`top`||v?x.bottom=h.bottom:x.top=h.top,n===`end`?x.right=window.innerWidth-h.left-h.width:n===`start`?x.left=h.left:(x.left=h.left+h.width/2,x.transform=`translateX(-50%)`),NC.createPortal((0,W.jsx)(`div`,{ref:m,role:`menu`,"data-dropdown-chain":f,className:G(`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:x,onKeyDown:b,...i,children:t}),document.body)});gH.displayName=`DropdownMenuContent`;var _H=U.forwardRef(({className:e,disabled:t,inset:n,onClick:r,onKeyDown:i,...a},o)=>{let{setIsOpen:s,registerItem:c,unregisterItem:l,getItemIndex:u,activeIndex:d}=fH(),f=U.useId(),p=U.useRef(null),m=U.useCallback(e=>{p.current=e,typeof o==`function`?o(e):o&&(o.current=e)},[o]);U.useEffect(()=>(c(f,p),()=>l(f)),[f,c,l]);let h=u(f)===d;return U.useEffect(()=>{h&&p.current?.focus()},[h]),(0,W.jsx)(`div`,{ref:m,role:`menuitem`,tabIndex:t?-1:h?0:-1,"aria-disabled":t,"data-active":h?`true`:void 0,className:G(`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})});_H.displayName=`DropdownMenuItem`;var vH=U.forwardRef(({className:e,inset:t,...n},r)=>(0,W.jsx)(`div`,{ref:r,className:G(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));vH.displayName=`DropdownMenuLabel`;var yH=U.forwardRef(({className:e,...t},n)=>(0,W.jsx)(`div`,{ref:n,className:G(`-mx-1 my-1 h-px bg-muted`,e),...t}));yH.displayName=`DropdownMenuSeparator`;function bH({className:e,children:t,...n}){return(0,W.jsx)(`div`,{className:G(`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,e),...n,children:t})}var xH=[{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`}],SH=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function CH(e,t){return new Date(e,t+1,0).getDate()}function wH(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function TH(e,t){let n=X(e);if(n.error)return e;if(!t||t===`all`)return Qh({...n,window:void 0});let r=X(`:note ${t}`);return r.error||r.family!==`find`||!r.window?e:Qh({...n,window:r.window})}function EH(e){let t=X(e);return t.error||t.family===`pipeline`?null:`window`in t?t.window??null:null}function DH({query:e,onQueryChange:t,highlightDates:n=new Set,className:r}){let i=(0,U.useMemo)(()=>EH(e),[e]),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(()=>new Date),l=s.getFullYear(),u=s.getMonth(),d=(0,U.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,U.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:hF(t),end:hF(e)}},[i]),p=(0,U.useMemo)(()=>{let e=CH(l,u),t=wH(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(TH(e,`from ${n} to ${n}`));else{let[r,i]=a<=n?[a,n]:[n,a];o(null),t(TH(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=hF(new Date);return(0,W.jsxs)(`div`,{className:G(`relative inline-flex items-center`,r),children:[(0,W.jsxs)(mH,{children:[(0,W.jsx)(hH,{asChild:!0,children:(0,W.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,W.jsx)(vt,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`font-mono text-xs`,children:d}),(0,W.jsx)(hn,{className:`size-3 text-muted-foreground`,"aria-hidden":`true`})]})}),(0,W.jsxs)(gH,{align:`end`,className:`w-72 p-3`,children:[(0,W.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1 border-b border-border/60 pb-2`,children:xH.map(n=>{let r=n.value===`all`?!i:i?.kind===`relative`&&`last ${i.size}${i.unit}`===n.value;return(0,W.jsx)(`button`,{type:`button`,"data-testid":`wql-window-preset-${n.value}`,onClick:()=>{o(null),t(TH(e,n.value))},className:G(`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,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,W.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,W.jsx)(An,{className:`size-4`})}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-foreground`,children:_}),(0,W.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,W.jsx)(Lt,{className:`size-4`})})]}),(0,W.jsx)(`div`,{className:`mb-1 grid grid-cols-7 gap-1`,children:SH.map(e=>(0,W.jsx)(`div`,{className:`text-center text-[10px] font-medium text-muted-foreground`,children:e},e))}),(0,W.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,"data-testid":`wql-calendar-grid`,children:p.map((e,t)=>{if(e===null)return(0,W.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,W.jsxs)(`button`,{type:`button`,"data-testid":`wql-calendar-day-${r}`,onClick:()=>m(r),className:G(`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,W.jsx)(`span`,{children:e}),d&&!o&&!s&&(0,W.jsx)(`span`,{className:`absolute bottom-0.5 size-1 rounded-full bg-primary`})]},r)})}),a&&(0,W.jsxs)(`div`,{className:`mt-2 text-center text-[10px] text-muted-foreground`,children:[`Select second date to complete range (starting from `,a,`)`]})]})]}),i&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`wql-window-picker-clear`,onClick:()=>{o(null),t(TH(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,W.jsx)(Sr,{className:`size-3.5`})})]})}function OH({onOpen:e}){let t=pH();return(0,W.jsxs)(K,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{t(),e()},"data-testid":`query-settings-trigger`,className:`w-full justify-start gap-2 rounded-lg text-xs`,children:[(0,W.jsx)(Hn,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`truncate`,children:`Query settings`})]})}function kH(e){switch(e.kind){case`note`:return`note`;case`result`:return`result`;case`segment`:case`event`:return`segment`;case`effort`:return`effort`;default:return`note`}}var AH=[{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:`sourceNotebook`,label:`Notebook`,level:`note`,defaultVisible:!0,align:`left`,getValue:e=>e.sourceNotebook,formatValue:e=>String(e??``)},{id:`date`,label:`Date`,level:`note`,defaultVisible:!0,align:`right`,getValue:e=>e.date,formatValue:e=>String(e??``)}],jH={note:AH,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?``:GB(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?``:GB(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?``:GB(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 MH(e){return jH[e]??AH}function NH(e){return MH(e).filter(e=>e.defaultVisible).map(e=>e.id)}var PH=[{id:`cards`,label:`Cards`,icon:be},{id:`rows`,label:`Rows`,icon:ot},{id:`feed`,label:`Feed`,icon:Gt}];function FH({streamControls:e}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`l3-stream-controls`,children:[e.onOpenQuerySettings&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`This page`}),(0,W.jsx)(OH,{onOpen:e.onOpenQuerySettings})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Date window`}),(0,W.jsx)(DH,{query:e.query,onQueryChange:e.onQueryChange,className:`w-full justify-between`})]}),e.availableGroupDims.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Group by`}),(0,W.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,W.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,W.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleGroupDim(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,W.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Layout`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,"data-testid":`l3-layout-options`,children:PH.map(t=>{let n=t.icon,r=e.settings.layout===t.id;return(0,W.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,W.jsx)(n,{"aria-hidden":!0,className:`size-3`}),t.label]},t.id)})})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Fields`}),(0,W.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-field-options`,children:MH(e.level).map(t=>{let n=e.settings.visibleFields.includes(t.id);return(0,W.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,W.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleField(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,W.jsx)(`span`,{children:t.label})]},t.id)})})]})]})}function IH({spec:e,pageAction:t}){let{l3Items:n,streamControls:r}=IP(),i=sV(e),a=(0,U.useMemo)(()=>uH(n),[n]),o=cV();return i.length===0&&a.length===0&&!r&&!t?null:(0,W.jsxs)(`div`,{className:`flex flex-col px-3 py-4 gap-4`,children:[r&&(0,W.jsx)(`div`,{className:`pb-3 border-b border-border/50`,children:(0,W.jsx)(FH,{streamControls:r})}),i.length>0&&(0,W.jsx)(uV,{entries:i,activeId:o}),a.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col`,children:[(0,W.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,W.jsx)(uV,{entries:a,activeId:o})]}),t&&(0,W.jsx)(`div`,{className:`pt-2 border-t border-border/50`,children:t})]})}var LH=1023;function RH(e){return e===`/`?`canvas:home`:`canvas:${e.replace(/^\//,``)}`}function zH(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);if(r===null)return null;let i=t[r],{meta:a,body:o}=jv(i),s=new Set([`search`,`template`,`route`,`type`,`title`,`description`,`subtitle`,`section`,`order`]);return Object.keys(a).some(e=>!s.has(e.trim().toLowerCase()))?i:o};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(`canvas/`))i=`markdown/canvas/`+e.replace(/^canvas\//,``);else{let t=r(`markdown/canvas/`+e);if(t!==null)return t;i=`markdown/`+e}return r(i)??`# Source not found\n\nPath: \`${e}\`\nResolved: \`${i}\``}function BH(e){return(e.examples??[]).length>0||e.commands.some(e=>e.pipeline.length>0)}function VH(e){let t=new Map,n=null;for(let r of e)BH(r)&&(n=r),t.set(r.id,n);return t}function HH(){let[e,t]=(0,U.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: ${LH}px)`).matches);return(0,U.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(max-width: ${LH}px)`),n=e=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var UH=`wodwiki:fabAlignment`,WH=[{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 GH(){try{return KH(localStorage.getItem(UH))}catch{return}}function KH(e){return e===`right`||e===`left`?e:void 0}var qH=typeof window>`u`?void 0:GH();typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===UH&&(qH=KH(e.newValue))});function JH(e){qH=e;try{e===`right`?localStorage.removeItem(UH):localStorage.setItem(UH,e)}catch{}window.dispatchEvent(new StorageEvent(`storage`,{key:UH,newValue:e}))}function YH(){let[e,t]=(0,U.useState)(()=>qH??`right`);return(0,U.useEffect)(()=>{let e=e=>{e.key===UH&&t(KH(e.newValue)??`right`)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),[e,JH]}function XH({onOpen:e}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search`,title:`Search`,"data-testid":`search-fab`,className:G(`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,W.jsx)(B,{className:`size-6`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Search`})]})}var ZH=(0,U.createContext)(null),QH=(0,U.createContext)(!1),$H=(0,U.createContext)(null);function eU(){return(0,U.useContext)(ZH)!==null}function tU({primary:e,navbar:t,children:n,label:r,fallback:i=!1}){let a=(0,U.useContext)(ZH),o=(0,U.useContext)(QH),s=HH(),c=(0,U.useId)(),l=a!==null&&!o&&s&&!i,u=a!==null&&i,d=(0,W.jsx)(QH.Provider,{value:!0,children:n});return(0,U.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,W.jsx)(QH.Provider,{value:!0,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t,e,n]})})}function nU({onSearch:e,children:t}){let[n,r]=(0,U.useState)([]),i=(0,U.useCallback)(e=>r(t=>[...t.filter(t=>t.id!==e.id),e]),[]),a=(0,U.useCallback)(e=>r(t=>t.filter(t=>t.id!==e)),[]),o=(0,U.useMemo)(()=>({register:i,unregister:a}),[i,a]),s=(0,U.useMemo)(()=>{for(let e=n.length-1;e>=0;--e)if(!n[e].fallback)return n[e].navbar??null;return null},[n]);return(0,W.jsx)(ZH.Provider,{value:o,children:(0,W.jsxs)($H.Provider,{value:s,children:[t,(0,W.jsx)(iU,{registrations:n,onSearch:e})]})})}function rU(){let e=(0,U.useContext)($H);return e?(0,W.jsx)(W.Fragment,{children:e}):null}function iU({registrations:e,onSearch:t}){let n=HH(),[r]=YH(),i=FC(),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(null),l=(0,U.useRef)(null),u=(0,U.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(!e[t].fallback)return e[t]},[e]),d=(0,U.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(e[t].fallback)return e[t]},[e]);(0,U.useLayoutEffect)(()=>{a&&s.current?.focus()},[a]);let[f,p]=(0,U.useState)({active:0,global:0});(0,U.useLayoutEffect)(()=>{let e=c.current?.childElementCount??0,t=l.current?.childElementCount??0;p(n=>n.active===e&&n.global===t?n:{active:e,global:t})},[u,d]);let m=f.active>0||f.global>0;return!n||!t&&!u&&!d?null:(0,W.jsxs)(`div`,{"data-testid":`actions-dock`,className:G(`lg:hidden relative z-40 mt-4 flex flex-col items-center gap-2`,`transition-[transform,visibility] duration-200 ease-out`,r===`left`?`self-start items-start`:`self-end items-end`),children:[(0,W.jsxs)(`div`,{className:`relative z-40 flex flex-col items-center gap-2`,children:[u?.primary&&(0,W.jsx)(`div`,{className:`[&_button]:min-h-11 [&_button]:min-w-11`,children:u.primary}),t&&(0,W.jsx)(XH,{onOpen:()=>{o(!1),t()}})]}),a&&m&&(0,W.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-hidden":`true`,className:`fixed inset-0 z-30 cursor-default`,onClick:()=>o(!1)}),(0,W.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":u?.label??d?.label??`Page options`,tabIndex:-1,hidden:!a||!m,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),o(!1))},className:G(`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,W.jsx)(`div`,{ref:c,className:`contents`,children:u?.children}),f.active>0&&f.global>0&&(0,W.jsx)(`div`,{className:`my-1 border-t border-border/60`,"aria-hidden":`true`}),(0,W.jsx)(`div`,{ref:l,className:`contents`,children:d?.children})]}),m&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":u?.label??d?.label??`Page options`,title:u?.label??d?.label??`Page options`,"aria-expanded":a,"data-testid":`actions-overflow`,className:G(`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,W.jsx)(or,{className:`size-6`}):(0,W.jsx)(ye,{className:`size-6`}),(0,W.jsx)(`span`,{className:`sr-only`,children:u?.label??d?.label??`Page options`})]})]})}function aU(){return(0,W.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,W.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 oU(){return(0,W.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,W.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 sU(){let{tree:e,navState:t,contextNav:n}=IP(),r=Ft(),i=OF();return!e.find(e=>e.id===t.activeL1Id)?.applyFooter||n?.pathname===r.pathname?null:(0,W.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,W.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 cU({open:e,close:t,onSearch:n,onCreate:r,children:i}){return(0,W.jsxs)(Ze,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,W.jsx)(te,{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,W.jsx)(we,{transition:!0,className:`fixed inset-y-0 left-0 w-full transition duration-300 ease-out data-closed:-translate-x-full`,children:(0,W.jsx)(DF,{close:t,children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 bg-card`,children:[(0,W.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,W.jsx)(yV,{onSearch:()=>{t(),n?.()},onCreate:r?()=>{t(),r()}:void 0})}),(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,W.jsx)(`div`,{className:`flex items-center px-4 pt-3`,children:(0,W.jsxs)(vn,{as:_z,"aria-label":`Close navigation`,title:`Close navigation`,children:[(0,W.jsx)(oU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close navigation`})]})}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:i}),(0,W.jsx)(sU,{})]})]})})})]})}function lU({open:e,close:t,children:n}){return(0,W.jsxs)(Ze,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,W.jsx)(te,{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,W.jsx)(we,{transition:!0,className:`fixed inset-y-0 right-0 w-full transition duration-300 ease-out data-closed:translate-x-full`,children:(0,W.jsx)(DF,{close:t,children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-end px-4 pt-3`,children:(0,W.jsxs)(vn,{as:_z,"aria-label":`Close page options`,title:`Close page options`,children:[(0,W.jsx)(oU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close page options`})]})}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:n}),(0,W.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,W.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 uU({navbar:e,sidebar:t,onSearch:n,onCreate:r,secondary:i,pageAction:a,hideDesktopSidebar:o,children:s}){let[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(!1),{streamControls:f,l3Items:p}=IP(),m=!!(i&&i.length>0||p&&p.length>0||f||a),h=(0,U.useMemo)(()=>{let e=X(f?.query??``);return!e.error&&ah(e)&&e.filters.length>0},[f?.query]);return(0,W.jsx)(oH,{children:(0,W.jsx)(nU,{onSearch:n,children:(0,W.jsx)(`div`,{className:`relative isolate flex min-h-svh w-full bg-background max-lg:flex-col lg:flex-row`,children:(0,W.jsxs)(`div`,{className:`flex flex-1 w-full max-lg:flex-col lg:flex-row`,children:[(0,W.jsxs)(`nav`,{"aria-label":`Main`,className:`hidden lg:flex`,children:[(0,W.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,W.jsx)(yV,{onSearch:n??(()=>{}),onCreate:r})}),(0,W.jsx)(`div`,{className:G(`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,W.jsx)(cU,{open:c,close:()=>l(!1),onSearch:n,onCreate:r,children:t}),(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col min-w-0 xl:max-w-[984px] 2xl:max-w-none`,children:[(0,W.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`,children:[(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:()=>l(!0),"aria-label":`Open navigation`,title:`Open navigation`,children:[(0,W.jsx)(aU,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Open navigation`})]})}),(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),r&&(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:r,"aria-label":`New journal note`,title:`New journal note`,children:[(0,W.jsx)(fr,{className:`size-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`New journal note`})]})}),m&&(0,W.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,W.jsxs)(_z,{onClick:()=>d(!0),"aria-label":`Open page options`,title:`Open page options`,children:[(0,W.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,W.jsx)(Hn,{className:`size-5`}),h&&(0,W.jsx)(`span`,{"data-testid":`drawer-filters-active`,className:`absolute -top-1 -right-1 size-2 rounded-full bg-amber-500`,"aria-hidden":`true`})]}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Open page options`})]})})]}),(0,W.jsxs)(`main`,{className:`flex flex-1 flex-col lg:min-w-0`,children:[(0,W.jsx)(`div`,{className:`grow w-full max-lg:pb-48 lg:overflow-visible`,children:s}),(0,W.jsx)(dU,{})]})]}),(0,W.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,W.jsx)(IH,{spec:i,pageAction:a})}),(0,W.jsx)(lU,{open:u,close:()=>d(!1),children:(0,W.jsx)(IH,{spec:i,pageAction:a})})]})})})})}function dU(){let e=(0,U.useRef)(null),[t,n]=(0,U.useState)(0);return(0,U.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,U.useEffect)(()=>(document.documentElement.style.setProperty(`--thumb-dock-lift`,`${t}px`),()=>document.documentElement.style.setProperty(`--thumb-dock-lift`,`0px`)),[t]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:G(`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,W.jsx)(`div`,{ref:e,className:`w-full min-w-0`,children:(0,W.jsx)(sH,{className:`flex w-full min-w-0`})})}),(0,W.jsx)(`div`,{className:`lg:hidden`,"aria-hidden":`true`,style:{height:t}})]})}function fU(e){let t=e.indexOf(`markdown`);return t!==-1&&e.length>t+2?e[t+2]:`General`}function pU(e){return String(ub(ib(e).meta,`search`)??``).toLowerCase()===`hidden`}function mU(e){let t=ub(ib(e).meta,`date`);if(typeof t!=`string`||!/^\d{4}-\d{2}-\d{2}$/.test(t))return;let n=new Date(`${t}T12:00:00Z`);return Number.isFinite(n.getTime())&&n.toISOString().slice(0,10)===t?n.getTime():void 0}function hU(e){return Object.entries(e).map(([e,t])=>{let n=e.split(`/`),r=n[n.length-1].replace(`.md`,``),i=t,a=ub(ib(i).meta,`title`);return{id:e,name:r,displayName:typeof a==`string`&&a.trim()?a.trim():JO(r),category:fU(n),content:i,date:mU(i),searchHidden:pU(i)}})}function gU(){let e=_k();return(0,U.useMemo)(()=>e?hU(e):[],[e])}var _U={};function vU(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 yU(e,t){let{canvasPage:n,workoutItems:r,recentResults:i,selectWorkout:a}=t;if(e===`/`)return[];if(n){let t=/^\/notebook\//.test(e),i=t?e.split(`/`).pop()??null:null,o=[],s=e.startsWith(`/page/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=zR(e).split(`
103
103
  `),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:`notebook-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(hF(new Date(n)))}),r.forEach(t=>{let n=vU(t);n&&Number.isFinite(new Date(n).getTime())&&e.add(hF(new Date(n)))}),Array.from(e).sort().reverse().slice(0,10).map(e=>({id:e,label:Qy(new Date(e+`T00:00:00`)),type:`heading`}))}return[]}var bU=/^[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 xU(e){return bU.test(e)}function SU(e){try{return decodeURIComponent(e)}catch{return null}}function CU(e){if(!vF(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 wU(e){let t=(e.length>1?e.replace(/\/+$/,``):e).match(/^\/day\/([^/]+)$/);if(!t)return{kind:`invalid`};let n=SU(t[1]);return n!=null&&CU(n)?{kind:`date`,date:n}:{kind:`invalid`}}var TU=`# My Workout Notebook
104
104
 
105
105
  Welcome to the **WOD.WIKI** playground.
@@ -126,7 +126,7 @@ Timer 12:00
126
126
  - 5 Burpees
127
127
  - 30s Rest
128
128
  \`\`\`
129
- `;function EU(e,t){let n=wU(e),r=n.kind===`date`,i=n.kind===`date`?n.date:void 0,a=sF(e),o=cF(e),s=e.match(/^\/note\/([^/]+)$/),c=s!=null,l=s?decodeURIComponent(s[1]):void 0,u=null,d=e.match(/^\/notebook\/([^/]+)\/([^/]+)$/);if(d){let n=decodeURIComponent(d[1]),s=decodeURIComponent(d[2]);if(xU(s)){if(!c)return{isPlaygroundRoute:iF(e),effectivePlaygroundId:t.id,isDayRoute:r,day:i,isNoteRoute:!0,note:s,namedPageSlug:void 0,notebookDate:null,notebookItemMatch:a,feedDetailMatch:o}}else{let e=vF(s);e&&(u={slug:n,date:e.dateKey})}}return{isPlaygroundRoute:iF(e),effectivePlaygroundId:t.id,isDayRoute:r,day:i,isNoteRoute:c,note:l,namedPageSlug:void 0,notebookDate:u,notebookItemMatch:a,feedDetailMatch:o}}function DU(e,t,n,r){if(e.isPlaygroundRoute)return{name:`Playground`,content:``,category:`playground`};if(e.isNoteRoute&&e.note)return{name:`Note`,content:``,category:`note`};if(e.namedPageSlug)return{name:e.namedPageSlug,content:``,category:`page`};if(e.notebookDate)return{name:e.notebookDate.date,content:``,category:e.notebookDate.slug};if(e.isDayRoute&&e.day)return{name:e.day,content:``,category:`journal`};if(t.startsWith(`/effort/`)||/^\/t\/effort\/[^/]+/.test(t)){let e=t.startsWith(`/t/effort/`)?t.slice(10):t.slice(8);return{name:decodeURIComponent(e.split(`/`)[0]??`Effort`),content:``,category:`effort`}}if(t.startsWith(`/equipment/`)||/^\/t\/equipment\/[^/]+/.test(t)){let e=t.startsWith(`/t/equipment/`)?t.slice(13):t.slice(11);return{name:decodeURIComponent(e.split(`/`)[0]??`Equipment`),content:``,category:`equipment`}}if(e.notebookItemMatch)return{name:decodeURIComponent(e.notebookItemMatch[2]),content:``,category:`notebook`};if(e.feedDetailMatch)return{name:decodeURIComponent(e.feedDetailMatch),content:``,category:`feed`};if(t.startsWith(`/t/`))return{name:`Tags`,content:``,category:`tags`};if(t.startsWith(`/dashboard/`))return{name:decodeURIComponent(t.split(`/`)[2]??`Dashboard`),content:``,category:`dashboard`};if(t.startsWith(`/session/`))return{name:decodeURIComponent(t.split(`/`)[2]??`Sessions`),content:``,category:`sessions`};if(r)return{name:r.sections[0]?.heading??`Canvas`,content:``,category:`canvas`};let i={"/":`Home`,"/dashboards":`Dashboards`},a=VF(t),o=aI(a)??i[t]??i[a];if(o)return{name:o,content:``,category:`General`};if(a.startsWith(`/results/`))return{name:`Result`,content:TU,category:`Results`};if(a===`/settings`||a.startsWith(`/settings/`))return{name:`Settings`,content:TU,category:`Settings`};let s=t.match(/^\/notebook\/([^/]+)\/([^/]+)$/);if(s){let e=decodeURIComponent(s[2]),t=decodeURIComponent(s[1]),r=n.find(n=>n.name===e&&n.category===t);return r?{name:r.name,content:r.content,category:r.category}:{name:e,content:TU,category:t}}return{name:`Home`,content:TU,category:`General`}}function OU(e,t,n){let r=VF(t);return oI(r)?`library`:e.feedDetailMatch?`feedDetail`:e.notebookItemMatch?`notebookItem`:t.startsWith(`/effort/`)||/^\/t\/effort\/[^/]+/.test(t)?`effortDetail`:t.startsWith(`/equipment/`)||/^\/t\/equipment\/[^/]+/.test(t)?`equipmentDetail`:r===`/dashboards`?`dashboardExplorer`:t.startsWith(`/dashboard/`)?`dashboardView`:r===`/settings`||r.startsWith(`/settings/`)?`settings`:t.startsWith(`/t/`)?`tagDetail`:r===`/`?`home`:n?`canvas`:e.isPlaygroundRoute&&e.effectivePlaygroundId?`playground`:e.isNoteRoute&&e.note||e.namedPageSlug?`note`:e.notebookDate?`notebookDate`:e.isDayRoute&&e.day?`day`:/^\/notebook\/[^/]+\/[^/]+$/.test(t)?`workout`:`note`}function kU(e,t,n){switch(e){case`home`:case`canvas`:return{wrap:`canvas`,title:n.name,subheader:e===`canvas`&&/^\/notebook\//.test(t)?`filter-notebook-workouts`:void 0,actionsMode:`notebook-readonly`,withIndex:!0};default:return{wrap:`bare`}}}function AU(e,t,n){let r=EU(e,t),i=VF(e)===`/`?null:n.canvasPage;if(!i&&!r.note){let t=e.match(/^\/page\/([^/]+)$/);t&&(r.namedPageSlug=decodeURIComponent(t[1]))}let a=DU(r,e,n.workoutItems,i),o=yU(e,{...n,canvasPage:i}),s=OU(r,e,i),c=kU(s,e,a);return{...r,canvasPage:i,workout:a,nav:o,page:s,shell:c}}function jU(e=20){let[t,n]=(0,U.useState)([]),{pathname:r}=Ft(),i=(0,U.useCallback)(()=>{Z.getRecentSessions(e).then(n).catch(()=>{})},[e]);return(0,U.useEffect)(()=>{i()},[r,i]),t}function MU(){let e=On();return(0,U.useCallback)(t=>{t.name===`Home`?e($.home):e(WP(t.category??`General`,t.name))},[e])}function NU(){let e=pn(),{pathname:t}=Ft(),n=gU(),r=hz(t),i=jU(),a=MU();return(0,U.useMemo)(()=>AU(t,e,{workoutItems:n,canvasPage:r,recentResults:i,selectWorkout:a}),[t,e,n,r,i,a])}function PU(e,t,n,r){let i=e===`upload`?`Uploading`:`Downloading`,a=n??`data`,o=r?.chunkId?` - ${r.chunkId} (${r.phase})`:``;return t>1?`${i} ${a} (${t} syncs)${o}`:`${i} ${a}${o}`}function FU(){let e=(0,U.useSyncExternalStore)(aS,iS);return e.uploading===0&&e.downloading===0?null:(0,W.jsxs)(`div`,{role:`status`,"data-testid":`sync-activity-indicators`,className:`flex items-center gap-1 text-muted-foreground`,children:[e.downloading>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":PU(`download`,e.downloading,e.label,e.activeProgress),title:PU(`download`,e.downloading,e.label,e.activeProgress),children:[(0,W.jsx)(r,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.downloading>1&&(0,W.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.downloading})]}),e.uploading>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":PU(`upload`,e.uploading,e.label),title:PU(`upload`,e.uploading,e.label),children:[(0,W.jsx)(Je,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.uploading>1&&(0,W.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.uploading})]}),e.activeProgress&&(0,W.jsxs)(`span`,{"data-testid":`sync-granular-progress`,className:`text-[11px] font-mono text-muted-foreground truncate max-w-[160px] hidden sm:inline`,title:`${e.activeProgress.sourceLabel}: ${e.activeProgress.phase} ${e.activeProgress.chunkId??``}`,children:[e.activeProgress.chunkId,e.activeProgress.totalRecords!==void 0&&e.activeProgress.completedRecords!==void 0&&` (${e.activeProgress.completedRecords+1}/${e.activeProgress.totalRecords})`]})]})}var IU=0,LU=null,RU=0;function zU(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`),Q({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,W.jsx)(gP,{altText:`Open notebooks`,onClick:()=>t(`/notebooks`),children:`Open notebooks`})})}function BU(){let e=On();return(0,U.useEffect)(()=>{let t=()=>{let t=LN();!t||t.id<=RU||(RU=t.id,t.updates.length&&Q({title:`Notebook updates`,description:t.updates.map(e=>`${e.label}: ${e.state===`updated`?`updated`:e.state===`error`?`sync failed`:`update available`}`).join(`; `),action:(0,W.jsx)(gP,{altText:`Manage notebook updates`,onClick:()=>e($.notebooks),children:`Review updates`})}))};return t(),RN(t)},[e]),(0,U.useEffect)(()=>{let t=t=>{if(t.error||(LU=null),t.result&&t.result.id>IU&&(IU=t.result.id,zU(t.result,e)),t.error&&t.error!==LU){LU=t.error;let n=t.error.toLowerCase(),r=/turso|database|token|libsql/.test(n)?$.settingsStorage:/seed|feed|source|manifest|chunk/.test(n)?$.settingsSync:$.settings;Q({title:`Sync failed`,description:t.error,variant:`destructive`,action:(0,W.jsx)(gP,{altText:`Open settings`,onClick:()=>e(r),children:`Settings`})})}};return t(iS()),aS(()=>t(iS()))},[e]),null}var VU=t({usePaletteStore:()=>HU}),HU=Tt((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 UU(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 WU(e){let{items:t,defaultActiveId:n,multi:r=!1,onSelect:i}=e,[a,o]=(0,U.useState)(n??null),[s,c]=(0,U.useState)(new Set),[l,u]=(0,U.useState)(``),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{n!==void 0&&o(n)},[n]);let f=(0,U.useMemo)(()=>l?t.filter(e=>UU(e,l)):t,[t,l]),p=(0,U.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,U.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,U.useCallback)(()=>{c(new Set),d.current=null},[]),g=(0,U.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,U.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 GU(e){return e===`meta`?`⌘`:e===`shift`?`⇧`:e===`alt`?`⌥`:e}function KU({tokens:e,delimiter:t}){return(0,W.jsx)(`span`,{className:`flex items-center gap-0.5 ml-auto shrink-0`,children:e.map((e,n)=>(0,W.jsxs)(`span`,{className:`contents`,children:[n>0&&t?(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`px-0.5 text-[10px] font-mono text-zinc-400 dark:text-zinc-500`,children:t}):null,(0,W.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:GU(e)})]},`shortcut-${n}-${e}`))})}function qU({item:e,ctx:t}){let n=t.actions.find(e=>e.isPrimary),r=t.actions.filter(e=>!e.isPrimary);return(0,W.jsxs)(`div`,{role:`option`,"aria-selected":t.isSelected,className:G(`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,W.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,W.jsxs)(`span`,{className:`flex flex-col min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`truncate font-medium leading-tight`,children:e.label}),e.subtitle&&(0,W.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,W.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,W.jsx)(KU,{tokens:e.shortcut}),r.length>0&&(0,W.jsx)(`span`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-1`,children:r.map(e=>(0,W.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,W.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 JU({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,U.useRef)(null),_=(0,U.useRef)(null),v=On(),[y,b]=Wt(),x=(0,U.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,U.useCallback)(e=>_L(e,x),[x]),C=(0,U.useCallback)(e=>{let t=[...e.actions??[],...d?.(e)??[]].find(e=>e.isPrimary);t?S(t.action):r(e)},[d,r,S]),w=WU({items:e,onSelect:C});return(0,U.useEffect)(()=>{i&&!s&&setTimeout(()=>g.current?.focus(),0)},[i,s]),(0,U.useEffect)(()=>{w.setQuery(l?t:``)},[t,l]),(0,U.useEffect)(()=>{if(w.activeId){for(let e of _.current?.querySelectorAll(`[data-item-id]`)??[])if(e.dataset.itemId===w.activeId){e.scrollIntoView?.({block:`nearest`});break}}},[w.activeId]),i?(0,W.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,className:G(`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,W.jsx)(`div`,{onKeyDown:e=>{if(e.key===`Escape`){a();return}if(e.key===`Enter`&&!e.defaultPrevented&&w.visibleItems.length>0){e.preventDefault();let t=w.visibleItems.find(e=>e.id===w.activeId)??w.visibleItems[0];C(t);return}e.key===`ArrowDown`&&!e.defaultPrevented&&w.visibleItems.length>0&&(e.preventDefault(),w.setActiveId(w.visibleItems[0].id),_.current?.focus())},children:s??(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-zinc-200 px-3 dark:border-zinc-700`,children:[(0,W.jsx)(kn,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,W.jsx)(`input`,{ref:g,type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:u,"data-testid":`palette-search-input`,className:`flex-1 bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground`}),p&&(0,W.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,W.jsx)(Sr,{className:`h-4 w-4`})}),(0,W.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,W.jsx)(`div`,{ref:_,role:`listbox`,"aria-label":`Results`,"aria-activedescendant":w.activeId??void 0,tabIndex:-1,onKeyDown:e=>{if(e.key===`Escape`){a();return}w.onKeyDown(e)},className:`min-h-0 flex-1 overflow-y-auto p-1 outline-none`,children:w.visibleItems.length===0?m??(t?(0,W.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results found for`,` `,(0,W.jsxs)(`span`,{className:`font-medium text-zinc-600 dark:text-zinc-300`,children:[`“`,t,`”`]})]}):(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No results`})):Array.from(w.groups.entries()).map(([e,t])=>(0,W.jsxs)(`div`,{className:`mb-1`,children:[e&&(0,W.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:w.selectedIds.has(e.id),isActive:w.activeId===e.id,depth:e.depth??0,actions:t,onSelect:()=>w.selectItem(e),executeAction:S};return(0,W.jsx)(`div`,{id:e.id,"data-item-id":e.id,className:`group`,onMouseEnter:()=>w.setActiveId(e.id),children:f?f(e,n):(0,W.jsx)(qU,{item:e,ctx:n})},e.id)})]},e))}),c]}):null}var YU=150,XU=.66,ZU=.92;function QU(){let[e,t]=(0,U.useState)(()=>typeof window>`u`||window.matchMedia(`(min-width: 1024px)`).matches);return(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1024px)`),n=()=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function $U(e){let t=e.trim();return t?!X(t).error||t.startsWith(`:`)&&!/^:\w+\{text:[^}]*\}$/.test(t):!1}function eW(e){return{id:e.id,label:e.label,subtitle:e.sublabel,group:e.category,keywords:[e.label,e.category??``],payload:e}}var tW=()=>{let{isOpen:e,request:t,_select:n,_dismiss:r}=HU(),[i,a]=(0,U.useState)(``),o=(0,U.useRef)(``),s=(0,U.useRef)(),[c,l]=(0,U.useState)({valid:!0}),u=(0,U.useRef)(c),d=QU(),[f,p]=(0,U.useState)(),m=f?f===`wql`:$U(i),h=(0,U.useCallback)(e=>{o.current=e,a(e);let t=X(e);!t.error&&ah(t)&&(s.current=e)},[]),g=(0,U.useCallback)(e=>{u.current=e,l(e)},[]),[_,v]=(0,U.useState)([]),[y,b]=(0,U.useState)(!1),x=(0,U.useRef)(0),S=(0,U.useRef)(t),C=(0,U.useRef)(0);S.current!==t&&(S.current=t,C.current+=1);let w=On();(0,U.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,D]=(0,U.useState)(!1),O=FC(),k=O.height?`${Math.round(O.height*XU)}px`:`66dvh`,A=O.height?`${Math.round(O.height*ZU)}px`:`92dvh`;(0,U.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&&ah(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),D(!1)}},[e,t]),(0,U.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=>({...eW(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)}})()},YU);return()=>clearTimeout(r)},[i,c.valid,m,e,t]);let j=(0,U.useCallback)(e=>{n(e.payload)},[n]),M=(0,U.useCallback)(e=>{if(!T?.onApply)return;let t=e??o.current;X(t).error||(T.onApply(t),r())},[T,r]),N=y?(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Searching…`}):i?(0,W.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results for `,(0,W.jsxs)(`span`,{className:`font-medium text-foreground/60`,children:[`“`,i,`”`]})]}):(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Start typing to search`}),P=T?(0,W.jsxs)(`div`,{className:`border-b border-border/80 px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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`}),T.settings&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`palette-settings`,"aria-expanded":E,"aria-label":T.settings.label??`Query settings`,onClick:()=>D(e=>!e),className:`mb-2 ml-auto grid size-7 place-items-center rounded-md border border-border/70 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,W.jsx)(Hn,{className:`size-3.5`,"aria-hidden":`true`})})]}),(0,W.jsx)(`div`,{"data-testid":`palette-composer`,className:m?void 0:`[&_[role=alert]]:hidden [&_[data-testid=wql-composer-pending]]:hidden`,children:(0,W.jsx)(aT,{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?M:void 0,autoFocus:d,placeholder:`Search or edit WQL…`},C.current)}),T.settings&&E&&(0,W.jsx)(`div`,{className:`mt-2 border-t border-border/80 pt-2`,"data-testid":`palette-settings-panel`,children:T.settings.panel})]}):void 0,F=T?(0,W.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,W.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,W.jsx)(`div`,{className:`flex-1`}),(0,W.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,W.jsx)(`button`,{type:`button`,onClick:()=>M(),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,I=(0,U.useCallback)(e=>{e||r()},[r]);return(0,W.jsx)(dt,{open:e,onOpenChange:I,children:(0,W.jsxs)(cn,{children:[(0,W.jsx)(bt,{className:`fixed inset-0 z-50 bg-black/50 backdrop-blur-sm`}),(0,W.jsxs)(Sn,{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":k,"--palette-max-h":A},children:[(0,W.jsx)(Xn,{className:`sr-only`,children:`Command Palette`}),(0,W.jsx)(Bn,{className:`sr-only`,children:`Search and navigate. Press Escape to close.`}),(0,W.jsx)(JU,{className:`min-h-0 flex-1 border-border bg-card dark:bg-card`,items:_,query:i,onQueryChange:h,onSelect:j,isOpen:!0,onClose:r,mobileClose:!0,placeholder:t?.placeholder??`Search…`,searchRow:P,footer:F,filterResults:!T,header:t?.header,emptyState:N})]})]})})},nW=[{id:`amrap`,label:`AMRAP`,terms:[`amrap`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=amrap`},{id:`emom`,label:`EMOM`,terms:[`emom`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=emom`},{id:`tabata`,label:`Tabata`,terms:[`tabata`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=tabata-intervals`},{id:`rest`,label:`Rest`,terms:[`rest`,`:*`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=required-rest`},{id:`duration`,label:`Duration`,terms:[`duration`,`5:00`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=countdown-countup`},{id:`ladder`,label:`Ladder`,terms:[`ladder`,`21-15-9`],route:`/page/guide-structure`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=rep-schemes`},{id:`rounds`,label:`Rounds`,terms:[`rounds`],route:`/page/guide-structure?h=rounds`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=rounds`},{id:`supersets`,label:`Supersets`,terms:[`supersets`],route:`/page/guide-structure?h=nesting`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=nesting`},{id:`actual`,label:`Actual result`,terms:[`actual`,`:?`],route:`/page/guide-metrics`,sublabel:`Capture & feedback`,gridRoute:`/page/guide-metrics?h=capture`},{id:`load-prompt`,label:`Load prompt`,terms:[`load prompt`,`?lb`,`225lb`,`load`],route:`/page/guide-metrics`,sublabel:`Capture & feedback`,gridRoute:`/page/guide-metrics?h=capture`},{id:`metrics`,label:`Metrics`,terms:[`metrics`,`reps`,`effort`,`discipline`],route:`/page/guide-metrics?h=planned-vs-recorded`,sublabel:`Planned vs recorded`,gridRoute:`/page/guide-metrics?h=planned-vs-recorded`},{id:`palette`,label:`Command palette`,terms:[`palette`,`⌘/`],route:`/page/guide-start?h=reference`,sublabel:`Syntax reference`,gridRoute:`/page/guide-start?h=reference`}];Object.fromEntries(nW.map(e=>[e.id,e]));function rW(){return{id:`constructs`,label:`Reference`,search:e=>{let t=e.toLowerCase().trim();return t?nW.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 iW(e,t){return`${e}/${t}`}function aW(e){let t=e.indexOf(`/`);return t<0?e:e.slice(0,t)}function oW(e){return e.slug??e.id}function sW(e){let t=oW(e);return{id:e.id,slug:e.slug,category:aW(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 cW=new mA,lW={pageId:iW,async getPage(e){let t=await cW.getRecord(e);return t?sW(t):void 0},async savePage(e){let t=await cW.getRecord(e.id);return t?(await cW.updateRecord(t.id,{rawContent:e.content,expectedSourceRevision:e.sourceRevision,blocks:e.noteBlocks,title:e.name,slug:e.slug}),t.id):(await cW.saveRecord({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 cW.getRecord(e.id))throw new DOMException(`Page already exists: ${e.id}`,`ConstraintError`);return this.savePage(e)},async getAllPages(){return(await cW.getRecords()).map(sW)},async getPagesByCategory(e){return(await cW.getRecords()).filter(t=>aW(oW(t))===e).map(sW)},async deletePage(e){await cW.deleteRecord(e)},async clearAll(){let e=await cW.getRecords();await Promise.all(e.filter(e=>e.id.includes(`/`)).map(e=>cW.deleteRecord(e.id)))}};function uW(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 dW(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(`
129
+ `;function EU(e,t){let n=wU(e),r=n.kind===`date`,i=n.kind===`date`?n.date:void 0,a=sF(e),o=cF(e),s=e.match(/^\/note\/([^/]+)$/),c=s!=null,l=s?decodeURIComponent(s[1]):void 0,u=null,d=e.match(/^\/notebook\/([^/]+)\/([^/]+)$/);if(d){let n=decodeURIComponent(d[1]),s=decodeURIComponent(d[2]);if(xU(s)){if(!c)return{isPlaygroundRoute:iF(e),effectivePlaygroundId:t.id,isDayRoute:r,day:i,isNoteRoute:!0,note:s,namedPageSlug:void 0,notebookDate:null,notebookItemMatch:a,feedDetailMatch:o}}else{let e=vF(s);e&&(u={slug:n,date:e.dateKey})}}return{isPlaygroundRoute:iF(e),effectivePlaygroundId:t.id,isDayRoute:r,day:i,isNoteRoute:c,note:l,namedPageSlug:void 0,notebookDate:u,notebookItemMatch:a,feedDetailMatch:o}}function DU(e,t,n,r){if(e.isPlaygroundRoute)return{name:`Playground`,content:``,category:`playground`};if(e.isNoteRoute&&e.note)return{name:`Note`,content:``,category:`note`};if(e.namedPageSlug)return{name:e.namedPageSlug,content:``,category:`page`};if(e.notebookDate)return{name:e.notebookDate.date,content:``,category:e.notebookDate.slug};if(e.isDayRoute&&e.day)return{name:e.day,content:``,category:`journal`};if(t.startsWith(`/effort/`)||/^\/t\/effort\/[^/]+/.test(t)){let e=t.startsWith(`/t/effort/`)?t.slice(10):t.slice(8);return{name:decodeURIComponent(e.split(`/`)[0]??`Effort`),content:``,category:`effort`}}if(t.startsWith(`/equipment/`)||/^\/t\/equipment\/[^/]+/.test(t)){let e=t.startsWith(`/t/equipment/`)?t.slice(13):t.slice(11);return{name:decodeURIComponent(e.split(`/`)[0]??`Equipment`),content:``,category:`equipment`}}if(e.notebookItemMatch)return{name:decodeURIComponent(e.notebookItemMatch[2]),content:``,category:`notebook`};if(e.feedDetailMatch)return{name:decodeURIComponent(e.feedDetailMatch),content:``,category:`feed`};if(t.startsWith(`/t/`))return{name:`Tags`,content:``,category:`tags`};if(t.startsWith(`/dashboard/`))return{name:decodeURIComponent(t.split(`/`)[2]??`Dashboard`),content:``,category:`dashboard`};if(t.startsWith(`/session/`))return{name:decodeURIComponent(t.split(`/`)[2]??`Sessions`),content:``,category:`sessions`};if(r)return{name:r.sections[0]?.heading??`Canvas`,content:``,category:`canvas`};let i={"/":`Home`,"/dashboards":`Dashboards`},a=VF(t),o=aI(a)??i[t]??i[a];if(o)return{name:o,content:``,category:`General`};if(a.startsWith(`/results/`))return{name:`Result`,content:TU,category:`Results`};if(a===`/settings`||a.startsWith(`/settings/`))return{name:`Settings`,content:TU,category:`Settings`};let s=t.match(/^\/notebook\/([^/]+)\/([^/]+)$/);if(s){let e=decodeURIComponent(s[2]),t=decodeURIComponent(s[1]),r=n.find(n=>n.name===e&&n.category===t);return r?{name:r.name,content:r.content,category:r.category}:{name:e,content:TU,category:t}}return{name:`Home`,content:TU,category:`General`}}function OU(e,t,n){let r=VF(t);return oI(r)?`library`:e.feedDetailMatch?`feedDetail`:e.notebookItemMatch?`notebookItem`:t.startsWith(`/effort/`)||/^\/t\/effort\/[^/]+/.test(t)?`effortDetail`:t.startsWith(`/equipment/`)||/^\/t\/equipment\/[^/]+/.test(t)?`equipmentDetail`:r===`/dashboards`?`dashboardExplorer`:t.startsWith(`/dashboard/`)?`dashboardView`:r===`/settings`||r.startsWith(`/settings/`)?`settings`:t.startsWith(`/t/`)?`tagDetail`:r===`/`?`home`:n?`canvas`:e.isPlaygroundRoute&&e.effectivePlaygroundId?`playground`:e.isNoteRoute&&e.note||e.namedPageSlug?`note`:e.notebookDate?`notebookDate`:e.isDayRoute&&e.day?`day`:/^\/notebook\/[^/]+\/[^/]+$/.test(t)?`workout`:`note`}function kU(e,t,n){switch(e){case`home`:case`canvas`:return{wrap:`canvas`,title:n.name,subheader:e===`canvas`&&/^\/notebook\//.test(t)?`filter-notebook-workouts`:void 0,actionsMode:`notebook-readonly`,withIndex:!0};default:return{wrap:`bare`}}}function AU(e,t,n){let r=EU(e,t),i=VF(e)===`/`?null:n.canvasPage;if(!i&&!r.note){let t=e.match(/^\/page\/([^/]+)$/);t&&(r.namedPageSlug=decodeURIComponent(t[1]))}let a=DU(r,e,n.workoutItems,i),o=yU(e,{...n,canvasPage:i}),s=OU(r,e,i),c=kU(s,e,a);return{...r,canvasPage:i,workout:a,nav:o,page:s,shell:c}}function jU(e=20){let[t,n]=(0,U.useState)([]),{pathname:r}=Ft(),i=(0,U.useCallback)(()=>{Z.getRecentSessions(e).then(n).catch(()=>{})},[e]);return(0,U.useEffect)(()=>{i()},[r,i]),t}function MU(){let e=On();return(0,U.useCallback)(t=>{t.name===`Home`?e($.home):e(WP(t.category??`General`,t.name))},[e])}function NU(){let e=pn(),{pathname:t}=Ft(),n=gU(),r=hz(t),i=jU(),a=MU();return(0,U.useMemo)(()=>AU(t,e,{workoutItems:n,canvasPage:r,recentResults:i,selectWorkout:a}),[t,e,n,r,i,a])}function PU(e,t,n,r){let i=e===`upload`?`Uploading`:`Downloading`,a=n??`data`,o=r?.chunkId?` - ${r.chunkId} (${r.phase})`:``;return t>1?`${i} ${a} (${t} syncs)${o}`:`${i} ${a}${o}`}function FU(){let e=(0,U.useSyncExternalStore)(aS,iS);return e.uploading===0&&e.downloading===0?null:(0,W.jsxs)(`div`,{role:`status`,"data-testid":`sync-activity-indicators`,className:`flex items-center gap-1 text-muted-foreground`,children:[e.downloading>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":PU(`download`,e.downloading,e.label,e.activeProgress),title:PU(`download`,e.downloading,e.label,e.activeProgress),children:[(0,W.jsx)(r,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.downloading>1&&(0,W.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.downloading})]}),e.uploading>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-label":PU(`upload`,e.uploading,e.label),title:PU(`upload`,e.uploading,e.label),children:[(0,W.jsx)(Je,{className:`size-3.5 motion-safe:animate-spin`,"aria-hidden":`true`}),e.uploading>1&&(0,W.jsx)(`span`,{className:`text-[10px] tabular-nums`,children:e.uploading})]}),e.activeProgress&&(0,W.jsxs)(`span`,{"data-testid":`sync-granular-progress`,className:`text-[11px] font-mono text-muted-foreground truncate max-w-[160px] hidden sm:inline`,title:`${e.activeProgress.sourceLabel}: ${e.activeProgress.phase} ${e.activeProgress.chunkId??``}`,children:[e.activeProgress.chunkId,e.activeProgress.totalRecords!==void 0&&e.activeProgress.completedRecords!==void 0&&` (${e.activeProgress.completedRecords+1}/${e.activeProgress.totalRecords})`]})]})}var IU=0,LU=null,RU=0;function zU(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`),Q({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,W.jsx)(gP,{altText:`Open notebooks`,onClick:()=>t(`/notebooks`),children:`Open notebooks`})})}function BU(){let e=On();return(0,U.useEffect)(()=>{let t=()=>{let t=LN();!t||t.id<=RU||(RU=t.id,t.updates.length&&Q({title:`Notebook updates`,description:t.updates.map(e=>`${e.label}: ${e.state===`updated`?`updated`:e.state===`error`?`sync failed`:`update available`}`).join(`; `),action:(0,W.jsx)(gP,{altText:`Manage notebook updates`,onClick:()=>e($.notebooks),children:`Review updates`})}))};return t(),RN(t)},[e]),(0,U.useEffect)(()=>{let t=t=>{if(t.error||(LU=null),t.result&&t.result.id>IU&&(IU=t.result.id,zU(t.result,e)),t.error&&t.error!==LU){LU=t.error;let n=t.error.toLowerCase(),r=/turso|database|token|libsql/.test(n)?$.settingsStorage:/seed|feed|source|manifest|chunk/.test(n)?$.settingsSync:$.settings;Q({title:`Sync failed`,description:t.error,variant:`destructive`,action:(0,W.jsx)(gP,{altText:`Open settings`,onClick:()=>e(r),children:`Settings`})})}};return t(iS()),aS(()=>t(iS()))},[e]),null}var VU=t({usePaletteStore:()=>HU}),HU=Tt((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 UU(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 WU(e){let{items:t,defaultActiveId:n,multi:r=!1,onSelect:i}=e,[a,o]=(0,U.useState)(n??null),[s,c]=(0,U.useState)(new Set),[l,u]=(0,U.useState)(``),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{n!==void 0&&o(n)},[n]);let f=(0,U.useMemo)(()=>l?t.filter(e=>UU(e,l)):t,[t,l]),p=(0,U.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,U.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,U.useCallback)(()=>{c(new Set),d.current=null},[]),g=(0,U.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,U.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 GU(e){return e===`meta`?`⌘`:e===`shift`?`⇧`:e===`alt`?`⌥`:e}function KU({tokens:e,delimiter:t}){return(0,W.jsx)(`span`,{className:`flex items-center gap-0.5 ml-auto shrink-0`,children:e.map((e,n)=>(0,W.jsxs)(`span`,{className:`contents`,children:[n>0&&t?(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`px-0.5 text-[10px] font-mono text-zinc-400 dark:text-zinc-500`,children:t}):null,(0,W.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:GU(e)})]},`shortcut-${n}-${e}`))})}function qU({item:e,ctx:t}){let n=t.actions.find(e=>e.isPrimary),r=t.actions.filter(e=>!e.isPrimary);return(0,W.jsxs)(`div`,{role:`option`,"aria-selected":t.isSelected,className:G(`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,W.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,W.jsxs)(`span`,{className:`flex flex-col min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`truncate font-medium leading-tight`,children:e.label}),e.subtitle&&(0,W.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,W.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,W.jsx)(KU,{tokens:e.shortcut}),r.length>0&&(0,W.jsx)(`span`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-1`,children:r.map(e=>(0,W.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,W.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 JU({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,U.useRef)(null),_=(0,U.useRef)(null),v=On(),[y,b]=Wt(),x=(0,U.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,U.useCallback)(e=>_L(e,x),[x]),C=(0,U.useCallback)(e=>{let t=[...e.actions??[],...d?.(e)??[]].find(e=>e.isPrimary);t?S(t.action):r(e)},[d,r,S]),w=WU({items:e,onSelect:C});return(0,U.useEffect)(()=>{i&&!s&&setTimeout(()=>g.current?.focus(),0)},[i,s]),(0,U.useEffect)(()=>{w.setQuery(l?t:``)},[t,l]),(0,U.useEffect)(()=>{if(w.activeId){for(let e of _.current?.querySelectorAll(`[data-item-id]`)??[])if(e.dataset.itemId===w.activeId){e.scrollIntoView?.({block:`nearest`});break}}},[w.activeId]),i?(0,W.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,className:G(`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,W.jsx)(`div`,{onKeyDown:e=>{if(e.key===`Escape`){a();return}if(e.key===`Enter`&&!e.defaultPrevented&&w.visibleItems.length>0){e.preventDefault();let t=w.visibleItems.find(e=>e.id===w.activeId)??w.visibleItems[0];C(t);return}e.key===`ArrowDown`&&!e.defaultPrevented&&w.visibleItems.length>0&&(e.preventDefault(),w.setActiveId(w.visibleItems[0].id),_.current?.focus())},children:s??(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-zinc-200 px-3 dark:border-zinc-700`,children:[(0,W.jsx)(kn,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,W.jsx)(`input`,{ref:g,type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:u,"data-testid":`palette-search-input`,className:`flex-1 bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground`}),p&&(0,W.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,W.jsx)(Sr,{className:`h-4 w-4`})}),(0,W.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,W.jsx)(`div`,{ref:_,role:`listbox`,"aria-label":`Results`,"aria-activedescendant":w.activeId??void 0,tabIndex:-1,onKeyDown:e=>{if(e.key===`Escape`){a();return}w.onKeyDown(e)},className:`min-h-0 flex-1 overflow-y-auto p-1 outline-none`,children:w.visibleItems.length===0?m??(t?(0,W.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results found for`,` `,(0,W.jsxs)(`span`,{className:`font-medium text-zinc-600 dark:text-zinc-300`,children:[`“`,t,`”`]})]}):(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No results`})):Array.from(w.groups.entries()).map(([e,t])=>(0,W.jsxs)(`div`,{className:`mb-1`,children:[e&&(0,W.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:w.selectedIds.has(e.id),isActive:w.activeId===e.id,depth:e.depth??0,actions:t,onSelect:()=>w.selectItem(e),executeAction:S};return(0,W.jsx)(`div`,{id:e.id,"data-item-id":e.id,className:`group`,onMouseEnter:()=>w.setActiveId(e.id),children:f?f(e,n):(0,W.jsx)(qU,{item:e,ctx:n})},e.id)})]},e))}),c]}):null}var YU=150,XU=.66,ZU=.92;function QU(){let[e,t]=(0,U.useState)(()=>typeof window>`u`||window.matchMedia(`(min-width: 1024px)`).matches);return(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1024px)`),n=()=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function $U(e){let t=e.trim();return t?!X(t).error||t.startsWith(`:`)&&!/^:\w+\{text:[^}]*\}$/.test(t):!1}function eW(e){return{id:e.id,label:e.label,subtitle:e.sublabel,group:e.category,keywords:[e.label,e.category??``],payload:e}}var tW=()=>{let{isOpen:e,request:t,_select:n,_dismiss:r}=HU(),[i,a]=(0,U.useState)(``),o=(0,U.useRef)(``),s=(0,U.useRef)(),[c,l]=(0,U.useState)({valid:!0}),u=(0,U.useRef)(c),d=QU(),[f,p]=(0,U.useState)(),m=f?f===`wql`:$U(i),h=(0,U.useCallback)(e=>{o.current=e,a(e);let t=X(e);!t.error&&ah(t)&&(s.current=e)},[]),g=(0,U.useCallback)(e=>{u.current=e,l(e)},[]),[_,v]=(0,U.useState)([]),[y,b]=(0,U.useState)(!1),x=(0,U.useRef)(0),S=(0,U.useRef)(t),C=(0,U.useRef)(0);S.current!==t&&(S.current=t,C.current+=1);let w=On();(0,U.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,D]=(0,U.useState)(!1),O=FC(),k=!d&&(O.offsetBottom??0)>40,A=d?void 0:k&&O.height?`${O.height}px`:O.height?`${Math.round(O.height*XU)}px`:`66dvh`,j=d?void 0:k&&O.height?`${O.height}px`:O.height?`${Math.round(O.height*ZU)}px`:`92dvh`,M=d?void 0:`${O.offsetBottom??0}px`;(0,U.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&&ah(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),D(!1)}},[e,t]),(0,U.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=>({...eW(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)}})()},YU);return()=>clearTimeout(r)},[i,c.valid,m,e,t]);let N=(0,U.useCallback)(e=>{n(e.payload)},[n]),P=(0,U.useCallback)(e=>{if(!T?.onApply)return;let t=e??o.current;X(t).error||(T.onApply(t),r())},[T,r]),F=y?(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Searching…`}):i?(0,W.jsxs)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:[`No results for `,(0,W.jsxs)(`span`,{className:`font-medium text-foreground/60`,children:[`“`,i,`”`]})]}):(0,W.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Start typing to search`}),I=T?(0,W.jsxs)(`div`,{className:`border-b border-border/80 px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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`}),T.settings&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`palette-settings`,"aria-expanded":E,"aria-label":T.settings.label??`Query settings`,onClick:()=>D(e=>!e),className:`mb-2 ml-auto grid size-7 place-items-center rounded-md border border-border/70 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:(0,W.jsx)(Hn,{className:`size-3.5`,"aria-hidden":`true`})})]}),(0,W.jsx)(`div`,{"data-testid":`palette-composer`,className:m?void 0:`[&_[role=alert]]:hidden [&_[data-testid=wql-composer-pending]]:hidden`,children:(0,W.jsx)(aT,{query:i,onQueryChange:h,compact:!0,onValidationChange:g,showDiagnostics:m&&(T.showDiagnostics??!0),execute:T.execute,preferredChoices:T.preferredChoices,customSlots:T.customSlots,diagnosticsPosition:`top`,onSubmit:T.onApply?P:void 0,autoFocus:d,placeholder:`Search or edit WQL…`},C.current)}),T.settings&&E&&(0,W.jsx)(`div`,{className:`mt-2 border-t border-border/80 pt-2`,"data-testid":`palette-settings-panel`,children:T.settings.panel})]}):void 0,L=T?(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/80 px-3 pt-2`,style:{paddingBottom:k?`0.5rem`:`max(0.5rem, env(safe-area-inset-bottom))`},children:[m&&!c.valid&&(0,W.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,W.jsx)(`div`,{className:`flex-1`}),(0,W.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,W.jsx)(`button`,{type:`button`,onClick:()=>P(),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,R=(0,U.useCallback)(e=>{e||r()},[r]);return(0,W.jsx)(dt,{open:e,onOpenChange:R,children:(0,W.jsxs)(cn,{children:[(0,W.jsx)(bt,{className:`fixed inset-0 z-50 bg-black/50 backdrop-blur-sm`}),(0,W.jsxs)(Sn,{className:`fixed inset-x-0 z-50 mx-auto flex w-full flex-col outline-none max-lg:bottom-[var(--palette-bottom,0px)] 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-bottom":M,"--palette-min-h":A,"--palette-max-h":j},children:[(0,W.jsx)(Xn,{className:`sr-only`,children:`Command Palette`}),(0,W.jsx)(Bn,{className:`sr-only`,children:`Search and navigate. Press Escape to close.`}),(0,W.jsx)(JU,{className:`min-h-0 flex-1 border-border bg-card dark:bg-card`,items:_,query:i,onQueryChange:h,onSelect:N,isOpen:!0,onClose:r,mobileClose:!0,placeholder:t?.placeholder??`Search…`,searchRow:I,footer:L,filterResults:!T,header:t?.header,emptyState:F})]})]})})},nW=[{id:`amrap`,label:`AMRAP`,terms:[`amrap`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=amrap`},{id:`emom`,label:`EMOM`,terms:[`emom`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=emom`},{id:`tabata`,label:`Tabata`,terms:[`tabata`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=tabata-intervals`},{id:`rest`,label:`Rest`,terms:[`rest`,`:*`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=required-rest`},{id:`duration`,label:`Duration`,terms:[`duration`,`5:00`],route:`/page/guide-protocols`,sublabel:`Timer behaviors`,gridRoute:`/page/guide-protocols?h=countdown-countup`},{id:`ladder`,label:`Ladder`,terms:[`ladder`,`21-15-9`],route:`/page/guide-structure`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=rep-schemes`},{id:`rounds`,label:`Rounds`,terms:[`rounds`],route:`/page/guide-structure?h=rounds`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=rounds`},{id:`supersets`,label:`Supersets`,terms:[`supersets`],route:`/page/guide-structure?h=nesting`,sublabel:`Rounds & structure`,gridRoute:`/page/guide-structure?h=nesting`},{id:`actual`,label:`Actual result`,terms:[`actual`,`:?`],route:`/page/guide-metrics`,sublabel:`Capture & feedback`,gridRoute:`/page/guide-metrics?h=capture`},{id:`load-prompt`,label:`Load prompt`,terms:[`load prompt`,`?lb`,`225lb`,`load`],route:`/page/guide-metrics`,sublabel:`Capture & feedback`,gridRoute:`/page/guide-metrics?h=capture`},{id:`metrics`,label:`Metrics`,terms:[`metrics`,`reps`,`effort`,`discipline`],route:`/page/guide-metrics?h=planned-vs-recorded`,sublabel:`Planned vs recorded`,gridRoute:`/page/guide-metrics?h=planned-vs-recorded`},{id:`palette`,label:`Command palette`,terms:[`palette`,`⌘/`],route:`/page/guide-start?h=reference`,sublabel:`Syntax reference`,gridRoute:`/page/guide-start?h=reference`}];Object.fromEntries(nW.map(e=>[e.id,e]));function rW(){return{id:`constructs`,label:`Reference`,search:e=>{let t=e.toLowerCase().trim();return t?nW.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 iW(e,t){return`${e}/${t}`}function aW(e){let t=e.indexOf(`/`);return t<0?e:e.slice(0,t)}function oW(e){return e.slug??e.id}function sW(e){let t=oW(e);return{id:e.id,slug:e.slug,category:aW(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 cW=new mA,lW={pageId:iW,async getPage(e){let t=await cW.getRecord(e);return t?sW(t):void 0},async savePage(e){let t=await cW.getRecord(e.id);return t?(await cW.updateRecord(t.id,{rawContent:e.content,expectedSourceRevision:e.sourceRevision,blocks:e.noteBlocks,title:e.name,slug:e.slug}),t.id):(await cW.saveRecord({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 cW.getRecord(e.id))throw new DOMException(`Page already exists: ${e.id}`,`ConstraintError`);return this.savePage(e)},async getAllPages(){return(await cW.getRecords()).map(sW)},async getPagesByCategory(e){return(await cW.getRecords()).filter(t=>aW(oW(t))===e).map(sW)},async deletePage(e){await cW.deleteRecord(e)},async clearAll(){let e=await cW.getRecords();await Promise.all(e.filter(e=>e.id.includes(`/`)).map(e=>cW.deleteRecord(e.id)))}};function uW(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 dW(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(`
130
130
  `).find(e=>e.trim())?.trim()??`(empty block)`;t.push({index:i++,script:n,preview:a,dialect:e})}return t}function fW(){return new Date().toISOString().slice(0,10)}function pW(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 mW=[{value:`blank`,label:`Blank`},{value:`notebook`,label:`Notebook`},{value:`source`,label:`Source`}],hW=`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 gW({open:e,onOpenChange:t,defaultDate:n,defaultMode:r=`blank`,onCreated:i}){let[a,o]=(0,U.useState)(r),[s,c]=(0,U.useState)(()=>gF()),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(null),[y,b]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),C=(0,U.useRef)(0),w=(0,U.useRef)(0),T=(0,U.useRef)(!1),[E,D]=(0,U.useState)(``),[O,k]=(0,U.useState)(``),[A,j]=(0,U.useState)(``);(0,U.useEffect)(()=>{e&&(C.current++,w.current++,o(r),c(n&&vF(n)?n:gF()),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),Promise.all([Z.getAllNotes(),cj.getAll()]).then(([t,n])=>{if(C.current!==e)return;let r=new Set([`defaults`,...n.map(e=>e.slug)]);g(t.filter(e=>{let t=e.notebookId?.startsWith(`notebook/`)?e.notebookId.slice(9):void 0;return!!t&&r.has(t)&&!e.id.startsWith(`notebook/`)}).map(e=>({id:e.id,title:e.title,rawContent:e.rawContent,tags:e.tags??[]})))}).catch(()=>{C.current===e&&v(`Could not load notebook notes.`)})},N=()=>{let e=++w.current;b(null),S(null),Promise.all([$O(),Z.getAllNotes()]).then(([t,n])=>{if(w.current!==e)return;let r={};for(let e of n)e.sourcePath&&(r[e.sourcePath]=e.id);b({notebooks:t,sourceIdByPath:r})}).catch(()=>{w.current===e&&S(`Could not load notebooks.`)})};(0,U.useEffect)(()=>{e&&(a===`notebook`&&h===null&&!_&&M(),a===`source`&&y===null&&!x&&N())},[e,a,h,_,y,x]);let P=(0,U.useMemo)(()=>h?.find(e=>e.id===E)??null,[h,E]),F=(0,U.useMemo)(()=>{if(!y||!O)return null;let e=y.notebooks.find(e=>e.id===O);return e?{group:e}:null},[y,O]),I=F?F.group.items.find(e=>e.path===A)??null:null,L=vF(s),R=s!==``&&!L,ee=`Journal — ${pW(L?.dateKey??gF())}`,z=a===`notebook`?P===null:a===`source`&&I===null;return(0,W.jsx)(LC,{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,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(K,{type:`button`,variant:`outline`,size:`lg`,onClick:()=>t(!1),disabled:d,children:`Cancel`}),(0,W.jsx)(K,{type:`submit`,form:`create-journal-note-form`,size:`lg`,disabled:!L||z||d,children:d?`Creating…`:`Create`})]}),children:(0,W.jsxs)(`form`,{id:`create-journal-note-form`,onSubmit:async e=>{e.preventDefault();let n=vF(s);if(!n||T.current||z)return;let r;if(a===`notebook`&&P)r={journalDate:n.dateKey,title:l.trim()||P.title||ee,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()||ee,rawContent:``,tags:[],type:`journal`};T.current=!0,f(!0),m(null);try{let e=await SF.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,W.jsx)(`div`,{role:`group`,"aria-label":`Start from`,className:`grid grid-cols-3 gap-1.5`,children:mW.map(e=>(0,W.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===`notebook`&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`label`,{htmlFor:`journal-create-notebook-note`,className:`text-sm font-medium`,children:`Notebook note`}),_?(0,W.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`text-sm text-destructive`,children:_}),(0,W.jsx)(K,{type:`button`,variant:`ghost`,size:`sm`,onClick:M,children:`Retry`})]}):h===null?(0,W.jsx)(`p`,{className:`flex min-h-11 items-center text-sm text-muted-foreground`,children:`Loading notebook notes…`}):h.length===0?(0,W.jsx)(`p`,{className:`flex min-h-11 items-center text-sm text-muted-foreground`,children:`No starter notes yet. Choose Blank or Source.`}):(0,W.jsxs)(`select`,{id:`journal-create-notebook-note`,value:E,onChange:e=>D(e.target.value),disabled:d,className:hW,children:[(0,W.jsx)(`option`,{value:``,children:`Choose a note to clone…`}),h.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.title||e.id},e.id))]})]}),a===`source`&&(0,W.jsx)(`div`,{className:`flex flex-col gap-3`,children:x?(0,W.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`text-sm text-destructive`,children:x}),(0,W.jsx)(K,{type:`button`,variant:`ghost`,size:`sm`,onClick:N,children:`Retry`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`label`,{htmlFor:`journal-create-source-group`,className:`text-sm font-medium`,children:`Notebook`}),(0,W.jsxs)(`select`,{id:`journal-create-source-group`,value:O,onChange:e=>{k(e.target.value),j(``)},disabled:y===null||d,className:hW,children:[(0,W.jsx)(`option`,{value:``,children:y===null?`Loading…`:`Choose a notebook…`}),y&&y.notebooks.length>0&&(0,W.jsx)(`optgroup`,{label:`Notebooks`,children:y.notebooks.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.name},e.id))})]})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`label`,{htmlFor:`journal-create-source-item`,className:`text-sm font-medium`,children:`Note`}),(0,W.jsxs)(`select`,{id:`journal-create-source-item`,value:A,onChange:e=>j(e.target.value),disabled:!F||d,className:hW,children:[(0,W.jsx)(`option`,{value:``,children:F?`Choose a note…`:`Choose a notebook first`}),F?.group.items.map(e=>(0,W.jsx)(`option`,{value:e.path,children:e.date?`${e.name} — ${e.date}`:e.name},e.path))]})]})]})}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`label`,{htmlFor:`journal-create-date`,className:`text-sm font-medium`,children:`Date`}),(0,W.jsx)(`input`,{id:`journal-create-date`,type:`date`,value:s,onChange:e=>c(e.target.value),disabled:d,"aria-invalid":R||void 0,className:hW}),R&&(0,W.jsx)(`p`,{className:`text-sm text-destructive`,children:`Enter a valid date (YYYY-MM-DD).`})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsxs)(`label`,{htmlFor:`journal-create-title`,className:`text-sm font-medium`,children:[`Title `,(0,W.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:`(optional)`})]}),(0,W.jsx)(`input`,{id:`journal-create-title`,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:ee,disabled:d,className:hW})]}),p&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:p})]})})}function _W(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}function vW(e){let t=(()=>{switch(e.kind){case`note`:{if(e.sourceNotebook===`guides`)return e.pageSlug?`/page/${_W(e.pageSlug)}`:`/${_W(e.sourceNote.replace(/^\//,``))}`;if(e.sourceNotebook===`playground`)return`/playground/${encodeURIComponent(e.sourceNote)}`;let t=/^markdown\/dashboards\/(.+)\.md$/.exec(e.sourcePath??``);if(t?.[1])return`/dashboard/${_W(t[1])}`;let n=/^markdown\/efforts\/[^/]+\/(.+)\.md$/.exec(e.sourcePath??``);if(n?.[1])return`/effort/${_W(n[1])}`;let r=e.sourceId??``,i=e.sourcePath??``;return r.startsWith(`notebook:`)||i.startsWith(`markdown/notebooks/`)?e.sourceNote?`/notebook/${encodeURIComponent(e.sourceNotebook)}/${_W(e.sourceNote)}`:`/notebook/${encodeURIComponent(e.sourceNotebook)}`:e.pageSlug?`/page/${_W(e.pageSlug)}`:HP(e.id)}case`dashboard`:return e.sourceNotebook===`dashboards`&&e.sourceNote?`/dashboard/${_W(e.sourceNote)}`:HP(e.id);case`equipment`:{let t=e.sourceNote??e.id,n=t.startsWith(`equipment/`)?t.slice(10):t,r=/^(?:uuid-|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$)/i.test(n);return n&&!r?`/equipment/${_W(n)}`:HP(e.id)}case`tag`:{let t=MB(e),n=t?.type??`general`,r=t?.label??e.sourceNote??e.id;return`/t/${encodeURIComponent(n)}/${encodeURIComponent(r)}`}case`effort`:return`/effort/${encodeURIComponent(e.effort?.slug??e.id)}`;case`result`:return qP(e.id);case`segment`:case`event`:return qP(e.execution?.resultId??(e.sourceNotebook===`results`?e.sourceNote:e.id));default:return`/`}})();return e.block?`${t}#${encodeURIComponent(e.block.blockId)}`:t}function yW(e){return e.sourceNotebook===`playground`||e.sourceId===`playground`}function bW(e){return e.kind===`note`&&!e.sourceNote?`/notebooks?q=${encodeURIComponent(`:notebook{notebook:${e.sourceNotebook}}`)}`:null}function xW(e){return e.blockContentId?$P({q:e.blockContentId}):null}function SW(e){return!!(e.kind===`note`||(e.kind===`result`||e.kind===`segment`)&&e.execution?.noteId)}var CW=20,wW=`:note{source:journal,notebooks} by {date}`,TW={note:`Journal`,effort:`Efforts`,result:`Results`,segment:`Segments`,event:`Events`,dashboard:`Dashboards`,equipment:`Equipment`,tag:`Tags`};function EW(e){return{id:`entry:${e.id}`,label:e.title,sublabel:e.subtitle??e.date??void 0,category:e.kind===`note`&&e.sourceNotebook!==`journal`?`Notebooks`:TW[e.kind],type:`entry`,payload:e}}function DW(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}]}),Qh({...e,filters:n})}function OW(){return{id:`wql-search`,label:`Search`,search:async(e,t)=>{if(!X(e).error)return(await iV(e)).slice(0,CW).map(EW);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??jW());return i.error||!ah(i)?[]:(await iV(DW(i,r))).slice(0,CW).map(EW)}}}function kW(e){let t=X(e);return ah(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 AW(e){return{id:`${e.id}:wql-text`,label:e.label,search:t=>e.search(kW(t))}}function jW(){return FI(`/palette`).defaultWql??`:note{source:journal,notebooks} by {date}`}function MW(){return FI(`/palette`).typeOptions??[]}var NW=e=>ah(e)?CB.runFind(e):CB.runQuery(e.raw);function PW(e,t){if(e.type===`route`){let n=e.payload;t(n.route)}else if(e.type===`entry`){let n=e.payload;t(vW(n))}}var FW=new Set([`syntax`]),IW={journal:!0,playground:!0,canvas:!0,syntax:!0},LW=`$CURSOR`;function RW(e){let t=e.indexOf(LW);return t===-1?{content:e,cursorOffset:e.length}:{content:e.slice(0,t)+e.slice(t+7),cursorOffset:t}}function zW(){let e=typeof window<`u`?window.history.state?.idx:void 0;return typeof e==`number`&&e>0}function BW(e){let t=e.split(`
131
131
  `),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 VW(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`?$t:e.runIcon===`link`?O:o,action:{type:`call`,handler:e.onRun}}:void 0,secondaryRunIcon:e.runIcon}))}function HW(e){let{setL3Items:t,registerScrollFn:n,dispatch:r}=IP(),i=(0,U.useRef)(null),a=(0,U.useCallback)(e=>{i.current=e},[]),o=(0,U.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(`
132
132
  `),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(AT,!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:[Ar.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,U.useEffect)(()=>{n(o)},[o,n]),(0,U.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,U.useEffect)(()=>{e.length!==0&&t(VW(e))},[e,t]),{handleViewCreated:a,scrollToSection:o}}var UW=(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),WW=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`)}`},GW=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`)}`},KW=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`)}`},qW=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`)}`},JW=e=>e==null||!Number.isFinite(e)?`--:--`:Math.floor(Math.abs(e)/1e3)>=3600?GW(e):WW(e),YW=500,XW=900,ZW=560;function QW(e,t){let n=e<YW,r=e>=XW,i=!n;return{width:e,height:t,isCompact:n,isWide:i,isFull:r,isShort:t>0&&t<ZW,mode:r?`full`:i?`wide`:`compact`}}var $W=QW(800,600),eG=(0,U.createContext)($W);function tG(){return(0,U.useContext)(eG)}var nG=({children:e})=>{let t=(0,U.useRef)(null),[n,r]=(0,U.useState)($W),i=(0,U.useCallback)(e=>{let t=e[0];if(!t)return;let n=t.contentRect.width,i=t.contentRect.height;r(e=>{let t=QW(n,i);return e.mode===t.mode&&Math.abs(e.width-n)<2&&Math.abs(e.height-i)<2?e:t})},[]);return(0,U.useEffect)(()=>{let e=t.current;if(!e)return;let n=new ResizeObserver(i);return n.observe(e),()=>n.disconnect()},[i]),(0,W.jsx)(`div`,{ref:t,className:`h-full w-full`,children:(0,W.jsx)(eG.Provider,{value:n,children:e})})},rG={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`,TIMER_UP_NEXT_CAPTION:`timer-up-next-caption`,TIMER_SURFACE_MINIMAL:`timer-surface-minimal`,TIMER_SURFACE_GENERAL:`timer-surface-general`,TIMER_METRIC_PROMPTS:`timer-metric-prompts`,FOCUSED_DIALOG_CLOSE:`focused-dialog-close`,CLOCK_COMMAND_BOARD:`clock-command-board`,CLOCK_REP_COUNTER:`clock-rep-counter`,CLOCK_REP_VALUE:`clock-rep-value`,CLOCK_REP_MINUS:`clock-rep-minus`,CLOCK_REP_PLUS:`clock-rep-plus`,CLOCK_REP_SELECT:`clock-rep-select`,CLOCK_VALUES_BUTTON:`clock-values-button`,CLOCK_DRAFT_CHIP:`clock-draft-chip`,CLOCK_LEGEND:`clock-legend`,CLOCK_KEY_MODE_TOGGLE:`clock-key-mode-toggle`,CLOCK_KEY_CHECK_BUTTON:`clock-key-check-button`,CLOCK_KEY_CHECK_DIALOG:`clock-key-check-dialog`,CLOCK_STOP_CONFIRM:`clock-stop-confirm`,CLOCK_STOP_CONFIRM_ACCEPT:`clock-stop-confirm-accept`,CLOCK_STOP_CONFIRM_CANCEL:`clock-stop-confirm-cancel`,CLOCK_ENTRY_OVERLAY:`clock-entry-overlay`,CLOCK_ERROR:`clock-error`,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_ROOT:`efforts-root`,EFFORTS_SEARCH:`efforts-search`,EFFORTS_CREATE_BTN:`efforts-create-btn`,EFFORTS_EMPTY_STATE:`efforts-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`,EQUIPMENT_DETAIL_ROOT:`equipment-detail-root`,EQUIPMENT_DETAIL_LABEL:`equipment-detail-label`,EQUIPMENT_DETAIL_SOURCE:`equipment-detail-source`,EQUIPMENT_DETAIL_CLONE_BTN:`equipment-detail-clone-btn`,EQUIPMENT_DETAIL_NOTEBOOK_EDITOR:`equipment-detail-notebook-editor`,EQUIPMENT_NOT_FOUND:`equipment-not-found`,EQUIPMENT_NOT_FOUND_CREATE_BTN:`equipment-not-found-create-btn`,EQUIPMENT_CREATE_BTN:`equipment-create-btn`,EQUIPMENT_LOAD_ERROR:`equipment-load-error`,COMMAND_PALETTE_TRIGGER:`command-palette-trigger`,COMMAND_PALETTE_INPUT:`command-palette-input`,COMMAND_PALETTE_RESULTS:`command-palette-results`},iG=WW;function aG(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 oG=({children:e})=>{let t=(0,U.useRef)(null),n=(0,U.useRef)(null),[r,i]=(0,U.useState)(1);return(0,U.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,W.jsx)(`div`,{ref:t,className:`flex h-full min-h-0 w-full items-center justify-center`,children:(0,W.jsx)(`div`,{ref:n,className:`shrink-0 text-center`,style:{transform:`scale(${r})`,transformOrigin:`center center`},children:e})})},sG=({onStart:e,onPause:t,onStop:n,onNext:r,isRunning:i,isPaused:a=!1,disableNext:o,primaryTimer:s,compact:c=!1,subLabel:l,subLabels:u,secondaryTimers:d,timerStates:f,getFocusProps:p,enableGestures:h=!0,skipFlash:g=!1,skipFlashKey:_=0})=>{let{width:v,height:y,isShort:b}=tG(),x=null;try{x=BM()}catch{}let S=y>0&&y<200,C=c||b||S,w=(0,U.useMemo)(()=>aG(v,c,y),[v,y,c]),T=(0,U.useCallback)(()=>{x?.playClick(),e()},[x,e]),E=(0,U.useCallback)(()=>{x?.playClick(),t()},[x,t]),D=(0,U.useCallback)(()=>{x?.playClick(),n()},[x,n]),O=o??a,k=a?`Continue`:i?`Pause`:`Start`,A=(0,U.useCallback)(()=>{O||(x?.playClick(),r())},[x,O,r]),j=(0,U.useRef)(null),M=(0,U.useRef)(null),N=e=>{M.current=null,j.current=e.targetTouches[0].clientX},P=e=>{M.current=e.targetTouches[0].clientX},F=(0,U.useCallback)(()=>{if(!h||!j.current||!M.current)return;let e=j.current-M.current,t=e>50,n=e<-50,r=document.activeElement;if(!(r&&(r.tagName===`INPUT`||r.tagName===`TEXTAREA`||r.isContentEditable))){if(t){if(O)return;console.log(`Swipe Left -> Next`),A()}else n&&(console.log(`Swipe Right -> Stop`),D())}j.current=null,M.current=null},[h,A,D,O]),I=s,L=(0,U.useMemo)(()=>{if(I)return f&&f.has(I.ownerId)?f.get(I.ownerId):{elapsed:I.accumulatedMs||0,duration:I.durationMs,format:I.format}},[I,f]),R=(0,U.useMemo)(()=>L?L.format===`down`&&L.duration?Math.max(0,L.duration-L.elapsed):L.elapsed:0,[L]),ee=(0,U.useMemo)(()=>!d||d.length===0?[]:d.map(e=>{let t=f?.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}}),[d,f]);return(0,W.jsxs)(`div`,{className:`flex w-full flex-1 ${S?`flex-row items-stretch gap-2 min-h-[80px]`:`flex-col ${C?c?`min-h-[136px]`:`min-h-[112px]`:`min-h-[192px]`} ${c?``:C?`gap-2`:`gap-4`}`}`,onTouchStart:N,onTouchMove:P,onTouchEnd:F,children:[(0,W.jsx)(`style`,{children:`
@@ -158,7 +158,7 @@ Timer 12:00
158
158
  border border-border/80 shadow-xl rounded-lg overflow-hidden pointer-events-auto`,style:{top:k,maxHeight:200},children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 bg-muted/40 border-b border-border/50 shrink-0`,children:[(0,W.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:h.type}),(0,W.jsxs)(`div`,{className:`flex items-center min-w-0 gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground/60`,children:[`L`,D]}),(0,W.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,W.jsx)(`span`,{className:`text-xs font-mono text-foreground/90 truncate font-medium`,title:E,children:E||(0,W.jsx)(`span`,{className:`italic text-muted-foreground`,children:`—`})})]})]}),(0,W.jsx)(`div`,{className:`px-3 py-2.5 min-h-0 overflow-auto`,children:w.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:w.map((e,t)=>(0,W.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,W.jsx)(`span`,{className:`text-base leading-none`,children:e.icon}),(0,W.jsx)(`span`,{className:`font-mono tracking-tight`,children:e.value})]},t))}):(0,W.jsx)(`span`,{className:`text-xs italic text-muted-foreground`,children:`No metrics on this line`})}),T&&(0,W.jsx)(UY,{summary:T}),(0,W.jsx)(`div`,{className:`border-t border-border/40 shrink-0`,children:(0,W.jsx)(qY,{commands:f,section:h,view:n})})]})]})},YY=({sectionId:e,widgetName:t,view:n,registry:r,docVersion:i})=>{let{rawContent:a,config:o}=(0,U.useMemo)(()=>{let t=n.state.field(AT).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,W.jsx)(`div`,{className:`h-full w-full overflow-hidden rounded-l-md border-l border-border bg-background shadow-sm`,children:(0,W.jsx)(s,{config:o,rawContent:a,sectionId:e})}):(0,W.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,W.jsxs)(`span`,{className:`font-mono`,children:[`widget:`,t]}),(0,W.jsx)(`span`,{className:`ml-2 opacity-60`,children:`— not registered`})]})};function XY(e,t,n,r,i){switch(t.type){case`fixed-field`:return ZY(e,t);case`metric-type`:return QY(e,t);case`derived`:return $Y(e,t,n,r,i);case`fallback`:return eX(e,t,n,r,i);default:return}}function ZY(e,t){return e[t.field]}function QY(e,t){return e.cells.get(t.metricType)}function $Y(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=XY(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 eX(e,t,n,r,i){return tX(e,t,n,r,i)}function tX(e,t,n,r,i){if(!(!t.sources||t.sources.length===0))switch(t.semantics){case`first-present`:return nX(e,t.sources,n,r,i);case`all-present-joined`:return rX(e,t.sources,t.joinString,n,r,i);case`all-present-combined`:return iX(e,t.sources,n,r,i);default:return}}function nX(e,t,n,r,i){for(let a of t){let t=XY(e,a,n,r,i);if(t!=null)return t}}function rX(e,t,n,r,i,a){let o=[];for(let n of t){let t=XY(e,n,r,i,a);if(t==null)return;o.push(t)}let s=n??` `;return o.map(e=>oX(e)).join(s)}function iX(e,t,n,r,i){let a=[];for(let o of t){let t=XY(e,o,n,r,i);if(t==null)return;a.push(t)}return a}function aX(e){if(e==null)return``;let t=Array.isArray(e)?e:e instanceof fa?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 oX(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=aX(e.metrics);if(t.length>0)return t}return String(e)}function sX(e,t,n,r){if(!t.sort)return``;let i=XY(e,t.source,n,r);return(t.sort.type===`custom`?typeof i==`number`||typeof i==`string`?i:String(i??``):t.sort.extractor(i))??``}function cX(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 lX(e,t,n,r){if(!t.graph)return;let i=XY(e,t.source,n,r);return t.graph.extractor(i)}function uX(e,t,n,r){if(!t.filter)return``;let i=XY(e,t.source,n,r);return t.filter.extractor(i)??``}function dX(e,t,n,r,i){if(!n||n.trim().length===0||!t.filter)return!0;let a=uX(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 fX=({metric:e})=>{let t=e.origin===`hinted`||e.image===`?`,n=(0,U.useMemo)(()=>AG(Io.present(e,`review-grid-cell`)),[e]);return(0,W.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,W.jsx)(`span`,{className:`mr-0.5 text-[10px]`,children:`◉`}),n.label,n.userEntered&&!t&&(0,W.jsx)(`span`,{className:`text-[10px] opacity-70 ml-0.5`,children:`👤`})]})},pX=({columnDef:e,row:t,allRows:n,rowIndex:r,indent:i=0,onDoubleClick:a,className:o,style:s,definitionMap:c})=>{let l=(0,U.useRef)(null),u=(0,U.useMemo)(()=>{if(!(!n||r===void 0))return{allRows:n,rowIndex:r,columnDef:e,dependencies:new Map}},[n,r,e]),d=(0,U.useMemo)(()=>XY(t,e.source,u,c),[t,e.source,u,c]),f=e.source.type===`metric-type`,p=(0,U.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,U.useMemo)(()=>mX(d,e.format,i,t),[d,e.format,i,t]);return(0,W.jsx)(`td`,{ref:l,className:G(`py-1 px-2`,f&&`cursor-cell`,o),style:s,onDoubleClick:p,children:m})};function mX(e,t,n,r){if(e==null)return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[DX(n),(0,W.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]});switch(t.type){case`text`:return hX(e,t,n);case`time`:return gX(e,t);case`number`:return _X(e,t);case`badge`:return vX(e,t);case`pill`:return yX(e,t);case`combined`:return xX(e,t,n);case`custom`:return CX(e,t,r);default:return TX(e,n)}}function hX(e,t,n){let r=t.transform?t.transform(e):OX(e);return(0,W.jsxs)(`span`,{className:G(`inline-flex items-center gap-1`,t.className),children:[DX(n),r]})}function gX(e,t){let n=kX(e);if(n==null||!Number.isFinite(n))return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r;switch(t.style){case`long`:r=qW(n);break;case`precise`:r=`${n.toFixed(2)}s`;break;default:r=KW(n)}return t.transform&&(r=t.transform(r)),(0,W.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:r})}function _X(e,t){let n=kX(e);if(n==null||!Number.isFinite(n))return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r=t.decimals??0,i=n.toFixed(r)+(t.unit??``);return t.transform?(0,W.jsx)(`span`,{children:t.transform(i)}):(0,W.jsx)(`span`,{children:i})}function vX(e,t){let n=t.styleResolver(e),r=t.textResolver(e);return(0,W.jsxs)(`span`,{className:G(`inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium`,n.className),title:n.title,children:[n.icon&&(0,W.jsx)(`span`,{className:`mr-0.5`,children:n.icon}),r]})}function yX(e,t){let n=t.transform?t.transform(e):OX(e),r=t.backgroundColor??`bg-muted`,i=t.borderRadius??`rounded`;return(0,W.jsx)(`span`,{className:G(`inline-block px-1.5 py-0.5 text-xs font-medium`,r,i),children:n})}var bX={primary:`text-sm font-semibold text-foreground`,secondary:`text-xs text-muted-foreground`,tertiary:`text-[11px] text-muted-foreground opacity-80`};function xX(e,t,n,r){let[i,a,o]=Array.isArray(e)?e:[e],s=i===void 0?null:SX(i,t.primaryFormat??{type:`text`},r,`primary`),c=a===void 0?null:SX(a,t.secondaryFormat??{type:`text`},r,`secondary`),l=o===void 0?null:SX(o,t.tertiaryFormat??{type:`text`},r,`tertiary`),u=t.layout===`horizontal`;return(0,W.jsxs)(`div`,{className:G(`inline-flex`,u?`flex-row items-center gap-1`:`flex-col items-start gap-0.5`,t.containerClassName),children:[DX(n),s,c&&(0,W.jsxs)(W.Fragment,{children:[u&&t.separator&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),c]}),l&&(0,W.jsxs)(W.Fragment,{children:[u&&t.separator&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),l]})]})}function SX(e,t,n,r){let i=mX(e,t,0,n);return r?(0,W.jsx)(`span`,{className:G(`inline-flex items-center`,bX[r]),children:i}):i}function CX(e,t,n){let r=n?{...t.context,row:n}:t.context;return t.render(e,r)}function wX(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 TX(e,t){return e?.metrics?EX(e,t):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[DX(t),OX(e)]})}function EX(e,t){let n=wX(e);return n.length===0?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[DX(t),(0,W.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]}):(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-1 items-center`,children:[DX(t),n.map((e,t)=>(0,W.jsx)(fX,{metric:e},t))]})}function DX(e){return e<=0?null:(0,W.jsx)(`div`,{className:`flex-shrink-0 mr-1 border-l-2 border-muted h-4`,style:{width:`${e*1.25}rem`,marginLeft:`2px`}})}function OX(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=wX(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 kX(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=wX(e);if(t.length>0&&typeof t[0]?.value==`number`)return t[0].value}var AX=e=>e;function jX(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 MX(e){let t=jX(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 NX(e){let t=jX(e);for(let e of t)if(typeof e?.value==`number`)return e.value}function PX(e){return jX(e).map(e=>e.image??String(e.value??``)).join(`, `)}function FX(e){return e==null?``:Array.isArray(e)?e.map(e=>FX(e)).filter(Boolean).join(` — `):typeof e==`string`?e:typeof e==`number`?String(e):PX(e)}function IX(e){switch(e){case q.Duration:case q.Rep:case q.Distance:case q.Rounds:case q.Resistance:case q.Increment:case q.Metric:case q.Volume:case q.Intensity:case q.Load:case q.Work:case q.CurrentRound:case q.Calculated:return!0;default:return!1}}function LX(e){switch(e){case q.Duration:return`s`;case q.Rep:return`reps`;case q.Distance:return`m`;case q.Rounds:return`rounds`;case q.Resistance:return`kg`;case q.Increment:return`Δ`;case q.Calculated:case q.Custom:return``;default:return``}}function RX(e,t){let n=bo(e),r=fG(e)??void 0,i=t?.graphable??IX(e);return{id:e,label:n,icon:r,source:{type:`metric-type`,metricType:e},format:{type:`custom`,render:e=>EX(e,0)},sort:IX(e)?{type:`numeric`,extractor:e=>NX(e)}:{type:`text`,extractor:e=>{let t=MX(e);return t===void 0?void 0:String(t)}},graph:i?{extractor:e=>NX(e),axisLabel:n,unit:LX(e)}:void 0,filter:{extractor:e=>PX(e),caseInsensitive:!0},meta:{defaultVisible:t?.defaultVisible??!0,debugOnly:t?.debugOnly,tags:[e]}}}function zX(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 BX(e,t){if(!e||e.length===0)return``;let n=e=>KW(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 VX(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 HX({value:e}){let t=e.match(/^(-?)(\d+)(:\d{2})(?::\d{2})?(\.\d+)?$/);if(!t)return(0,W.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:e});let[,n,r,i,a,o]=t,s=i.slice(1);return(0,W.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap inline-flex items-baseline`,children:[n&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:n}),(0,W.jsx)(`span`,{className:`font-semibold text-foreground`,children:r}),(0,W.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[`:`,s]}),a&&(0,W.jsx)(`span`,{className:`text-muted-foreground/40`,children:a}),o&&(0,W.jsx)(`span`,{className:`text-muted-foreground/30 text-[10px]`,children:o})]})}function UX({elapsed:e,duration:t}){let n=KW(e);return(0,W.jsxs)(`span`,{className:`inline-flex items-baseline gap-0.5`,children:[(0,W.jsx)(HX,{value:n}),t!==void 0&&t>0&&t!==e&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground/40 mx-0.5`,children:`/`}),(0,W.jsx)(`span`,{className:`opacity-60`,children:(0,W.jsx)(HX,{value:KW(t)})})]})]})}var WX={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,W.jsx)(`span`,{className:G(`font-mono text-[11px] w-8 text-right inline-block`,zX(n)),title:`Type: ${n}\nBlock: ${r}`,children:t})}},sort:{type:`numeric`,extractor:e=>AX(e)?.index||0},meta:{tags:[`layout`],defaultVisible:!0,width:`40px`,resizable:!1}},GX={id:`timestamp`,label:`Timestamp`,source:{type:`fixed-field`,field:`absoluteStartTime`},format:{type:`custom`,render:(e,t)=>{let n=e,r=AX(t)?.hideMs!==!1;return(0,W.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-24 whitespace-nowrap`,children:VX(n,r)})},context:{hideMs:!1}},sort:{type:`numeric`,extractor:e=>AX(e)?.absoluteStartTime??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},KX={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,W.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-40 whitespace-nowrap`,children:BX(t,n)})}},sort:{type:`numeric`,extractor:e=>(AX(e)?.spans)?.[0]?.started??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},qX={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,W.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`}):(0,W.jsxs)(`div`,{className:`flex flex-col items-start gap-0 leading-tight`,children:[t!==void 0&&t>0&&(0,W.jsx)(`span`,{className:`text-muted-foreground/50 font-mono text-[10px] whitespace-nowrap`,children:VX(t,!1)}),(0,W.jsx)(UX,{elapsed:n,duration:r})]})}},sort:{type:`numeric`,extractor:e=>AX(e)?.elapsed??0},graph:{extractor:e=>AX(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(VX(t,!1)),n!==void 0&&i.push(KW(n)),r!==void 0&&r>0&&r!==n&&i.push(KW(r)),i.join(` `)},caseInsensitive:!0},meta:{tags:[`timing`,`compound`],defaultVisible:!0,width:`100px`,subsumes:[`duration`,`elapsedTotal`]}},JX={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=>AX(e)?.sourceBlockKey??``},filter:{extractor:e=>AX(e)?.sourceBlockKey??``,caseInsensitive:!0},meta:{tags:[`layout`],defaultVisible:!1}},YX={id:`outputType`,label:`Type`,source:{type:`fixed-field`,field:`outputType`},format:{type:`custom`,render:e=>{let t=String(e??``);return(0,W.jsx)(`span`,{className:G(`text-xs px-1.5 py-0.5 rounded font-medium`,zX(t)),children:t})}},sort:{type:`text`,extractor:e=>AX(e)?.outputType??``},filter:{extractor:e=>AX(e)?.outputType??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1}},XX={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=>AX(e)?.stackLevel??0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},ZX={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?KW(t):`${KW(t)} / ${KW(n)}`;return(0,W.jsx)(`span`,{className:`text-foreground font-mono text-xs text-right w-32 whitespace-nowrap`,children:r})}},sort:{type:`numeric`,extractor:e=>AX(e)?.elapsed??0},graph:{extractor:e=>AX(e)?.elapsed,axisLabel:`Elapsed`,unit:`s`,color:`#14b8a6`},meta:{tags:[`timing`],defaultVisible:!1}},QX={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=>AX(e)?.completionReason??``},filter:{extractor:e=>AX(e)?.completionReason??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},$X=RX(q.Effort,{defaultVisible:!1}),eZ=RX(q.Duration,{debugOnly:!0}),tZ=RX(q.Rep),nZ=RX(q.Rounds,{defaultVisible:!1}),rZ=RX(q.Distance),iZ=RX(q.Resistance),aZ=RX(q.Action),oZ=RX(q.Increment),sZ=RX(q.Metric),cZ=RX(q.Calculated),lZ=RX(q.Custom,{defaultVisible:!1}),uZ=RX(q.Group,{defaultVisible:!1}),dZ=RX(q.System,{defaultVisible:!1}),fZ=RX(q.Label,{defaultVisible:!1}),pZ=RX(q.Text),mZ=RX(q.CurrentRound,{defaultVisible:!1}),hZ=RX(q.Volume),gZ=RX(q.Intensity),_Z=RX(q.Load),vZ=RX(q.Work),yZ=RX(q.Diagnostic),bZ=[WX,qX,GX,KX,JX,YX,XX,ZX,QX,{id:`exercise`,label:`Exercise`,icon:fG(q.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`fallback`,semantics:`all-present-combined`,sources:[{type:`metric-type`,metricType:q.Effort},{type:`metric-type`,metricType:q.Text}]},{type:`metric-type`,metricType:q.Text},{type:`metric-type`,metricType:q.Label},{type:`metric-type`,metricType:q.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=>FX(e)},filter:{extractor:e=>FX(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`grouping`,`fallback`,`descriptor`],subsumes:[`effort`,`text`,`label`]}},{id:`descriptor`,label:`Descriptor`,icon:fG(q.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:q.Effort},{type:`metric-type`,metricType:q.Label},{type:`metric-type`,metricType:q.Rounds},{type:`metric-type`,metricType:q.CurrentRound}]},format:{type:`custom`,render:e=>EX(e,0)},sort:{type:`text`,extractor:e=>FX(e)},filter:{extractor:e=>FX(e),caseInsensitive:!0},meta:{defaultVisible:!0,subsumes:[`effort`,`label`,`rounds`,`current-round`]}},$X,pZ,fZ,eZ,{id:`pace`,label:`Pace`,icon:`⏱️`,source:{type:`derived`,dependencies:[`distance`,`duration`],compute:(e,t)=>{let n=NX(t.dependencies.get(`distance`)),r=NX(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,W.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`});let t=1e3/e;return(0,W.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:[KW(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?``:`${KW(1e3/e)}/km`,caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`endurance`,`derived`]}},tZ,nZ,rZ,iZ,aZ,oZ,sZ,cZ,lZ,mZ,hZ,gZ,{id:`loadFocus`,label:`Load`,icon:fG(q.Load)??fG(q.Resistance)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:q.Load},{type:`metric-type`,metricType:q.Resistance}]},format:{type:`custom`,render:e=>EX(e,0)},sort:{type:`numeric`,extractor:e=>NX(e)},graph:{extractor:e=>NX(e),axisLabel:`Load`,unit:`kg`},filter:{extractor:e=>PX(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`strength`,`fallback`]}},_Z,vZ,yZ,uZ,dZ],xZ={outputTypes:[`segment`,`milestone`,`group`,`analytics`]},SZ={definitions:bZ,presets:{default:{label:`Default`,filters:xZ,visibleColumnIds:[`#`,`timeSpan`,`descriptor`,`rep`,`distance`,`resistance`,`action`,`increment`,`metric`,`calculated`,`custom`,`volume`,`intensity`,`load`,`work`,`diagnostic`]},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.diagnostic.group.system.elapsedTotal.completionReason`.split(`.`)},strength:{label:`Strength`,filters:xZ,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`rep`,`loadFocus`,`volume`,`intensity`,`load`,`work`,`elapsedTotal`]},endurance:{label:`Endurance`,filters:xZ,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`distance`,`duration`,`pace`,`rounds`,`increment`,`work`,`elapsedTotal`]}},defaultPreset:`default`},CZ=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 XY(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}}};function wZ(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,U.useMemo)(()=>TZ(t,n),[t,n]),f=(0,U.useMemo)(()=>{let e=[...SZ.definitions],t=new Set(e.map(e=>e.id));for(let n of d)for(let r of n.cells.keys())t.has(r)||(e.push(RX(r)),t.add(r));return new CZ({...SZ,definitions:e})},[d]),p=(0,U.useMemo)(()=>{let e=new Set(u??[]);for(let t of c??[])e.add(t);return e},[u,c]),m=(0,U.useMemo)(()=>({rows:d,activePresetId:r,isDebugMode:i,graphTaggedColumnIds:s,visibilityOverrides:l,addedColumnIds:p}),[d,r,i,s,l,p]),h=(0,U.useMemo)(()=>f.getVisibleColumns(m),[f,m]),g=(0,U.useMemo)(()=>f.getAvailableColumns(m),[f,m]),_=(0,U.useMemo)(()=>({...f.getPreset(r).filters??{},...o}),[r,o,f]);return{rows:(0,U.useMemo)(()=>kZ(OZ(d,_,h,f.definitions),a,h,f.definitions),[d,_,a,h,f]),visibleColumns:h,availableColumns:g,graphTaggedColumnIds:(0,U.useMemo)(()=>Array.from(s??[]),[s])}}function TZ(e,t){return e.map((e,n)=>{let r=new Map;if(e.metrics)for(let t of e.metrics)DZ(r,t);let i=EZ(e),a=i?t.get(i):void 0;if(a)for(let e of a)DZ(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 EZ(e){let t=e.context;return t?.sourceBlockKey?t.sourceBlockKey:e.name}function DZ(e,t){let n=t.type;if(n===q.Sound)return;let r=e.get(n);r?e.set(n,{metrics:r.metrics.clone().add(t),hasUserOverride:r.hasUserOverride}):e.set(n,{metrics:fa.empty(n).add(t),hasUserOverride:!1})}function OZ(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&&uX(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 dX(n,t,o,i,r)}))}return i}function kZ(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=cX(sX(i,t,s,r),sX(a,t,c,r));if(l!==0)return o.direction===`asc`?l:-l}return i.index-a.index}),i}function AZ(e,t){return{id:e,label:t.label,filters:t.filters??{},visibleColumns:[...t.visibleColumnIds],isDefault:e===SZ.defaultPreset}}var jZ=Object.fromEntries(Object.entries(SZ.presets).map(([e,t])=>[e,AZ(e,t)])),MZ=jZ.default;jZ.debug,jZ.strength,jZ.endurance;function NZ(e){return jZ[e]??MZ}var lte=({activePreset:e,onPresetChange:t,searchText:n,onSearchChange:r,showFilters:i,onToggleFilters:a,totalRows:o,visibleRows:s})=>(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`label`,{className:`text-xs text-muted-foreground font-medium`,children:`View:`}),(0,W.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(jZ).map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,W.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,W.jsx)(`div`,{className:`flex items-center flex-1 max-w-md`,children:(0,W.jsxs)(`div`,{className:`flex w-full group`,children:[(0,W.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,W.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,W.jsx)(`span`,{children:`🔍`}),(0,W.jsx)(`span`,{className:`font-medium`,children:`Search`})]})]})}),(0,W.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,W.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,W.jsx)(`div`,{className:`ml-auto text-xs text-muted-foreground tabular-nums`,children:s===o?`${o} rows`:`${s} / ${o} rows`})]}),PZ={"#":`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`},FZ=`48px`;function IZ(e){return e.meta?.width??PZ[e.id]??`96px`}function LZ(){return FZ}var RZ=({columns:e,sortConfigs:t,onSort:n,onToggleGraph:r,showFilters:i,columnFilters:a,onColumnFilterChange:o,availableToAdd:s,onAddColumn:c,graphTaggedColumnIds:l})=>(0,W.jsxs)(`thead`,{className:`bg-muted/50 dark:bg-muted/30 sticky top-0 z-10`,children:[(0,W.jsxs)(`tr`,{className:`border-b border-border`,children:[e.map(e=>(0,W.jsx)(zZ,{column:e,sortConfig:t.find(t=>t.columnId===e.id),onSort:n,onToggleGraph:r,isGraphed:l?.has(e.id)??!1},e.id)),c&&(0,W.jsx)(`th`,{className:`py-2 px-1`,style:{minWidth:LZ()},children:(0,W.jsx)(HZ,{availableToAdd:s??[],onAddColumn:c})})]}),i&&(0,W.jsxs)(`tr`,{className:`border-b border-border/50 bg-muted/20 dark:bg-muted/10`,children:[e.map(e=>(0,W.jsx)(VZ,{column:e,value:a[e.id]??``,onChange:o},e.id)),c&&(0,W.jsx)(`th`,{className:`py-1 px-1`,style:{minWidth:LZ()}})]})]}),zZ=({column:e,sortConfig:t,onSort:n,onToggleGraph:r,isGraphed:i})=>{let a=e.sort!==void 0,o=e.graph!==void 0,s=(0,U.useCallback)(t=>{a&&n(e.id,t.shiftKey)},[e.id,a,n]),c=(0,U.useCallback)(t=>{t.stopPropagation(),r(e.id)},[e.id,r]);return(0,W.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:IZ(e)},onClick:s,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[e.icon&&(0,W.jsx)(`span`,{className:`text-sm`,children:e.icon}),(0,W.jsx)(`span`,{children:e.label}),t&&(0,W.jsx)(BZ,{direction:t.direction}),o&&(0,W.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:`📊`})]})})},BZ=({direction:e})=>(0,W.jsx)(`span`,{className:`text-primary text-[10px] ml-0.5`,children:e===`asc`?`▲`:`▼`}),VZ=({column:e,value:t,onChange:n})=>e.filter?(0,W.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:IZ(e)},children:(0,W.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,W.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:IZ(e)}}),HZ=({availableToAdd:e,onAddColumn:t})=>{let[n,r]=(0,U.useState)(!1),i=(0,U.useRef)(null),a=(0,U.useRef)(null);return(0,U.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,W.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,W.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,W.jsxs)(`div`,{ref:i,className:`absolute right-0 top-full mt-1 z-50 min-w-[160px] max-h-64 overflow-y-auto
159
159
  bg-popover border border-border rounded-md shadow-xl py-1`,onClick:e=>e.stopPropagation(),children:[(0,W.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=fG(e)??`•`,i=Io.columnLabel(e);return(0,W.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,W.jsx)(`span`,{className:`text-sm w-4 text-center`,children:n}),(0,W.jsx)(`span`,{children:i})]},e)})]})]})},UZ=({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,W.jsx)(`tr`,{className:G(`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===q.Effort;return(0,W.jsx)(pX,{columnDef:r,row:e,allRows:t,rowIndex:n,indent:i?e.stackLevel:0,onDoubleClick:c,style:{minWidth:IZ(r)}},r.id)})})};function WZ(e){let{rows:t,columns:n,graphTaggedColumnIds:r,definitionMap:i}=e,a=(0,U.useMemo)(()=>GZ(r,n),[r,n]),o=(0,U.useMemo)(()=>KZ(t,r,n,i),[t,r,n,i]);return{data:o,graphConfigs:a,hasData:a.length>0&&o.length>0}}function GZ(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:XZ(e),color:qZ(e),dataKey:r,icon:e.icon})}return n}function KZ(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]=lX(i,t,{allRows:e,rowIndex:a,columnDef:t,dependencies:new Map},r)??0}return o})}function qZ(e){if(e.graph?.color)return e.graph.color;let t=JZ(e);return t?YZ[t]??`#888888`:`#888888`}function JZ(e){if(e.source.type===`metric-type`)return e.source.metricType}var YZ={[q.Time]:`#3b82f6`,[q.Rep]:`#22c55e`,[q.Effort]:`#eab308`,[q.Distance]:`#14b8a6`,[q.Rounds]:`#a855f7`,[q.Resistance]:`#ef4444`,[q.Increment]:`#6366f1`,[q.Action]:`#ec4899`};function XZ(e){if(e.graph?.unit)return e.graph.unit;let t=JZ(e);if(!t)return``;switch(t){case q.Time:return`ms`;case q.Rep:return`reps`;case q.Distance:return`m`;case q.Rounds:return`rounds`;case q.Resistance:return`kg`;case q.Increment:return`Δ`;default:return``}}var ZZ=({rows:e,columns:t,graphTaggedColumnIds:r,selectedIds:i,onSelectRow:a})=>{let[o,s]=(0,U.useState)(!1),{data:c,graphConfigs:l,hasData:u}=WZ({rows:e,columns:t,graphTaggedColumnIds:r,selectedIds:i}),d=(0,U.useCallback)(t=>{if(!t?.activePayload?.[0])return;let n=t.activePayload[0].payload,r=e.find(e=>e.index===n.index);r&&a&&a(r.id)},[e,a]);return r.length===0?null:(0,W.jsxs)(`div`,{className:`border-b border-border bg-background`,children:[(0,W.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:()=>s(e=>!e),children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{children:`📊`}),(0,W.jsxs)(`span`,{children:[`Graph — `,l.map(e=>e.label).join(`, `)]})]}),(0,W.jsx)(`span`,{className:`text-[10px]`,children:o?`▼`:`▲`})]}),!o&&(0,W.jsx)(`div`,{className:`px-3 pb-3`,children:u?(0,W.jsx)(`div`,{className:`w-full bg-muted/30 rounded-lg border border-border p-2`,style:{height:220},children:(0,W.jsx)(wt,{width:`100%`,height:`100%`,children:(0,W.jsxs)(Se,{data:c,onClick:d,children:[(0,W.jsx)(zn,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,W.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,W.jsx)(n,{stroke:`hsl(var(--muted-foreground))`,tick:{fontSize:10},domain:[`auto`,`auto`]}),(0,W.jsx)(En,{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=l.find(e=>e.dataKey===t);return[`${typeof e==`number`?e.toLocaleString():e}${n?.unit?` ${n.unit}`:``}`,n?.label??t]}}),(0,W.jsx)(Wn,{verticalAlign:`top`,height:24,wrapperStyle:{fontSize:`11px`}}),l.map(e=>(0,W.jsx)(xn,{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,W.jsx)(`div`,{className:`h-32 flex items-center justify-center text-sm text-muted-foreground`,children:`No numeric data available for the tagged columns.`})})]})},QZ=({isOpen:e,blockKey:t,metricType:n,existingFragments:r,existingUserValue:i,anchorRect:a,onSave:o,onRemove:s,onClose:c})=>{let[l,u]=(0,U.useState)(``),d=(0,U.useRef)(null),f=(0,U.useRef)(null);(0,U.useEffect)(()=>{e&&(u(i===void 0?``:String(i)),setTimeout(()=>d.current?.focus(),0))},[e,i]),(0,U.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,c]),(0,U.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,U.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,U.useCallback)(()=>{s(t,n),c()},[t,n,s,c]),h=(0,U.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),p())},[p]);if(!e)return null;let g=fG(n),_=uG(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,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/20 dark:bg-black/40 z-40`}),(0,W.jsxs)(`div`,{ref:f,className:`w-64 rounded-lg border border-border bg-popover text-popover-foreground shadow-lg`,style:b,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border`,children:[g&&(0,W.jsx)(`span`,{className:`text-sm`,children:g}),(0,W.jsx)(`span`,{className:`text-sm font-medium capitalize`,children:n}),(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground ml-auto truncate max-w-[100px]`,title:t,children:t})]}),y.length>0&&(0,W.jsxs)(`div`,{className:`px-3 py-1.5 border-b border-border/50 bg-muted/10`,children:[(0,W.jsx)(`div`,{className:`text-[10px] text-muted-foreground mb-1 uppercase tracking-wider`,children:`Current`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:y.map((e,t)=>(0,W.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,W.jsxs)(`div`,{className:`px-3 py-2`,children:[(0,W.jsx)(`label`,{className:`text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block`,children:v?`Update override`:`Enter value`}),(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-t border-border/50`,children:[(0,W.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,W.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,W.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`})]})]})]})},$Z=({segments:e,selectedSegmentIds:t,onSelectSegment:n,userOutputOverrides:r=new Map,gridViewPreset:i=`default`,onPresetChange:a,hoveredBlockKey:o,onHoverBlockKey:s})=>{let{isDebugMode:c}=Gy(),[l,u]=(0,U.useState)([]),[d,f]=(0,U.useState)(``),[p,m]=(0,U.useState)({}),[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(new Set),[y,b]=(0,U.useState)({}),[x,S]=(0,U.useState)(new Set),{overrides:C,setOverride:w,removeOverride:T}=xq(!0),[E,D]=(0,U.useState)({isOpen:!1,blockKey:``,type:`Time`,anchorRect:null,existingFragments:[]}),O=(0,U.useMemo)(()=>{let e=new Map;for(let[t,n]of r)e.set(t,n instanceof fa?n:fa.from(n,t));for(let[t,n]of C)e.set(t,n);return e},[r,C]),k=c?`debug`:i,A=(0,U.useMemo)(()=>NZ(k),[k]),{rows:j,visibleColumns:M,availableColumns:N,graphTaggedColumnIds:P}=wZ({segments:e,userOutputOverrides:O,presetId:k,isDebugMode:c,sortConfigs:l,filterOverrides:(0,U.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,L=(0,U.useMemo)(()=>j.map(e=>e.id),[j]),R=(0,U.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`}]})},[]),ee=(0,U.useCallback)(e=>{v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),z=(0,U.useCallback)((e,t)=>{m(n=>{if(!t){let t={...n};return delete t[e],t}return{...n,[e]:t}})},[]),te=(0,U.useCallback)(e=>{b({}),m({}),f(``),a?.(e)},[a]),ne=(0,U.useCallback)(e=>{S(t=>{let n=new Set(t);return n.add(e),n})},[]),re=(0,U.useMemo)(()=>N.filter(e=>e.source.type===`metric-type`).map(e=>e.source.metricType),[N]),ie=(0,U.useCallback)((e,t)=>{n(e,t,L)},[n,L]),ae=(0,U.useCallback)(e=>{s?.(e)},[s]),oe=(0,U.useCallback)(e=>{n(e,{ctrlKey:!1,shiftKey:!1},L)},[n,L]),se=(0,U.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]),ce=(0,U.useCallback)((e,t,n,r)=>{w(e,t,n,r),D(e=>({...e,isOpen:!1}))},[w]),le=(0,U.useCallback)(()=>{T(E.blockKey,E.type),D(e=>({...e,isOpen:!1}))},[E.blockKey,E.type,T]),B=(0,U.useCallback)(()=>{D(e=>({...e,isOpen:!1}))},[]);return(0,W.jsxs)(`div`,{className:`h-full flex flex-col bg-background`,children:[(0,W.jsx)(lte,{activePreset:A,onPresetChange:te,searchText:d,onSearchChange:f,showFilters:h,onToggleFilters:()=>g(e=>!e),totalRows:I,visibleRows:j.length}),(0,W.jsx)(ZZ,{rows:j,columns:M,graphTaggedColumnIds:P,selectedIds:t,onSelectRow:oe}),(0,W.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,W.jsxs)(`table`,{className:`text-left text-sm border-collapse min-w-[700px]`,children:[(0,W.jsx)(RZ,{columns:F,sortConfigs:l,onSort:R,onToggleGraph:ee,showFilters:h,columnFilters:p,onColumnFilterChange:z,availableToAdd:re,onAddColumn:ne,graphTaggedColumnIds:_}),(0,W.jsx)(`tbody`,{className:`divide-y divide-border`,children:j.length===0?(0,W.jsx)(`tr`,{children:(0,W.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,W.jsx)(UZ,{row:e,allRows:j,rowIndex:n,columns:F,isSelected:t.has(e.id),onSelect:ie,isHovered:o===e.sourceBlockKey,onHover:ae,onCellDoubleClick:se},e.id))})]})}),(0,W.jsx)(QZ,{isOpen:E.isOpen,blockKey:E.blockKey,metricType:E.type,existingFragments:E.existingFragments,existingUserValue:E.existingUserValue,anchorRect:E.anchorRect??void 0,onSave:ce,onRemove:le,onClose:B}),(0,W.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,W.jsx)(`span`,{children:t.size>0?`${t.size} selected`:`Click a row to select`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[j.length,` / `,I,` rows`]})]})]})};Jt();var eQ=({title:e,onClose:t,children:n,closeButtonClassName:r,floatingClose:i=!1,variant:a=`default`,actions:o,closeLabel:s})=>{(0,U.useEffect)(()=>(document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}),[]);let c=U.useRef(null);(0,U.useEffect)(()=>{let e=document.activeElement;return c.current?.focus({preventScroll:!0}),()=>e?.focus({preventScroll:!0})},[]);let l=e=>{if(e.key!==`Tab`||!c.current)return;let t=Array.from(c.current.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>e.offsetParent!==null);if(t.length===0){e.preventDefault();return}let n=document.activeElement,r=t[0],i=t[t.length-1];e.shiftKey&&(n===r||n===c.current||!c.current.contains(n))?(e.preventDefault(),i.focus()):!e.shiftKey&&n===i&&(e.preventDefault(),r.focus())},u=a===`minimal`,d=(0,W.jsx)(`button`,{onClick:t,className:r??`rounded-pill transition-colors shadow-[rgba(0,0,0,0.06)_0px_1px_2px] ${u?`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":rG.FOCUSED_DIALOG_CLOSE,children:s??(0,W.jsx)(Sr,{className:`h-5 w-5`})});return NC.createPortal((0,W.jsxs)(`div`,{ref:c,onKeyDown:l,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":e??`Workout`,className:`fixed inset-0 z-[100] flex flex-col bg-background text-foreground outline-none animate-in fade-in duration-200`,children:[i||u&&!e?(0,W.jsxs)(`div`,{className:`absolute top-4 right-4 z-[110] flex items-center gap-2`,children:[o,d]}):e?(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-border ${u?`bg-muted/10`:`bg-muted/30`} shrink-0`,children:[(0,W.jsx)(`h2`,{className:`text-lg ${u?`font-black tracking-tight uppercase text-[11px] text-muted-foreground`:`font-semibold`}`,children:e}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[o,d]})]}):null,(0,W.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:n})]}),document.body)},tQ=(0,U.createContext)({updateFromSegments:()=>{},clear:()=>{}}),nQ=({children:e,chromecastSubscription:t=null})=>(0,W.jsx)(tQ.Provider,{value:{updateFromSegments:(e,n,r)=>{t&&t.sendAnalyticsSummary([],n,r)},clear:()=>{}},children:e}),rQ=new class{resolve(e){let t=this.resolveMode(e);return t===`active`?{type:`rpc-workbench-update`,mode:`active`}:t===`review`?_q(e.analyticsSegments):yq(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 iQ(){if(!(`wakeLock`in navigator))return;let e=navigator.wakeLock;if(!(typeof e!=`object`||!e||!(`request`in e)))return e}function aQ(e){let t=(0,U.useRef)(null);(0,U.useEffect)(()=>{let n=iQ();if(!n||!e)return;let r=!1,i=async()=>{if(document.visibilityState===`visible`)try{let e=await n.request(`screen`);if(r){e.release();return}t.current=e,e.addEventListener(`release`,()=>{t.current===e&&(t.current=null)})}catch{}},a=()=>{document.visibilityState===`visible`&&!t.current&&i()};return i(),document.addEventListener(`visibilitychange`,a),()=>{r=!0,document.removeEventListener(`visibilitychange`,a);let e=t.current;t.current=null,e&&!e.released&&e.release()}},[e])}function oQ(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 sQ=``,cQ=null,lQ=()=>{let e=vK(),[t,n]=(0,U.useState)(e.state),[r,i]=(0,U.useState)(!1);aQ(r);let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(null),d=(0,U.useRef)(null),f=Bz,p=(0,U.useRef)(f.getActiveHandle()),m=(0,U.useRef)(!1),h=(0,U.useCallback)(e=>{let t=p.current;p.current=null,t&&f.dispose(e),NM(null),u(null),c(null),i(!1)},[f]),g=(0,U.useCallback)(async e=>{if(!m.current){m.current=!0;try{let t=GV.getState().subscriptionManager,n=f.connect(e,t);p.current=n,u(n),c(n.subscription),i(!0),NM(n.transport),n.eventProvider.onEvent(e=>{if(e.name===`clock-command`){let t=hq(e.data);if(!t){console.warn(`[CastButtonRpc] Dropped malformed clock-command payload`);return}IK(t.runId,t.command)||console.warn(`[CastButtonRpc] Clock command rejected by authority:`,t.command.kind);return}let t=PK(),n=gq(e.name,t);n&&t&&!IK(t.runId,n)&&console.warn(`[CastButtonRpc] Legacy receiver event rejected by authority:`,e.name)});let r=GV.getState(),a=rQ.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,U.useRef)(!1),v=(0,U.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:`,oQ(t)),h(!1),e.endSession()}finally{_.current=!1}}},[e,g,h,f]);(0,U.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,U.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,U.useEffect)(()=>{let e=l?.transport;if(!e)return;let t=()=>{let t=PK(),n=JSON.stringify(t);if(n!==sQ||e!==cQ){sQ=n,cQ=e;try{e.send({type:`rpc-clock-snapshot`,snapshot:t})}catch{}}};return t(),FK(t)},[l]),(0,U.useEffect)(()=>{let e=()=>{f.sendDisposeSignal()};return window.addEventListener(`pagehide`,e),()=>window.removeEventListener(`pagehide`,e)},[f]),(0,U.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=oQ(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,U.useRef)(t);y.current=t;let b=(0,U.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,W.jsxs)(K,{variant:`ghost`,size:`icon`,disabled:!0,className:`opacity-20 cursor-not-allowed`,"aria-label":`Cast to TV (unavailable)`,title:`Cast to TV (unavailable)`,children:[(0,W.jsx)(ir,{className:`h-5 w-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Cast to TV (unavailable)`})]}):(0,W.jsx)(ste,{transport:l?.transport??null,children:(0,W.jsx)(nQ,{chromecastSubscription:s,children:(0,W.jsxs)(K,{ref:d,variant:`ghost`,size:`icon`,disabled:D,onClick:()=>{},className:G(`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,W.jsx)(j,{className:`h-5 w-5`}):(0,W.jsx)(ir,{className:`h-5 w-5`}),(0,W.jsx)(`span`,{className:`sr-only`,children:T?`Stop casting`:`Cast to TV`})]})})})};function uQ(){let{isEnabled:e,toggleAudio:t}=BM();return(0,W.jsxs)(K,{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,W.jsx)(F,{className:`h-[1.2rem] w-[1.2rem]`}):(0,W.jsx)(We,{className:`h-[1.2rem] w-[1.2rem]`}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Toggle audio`})]})}var dQ=new Map,fQ=({block:e,noteContent:t,prepareRun:n,view:r,onClose:i,onCompleteWorkout:a,resultId:o,autoStart:s,onRuntimeReady:c,onRunStarted:l,externalStop:u,adoptRuntime:d,parkOnUnmount:f,onPark:p})=>{let[m,h]=(0,U.useState)(n?null:e),[g,_]=(0,U.useState)(null),v=(0,U.useRef)(!1),y=(0,U.useCallback)(async()=>{if(!(!n||v.current)){v.current=!0,_(null);try{h(await n())}catch(e){_(e instanceof Error?e.message:String(e))}finally{v.current=!1}}},[n]);(0,U.useEffect)(()=>{y()},[y]);let[b,x]=(0,U.useState)(null),[S,C]=(0,U.useState)(new Set),{isDebugMode:w}=Gy(),T=(0,U.useRef)(Date.now()),E=(0,U.useRef)(typeof document<`u`?document.title:`Wod.Wiki`),D=(0,U.useRef)(null);(0,U.useEffect)(()=>{let t=e.label||e.id,n=b!==null,r=n?`Wod.Wiki - Workout Complete${t?`: `+t:``}`:`Wod.Wiki - Workout Timer${t?`: `+t:``}`,i=n?`/workout/review`:`/workout/timer`;document.title=r,D.current!==i&&(D.current=i,window.gtag?.(`event`,`page_view`,{page_title:r,page_path:i,page_location:typeof window<`u`?window.location.href:i,engagement_time_msec:Gj()}));let a=Kj.consent;n?a&&window.gtag?.(`event`,`runtime_dialog_review`,{workout_label:t,block_type:e.blockType}):(Kj.record(`runtime:dialog_loaded`,{workout_label:t,block_type:e.blockType}),a&&window.gtag?.(`event`,`runtime_dialog_loaded`,{workout_label:t,block_type:e.blockType}))},[e.id,e.label,e.blockType,b]),(0,U.useEffect)(()=>{let t=E.current,n=T.current,r=e.label||e.id;return()=>{let e=Date.now()-n;e>=1e3&&window.gtag?.(`event`,`runtime_dialog_closed`,{workout_label:r,duration_seconds:Math.round(e/1e3),engagement_time_msec:e}),typeof document<`u`&&(document.title=t)}},[e.id,e.label]);let O=(0,U.useRef)(!1),k=(0,U.useRef)(!1),A=(0,U.useRef)(!1),[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(!1),F=(0,U.useRef)(!1),I=(0,U.useRef)(!1),L=(0,U.useRef)(null),[R,ee]=(0,U.useState)(`idle`),[z,te]=(0,U.useState)(null),[ne,re]=(0,U.useState)(!1),{collectionItems:ie}=Kq(b??[],dQ,null),[ae,oe]=(0,U.useState)(new Set),[se,ce]=(0,U.useState)(new Set),[le,B]=(0,U.useState)(!1),V=(0,U.useMemo)(()=>ie.filter(e=>{let t=Mq(e);return!ae.has(t)&&!se.has(t)}),[ie,ae,se]),ue=b!==null&&!!o&&V.length>0&&!le,de=(0,U.useCallback)(async(e,t)=>{if(typeof t!=`number`||!Number.isFinite(t))throw Error(`Invalid value`);if(e.kind!==`value`)throw Error(`Unsupported entry`);if(!o)throw Error(`The saved run is unavailable.`);if(await ote({resultId:o,occurrence:{blockKey:e.blockKey,...e.sourceStatementId===void 0?{}:{sourceStatementId:e.sourceStatementId},...e.stackLevel===void 0?{}:{stackLevel:e.stackLevel}},metric:{type:e.metricType,value:t,image:String(t)}})===`not-found`)throw Error(`This result entry could not be found — retry or skip.`);let{segments:n}=Cz(g_(await Z.getEventsByResult(o)).map(e=>fj(new ha(e))));x(n),oe(t=>new Set(t).add(Mq(e)))},[o]),fe=(0,U.useCallback)(e=>{ce(t=>new Set(t).add(Mq(e)))},[]),pe=(0,U.useMemo)(()=>b===null||ue?null:{runId:o?`result:${o}`:`review`,phase:`review`,status:`idle`,canNext:!1,canStop:!1,stopRequested:!1,reps:[],selectedOccurrenceId:null,entry:null,error:null,saving:!1},[b,ue,o]),me=async()=>{let e=L.current;if(!e||F.current)return;F.current=!0,I.current=!1,ee(`saving`),te(null);let t;try{t=a?.(e.blockId,e.results),await t}catch(e){I.current=!0,te(e instanceof Error?e.message:String(e)),ee(`error`),F.current=!1;return}F.current=!1,ee(`idle`),re(!0);let{results:n}=e;if(n.logs&&n.logs.length>0)try{let{segments:e}=Cz(n.logs,n.startTime);x(e)}catch{x([])}else n.completed?x([]):A.current&&i()},he=(0,U.useCallback)(()=>{O.current=!0,l?.()},[l]),ge=()=>{if(F.current||I.current){A.current=!0;return}if(b!==null||k.current||!O.current){i();return}if(!j&&!u){P(!0);return}A.current=!0,M(!0)},_e=()=>{P(!1),A.current=!0,M(!0)},ve=(0,U.useRef)(ge);ve.current=ge,yK(pe,(0,U.useCallback)(e=>e.kind===`dismiss`&&(ve.current(),!0),[]),20,{keyboard:!0});let ye=(e,t)=>{k.current||(k.current=!0,L.current={blockId:e,results:t},me())},be=(e,t,n)=>{C(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})},xe=R===`idle`?null:(0,W.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:[R===`saving`&&(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Saving…`}),R===`error`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{role:`alert`,className:`text-destructive`,children:[`Save failed`,z?` — ${z}`:``]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void me(),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 m?b===null?(0,W.jsx)(eQ,{onClose:ge,title:`Workout`,closeLabel:`Exit`,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:ge,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,W.jsx)(lQ,{}),(0,W.jsx)(uQ,{})]}),children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[xe,g?(0,W.jsxs)(`div`,{className:`space-y-2 p-4`,children:[(0,W.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,g]}),(0,W.jsx)(`button`,{type:`button`,className:`rounded border px-3 py-2 hover:bg-accent focus-visible:ring-2`,onClick:()=>void y(),children:`Retry starting workout`})]}):m?null:(0,W.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`p-4`,children:`Saving workout before starting…`}),(0,W.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,W.jsx)(gJ,{block:m,noteContent:t,view:r,onClose:ge,onComplete:ye,isExpanded:!0,autoStart:s,onRuntimeReady:c,onRunStarted:he,externalStop:u||j,adoptRuntime:d,parkOnUnmount:f,onPark:p})}),N&&(0,W.jsx)(eQ,{title:`Stop workout?`,onClose:()=>P(!1),closeLabel:`Keep going`,actions:void 0,children:(0,W.jsxs)(`div`,{className:`space-y-4 p-6`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The run stops now and your partial results are kept.`}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[(0,W.jsx)(`button`,{type:`button`,"data-testid":`stop-cancel`,onClick:()=>P(!1),className:`rounded-lg border border-border px-4 py-2 text-sm font-medium text-foreground transition-colors hover:bg-accent`,children:`Keep going`}),(0,W.jsx)(`button`,{type:`button`,"data-testid":`stop-confirm`,onClick:_e,className:`rounded-lg bg-destructive px-4 py-2 text-sm font-bold text-destructive-foreground transition-colors hover:brightness-110`,children:`Stop — keep partial results`})]})]})})]})}):(0,W.jsx)(eQ,{title:`Workout Complete`,onClose:ge,actions:(0,W.jsxs)(W.Fragment,{children:[ne&&(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Saved ✓`}),(0,W.jsx)(lQ,{}),(0,W.jsx)(uQ,{})]}),children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[xe,(0,W.jsx)(`div`,{className:`min-h-0 flex-1`,children:ue?(0,W.jsx)(Zq,{mode:`post-run`,items:V,onSave:de,onSkip:fe,onClose:()=>B(!0),runId:o?`result:${o}`:void 0,className:`mx-auto max-w-md`}):(0,W.jsx)($Z,{runtime:null,segments:b,selectedSegmentIds:S,onSelectSegment:be,groups:[],gridViewPreset:w?`debug`:`default`})})]})}):(0,W.jsx)(eQ,{title:`Starting workout`,onClose:i,children:g?(0,W.jsxs)(`div`,{className:`space-y-3 p-6`,children:[(0,W.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,g,` Your draft is kept.`]}),(0,W.jsx)(`button`,{type:`button`,className:`rounded border px-3 py-2 focus-visible:ring-2`,onClick:()=>void y(),children:`Retry start`})]}):(0,W.jsx)(`p`,{role:`status`,className:`p-6`,children:`Saving workout before starting…`})})},pQ={play:!0,"add-to-today":!0,schedule:!0},mQ=`log`;function hQ(e,t){return e.filter(e=>e.id===mQ?t===`log`:!pQ[e.id]||t===`run`)}function gQ(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 _Q(e){return function({className:t}){return U.isValidElement(e)?U.cloneElement(e,{className:G(e.props.className,t)}):(0,W.jsx)(`span`,{className:G(`flex items-center`,t),children:e})}}var vQ=({cmd:e,block:t})=>{let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(!1),o=(0,U.useCallback)(async()=>{!e.onSplitClick||n||(await e.onSplitClick(t),r(!0),setTimeout(()=>r(!1),1500))},[e,t,n]),s=(0,U.useCallback)(async()=>{i||(await e.onClick(t),e.successIcon&&(a(!0),setTimeout(()=>a(!1),1500)))},[e,t,i]),c=(0,U.useMemo)(()=>_Q(i?e.successIcon??e.icon:e.icon),[e.icon,e.successIcon,i]),l=(0,U.useMemo)(()=>_Q(n?e.splitSuccessIcon??e.splitIcon:e.splitIcon),[n,e.splitIcon,e.splitSuccessIcon]),u=(0,U.useMemo)(()=>({id:e.id,label:e.label,icon:c,action:{type:`call`,handler:()=>s()}}),[e.id,e.label,c,s]),d=(0,U.useMemo)(()=>({id:`${e.id}-split`,label:`Copy link`,icon:l,action:{type:`call`,handler:o}}),[e.id,l,o]),f=(0,U.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]);if(!e.onSplitClick){let t=i?e.successIcon??e.icon:e.icon;return(0,W.jsxs)(K,{variant:e.primary?`default`:`secondary`,className:G(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`?rG.EDITOR_START_WORKOUT:void 0,onClick:e=>{f(e),s()},onMouseDown:f,onPointerDown:f,children:[(0,W.jsx)(`span`,{className:`flex items-center justify-center size-4 sm:size-3`,children:t}),!e.iconOnly&&(0,W.jsx)(`span`,{className:`sr-only sm:not-sr-only sm:inline`,children:e.label})]})}return(0,W.jsx)(`div`,{onClick:f,onMouseDown:f,onPointerDown:f,children:(0,W.jsx)(FY,{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`})})},yQ=({view:e,commands:t})=>{let[n,r]=(0,U.useState)(()=>e?.plugin(nE)?.rects??[]),[i,a]=(0,U.useState)(0);(0,U.useEffect)(()=>{if(!e)return;let t=e.plugin(nE);t&&(r([...t.rects]),t.addListener(e=>r([...e])))},[e]),(0,U.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(nE):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(AT),l=new Map(c.map(e=>[e.id,e]));return(0,W.jsx)(W.Fragment,{children:s.map(n=>{let r=l.get(n.sectionId);if(!r)return null;let a=gQ(e,r),o=hQ(t,Ea(r.type));return o.length===0?null:(0,W.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,W.jsx)(vQ,{cmd:e,block:a},e.id))},n.sectionId)})})},bQ=({sections:e,isRuntimeActive:t,editorState:n,onSelectBlock:r})=>{let i=LM(),a=(0,U.useRef)(``);return(0,U.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(`
160
160
  `).filter(e=>e.trim().length>0),i=r.slice(0,3).join(`
161
- `),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,U.useEffect)(()=>{i?.connected||(a.current=``)},[i]),(0,U.useEffect)(()=>{t||(a.current=``)},[t]),(0,U.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},xQ={[q.Duration]:{label:`Timer`,icon:`⏱`,textClass:`text-metric-time`,bgClass:`bg-metric-time/10`,borderClass:`border-metric-time/30`},[q.Rep]:{label:`Reps`,icon:`✕`,textClass:`text-metric-rep`,bgClass:`bg-metric-rep/10`,borderClass:`border-metric-rep/30`},[q.Effort]:{label:`Exercise`,icon:`🏋`,textClass:`text-metric-effort`,bgClass:`bg-metric-effort/10`,borderClass:`border-metric-effort/30`},[q.Rounds]:{label:`Rounds`,icon:`↻`,textClass:`text-metric-rounds`,bgClass:`bg-metric-rounds/10`,borderClass:`border-metric-rounds/30`},[q.Distance]:{label:`Distance`,icon:`📏`,textClass:`text-metric-distance`,bgClass:`bg-metric-distance/10`,borderClass:`border-metric-distance/30`},[q.Resistance]:{label:`Weight`,icon:`⚖`,textClass:`text-metric-resistance`,bgClass:`bg-metric-resistance/10`,borderClass:`border-metric-resistance/30`},[q.Equipment]:{label:`Equipment`,icon:`🧰`,textClass:`text-foreground`,bgClass:`bg-muted/40`,borderClass:`border-border/50`},[q.Action]:{label:`Action`,icon:`⚡`,textClass:`text-metric-action`,bgClass:`bg-metric-action/10`,borderClass:`border-metric-action/30`},[q.Label]:{label:`Label`,icon:`🏷`,textClass:`text-muted-foreground`,bgClass:`bg-muted/30`,borderClass:`border-border/40`}},SQ={[q.Rep]:`reps`,[q.Effort]:`movement`,[q.Resistance]:`weight`},CQ=({metric:e,tooltip:t,isFocused:n,onClick:r})=>{let i=xQ[e.type],a=e.type===q.Hint,o=e.image??(e.value===void 0?``:String(e.value)),s=i?.label??String(e.type);return(0,W.jsxs)(`span`,{title:t,onClick:r,className:G(`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,W.jsx)(`span`,{children:a?e.icon:i?.icon??`•`}),!a&&(0,W.jsx)(`span`,{children:s}),!a&&o&&(0,W.jsx)(`span`,{className:`font-semibold`,children:o})]})};function wQ(e){let t=ua(e.metadata);return{refs:t?.refs??[],diagnostics:t?.diagnostics??[]}}function TQ(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 EQ=({view:e,cursorVersion:t,getCursorFocusState:n})=>{let[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),s=(0,U.useRef)(null),c=(0,U.useCallback)(()=>{if(!e){o(null),i(null);return}let t=(n??pY)(e.state);o(t),i(t?TQ(e,t.lineFrom):null)},[e,n]);if((0,U.useEffect)(()=>{c()},[c,t]),(0,U.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]:[]),u=l.flatMap(e=>e.metrics.toArray()).filter(e=>e.type!==q.Sound&&e.type!==q.System&&!(e.type===q.Hint&&!e.icon)),d=jG(u,`runtime-badge`),f=l.flatMap(e=>e.metrics.toArray()),p=[],m=[],h=[];for(let e of f){let t=wQ(e);for(let e of t.refs){let t=`${e.kind}:${e.slug}`;p.includes(t)||(p.push(t),m.push(e))}h.push(...t.diagnostics)}let g=[];for(let e of f){let t=ya(e.metadata);t&&(g.some(e=>e.slug===t.slug)||g.push(t))}let _=typeof e?.state?.facet==`function`?e.state.facet(yE)?.()??null:null,v=typeof e?.state?.doc?.sliceString==`function`?tY(e.state.doc.sliceString(a.lineFrom,a.lineTo)):null,y=e=>e.reason===`conflict`||e.reason.endsWith(`equipment`)||e.reason===`invalid-explicit`&&e.token&&v?.equipment.includes(e.token)?`equipment`:`effort`,b=e=>typeof e==`string`&&e.trim()?e:null,x=async t=>{if(!e)return;let n=e.state.doc.sliceString(a.lineFrom,a.lineTo),r=HU.getState();if(t===`effort`){let t=await r.open({placeholder:`Change effort…`,sources:[$J(`effort`)]});if(t.dismissed)return;let i=b(t.item.payload);if(!i)return;e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(n,{effort:i})}});return}let i=[...v?.equipment??[]];for(;;){let e=await r.open({placeholder:i.length>0?`Add equipment (Esc to finish)…`:`Set equipment…`,sources:[$J(`equipment`)]});if(e.dismissed)break;let t=b(e.item.payload);t&&!i.includes(t)&&i.push(t)}((v?.jsonFrom??-1)>=0||i.length>0)&&e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(n,{equipment:i})}})},S=async()=>{if(!e)return;let t=e.state.doc.sliceString(a.lineFrom,a.lineTo),n=HU.getState(),r,i=await n.open({placeholder:`Add effort (Esc to skip)…`,sources:[$J(`effort`)]});i.dismissed||(r=b(i.item.payload)??void 0);let o=[];for(;;){let e=await n.open({placeholder:`Add equipment (Esc to finish)…`,sources:[$J(`equipment`)]});if(e.dismissed)break;let t=b(e.item.payload);t&&!o.includes(t)&&o.push(t)}!r&&o.length===0||e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(t,{effort:r,equipment:o})}})},C=async t=>{if(!e||!t.token)return;let n=y(t),r=await HU.getState().open({placeholder:`Replace “${t.token}”…`,sources:[$J(n,t.candidates)]});if(r.dismissed)return;let i=b(r.item.payload);if(!i)return;let o=e.state.doc.sliceString(a.lineFrom,a.lineTo).indexOf(t.token);o<0||e.dispatch({changes:{from:a.lineFrom+o,to:a.lineFrom+o+t.token.length,insert:i}})},w=t=>{let n=SQ[t.type];if(!n||!e)return;let r=t.type===q.Effort?`effort`:t.type===q.Equipment?`equipment`:null;if(r&&v?.jsonFrom!==void 0&&v.jsonFrom>=0){x(r);return}zt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DpxfY0SA.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:t})=>{t(a,e,n)})};return(0,W.jsxs)(`div`,{ref:s,className:G(`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:[u.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-medium shrink-0 select-none`,children:`Metrics:`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[u.map((e,t)=>(0,W.jsx)(CQ,{metric:e,tooltip:e.type===q.Hint?String(e.value??``):d[t]?.tooltip,isFocused:a.focusedMetric===e,onClick:SQ[e.type]?()=>w(e):void 0},`${e.type}-${t}`)),m.map(e=>(0,W.jsxs)(`span`,{title:`${e.kind===`effort`?`Effort`:`Equipment`} · click to change source`,onClick:()=>void x(e.kind),className:`pointer-events-auto inline-flex items-center gap-1 px-2 py-0.5 rounded border text-[11px] font-medium cursor-pointer hover:opacity-80 bg-muted/40 text-foreground border-border/50`,children:[(0,W.jsx)(`span`,{children:e.kind===`effort`?`🏋`:`🧰`}),(0,W.jsx)(`span`,{className:`font-semibold`,children:e.label}),_&&(0,W.jsx)(`a`,{href:_.openHref(e.kind,e.slug),title:`Open ${e.label} page`,"aria-label":`Open ${e.label} page`,className:`text-muted-foreground/70 hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`↗`})]},`${e.kind}:${e.slug}`)),g.map(e=>(0,W.jsxs)(`span`,{title:e.soundProfileId?`Tag ${e.label} · names the ${e.soundProfileId} sound profile`:`Tag ${e.label}`,className:`pointer-events-auto inline-flex items-center gap-1 px-2 py-0.5 rounded border text-[11px] font-medium bg-muted/40 text-foreground border-border/50`,children:[(0,W.jsx)(`span`,{children:`#`}),(0,W.jsx)(`span`,{className:`font-semibold font-mono`,children:e.label}),_&&(0,W.jsx)(`a`,{href:_.openHref(`tag`,e.slug),title:`Open the ${e.label} tag`,"aria-label":`Open the ${e.label} tag`,className:`text-muted-foreground/70 hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`↗`})]},`tag:${e.slug}`)),v?.malformed&&(0,W.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:`Reference JSON on this line does not parse — fix it in the raw text.`,className:`pointer-events-auto inline-flex items-center gap-1.5 px-2 py-0.5 rounded border text-[11px] font-medium bg-destructive/10 text-destructive border-destructive/30`,children:[(0,W.jsx)(`span`,{children:`⚠`}),(0,W.jsx)(`span`,{children:`Malformed reference JSON`})]}),h.map((e,t)=>{let n=y(e);return(0,W.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:e.message,className:`pointer-events-auto inline-flex items-center gap-1.5 px-2 py-0.5 rounded border text-[11px] font-medium bg-destructive/10 text-destructive border-destructive/30`,children:[(0,W.jsx)(`span`,{children:`⚠`}),(0,W.jsx)(`span`,{children:e.token??e.reason}),(0,W.jsx)(`button`,{type:`button`,className:`underline cursor-pointer`,onClick:()=>void C(e),children:`Select existing`}),_&&(0,W.jsx)(`a`,{href:_.createHref(n),className:`underline hover:text-foreground`,children:`Create page`})]},`${e.reason}-${t}`)}),(0,W.jsx)(`button`,{type:`button`,"data-testid":`editor-add-metric-line`,title:`Add effort/equipment reference to this line`,onClick:()=>void S(),className:`pointer-events-auto inline-flex items-center px-1.5 py-0.5 rounded border border-dashed border-border/60 text-[10px] text-muted-foreground hover:text-foreground hover:border-primary/50 cursor-pointer`,children:`+ Metric`})]})]}):(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 italic select-none`,children:`No metrics on this line`}),(0,W.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground/40 shrink-0 select-none`,children:`Ctrl+↑↓ · adjust value`})]})},DQ=new ui,OQ=new ui,kQ=new ui;async function AQ(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 jQ(e){let t=await AQ(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`);return`${window.location.origin}/load?zip=${t}`}async function MQ(e){let t=await AQ(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`),n=`shared by ${Lx()}`;return`${window.location.origin}/?z=${t}&by=${encodeURIComponent(n)}`}var NQ=({noteId:e,noteBlocks:t,sourceRevision:n=0,onIdentityChange:r,onSaved:i,beforeRun:a,onSaveRequest:o,onCommitChange:s,value:c,onChange:l,onDocUpdate:u,onCursorPositionChange:d,onBlur:f,theme:p=`vs`,readonly:m=!1,className:h=``,ariaLabel:g=`Note editor`,onStartWorkout:_,onCompleteWorkout:v,onBlocksChange:y,onAddToPlan:b,notePersistence:x,onViewCreated:S,mode:C=`edit`,lineWrapping:w=!0,showLineNumbers:T=!0,enablePreview:E=!0,showFrontmatter:D=!0,enableLinting:O=!0,enableOverlay:k=!1,commands:A,hideDefaultCommands:j=!1,enableInlineRuntime:M=!0,extensions:N,widgetComponents:P,activeSectionId:F,scrollToSectionId:I,results:L,placeholder:R})=>{let ee=(0,U.useRef)(null),z=(0,U.useRef)(null),te=(0,U.useRef)(null),ne=(0,U.useRef)(``),re=p===`dark`||p===`vs-dark`,ie=rY(te,x),[ae,oe]=(0,U.useState)(null),[se,ce]=(0,U.useState)([]),[le,B]=(0,U.useState)(1),[V,ue]=(0,U.useState)(0),de=F??ae,fe=wY(se,de),[pe,me]=(0,U.useState)(null),[he,ge]=(0,U.useState)(null),[_e,ve]=(0,U.useState)(null),[ye,be]=(0,U.useState)(!1),xe=(0,U.useRef)(null),Se=(0,U.useRef)(!1),Ce=(0,U.useRef)(n??0);(0,U.useEffect)(()=>{Ce.current=n??0},[n]);let[we,Te]=(0,U.useState)(null),Ee=(0,U.useRef)(null),De=(0,U.useCallback)(async(t,n=!1)=>{let r=z.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(AT),c=await pM({noteId:e??nn(),rawContent:s.rawContent,blocks:s.noteBlocks,expectedSourceRevision:Ce.current,...e?{}:{metadata:{title:`Playground workout`},noteType:`playground`}},t,nn(),e?void 0:`playground`,ie);xe.current=c,Ee.current=null,Ce.current=c.note.sourceRevision,r.dispatch({effects:ST.of({blocks:c.note.blocks,sourceRevision:c.note.sourceRevision})}),i?.({rawContent:c.note.rawContent,blocks:c.note.blocks,sourceRevision:c.note.sourceRevision}),be(n),ge(c.block),ve(c.session.id)}catch(e){Te(e instanceof Error?e.message:String(e))}finally{Se.current=!1}}},[e,ie,i,a]),Oe=(0,U.useCallback)(()=>{ge(null),ve(null),be(!1)},[]),ke=(0,U.useCallback)(e=>{M&&De(e,!0)},[M,De]),Ae=(0,U.useRef)(null),je=(0,U.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&&z.current){let t=z.current,n=YD(t.state,e,a);if(n){let e=n.from+n.insert.indexOf("```");t.dispatch({changes:n,effects:[Ar.scrollIntoView(e,{y:`start`,yMargin:96})]}),l?.(t.state.doc.toString())}}r||(Ae.current={results:t,resultId:a,runBlock:o});let s;try{s=yM(ie).record({resultId:a,noteId:i.session.noteId,blockId:i.session.blockId,data:t,createdAt:t.endTime}).then(()=>v?.(e,t,a,o))}catch(e){return Promise.reject(e instanceof Error?e:Error(String(e)))}return Promise.resolve(s).then(()=>{Ae.current?.results===t&&(Ae.current=null),Ee.current=a},()=>{}),s},[l,v,ie]),Me=(0,U.useMemo)(()=>{if(j)return[];if(A&&A.length>0)return A;let e=[];return M?e.push({id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:De}):_&&e.push({id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:_}),e.push({id:`playground`,label:`Playground`,icon:(0,W.jsx)(it,{className:`h-3 w-3`}),splitIcon:(0,W.jsx)(Jn,{className:`h-3 w-3`}),splitSuccessIcon:(0,W.jsx)(Kt,{className:`h-3 w-3`}),onClick:e=>{jQ(e.content).then(e=>{let t=window.open(e,`wodwiki-playground`);t&&t.focus()})},onSplitClick:async e=>{let t=await MQ(e.content);await navigator.clipboard.writeText(t)}}),b&&e.push({id:`plan`,label:`Plan`,icon:(0,W.jsx)(rr,{className:`h-3 w-3`}),onClick:b}),e},[A,_,b,M,j,De]),Ne=(0,U.useMemo)(()=>hi({codeLanguages:FO}),[]),Pe=(0,U.useMemo)(()=>[...T?[Qr(),Ur()]:[],Gr(),pi(),oee(),mi(),...w?[Ar.lineWrapping]:[],ri.allowMultipleSelections.of(!0),iee(),Ti(),Wr(),yi(),fi.highest(Cr.of([{key:`Tab`,run:e=>zr(e.state)!==null&&(Ei(e),!0)},{key:`Enter`,run:e=>{let t=e.state.selection.main,n=LQ(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:(Tr(e),ei(e))}}])),Cr.of([...Rr,...$r,...li,...ci,...wi,...di,ti,{key:`Mod-s`,run:()=>(o?.(),!0)},{key:`Ctrl-.`,run:e=>{let t=pY(e.state);if(!t?.focusedMetric)return!1;let n=t.focusedMetric.type;return!new Set([`duration`,`rep`,`rounds`,`distance`,`resistance`]).has(n)&&(zt(()=>Promise.resolve().then(()=>VU).then(()=>{zt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DpxfY0SA.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:n})=>{n(t,e)}).catch(()=>{HU.getState().open({placeholder:`Modify metric…`,sources:[]})})}),void 0),!0)}}]),tO,AT,yT.of({blocks:t??La(c,{sourceRevision:Math.max(1,n),registeredWidgets:P?[...P.keys()]:ja}),sourceRevision:Math.max(1,n),rawContent:c}),bT.of(P?[...P.keys()]:ja),jT,xE.of(D),...E||!D?[sD]:[],...E?[dE,mE,VJ(),XJ(),wD,vD(),FD]:[],...O?[IT]:[],eE,qw,HT,VT,UT.of(PQ),WT.of(FQ),...k?[nO]:[],nE,vT,gY,...VD,mT,...P&&P.size>0?[PO(P)]:[],uO({executor:CB,onResultSaved:vM,readOnly:m,noteHref:e=>vW(`blockContentId`in e||`dataType`in e?UB(e):LB(e))}),iY(e,ie),Ar.domEventHandlers({blur:()=>(f?.(),!1)}),Ar.updateListener.of(e=>{if(e.docChanged){let t=e.state.field(AT);r?.({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:t.sourceRevision}),l(t.rawContent),u?.(e),zQ(e.state,y,ne),e.transactions.some(e=>e.isUserEvent(`input`)||e.isUserEvent(`delete`)||e.isUserEvent(`paste`)||e.isUserEvent(`drop`))||s?.()}if(e.selectionSet||e.docChanged){ue(e=>e+1),e.transactions.some(e=>e.isUserEvent(`delete.backward`))&&zr(e.startState)!==null&&zr(e.state)===null&&LQ(e.state,e.state.selection.main.head)?.value===``&&queueMicrotask(()=>{e.view.state===e.state&&ii(e.view)});let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t);d?.(n.number,t-n.from+1);let r=NT(e.state);oe(r?.id??null),B(n.number);let{sections:i}=e.state.field(AT);ce(i)}}),ri.readOnly.of(m),Ar.editable.of(!m),...R?[bi(R)]:[],Ar.contentAttributes.of({"aria-label":g})],[l,d,f,u,y,r,m,o,s,T,w,E,D,O,k,e,ie,P,R,g]);return(0,U.useEffect)(()=>{let e=ee.current;if(!e)return;let t=ri.create({doc:c,extensions:[...Pe,DQ.of(pT(re)),OQ.of(Ne),kQ.of([]),...N??[]]}),n=new Ar({state:t,parent:e}),i=window.visualViewport,a=0,o=()=>{cancelAnimationFrame(a),a=requestAnimationFrame(()=>{n.hasFocus&&i?.scale===1&&i.height<window.innerHeight&&n.dispatch({effects:Ar.scrollIntoView(n.state.selection.main.head,{y:`nearest`,yMargin:24})})})};i?.addEventListener(`resize`,o),n.contentDOM.addEventListener(`focus`,o),z.current=n,me(n),e.__codemirrorView=n,S?.(n);let{sections:s}=n.state.field(AT);ce(s);let l=n.state.doc.lineAt(n.state.selection.main.head).number;B(l);let u=NT(n.state);oe(u?.id??null);let d=n.state.field(AT);return r?.({rawContent:d.rawContent,blocks:d.noteBlocks,sourceRevision:d.sourceRevision}),zQ(n.state,y,ne),()=>{cancelAnimationFrame(a),i?.removeEventListener(`resize`,o),n.contentDOM.removeEventListener(`focus`,o),delete e.__codemirrorView,me(null),n.destroy()}},[]),(0,U.useEffect)(()=>{let e=z.current;if(!e)return;let r=e.state.field(AT);c===r.rawContent?t&&n!==r.sourceRevision&&e.dispatch({effects:ST.of({blocks:t,sourceRevision:Math.max(1,n)})}):e.dispatch({changes:{from:0,to:e.state.doc.length,insert:c},...t?{effects:CT.of({rawContent:c,blocks:t,sourceRevision:Math.max(1,n)})}:{}})},[c,t,n]),(0,U.useEffect)(()=>{z.current&&z.current.dispatch({effects:DQ.reconfigure(pT(re))})},[re]),(0,U.useEffect)(()=>{if(z.current){let e=[];z.current.dispatch({effects:[Xr.reconfigure.of([...Pe,DQ.of(pT(re)),OQ.of(Ne),kQ.of(e),...N??[]])]})}},[Pe,N,C,re,Ne]),(0,U.useEffect)(()=>{m||z.current?.focus()},[m]),(0,U.useEffect)(()=>{if(I&&z.current){let e=z.current,t=e.state.doc.toString().split(`
161
+ `),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,U.useEffect)(()=>{i?.connected||(a.current=``)},[i]),(0,U.useEffect)(()=>{t||(a.current=``)},[t]),(0,U.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},xQ={[q.Duration]:{label:`Timer`,icon:`⏱`,textClass:`text-metric-time`,bgClass:`bg-metric-time/10`,borderClass:`border-metric-time/30`},[q.Rep]:{label:`Reps`,icon:`✕`,textClass:`text-metric-rep`,bgClass:`bg-metric-rep/10`,borderClass:`border-metric-rep/30`},[q.Effort]:{label:`Exercise`,icon:`🏋`,textClass:`text-metric-effort`,bgClass:`bg-metric-effort/10`,borderClass:`border-metric-effort/30`},[q.Rounds]:{label:`Rounds`,icon:`↻`,textClass:`text-metric-rounds`,bgClass:`bg-metric-rounds/10`,borderClass:`border-metric-rounds/30`},[q.Distance]:{label:`Distance`,icon:`📏`,textClass:`text-metric-distance`,bgClass:`bg-metric-distance/10`,borderClass:`border-metric-distance/30`},[q.Resistance]:{label:`Weight`,icon:`⚖`,textClass:`text-metric-resistance`,bgClass:`bg-metric-resistance/10`,borderClass:`border-metric-resistance/30`},[q.Equipment]:{label:`Equipment`,icon:`🧰`,textClass:`text-foreground`,bgClass:`bg-muted/40`,borderClass:`border-border/50`},[q.Action]:{label:`Action`,icon:`⚡`,textClass:`text-metric-action`,bgClass:`bg-metric-action/10`,borderClass:`border-metric-action/30`},[q.Label]:{label:`Label`,icon:`🏷`,textClass:`text-muted-foreground`,bgClass:`bg-muted/30`,borderClass:`border-border/40`}},SQ={[q.Rep]:`reps`,[q.Effort]:`movement`,[q.Resistance]:`weight`},CQ=({metric:e,tooltip:t,isFocused:n,onClick:r})=>{let i=xQ[e.type],a=e.type===q.Hint,o=e.image??(e.value===void 0?``:String(e.value)),s=i?.label??String(e.type);return(0,W.jsxs)(`span`,{title:t,onClick:r,className:G(`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,W.jsx)(`span`,{children:a?e.icon:i?.icon??`•`}),!a&&(0,W.jsx)(`span`,{children:s}),!a&&o&&(0,W.jsx)(`span`,{className:`font-semibold`,children:o})]})};function wQ(e){let t=ua(e.metadata);return{refs:t?.refs??[],diagnostics:t?.diagnostics??[]}}function TQ(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 EQ=({view:e,cursorVersion:t,getCursorFocusState:n})=>{let[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),s=(0,U.useRef)(null),c=(0,U.useCallback)(()=>{if(!e){o(null),i(null);return}let t=(n??pY)(e.state);o(t),i(t?TQ(e,t.lineFrom):null)},[e,n]);if((0,U.useEffect)(()=>{c()},[c,t]),(0,U.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]:[]),u=l.flatMap(e=>e.metrics.toArray()).filter(e=>e.type!==q.Sound&&e.type!==q.System&&!(e.type===q.Hint&&!e.icon)),d=jG(u,`runtime-badge`),f=l.flatMap(e=>e.metrics.toArray()),p=[],m=[],h=[];for(let e of f){let t=wQ(e);for(let e of t.refs){let t=`${e.kind}:${e.slug}`;p.includes(t)||(p.push(t),m.push(e))}h.push(...t.diagnostics)}let g=[];for(let e of f){let t=ya(e.metadata);t&&(g.some(e=>e.slug===t.slug)||g.push(t))}let _=typeof e?.state?.facet==`function`?e.state.facet(yE)?.()??null:null,v=typeof e?.state?.doc?.sliceString==`function`?tY(e.state.doc.sliceString(a.lineFrom,a.lineTo)):null,y=e=>e.reason===`conflict`||e.reason.endsWith(`equipment`)||e.reason===`invalid-explicit`&&e.token&&v?.equipment.includes(e.token)?`equipment`:`effort`,b=e=>typeof e==`string`&&e.trim()?e:null,x=async t=>{if(!e)return;let n=e.state.doc.sliceString(a.lineFrom,a.lineTo),r=HU.getState();if(t===`effort`){let t=await r.open({placeholder:`Change effort…`,sources:[$J(`effort`)]});if(t.dismissed)return;let i=b(t.item.payload);if(!i)return;e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(n,{effort:i})}});return}let i=[...v?.equipment??[]];for(;;){let e=await r.open({placeholder:i.length>0?`Add equipment (Esc to finish)…`:`Set equipment…`,sources:[$J(`equipment`)]});if(e.dismissed)break;let t=b(e.item.payload);t&&!i.includes(t)&&i.push(t)}((v?.jsonFrom??-1)>=0||i.length>0)&&e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(n,{equipment:i})}})},S=async()=>{if(!e)return;let t=e.state.doc.sliceString(a.lineFrom,a.lineTo),n=HU.getState(),r,i=await n.open({placeholder:`Add effort (Esc to skip)…`,sources:[$J(`effort`)]});i.dismissed||(r=b(i.item.payload)??void 0);let o=[];for(;;){let e=await n.open({placeholder:`Add equipment (Esc to finish)…`,sources:[$J(`equipment`)]});if(e.dismissed)break;let t=b(e.item.payload);t&&!o.includes(t)&&o.push(t)}!r&&o.length===0||e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:nY(t,{effort:r,equipment:o})}})},C=async t=>{if(!e||!t.token)return;let n=y(t),r=await HU.getState().open({placeholder:`Replace “${t.token}”…`,sources:[$J(n,t.candidates)]});if(r.dismissed)return;let i=b(r.item.payload);if(!i)return;let o=e.state.doc.sliceString(a.lineFrom,a.lineTo).indexOf(t.token);o<0||e.dispatch({changes:{from:a.lineFrom+o,to:a.lineFrom+o+t.token.length,insert:i}})},w=t=>{let n=SQ[t.type];if(!n||!e)return;let r=t.type===q.Effort?`effort`:t.type===q.Equipment?`equipment`:null;if(r&&v?.jsonFrom!==void 0&&v.jsonFrom>=0){x(r);return}zt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DV7Wny36.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:t})=>{t(a,e,n)})};return(0,W.jsxs)(`div`,{ref:s,className:G(`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:[u.length>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-medium shrink-0 select-none`,children:`Metrics:`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[u.map((e,t)=>(0,W.jsx)(CQ,{metric:e,tooltip:e.type===q.Hint?String(e.value??``):d[t]?.tooltip,isFocused:a.focusedMetric===e,onClick:SQ[e.type]?()=>w(e):void 0},`${e.type}-${t}`)),m.map(e=>(0,W.jsxs)(`span`,{title:`${e.kind===`effort`?`Effort`:`Equipment`} · click to change source`,onClick:()=>void x(e.kind),className:`pointer-events-auto inline-flex items-center gap-1 px-2 py-0.5 rounded border text-[11px] font-medium cursor-pointer hover:opacity-80 bg-muted/40 text-foreground border-border/50`,children:[(0,W.jsx)(`span`,{children:e.kind===`effort`?`🏋`:`🧰`}),(0,W.jsx)(`span`,{className:`font-semibold`,children:e.label}),_&&(0,W.jsx)(`a`,{href:_.openHref(e.kind,e.slug),title:`Open ${e.label} page`,"aria-label":`Open ${e.label} page`,className:`text-muted-foreground/70 hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`↗`})]},`${e.kind}:${e.slug}`)),g.map(e=>(0,W.jsxs)(`span`,{title:e.soundProfileId?`Tag ${e.label} · names the ${e.soundProfileId} sound profile`:`Tag ${e.label}`,className:`pointer-events-auto inline-flex items-center gap-1 px-2 py-0.5 rounded border text-[11px] font-medium bg-muted/40 text-foreground border-border/50`,children:[(0,W.jsx)(`span`,{children:`#`}),(0,W.jsx)(`span`,{className:`font-semibold font-mono`,children:e.label}),_&&(0,W.jsx)(`a`,{href:_.openHref(`tag`,e.slug),title:`Open the ${e.label} tag`,"aria-label":`Open the ${e.label} tag`,className:`text-muted-foreground/70 hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`↗`})]},`tag:${e.slug}`)),v?.malformed&&(0,W.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:`Reference JSON on this line does not parse — fix it in the raw text.`,className:`pointer-events-auto inline-flex items-center gap-1.5 px-2 py-0.5 rounded border text-[11px] font-medium bg-destructive/10 text-destructive border-destructive/30`,children:[(0,W.jsx)(`span`,{children:`⚠`}),(0,W.jsx)(`span`,{children:`Malformed reference JSON`})]}),h.map((e,t)=>{let n=y(e);return(0,W.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:e.message,className:`pointer-events-auto inline-flex items-center gap-1.5 px-2 py-0.5 rounded border text-[11px] font-medium bg-destructive/10 text-destructive border-destructive/30`,children:[(0,W.jsx)(`span`,{children:`⚠`}),(0,W.jsx)(`span`,{children:e.token??e.reason}),(0,W.jsx)(`button`,{type:`button`,className:`underline cursor-pointer`,onClick:()=>void C(e),children:`Select existing`}),_&&(0,W.jsx)(`a`,{href:_.createHref(n),className:`underline hover:text-foreground`,children:`Create page`})]},`${e.reason}-${t}`)}),(0,W.jsx)(`button`,{type:`button`,"data-testid":`editor-add-metric-line`,title:`Add effort/equipment reference to this line`,onClick:()=>void S(),className:`pointer-events-auto inline-flex items-center px-1.5 py-0.5 rounded border border-dashed border-border/60 text-[10px] text-muted-foreground hover:text-foreground hover:border-primary/50 cursor-pointer`,children:`+ Metric`})]})]}):(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 italic select-none`,children:`No metrics on this line`}),(0,W.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground/40 shrink-0 select-none`,children:`Ctrl+↑↓ · adjust value`})]})},DQ=new ui,OQ=new ui,kQ=new ui;async function AQ(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 jQ(e){let t=await AQ(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`);return`${window.location.origin}/load?zip=${t}`}async function MQ(e){let t=await AQ(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`),n=`shared by ${Lx()}`;return`${window.location.origin}/?z=${t}&by=${encodeURIComponent(n)}`}var NQ=({noteId:e,noteBlocks:t,sourceRevision:n=0,onIdentityChange:r,onSaved:i,beforeRun:a,onSaveRequest:o,onCommitChange:s,value:c,onChange:l,onDocUpdate:u,onCursorPositionChange:d,onBlur:f,theme:p=`vs`,readonly:m=!1,className:h=``,ariaLabel:g=`Note editor`,onStartWorkout:_,onCompleteWorkout:v,onBlocksChange:y,onAddToPlan:b,notePersistence:x,onViewCreated:S,mode:C=`edit`,lineWrapping:w=!0,showLineNumbers:T=!0,enablePreview:E=!0,showFrontmatter:D=!0,enableLinting:O=!0,enableOverlay:k=!1,commands:A,hideDefaultCommands:j=!1,enableInlineRuntime:M=!0,extensions:N,widgetComponents:P,activeSectionId:F,scrollToSectionId:I,results:L,placeholder:R})=>{let ee=(0,U.useRef)(null),z=(0,U.useRef)(null),te=(0,U.useRef)(null),ne=(0,U.useRef)(``),re=p===`dark`||p===`vs-dark`,ie=rY(te,x),[ae,oe]=(0,U.useState)(null),[se,ce]=(0,U.useState)([]),[le,B]=(0,U.useState)(1),[V,ue]=(0,U.useState)(0),de=F??ae,fe=wY(se,de),[pe,me]=(0,U.useState)(null),[he,ge]=(0,U.useState)(null),[_e,ve]=(0,U.useState)(null),[ye,be]=(0,U.useState)(!1),xe=(0,U.useRef)(null),Se=(0,U.useRef)(!1),Ce=(0,U.useRef)(n??0);(0,U.useEffect)(()=>{Ce.current=n??0},[n]);let[we,Te]=(0,U.useState)(null),Ee=(0,U.useRef)(null),De=(0,U.useCallback)(async(t,n=!1)=>{let r=z.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(AT),c=await pM({noteId:e??nn(),rawContent:s.rawContent,blocks:s.noteBlocks,expectedSourceRevision:Ce.current,...e?{}:{metadata:{title:`Playground workout`},noteType:`playground`}},t,nn(),e?void 0:`playground`,ie);xe.current=c,Ee.current=null,Ce.current=c.note.sourceRevision,r.dispatch({effects:ST.of({blocks:c.note.blocks,sourceRevision:c.note.sourceRevision})}),i?.({rawContent:c.note.rawContent,blocks:c.note.blocks,sourceRevision:c.note.sourceRevision}),be(n),ge(c.block),ve(c.session.id)}catch(e){Te(e instanceof Error?e.message:String(e))}finally{Se.current=!1}}},[e,ie,i,a]),Oe=(0,U.useCallback)(()=>{ge(null),ve(null),be(!1)},[]),ke=(0,U.useCallback)(e=>{M&&De(e,!0)},[M,De]),Ae=(0,U.useRef)(null),je=(0,U.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&&z.current){let t=z.current,n=YD(t.state,e,a);if(n){let e=n.from+n.insert.indexOf("```");t.dispatch({changes:n,effects:[Ar.scrollIntoView(e,{y:`start`,yMargin:96})]}),l?.(t.state.doc.toString())}}r||(Ae.current={results:t,resultId:a,runBlock:o});let s;try{s=yM(ie).record({resultId:a,noteId:i.session.noteId,blockId:i.session.blockId,data:t,createdAt:t.endTime}).then(()=>v?.(e,t,a,o))}catch(e){return Promise.reject(e instanceof Error?e:Error(String(e)))}return Promise.resolve(s).then(()=>{Ae.current?.results===t&&(Ae.current=null),Ee.current=a},()=>{}),s},[l,v,ie]),Me=(0,U.useMemo)(()=>{if(j)return[];if(A&&A.length>0)return A;let e=[];return M?e.push({id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:De}):_&&e.push({id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:_}),e.push({id:`playground`,label:`Playground`,icon:(0,W.jsx)(it,{className:`h-3 w-3`}),splitIcon:(0,W.jsx)(Jn,{className:`h-3 w-3`}),splitSuccessIcon:(0,W.jsx)(Kt,{className:`h-3 w-3`}),onClick:e=>{jQ(e.content).then(e=>{let t=window.open(e,`wodwiki-playground`);t&&t.focus()})},onSplitClick:async e=>{let t=await MQ(e.content);await navigator.clipboard.writeText(t)}}),b&&e.push({id:`plan`,label:`Plan`,icon:(0,W.jsx)(rr,{className:`h-3 w-3`}),onClick:b}),e},[A,_,b,M,j,De]),Ne=(0,U.useMemo)(()=>hi({codeLanguages:FO}),[]),Pe=(0,U.useMemo)(()=>[...T?[Qr(),Ur()]:[],Gr(),pi(),oee(),mi(),...w?[Ar.lineWrapping]:[],ri.allowMultipleSelections.of(!0),iee(),Ti(),Wr(),yi(),fi.highest(Cr.of([{key:`Tab`,run:e=>zr(e.state)!==null&&(Ei(e),!0)},{key:`Enter`,run:e=>{let t=e.state.selection.main,n=LQ(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:(Tr(e),ei(e))}}])),Cr.of([...Rr,...$r,...li,...ci,...wi,...di,ti,{key:`Mod-s`,run:()=>(o?.(),!0)},{key:`Ctrl-.`,run:e=>{let t=pY(e.state);if(!t?.focusedMetric)return!1;let n=t.focusedMetric.type;return!new Set([`duration`,`rep`,`rounds`,`distance`,`resistance`]).has(n)&&(zt(()=>Promise.resolve().then(()=>VU).then(()=>{zt(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-DV7Wny36.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:n})=>{n(t,e)}).catch(()=>{HU.getState().open({placeholder:`Modify metric…`,sources:[]})})}),void 0),!0)}}]),tO,AT,yT.of({blocks:t??La(c,{sourceRevision:Math.max(1,n),registeredWidgets:P?[...P.keys()]:ja}),sourceRevision:Math.max(1,n),rawContent:c}),bT.of(P?[...P.keys()]:ja),jT,xE.of(D),...E||!D?[sD]:[],...E?[dE,mE,VJ(),XJ(),wD,vD(),FD]:[],...O?[IT]:[],eE,qw,HT,VT,UT.of(PQ),WT.of(FQ),...k?[nO]:[],nE,vT,gY,...VD,mT,...P&&P.size>0?[PO(P)]:[],uO({executor:CB,onResultSaved:vM,readOnly:m,noteHref:e=>vW(`blockContentId`in e||`dataType`in e?UB(e):LB(e))}),iY(e,ie),Ar.domEventHandlers({blur:()=>(f?.(),!1)}),Ar.updateListener.of(e=>{if(e.docChanged){let t=e.state.field(AT);r?.({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:t.sourceRevision}),l(t.rawContent),u?.(e),zQ(e.state,y,ne),e.transactions.some(e=>e.isUserEvent(`input`)||e.isUserEvent(`delete`)||e.isUserEvent(`paste`)||e.isUserEvent(`drop`))||s?.()}if(e.selectionSet||e.docChanged){ue(e=>e+1),e.transactions.some(e=>e.isUserEvent(`delete.backward`))&&zr(e.startState)!==null&&zr(e.state)===null&&LQ(e.state,e.state.selection.main.head)?.value===``&&queueMicrotask(()=>{e.view.state===e.state&&ii(e.view)});let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t);d?.(n.number,t-n.from+1);let r=NT(e.state);oe(r?.id??null),B(n.number);let{sections:i}=e.state.field(AT);ce(i)}}),ri.readOnly.of(m),Ar.editable.of(!m),...R?[bi(R)]:[],Ar.contentAttributes.of({"aria-label":g})],[l,d,f,u,y,r,m,o,s,T,w,E,D,O,k,e,ie,P,R,g]);return(0,U.useEffect)(()=>{let e=ee.current;if(!e)return;let t=ri.create({doc:c,extensions:[...Pe,DQ.of(pT(re)),OQ.of(Ne),kQ.of([]),...N??[]]}),n=new Ar({state:t,parent:e}),i=window.visualViewport,a=0,o=()=>{cancelAnimationFrame(a),a=requestAnimationFrame(()=>{n.hasFocus&&i?.scale===1&&i.height<window.innerHeight&&n.dispatch({effects:Ar.scrollIntoView(n.state.selection.main.head,{y:`nearest`,yMargin:24})})})};i?.addEventListener(`resize`,o),n.contentDOM.addEventListener(`focus`,o),z.current=n,me(n),e.__codemirrorView=n,S?.(n);let{sections:s}=n.state.field(AT);ce(s);let l=n.state.doc.lineAt(n.state.selection.main.head).number;B(l);let u=NT(n.state);oe(u?.id??null);let d=n.state.field(AT);return r?.({rawContent:d.rawContent,blocks:d.noteBlocks,sourceRevision:d.sourceRevision}),zQ(n.state,y,ne),()=>{cancelAnimationFrame(a),i?.removeEventListener(`resize`,o),n.contentDOM.removeEventListener(`focus`,o),delete e.__codemirrorView,me(null),n.destroy()}},[]),(0,U.useEffect)(()=>{let e=z.current;if(!e)return;let r=e.state.field(AT);c===r.rawContent?t&&n!==r.sourceRevision&&e.dispatch({effects:ST.of({blocks:t,sourceRevision:Math.max(1,n)})}):e.dispatch({changes:{from:0,to:e.state.doc.length,insert:c},...t?{effects:CT.of({rawContent:c,blocks:t,sourceRevision:Math.max(1,n)})}:{}})},[c,t,n]),(0,U.useEffect)(()=>{z.current&&z.current.dispatch({effects:DQ.reconfigure(pT(re))})},[re]),(0,U.useEffect)(()=>{if(z.current){let e=[];z.current.dispatch({effects:[Xr.reconfigure.of([...Pe,DQ.of(pT(re)),OQ.of(Ne),kQ.of(e),...N??[]])]})}},[Pe,N,C,re,Ne]),(0,U.useEffect)(()=>{m||z.current?.focus()},[m]),(0,U.useEffect)(()=>{if(I&&z.current){let e=z.current,t=e.state.doc.toString().split(`
162
162
  `),n=-1,r=I.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,`-`)===I}return!1}),n>=0&&n<t.length){let t=e.state.doc.line(n+1).from;e.dispatch({selection:{anchor:t,head:t},effects:[Ar.scrollIntoView(t,{y:`start`,yMargin:20})]})}}},[I]),(0,W.jsxs)(`div`,{ref:ee,className:`cm-note-editor relative w-full min-w-0 ${h}`,children:[k&&(0,W.jsx)(yY,{view:pe??z.current,widths:fe.widths,activeSectionId:de,renderSlot:t=>{if(!D&&t.sectionType===`frontmatter`)return null;if(t.sectionType===`time`||t.sectionType===`log`)return(0,W.jsx)(JY,{noteId:e,sectionId:t.sectionId,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,cursorLine:le,docVersion:t.docVersion,commands:Me,extendedResults:L,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(AT),n=e.find(e=>e.id===t.sectionId);return(0,W.jsx)(OY,{sectionId:t.sectionId,section:n,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,docVersion:t.docVersion})}return t.sectionType===`widget`&&t.widgetName?(0,W.jsx)(YY,{sectionId:t.sectionId,widgetName:t.widgetName,view:t.view,registry:P??new Map,docVersion:t.docVersion}):(0,W.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,W.jsx)(`div`,{className:`font-medium text-foreground`,children:t.sectionType})})},cursorLine:le}),we&&(0,W.jsxs)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:[`Workout not started. `,we,` Your draft is kept.`]}),!k&&Me.length>0&&(0,W.jsx)(yQ,{view:pe??z.current,commands:Me}),(0,W.jsx)(EQ,{view:pe??z.current,cursorVersion:V}),he&&z.current&&(0,W.jsx)(fQ,{block:he,view:pe??z.current,onClose:Oe,onCompleteWorkout:je,resultId:_e??void 0,autoStart:ye}),(0,W.jsx)(bQ,{sections:se,isRuntimeActive:he!==null,editorState:(pe??z.current)?.state??null,onSelectBlock:ke})]})},PQ=async e=>{if(!IQ(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=LQ(e.state,e.pos);if(!n&&!r)return null;let[i,a]=await Promise.all([Z.getAllTagTypes().catch(()=>[]),Z.getAllTags().catch(()=>[])]);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)&&IQ(r,n)};if(!r)return null;let{propertyKey:o,from:s}=r,c={"metrics.effort":`effort`,"metrics.equipment":`equipment`,equipment:`equipment`}[o.toLowerCase()];if(c){let e=await ZJ();return{from:s,options:(c===`effort`?e.efforts:e.equipment).map(e=>({label:`${e.label} (${e.slug})`,detail:c===`effort`?`Effort`:`Equipment`,type:`constant`,apply:e.slug})),validFor:(e,t,n,r)=>{let i=LQ(r,n);return/^[\w-]*$/.test(e)&&i?.propertyKey===o&&i.from===t}}}let l=i.find(e=>e.name.toLowerCase()===o.toLowerCase());if(!l)return null;let u=a.filter(e=>e.type?.toLowerCase()===l.name.toLowerCase());return u.length===0?null:{from:s,options:u.map(e=>({label:e.label,detail:l.label,type:`constant`})),validFor:(e,t,n,r)=>{let i=LQ(r,n);return/^[\w-]*$/.test(e)&&i?.propertyKey===o&&i.from===t}}},FQ={wql:{values:async e=>(await bw(e===`tags`?`tag`:e)).map(e=>({label:e.value,detail:e.label,type:`constant`}))},whiteboardScript:{efforts:async()=>(await ZJ()).efforts.map(e=>({value:e.slug,label:`${e.label} (${e.slug})`})),equipment:async()=>(await ZJ()).equipment.map(e=>({value:e.slug,label:`${e.label} (${e.slug})`})),tags:async()=>cM().list().map(e=>({value:e.slug})),sounds:()=>EM().map(e=>({value:e.id,label:e.name}))}};function IQ(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 LQ(e,t){if(!IQ(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 RQ(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=Cc({tags:cM()}).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(AT).noteBlocks[e.id]?.version??1,createdAt:Date.now(),widgetIds:{}}}function zQ(e,t,n){if(!t)return;let r=e.field(AT).sections.filter(e=>e.type===`time`||e.type===`log`).map(t=>RQ(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 BQ({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,U.useRef)([]),E=(0,U.useCallback)(e=>{T.current=e,a?.(e)},[a]),D=(0,U.useCallback)(()=>{v?.onRun(n,T.current[0]??null)},[v,n]),O=(0,W.jsxs)(W.Fragment,{children:[y,v&&(0,W.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,W.jsx)(gr,{size:11,fill:`currentColor`}),v.label??`Run`]})]});return(0,W.jsx)(BJ,{title:e,subtitle:t,onReset:_,headerActions:O,className:S,children:(0,W.jsxs)(`div`,{className:`flex h-full flex-col min-h-0`,children:[b,(0,W.jsxs)(`div`,{ref:w,className:G(`relative flex-1 min-h-0`,C),children:[(0,W.jsx)(NQ,{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 VQ({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,W.jsx)(`div`,{className:`h-full`,style:{opacity:t,transition:`opacity 180ms ease`},children:(0,W.jsx)(BQ,{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,W.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,W.jsx)(`span`,{children:`Try editing this example ↓`}),e===n?null:(0,W.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 HQ(e,t){return e>=t?`split`:`stack`}function UQ(e,t){let n=(0,U.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:HQ(t,n)}},[e]),[r,i]=(0,U.useState)(n);return(0,U.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:HQ(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 WQ=e=>Math.max(0,Math.min(1,e)),GQ=(e,t,n)=>e+(t-e)*n,KQ=e=>1-(1-e)**2;function qQ(e,t){return e===``||t===e}var JQ={id:``,range:[0,1]};function YQ(e,t){if(!t||t.length===0)return{index:-1,stage:JQ,t:0,ring:null};let n=WQ(e),r=t.map(e=>({...e,start:WQ(Math.min(e.range[0],e.range[1])),end:WQ(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]??JQ,o=(a.end??1)-(a.start??0),s=o>0?WQ((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 XQ(e,t,n){let r=t-n;return{progress:r>0?WQ(-e/r):0,reached:e<=0,inView:e<n&&e+t>0}}function ZQ(e,t){let n=t/2;for(let t of e)if(t.top<=n&&t.bottom>n)return t.id;return null}var QQ=(0,U.createContext)(null);function $Q(){return(0,U.useContext)(QQ)}function e$({children:e}){let t=(0,U.useRef)(new Map),n=(0,U.useRef)(new Map),r=(0,U.useRef)(null),i=(0,U.useRef)(0),[a,o]=(0,U.useState)(null),s=(0,U.useRef)(null),c=(0,U.useCallback)(e=>{r.current?.gateId===e&&(r.current=null,o(null))},[]),l=(0,U.useCallback)((e,t)=>{r.current={gateId:e,segmentId:t},o(e)},[]),u=(0,U.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=ZQ(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=XQ(r.top,r.height,e);t.onMeasure({slice:YQ(i.progress,t.getStages()),progress:i.progress,reached:i.reached})})},[]),d=(0,U.useCallback)(()=>{i.current||=requestAnimationFrame(u)},[u]);(0,U.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,U.useCallback)((e,n)=>(t.current.set(e,n),d(),()=>{t.current.delete(e)}),[d]),p=(0,U.useCallback)((e,t)=>(n.current.set(e,t),d(),()=>{n.current.delete(e)}),[d]),m=(0,U.useCallback)(()=>u(),[u]),h=(0,U.useMemo)(()=>({registerAnchor:f,registerDriver:p,resync:m,capturedGateId:a,captureGate:l,releaseGate:c}),[f,p,m,a,l,c]);return(0,W.jsx)(QQ.Provider,{value:h,children:e})}function t$(e,t){let n=$Q()?.registerAnchor;(0,U.useEffect)(()=>{if(n)return n(e,()=>t.current)},[n,e,t])}function n$({gateId:e,segmentId:t,className:n,children:r}){let i=$Q(),a=(0,U.useRef)(null),[o,s]=(0,U.useState)(!1);if((0,U.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,W.jsx)(`div`,{className:n,children:r});let c=i.capturedGateId===e?`captured`:`yield`;return(0,W.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,W.jsx)(`div`,{ref:a,className:`relative min-h-0 flex-1`,children:r}),(o||c===`captured`)&&(0,W.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":`${c===`captured`?`Scroll page`:`Scroll panel`}: ${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 r$({trackRef:e,height:t,stages:n,activeIndex:r,pane:i,captions:a,status:o,segmentId:s,testId:c,className:l}){let[u,d]=(0,U.useState)(null),f=UQ(104,u).mode===`split`,p={status:o,pips:(0,W.jsx)(`div`,{className:`flex items-center gap-1.5`,"aria-hidden":`true`,children:n.map((e,t)=>{let n=r===t;return(0,W.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)})})};return(0,W.jsx)(`section`,{ref:e,"data-testid":c,className:l?`relative ${l}`:`relative`,style:{height:t},children:(0,W.jsx)(RJ.Provider,{value:p,children:(0,W.jsx)(`div`,{className:`sticky top-[65px] flex h-[calc(100dvh-65px)] flex-col overflow-hidden lg:top-[104px] lg:h-[calc(100dvh-104px)]`,children:(0,W.jsxs)(`div`,{ref:d,className:`mx-auto flex min-h-0 w-full max-w-[1500px] 2xl:max-w-[1720px] flex-1 px-5 pt-2 pb-5 lg:px-10 lg:pt-3 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,W.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-[3_1_0%]`,children:i}),(0,W.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-[2_1_0%] flex-col`,children:s?(0,W.jsx)(n$,{gateId:`${s}-captions`,segmentId:s,className:`relative min-h-0 flex-1`,children:a}):(0,W.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:a})})]})})})})}function i$(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 a$(e,t,n=`smooth`){let r=i$(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 o$(e,t,n,r){let[i,a]=(0,U.useState)(()=>YQ(0,n)),[o,s]=(0,U.useState)(!1),c=(0,U.useRef)(0),l=(0,U.useRef)(i),u=(0,U.useRef)(new Set),d=(0,U.useRef)(0),f=(0,U.useRef)(t);f.current=t;let p=$Q(),m=p?.registerDriver,h=(0,U.useRef)(p);h.current=p;let g=(0,U.useId)(),_=r??g,v=(0,U.useRef)(n);v.current=n;let y=(0,U.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,U.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(YQ(i,v.current),i)},[e,y]),x=(0,U.useCallback)(()=>{if(h.current){h.current.resync();return}b()},[b]),S=(0,U.useCallback)(()=>{d.current||=requestAnimationFrame(x)},[x]);(0,U.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,U.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,U.useCallback)(e=>(u.current.add(e),e(l.current,c.current),()=>{u.current.delete(e)}),[]),w=(0,U.useCallback)(()=>{x()},[x]);return{slice:i,progress:c.current,runwayReached:o,subscribe:C,resync:w}}var s$={reference:!0},c$={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`]],"metrics-summaries":[[`frontmatter-metrics`,`tag-summaries`,`stacking-overrides`],[`querying-summaries`,`dependency-diagnostics`,`try-it`]]};function l$(e,t){let n=e.filter(e=>!s$[e.id]),r=e.filter(e=>s$[e.id]);if(n.length===0)return{groups:[],tail:r};let i=t?c$[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 u$(e){let t=Math.max(1,e.length);return e.map((e,n)=>({id:e.id,range:[n/t,(n+1)/t]}))}var d$=[{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, notebook workouts, and dated entries`,eyebrow:`Library`,title:`Browse Journal and Notebook notes in one Library.`,caption:`Your dated journal notes and preloaded notebook benchmarks live in one unified surface. Search, filter by source, or clone to today’s note.`},{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 f$({slides:e=d$,className:t}){let n=(0,U.useRef)(null),[r,i]=(0,U.useState)(0);(0,U.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,W.jsxs)(`div`,{className:G(`relative w-full`,t),children:[(0,W.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,W.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,W.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,W.jsx)(`img`,{src:t.src,alt:t.alt,loading:n===0?`eager`:`lazy`,className:`h-full w-full object-cover`})}),(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2 sm:w-1/2 sm:gap-3`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-[0.24em] text-primary/80`,children:t.eyebrow}),(0,W.jsx)(`h3`,{className:`text-2xl font-black tracking-[-0.04em] text-foreground sm:text-3xl`,children:t.title}),(0,W.jsx)(`p`,{className:`text-sm leading-7 text-muted-foreground sm:text-base`,children:t.caption}),(0,W.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-2 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`text-primary`,children:[`Step `,n+1]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,W.jsx)(`span`,{children:e.length})]})]})]},t.src))}),(0,W.jsx)(`div`,{className:`mt-4 flex items-center justify-center gap-2`,children:e.map((e,t)=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(t),"aria-label":`Go to slide ${t+1}: ${e.title}`,"aria-current":t===r?`true`:`false`,className:G(`h-2 rounded-full transition-all`,t===r?`w-8 bg-primary`:`w-2 bg-border hover:bg-muted-foreground/40`)},e.src))})]})}var p$=`wodwiki:text-filter-navigation`,m$=({paramName:e=`q`,placeholder:t=`Search…`,autoFocus:n=!1,className:r,navigationScope:i,inputTestId:a})=>{let[o,s]=fn(e,{defaultValue:``}),c=i??e,l=(0,U.useRef)(null);return(0,U.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,W.jsxs)(`div`,{className:G(`flex items-center gap-3 px-6 lg:px-10 pb-3`,r),children:[(0,W.jsx)(B,{className:`size-5 text-muted-foreground shrink-0`}),(0,W.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(p$,{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,W.jsx)(`button`,{onClick:()=>s(``),"aria-label":`Clear`,className:`text-muted-foreground hover:text-foreground transition-colors text-lg leading-none`,children:`×`})]})};function h$(e){let t=[],n=!1;for(let r of e){if(r.trim()===`---`){n=!n;continue}n||t.push(r)}return t}function g$(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 _$(e){return new Date(e).toISOString().slice(0,10)}function v$(e,t){let n=t.trim().toLowerCase();return!n||e.name.toLowerCase().includes(n)||e.content.toLowerCase().includes(n)||e.date!==void 0&&_$(e.date).includes(n)}function y$(e){if(!e)return null;let t=h$(lb(e).split(`
163
163
  `)).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&!e.startsWith("```"))[0];return t?g$(t):null}var b$=({category:e,workoutItems:t,onSelect:n,showSearch:r=!0,variant:i=`card`,className:a,navigationScope:o=`q`,getItemActions:s})=>{let[c]=fn(`q`,{defaultValue:``}),[l,u]=(0,U.useState)(0),[d,f]=(0,U.useState)(0),p=(0,U.useRef)([]),m=(0,U.useMemo)(()=>t.filter(t=>t.category===e&&t.name.toLowerCase()!==`readme`).filter(e=>v$(e,c)),[t,e,c]),h=(0,U.useMemo)(()=>m.map(e=>({item:e,preview:y$(e.content),actions:s?.(e)??[{id:`open`,label:`Open`,onSelect:n}]})),[m,s,n]);return(0,U.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,U.useEffect)(()=>{p.current=[]},[h]),(0,U.useEffect)(()=>{u(0),f(0)},[c]),(0,U.useEffect)(()=>{(p.current[l]?.[d])?.scrollIntoView({block:`nearest`,inline:`nearest`})},[d,l]),(0,U.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(p$,e),()=>{window.removeEventListener(p$,e)}},[h,o,d,l]),(0,W.jsxs)(`div`,{className:G(`flex flex-col`,i===`card`&&`rounded-3xl border border-border bg-card overflow-hidden shadow-2xl shadow-black/5`,a),children:[r?(0,W.jsx)(`div`,{className:`border-b border-border/60 bg-background/95 backdrop-blur-md`,children:(0,W.jsx)(m$,{placeholder:`Filter collection workouts…`,className:`pt-3`,navigationScope:o})}):null,h.length===0?(0,W.jsx)(`div`,{className:`px-6 py-10 text-sm font-medium text-muted-foreground`,children:`No workouts found.`}):(0,W.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,W.jsx)(`div`,{role:`option`,"aria-selected":n,className:G(`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,W.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:G(`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,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`flex-shrink-0 size-10 rounded-xl bg-muted flex items-center justify-center transition-colors`,children:(0,W.jsx)(Ce,{className:`size-4 text-primary`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-bold text-foreground truncate uppercase tracking-tight`,children:e.item.displayName??e.item.name}),e.preview?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium truncate mt-1`,children:e.preview}):null]}),e.item.date===void 0?null:(0,W.jsx)(`span`,{className:`shrink-0 self-center text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:Zy(new Date(e.item.date))}),(0,W.jsx)(Lt,{className:`size-4 text-muted-foreground shrink-0 transition-opacity`})]}):r.label},r.id)})},e.item.id)})})]})};function x$(){return(0,U.useEffect)(()=>{_B().catch(e=>console.warn(`[queryService] page source population failed`,e))},[]),(0,U.useSyncExternalStore)(bB,yB)}function S$(e,t){let n=e.find(e=>e.key===t&&!e.negate);return n&&n.values.length===1?n.values[0].value:null}function C$(e){let t=e.trim();if(!t.startsWith(`:`))return null;let n=PI(t),r=X(n);if(r.error||!ah(r))return null;let i=`?q=${encodeURIComponent(n)}`;switch(r.target){case`effort`:return`/efforts${i}`;case`session`:case`segment`:case`event`:return`/sessions${i}`;case`notebook`:{let e=S$(r.filters,`notebook`);if(e){let t=Da(e);return`/notebook/${encodeURIComponent(t)}${i}`}return`/notebooks${i}`}case`page`:return`/pages${i}`;case`tag`:return`/tags${i}`;case`equipment`:return`/equipment${i}`;case`note`:case`block`:{let e=S$(r.filters,`notebook`);if(e){let t=Da(e);return t===`journal`?`/journal${i}`:t===`playground`?`/playgrounds${i}`:`/notebook/${encodeURIComponent(t)}${i}`}let t=S$(r.filters,`source`);return t===`journal`?`/journal${i}`:t===`playground`?`/playgrounds${i}`:t===`feeds`||t===`notebooks`||t===`notebook`||t===`guides`?`/notes${i}`:S$(r.filters,`type`)===`dashboard`?`/dashboards${i}`:`/notes${i}`}default:return null}}var w$=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 T$(e){let t=e.split(`.`).pop()?.split(`?`)[0]?.toLowerCase()??``;return w$.has(t)}function E$(e){return/^https?:\/\//.test(e)||e.startsWith(`//`)}function D$({queryText:e,widgetType:t,widgetError:n}){return x$()?(0,W.jsx)(`div`,{className:`my-5 not-prose`,children:(0,W.jsx)(sT,{query:e,widgetType:t,widgetError:n,executor:CB,readOnly:!0,noteHref:e=>vW(`blockContentId`in e||`dataType`in e?UB(e):LB(e))})}):(0,W.jsx)(`div`,{className:`my-5 not-prose text-xs text-muted-foreground py-2`,children:`Loading…`})}function O$(e){let{meta:t,body:n}=ib(e);return Object.keys(t).length===0&&n===e?{fields:null,body:e}:{fields:t,body:n.trim()}}var k$={table({children:e}){return(0,W.jsx)(`div`,{className:`my-6 overflow-x-auto rounded-xl border border-border`,children:(0,W.jsx)(`table`,{className:`w-full text-sm border-collapse`,children:e})})},thead({children:e}){return(0,W.jsx)(`thead`,{className:`bg-muted/50 text-left`,children:e})},tbody({children:e}){return(0,W.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e})},tr({children:e}){return(0,W.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e})},th({children:e}){return(0,W.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,W.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,W.jsxs)(`figure`,{className:`my-6`,children:[(0,W.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,W.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=C$(e);if(r)return(0,W.jsx)(xt,{to:r,className:`underline underline-offset-2 transition-colors text-primary hover:text-primary/70`,children:t})}let r=E$(n),i=T$(n);return(0,W.jsxs)(`a`,{href:n,rel:r?`noopener noreferrer`:void 0,target:r||i?`_blank`:void 0,className:G(`underline underline-offset-2 transition-colors`,i?`text-primary font-medium`:`text-primary hover:text-primary/70`),children:[t,r&&(0,W.jsx)(`span`,{className:`ml-0.5 text-[10px] align-super opacity-60`,children:`↗`}),i&&!r&&(0,W.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(`
164
164
  `))return(0,W.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?vv(r):void 0;return(0,W.jsx)(D$,{queryText:t,widgetType:i?.type,widgetError:i?.error})}return(0,W.jsxs)(`div`,{className:`my-5 rounded-xl overflow-hidden border border-border`,children:[n&&(0,W.jsx)(`div`,{className:`flex items-center gap-2 px-4 py-2 bg-muted border-b border-border`,children:(0,W.jsx)(`span`,{className:`text-[10px] font-black tracking-widest uppercase text-muted-foreground`,children:n})}),(0,W.jsx)(`pre`,{className:`overflow-x-auto p-4 bg-muted/30`,children:(0,W.jsx)(`code`,{className:`font-mono text-sm text-foreground`,children:e})})]})},h1({children:e,id:t}){return(0,W.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,W.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,W.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,W.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,W.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,W.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,W.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,W.jsx)(`li`,{className:`leading-relaxed`,children:e})},blockquote({children:e}){return(0,W.jsx)(`blockquote`,{className:`my-5 pl-4 border-l-2 border-primary/40 text-muted-foreground italic text-sm`,children:e})},hr(){return(0,W.jsx)(`hr`,{className:`my-8 border-border/50`})},strong({children:e}){return(0,W.jsx)(`strong`,{className:`font-black text-foreground`,children:e})},em({children:e}){return(0,W.jsx)(`em`,{className:`italic text-foreground/80`,children:e})}},A$={...k$,p({children:e}){return(0,W.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=U.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,W.jsxs)(`span`,{className:`flex flex-col select-none mt-4 w-full gap-5 sm:gap-7`,children:[(0,W.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,W.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Markdown`}),`.`]}),(0,W.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,W.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,W.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,W.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Analytics`}),`.`]})]}):(0,W.jsx)(`strong`,{className:`font-black text-foreground`,children:e})}},j$={...k$,p({children:e}){return(0,W.jsx)(`p`,{className:`text-base lg:text-lg font-medium text-foreground/75 leading-relaxed my-4 first:mt-0`,children:e})}},M$=[Gn];function N$(e){return e.startsWith(`:`)?e:In(e)}function P$(e){return e.type===`text`&&typeof e.value==`string`?e.value:(e.children??[]).map(P$).join(``)}function F$(e){return e.trim().toLowerCase().replace(/[^\p{L}\p{N} _-]/gu,``).replace(/ /g,`-`).replace(/-+/g,`-`)||`heading`}var I$=()=>e=>{let t=new Map,n=e=>{if(e.tagName&&/^h[1-6]$/.test(e.tagName)){let n=F$(P$(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 L$({fields:e}){let t=Object.entries(e);return t.length===0?null:(0,W.jsxs)(`div`,{className:`my-6 rounded-xl border border-border bg-muted/30 overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`px-4 py-2 border-b border-border bg-muted/50`,children:(0,W.jsx)(`span`,{className:`text-[10px] font-black tracking-[0.2em] uppercase text-muted-foreground`,children:`Metadata`})}),(0,W.jsx)(`dl`,{className:`divide-y divide-border/50`,children:t.map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex items-baseline gap-4 px-4 py-2`,children:[(0,W.jsx)(`dt`,{className:`text-[11px] font-semibold text-muted-foreground uppercase tracking-wide min-w-[100px] shrink-0`,children:e}),(0,W.jsx)(`dd`,{className:`text-sm text-foreground break-words`,children:Array.isArray(t)?t.join(`, `):String(t)})]},e))})]})}var R$={default:k$,heroLead:A$,heroBody:j$};function z$({prose:e,className:t,variant:n=`default`}){if(!e)return null;let{fields:r,body:i}=O$(e);return(0,W.jsxs)(`div`,{className:G(`prose-canvas`,t),children:[r&&(0,W.jsx)(L$,{fields:r}),i&&(0,W.jsx)(_n,{remarkPlugins:M$,rehypePlugins:[I$],urlTransform:N$,components:R$[n],children:i})]})}var B$=({activations:e,fullBleed:t,runState:n,deps:r})=>{if(e.length===0)return null;let i=e[0];if(bL(i)&&n){let a=e.slice(1),o=n.isReconnect?(0,W.jsxs)(`button`,{onClick:n.onReconnect,className:G(`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,W.jsx)(Xe,{className:`size-3.5`}),`View`]}):(0,W.jsxs)(`button`,{type:`button`,onClick:n.onRun,className:G(`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||gr;return(0,W.jsx)(e,{className:`shrink-0 size-4 fill-current sm:size-3`})})(),(0,W.jsx)(`span`,{children:i.label})]});return(0,W.jsxs)(`div`,{className:G(`flex flex-wrap items-center gap-4 mt-8`,t&&`justify-center`),children:[o,a.map((e,t)=>(0,W.jsx)(`button`,{onClick:()=>_L(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,W.jsx)(`div`,{className:G(`flex flex-wrap gap-4 mt-8`,t&&`justify-center`),children:e.map((e,t)=>(0,W.jsx)(`button`,{onClick:()=>_L(e.action,r),className:G(`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))})},V$=({examples:e,activeIndex:t,onSelect:n})=>e.length===0?null:(0,W.jsx)(`div`,{className:`mt-6 rounded-2xl border border-border/70 bg-card/80 backdrop-blur-sm`,children:(0,W.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,W.jsxs)(`button`,{type:`button`,onClick:()=>n(r),"aria-current":i?`true`:void 0,className:G(`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,W.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}`)})})}),H$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`path`,{d:`M35 35 L65 35 L65 45 L45 45 L45 65 L35 65 Z`,fill:`url(#struct-grad)`}),(0,W.jsx)(`path`,{d:`M55 45 L65 45 L65 65 L45 65 L45 55 L55 55 Z`,fill:`url(#struct-grad)`,opacity:`0.7`})]}),U$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`circle`,{cx:`50`,cy:`50`,r:`5`,fill:`url(#proto-grad)`}),(0,W.jsx)(`circle`,{cx:`50`,cy:`50`,r:`15`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`2`,strokeDasharray:`4 2`}),(0,W.jsx)(`circle`,{cx:`50`,cy:`50`,r:`25`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`1`,opacity:`0.5`}),(0,W.jsx)(`line`,{x1:`50`,y1:`50`,x2:`50`,y2:`25`,stroke:`url(#proto-grad)`,strokeWidth:`4`,strokeLinecap:`round`})]}),W$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`complex-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#F50057`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#D500F9`,stopOpacity:1}})]})}),(0,W.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,W.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)`})]}),G$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsxs)(`defs`,{children:[(0,W.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]}),(0,W.jsxs)(`filter`,{id:`glow`,x:`-20%`,y:`-20%`,width:`140%`,height:`140%`,children:[(0,W.jsx)(`feGaussianBlur`,{stdDeviation:`3`,result:`blur`}),(0,W.jsx)(`feComposite`,{in:`SourceGraphic`,in2:`blur`,operator:`over`})]})]}),(0,W.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,W.jsx)(`path`,{d:`M55 20 L30 55 L45 55 L40 85 L70 45 L55 45 Z`,fill:`url(#basics-grad)`,filter:`url(#glow)`})]}),K$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`text`,{x:`50`,y:`65`,fontFamily:`monospace`,fontSize:`40`,fontWeight:`bold`,fill:`url(#basics-grad)`,textAnchor:`middle`,children:`10`})]}),q$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`rect`,{x:`30`,y:`30`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,W.jsx)(`rect`,{x:`30`,y:`45`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,W.jsx)(`rect`,{x:`30`,y:`60`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`})]}),J$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,W.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,W.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`})]}),Y$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,W.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,W.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,W.jsx)(`text`,{x:`50`,y:`30`,fontFamily:`monospace`,fontSize:`12`,fill:`url(#struct-grad)`,textAnchor:`middle`,children:`21-15-9`})]}),X$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`path`,{d:`M35 35 H65 V55 L50 70 L35 55 Z`,fill:`url(#proto-grad)`}),(0,W.jsx)(`circle`,{cx:`50`,cy:`45`,r:`4`,fill:`#0b1326`})]}),Z$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,W.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,W.jsx)(`rect`,{x:`30`,y:`60`,width:`10`,height:`15`,fill:`url(#metric-grad)`}),(0,W.jsx)(`rect`,{x:`45`,y:`40`,width:`10`,height:`35`,fill:`url(#metric-grad)`}),(0,W.jsx)(`rect`,{x:`60`,y:`25`,width:`10`,height:`50`,fill:`url(#metric-grad)`})]}),Q$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,W.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,W.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`})]}),$$=e=>(0,W.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`dialect-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,W.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#76FF03`,stopOpacity:1}}),(0,W.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00E676`,stopOpacity:1}})]})}),(0,W.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,W.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 e1(e){switch(e){case`trophy`:return G$;case`dumbbell`:return Ce;case`timer`:return U$;case`play`:return gr;case`blocks`:return H$;case`puzzle`:return W$;case`activity`:return Z$;case`file-text`:return $$;default:return oe}}function t1(e){switch(e){case`basics-movement`:return G$;case`basics-reps`:return K$;case`basics-load`:return q$;case`structure-rounds`:case`complex-rounds`:case`protocols-rounds`:return J$;case`structure-repscheme`:return Y$;case`protocols-timer`:case`complex-time`:return U$;case`protocols-tag`:return X$;case`metrics-custom`:return Z$;case`metrics-calc`:return Q$;case`dialects-log`:case`dialects-climb`:return $$;default:return null}}function n1({quest:e,onClick:t,className:n,compact:r=!1,disabled:i=!1}){let a=t1(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:G(`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,W.jsxs)(W.Fragment,{children:[a?(0,W.jsxs)(`span`,{className:G(`relative shrink-0 mt-0.5`,r?`size-5`:`size-6`),children:[(0,W.jsx)(a,{className:`w-full h-full`}),e.isCompleted&&(0,W.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,W.jsx)(Kt,{className:`size-2`,strokeWidth:3})})]}):(0,W.jsx)(`span`,{className:G(`mt-0.5 shrink-0`,e.isCompleted?`text-primary`:`text-muted-foreground/50`),"aria-hidden":`true`,children:e.isCompleted?(0,W.jsx)(Ct,{className:r?`size-3.5`:`size-4`}):(0,W.jsx)(Un,{className:r?`size-3.5`:`size-4`})}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:G(`font-semibold`,e.isCompleted?`text-foreground line-through decoration-primary/40`:`text-foreground`,r&&`text-xs`),children:e.label}),e.desc&&!r&&(0,W.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:e.desc}),(0,W.jsx)(`p`,{"data-testid":`challenge-hint-${e.id}`,className:G(`mt-1 text-xs`,e.isCompleted||e.result?.pass?`text-primary/80`:`text-muted-foreground`),children:s})]})]});return t?(0,W.jsx)(`button`,{type:`button`,onClick:t,disabled:i,...c,children:l}):(0,W.jsx)(`div`,{...c,children:l})}function r1(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 i1=({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,notebookSlug:_=null,workoutItems:v=[],handleSelectWorkout:y,onScrollToSection:b,variant:x=`default`})=>{let S=!!e.isFullBleed,C=!!e.isDark&&x!==`caption`,w=e.density,T=RR[e.theme||`slate`]??RR.slate,E=e.examples??[],D=t===-1,O=U.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`?r1(a.text.trim()):{lead:``,rest:``},c=e.proseChunks.slice(n+1);return(0,W.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,W.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,W.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,W.jsxs)(`div`,{className:`relative max-w-2xl w-full text-center`,children:[o&&(0,W.jsx)(z$,{prose:o,variant:`heroLead`,className:`mb-5`}),s&&(0,W.jsx)(z$,{prose:s,variant:`heroBody`,className:`mb-2`}),c.map((e,t)=>{if(e.kind===`prose`){let n=e.text.trim();return n?(0,W.jsx)(z$,{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,W.jsx)(`div`,{className:`my-4 flex justify-center`,children:(0,W.jsx)(n1,{quest:n,onClick:()=>b?.(r),compact:!0})},`hero-challenge-${t}`):null}return null}),t.length>0&&(0,W.jsx)(B$,{activations:t.map((e,t)=>yL(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,W.jsxs)(`div`,{id:r,"data-section-id":i==="default"||i===`before-workouts`?e.id:void 0,className:G(`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,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:G(`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,W.jsx)(`div`,{className:G(`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,W.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,W.jsxs)(`div`,{className:G(`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,W.jsx)(`div`,{className:`mb-4 flex items-center gap-2 select-none min-h-[14px]`,children:O.quest.isCompleted?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-wider text-emerald-800 dark:text-emerald-400 bg-emerald-500/10 px-2 py-0.5 rounded-full border border-emerald-500/20`,children:[(0,W.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-emerald-500 dark:bg-emerald-400 animate-pulse`}),`Challenge Complete`]}):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[9px] font-black uppercase tracking-wider text-muted-foreground bg-muted/60 px-2 py-0.5 rounded-full border border-border/50`,children:[(0,W.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-zinc-400 dark:bg-zinc-500`}),O.chapterTitle,`: Challenge Pending`]})}),a?(0,W.jsx)(`h2`,{className:G(`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,W.jsx)(z$,{prose:n,className:t===0?`mb-6`:`mt-4 mb-6`},`prose-${t}`):null}if(e.kind===`button`)return(0,W.jsx)(B$,{activations:[yL(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,W.jsx)(`div`,{className:`my-6`,children:(0,W.jsx)(f$,{})},`hero-carousel-${t}`);if(e.widget===`workouts-list`&&g&&_&&y)return(0,W.jsx)(`div`,{id:`notebook-workouts`,className:`border-b border-border/50 bg-card my-6`,children:(0,W.jsx)(`div`,{className:`w-full mx-auto`,children:(0,W.jsx)(b$,{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,W.jsx)(`div`,{className:`my-4`,children:(0,W.jsx)(n1,{quest:n,onClick:()=>b?.(r),compact:!0})},`challenge-${t}`):null}return null}),E.length>0?(0,W.jsx)(V$,{examples:E,activeIndex:Math.min(p,E.length-1),onSelect:t=>f(e,t)}):null,s&&A?(0,W.jsx)(B$,{activations:e.buttons.map((e,t)=>yL(e,t)),fullBleed:S,runState:l?u:void 0,deps:d}):null]})]},`${e.id}-${i}`)};function a1({sections:e,activeIndex:t,part:n,args:r}){return(0,W.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,W.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,W.jsx)(i1,{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 o1({sections:e,part:t,partCount:n,title:r,pane:i,cardArgs:a,onActivateSection:o}){let s=(0,U.useRef)(null),c=(0,U.useMemo)(()=>u$(e),[e]),{slice:l,subscribe:u}=o$(s,!1,c),d=(0,U.useRef)(e);d.current=e;let[f,p]=(0,U.useState)(!1);(0,U.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,U.useState)(!1);(0,U.useEffect)(()=>u(()=>{let e=m();g(t=>t===e?t:e)}),[u]);let _=(0,U.useRef)(!1),v=(0,U.useRef)(-1),y=(0,U.useRef)(o);y.current=o,(0,U.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,W.jsxs)(`div`,{children:[(0,W.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,W.jsxs)(`div`,{className:`font-mono text-[11px] uppercase tracking-[0.22em] text-muted-foreground`,children:[`Part `,t,` / `,n]}),(0,W.jsx)(`h2`,{className:`mt-1 text-xl font-black uppercase tracking-tight text-foreground`,children:r})]}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(r$,{trackRef:s,height:`${(e.length+1)*100}vh`,stages:c,activeIndex:l.index,pane:f?i:null,captions:(0,W.jsx)(a1,{sections:e,activeIndex:l.index,part:t,args:a}),status:(0,W.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,W.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 s1({sections:e,groupKey:t,title:n,pane:r,cardArgs:i,onActivateSection:a}){let{groups:o,tail:s}=l$(e,t);return(0,W.jsxs)(W.Fragment,{children:[o.map((e,t)=>(0,W.jsx)(o1,{sections:e,part:t+1,partCount:o.length,title:n,pane:r,cardArgs:i,onActivateSection:a},e[0]?.id??t)),s.length>0&&(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-[1500px] px-6 lg:px-12`,"data-testid":`guide-static-tail`,children:(0,W.jsx)(`div`,{className:`lg:max-w-[50%]`,children:s.map((e,t)=>(0,W.jsx)(i1,{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 c1({videoId:e,title:t=`YouTube video`,onClose:n}){return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,NC.createPortal)((0,W.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center bg-black/90 p-4 animate-in fade-in duration-200`,"data-testid":`youtube-lightbox`,onClick:e=>{e.target===e.currentTarget&&n()},children:[(0,W.jsx)(`button`,{type:`button`,onClick:n,title:`Close video`,"data-testid":`youtube-lightbox-close`,className:`absolute right-4 top-4 z-[110] flex size-11 items-center justify-center rounded-full border border-border bg-background/80 text-foreground transition-colors hover:bg-accent`,children:(0,W.jsx)(Sr,{className:`size-5`})}),(0,W.jsx)(`div`,{className:`aspect-video w-full max-w-5xl overflow-hidden rounded-lg border border-border bg-black shadow-2xl`,children:(0,W.jsx)(`iframe`,{className:`h-full w-full border-0`,src:`https://www.youtube-nocookie.com/embed/${encodeURIComponent(e)}?autoplay=1&rel=0`,title:t,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:!0})})]}),document.body)}function l1({index:e,before:t,accentText:n,after:r,accent:i,blurb:a}){return(0,W.jsx)(`header`,{className:`flex items-center px-6 py-14 lg:px-12 xl:py-20 2xl:py-24 xl:px-16`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px]`,children:[(0,W.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,W.jsx)(`span`,{className:`font-mono text-xs font-normal tracking-normal text-muted-foreground`,children:e}),(0,W.jsxs)(`span`,{children:[t,n,r]})]}),(0,W.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 u1=`hsl(var(--primary))`,d1={ink:`hsl(var(--foreground))`,editor:u1,timer:u1,analytics:u1,library:u1,rounds:u1},f1={editor:`WOD Editor & Autocomplete`,timer:`Clock`,analytics:`WQL Analytics`,metrics:`Own the Metrics`,result:`Run Results`},p1={start:`/page/guide-start`,protocols:`/page/guide-protocols`,structure:`/page/guide-structure`,metrics:`/page/guide-metrics`,clock:`/page/guide-clock`,wql:`/page/guide-wql`,dashboards:`/page/guide-dashboards`,sessions:`/page/guide-sessions`,basics:`/page/guide-start`,"custom-metrics":`/page/guide-metrics`,dialects:`/page/guide-sessions#intent`,complex:`/page/guide-sessions#full-session`},m1=`dQw4w9WgXcQ`,h1=`https://i.ytimg.com/vi/${m1}/hqdefault.jpg`;function g1({variant:e=`index`}){let t=mz(),{pathname:n}=Ft(),[r,i]=(0,U.useState)(null),a=(0,U.useMemo)(()=>MR(t).flatMap(e=>e.action?.type===`route`?[{id:e.id,label:e.label,to:e.action.to}]:[]),[t]),o=(0,U.useMemo)(()=>{let e=new Map;for(let n of t){if(n.route.startsWith(`/notebook`)||n.page.frontmatter?.type!==`guide`)continue;let t=n.page.frontmatter?.description;t&&e.set(`guide-${n.route}`,String(t))}return e},[t]);if(a.length===0)return null;let s=a.findIndex(e=>e.to===n),c=s>=0,l=c&&a.length>1?(s+1)%a.length:-1,u=r&&(0,W.jsx)(c1,{videoId:m1,title:r.label,onClose:()=>i(null)});return e===`university`?(0,W.jsxs)(`section`,{id:`tour-section-university`,"data-testid":`tour-section-university`,"aria-label":`Wod Wiki University`,children:[(0,W.jsx)(l1,{index:`05`,before:`Wod Wiki `,accentText:`University`,after:``,accent:d1.library,blurb:`Eight short chapters take you from your first workout to querying your training history. Each guide pairs a video walkthrough with a runnable example.`}),(0,W.jsx)(`nav`,{"aria-label":`Wod Wiki University`,className:`px-6 pb-16 lg:px-12 xl:px-16`,children:(0,W.jsx)(`ul`,{className:`mx-auto flex w-full max-w-5xl flex-col gap-5`,children:a.map((e,t)=>(0,W.jsxs)(`li`,{className:G(`flex flex-col gap-5 rounded-lg border border-border p-5 md:flex-row md:items-center md:gap-8 md:p-6`,t%2==1&&`md:flex-row-reverse`),children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i({id:e.id,label:e.label}),title:`Watch: ${e.label}`,"aria-label":`Watch: ${e.label}`,"data-testid":`guide-watch`,className:`group relative block w-full flex-none overflow-hidden rounded-md border border-border md:w-56`,children:[(0,W.jsx)(`img`,{src:h1,alt:``,loading:`lazy`,className:`aspect-video w-full object-cover transition-transform duration-300 group-hover:scale-105`}),(0,W.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/25 transition-colors group-hover:bg-black/40`,children:(0,W.jsx)(gr,{className:`size-9 fill-white text-white`})})]}),(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,W.jsx)(xt,{to:e.to,className:`font-semibold hover:underline`,children:e.label}),(0,W.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:o.get(e.id)??e.to})]})]},e.id))})}),u]}):(0,W.jsxs)(`nav`,{"aria-label":c?`What’s Next`:`Syntax & Guides`,"data-testid":`guide-index-footer`,className:`border-t border-border px-6 py-12 xl:py-16`,children:[(0,W.jsxs)(`div`,{className:`mx-auto flex w-full max-w-3xl flex-col rounded-lg border border-border overflow-hidden`,children:[(0,W.jsxs)(`h2`,{className:`px-4 py-2 text-xs font-black uppercase tracking-wider text-muted-foreground bg-muted/40`,children:[c?`What’s Next`:`Syntax & Guides`,` · `,a.length]}),(0,W.jsx)(`ul`,{className:`flex flex-col divide-y divide-border`,children:a.map((e,t)=>(0,W.jsxs)(`li`,{className:`flex items-stretch`,children:[(0,W.jsxs)(xt,{to:e.to,"aria-current":t===s?`page`:void 0,className:G(`flex min-w-0 flex-1 flex-col gap-0.5 px-4 py-3 hover:bg-muted/50`,t===s&&`bg-muted/50`),children:[(0,W.jsxs)(`span`,{className:`flex w-full items-baseline justify-between gap-3`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.label}),t===l&&(0,W.jsx)(`span`,{className:`text-xs font-semibold text-primary`,"data-testid":`guide-next-marker`,children:`Next →`})]}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.to})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i({id:e.id,label:e.label}),title:`Watch: ${e.label}`,"aria-label":`Watch: ${e.label}`,"data-testid":`guide-watch`,className:`flex flex-none items-center gap-1.5 border-l border-border px-4 text-xs font-semibold text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground`,children:[(0,W.jsx)(gr,{className:`size-3.5`}),`Watch`]})]},e.id))})]}),u]})}var _1=`22rem`,v1=`42rem`,y1=`20rem`,b1=`calc(100dvh - var(--canvas-sticky-top) - 2rem)`;function x1(e){return{editorWidth:e||`50%`,editorMinWidth:_1,editorMaxWidth:v1,editorMinHeight:y1,editorMaxHeight:b1}}function S1(e){let t=Math.max(1,e.split(`
@@ -449,7 +449,7 @@ domain: swimming
449
449
  150m Cooldown
450
450
  \`\`\`
451
451
  `,p2=sz(a2);if(!p2)throw Error(`The baked home page must remain a valid canvas document`);var m2=p2,h2={"markdown/canvas/home/welcome-1.md":o2,"markdown/canvas/syntax/single-movement.md":s2,"markdown/canvas/syntax/timers-rest.md":c2,"markdown/canvas/syntax/groups-1.md":l2,"markdown/canvas/syntax/custom-metrics-1.md":u2,"markdown/canvas/syntax/dialect-climb-bouldering.md":d2,"markdown/canvas/syntax/complex-swimming.md":f2};function g2(e){return{...h2,...e}}function _2(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 v2=`wodwiki.homeShared.v1`;function y2(){return typeof window<`u`&&window.localStorage?window.localStorage:null}function b2(e){try{y2()?.setItem(v2,JSON.stringify(e)),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`wodwiki:home-shared`,{detail:e}))}catch{}}function x2(){try{let e=y2()?.getItem(v2);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 S2(){try{y2()?.removeItem(v2)}catch{}}function C2({pageRoute:e,quests:t,running:n}){let{markComplete:r}=PJ(e,t),i=(0,U.useMemo)(()=>t.filter(e=>e.validation?.type===`run-started`),[t]);(0,U.useEffect)(()=>{if(n)for(let e of i)r(e.id)},[n,i,r])}var w2={"session-insights":`qs-tour-analytics`},T2={"workout-complete":!0,"run-started":!0};function E2(e,t){let{markComplete:n}=PJ(e,t),r=(0,U.useRef)(new Set);return r.current=new Set(t.filter(e=>!e.validation||!T2[e.validation.type]).map(e=>e.id)),(0,U.useCallback)(e=>{let t=w2[e];t&&r.current.has(t)&&n(t)},[n])}var D2=.4;function O2(e){let{dispatch:t}=IP();(0,U.useEffect)(()=>{let n=e.map(e=>document.getElementById(e)).filter(e=>e!==null);if(n.length===0||typeof IntersectionObserver>`u`)return;let r=()=>{let e=window.innerHeight*D2,t=null;for(let r of n){let n=r.getBoundingClientRect();if(n.width!==0||n.height!==0){if(n.top>e)break;t=r.id}}return t},i=new IntersectionObserver(()=>{let e=r();e&&t({type:`SET_ACTIVE_L3`,id:e})},{threshold:Array.from({length:21},(e,t)=>t/20)});return n.forEach(e=>i.observe(e)),()=>i.disconnect()},[e.join(`
452
- `),t])}var k2=(0,U.createContext)(null);function A2({children:e}){let t=(0,U.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,U.useState)(0),i=(0,U.useCallback)((e,n)=>{t.current[e]!==n&&(t.current[e]=n,r(e=>e+1))},[]);return(0,W.jsx)(k2.Provider,{value:{register:i,registry:t,version:n},children:e})}function j2(){return(0,U.useContext)(k2)||{registry:{current:{}},register:()=>()=>{},version:0}}function M2(e){let t=(0,U.useContext)(k2)?.register;return(0,U.useCallback)(n=>t?.(e,n),[e,t])}function N2({ringKey:e,el:t}){let{register:n}=j2();return(0,U.useLayoutEffect)(()=>{n(e,t)},[e,t,n]),null}function P2({target:e,accent:t,canvasRef:n}){let{registry:r,version:i}=j2(),[a,o]=(0,U.useState)(null),s=e?.key??null;return(0,U.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,W.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}`}})}function F2(){return(0,W.jsxs)(`div`,{className:`@container flex w-full flex-col items-center text-center`,children:[(0,W.jsxs)(`h1`,{className:`text-[clamp(32px,6.5cqi,64px)] font-extrabold leading-[1.02] tracking-[-0.04em]`,children:[(0,W.jsxs)(`span`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`mr-[0.35em]`,children:`Write it.`}),(0,W.jsx)(`span`,{children:`Time it.`})]}),(0,W.jsxs)(`span`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`mr-[0.35em]`,children:`Track it.`}),(0,W.jsx)(`span`,{children:`Own it.`})]})]}),(0,W.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,W.jsx)(`br`,{}),`line and splits become queryable training data points.`]})]})}var I2=`dQw4w9WgXcQ`;function L2({onWatched:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`flex w-full flex-col items-center gap-4 xl:gap-5`,children:[(0,W.jsxs)(`div`,{className:`group relative aspect-video w-full max-w-2xl rounded-xl border border-border bg-black text-left shadow-xl transition-shadow hover:shadow-2xl 2xl:max-w-3xl`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),"data-testid":`tour-why-video`,"aria-label":`Play Why Wod Wiki? · YouTube video`,className:`block h-full w-full overflow-hidden rounded-xl`,children:[(0,W.jsx)(`img`,{src:`https://i.ytimg.com/vi/${I2}/hqdefault.jpg`,alt:`Why Wod Wiki? video thumbnail`,loading:`lazy`,className:`h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]`}),(0,W.jsx)(`span`,{className:`absolute inset-0 bg-gradient-to-t from-black/70 via-black/10 to-transparent`}),(0,W.jsx)(`span`,{className:`absolute left-1/2 top-1/2 flex size-14 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-lg transition-transform duration-300 group-hover:scale-110 xl:size-16`,children:(0,W.jsx)(gr,{className:`ml-1 size-6 fill-current xl:size-7`})}),(0,W.jsx)(`span`,{className:`absolute bottom-3 left-4 font-mono text-[11px] uppercase tracking-[0.2em] text-white/90`,children:`Why Wod Wiki? · YouTube`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{n(!1),e?.()},"data-testid":`tour-why-video-skip`,title:`Skip the video`,"aria-label":`Skip the Why Wod Wiki? video`,className:`absolute right-0 top-0 z-10 flex size-8 items-center justify-center rounded-full border border-border bg-background/90 text-foreground shadow-lg backdrop-blur-sm transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary after:absolute after:-inset-3 after:content-[''] md:-right-2 md:-top-2`,children:(0,W.jsx)(Sr,{className:`size-4`})})]}),(0,W.jsxs)(`p`,{"data-testid":`tour-scroll-hint`,className:`flex items-center gap-2 font-mono text-[11px] uppercase tracking-[0.3em] text-muted-foreground`,children:[(0,W.jsx)(hn,{className:`size-4 animate-bounce`}),`Keep scrolling for the demo`]}),t&&(0,W.jsx)(c1,{videoId:I2,title:`Why Wod Wiki?`,onClose:()=>{n(!1),e?.()}})]})}var R2=`https://github.com/bitcobblers/wod-wiki`;function z2(){return(0,W.jsx)(`footer`,{"data-testid":`tour-footer`,className:`border-t border-border px-6 py-8`,children:(0,W.jsxs)(`p`,{className:`mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-2 text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` WOD Wiki`]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsx)(`a`,{href:R2,target:`_blank`,rel:`noopener noreferrer`,className:`underline-offset-4 transition-colors hover:text-foreground hover:underline`,children:`GitHub repository`})]})})}async function B2(){try{await Z.wipe()}catch{}try{for(let e=localStorage.length-1;e>=0;e--){let t=localStorage.key(e);t&&localStorage.removeItem(t)}}catch{}try{sessionStorage.clear()}catch{}}var V2=`https://github.com/bitcobblers/wod-wiki`,H2=`https://forms.gle/6YHpxwAJh6PAsyAQ6`,U2=`https://app.turso.tech/signup`,W2=`m23.31.803-.563-.42-1.11 1.189-.891-1.286-.512.235.704 1.798-.326.35L18.082 0l-.574.284 2.25 4.836-2.108.741h-.05l-1.143-1.359-1.144 1.36H8.687l-1.144-1.36-1.146 1.363H6.36l-2.12-.745L6.491.284 5.919 0l-2.53 2.668-.327-.349.705-1.798-.512-.236-.89 1.287L1.253.382.69.804 2.42 3.69l-.89.939.311 2.375 2.061.787L3.9 8.817H1.947v.444l.755 1.078 1.197.433v6.971l3.057 4.55L7.657 24l1.101-1.606L9.9 24l.999-1.606L12 24l1.102-1.606L14.1 24l1.141-1.606L16.343 24l.701-1.706 3.058-4.55v-6.972l1.196-.433.756-1.078v-.444h-1.952l.003-1.03 2.054-.784.311-2.375-.89-.939zm-8.93 18.718H8.033l.793-1.615.794 1.615.793-1.083.793 1.083.794-1.083.793 1.083.794-1.083.793 1.083.793-1.615.794 1.615zm3.886-7.39-3.3 1.084-.143 3.061-2.827.627-2.826-.627-.142-3.06-3.3-1.085v-1.635l4.266 1.21-.052 4.126h4.109l-.052-4.127 4.266-1.209z`,G2=[{id:`managed-hosting`,label:`Managed hosting — we run the database.`},{id:`public-profile`,label:`Profile page with a public feed.`},{id:`device-sync`,label:`Sync across your apps and devices.`}],K2=[{id:`coach-views`,label:`Member accounts with coach views.`},{id:`coaches-portal`,label:`Programming dashboards and leaderboards.`},{id:`athlete-portal`,label:`Private journals that roll up to their coach.`},{id:`gym-hosting`,label:`Gym website, competition timers, whiteboard displays.`},{id:`branding`,label:`Your gym's brand on pages and feeds.`}],q2=`underline-offset-4 transition-colors hover:text-foreground hover:underline`;function J2(e){let t=`inline-flex w-fit items-center gap-1.5 font-medium text-foreground underline-offset-4 transition-colors hover:underline`,n=(0,W.jsxs)(W.Fragment,{children:[e.children,(0,W.jsx)(on,{className:`size-3.5 text-muted-foreground/50`,"aria-hidden":!0})]});return e.href===void 0?e.onClick===void 0?(0,W.jsx)(xt,{to:e.to,className:t,children:n}):(0,W.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`text-left ${t}`,children:n}):(0,W.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:t,children:n})}function Y2({children:e}){return(0,W.jsxs)(`li`,{className:`flex gap-2.5 text-sm leading-6 text-muted-foreground`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`mt-[11px] size-1 shrink-0 rounded-full bg-muted-foreground/50`}),(0,W.jsx)(`span`,{children:e})]})}function X2(){return(0,W.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-800`,children:`Active`})}function Z2(e){return(0,W.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,W.jsxs)(`span`,{className:`flex gap-2.5 text-[13px] leading-5 text-muted-foreground`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`mt-[9px] size-1 shrink-0 rounded-full bg-muted-foreground/50`}),(0,W.jsx)(`span`,{children:e.feature.label})]}),(0,W.jsx)(`button`,{type:`button`,"data-testid":`hosted-interest-${e.feature.id}`,onClick:()=>e.onInterested(e.feature.id),disabled:e.interested,"aria-pressed":e.interested,className:`ml-[13px] w-fit shrink-0 rounded-full border px-2 py-px text-[11px] font-medium transition-colors ${e.interested?`border-emerald-500/30 bg-emerald-500/10 text-emerald-600`:`border-border text-muted-foreground hover:border-primary/50 hover:text-primary`}`,children:e.interested?`✓ Interested`:`Interested`})]})}function Q2(){return(0,W.jsx)(`div`,{role:`status`,"data-testid":`hosted-survey-footer`,className:`mx-auto mt-5 max-w-5xl animate-in fade-in slide-in-from-bottom-4 rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-4 duration-500`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,W.jsx)(Ct,{className:`size-5 shrink-0 text-emerald-600`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsx)(`p`,{className:`font-medium text-foreground`,children:`Thanks for showing interest — please fill out the survey and give us feedback.`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Opens the interest survey in a new tab.`})]})]}),(0,W.jsxs)(K,{type:`button`,"data-testid":`hosted-survey-button`,onClick:()=>{Kj.record(qj.hostedSurveyOpened),window.open(H2,`_blank`,`noopener,noreferrer`)},children:[`Fill out interest survey`,(0,W.jsx)(on,{className:`size-4`,"aria-hidden":!0})]})]})})}function $2(e){let t=e.icon;return(0,W.jsxs)(`article`,{className:`flex flex-col rounded-xl border border-border p-5 ${e.us?`bg-muted/40`:`bg-background`} ${e.className??``}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,W.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),e.badge]}),e.eyebrow&&(0,W.jsx)(`p`,{className:`mt-3.5 font-mono text-[10px] font-semibold uppercase tracking-[0.18em] ${e.us?`text-emerald-800`:`text-muted-foreground`}`,children:e.eyebrow}),(0,W.jsx)(`h3`,{className:`${e.eyebrow?`mt-1`:`mt-4`} text-base font-semibold text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.text}),(0,W.jsx)(`div`,{className:`mt-4 flex flex-1 flex-col gap-2 text-sm`,children:e.children})]})}function e4({label:e,features:t,interested:n,onInterested:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-2.5 font-mono text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground first:mt-0`,children:e}),(0,W.jsx)(`ul`,{className:`space-y-2`,children:t.map(e=>(0,W.jsx)(Z2,{feature:e,interested:n.has(e.id),onInterested:r},e.id))})]})}function t4(){let[e,t]=(0,U.useState)(!1),n=On(),[r,i]=(0,U.useState)(new Set),a=e=>{i(t=>t.has(e)?t:new Set(t).add(e)),Kj.record(qj.hostedInterestClicked,{feature:e})},[o]=(0,U.useState)(Bk),s=o.state===`turso`?`turso`:o.state===`invalid`?`turso-invalid`:`browser`,c=async()=>{window.confirm(`Wipe every note, result, and setting stored in this browser? This cannot be undone.`)&&(t(!0),await B2(),window.location.reload())},l=async()=>{let e=gF(),t=await SF.create({journalDate:e,title:e,rawContent:``});Kj.record(qj.noteCreated),n(HP(t.id))},u=s===`turso-invalid`?(0,W.jsx)(`span`,{className:`rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 font-mono text-[11px] font-medium text-amber-600`,children:`Invalid config`}):s===`api`?void 0:(0,W.jsx)(X2,{});return(0,W.jsxs)(`section`,{id:`tour-section-offerings`,"data-testid":`tour-section-offerings`,"aria-label":`You own your data`,children:[(0,W.jsx)(l1,{index:`04`,before:`Who owns the data? `,accentText:`You!!!`,after:``,accent:d1.library,blurb:`Run it in your browser, back it up to your own database, or host it on your own server — and if you'd rather hand the caretaking to us, mark the hosted features you want below and the interest survey unlocks.`}),(0,W.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,W.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,W.jsx)(`span`,{children:s===`api`?`Current mode: API server`:s===`turso`?`Current mode: local browser with Turso backup and sync`:s===`turso-invalid`?`Current mode: local browser. Repair the Turso connection to resume sync.`:`Current mode: local browser only`}),(0,W.jsx)(xt,{to:$.settingsStorage,className:q2,children:`Configure data storage`})]}),(0,W.jsxs)(`div`,{className:`mx-auto grid max-w-5xl grid-cols-1 gap-5 md:grid-cols-3`,children:[(0,W.jsxs)($2,{icon:N,eyebrow:`You own it`,title:`Playground in your browser`,badge:u,text:`Everything runs locally in this browser's IndexedDB — offline, no account, no server copy.`,children:[(0,W.jsx)(J2,{onClick:()=>void l(),children:`Create your journal`}),(0,W.jsx)(J2,{to:$.playgroundRoot,children:`Start Writing in a Playground`}),(0,W.jsx)(J2,{to:`/feeds`,children:`Explore the notebooks`}),(0,W.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,W.jsx)(Y2,{children:`Offline and fast — notes and results never leave this browser by default.`}),(0,W.jsx)(Y2,{children:`Tied to this browser — export or back it up before switching browsers or clearing site data.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:c,disabled:e,className:`mt-1 text-left text-xs text-muted-foreground disabled:opacity-50 ${q2}`,children:e?`Clearing…`:`Clear my data`}),(0,W.jsxs)(`div`,{className:`mt-auto border-t border-border pt-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border border-border bg-background`,children:(0,W.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,className:`size-4`,"aria-hidden":!0,children:(0,W.jsx)(`path`,{d:W2})})}),(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsx)(`p`,{className:`font-medium text-foreground`,children:`Backup & sync, optional`}),(0,W.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:`Add a free Turso database you own — committed changes back up in the background; without network you keep working and upload later.`})]})]}),(0,W.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2`,children:[(0,W.jsx)(J2,{href:U2,children:`Create a free Turso account`}),(0,W.jsx)(J2,{to:$.settingsStorage,children:`Configure backup & sync`})]})]})]}),(0,W.jsxs)($2,{icon:It,eyebrow:`You own it`,title:`Self-hosted`,badge:s===`api`?(0,W.jsx)(X2,{}):void 0,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,W.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,W.jsx)(Y2,{children:`Centralized data for a team or gym — one SQLite, Turso, or Postgres backend.`}),(0,W.jsxs)(Y2,{children:[`Publish your notebooks as a feed with `,(0,W.jsx)(`code`,{className:`font-mono text-xs`,children:`wod build`}),` — every browser subscribes and syncs.`]}),(0,W.jsx)(Y2,{children:`You run the server — network required, and server admin is on you.`})]}),(0,W.jsx)(`div`,{className:`mt-auto border-t border-border pt-4`,children:(0,W.jsx)(J2,{href:V2,children:`View source`})})]}),(0,W.jsxs)($2,{icon:bn,us:!0,eyebrow:`Us — we'd host it`,title:`Wod-Wiki hosted`,text:`Mark the features you want — the survey unlocks below.`,children:[(0,W.jsx)(e4,{label:`Individuals`,features:G2,interested:r,onInterested:a}),(0,W.jsx)(e4,{label:`Coaching & gyms`,features:K2,interested:r,onInterested:a})]})]}),r.size>0&&(0,W.jsx)(Q2,{})]})]})}var n4=({doc:e,onDocChange:t,onBlocksChange:n,onRun:r,theme:i,withRingTargets:a=!1})=>{let o=M2(`editor.wodBlock`),s=M2(`editor.runButton`),c=(0,U.useRef)(null),l=(0,U.useRef)(null),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null),m=(0,U.useCallback)(()=>{if(!a)return null;let e=c.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}}}d(t);let i=null,o=e.querySelector(`[data-testid="${rG.EDITOR_START_WORKOUT}"]`);if(o){let t=e.getBoundingClientRect(),n=o.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 p(i),{block:t,run:i}},[a]);(0,U.useLayoutEffect)(()=>{if(!a)return;let e=c.current;if(!e)return;m();let t=window.setTimeout(m,120),n=window.setTimeout(m,480),r=null;if(typeof ResizeObserver<`u`){r=new ResizeObserver(m),r.observe(e);let t=l.current?.contentDOM;t&&r.observe(t)}let i=new MutationObserver(e=>{e.some(e=>e.target instanceof Element&&e.target.closest(`.cm-note-editor`))&&m()});i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`style`]});let o=0,s=0,u=()=>{m(),performance.now()-s<3e3&&(o=requestAnimationFrame(u))},d=()=>{s=performance.now(),cancelAnimationFrame(o),o=requestAnimationFrame(u)};d(),document.fonts?.ready?.then(d).catch(()=>{});let f=l.current?.scrollDOM;return f?.addEventListener(`scroll`,m,{passive:!0}),window.addEventListener(`resize`,m),()=>{window.clearTimeout(t),window.clearTimeout(n),r?.disconnect(),i.disconnect(),f?.removeEventListener(`scroll`,m),window.removeEventListener(`resize`,m),cancelAnimationFrame(o)}},[e,a,m]);let h=(0,U.useCallback)(()=>{r()},[r]),g=(0,U.useMemo)(()=>[{id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:h},{id:`playground`,label:`Playground`,icon:(0,W.jsx)(it,{className:`h-3 w-3`}),onClick:e=>{V0(e)},splitIcon:(0,W.jsx)(Jn,{className:`h-3 w-3`}),splitSuccessIcon:(0,W.jsx)(Kt,{className:`h-3 w-3 text-emerald-500`}),onSplitClick:e=>{U0(e)}}],[h]);return(0,W.jsx)(`div`,{className:`relative flex h-full flex-col bg-background text-left`,children:(0,W.jsxs)(`div`,{ref:c,className:`relative flex-1 min-h-0`,children:[(0,W.jsx)(NQ,{noteId:`canvas:home`,ariaLabel:`Home workout editor`,value:e,onChange:t,onBlocksChange:n,onStartWorkout:h,commands:g,onViewCreated:e=>{l.current=e,a&&m()},theme:i,readonly:!1,showLineNumbers:!1,showFrontmatter:!1,enableOverlay:!1,enableInlineRuntime:!1,className:`h-full`}),a&&u&&(0,W.jsx)(`div`,{ref:o,"data-testid":`tour-wod-block-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:u.top,left:u.left,width:u.width,height:u.height}}),a&&f&&(0,W.jsx)(`div`,{ref:s,"data-testid":`tour-run-button-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:f.top,left:f.left,width:f.width,height:f.height}})]})})};function r4(e){let t=Number.isFinite(e.startTime)?e.startTime:0,n=[],r=[];for(let i of e.logs??[]){if(i.outputType!==`segment`||i.stackLevel!==1||i.line==null)continue;let e=i.timeSpan;if(!e||typeof e.started!=`number`||typeof e.ended!=`number`||e.ended<=e.started)continue;let a=i.metrics??[],o=e=>a.some(t=>t.type===e),s=a.find(e=>e.type===`effort`&&typeof e.value==`string`),c=o(`duration`)&&!o(`rep`)?`clock`:i.completionReason===`user-advance`?`next`:null;if(c){if(c===`clock`&&i.completionReason===`user-advance`){let t=(a.find(e=>e.type===`duration`&&typeof e.value==`number`)?.value??0)-(e.ended-e.started);t>0&&r.push(t)}n.push({start:e.started-t,end:e.ended-t,kind:c,label:s?.value??`Line ${i.line+1}`})}}if(n.length===0)return null;let i=r.reduce((e,t)=>e+t,0);return{segments:n,totalMs:Number.isFinite(e.duration)&&e.duration>0?e.duration:Math.max(...n.map(e=>e.end)),impatienceMs:i,impatiences:r,reactions:n.filter(e=>e.kind===`next`).map(e=>e.end-e.start)}}var i4=e=>{let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`},a4=e=>`${(Math.round(e/100)/10).toFixed(1)}s`;function o4({onRun:e}){return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 p-8 text-center`,"data-testid":`tour-insights-empty`,children:[(0,W.jsx)(`p`,{className:`max-w-sm text-sm leading-relaxed text-muted-foreground`,children:`Run the workout and this window turns your run into data — rest vs. work, how fast you answered the clock, round by round.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:e,"data-testid":`tour-insights-run`,className:`inline-flex min-h-11 items-center gap-2 rounded-full bg-primary px-5 py-2.5 text-sm font-semibold text-primary-foreground shadow transition-colors hover:bg-primary/90`,children:[(0,W.jsx)(gr,{className:`size-4`}),`Run to view the results`]})]})}function s4({result:e,onRun:t}){let n=(0,U.useMemo)(()=>e?r4(e):null,[e]);if(!e||!n)return(0,W.jsx)(o4,{onRun:t});let{segments:r,totalMs:i,impatienceMs:a,impatiences:o,reactions:s}=n,c=s.length>0?s.reduce((e,t)=>e+t,0)/s.length:0,l=s.length>0?Math.max(...s):0,u=o.length>0?Math.max(...o):0;return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col gap-4 overflow-y-auto p-4`,"data-testid":`tour-insights`,children:[(0,W.jsxs)(`div`,{"data-testid":`tour-insights-timeline`,children:[(0,W.jsx)(`div`,{className:`flex h-3 w-full overflow-hidden rounded-full border border-border/60 bg-muted/40`,children:r.map((e,t)=>(0,W.jsx)(`div`,{title:`${e.label} — ${e.kind===`clock`?`countdown`:`to Next`} ${i4(e.end-e.start)}`,className:`h-full`,style:{flexGrow:e.end-e.start,flexBasis:0,backgroundColor:e.kind===`clock`?`hsl(var(--metric-rest))`:`hsl(var(--metric-time))`,marginLeft:+(t>0)}},t))}),(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-4 font-mono text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`size-2 rounded-sm`,style:{backgroundColor:`hsl(var(--metric-rest))`}}),`Countdown`]}),(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`size-2 rounded-sm`,style:{backgroundColor:`hsl(var(--metric-time))`}}),`To Next click`]}),(0,W.jsxs)(`span`,{className:`ml-auto`,children:[i4(i),` total`]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{"data-testid":`tour-insights-impatience`,className:`rounded-xl border border-border bg-card p-4`,children:[(0,W.jsx)(`p`,{className:`font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground`,children:`Impatience Score`}),(0,W.jsx)(`p`,{className:`mt-2 text-2xl font-black tracking-tight text-foreground`,children:a4(a)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o.length===0?`every countdown ran to zero`:`${o.length} early click${o.length===1?``:`s`}${o.length>1?` · worst ${a4(u)}`:``}`})]}),(0,W.jsxs)(`div`,{"data-testid":`tour-insights-reaction`,className:`rounded-xl border border-border bg-card p-4`,children:[(0,W.jsx)(`p`,{className:`font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground`,children:`Reaction Time`}),(0,W.jsx)(`p`,{className:`mt-2 text-2xl font-black tracking-tight text-foreground`,children:s.length>0?a4(c):`—`}),(0,W.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[s.length,` click`,s.length===1?``:`s`,s.length>1?` · slowest ${a4(l)}`:``]})]})]})]})}var c4=864e5;function l4(e){let t=new Date(e);return Math.round(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/c4)}function u4(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 d4=864e5;function f4(e){return Math.round(e*10)/10}function p4(e,t,n=9){let r=new Date(e-t*d4);return r.setHours(n,0,0,0),r.getTime()}function m4(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:q.Label,value:t,origin:`analyzed`},{type:q.Metric,value:n,unit:r,origin:`analyzed`,metadata:o}],sourceBlockKey:``,stackLevel:0})}var h4=new Set([`tis`,`calc.acwr`,`calc.adherence`,`calc.ef`,`calc.pct1rm`]);function g4(e,t){return m_(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`||!h4.has(n)||typeof t.value!=`number`?e:{...e,reducerStats:{observedCount:1,sum:t.value,min:t.value,max:t.value}}})}function _4(e=Date.now()){let t=[],n=new Map,r=[],i=[],a=(e,t)=>{let r=l4(e);n.set(r,(n.get(r)??0)+t)};for(let n=0;n<16;n++){let o=(15-n)*7+1,s=p4(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`};m4(r,`Total reps`,t.reps,`reps`,`totalReps`,n),m4(r,`Training intensity score`,t.tis,`pts`,`tis`,n),m4(r,`Total volume`,e,`kg`,`totalVolume`,n),m4(r,`Estimated 1RM`,f4(t.top*(1+t.reps/30)),`kg`,`calc.e1rm`,n),m4(r,`%1RM intensity`,f4(100/(1+t.reps/30)),`%`,`calc.pct1rm`,n)}let c=f4(i/100+13+o/10);m4(r,`Session load`,c,`AU`,`sessionLoad`,{discipline:`strength`,intensityTier:`high`}),t.push(...g4(r,{noteId:`example-strength-w${n}`,resultId:`example-strength-w${n}-r`,blockContentId:`example-content-strength`,timestamp:s})),a(s,c)}let c=p4(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};m4(e,`Total reps`,n,`reps`,`totalReps`,o),m4(e,`Training intensity score`,f4(n*i),`pts`,`tis`,o),a&&m4(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};m4(e,`Total reps`,o,`reps`,`totalReps`,s),m4(e,`Training intensity score`,f4(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};m4(e,`Total reps`,n,`reps`,`totalReps`,a),m4(e,`Training intensity score`,f4(n*i),`pts`,`tis`,a)}}let i=f4(30.6);m4(e,`Session load`,i,`AU`,`sessionLoad`,{intensityTier:r}),t.push(...g4(e,{noteId:`example-conditioning-w${n}`,resultId:`example-conditioning-w${n}-r`,blockContentId:`example-content-conditioning`,timestamp:c})),a(c,i)}let l=p4(e,o+4,8);if(n%4==1)r.push(l4(l));else{let e=6e3+100*n,r=f4(e/2.8),o=[],s={effortSlug:`running`,discipline:`running`,intensityTier:`low`};m4(o,`Total distance`,e,`m`,`totalDistance`,s),m4(o,`Elapsed time`,r,`s`,`elapsed`,s),m4(o,`Training intensity score`,r,`pts`,`tis`,s);let c=f4(r/10);m4(o,`Session load`,c,`AU`,`sessionLoad`,{intensityTier:`low`}),t.push(...g4(o,{noteId:`example-run-w${n}`,resultId:`example-run-w${n}-r`,blockContentId:`example-content-run`,timestamp:l})),a(l,c),i.push({day:l4(l),pace:e/r})}let u=p4(e,o+6,10);{let e=4e3+50*n,r=f4(e/2),i=[],o={effortSlug:`rowing`,discipline:`rowing`,intensityTier:`moderate`};m4(i,`Total distance`,e,`m`,`totalDistance`,o),m4(i,`Elapsed time`,r,`s`,`elapsed`,o),m4(i,`Training intensity score`,r,`pts`,`tis`,o);let s=f4(r/10);m4(i,`Session load`,s,`AU`,`sessionLoad`,{intensityTier:`moderate`}),t.push(...g4(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*d4);return n.setHours(t,0,0,0),n.getTime()},c=(e,n,r)=>{let i=[];for(let[e,t,n]of r)m4(i,e,t,n,e);t.push(...g4(i,{noteId:`example-calc`,resultId:e,blockContentId:`example-content-calc`,timestamp:n}))};for(let e of u4(n,o))e.acwr!==void 0&&c(`example-calc-d${e.day}`,s(e.day),[[`calc.acwr`,f4(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`,f4(l),`AU`],[`calc.atl`,f4(u),`AU`],[`calc.tsb`,f4(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`,f4(e.pace/141*1e5),`pts`]]);return t}function v4(e=Date.now()){return new tv(Qv(_4(e)))}var y4=null;function b4(){return y4??=v4()}var x4=[4,8,16],S4={parse(e){let t=Number.parseInt(e,10);return x4.includes(t)?t:null},serialize(e){return String(e)},withDefault(e){return{...this,defaultValue:e}}};function C4(){return fn(`weeks`,S4.withDefault(16))}function w4(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 T4=[{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}],E4=300;function D4({open:e,...t}){return e?(0,W.jsx)(O4,{...t}):null}function O4({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,U.useState)(n),[_,v]=(0,U.useState)(r?.title??``),[y,b]=(0,U.useState)(r?.question??``),[x,S]=(0,U.useState)(r?.type||`table`),[C,w]=(0,U.useState)({spanCols:r?.spanCols,spanFull:r?.spanFull}),[T,E]=(0,U.useState)(Object.entries(r?.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `)),[D,O]=(0,U.useState)(!1),[k,A]=(0,U.useState)(()=>!X(n).error),[j,M]=(0,U.useState)(null),N=(0,U.useMemo)(()=>X(h.trim()),[h]),P=x===``?`table`:x,F=!N.error&&h.trim()!==``&&(ah(N)?P===`table`||P===`list`:P!==`list`),[I,L]=(0,U.useState)({status:`idle`}),R=(0,U.useRef)(0);(0,U.useEffect)(()=>{if(!F||!o){L(e=>e.status===`ok`?e:{status:`idle`});return}let e=Tv(h.trim(),u??{});if(e.missing.length>0){L({status:`blocked`,message:gv(e.missing)});return}let t=++R.current;L({status:`loading`});let n=setTimeout(()=>{o.runQuery(e.query,{rangeStart:s,rangeEnd:c,preferredUnit:l}).then(e=>{R.current===t&&L({status:`ok`,result:e})}).catch(e=>{R.current===t&&L({status:`error`,message:e instanceof Error?e.message:String(e)})})},E4);return()=>clearTimeout(n)},[h,F,o,s,c,l,u]);let ee=!F&&I.status===`ok`,z=F&&k,te=async()=>{if(!(!z||!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:w4(T)}),e()}catch(e){M(e instanceof Error?e.message:String(e))}finally{O(!1)}}};return(0,W.jsx)(LC,{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,W.jsxs)(W.Fragment,{children:[f,(0,W.jsx)(`div`,{className:`flex-1`}),!m&&(0,W.jsxs)(W.Fragment,{children:[(0,W.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,W.jsx)(`button`,{type:`button`,"data-testid":`widget-composer-apply`,disabled:!z||D,title:N.error?N.error:void 0,onClick:()=>void te(),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,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i!==void 0&&(0,W.jsxs)(`section`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Dataset — the subset`}),i?(0,W.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,W.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,W.jsxs)(`section`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Calculation`}),m?(0,W.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,W.jsx)(aT,{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,W.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,W.jsxs)(`label`,{className:`mt-3 flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Visualization`}),(0,W.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:fv.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))})]})]}),!m&&(0,W.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,W.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Title`}),(0,W.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,W.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Coaching question `,(0,W.jsx)(`span`,{className:`normal-case font-normal`,children:`(optional)`})]}),(0,W.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,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Size`}),(0,W.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1 self-start`,children:T4.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,W.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,W.jsxs)(`label`,{className:`flex flex-col gap-1 sm:col-span-2`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Parameters `,(0,W.jsx)(`span`,{className:`normal-case font-normal`,children:`(goal targets, space-separated)`})]}),(0,W.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,W.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs text-muted-foreground`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Title`}),(0,W.jsx)(`div`,{className:`text-foreground`,children:r?.title||`—`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Question`}),(0,W.jsx)(`div`,{className:`text-foreground`,children:r?.question||`—`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Type`}),(0,W.jsx)(`div`,{className:`font-mono text-foreground`,children:x||`table`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Size`}),(0,W.jsx)(`div`,{className:`font-mono text-foreground`,children:r?.spanFull?`full row`:r?.spanCols?`${r.spanCols} cols`:`default`})]})]}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5 flex items-center gap-2`,children:[`Preview`,ee&&(0,W.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,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3 h-56 overflow-hidden`,children:[I.status===`idle`&&(F?(0,W.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Preview runs as you compose…`}):(0,W.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:ah(N)?`find: queries return things — use a table or list widget instead`:`Compose a calculation to preview.`})),I.status===`loading`&&(0,W.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Running preview…`}),I.status===`blocked`&&(0,W.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,W.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,W.jsx)(KS,{type:x,result:I.result,label:_.trim()||void 0,unit:l,attributes:w4(T)})]})]}),j&&(0,W.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 k4({boardSlug:e}){let t=b4(),n=_k(),r=(0,U.useMemo)(()=>n?lF(n):[],[n]),i=(0,U.useMemo)(()=>r.find(t=>t.slug===e)??r[0],[r,e]),a=(0,U.useMemo)(()=>{if(!i?.rawContent)return null;try{let{meta:e,sections:t}=Pv(i.rawContent);return Ov(t,e)}catch{return null}},[i]),[o,s]=C4(),[c,l]=(0,U.useMemo)(()=>{let e=Date.now();return[e-o*7*864e5,e]},[o]),[u,d]=(0,U.useState)(null);return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col`,"data-testid":`tour-session-dashboard`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 px-5 pt-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate text-[11px] font-semibold uppercase tracking-wide text-primary`,children:i?.title??e}),(0,W.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,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(cC,{weeks:o,onWeeksChange:s})})]}),(0,W.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,W.jsx)(sC,{document:a,executor:t,onInspectWidget:d,rangeStart:c,rangeEnd:l}):(0,W.jsx)(`p`,{className:`pt-8 text-center text-sm text-muted-foreground`,children:`Loading board…`})}),(0,W.jsx)(D4,{open:u!==null,onClose:()=>d(null),mode:`inspect`,initialWql:u?.body??`sum:totalVolume{}`,initial:u?{title:u.title,question:u.question,type:u.type,spanCols:u.spanCols,spanFull:u.spanFull,attributes:u.attributes}:void 0,executor:t,rangeStart:c,rangeEnd:l,tokenValues:a?Sv(a.tokens):void 0,onApply:void 0})]})}var A4=[`analytics`,`boards`],j4={analytics:{index:`01`,heading:`h2`,title:`Session Insights`,blurb:`Run the workout and this window turns your run into data — rest vs. work, how fast you answered the clock, round by round.`},boards:{index:`02`,heading:`h2`,title:`One Run Becomes Many`,blurb:`Dashboards let you visualise your progress — every recorded run rolls up into analytics boards. Aggregate results across flexible search criteria, from note frontmatter to session metrics: one run becomes many insights.`}};function M4({scope:e}){let t=j4[e],n=t.heading;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(n,{className:`flex items-baseline gap-4 text-[clamp(26px,3.2vw,44px)] font-extrabold leading-[1.1] tracking-[-0.03em]`,children:[t.index&&(0,W.jsx)(`span`,{className:`font-mono text-xs font-normal tracking-normal text-muted-foreground`,children:t.index}),(0,W.jsx)(`span`,{children:t.title})]}),(0,W.jsx)(`p`,{className:`mt-3 max-w-xl text-[clamp(14px,1.2vw,18px)] leading-[1.65] text-muted-foreground`,children:t.blurb})]})}var N4=[{id:`road-to-560-total`,label:`Road to 560 Total`,title:`Road to 560 Total`},{id:`polarized-base-marathon`,label:`Polarized Base`,title:`Polarized Base Marathon`}];function P4({onClick:e}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,title:`Back to the editor`,"data-testid":`tour-pane-back-to-editor`,className:`flex shrink-0 items-center gap-1 rounded-md border border-border px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:[(0,W.jsx)(_e,{className:`size-3`}),`Editor`]})}function F4({session:e,onRun:t,onBackToEditor:n}){let[r,i]=(0,U.useState)(`analytics`),[a,o]=(0,U.useState)(0),s=N4[a],c=(0,U.useRef)(new Map);(0,U.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=t.target.getAttribute(`data-scope`);(e===`analytics`||e===`boards`)&&i(e)}},{rootMargin:`-45% 0px -45% 0px`});return c.current.forEach(t=>e.observe(t)),()=>e.disconnect()},[]);let l=e=>t=>{t?c.current.set(e,t):c.current.delete(e)},u=r=>r===`analytics`?(0,W.jsx)(BJ,{title:`Session Insights`,className:`h-[460px]`,headerActions:(0,W.jsx)(P4,{onClick:n}),children:(0,W.jsx)(s4,{result:e,onRun:t})}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsx)(`div`,{role:`tablist`,"aria-label":`Dashboard slides`,className:`flex flex-wrap gap-1 rounded-lg border border-border bg-muted/30 p-1`,children:N4.map((e,t)=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":a===t,"data-testid":`dashboard-slide-tab-${e.id}`,onClick:()=>o(t),className:G(`min-h-11 rounded-md px-3 py-1.5 text-xs font-semibold transition-colors`,a===t?`bg-background text-foreground shadow`:`text-muted-foreground hover:text-foreground`),children:e.label},e.id))}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>(e+N4.length-1)%N4.length),"aria-label":`Previous dashboard`,"data-testid":`dashboard-slide-prev`,className:`flex size-11 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,W.jsx)(An,{className:`size-4`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>(e+1)%N4.length),"aria-label":`Next dashboard`,"data-testid":`dashboard-slide-next`,className:`flex size-11 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,W.jsx)(Lt,{className:`size-4`})})]})]}),(0,W.jsx)(BJ,{title:s.title,className:`min-h-0 flex-1`,headerActions:(0,W.jsx)(P4,{onClick:n}),children:(0,W.jsx)(`div`,{className:`flex h-full w-full flex-col`,role:`tabpanel`,children:(0,W.jsx)(k4,{boardSlug:s.id})},s.id)}),(0,W.jsxs)(`p`,{className:`text-center font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground`,children:[a+1,` / `,N4.length]})]}),d=(0,W.jsx)(`div`,{"data-testid":`tour-sticky-pane`,className:`sticky top-[104px] flex h-[calc(100dvh-104px)] flex-col items-center justify-center self-start`,children:(0,W.jsx)(`div`,{className:`relative w-full max-w-[700px]`,children:(0,W.jsx)(`div`,{className:`relative h-[460px]`,children:A4.map(e=>(0,W.jsx)(`div`,{"aria-hidden":r!==e,"data-scope-active":r===e,className:G(`absolute inset-0 transition-opacity duration-500`,r===e?`opacity-100`:`invisible opacity-0`),children:u(e)},e))})})}),f=(e,t)=>(0,W.jsx)(`div`,{ref:l(e),"data-scope":e,className:`flex min-h-[85vh] flex-col justify-center scroll-mt-[104px]`,...t,children:(0,W.jsx)(M4,{scope:e})}),p=e=>(0,W.jsxs)(`div`,{"data-testid":`tour-step-mobile-${e}`,"data-scope":e,className:`flex flex-col gap-4`,children:[(0,W.jsx)(M4,{scope:e}),(0,W.jsx)(`div`,{className:`h-[460px]`,children:u(e)})]}),m=HH();return(0,W.jsx)(`section`,{id:`tour-section-insights`,"data-testid":`tour-section-insights`,className:`border-b border-border/60`,children:m?(0,W.jsxs)(`div`,{className:`flex flex-col gap-12 px-5 py-14`,children:[p(`analytics`),p(`boards`)]}):(0,W.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-10 px-5 py-14 lg:grid-cols-2 lg:gap-16 lg:px-12 lg:py-0 xl:px-16 2xl:max-w-[1720px]`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col`,children:[(0,W.jsx)(`div`,{id:`tour-scroll-target-insights`,className:`scroll-mt-[104px]`,children:f(`analytics`)}),f(`boards`,{id:`tour-section-boards`,"data-testid":`tour-section-boards`})]}),d]})})}function I4(e){switch(e.phase){case`checking`:return`Checking the seed…`;case`fetching`:return`Downloading ${e.chunkId??`notebook`}…`;case`applying`:return`Importing ${e.chunkId??`notebook`}…`;case`committed`:return`Committed ${e.chunkId??`notebook`}`;case`finalizing`:return`Finalizing checkpoints…`;case`finished`:return`Done`;default:return e.phase}}function L4(e){if(!e||e.phase===`checking`||e.phase===`finished`)return null;let t=[];return typeof e.completedRecords==`number`&&typeof e.totalRecords==`number`&&t.push(`${e.completedRecords} / ${e.totalRecords} records`),e.totalChunks>0&&t.push(`${e.completedChunks} / ${e.totalChunks} notebooks`),t.length>0?t.join(` · `):null}function R4(e){let t=e.match(/^notebook\.(.+)$/);return t?{slug:t[1]}:null}function z4(e){let t=e.items.map(e=>e.date).filter(e=>!!e).sort();return{packageId:`local-notebooks-${e.id}`,slug:e.id,label:e.name,description:e.description,image:e.image,categories:e.categories,sourceLabel:`Local`,href:`/notebook/${encodeURIComponent(e.id)}`,itemCount:e.items.length,...t.length>0?{latestDate:t[t.length-1],firstDate:t[0]}:{},...e.readme===void 0?{}:{readme:e.readme},installed:!0}}function B4(e,t,n){let r=[],i=new Map;if(t)for(let e of YO(`notebooks`,t))i.set(e.id,e),r.push(z4(e));let a=e.map(e=>{let t=R4(e.chunkId);if(!t)return null;let r=i.get(t.slug),a=UA(e.feedId),o=(r?.items??[]).map(e=>e.date).filter(e=>!!e).sort();return{packageId:e.id,feedId:e.feedId,chunkId:e.chunkId,slug:t.slug,label:e.label,description:e.description||r?.description,image:r?.image,categories:r?.categories??[],sourceLabel:a?.label??e.feedId,...a?.repositoryUrl?{repositoryUrl:a.repositoryUrl}:{},href:`/notebook/${encodeURIComponent(t.slug)}`,itemCount:r?.items.length??0,...o.length>0?{latestDate:o[o.length-1],firstDate:o[0]}:{},...r?.readme===void 0?{}:{readme:r.readme},installed:!!r,subscribed:!n||n(e.feedId,e.chunkId)}}).filter(e=>e!==null),o=new Set(a.map(e=>e.slug));return[...a,...r.filter(e=>!o.has(e.slug)),...V4(t)]}function V4(e){return Aa.filter(e=>e.feedEntryId===`core`&&e.slug!==`guides`&&typeof e.seedChunkId==`string`).map(t=>{let n=`markdown/${t.slug}/`,r=e?Object.keys(e).filter(e=>e.startsWith(n)&&e.endsWith(`.md`)&&!e.endsWith(`/README.md`)):[];return{packageId:`core-${t.slug}`,feedId:`core`,chunkId:t.seedChunkId,slug:t.slug,label:t.name,description:t.description,categories:[],sourceLabel:`Core`,href:t.href,itemCount:r.length,installed:e?r.length>0:!1,subscribed:!0}})}function H4(e,t){let n={},r=[],i=new Set(t.map(e=>e.id));for(let t of e)t.feedId&&i.has(t.feedId)?(n[t.feedId]??=[]).push(t):r.push(t);let a=[];for(let e of t){let t=n[e.id];t?.length&&a.push({feed:e,label:e.label,...e.description?{description:e.description}:{},url:e.url,...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},notebooks:t})}return r.length>0&&a.push({label:`Local`,notebooks:r}),a}function U4(e,t,n,r){return H4(B4(e,t,r),n).map(e=>{let t=e.notebooks.map(e=>e.latestDate).filter(e=>!!e).sort();return{feedId:e.feed?.id,slug:e.feed?.id??`local`,label:e.label,...e.description?{description:e.description}:{},...e.url?{url:e.url}:{},...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},notebooks:e.notebooks,itemCount:e.notebooks.reduce((e,t)=>e+t.itemCount,0),installed:e.notebooks.every(e=>e.installed),subscribed:e.notebooks.some(e=>e.subscribed),...t.length>0?{latestDate:t[t.length-1]}:{},href:`/notebooks`}})}function W4(e,t){let n=t.text?.trim().toLowerCase();return e.filter(e=>t.feedId&&e.feedId!==t.feedId||t.subscribedOnly&&!e.notebooks.some(e=>e.subscribed)?!1:!n||e.label.toLowerCase().includes(n)||(e.description?.toLowerCase().includes(n)??!1)||e.notebooks.some(e=>e.label.toLowerCase().includes(n)||(e.description?.toLowerCase().includes(n)??!1)))}function G4(e,t){let n=[...e];switch(t){case`name`:return n.sort((e,t)=>e.label.localeCompare(t.label));case`size`:return n.sort((e,t)=>t.itemCount-e.itemCount||e.label.localeCompare(t.label));default:return n.sort((e,t)=>e.latestDate&&t.latestDate?t.latestDate.localeCompare(e.latestDate):e.latestDate?-1:t.latestDate?1:e.label.localeCompare(t.label))}}var K4=[`bg-rose-500/12 text-rose-600 dark:text-rose-400`,`bg-amber-500/12 text-amber-600 dark:text-amber-400`,`bg-emerald-500/12 text-emerald-600 dark:text-emerald-400`,`bg-sky-500/12 text-sky-600 dark:text-sky-400`,`bg-violet-500/12 text-violet-600 dark:text-violet-400`,`bg-cyan-500/12 text-cyan-600 dark:text-cyan-400`];function q4(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return K4[Math.abs(t)%K4.length]}function J4(e){return(e.match(/[a-z0-9]/i)?.[0]??`•`).toUpperCase()}function Y4(e){if(!e)return null;let t=new Date(`${e}T00:00:00`);return isNaN(t.getTime())?null:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`})}var X4=4;function Z4({feed:e,testId:t=`feed-card`,className:n,onImport:r,importing:i,busy:a,status:o,onToggleNotebookSubscription:c}){let[l,u]=q4(e.slug).split(` `),d=Y4(e.latestDate),f=e.notebooks.slice(0,X4),p=e.notebooks.length-f.length,m=e.installed&&e.feedId?e.href:void 0,h=e.notebooks.find(e=>e.image)?.image,g=(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[e.notebooks.length,` `,e.notebooks.length===1?`notebook`:`notebooks`]}),e.installed&&e.itemCount>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[e.itemCount,` `,e.itemCount===1?`item`:`items`]})]}),e.installed&&d&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[`updated `,d]})]}),!e.installed&&(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),!e.installed&&(0,W.jsx)(`span`,{children:`not imported`})]}),_=(0,W.jsx)(`div`,{className:G(`relative overflow-hidden bg-muted/40 aspect-[16/10]`,l),children:h?(0,W.jsx)(`img`,{src:h,alt:``,loading:`lazy`,className:`absolute inset-0 size-full object-cover`}):(0,W.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:[(0,W.jsx)(`span`,{className:G(`text-7xl font-black tracking-tighter select-none`,u),"aria-hidden":!0,children:J4(e.label)}),(0,W.jsx)(L,{className:G(`absolute bottom-4 right-4 size-6 opacity-50`,u),"aria-hidden":!0})]})});return(0,W.jsxs)(`article`,{"data-testid":t,"data-installed":e.installed,className:G(`group relative flex flex-col overflow-hidden rounded-2xl border border-border bg-card`,`transition-colors hover:border-foreground/25 focus-within:border-foreground/25`,n),children:[m?(0,W.jsx)(xt,{to:m,"data-testid":`${t}-open`,className:`block outline-none`,"aria-label":`Open the library for ${e.label}`,children:_}):_,(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col gap-2 p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,W.jsx)(`h3`,{className:`min-w-0 text-sm font-bold leading-snug text-foreground`,children:m?(0,W.jsx)(xt,{to:m,className:`transition-colors hover:text-primary`,children:e.label}):e.label}),m?(0,W.jsx)(xt,{to:m,"data-testid":`${t}-cta`,"aria-label":`Open the library for ${e.label}`,className:`flex min-h-11 min-w-11 size-11 shrink-0 items-center justify-center rounded-full border border-border text-muted-foreground transition-colors hover:border-primary/50 hover:text-primary`,children:(0,W.jsx)(on,{className:`size-3.5`,"aria-hidden":!0})}):r&&e.feedId?(0,W.jsxs)(`button`,{type:`button`,"data-testid":`${t}-import`,disabled:i||a,onClick:()=>r(e.feedId),className:G(`flex min-h-11 shrink-0 items-center gap-1.5 rounded-full border px-4`,`text-[10px] font-black uppercase tracking-widest`,`border-primary/30 bg-primary/10 text-primary`,`transition-colors hover:bg-primary/20`,`disabled:cursor-wait disabled:opacity-60`),children:[i?(0,W.jsx)(s,{className:`size-3 animate-spin`,"aria-hidden":!0}):(0,W.jsx)(Zt,{className:`size-3`,"aria-hidden":!0}),i?`Importing`:`Import feed`]}):null]}),e.description&&(0,W.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-muted-foreground`,children:e.description}),e.notebooks.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,"data-testid":`${t}-notebooks`,children:[f.map(n=>(0,W.jsxs)(`span`,{"data-testid":`${t}-notebook-${n.packageId}`,className:G(`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[9px] font-black uppercase tracking-widest transition-colors`,n.subscribed?`border-emerald-500/40 bg-emerald-500/10 text-emerald-800`:`border-border text-muted-foreground`),children:[n.installed?(0,W.jsx)(xt,{to:n.href,className:`hover:text-primary`,children:n.label}):(0,W.jsx)(`span`,{children:n.label}),c&&e.feedId&&n.chunkId&&(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.preventDefault(),t.stopPropagation(),c(e.feedId,n.chunkId,!n.subscribed)},title:n.subscribed?`Unsubscribe ${n.label}`:`Subscribe ${n.label}`,"aria-label":n.subscribed?`Unsubscribe ${n.label}`:`Subscribe ${n.label}`,"data-testid":`${t}-notebook-toggle-${n.packageId}`,className:`relative -my-3 -mr-2.5 ml-0.5 inline-flex min-h-11 min-w-11 items-center justify-center font-bold hover:text-foreground`,children:n.subscribed?`✓`:`+`})]},n.packageId)),p>0&&(0,W.jsxs)(`span`,{className:`rounded-full border border-dashed border-border px-2 py-0.5 text-[9px] font-black uppercase tracking-widest text-muted-foreground`,children:[`+`,p,` more`]})]}),(0,W.jsxs)(`div`,{className:`mt-auto pt-1`,children:[g,o&&(0,W.jsx)(`p`,{role:o.tone===`error`?`alert`:`status`,"data-testid":`${t}-status`,className:G(`mt-1.5 flex items-start gap-1.5 text-xs`,o.tone===`error`?`text-destructive`:`text-muted-foreground`),children:(0,W.jsx)(`span`,{children:o.text})})]})]})]})}function Q4({direction:e,children:t,testId:n,className:r}){let i=(0,U.useRef)(null),a=(0,U.useRef)(null),[o,s]=(0,U.useState)(1),c=LJ(`(prefers-reduced-motion: reduce)`);(0,U.useEffect)(()=>{let e=i.current,t=a.current;if(!e||!t)return;let n=()=>{let n=o*2,r=t.scrollWidth/n;if(r<=0)return;let i=Math.max(1,Math.ceil(e.clientWidth/r));i!==o&&s(i)};n();let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[o,t]);let l=c?1:o*2;return(0,W.jsx)(`div`,{ref:i,"data-testid":n,className:G(`wod-marquee overflow-hidden`,r),children:(0,W.jsx)(`div`,{ref:a,className:G(`flex w-max`,!c&&`wod-marquee-track`,!c&&e===`left`&&`wod-marquee-track--left`,!c&&e===`right`&&`wod-marquee-track--right`,!c&&e===`alternate`&&`wod-marquee-track--left wod-marquee-track--alternate`),children:Array.from({length:l},(e,n)=>(0,W.jsx)(`div`,{"data-marquee-copy":n,"aria-hidden":n>0,inert:n>0,className:`flex shrink-0 items-stretch gap-4 pr-4`,children:t},n))})})}var $4=[{value:`updated`,label:`Updated`},{value:`name`,label:`Name`},{value:`size`,label:`Size`}],e3=`group flex flex-col justify-between rounded-2xl 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 t3(e){let t=e.icon;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,W.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),(0,W.jsx)(`h3`,{className:`mt-4 text-base font-semibold text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.description})]}),e.note?(0,W.jsx)(`span`,{className:`mt-4 text-xs font-medium text-muted-foreground`,children:e.note}):(0,W.jsxs)(`span`,{className:`mt-4 inline-flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,W.jsx)(`span`,{children:e.action}),(0,W.jsx)(on,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]})]})}function n3(){let e=On(),[t,n]=(0,U.useState)(``),[r,i]=(0,U.useState)(`updated`),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)({}),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(),[p,m]=(0,U.useState)(0);(0,U.useEffect)(()=>lN(()=>m(e=>e+1)),[]);let h=a!==null,g=_k(),_=LJ(`(min-width: 1024px)`),v=(0,U.useMemo)(()=>U4(YA(),g,JA(),(e,t)=>oN(e,t)),[g,p]),y=(0,U.useMemo)(()=>G4(W4(v,{text:t,feedId:d,subscribedOnly:l}),r),[v,t,r,d,l]),b=Math.ceil(y.length/2),x=y.slice(0,b),S=y.slice(b),C=(0,U.useCallback)(()=>{Kj.record(qj.libraryOpened)},[]),[w,T]=(0,U.useState)(!0);(0,U.useEffect)(()=>{let e=!1,t=()=>{$N().then(t=>{e||T(t.libraryImported)}).catch(()=>{})};t();let n=lN(t);return()=>{e=!0,n()}},[h]);let E=(0,U.useCallback)(async e=>{if(a)return;o(e);let t=t=>c(n=>({...n,[e]:t}));t({text:`Checking the feed…`,tone:`muted`});try{let n=await JN(e,{onProgress:e=>t({text:I4(e),tone:`muted`})});t(n===`imported`||n===`current`?{text:aN(e,!0)?n===`imported`?`Imported — this feed is available offline.`:`Already up to date.`:`Subscribed for this session only — browser storage is unavailable.`,tone:`muted`}:{text:n===`server-stale`?`Published version is older than stored copy.`:n===`busy`?`Another tab is syncing. Try again shortly.`:`Sync failed. Check connection and try again.`,tone:`error`})}catch(e){t({text:e instanceof Error?e.message:String(e),tone:`error`})}finally{o(null)}},[a]),D=(0,U.useCallback)(async(e,t,n)=>{sN(e,t,n),n&&JN(e,{force:!1})},[]),O=(0,U.useCallback)(async()=>{let t=gF(),n=await SF.create({journalDate:t,title:t,rawContent:``});Kj.record(qj.noteCreated),e(HP(n.id))},[e]),k=!!t.trim();return(0,W.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,W.jsx)(l1,{index:`03`,before:`Library & `,accentText:`Community Feeds`,after:``,accent:``,blurb:`Subscribe to a feed — one Markdown repository compiled with npx wod build into a versioned manifest, served from its own GitHub Pages. One Subscribe imports every notebook the feed publishes; browse the feeds below, notebooks and all.`}),(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`label`,{className:`relative w-full sm:w-64`,children:[(0,W.jsx)(kn,{className:`pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground/60`,"aria-hidden":!0}),(0,W.jsx)(`input`,{type:`search`,value:t,onChange:e=>n(e.target.value),placeholder:`Search feeds…`,"aria-label":`Search feeds`,"data-testid":`package-search-input`,className:`h-11 w-full rounded-full border border-border bg-background pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground outline-none transition-colors focus:border-primary/50`}),t&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(``),"aria-label":`Clear search`,className:`absolute right-0 top-1/2 -translate-y-1/2 size-11 inline-flex items-center justify-center text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(Sr,{className:`size-3.5`})})]}),(0,W.jsxs)(`label`,{className:`flex min-h-11 items-center gap-2 cursor-pointer select-none text-muted-foreground hover:text-foreground px-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:l,onChange:e=>u(e.target.checked),"data-testid":`filter-subscribed-only`,className:`size-4 accent-primary rounded`}),(0,W.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-widest`,children:`Subscribed only`})]}),(0,W.jsxs)(`select`,{value:d??``,onChange:e=>f(e.target.value?e.target.value:void 0),"aria-label":`Filter by feed`,"data-testid":`filter-feed-source`,className:`min-h-11 h-11 rounded-full border border-border bg-background px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground outline-none transition-colors hover:border-foreground/25 focus:border-primary/50`,children:[(0,W.jsx)(`option`,{value:``,children:`All feeds`}),JA().map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))]}),(0,W.jsx)(`div`,{className:`ml-auto flex items-center gap-1.5`,role:`group`,"aria-label":`Sort feeds`,children:$4.map(e=>{let t=r===e.value;return(0,W.jsx)(`button`,{type:`button`,"aria-pressed":t,"data-testid":`package-sort-${e.value}`,onClick:()=>i(e.value),className:G(`inline-flex min-h-11 items-center justify-center rounded-full px-3 text-[10px] font-black uppercase tracking-widest transition-colors`,t?`bg-foreground text-background`:`text-muted-foreground hover:text-foreground`),children:e.label},e.value)})})]}),(0,W.jsx)(`div`,{"data-testid":`jump-grid`,className:`mt-6`,children:(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2`,children:[w?(0,W.jsx)(xt,{to:`/notebooks`,onClick:C,"data-testid":`jump-library`,className:e3,children:(0,W.jsx)(t3,{icon:pe,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`})}):(0,W.jsx)(`div`,{"data-testid":`jump-library`,"aria-disabled":`true`,className:`${e3} cursor-not-allowed opacity-60`,children:(0,W.jsx)(t3,{icon:pe,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`,note:`0 feeds synchronized`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{O()},"data-testid":`jump-new-note`,className:e3,children:(0,W.jsx)(t3,{icon:fr,title:`Start your own journal`,description:`Create today's note and log your first workout.`,action:`Create today's note`})})]})})]}),(0,W.jsx)(`div`,{"data-testid":`jump-rows`,className:`mt-6`,children:y.length>0?_?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q4,{direction:`left`,testId:`jump-row-a`,children:x.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] sm:w-[320px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))}),S.length>0&&(0,W.jsx)(Q4,{direction:`right`,testId:`jump-row-b`,className:`mt-4`,children:S.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] sm:w-[320px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))})]}):(0,W.jsx)(Q4,{direction:`alternate`,testId:`jump-row-mobile`,children:y.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))}):(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:(0,W.jsxs)(`div`,{"data-testid":`jump-empty`,className:`flex flex-col items-center justify-center rounded-2xl border border-dashed border-border p-10 text-center`,children:[(0,W.jsx)(`p`,{className:`text-sm font-bold text-muted-foreground`,children:`No feeds match your search.`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Try a different term or clear the filters.`}),k&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`jump-clear-filters`,onClick:()=>{n(``),f(void 0),u(!1)},className:`mt-3 h-8 rounded-full border border-border px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground transition-colors hover:border-primary/50 hover:text-primary`,children:`Clear filters`})]})})}),(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:(0,W.jsx)(`p`,{className:`mt-4 font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground xl:text-[11px]`,children:`— or keep scrolling ↓`})})]})}var r3=`wods/examples/home/welcome-1.md`;function i3({wodFiles:e,theme:t,quests:n}){let r=LJ(`(prefers-reduced-motion: reduce)`),i=Jj()?.track;Xj(`/`);let a=(0,U.useMemo)(()=>zH(r3,e),[e]),[o,s]=(0,U.useState)(()=>x2()),c=o?.content??a,l=o?o.by?.trim()||`anonymous`:void 0;(0,U.useEffect)(()=>{let e=e=>{let t=e.detail;t?.content&&(s(t),d(t.content))};return window.addEventListener(`wodwiki:home-shared`,e),()=>window.removeEventListener(`wodwiki:home-shared`,e)},[]);let[u,d]=(0,U.useState)(c),f=(0,U.useRef)(u);f.current=u;let p=(0,U.useRef)([]),m=(0,U.useRef)(!1),{run:h,start:g,finalize:_,end:v}=wJ(),y=(0,U.useRef)(h);y.current=h;let b=(0,U.useRef)(!1),x=(0,U.useRef)(!1),S=(0,U.useRef)(null),[C,w]=(0,U.useState)(!1),T=(0,U.useRef)(!1),E=(0,U.useRef)(null),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),j=(0,U.useRef)(k);j.current=k;let M=(0,U.useRef)(!1),N=(0,U.useRef)(()=>{}),[P,F]=(0,U.useState)(0),[I,L]=(0,U.useState)(!1),[R,ee]=(0,U.useState)(!1),[z,te]=(0,U.useState)(null),ne=(0,U.useCallback)(async(e,t,n)=>{if(!t||M.current)return!1;M.current=!0,x.current=!1,b.current=!1,S.current=null,te(t),F(e=>e+1),L(!0),O(null),A(!0);try{await g(e,t,{pageTitle:`Home`,sectionTitle:n})}catch(e){return console.error(`[HomeTour] failed to persist playground run note:`,e),A(!1),te(null),Q({title:`Could not start workout`,description:`The playground entry could not be saved.`,variant:`destructive`}),!1}finally{M.current=!1}return!0},[g]),re=(0,U.useCallback)(async()=>{if(T.current=!1,w(!1),S.current)try{await _(S.current,!1),S.current=null}catch(e){console.error(`[HomeTour] retry save failed:`,e),Q({title:`Session still not saved`,description:`The run is kept — try again.`,variant:`destructive`});return}let e=E.current;if(E.current=null,e)switch(e.kind){case`apply-doc`:m.current=!1,d(e.doc),A(!1),te(null),F(e=>e+1),L(!1);break;case`restart`:await ne(e.doc,e.block,e.sectionTitle)}},[ne,_]),ie=(0,U.useCallback)(e=>{if(!E.current){if(!y.current||x.current||!b.current||S.current){E.current=e,re();return}E.current=e,T.current=!0,w(!0)}},[re]),ae=(0,U.useRef)(null),oe=(0,U.useRef)(null),se=(0,U.useRef)(null);t$(`hero`,se);let[ce,le]=(0,U.useState)(!1),B=(0,U.useRef)(ce);B.current=ce;let V=(0,U.useCallback)(()=>{let e=document.getElementById(`tour-section-editor`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,e.getBoundingClientRect().top+window.scrollY-n),behavior:r?`auto`:`smooth`})},[r]),ue=(0,U.useCallback)(()=>{le(!0),window.setTimeout(V,350)},[V]),de=(0,U.useCallback)(()=>{le(!1),window.scrollTo({top:0,behavior:r?`auto`:`smooth`})},[r]),fe=(0,U.useRef)(!1),pe=(0,U.useCallback)(()=>{ie({kind:`apply-doc`,doc:c})},[c,ie]);(0,U.useEffect)(()=>{let e=oe.current;if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{e.isIntersecting?fe.current&&!j.current&&(fe.current=!1,pe()):fe.current=!0});return t.observe(e),()=>t.disconnect()},[pe]);let me=(0,U.useCallback)(()=>{S2(),s(null),ie({kind:`apply-doc`,doc:a})},[a,ie]),he=(0,U.useCallback)(()=>{pe();let e=document.getElementById(`tour-section-editor`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,e.getBoundingClientRect().top+window.scrollY-n),behavior:r?`auto`:`smooth`})},[r,pe]);IJ({pageRoute:`/`,quests:n,initialSource:c,currentSource:u}),FJ({pageRoute:`/`,quests:n,completedResults:D}),N.current=E2(`/`,n),C2({pageRoute:`/`,quests:n,running:R}),(0,U.useEffect)(()=>{let e=document.getElementById(`tour-section-insights`);if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{e.isIntersecting&&N.current?.(`session-insights`)});return t.observe(e),()=>t.disconnect()},[]);let ge=(0,U.useCallback)(e=>{d(e),e!==c&&!m.current&&(m.current=!0,i?.(qj.demoEdited))},[c,i]),_e=(0,U.useCallback)(e=>{p.current=e},[]),ve=(0,U.useCallback)((e,t,n,r)=>{if(n){if(i?.(qj.demoRun),r&&ee(!0),te(n),A(!0),L(!0),F(e=>e+1),O(null),M.current||E.current){E.current={kind:`restart`,doc:t,block:n,sectionTitle:e};return}if(y.current&&b.current&&!x.current){E.current={kind:`restart`,doc:t,block:n,sectionTitle:e},T.current=!0,w(!0);return}if(y.current&&!x.current){v().then(()=>ne(t,n,e));return}ne(t,n,e)}},[ne,v,i]),ye=(0,U.useCallback)(()=>{ve(`Run`,f.current,p.current[0],!0)},[ve]),be=(0,U.useCallback)(()=>{let e=()=>{let e=document.getElementById(`tour-section-insights`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY,i=Math.max(0,e.getBoundingClientRect().top+window.scrollY-n);window.scrollTo({top:i,behavior:r?`auto`:`smooth`})};if(B.current){e();return}le(!0),window.setTimeout(e,350)},[r]),xe=(0,U.useCallback)((e,t)=>{if(!(x.current&&!S.current))return(t.logs??[]).length===0?(x.current=!0,O(t),A(!1),be(),re()):(x.current=!0,_(t,t.completed).then(()=>{if(S.current=null,O(t),T.current||E.current)return A(!1),re()}).catch(e=>{throw x.current=!1,b.current=!1,S.current=t,T.current=!1,w(!1),E.current=null,Q({title:`Session not saved`,description:`The run could not be recorded. Nothing was lost — your next action retries the save.`,variant:`destructive`}),e}))},[_,re,be]),Se=(0,U.useCallback)(()=>{A(!1),be()},[be]),Ce=(0,U.useRef)(null),we=(0,U.useCallback)(e=>{Ce.current=e},[]),Te=(0,U.useCallback)(()=>{b.current=!0;let e=Ce.current;I&&e&&e.handle(new tm(void 0,e.nowProvider)),L(!1)},[I]),{setL3Items:Ee}=IP(),De=(0,U.useMemo)(()=>[{id:`tour-hero`,label:`Welcome`,level:3,action:{type:`scroll`,sectionId:`tour-hero`}},{id:`editor`,label:`Live Preview`,level:3,action:{type:`scroll`,sectionId:`tour-section-editor`}},{id:`insights`,label:`Session Insights`,level:3,action:{type:`scroll`,sectionId:`tour-section-insights`},secondaryAction:{id:`run-start`,label:`Run the workout`,action:{type:`call`,handler:ye}}},{id:`boards`,label:`One Run Becomes Many`,level:3,action:{type:`scroll`,sectionId:`tour-section-boards`}},{id:`community-feeds`,label:`Library & Community Feeds`,level:3,action:{type:`scroll`,sectionId:`tour-section-community-feeds`}},{id:`offerings`,label:`Who owns the Data?`,level:3,action:{type:`scroll`,sectionId:`tour-section-offerings`}},{id:`university`,label:`Wod Wiki University`,level:3,action:{type:`scroll`,sectionId:`tour-section-university`}}],[ye]);(0,U.useEffect)(()=>(Ee(De),()=>Ee([])),[Ee,De]),O2((0,U.useMemo)(()=>De.map(e=>e.action.type===`scroll`?e.action.sectionId:e.id),[De]));let Oe=h?.block??z,ke=k&&Oe&&(0,W.jsx)(fQ,{block:Oe,resultId:h?.resultId,autoStart:I,externalStop:C,onRunStarted:Te,onRuntimeReady:we,onClose:Se,onCompleteWorkout:xe},P),Ae=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(t4,{}),(0,W.jsxs)(`p`,{className:`-mt-8 text-center font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground xl:text-[11px]`,children:[`— or learn the language with examples`,` `,(0,W.jsx)(xt,{to:`/syntax`,className:`text-foreground underline underline-offset-4 transition-colors hover:text-primary`,children:`on the syntax page →`})]})]}),je=(0,W.jsx)(n$,{gateId:`editor-pane`,segmentId:`hero`,className:`w-full max-w-[720px] xl:max-w-[820px] 2xl:max-w-[920px]`,children:(0,W.jsx)(BJ,{title:l?l.toLowerCase().startsWith(`shared by`)?l:`shared by: ${l}`:`welcome-1.md`,headerActions:l&&(0,W.jsx)(`button`,{type:`button`,onClick:me,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-[540px] lg:h-[600px] 2xl:h-[640px]`,children:(0,W.jsx)(n4,{doc:u,theme:t,onDocChange:ge,onBlocksChange:_e,onRun:ye})})}),Me=(0,W.jsx)(`div`,{id:`tour-why-video-wrap`,"aria-hidden":ce,className:G(`grid w-full transition-all duration-300 motion-reduce:transition-none`,ce?`grid-rows-[0fr] opacity-0 invisible`:`grid-rows-[1fr] opacity-100`),children:(0,W.jsx)(`div`,{className:`min-h-0 overflow-hidden`,children:(0,W.jsx)(L2,{onWatched:ue})})}),Ne=(0,W.jsxs)(`div`,{ref:oe,id:`tour-section-editor`,"data-testid":`tour-section-editor`,className:`flex w-full flex-col items-center px-5 py-8 text-center lg:px-10 xl:py-10 2xl:px-16`,children:[ce&&(0,W.jsxs)(`button`,{type:`button`,onClick:de,"data-testid":`tour-why-watch-again`,className:`inline-flex items-center gap-1.5 rounded-t-lg border border-b-0 border-border bg-muted/40 px-3 py-1.5 font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground transition-colors hover:text-foreground`,children:[(0,W.jsx)(gr,{className:`size-3`}),`Watch again`]}),je]});return r?(0,W.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,W.jsxs)(`section`,{id:`tour-hero`,"data-testid":`tour-hero`,className:`flex flex-col items-center gap-5 px-6 py-6 text-center`,children:[(0,W.jsx)(F2,{}),Me,Ne]}),(0,W.jsx)(F4,{session:D,onRun:ye,onBackToEditor:he}),(0,W.jsx)(n3,{}),Ae,(0,W.jsx)(g1,{variant:`university`}),(0,W.jsx)(z2,{}),ke]}):(0,W.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,W.jsx)(`div`,{ref:ae,"aria-hidden":!0,className:`h-px`}),(0,W.jsxs)(`section`,{ref:se,id:`tour-hero`,"data-testid":`tour-hero`,className:`relative flex min-h-[calc(100dvh-65px)] flex-col items-center justify-center gap-5 px-5 py-6 text-center lg:min-h-[calc(100dvh-104px)] lg:px-10 xl:gap-7 xl:py-8 2xl:px-16`,children:[(0,W.jsx)(F2,{}),Me,Ne]}),(0,W.jsx)(F4,{session:D,onRun:ye,onBackToEditor:he}),(0,W.jsx)(n3,{}),Ae,(0,W.jsx)(g1,{variant:`university`}),(0,W.jsx)(z2,{}),ke]})}function a3(e){return(0,W.jsx)(A2,{children:(0,W.jsx)(e$,{children:(0,W.jsx)(i3,{...e})})})}function o3({wodFiles:e,theme:t}){let n=(0,U.useMemo)(()=>g2(e),[e]);return(0,U.useEffect)(()=>{bS(`homeFirstPaint`)},[]),(0,W.jsx)(a3,{wodFiles:n,theme:t,quests:m2.quests})}var s3=`idle`,c3=null,l3=new Set,u3=null,d3=null;function f3(){for(let e of l3)e()}function p3(e){typeof document>`u`||(document.documentElement.dataset.feedState=e)}function m3(e){typeof document>`u`||(e===null?delete document.documentElement.dataset.feedOutcome:document.documentElement.dataset.feedOutcome=e)}p3(s3);function h3(e){s3!==e&&(s3=e,p3(e),f3())}function g3(){u3&&=(clearTimeout(u3),null),d3&&=(d3.close(),null)}function _3(e){c3=e,f3()}function v3(){g3(),m3(null),c3!==null&&(c3=null,f3()),h3(`preparing`)}function y3(e){switch(m3(e),e){case`busy`:if(s3!==`preparing`)return;typeof BroadcastChannel<`u`&&!d3&&(d3=new BroadcastChannel(uy),d3.onmessage=e=>{e.data?.kind===`seed-imported`&&(g3(),h3(`ready`))}),u3=setTimeout(()=>{KN({onProgress:_3}).then(y3)},SN);break;case`error`:g3(),h3(`error`);break;default:g3(),h3(`ready`)}}function b3(){return s3===`idle`?`ready`:s3}function x3(){return c3}function S3(e){return l3.add(e),()=>l3.delete(e)}function C3(){return(0,U.useSyncExternalStore)(S3,b3)}function w3(){return(0,U.useSyncExternalStore)(S3,x3)}var T3=null;function E3(e={}){return bS(`feedStart`),T3??=D3(e).finally(()=>{bS(`feedSettled`)}),T3}async function D3(e){let t=t=>{_3(t),e.onProgress?.(t)},n=e.sources??DN();await iP(e).catch(e=>console.error(`[feedSync] notebook vocabulary migration failed`,e)),await nP(e).catch(e=>console.error(`[feedSync] checkpoint adoption failed`,e)),await pN(n,e.storage).catch(e=>console.error(`[feedSync] subscription migration failed`,e));let r=e.storage??WM(),i;try{i=await r.getSeedMeta(fy(`core`))}catch{i=void 0}let a=!i||i.seedVersion<=0;if(a?v3():y3(`current`),await rP(e).catch(e=>console.error(`[feedSync] feed provenance repair failed`,e)),a){y3(await KN({...e,sources:n,onProgress:t,onFirstPaint:()=>y3(`imported`)})),n.some(e=>e.id!==`core`&&iN(e.id))&&await KN({...e,sources:n,onProgress:t}).catch(e=>console.error(`[feedSync] background boot sync failed`,e));return}await KN({...e,sources:n,onProgress:t}).catch(e=>console.error(`[feedSync] background boot sync failed`,e))}function O3(){let[e,t]=(0,U.useState)(null);return(0,U.useEffect)(()=>{let e=!1,n=()=>{$N().then(n=>{e||t(!n.libraryImported)}).catch(()=>{e||t(!0)})};n();let r=aS(()=>n()),i=RN(()=>n()),a=null;if(typeof BroadcastChannel<`u`)try{a=new BroadcastChannel(uy),a.onmessage=()=>n()}catch{}return()=>{e=!0,r(),i(),a?.close()}},[]),e}function k3({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,U.useRef)(a),[c,l]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(a>s.current){l(!0);let e=setTimeout(()=>l(!1),200);return s.current=a,()=>clearTimeout(e)}s.current=a},[a]),(0,W.jsxs)(`div`,{className:G(`w-full`,r),children:[n?(0,W.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,W.jsx)(`span`,{children:n}),(0,W.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[a,`/`,i]})]}):null,(0,W.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,W.jsx)(`div`,{className:G(`h-full rounded-pill transition-[width] duration-500 ease-out`,c?`bg-brand-deep`:`bg-brand`),style:{width:`${o}%`}})})]})}function A3(e,t,n){HU.getState().open({placeholder:`Craft the query…`,wql:{initialQuery:e,execute:t,onApply:n},sources:[OW()]})}function j3({query:e,onQueryChange:t,scopeOptions:n,execute:r,defaultQuery:i,compact:a=!1,className:o}){let s=(0,U.useCallback)(()=>A3(e,r,t),[e,r,t]);return a?(0,W.jsx)(`div`,{"data-testid":`stream-query-bar-dock`,className:G(`flex min-h-12 w-full items-stretch overflow-hidden rounded-xl border border-border bg-muted/40 shadow-xs`,o),children:(0,W.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,W.jsx)(kn,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,W.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,W.jsx)(Ot,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`})]})}):(0,W.jsx)(`div`,{"data-testid":`stream-query-bar`,className:G(`flex min-w-0 flex-1 items-center gap-1 text-xs`,o),children:(0,W.jsx)(aT,{query:e,onQueryChange:t,compact:!0,showDiagnostics:!1,preferredChoices:n,placeholder:`Filter or search…`,className:`min-w-0 flex-1`})})}function M3(e,t){let n=t??X(e);return n.error?null:n.groupBy?.length?n.groupBy.map(e=>String(e).toLowerCase()):null}function N3(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``)||`default`}function P3(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=F3(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 F3(e,t,n){let r=t.toLowerCase(),i=fW();if(r===`date`||r===`day`){let t=new Map,r=[],a=[];for(let i of e){let e=i.date??(i.sourceNotebook===`playground`&&i.createdAt&&i.createdAt>9466848e5?new Date(i.createdAt).toISOString().slice(0,10):null);if(n?.shelfVisible&&(e==null||i.kind===`note`&&!i.sourceNote))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:`Notebook Sessions`,entries:r});for(let e of o)s.push({id:`date-group-${e}`,key:e,label:e===i?`Today`:pW(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])}return bI(Array.from(t.entries()),`priority-then-alpha`,{priority:[`Strength`,`Gymnastics`,`Cardio`,`Running`,`Rowing`,`Weightlifting`]}).map(([e])=>e).map(e=>({id:`group-discipline-${N3(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 bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-origin-${N3(e)}`,key:e,label:e,entries:t}))}if(r===`source`||r===`notebook`){let t=new Map;for(let n of e){let e=n.sourceNotebook||`Other`,r=e.charAt(0).toUpperCase()+e.slice(1),i=t.get(r);i?i.push(n):t.set(r,[n])}return bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-source-${N3(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 bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-kind-${N3(e)}`,key:e,label:e,entries:t}))}if(r===`feed`){let t=new Map;for(let n of e){let e=n.feedId??(n.sourceNotebook===`journal`||n.sourceNotebook===`playground`?`local`:`core`),r=t.get(e);r?r.push(n):t.set(e,[n])}return bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-feed-${N3(e)}`,key:e,label:e===`local`?`Local`:e===`core`?`Core`:e,entries:t}))}if(!jm.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 bI(Array.from(t.entries()),`alpha-sink-last`,{sink:`Unassigned`}).map(([e,t])=>({id:`group-property-${N3(r)}-${N3(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 bI(Array.from(a.entries()),`alpha-sink-last`,{sink:`Untagged`}).map(([e,t])=>({id:`group-tag-${N3(e)}`,key:e,label:e,entries:t}))}var I3=[{id:UF.route,label:`Journal`,profile:UF,scopeChoices:HC,shortcuts:!0},{id:GF.route,label:`Notes`,profile:GF,scopeChoices:HC,shortcuts:!0},{id:WF.route,label:`Notebooks`,profile:WF,scopeChoices:HC,shortcuts:!0},{id:KF.route,label:`Feeds`,profile:KF,scopeChoices:HC,shortcuts:!0},{id:qF.route,label:`Pages`,profile:qF,scopeChoices:HC,shortcuts:!0},{id:JF.route,label:`Efforts`,profile:JF,scopeChoices:HC,shortcuts:!0},{id:YF.route,label:`Equipment`,profile:YF,scopeChoices:HC,shortcuts:!0},{id:XF.route,label:`Tags`,profile:XF,shortcuts:!0},{id:ZF.route,label:`Sessions`,profile:ZF,scopeChoices:HC,shortcuts:!0},{id:QF.route,label:`Playgrounds`,profile:QF,scopeChoices:HC,shortcuts:!0}],L3={id:`/dashboards`,label:`Dashboards`,systemDefaultWql:`:dashboard{}`},R3={id:wI,label:`Command palette`,systemDefaultWql:wW,scopeChoices:HC},z3=[...I3,L3,R3];function B3(e){return z3.find(t=>t.id===e)}function V3({className:e,...t}){return(0,W.jsx)(P,{"data-slot":`control`,...t,className:G(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,W.jsx)(`span`,{"aria-hidden":`true`,className:G(`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 H3=Object.fromEntries([...HC,...VC].map(e=>[e.value,e.label]));function U3({values:e,choices:t,labels:n,onChange:r,testPrefix:i,reorderable:a=!1}){let o=(t,n)=>{let i=[...e],a=t+n;if(a<0||a>=i.length)return;let o=i[t];i[t]=i[a],i[a]=o,r(i)};return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[e.length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map((t,s)=>(0,W.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,a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":`Move ${t} up`,"data-testid":`${i}-up-${t}`,disabled:s===0,onClick:()=>o(s,-1),className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,W.jsx)(_e,{className:`size-3`})}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Move ${t} down`,"data-testid":`${i}-down-${t}`,disabled:s===e.length-1,onClick:()=>o(s,1),className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,W.jsx)(tn,{className:`size-3`})})]}),(0,W.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,W.jsx)(Sr,{className:`size-3`})})]},t))}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.filter(t=>!e.includes(t.value)).map(t=>(0,W.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 W3({values:e,choices:t,onChange:n,testPrefix:r}){return(0,W.jsx)(U3,{values:e,choices:t,labels:H3,onChange:n,testPrefix:r,reorderable:!0})}function G3({values:e,onChange:t,testPrefix:n}){return(0,W.jsx)(U3,{values:e,choices:gI.map(e=>({value:e.id,label:e.label})),labels:Object.fromEntries(gI.map(e=>[e.id,e.label])),onChange:t,testPrefix:n,reorderable:!0})}function K3({label:e,enabled:t,onEnabledChange:n,testId:r,children:i}){return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:e}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`Custom`,(0,W.jsx)(V3,{checked:t,onChange:n,"data-testid":r})]})]}),i]})}function q3({shortcuts:e,icons:t,landingId:n,onEdit:r,onDelete:i,onCreate:a,error:o,testPrefix:s}){return(0,W.jsxs)(`div`,{className:`space-y-2`,"data-testid":`${s}-shortcuts`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Saved shortcuts`}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:a,"data-testid":`${s}-shortcut-new`,children:`New shortcut`})]}),e.map(e=>{let a=t[e.icon]??t.bookmark,o=e.to?`Opens ${e.to}`:e.wql||`Landing (no query)`;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border/50 px-2 py-1.5`,"data-testid":`${s}-shortcut-${e.id}`,children:[(0,W.jsx)(a,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`min-w-0 max-w-40 truncate text-xs font-medium`,children:e.label}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[10px] text-muted-foreground`,children:o}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Edit ${e.label}`,"data-testid":`${s}-shortcut-edit-${e.id}`,onClick:()=>r(e),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(dr,{className:`size-3`})}),!e.to&&e.id!==n&&(0,W.jsx)(`button`,{type:`button`,"aria-label":`Delete ${e.label}`,"data-testid":`${s}-shortcut-delete-${e.id}`,onClick:()=>i(e.id),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-destructive`,children:(0,W.jsx)(ne,{className:`size-3`})})]},e.id)}),o&&(0,W.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`${s}-shortcut-error`,children:o})]})}function J3(e){return{defaultWql:e.defaultWql??``,customScope:e.typeOptions!==void 0,scopeOptions:e.typeOptions??[],customGroupBy:e.groupByOptions!==void 0,groupByOptions:e.groupByOptions??[]}}function Y3(e){return{defaultWql:e.defaultWql.trim()||void 0,typeOptions:e.customScope?e.scopeOptions:void 0,groupByOptions:e.customGroupBy?e.groupByOptions:void 0}}function X3({surface:e,onSaved:t}){let n=UI(e.id),r=dL(e.id),[i,a]=(0,U.useState)(()=>J3(n)),[o,s]=(0,U.useState)(()=>n),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null);(0,U.useEffect)(()=>{a(J3(n)),s(n),l(null),d(null)},[n]);let m=e.profile?.defaultWql??e.systemDefaultWql??``,h=(()=>{let e=i.defaultWql.trim();return e?Gw(e).error??null:null})(),g=Y3(i),_=JSON.stringify(g)!==JSON.stringify(o),v=Object.values(o).some(e=>e!==void 0),y=[...o.invalidTypeOptions??[],...o.invalidGroupByOptions??[]],b=async()=>{if(!_)return;let n=i.defaultWql.trim();if(!(n&&Gw(n).error)){if(!await II(e.id,g)){l(`Save failed — storage is unavailable; the previous default still stands.`);return}l(null),s(FI(e.id)),t?.()}},x=async()=>{if(!await LI(e.id)){l(`Reset failed — storage is unavailable; the stored override still stands.`);return}l(null),s({}),a(J3({})),t?.()},S=async t=>{d(null),await aL(e.id,r.filter(e=>e.id!==t))||d(`Delete failed — storage is unavailable. Nothing was lost; the link remains.`)},C=e.scopeChoices??[],w=C.length>0;return(0,W.jsxs)(`div`,{className:`space-y-5`,"data-testid":`query-settings-panel`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Landing default query`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`System default: `,(0,W.jsx)(`span`,{className:`font-mono`,children:m})]}),(0,W.jsx)(`textarea`,{rows:2,value:i.defaultWql,onChange:e=>a({...i,defaultWql:e.target.value}),placeholder:m,"data-testid":`query-settings-wql`,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`}),h?(0,W.jsxs)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-settings-wql-error`,children:[`Couldn't parse — `,h]}):!i.defaultWql.trim()&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Empty — the system default is used.`})]}),y.length>0&&(0,W.jsxs)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-invalid`,children:[`Stored options no longer recognized: `,y.join(`, `),` — remove them; they are never turned into query clauses.`]}),w&&(0,W.jsx)(K3,{label:`Where-stored options`,enabled:i.customScope,onEnabledChange:e=>a({...i,customScope:e}),testId:`query-settings-scope-custom`,children:i.customScope&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(W3,{values:i.scopeOptions,choices:C,onChange:e=>a({...i,scopeOptions:e}),testPrefix:`query-settings-scope`}),i.scopeOptions.length===0&&(0,W.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-scope-empty`,children:`No predefined options — the page nudges for a pick instead.`})]})}),e.profile&&(0,W.jsxs)(K3,{label:`Group-by options`,enabled:i.customGroupBy,onEnabledChange:e=>a({...i,customGroupBy:e}),testId:`query-settings-group-custom`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`The dimensions this page offers first, and the one a bare landing groups by. Order is the priority.`}),i.customGroupBy&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(G3,{values:i.groupByOptions,onChange:e=>a({...i,groupByOptions:e}),testPrefix:`query-settings-group`}),i.groupByOptions.length===0&&(0,W.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-group-empty`,children:`No favorites — the page groups by its own default.`})]})]}),e.shortcuts&&(0,W.jsx)(q3,{shortcuts:r,icons:KI,landingId:`all`,onEdit:e=>p({editing:e}),onDelete:S,onCreate:()=>p({editing:null}),error:u,testPrefix:`query-settings`}),c&&(0,W.jsx)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-settings-storage-error`,role:`alert`,children:c}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:x,disabled:!v,"data-testid":`query-settings-reset`,children:[(0,W.jsx)(Bt,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Reset to system default`})]}),(0,W.jsx)(K,{size:`sm`,onClick:b,disabled:!_||!!h,"data-testid":`query-settings-save`,children:`Save`})]}),f&&(0,W.jsx)(gL,{open:!0,onOpenChange:e=>{e||p(null)},route:e.id,editing:f.editing})]})}function Z3({surface:e,open:t,onOpenChange:n}){return(0,W.jsx)(LC,{open:t,onClose:()=>n(!1),title:`${e.label} query settings`,description:`Override the landing query and the Where-stored / Group-By options for this page. 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.`,presentation:`sheet`,children:(0,W.jsx)(X3,{surface:e})})}function Q3({query:e,layout:t,refreshKey:n,onChanged:r,onQueryChange:i,onEditNotebook:a,onDeleteNotebook:o}){let[c,l]=(0,U.useState)([]),[u,d]=(0,U.useState)({}),[f,p]=(0,U.useState)(!0),[m,h]=(0,U.useState)({}),[g,_]=(0,U.useState)({}),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(null),S=(0,U.useCallback)(async()=>{try{let e=await cj.getAllNotebooks().catch(()=>[]);l(e);let t=WM(),n=JA(),r={};for(let e of n){let n=await t.getSeedMeta(fy(e.id)).catch(()=>void 0);n&&(r[e.id]=n)}d(r)}finally{p(!1)}},[]);(0,U.useEffect)(()=>(S(),lN(()=>{S()})),[S,n]);let C=(0,U.useMemo)(()=>{let e=[],t=new Set;for(let n of c){t.add(n.slug);let r=n.origin==="default";e.push({id:n.id,slug:n.slug,notebookId:n.notebookId,chunkId:r?`notebook.${n.slug}`:void 0,feedId:r?`core`:`local`,feedLabel:r?`App Core`:`Yours (Local)`,origin:n.origin,label:n.name,description:n.description,category:n.origin,itemCount:0,localVersion:1,remoteVersion:1,updateAvailable:!1,subscribed:!0,installed:!0,icon:n.icon})}let n=JA();for(let r of n){let n=XA(r.id),i=u[r.id];for(let a of n){let n=a.id,o=a.chunkId,s=oN(r.id,o),c=i?.chunks[o],l=!!c,u=c?.version,d=u??1,f=!!(u&&d&&d>u);t.has(n)||(t.add(n),e.push({slug:n,notebookId:a.chunkId,chunkId:o,feedId:r.id,feedLabel:r.label,origin:`feed`,label:a.label,description:a.description,category:a.category,itemCount:c?.noteIds?.length??0,localVersion:u,remoteVersion:d,updateAvailable:f,subscribed:s,installed:l}))}}return e},[c,u]),{matched:w,activePredicate:T,activeFeedFilter:E,isSubscribedFalse:D,isSubscribedAll:O}=(0,U.useMemo)(()=>{let t=X(e),n=ah(t)?t.filters:[],r=null,i=null,a=null,o=null;for(let e of n)e.key===`feed`?r=e.values.map(e=>e.value).join(`,`):e.key===`subscribed`?i=e.values.map(e=>e.value).join(`,`):e.key===`text`?a=e.values.map(e=>e.value).join(` `).toLowerCase():e.key===`notebook`&&(o=e.values.map(e=>e.value).join(`,`));let s=i===`false`,c=i===`true,false`||i===`false,true`,l=`user ∨ default ∨ subscribed`;return s?l=`subscribed:false`:c?l=`subscribed:true,false`:i===`true`&&(l=`subscribed:true`),{matched:C.filter(e=>{if(r){if(r===`local`){if(e.origin!==`user`)return!1}else if(r!==`*`&&e.feedId!==r)return!1}if(o){let t=o.split(`,`).map(e=>e.replace(/^notebook\//,``));if(!t.includes(e.slug)&&!t.includes(e.notebookId))return!1}return a&&!(e.label.toLowerCase().includes(a)||(e.description??``).toLowerCase().includes(a))?!1:c?!0:s?e.origin===`feed`&&!e.subscribed:e.origin===`user`||e.origin==="default"||e.subscribed}),activePredicate:l,activeFeedFilter:r,isSubscribedFalse:s,isSubscribedAll:c}},[C,e]),k=(0,U.useMemo)(()=>{let e=new Map;for(let t of w){let n=e.get(t.feedId);n?n.push(t):e.set(t.feedId,[t])}return e},[w]),A=async e=>{if(!e.chunkId||m[e.slug])return;h(t=>({...t,[e.slug]:!0})),x(null);let t=!e.subscribed;try{y(t?`Subscribing & pulling ${e.label}…`:`Unsubscribing ${e.label}…`),await XN(e.feedId,e.chunkId,t),await S(),r(),y(t?`Subscribed ${e.label}`:`Unsubscribed ${e.label}`)}catch(e){x(e instanceof Error?e.message:`Subscription update failed.`)}finally{h(t=>({...t,[e.slug]:!1}))}},j=async e=>{if(!(!e.chunkId||m[e.slug])){h(t=>({...t,[e.slug]:!0})),x(null);try{y(`Pulling update for ${e.label}…`),await YN(e.feedId,e.chunkId),await S(),r(),y(`Updated ${e.label}`)}catch(e){x(e instanceof Error?e.message:`Update pull failed.`)}finally{h(t=>({...t,[e.slug]:!1}))}}},M=async e=>{if(!g[e]){_(t=>({...t,[e]:!0})),x(null);try{y(`Subscribing whole feed ${e}…`),aN(e,!0),await JN(e),await S(),r(),y(`Subscribed feed ${e}`)}catch(e){x(e instanceof Error?e.message:`Feed subscription failed.`)}finally{_(t=>({...t,[e]:!1}))}}},N=async e=>{if(!g[e]){_(t=>({...t,[e]:!0})),x(null);try{y(`Unsubscribing feed ${e}…`),await ZN(e),await S(),r(),y(`Unsubscribed feed ${e}`)}catch(e){x(e instanceof Error?e.message:`Feed unsubscribe failed.`)}finally{_(t=>({...t,[e]:!1}))}}};return f?(0,W.jsxs)(`div`,{className:`flex items-center justify-center p-12 text-xs text-muted-foreground`,"data-testid":`notebook-browser-loading`,children:[(0,W.jsx)(s,{className:`size-4 animate-spin mr-2 text-primary`}),(0,W.jsx)(`span`,{children:`Loading library notebooks…`})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,"data-testid":`notebook-library-browser`,children:[(0,W.jsx)(`div`,{role:`status`,"aria-live":`polite`,className:`sr-only`,children:v}),b&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3 rounded-lg border border-destructive/40 bg-destructive/10 text-xs text-destructive`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)($n,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{children:b})]}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>x(null),className:`h-6 px-2 text-xs`,children:`Dismiss`})]}),w.length===0&&(0,W.jsxs)(`div`,{className:`text-center p-8 rounded-xl border border-border bg-card/40 space-y-3`,"data-testid":`notebook-browser-empty`,children:[(0,W.jsx)(pe,{className:`size-8 mx-auto text-muted-foreground/60`}),(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:D?`All published feed notebooks are currently subscribed!`:`No notebooks are imported yet.`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground max-w-sm mx-auto`,children:D?`All published feed notebooks are currently subscribed!`:`No notebooks matched the current filters.`}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2 pt-1`,children:[!O&&(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>i(`:notebook{subscribed:true,false}`),className:`text-xs h-8`,children:`Include unsubscribed notebooks (subscribed:true,false)`}),!D&&(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>i(`:notebook{subscribed:false}`),className:`text-xs h-8`,children:`Available to subscribe`}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>i(`:notebook{}`),className:`text-xs h-8`,children:`Reset to default`})]})]}),t===`cards`&&w.length>0&&(0,W.jsx)(`div`,{className:`space-y-6`,children:[...k.entries()].map(([e,t])=>{let n=t[0]?.feedLabel??e,r=e===`local`?`local`:rN(e);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-border/40 pb-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-xs font-bold uppercase tracking-wider text-muted-foreground`,children:n}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:t.length})]}),e!==`local`&&e!==`core`&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r!==`full`&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>M(e),disabled:g[e],"data-testid":`feed-subscribe-all-${e}`,className:`h-7 px-2 text-xs`,children:[g[e]?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Subscribe All`]}),r!==`unsubscribed`&&(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>N(e),disabled:g[e],"data-testid":`feed-unsubscribe-all-${e}`,className:`h-7 px-2 text-xs text-destructive hover:bg-destructive/10`,children:`Unsubscribe Feed`})]})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3`,children:t.map(e=>{let t=m[e.slug],n=e.subscribed,r=e.origin===`user`;return(0,W.jsxs)(`article`,{className:`rounded-xl border p-4 flex flex-col justify-between gap-3 bg-card transition-all ${n?`border-border`:`border-dashed border-border/80 opacity-80`}`,"data-testid":`notebook-card-${e.slug}`,children:[(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,W.jsxs)(`h4`,{className:`text-sm font-bold text-foreground flex items-center gap-1.5 truncate`,children:[e.icon&&(0,W.jsx)(`span`,{"aria-hidden":!0,children:e.icon}),(0,W.jsx)(`span`,{className:`truncate`,children:e.label})]}),(0,W.jsx)(`div`,{className:`shrink-0 flex items-center gap-1`,children:e.origin===`user`?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-purple-500/10 text-purple-600`,children:`Yours`}):e.origin==="default"?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`Core`}):e.updateAvailable?(0,W.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-600`,children:[`Update v`,e.localVersion,` → v`,e.remoteVersion]}):n&&e.installed?(0,W.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:[`Subscribed · v`,e.localVersion]}):(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`Unsubscribed`})})]}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`pt-2 border-t border-border/40 flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-mono text-muted-foreground`,children:[`feed:`,e.feedId]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-7 px-2 text-xs border-amber-500 text-amber-600 hover:bg-amber-500/10`,children:[t?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):(0,W.jsx)(lt,{className:`size-3 mr-1`}),`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsxs)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-7 px-2 text-xs ${n?`text-muted-foreground`:`bg-sky-600 hover:bg-sky-500 text-white`}`,children:[t?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,n?`Unsubscribe`:`+ Subscribe & Pull`]}),r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>a?.(e),className:`h-7 w-7 p-0`,"aria-label":`Edit ${e.label}`,children:(0,W.jsx)(dr,{className:`size-3`})}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>e.id&&o?.(e.id),className:`h-7 w-7 p-0 text-destructive hover:bg-destructive/10`,"aria-label":`Delete ${e.label}`,children:(0,W.jsx)(ne,{className:`size-3`})}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`inline-flex items-center text-xs font-semibold text-primary hover:underline h-7 px-2`,children:`Open`})]}):(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`inline-flex items-center text-xs font-semibold text-primary hover:underline h-7 px-2`,children:`Open →`})]})]})]},e.slug)})})]},e)})}),t===`feed`&&w.length>0&&(0,W.jsx)(`div`,{className:`space-y-6`,children:[...k.entries()].map(([e,t])=>{let n=t[0]?.feedLabel??e,r=e===`local`?`local`:rN(e);return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`p-4 bg-muted/20 border-b border-border flex items-center justify-between gap-4 flex-wrap`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm font-bold text-foreground`,children:n}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded bg-muted text-muted-foreground uppercase`,children:r})]}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:[`feed:`,e]})]}),e!==`local`&&e!==`core`&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r!==`full`&&(0,W.jsxs)(K,{size:`sm`,onClick:()=>M(e),disabled:g[e],"data-testid":`feed-subscribe-all-${e}`,className:`h-8 text-xs bg-sky-600 hover:bg-sky-500 text-white`,children:[g[e]?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Subscribe Whole Feed`]}),r!==`unsubscribed`&&(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>N(e),disabled:g[e],"data-testid":`feed-unsubscribe-all-${e}`,className:`h-8 text-xs text-destructive hover:bg-destructive/10`,children:`Unsubscribe Feed`})]})]}),(0,W.jsx)(`div`,{className:`divide-y divide-border/60`,children:t.map(e=>{let t=m[e.slug],n=e.subscribed;return(0,W.jsxs)(`div`,{className:`p-4 flex flex-wrap items-center justify-between gap-3 ${n?``:`bg-muted/10 opacity-75`}`,"data-testid":`notebook-card-${e.slug}`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`strong`,{className:`text-sm font-medium text-foreground`,children:e.label}),(0,W.jsxs)(`span`,{className:`text-[11px] font-mono text-muted-foreground`,children:[e.chunkId??`local`,` · v`,e.remoteVersion??1,` · `,e.itemCount,` items`]}),e.updateAvailable&&(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-600`,children:`Update Available`})]}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5 truncate`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-8 text-xs border-amber-500 text-amber-600`,children:[`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsx)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-8 text-xs ${n?`text-muted-foreground`:`bg-sky-600 text-white`}`,children:n?`Subscribed ✓`:`+ Subscribe`}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`text-xs font-semibold text-primary hover:underline px-2`,children:`Open →`})]})]},e.slug)})})]},e)})}),t===`rows`&&w.length>0&&(0,W.jsx)(`div`,{className:`rounded-xl border border-border bg-card overflow-x-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-xs text-left`,"data-testid":`notebook-directory-table`,children:[(0,W.jsx)(`thead`,{className:`bg-muted/40 border-b border-border text-muted-foreground font-semibold`,children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`p-3`,children:`Notebook`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Feed (feed:)`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Subscription`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Version`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Workouts`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Updated`}),(0,W.jsx)(`th`,{className:`p-3 text-right`,children:`Actions`})]})}),(0,W.jsx)(`tbody`,{className:`divide-y divide-border/60`,children:w.map(e=>{let t=m[e.slug],n=e.subscribed;return(0,W.jsxs)(`tr`,{className:`hover:bg-muted/20`,"data-testid":`notebook-row-${e.slug}`,children:[(0,W.jsx)(`td`,{className:`p-3 font-medium text-foreground`,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:e.label}),e.description&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate max-w-xs`,children:e.description})]})}),(0,W.jsx)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:e.feedId}),(0,W.jsx)(`td`,{className:`p-3`,children:e.origin===`user`?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-purple-500/10 text-purple-600`,children:`user`}):e.origin==="default"?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`default`}):n?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`subscribed:true`}):(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`subscribed:false`})}),(0,W.jsxs)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:[`v`,e.localVersion??`-`,` / v`,e.remoteVersion??1]}),(0,W.jsx)(`td`,{className:`p-3 tabular-nums`,children:e.itemCount}),(0,W.jsx)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:e.updatedAt??`-`}),(0,W.jsx)(`td`,{className:`p-3 text-right`,children:(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-7 px-2 text-xs border-amber-500 text-amber-600`,children:[`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsx)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-7 px-2 text-xs ${n?`text-muted-foreground`:`bg-sky-600 text-white`}`,children:n?`Unsubscribe`:`Subscribe`}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`text-xs font-semibold text-primary hover:underline px-1.5`,children:`Open`})]})})]},e.slug)})})]})})]})}var $3=[`date`,`datetime-local`,`month`,`time`,`week`],e6=(0,U.forwardRef)(function({className:e,...t},n){return(0,W.jsx)(`span`,{"data-slot":`control`,className:G(`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,W.jsx)(qe,{ref:n,...t,className:G(t.type&&$3.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)})})});function t6({feedParam:e,onDismiss:t,onRegistered:n,onSubscribed:r}){let[i,a]=(0,U.useState)(null),[o,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let t=!0,n=TA(e);return n?(a(n),u(!0),g(null),new HM(n).fetchManifest().then(e=>{if(!t)return;let n=My(e);m(n),u(!1)}).catch(e=>{t&&(g(e instanceof Error?e.message:`Failed to probe feed manifest.`),u(!1))})):(a(null),m(null),u(!1)),()=>{t=!1}},[e]);let y=()=>{let e=TA(o);if(!e){g(`Invalid feed URL. Must be an HTTPS URL.`);return}a(e),u(!0),g(null),new HM(e).fetchManifest().then(e=>{let t=My(e);m(t),u(!1)}).catch(e=>{g(e instanceof Error?e.message:`Failed to probe feed manifest.`),u(!1)})},b=()=>{if(!(!i||!p||d))try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!1),n(e.id)}catch(e){g(e instanceof Error?e.message:`Failed to register feed.`)}},x=async()=>{if(!(!i||!p||d)){f(!0),g(null);try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!1),await JN(e.id,{subscribe:!1,manifest:p}),r(e.id)}catch(e){g(e instanceof Error?e.message:`Import failed.`)}finally{f(!1)}}},S=async()=>{if(!(!i||!p||d)){f(!0),g(null);try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!0),fN(e.id,_),await JN(e.id,{manifest:p}),r(e.id)}catch(e){g(e instanceof Error?e.message:`Sync failed.`)}finally{f(!1)}}};if(!i&&!p)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card/60 p-4 mb-4`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-xs font-semibold px-2 py-0.5 rounded bg-sky-500/10 text-sky-500 border border-sky-500/30`,children:`Unknown Feed`}),(0,W.jsxs)(`span`,{className:`text-sm font-semibold text-foreground`,children:[`Feed "`,e,`" is not registered`]})]}),(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:t,className:`h-7 px-2 text-xs`,children:[(0,W.jsx)(Sr,{className:`size-3.5 mr-1`}),`Dismiss`]})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`To browse or import this feed, enter its HTTPS seed directory URL (containing `,(0,W.jsx)(`code`,{children:`manifest.json`}),`):`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(e6,{value:o,onChange:e=>c(e.target.value),placeholder:`https://example.com/seed/`,className:`text-xs h-8 flex-1`}),(0,W.jsxs)(K,{size:`sm`,onClick:y,disabled:!o.trim()||l,className:`h-8 text-xs`,children:[l?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Probe Feed`]})]}),h&&(0,W.jsx)(`p`,{className:`text-xs text-destructive mt-2`,children:h})]});if(l)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card/60 p-4 mb-4 flex items-center gap-3 text-xs text-muted-foreground`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsx)(s,{className:`size-4 animate-spin text-primary`}),(0,W.jsxs)(`span`,{children:[`Probing feed manifest at `,(0,W.jsxs)(`code`,{children:[i,`manifest.json`]}),`…`]})]});if(h&&!p)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-destructive/40 bg-destructive/10 p-4 mb-4 text-xs`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-destructive font-semibold`,children:[(0,W.jsx)($n,{className:`size-4`}),(0,W.jsx)(`span`,{children:`Feed Probe Failed`})]}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:t,className:`h-7 px-2 text-xs`,children:`Dismiss`})]}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:h})]});if(!p)return null;let C=p.notebooks?.length??p.chunks.length,w=p.notebooks?.reduce((e,t)=>e+(t.count??0),0)??p.chunks.reduce((e,t)=>e+(t.count??0),0);return(0,W.jsxs)(`div`,{className:`rounded-xl border border-sky-500/40 bg-sky-500/5 p-4 mb-4 space-y-3`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded bg-sky-500/20 text-sky-400 border border-sky-500/30`,children:`Feed Deep Link`}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:i})]}),(0,W.jsxs)(`h3`,{className:`text-base font-bold text-foreground mt-1`,children:[`Add "`,p.name??`Custom Feed`,`" to your Library?`]}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:p.description??`Published whiteboard workouts and notebooks.`})]}),(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:t,disabled:d,className:`h-7 px-2 text-xs`,children:[(0,W.jsx)(Sr,{className:`size-3.5 mr-1`}),`Decline`]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-2 text-xs bg-background/50 p-3 rounded-lg border border-border/40`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Version`}),(0,W.jsxs)(`span`,{className:`font-mono`,children:[`v`,p.version,` (schema `,p.schema,`)`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Notebooks`}),(0,W.jsxs)(`span`,{children:[C,` notebooks (`,w,` items)`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Built`}),(0,W.jsx)(`span`,{className:`font-mono`,children:p.builtAt?p.builtAt.slice(0,10):`unknown`})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:_,onChange:e=>v(e.target.checked),className:`rounded border-border text-primary`}),(0,W.jsx)(`span`,{children:`Auto-sync updates`})]})})]}),h&&(0,W.jsx)(`p`,{className:`text-xs text-destructive`,children:h}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2 pt-1`,children:[(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:b,disabled:d,"data-testid":`feed-intake-browse`,className:`text-xs h-8`,children:`Browse in Library (Register Only)`}),(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:x,disabled:d,"data-testid":`feed-intake-once`,className:`text-xs h-8`,children:[d?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Import Once`]}),(0,W.jsxs)(K,{size:`sm`,onClick:S,disabled:d,"data-testid":`feed-intake-subscribe`,className:`text-xs h-8 bg-sky-600 hover:bg-sky-500 text-white`,children:[d?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`✓ Subscribe & Sync All`]})]})]})}var n6=e=>$y(new Date(e)),r6=e=>{if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1);return`${(e/1024**n).toFixed(n===0?0:1)} ${t[n]}`};function i6(e,t){Q(e===`imported`?{title:`${t} synced`,description:`Content was imported from the published feed. 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 a6={imported:`Synced`,current:`Up to date`,"server-stale":`Published version is older than the stored version`,"update-pending":`Update available`,busy:`Another tab is syncing`,disabled:`Feed import is disabled`,error:`Sync failed`};function o6(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??a6[e.outcome]}}function s6({source:e,running:t,disabled:n,onSync:r,onSubscribe:i,onUnsubscribe:a,onDelete:o,onAutoSync:s,onToggleNotebook:c,subscribedOnly:l}){let u=On(),d=(0,U.useSyncExternalStore)(lN,()=>dN(e.id)),f=e.notebooks.filter(t=>t.id!==e.id),p=rN(e.id),m=f.filter(e=>e.subscribed).length;l&&f.filter(e=>e.subscribed);let h=e.autoImport,g=e.subscribed&&!e.upToDate&&e.remote!==null;return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`feed-source-${e.id}`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-x-4 gap-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-wrap`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:e.label}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded shrink-0 ${e.subscribed?`bg-emerald-500/10 text-emerald-600`:`bg-muted text-muted-foreground`}`,children:e.subscribed?`Subscribed`:`Not subscribed`}),h&&(0,W.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:`Core`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 flex-wrap justify-end`,children:[e.subscribed?g?(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>r(e.id),disabled:n,"data-testid":`feed-sync-${e.id}`,className:`gap-2`,children:[(0,W.jsx)(lt,{className:`size-3.5 ${t?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:t?`Syncing…`:`Sync`})]}):(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1.5`,"data-testid":`feed-current-${e.id}`,children:[(0,W.jsx)(Ct,{className:`size-3.5 text-emerald-500`}),e.remote===null?`Remote unreachable`:`Up to date`]}):(0,W.jsxs)(K,{size:`sm`,onClick:()=>i(e.id),disabled:n,"data-testid":`feed-subscribe-${e.id}`,className:`gap-2`,children:[(0,W.jsx)(Zt,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Subscribe`})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,title:e.subscribed?`Apply new published versions automatically during the load-time check. Turning it off never removes content.`:`Unsubscribed sources never auto-import.`,children:[(0,W.jsx)(`input`,{type:`checkbox`,className:`size-3.5 accent-primary`,checked:d,disabled:n||!e.subscribed,onChange:t=>s(e.id,t.target.checked),"aria-label":`Auto-sync ${e.label}`,"data-testid":`feed-autosync-${e.id}`}),(0,W.jsx)(`span`,{children:`Auto-sync`})]}),(0,W.jsxs)(`details`,{className:`relative shrink-0`,"data-testid":`feed-more-${e.id}`,children:[(0,W.jsx)(`summary`,{"aria-label":`More actions for ${e.label}`,className:`flex cursor-pointer list-none items-center justify-center rounded-md border border-border px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground [&::-webkit-details-marker]:hidden`,children:`…`}),(0,W.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 flex w-64 max-w-[80vw] flex-col items-stretch gap-1.5 rounded-lg border border-border bg-card p-2 text-xs shadow-lg`,children:[e.url?(0,W.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`break-all font-mono text-primary hover:underline`,children:[`Published HTML: `,e.url]}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Published HTML: bundled with this app (no standalone URL)`}),e.repositoryUrl?(0,W.jsx)(`a`,{href:e.repositoryUrl,target:`_blank`,rel:`noopener noreferrer`,className:`break-all text-primary hover:underline`,children:`Git source directory`}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Git repository: not published`}),!h&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),disabled:n||!e.subscribed,"data-testid":`feed-unsubscribe-${e.id}`,className:`min-h-8 rounded-md px-2 text-left text-destructive hover:bg-destructive/10 disabled:opacity-50`,children:`Unsubscribe`}),!h&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),disabled:n,"data-testid":`feed-delete-${e.id}`,className:`min-h-8 rounded-md px-2 text-left text-destructive hover:bg-destructive/10 disabled:opacity-50`,children:`Delete source`})]})]})]})]}),e.url&&(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono break-all`,"data-testid":`feed-origin-${e.id}`,children:e.url}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`feed-description-${e.id}`,children:e.description}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-muted/20 px-3 py-2 flex flex-wrap items-center justify-between gap-3`,"data-testid":`feed-notebooks-${e.id}`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-black uppercase tracking-widest text-muted-foreground/70`,children:`Subscription Mode`}),(0,W.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded text-xs font-semibold ${p===`full`?`bg-emerald-500/10 text-emerald-600`:p===`partial`?`bg-amber-500/10 text-amber-600`:`bg-muted text-muted-foreground`}`,"data-testid":`feed-sub-mode-${e.id}`,children:p===`full`?`Full`:p===`partial`?`Partial (${m} of ${f.length} subscribed)`:`Unsubscribed`})})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>u(`/notebooks?q=:notebook{feed:${e.id},subscribed:true,false}`),"data-testid":`browse-notebooks-link-${e.id}`,className:`text-xs font-semibold text-primary hover:underline flex items-center gap-1`,children:`Browse notebooks in Library →`})]}),(0,W.jsxs)(`div`,{className:`grid gap-1 text-sm`,"data-testid":`feed-status-card`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Library`}),(0,W.jsxs)(`span`,{className:`font-medium text-foreground text-xs tabular-nums`,"data-testid":`feed-source-size`,children:[e.count.toLocaleString(),` feed `,e.count===1?`item`:`items`,` · `,r6(e.bytes)]})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Local database`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-local-version`,children:e.stored?`v${e.stored.version} · schema ${e.stored.schema} · imported ${n6(e.stored.importedAt)}`:`Not imported yet`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Published version`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs flex items-center gap-1.5`,"data-testid":`feed-remote-version`,children:e.remote?`v${e.remote.version} · schema ${e.remote.schema}`:e.remoteError?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)($n,{className:`size-3.5 text-muted-foreground`}),`Unavailable`]}):`Checking…`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Last check`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-last-check`,children:e.checkedAt?n6(e.checkedAt):`—`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Last sync`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-last-sync`,children:e.stored?n6(e.stored.importedAt):`Never`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Status`}),(0,W.jsx)(`span`,{className:`font-medium text-xs flex items-center gap-1.5`,"data-testid":`feed-sync-status`,children:e.subscribed?e.upToDate?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ct,{className:`size-3.5 text-emerald-500`}),`Up to date`]}):e.remote==null?`Unknown (remote unreachable)`:d?`Update available — applied automatically on next load`:`Update available — sync to apply`:`Not subscribed`})]})]})]})}function c6(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)([]),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(!0),[v,y]=(0,U.useState)(),b=(0,U.useCallback)(async()=>{a(null);try{t(await eP())}catch(e){a(e instanceof Error?e.message:String(e))}finally{r(!1)}},[]);(0,U.useEffect)(()=>{b()},[b]),(0,U.useEffect)(()=>lN(()=>{b()}),[b]),(0,U.useEffect)(()=>RN(()=>{b()}),[b]);let x=(0,U.useCallback)(async t=>{s(t??`all`),l([]);let n=e=>l(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{i6(t?await JN(t,{force:!0,onProgress:n}):await GN({force:!0,onProgress:n}),t?e?.sources.find(e=>e.id===t)?.label??t:`All sources`),await b()}finally{s(null)}},[b,e]),S=(0,U.useCallback)(async(e,t,n)=>{sN(e,t,n),n?await x(e):await b()},[x,b]),C=(0,U.useCallback)(async()=>{h(null);let e;try{e=MA(u,f)}catch(e){h(e instanceof Error?e.message:String(e));return}d(``),p(``),await x(e.id)},[u,f,x]),w=(0,U.useCallback)((e,t)=>{fN(e,t)||Q({title:`Couldn't save Auto-sync`,description:`Browser storage is unavailable — the choice lasts this session only.`,variant:`destructive`}),b()},[b]),T=(0,U.useCallback)(async t=>{let n=e?.sources.find(e=>e.id===t)?.label??t;if(window.confirm(`Unsubscribe from "${n}"? Imported content for this feed's content is removed from your library; the source stays listed so you can subscribe again. Your own notes are never touched.`)){try{let{deleted:e}=await ZN(t);Q({title:`${n} unsubscribed`,description:`${e.toLocaleString()} imported ${e===1?`item`:`items`} removed. The source stays listed for a later Subscribe.`})}catch(e){Q({title:`${n} unsubscribe failed`,description:e instanceof Error?e.message:String(e),variant:`destructive`});return}await b()}},[e,b]),E=(0,U.useCallback)(async t=>{let n=e?.sources.find(e=>e.id===t)?.label??t;if(window.confirm(`Delete "${n}"? Imported content is removed and the source is unregistered. Your own notes are never touched.`)){try{let{deleted:e}=await QN(t);Q({title:`${n} deleted`,description:`${e.toLocaleString()} imported ${e===1?`item`:`items`} removed and the source unregistered.`})}catch(e){Q({title:`${n} delete failed`,description:e instanceof Error?e.message:String(e),variant:`destructive`});return}await b()}},[e,b]),D=c.at(-1)?.event;return(0,W.jsxs)(`div`,{className:`space-y-8`,children:[(0,W.jsxs)(`section`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,W.jsx)(Zt,{className:`size-4 text-primary`}),`Content Sources`]}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`A feed is one published Markdown repository — its notebooks, notes, guides, dashboards, and efforts import into your active data location together. Subscribed feeds are checked against their published manifest on every load: Auto-sync applies updates by itself, otherwise you press Sync when an update is pending. The core feed imports automatically at launch and is always subscribed.`})]}),i&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-destructive`,"data-testid":`feed-status-error`,children:[(0,W.jsx)($n,{className:`size-3.5 shrink-0`}),`Couldn't read the feed status from the active storage: `,i]}),D&&(0,W.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-border bg-card p-4`,"data-testid":`feed-sync-progress`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 text-sm font-medium`,children:[(0,W.jsx)(`span`,{children:o===null?c.some(e=>e.event.phase===`finished`&&e.event.outcome===`error`)?`Sync finished with errors`:`Sync finished`:`Syncing…`}),(0,W.jsxs)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[`Source `,D.sourceIndex,` of `,D.totalSources]})]}),(0,W.jsxs)(`p`,{role:`status`,"aria-live":`polite`,className:`sr-only`,"data-testid":`feed-sync-live-status`,children:[D.sourceLabel,`: `,o6(D)]}),c.map(({event:e,imported:t,chunks:n})=>(0,W.jsxs)(`div`,{className:`space-y-2 border-t border-border/50 pt-3`,children:[(0,W.jsxs)(`p`,{className:`text-xs ${e.phase===`finished`&&e.outcome===`error`?`text-destructive`:`text-muted-foreground`}`,children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:e.sourceLabel}),` · `,o6(e)]}),t&&t.totalChunks>0?(0,W.jsx)(k3,{value:t.completedChunks,max:t.totalChunks,label:`Chunks committed · ${e.sourceLabel}`}):e.phase===`finished`?null:(0,W.jsx)(`progress`,{"aria-label":`Checking ${e.sourceLabel}`,className:`h-2 w-full`}),t&&(0,W.jsxs)(`p`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-xs tabular-nums`,"data-testid":`feed-sync-totals`,children:[(0,W.jsxs)(`span`,{children:[t.totalNotes.toLocaleString(),` notes`]}),(0,W.jsxs)(`span`,{children:[t.totalEfforts.toLocaleString(),` efforts`]}),(0,W.jsxs)(`span`,{children:[t.totalBlocks.toLocaleString(),` blocks`]}),t.skippedUserOwned>0&&(0,W.jsxs)(`span`,{children:[t.skippedUserOwned.toLocaleString(),` user-owned rows preserved`]}),t.deleted>0&&(0,W.jsxs)(`span`,{children:[t.deleted.toLocaleString(),` feed rows removed`]})]}),n.length>0&&(0,W.jsxs)(`details`,{className:`text-xs`,"data-testid":`feed-sync-chunks`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:[`Committed chunks (`,n.length,`)`]}),(0,W.jsx)(`ul`,{className:`mt-2 max-h-32 space-y-1 overflow-y-auto font-mono text-muted-foreground`,children:n.map(e=>(0,W.jsx)(`li`,{children:e},e))})]})]},e.sourceId))]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 p-2.5 rounded-xl border border-border bg-card text-xs`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer select-none text-muted-foreground hover:text-foreground`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:g,onChange:e=>_(e.target.checked),"data-testid":`sync-subscribed-only-toggle`,className:`size-3.5 accent-primary rounded`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Subscribed only`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Source:`}),(0,W.jsxs)(`select`,{value:v??``,onChange:e=>y(e.target.value?e.target.value:void 0),"data-testid":`sync-feed-source-filter`,"aria-label":`Filter notebooks by feed`,className:`h-8 rounded-md border border-border bg-background px-2 text-xs text-foreground outline-none transition-colors hover:border-foreground/25 focus:border-primary/50`,children:[(0,W.jsx)(`option`,{value:``,children:`All feeds`}),e?.sources.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3`,"data-testid":`feed-source-list`,children:[e?.sources.filter(e=>{if(v&&e.id!==v)return!1;if(g){let t=e.notebooks.some(e=>e.subscribed);if(!e.subscribed&&!t)return!1}return!0}).map(e=>(0,W.jsx)(s6,{source:e,running:o===e.id||o===`all`,disabled:o!==null,onSync:e=>{x(e)},onSubscribe:e=>{x(e)},onUnsubscribe:e=>{T(e)},onDelete:e=>{E(e)},onAutoSync:w,onToggleNotebook:S,subscribedOnly:g},e.id)),n&&e===null&&(0,W.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4 text-sm text-muted-foreground`,children:`Checking sources…`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between pt-3 border-t border-border/50`,children:[(0,W.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,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>{x(null)},disabled:o!==null||n,"data-testid":`feed-resync-button`,className:`gap-2`,children:[(0,W.jsx)(lt,{className:`size-3.5 ${o===`all`?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:o===`all`?`Syncing all…`:`Sync All Sources`})]})]})]}),(0,W.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,W.jsx)(V,{className:`size-4 text-primary`}),`Add a Source`]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Register any URL serving a Wod Wiki feed (a directory with `,(0,W.jsx)(`code`,{children:`manifest.json`}),` and`,` `,(0,W.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 and start subscribed; manage Auto-sync, Unsubscribe, and Delete on each source card above.`]})]}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`feed-add-source-form`,children:[(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{htmlFor:`feed-source-label`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Label`}),(0,W.jsx)(e6,{id:`feed-source-label`,value:u,onChange:e=>d(e.target.value),placeholder:`My library (optional — defaults to the host name)`,disabled:o!==null})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{htmlFor:`feed-source-url`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Feed directory URL`}),(0,W.jsx)(e6,{id:`feed-source-url`,type:`text`,autoComplete:`off`,spellCheck:!1,value:f,onChange:e=>p(e.target.value),placeholder:`https://example.com/feed/library/`,className:`font-mono`,disabled:o!==null})]})]}),m&&(0,W.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-1.5 text-xs text-destructive`,"data-testid":`feed-add-error`,children:[(0,W.jsx)($n,{className:`size-3.5 mt-0.5 shrink-0`}),(0,W.jsx)(`span`,{children:m})]}),(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsxs)(K,{size:`sm`,onClick:()=>{C()},disabled:o!==null||!f.trim(),"data-testid":`feed-add-button`,className:`gap-2`,children:[(0,W.jsx)(rr,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Add & Sync`})]})})]})]})]})}var l6={stream:`cards`,table:`rows`},u6=`wodwiki.viewSettings.v1`,d6={"/notebooks":`/catalogs`,"/notes":`/feeds`,"/sessions":`/results`,"/dashboards":`/dashboard`},f6={"/notes":`/collections`},p6={"/feeds":`/feeds@2`};function m6(e){let t=e.startsWith(`/`)?e:`/${e}`;return p6[t]??t}var h6=new Fx(u6);function g6(e,t){return{level:e,layout:t??`cards`,visibleFields:NH(e),groupBy:void 0}}function _6(e,t,n=h6,r){let i=g6(t,r),a=m6(e),o=d6[a],s=n.get(a,{alias:o});if(s==null&&o&&(s=n.get(o,{alias:f6[a]})),!s)return i;let c=typeof s.layout==`string`?s.layout:``,l=c===`cards`||c===`rows`||c===`feed`?c:l6[c]??`cards`,u=new Set(MH(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 v6(e,t,n=h6){let r=m6(e);n.set(r,{level:t.level,layout:t.layout,visibleFields:t.visibleFields,groupBy:t.groupBy})}function y6(e,t,n=h6){let r=m6(e),i=d6[r],a=f6[r];return n.remove(r,i),a&&n.remove(a),g6(t)}function b6(e,t,n){let[r,i]=(0,U.useState)(()=>_6(e,t,h6,n));(0,U.useEffect)(()=>{i(_6(e,t,h6,n))},[e,t,n]);let a=(0,U.useCallback)(t=>{i(n=>{let r=t(n);return v6(e,r),r})},[e]);return{settings:r,setLayout:(0,U.useCallback)(e=>{a(t=>({...t,layout:e}))},[a]),toggleField:(0,U.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,U.useCallback)(e=>{a(t=>({...t,visibleFields:e}))},[a]),setGroupBy:(0,U.useCallback)(e=>{a(t=>({...t,groupBy:e}))},[a]),resetSettings:(0,U.useCallback)(()=>{let n=y6(e,t);i(n)},[e,t])}}function x6(e,t=200){let[n,r]=(0,U.useState)(t),i=(0,U.useRef)(null);(0,U.useEffect)(()=>{r(t)},[e,t]);let a=n<e.length,o=(0,U.useCallback)(t=>r(n=>Math.max(n,Math.min(Math.max(t,0),e.length))),[e.length]);return(0,U.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 S6(e,t){let n=X(e);return n.error||!oh(n)?e:Qh({...n,metric:t})}function C6(e){let t=X(e);return t.error?e:Qh({...t,window:void 0})}function w6(e,t){let n=X(e);return n.error?e:Qh({...n,groupBy:[t]})}function T6(e){return e.kind===`note`&&!e.sourceNote?!1:e.kind===`note`}async function E6(e){if(e.wodBlock?.content.trim())return e.wodBlock.content;let t=await SF.resolve(e.id),n=dW(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 D6(e,t){return{id:e.wodBlock?.blockId??e.block?.blockId??nn(),contentId:e.wodBlock?.blockContentId??e.blockContentId,dialect:`time`,startLine:0,endLine:t.split(`
452
+ `),t])}var k2=(0,U.createContext)(null);function A2({children:e}){let t=(0,U.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,U.useState)(0),i=(0,U.useCallback)((e,n)=>{t.current[e]!==n&&(t.current[e]=n,r(e=>e+1))},[]);return(0,W.jsx)(k2.Provider,{value:{register:i,registry:t,version:n},children:e})}function j2(){return(0,U.useContext)(k2)||{registry:{current:{}},register:()=>()=>{},version:0}}function M2(e){let t=(0,U.useContext)(k2)?.register;return(0,U.useCallback)(n=>t?.(e,n),[e,t])}function N2({ringKey:e,el:t}){let{register:n}=j2();return(0,U.useLayoutEffect)(()=>{n(e,t)},[e,t,n]),null}function P2({target:e,accent:t,canvasRef:n}){let{registry:r,version:i}=j2(),[a,o]=(0,U.useState)(null),s=e?.key??null;return(0,U.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,W.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}`}})}function F2(){return(0,W.jsxs)(`div`,{className:`@container flex w-full flex-col items-center text-center`,children:[(0,W.jsxs)(`h1`,{className:`text-[clamp(32px,6.5cqi,64px)] font-extrabold leading-[1.02] tracking-[-0.04em]`,children:[(0,W.jsxs)(`span`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`mr-[0.35em]`,children:`Write it.`}),(0,W.jsx)(`span`,{children:`Time it.`})]}),(0,W.jsxs)(`span`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`mr-[0.35em]`,children:`Track it.`}),(0,W.jsx)(`span`,{children:`Own it.`})]})]}),(0,W.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,W.jsx)(`br`,{}),`line and splits become queryable training data points.`]})]})}var I2=`dQw4w9WgXcQ`;function L2({onWatched:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`flex w-full flex-col items-center gap-4 xl:gap-5`,children:[(0,W.jsxs)(`div`,{className:`group relative aspect-video w-full max-w-2xl rounded-xl border border-border bg-black text-left shadow-xl transition-shadow hover:shadow-2xl 2xl:max-w-3xl`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),"data-testid":`tour-why-video`,"aria-label":`Play Why Wod Wiki? · YouTube video`,className:`block h-full w-full overflow-hidden rounded-xl`,children:[(0,W.jsx)(`img`,{src:`https://i.ytimg.com/vi/${I2}/hqdefault.jpg`,alt:`Why Wod Wiki? video thumbnail`,loading:`lazy`,className:`h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.02]`}),(0,W.jsx)(`span`,{className:`absolute inset-0 bg-gradient-to-t from-black/70 via-black/10 to-transparent`}),(0,W.jsx)(`span`,{className:`absolute left-1/2 top-1/2 flex size-14 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-lg transition-transform duration-300 group-hover:scale-110 xl:size-16`,children:(0,W.jsx)(gr,{className:`ml-1 size-6 fill-current xl:size-7`})}),(0,W.jsx)(`span`,{className:`absolute bottom-3 left-4 font-mono text-[11px] uppercase tracking-[0.2em] text-white/90`,children:`Why Wod Wiki? · YouTube`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{n(!1),e?.()},"data-testid":`tour-why-video-skip`,title:`Skip the video`,"aria-label":`Skip the Why Wod Wiki? video`,className:`absolute right-0 top-0 z-10 flex size-8 items-center justify-center rounded-full border border-border bg-background/90 text-foreground shadow-lg backdrop-blur-sm transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary after:absolute after:-inset-3 after:content-[''] md:-right-2 md:-top-2`,children:(0,W.jsx)(Sr,{className:`size-4`})})]}),(0,W.jsxs)(`p`,{"data-testid":`tour-scroll-hint`,className:`flex items-center gap-2 font-mono text-[11px] uppercase tracking-[0.3em] text-muted-foreground`,children:[(0,W.jsx)(hn,{className:`size-4 animate-bounce`}),`Keep scrolling for the demo`]}),t&&(0,W.jsx)(c1,{videoId:I2,title:`Why Wod Wiki?`,onClose:()=>{n(!1),e?.()}})]})}var R2=`https://github.com/bitcobblers/wod-wiki`;function z2(){return(0,W.jsx)(`footer`,{"data-testid":`tour-footer`,className:`border-t border-border px-6 py-8`,children:(0,W.jsxs)(`p`,{className:`mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-2 text-sm text-muted-foreground`,children:[(0,W.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` WOD Wiki`]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsx)(`a`,{href:R2,target:`_blank`,rel:`noopener noreferrer`,className:`underline-offset-4 transition-colors hover:text-foreground hover:underline`,children:`GitHub repository`})]})})}async function B2(){try{await Z.wipe()}catch{}try{for(let e=localStorage.length-1;e>=0;e--){let t=localStorage.key(e);t&&localStorage.removeItem(t)}}catch{}try{sessionStorage.clear()}catch{}}var V2=`https://github.com/bitcobblers/wod-wiki`,H2=`https://forms.gle/6YHpxwAJh6PAsyAQ6`,U2=`https://app.turso.tech/signup`,W2=`m23.31.803-.563-.42-1.11 1.189-.891-1.286-.512.235.704 1.798-.326.35L18.082 0l-.574.284 2.25 4.836-2.108.741h-.05l-1.143-1.359-1.144 1.36H8.687l-1.144-1.36-1.146 1.363H6.36l-2.12-.745L6.491.284 5.919 0l-2.53 2.668-.327-.349.705-1.798-.512-.236-.89 1.287L1.253.382.69.804 2.42 3.69l-.89.939.311 2.375 2.061.787L3.9 8.817H1.947v.444l.755 1.078 1.197.433v6.971l3.057 4.55L7.657 24l1.101-1.606L9.9 24l.999-1.606L12 24l1.102-1.606L14.1 24l1.141-1.606L16.343 24l.701-1.706 3.058-4.55v-6.972l1.196-.433.756-1.078v-.444h-1.952l.003-1.03 2.054-.784.311-2.375-.89-.939zm-8.93 18.718H8.033l.793-1.615.794 1.615.793-1.083.793 1.083.794-1.083.793 1.083.794-1.083.793 1.083.793-1.615.794 1.615zm3.886-7.39-3.3 1.084-.143 3.061-2.827.627-2.826-.627-.142-3.06-3.3-1.085v-1.635l4.266 1.21-.052 4.126h4.109l-.052-4.127 4.266-1.209z`,G2=[{id:`managed-hosting`,label:`Managed hosting — we run the database.`},{id:`public-profile`,label:`Profile page with a public feed.`},{id:`device-sync`,label:`Sync across your apps and devices.`}],K2=[{id:`coach-views`,label:`Member accounts with coach views.`},{id:`coaches-portal`,label:`Programming dashboards and leaderboards.`},{id:`athlete-portal`,label:`Private journals that roll up to their coach.`},{id:`gym-hosting`,label:`Gym website, competition timers, whiteboard displays.`},{id:`branding`,label:`Your gym's brand on pages and feeds.`}],q2=`underline-offset-4 transition-colors hover:text-foreground hover:underline`;function J2(e){let t=`inline-flex w-fit items-center gap-1.5 font-medium text-foreground underline-offset-4 transition-colors hover:underline`,n=(0,W.jsxs)(W.Fragment,{children:[e.children,(0,W.jsx)(on,{className:`size-3.5 text-muted-foreground/50`,"aria-hidden":!0})]});return e.href===void 0?e.onClick===void 0?(0,W.jsx)(xt,{to:e.to,className:t,children:n}):(0,W.jsx)(`button`,{type:`button`,onClick:e.onClick,className:`text-left ${t}`,children:n}):(0,W.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:t,children:n})}function Y2({children:e}){return(0,W.jsxs)(`li`,{className:`flex gap-2.5 text-sm leading-6 text-muted-foreground`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`mt-[11px] size-1 shrink-0 rounded-full bg-muted-foreground/50`}),(0,W.jsx)(`span`,{children:e})]})}function X2(){return(0,W.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-800`,children:`Active`})}function Z2(e){return(0,W.jsxs)(`li`,{className:`flex flex-col gap-0.5`,children:[(0,W.jsxs)(`span`,{className:`flex gap-2.5 text-[13px] leading-5 text-muted-foreground`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`mt-[9px] size-1 shrink-0 rounded-full bg-muted-foreground/50`}),(0,W.jsx)(`span`,{children:e.feature.label})]}),(0,W.jsx)(`button`,{type:`button`,"data-testid":`hosted-interest-${e.feature.id}`,onClick:()=>e.onInterested(e.feature.id),disabled:e.interested,"aria-pressed":e.interested,className:`ml-[13px] w-fit shrink-0 rounded-full border px-2 py-px text-[11px] font-medium transition-colors ${e.interested?`border-emerald-500/30 bg-emerald-500/10 text-emerald-600`:`border-border text-muted-foreground hover:border-primary/50 hover:text-primary`}`,children:e.interested?`✓ Interested`:`Interested`})]})}function Q2(){return(0,W.jsx)(`div`,{role:`status`,"data-testid":`hosted-survey-footer`,className:`mx-auto mt-5 max-w-5xl animate-in fade-in slide-in-from-bottom-4 rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-4 duration-500`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,W.jsx)(Ct,{className:`size-5 shrink-0 text-emerald-600`,"aria-hidden":!0}),(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsx)(`p`,{className:`font-medium text-foreground`,children:`Thanks for showing interest — please fill out the survey and give us feedback.`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Opens the interest survey in a new tab.`})]})]}),(0,W.jsxs)(K,{type:`button`,"data-testid":`hosted-survey-button`,onClick:()=>{Kj.record(qj.hostedSurveyOpened),window.open(H2,`_blank`,`noopener,noreferrer`)},children:[`Fill out interest survey`,(0,W.jsx)(on,{className:`size-4`,"aria-hidden":!0})]})]})})}function $2(e){let t=e.icon;return(0,W.jsxs)(`article`,{className:`flex flex-col rounded-xl border border-border p-5 ${e.us?`bg-muted/40`:`bg-background`} ${e.className??``}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,W.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),e.badge]}),e.eyebrow&&(0,W.jsx)(`p`,{className:`mt-3.5 font-mono text-[10px] font-semibold uppercase tracking-[0.18em] ${e.us?`text-emerald-800`:`text-muted-foreground`}`,children:e.eyebrow}),(0,W.jsx)(`h3`,{className:`${e.eyebrow?`mt-1`:`mt-4`} text-base font-semibold text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.text}),(0,W.jsx)(`div`,{className:`mt-4 flex flex-1 flex-col gap-2 text-sm`,children:e.children})]})}function e4({label:e,features:t,interested:n,onInterested:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`mt-2.5 font-mono text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground first:mt-0`,children:e}),(0,W.jsx)(`ul`,{className:`space-y-2`,children:t.map(e=>(0,W.jsx)(Z2,{feature:e,interested:n.has(e.id),onInterested:r},e.id))})]})}function t4(){let[e,t]=(0,U.useState)(!1),n=On(),[r,i]=(0,U.useState)(new Set),a=e=>{i(t=>t.has(e)?t:new Set(t).add(e)),Kj.record(qj.hostedInterestClicked,{feature:e})},[o]=(0,U.useState)(Bk),s=o.state===`turso`?`turso`:o.state===`invalid`?`turso-invalid`:`browser`,c=async()=>{window.confirm(`Wipe every note, result, and setting stored in this browser? This cannot be undone.`)&&(t(!0),await B2(),window.location.reload())},l=async()=>{let e=gF(),t=await SF.create({journalDate:e,title:e,rawContent:``});Kj.record(qj.noteCreated),n(HP(t.id))},u=s===`turso-invalid`?(0,W.jsx)(`span`,{className:`rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 font-mono text-[11px] font-medium text-amber-600`,children:`Invalid config`}):s===`api`?void 0:(0,W.jsx)(X2,{});return(0,W.jsxs)(`section`,{id:`tour-section-offerings`,"data-testid":`tour-section-offerings`,"aria-label":`You own your data`,children:[(0,W.jsx)(l1,{index:`04`,before:`Who owns the data? `,accentText:`You!!!`,after:``,accent:d1.library,blurb:`Run it in your browser, back it up to your own database, or host it on your own server — and if you'd rather hand the caretaking to us, mark the hosted features you want below and the interest survey unlocks.`}),(0,W.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,W.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,W.jsx)(`span`,{children:s===`api`?`Current mode: API server`:s===`turso`?`Current mode: local browser with Turso backup and sync`:s===`turso-invalid`?`Current mode: local browser. Repair the Turso connection to resume sync.`:`Current mode: local browser only`}),(0,W.jsx)(xt,{to:$.settingsStorage,className:q2,children:`Configure data storage`})]}),(0,W.jsxs)(`div`,{className:`mx-auto grid max-w-5xl grid-cols-1 gap-5 md:grid-cols-3`,children:[(0,W.jsxs)($2,{icon:N,eyebrow:`You own it`,title:`Playground in your browser`,badge:u,text:`Everything runs locally in this browser's IndexedDB — offline, no account, no server copy.`,children:[(0,W.jsx)(J2,{onClick:()=>void l(),children:`Create your journal`}),(0,W.jsx)(J2,{to:$.playgroundRoot,children:`Start Writing in a Playground`}),(0,W.jsx)(J2,{to:`/feeds`,children:`Explore the notebooks`}),(0,W.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,W.jsx)(Y2,{children:`Offline and fast — notes and results never leave this browser by default.`}),(0,W.jsx)(Y2,{children:`Tied to this browser — export or back it up before switching browsers or clearing site data.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:c,disabled:e,className:`mt-1 text-left text-xs text-muted-foreground disabled:opacity-50 ${q2}`,children:e?`Clearing…`:`Clear my data`}),(0,W.jsxs)(`div`,{className:`mt-auto border-t border-border pt-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border border-border bg-background`,children:(0,W.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,className:`size-4`,"aria-hidden":!0,children:(0,W.jsx)(`path`,{d:W2})})}),(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsx)(`p`,{className:`font-medium text-foreground`,children:`Backup & sync, optional`}),(0,W.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:`Add a free Turso database you own — committed changes back up in the background; without network you keep working and upload later.`})]})]}),(0,W.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2`,children:[(0,W.jsx)(J2,{href:U2,children:`Create a free Turso account`}),(0,W.jsx)(J2,{to:$.settingsStorage,children:`Configure backup & sync`})]})]})]}),(0,W.jsxs)($2,{icon:It,eyebrow:`You own it`,title:`Self-hosted`,badge:s===`api`?(0,W.jsx)(X2,{}):void 0,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,W.jsxs)(`ul`,{className:`mt-1 space-y-1.5`,children:[(0,W.jsx)(Y2,{children:`Centralized data for a team or gym — one SQLite, Turso, or Postgres backend.`}),(0,W.jsxs)(Y2,{children:[`Publish your notebooks as a feed with `,(0,W.jsx)(`code`,{className:`font-mono text-xs`,children:`wod build`}),` — every browser subscribes and syncs.`]}),(0,W.jsx)(Y2,{children:`You run the server — network required, and server admin is on you.`})]}),(0,W.jsx)(`div`,{className:`mt-auto border-t border-border pt-4`,children:(0,W.jsx)(J2,{href:V2,children:`View source`})})]}),(0,W.jsxs)($2,{icon:bn,us:!0,eyebrow:`Us — we'd host it`,title:`Wod-Wiki hosted`,text:`Mark the features you want — the survey unlocks below.`,children:[(0,W.jsx)(e4,{label:`Individuals`,features:G2,interested:r,onInterested:a}),(0,W.jsx)(e4,{label:`Coaching & gyms`,features:K2,interested:r,onInterested:a})]})]}),r.size>0&&(0,W.jsx)(Q2,{})]})]})}var n4=({doc:e,onDocChange:t,onBlocksChange:n,onRun:r,theme:i,withRingTargets:a=!1})=>{let o=M2(`editor.wodBlock`),s=M2(`editor.runButton`),c=(0,U.useRef)(null),l=(0,U.useRef)(null),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null),m=(0,U.useCallback)(()=>{if(!a)return null;let e=c.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}}}d(t);let i=null,o=e.querySelector(`[data-testid="${rG.EDITOR_START_WORKOUT}"]`);if(o){let t=e.getBoundingClientRect(),n=o.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 p(i),{block:t,run:i}},[a]);(0,U.useLayoutEffect)(()=>{if(!a)return;let e=c.current;if(!e)return;m();let t=window.setTimeout(m,120),n=window.setTimeout(m,480),r=null;if(typeof ResizeObserver<`u`){r=new ResizeObserver(m),r.observe(e);let t=l.current?.contentDOM;t&&r.observe(t)}let i=new MutationObserver(e=>{e.some(e=>e.target instanceof Element&&e.target.closest(`.cm-note-editor`))&&m()});i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`style`]});let o=0,s=0,u=()=>{m(),performance.now()-s<3e3&&(o=requestAnimationFrame(u))},d=()=>{s=performance.now(),cancelAnimationFrame(o),o=requestAnimationFrame(u)};d(),document.fonts?.ready?.then(d).catch(()=>{});let f=l.current?.scrollDOM;return f?.addEventListener(`scroll`,m,{passive:!0}),window.addEventListener(`resize`,m),()=>{window.clearTimeout(t),window.clearTimeout(n),r?.disconnect(),i.disconnect(),f?.removeEventListener(`scroll`,m),window.removeEventListener(`resize`,m),cancelAnimationFrame(o)}},[e,a,m]);let h=(0,U.useCallback)(()=>{r()},[r]),g=(0,U.useMemo)(()=>[{id:`run`,label:`Run`,icon:(0,W.jsx)(gr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:h},{id:`playground`,label:`Playground`,icon:(0,W.jsx)(it,{className:`h-3 w-3`}),onClick:e=>{V0(e)},splitIcon:(0,W.jsx)(Jn,{className:`h-3 w-3`}),splitSuccessIcon:(0,W.jsx)(Kt,{className:`h-3 w-3 text-emerald-500`}),onSplitClick:e=>{U0(e)}}],[h]);return(0,W.jsx)(`div`,{className:`relative flex h-full flex-col bg-background text-left`,children:(0,W.jsxs)(`div`,{ref:c,className:`relative flex-1 min-h-0`,children:[(0,W.jsx)(NQ,{noteId:`canvas:home`,ariaLabel:`Home workout editor`,value:e,onChange:t,onBlocksChange:n,onStartWorkout:h,commands:g,onViewCreated:e=>{l.current=e,a&&m()},theme:i,readonly:!1,showLineNumbers:!1,showFrontmatter:!1,enableOverlay:!1,enableInlineRuntime:!1,className:`h-full`}),a&&u&&(0,W.jsx)(`div`,{ref:o,"data-testid":`tour-wod-block-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:u.top,left:u.left,width:u.width,height:u.height}}),a&&f&&(0,W.jsx)(`div`,{ref:s,"data-testid":`tour-run-button-region`,"aria-hidden":!0,className:`pointer-events-none absolute`,style:{top:f.top,left:f.left,width:f.width,height:f.height}})]})})};function r4(e){let t=Number.isFinite(e.startTime)?e.startTime:0,n=[],r=[];for(let i of e.logs??[]){if(i.outputType!==`segment`||i.stackLevel!==1||i.line==null)continue;let e=i.timeSpan;if(!e||typeof e.started!=`number`||typeof e.ended!=`number`||e.ended<=e.started)continue;let a=i.metrics??[],o=e=>a.some(t=>t.type===e),s=a.find(e=>e.type===`effort`&&typeof e.value==`string`),c=o(`duration`)&&!o(`rep`)?`clock`:i.completionReason===`user-advance`?`next`:null;if(c){if(c===`clock`&&i.completionReason===`user-advance`){let t=(a.find(e=>e.type===`duration`&&typeof e.value==`number`)?.value??0)-(e.ended-e.started);t>0&&r.push(t)}n.push({start:e.started-t,end:e.ended-t,kind:c,label:s?.value??`Line ${i.line+1}`})}}if(n.length===0)return null;let i=r.reduce((e,t)=>e+t,0);return{segments:n,totalMs:Number.isFinite(e.duration)&&e.duration>0?e.duration:Math.max(...n.map(e=>e.end)),impatienceMs:i,impatiences:r,reactions:n.filter(e=>e.kind===`next`).map(e=>e.end-e.start)}}var i4=e=>{let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`},a4=e=>`${(Math.round(e/100)/10).toFixed(1)}s`;function o4({onRun:e}){return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4 p-8 text-center`,"data-testid":`tour-insights-empty`,children:[(0,W.jsx)(`p`,{className:`max-w-sm text-sm leading-relaxed text-muted-foreground`,children:`Run the workout and this window turns your run into data — rest vs. work, how fast you answered the clock, round by round.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:e,"data-testid":`tour-insights-run`,className:`inline-flex min-h-11 items-center gap-2 rounded-full bg-primary px-5 py-2.5 text-sm font-semibold text-primary-foreground shadow transition-colors hover:bg-primary/90`,children:[(0,W.jsx)(gr,{className:`size-4`}),`Run to view the results`]})]})}function s4({result:e,onRun:t}){let n=(0,U.useMemo)(()=>e?r4(e):null,[e]);if(!e||!n)return(0,W.jsx)(o4,{onRun:t});let{segments:r,totalMs:i,impatienceMs:a,impatiences:o,reactions:s}=n,c=s.length>0?s.reduce((e,t)=>e+t,0)/s.length:0,l=s.length>0?Math.max(...s):0,u=o.length>0?Math.max(...o):0;return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col gap-4 overflow-y-auto p-4`,"data-testid":`tour-insights`,children:[(0,W.jsxs)(`div`,{"data-testid":`tour-insights-timeline`,children:[(0,W.jsx)(`div`,{className:`flex h-3 w-full overflow-hidden rounded-full border border-border/60 bg-muted/40`,children:r.map((e,t)=>(0,W.jsx)(`div`,{title:`${e.label} — ${e.kind===`clock`?`countdown`:`to Next`} ${i4(e.end-e.start)}`,className:`h-full`,style:{flexGrow:e.end-e.start,flexBasis:0,backgroundColor:e.kind===`clock`?`hsl(var(--metric-rest))`:`hsl(var(--metric-time))`,marginLeft:+(t>0)}},t))}),(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-4 font-mono text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`size-2 rounded-sm`,style:{backgroundColor:`hsl(var(--metric-rest))`}}),`Countdown`]}),(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`size-2 rounded-sm`,style:{backgroundColor:`hsl(var(--metric-time))`}}),`To Next click`]}),(0,W.jsxs)(`span`,{className:`ml-auto`,children:[i4(i),` total`]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{"data-testid":`tour-insights-impatience`,className:`rounded-xl border border-border bg-card p-4`,children:[(0,W.jsx)(`p`,{className:`font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground`,children:`Impatience Score`}),(0,W.jsx)(`p`,{className:`mt-2 text-2xl font-black tracking-tight text-foreground`,children:a4(a)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o.length===0?`every countdown ran to zero`:`${o.length} early click${o.length===1?``:`s`}${o.length>1?` · worst ${a4(u)}`:``}`})]}),(0,W.jsxs)(`div`,{"data-testid":`tour-insights-reaction`,className:`rounded-xl border border-border bg-card p-4`,children:[(0,W.jsx)(`p`,{className:`font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground`,children:`Reaction Time`}),(0,W.jsx)(`p`,{className:`mt-2 text-2xl font-black tracking-tight text-foreground`,children:s.length>0?a4(c):`—`}),(0,W.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[s.length,` click`,s.length===1?``:`s`,s.length>1?` · slowest ${a4(l)}`:``]})]})]})]})}var c4=864e5;function l4(e){let t=new Date(e);return Math.round(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/c4)}function u4(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 d4=864e5;function f4(e){return Math.round(e*10)/10}function p4(e,t,n=9){let r=new Date(e-t*d4);return r.setHours(n,0,0,0),r.getTime()}function m4(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:q.Label,value:t,origin:`analyzed`},{type:q.Metric,value:n,unit:r,origin:`analyzed`,metadata:o}],sourceBlockKey:``,stackLevel:0})}var h4=new Set([`tis`,`calc.acwr`,`calc.adherence`,`calc.ef`,`calc.pct1rm`]);function g4(e,t){return m_(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`||!h4.has(n)||typeof t.value!=`number`?e:{...e,reducerStats:{observedCount:1,sum:t.value,min:t.value,max:t.value}}})}function _4(e=Date.now()){let t=[],n=new Map,r=[],i=[],a=(e,t)=>{let r=l4(e);n.set(r,(n.get(r)??0)+t)};for(let n=0;n<16;n++){let o=(15-n)*7+1,s=p4(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`};m4(r,`Total reps`,t.reps,`reps`,`totalReps`,n),m4(r,`Training intensity score`,t.tis,`pts`,`tis`,n),m4(r,`Total volume`,e,`kg`,`totalVolume`,n),m4(r,`Estimated 1RM`,f4(t.top*(1+t.reps/30)),`kg`,`calc.e1rm`,n),m4(r,`%1RM intensity`,f4(100/(1+t.reps/30)),`%`,`calc.pct1rm`,n)}let c=f4(i/100+13+o/10);m4(r,`Session load`,c,`AU`,`sessionLoad`,{discipline:`strength`,intensityTier:`high`}),t.push(...g4(r,{noteId:`example-strength-w${n}`,resultId:`example-strength-w${n}-r`,blockContentId:`example-content-strength`,timestamp:s})),a(s,c)}let c=p4(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};m4(e,`Total reps`,n,`reps`,`totalReps`,o),m4(e,`Training intensity score`,f4(n*i),`pts`,`tis`,o),a&&m4(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};m4(e,`Total reps`,o,`reps`,`totalReps`,s),m4(e,`Training intensity score`,f4(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};m4(e,`Total reps`,n,`reps`,`totalReps`,a),m4(e,`Training intensity score`,f4(n*i),`pts`,`tis`,a)}}let i=f4(30.6);m4(e,`Session load`,i,`AU`,`sessionLoad`,{intensityTier:r}),t.push(...g4(e,{noteId:`example-conditioning-w${n}`,resultId:`example-conditioning-w${n}-r`,blockContentId:`example-content-conditioning`,timestamp:c})),a(c,i)}let l=p4(e,o+4,8);if(n%4==1)r.push(l4(l));else{let e=6e3+100*n,r=f4(e/2.8),o=[],s={effortSlug:`running`,discipline:`running`,intensityTier:`low`};m4(o,`Total distance`,e,`m`,`totalDistance`,s),m4(o,`Elapsed time`,r,`s`,`elapsed`,s),m4(o,`Training intensity score`,r,`pts`,`tis`,s);let c=f4(r/10);m4(o,`Session load`,c,`AU`,`sessionLoad`,{intensityTier:`low`}),t.push(...g4(o,{noteId:`example-run-w${n}`,resultId:`example-run-w${n}-r`,blockContentId:`example-content-run`,timestamp:l})),a(l,c),i.push({day:l4(l),pace:e/r})}let u=p4(e,o+6,10);{let e=4e3+50*n,r=f4(e/2),i=[],o={effortSlug:`rowing`,discipline:`rowing`,intensityTier:`moderate`};m4(i,`Total distance`,e,`m`,`totalDistance`,o),m4(i,`Elapsed time`,r,`s`,`elapsed`,o),m4(i,`Training intensity score`,r,`pts`,`tis`,o);let s=f4(r/10);m4(i,`Session load`,s,`AU`,`sessionLoad`,{intensityTier:`moderate`}),t.push(...g4(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*d4);return n.setHours(t,0,0,0),n.getTime()},c=(e,n,r)=>{let i=[];for(let[e,t,n]of r)m4(i,e,t,n,e);t.push(...g4(i,{noteId:`example-calc`,resultId:e,blockContentId:`example-content-calc`,timestamp:n}))};for(let e of u4(n,o))e.acwr!==void 0&&c(`example-calc-d${e.day}`,s(e.day),[[`calc.acwr`,f4(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`,f4(l),`AU`],[`calc.atl`,f4(u),`AU`],[`calc.tsb`,f4(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`,f4(e.pace/141*1e5),`pts`]]);return t}function v4(e=Date.now()){return new tv(Qv(_4(e)))}var y4=null;function b4(){return y4??=v4()}var x4=[4,8,16],S4={parse(e){let t=Number.parseInt(e,10);return x4.includes(t)?t:null},serialize(e){return String(e)},withDefault(e){return{...this,defaultValue:e}}};function C4(){return fn(`weeks`,S4.withDefault(16))}function w4(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 T4=[{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}],E4=300;function D4({open:e,...t}){return e?(0,W.jsx)(O4,{...t}):null}function O4({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,U.useState)(n),[_,v]=(0,U.useState)(r?.title??``),[y,b]=(0,U.useState)(r?.question??``),[x,S]=(0,U.useState)(r?.type||`table`),[C,w]=(0,U.useState)({spanCols:r?.spanCols,spanFull:r?.spanFull}),[T,E]=(0,U.useState)(Object.entries(r?.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `)),[D,O]=(0,U.useState)(!1),[k,A]=(0,U.useState)(()=>!X(n).error),[j,M]=(0,U.useState)(null),N=(0,U.useMemo)(()=>X(h.trim()),[h]),P=x===``?`table`:x,F=!N.error&&h.trim()!==``&&(ah(N)?P===`table`||P===`list`:P!==`list`),[I,L]=(0,U.useState)({status:`idle`}),R=(0,U.useRef)(0);(0,U.useEffect)(()=>{if(!F||!o){L(e=>e.status===`ok`?e:{status:`idle`});return}let e=Tv(h.trim(),u??{});if(e.missing.length>0){L({status:`blocked`,message:gv(e.missing)});return}let t=++R.current;L({status:`loading`});let n=setTimeout(()=>{o.runQuery(e.query,{rangeStart:s,rangeEnd:c,preferredUnit:l}).then(e=>{R.current===t&&L({status:`ok`,result:e})}).catch(e=>{R.current===t&&L({status:`error`,message:e instanceof Error?e.message:String(e)})})},E4);return()=>clearTimeout(n)},[h,F,o,s,c,l,u]);let ee=!F&&I.status===`ok`,z=F&&k,te=async()=>{if(!(!z||!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:w4(T)}),e()}catch(e){M(e instanceof Error?e.message:String(e))}finally{O(!1)}}};return(0,W.jsx)(LC,{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,W.jsxs)(W.Fragment,{children:[f,(0,W.jsx)(`div`,{className:`flex-1`}),!m&&(0,W.jsxs)(W.Fragment,{children:[(0,W.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,W.jsx)(`button`,{type:`button`,"data-testid":`widget-composer-apply`,disabled:!z||D,title:N.error?N.error:void 0,onClick:()=>void te(),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,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i!==void 0&&(0,W.jsxs)(`section`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Dataset — the subset`}),i?(0,W.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,W.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,W.jsxs)(`section`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Calculation`}),m?(0,W.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,W.jsx)(aT,{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,W.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,W.jsxs)(`label`,{className:`mt-3 flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Visualization`}),(0,W.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:fv.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))})]})]}),!m&&(0,W.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,W.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Title`}),(0,W.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,W.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Coaching question `,(0,W.jsx)(`span`,{className:`normal-case font-normal`,children:`(optional)`})]}),(0,W.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,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Size`}),(0,W.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1 self-start`,children:T4.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,W.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,W.jsxs)(`label`,{className:`flex flex-col gap-1 sm:col-span-2`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Parameters `,(0,W.jsx)(`span`,{className:`normal-case font-normal`,children:`(goal targets, space-separated)`})]}),(0,W.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,W.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs text-muted-foreground`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Title`}),(0,W.jsx)(`div`,{className:`text-foreground`,children:r?.title||`—`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Question`}),(0,W.jsx)(`div`,{className:`text-foreground`,children:r?.question||`—`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Type`}),(0,W.jsx)(`div`,{className:`font-mono text-foreground`,children:x||`table`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Size`}),(0,W.jsx)(`div`,{className:`font-mono text-foreground`,children:r?.spanFull?`full row`:r?.spanCols?`${r.spanCols} cols`:`default`})]})]}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5 flex items-center gap-2`,children:[`Preview`,ee&&(0,W.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,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3 h-56 overflow-hidden`,children:[I.status===`idle`&&(F?(0,W.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Preview runs as you compose…`}):(0,W.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:ah(N)?`find: queries return things — use a table or list widget instead`:`Compose a calculation to preview.`})),I.status===`loading`&&(0,W.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Running preview…`}),I.status===`blocked`&&(0,W.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,W.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,W.jsx)(KS,{type:x,result:I.result,label:_.trim()||void 0,unit:l,attributes:w4(T)})]})]}),j&&(0,W.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 k4({boardSlug:e}){let t=b4(),n=_k(),r=(0,U.useMemo)(()=>n?lF(n):[],[n]),i=(0,U.useMemo)(()=>r.find(t=>t.slug===e)??r[0],[r,e]),a=(0,U.useMemo)(()=>{if(!i?.rawContent)return null;try{let{meta:e,sections:t}=Pv(i.rawContent);return Ov(t,e)}catch{return null}},[i]),[o,s]=C4(),[c,l]=(0,U.useMemo)(()=>{let e=Date.now();return[e-o*7*864e5,e]},[o]),[u,d]=(0,U.useState)(null);return(0,W.jsxs)(`div`,{className:`flex h-full w-full flex-col`,"data-testid":`tour-session-dashboard`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 px-5 pt-4`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate text-[11px] font-semibold uppercase tracking-wide text-primary`,children:i?.title??e}),(0,W.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,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsx)(cC,{weeks:o,onWeeksChange:s})})]}),(0,W.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,W.jsx)(sC,{document:a,executor:t,onInspectWidget:d,rangeStart:c,rangeEnd:l}):(0,W.jsx)(`p`,{className:`pt-8 text-center text-sm text-muted-foreground`,children:`Loading board…`})}),(0,W.jsx)(D4,{open:u!==null,onClose:()=>d(null),mode:`inspect`,initialWql:u?.body??`sum:totalVolume{}`,initial:u?{title:u.title,question:u.question,type:u.type,spanCols:u.spanCols,spanFull:u.spanFull,attributes:u.attributes}:void 0,executor:t,rangeStart:c,rangeEnd:l,tokenValues:a?Sv(a.tokens):void 0,onApply:void 0})]})}var A4=[`analytics`,`boards`],j4={analytics:{index:`01`,heading:`h2`,title:`Session Insights`,blurb:`Run the workout and this window turns your run into data — rest vs. work, how fast you answered the clock, round by round.`},boards:{index:`02`,heading:`h2`,title:`One Run Becomes Many`,blurb:`Dashboards let you visualise your progress — every recorded run rolls up into analytics boards. Aggregate results across flexible search criteria, from note frontmatter to session metrics: one run becomes many insights.`}};function M4({scope:e}){let t=j4[e],n=t.heading;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(n,{className:`flex items-baseline gap-4 text-[clamp(26px,3.2vw,44px)] font-extrabold leading-[1.1] tracking-[-0.03em]`,children:[t.index&&(0,W.jsx)(`span`,{className:`font-mono text-xs font-normal tracking-normal text-muted-foreground`,children:t.index}),(0,W.jsx)(`span`,{children:t.title})]}),(0,W.jsx)(`p`,{className:`mt-3 max-w-xl text-[clamp(14px,1.2vw,18px)] leading-[1.65] text-muted-foreground`,children:t.blurb})]})}var N4=[{id:`road-to-560-total`,label:`Road to 560 Total`,title:`Road to 560 Total`},{id:`polarized-base-marathon`,label:`Polarized Base`,title:`Polarized Base Marathon`}];function P4({onClick:e}){return(0,W.jsxs)(`button`,{type:`button`,onClick:e,title:`Back to the editor`,"data-testid":`tour-pane-back-to-editor`,className:`flex shrink-0 items-center gap-1 rounded-md border border-border px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:[(0,W.jsx)(_e,{className:`size-3`}),`Editor`]})}function F4({session:e,onRun:t,onBackToEditor:n}){let[r,i]=(0,U.useState)(`analytics`),[a,o]=(0,U.useState)(0),s=N4[a],c=(0,U.useRef)(new Map);(0,U.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=t.target.getAttribute(`data-scope`);(e===`analytics`||e===`boards`)&&i(e)}},{rootMargin:`-45% 0px -45% 0px`});return c.current.forEach(t=>e.observe(t)),()=>e.disconnect()},[]);let l=e=>t=>{t?c.current.set(e,t):c.current.delete(e)},u=r=>r===`analytics`?(0,W.jsx)(BJ,{title:`Session Insights`,className:`h-[460px]`,headerActions:(0,W.jsx)(P4,{onClick:n}),children:(0,W.jsx)(s4,{result:e,onRun:t})}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsx)(`div`,{role:`tablist`,"aria-label":`Dashboard slides`,className:`flex flex-wrap gap-1 rounded-lg border border-border bg-muted/30 p-1`,children:N4.map((e,t)=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":a===t,"data-testid":`dashboard-slide-tab-${e.id}`,onClick:()=>o(t),className:G(`min-h-11 rounded-md px-3 py-1.5 text-xs font-semibold transition-colors`,a===t?`bg-background text-foreground shadow`:`text-muted-foreground hover:text-foreground`),children:e.label},e.id))}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>(e+N4.length-1)%N4.length),"aria-label":`Previous dashboard`,"data-testid":`dashboard-slide-prev`,className:`flex size-11 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,W.jsx)(An,{className:`size-4`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>(e+1)%N4.length),"aria-label":`Next dashboard`,"data-testid":`dashboard-slide-next`,className:`flex size-11 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,W.jsx)(Lt,{className:`size-4`})})]})]}),(0,W.jsx)(BJ,{title:s.title,className:`min-h-0 flex-1`,headerActions:(0,W.jsx)(P4,{onClick:n}),children:(0,W.jsx)(`div`,{className:`flex h-full w-full flex-col`,role:`tabpanel`,children:(0,W.jsx)(k4,{boardSlug:s.id})},s.id)}),(0,W.jsxs)(`p`,{className:`text-center font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground`,children:[a+1,` / `,N4.length]})]}),d=(0,W.jsx)(`div`,{"data-testid":`tour-sticky-pane`,className:`sticky top-[104px] flex h-[calc(100dvh-104px)] flex-col items-center justify-center self-start`,children:(0,W.jsx)(`div`,{className:`relative w-full max-w-[700px]`,children:(0,W.jsx)(`div`,{className:`relative h-[460px]`,children:A4.map(e=>(0,W.jsx)(`div`,{"aria-hidden":r!==e,"data-scope-active":r===e,className:G(`absolute inset-0 transition-opacity duration-500`,r===e?`opacity-100`:`invisible opacity-0`),children:u(e)},e))})})}),f=(e,t)=>(0,W.jsx)(`div`,{ref:l(e),"data-scope":e,className:`flex min-h-[85vh] flex-col justify-center scroll-mt-[104px]`,...t,children:(0,W.jsx)(M4,{scope:e})}),p=e=>(0,W.jsxs)(`div`,{"data-testid":`tour-step-mobile-${e}`,"data-scope":e,className:`flex flex-col gap-4`,children:[(0,W.jsx)(M4,{scope:e}),(0,W.jsx)(`div`,{className:`h-[460px]`,children:u(e)})]}),m=HH();return(0,W.jsx)(`section`,{id:`tour-section-insights`,"data-testid":`tour-section-insights`,className:`border-b border-border/60`,children:m?(0,W.jsxs)(`div`,{className:`flex flex-col gap-12 px-5 py-14`,children:[p(`analytics`),p(`boards`)]}):(0,W.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-10 px-5 py-14 lg:grid-cols-2 lg:gap-16 lg:px-12 lg:py-0 xl:px-16 2xl:max-w-[1720px]`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col`,children:[(0,W.jsx)(`div`,{id:`tour-scroll-target-insights`,className:`scroll-mt-[104px]`,children:f(`analytics`)}),f(`boards`,{id:`tour-section-boards`,"data-testid":`tour-section-boards`})]}),d]})})}function I4(e){switch(e.phase){case`checking`:return`Checking the seed…`;case`fetching`:return`Downloading ${e.chunkId??`notebook`}…`;case`applying`:return`Importing ${e.chunkId??`notebook`}…`;case`committed`:return`Committed ${e.chunkId??`notebook`}`;case`finalizing`:return`Finalizing checkpoints…`;case`finished`:return`Done`;default:return e.phase}}function L4(e){if(!e||e.phase===`checking`||e.phase===`finished`)return null;let t=[];return typeof e.completedRecords==`number`&&typeof e.totalRecords==`number`&&t.push(`${e.completedRecords} / ${e.totalRecords} records`),e.totalChunks>0&&t.push(`${e.completedChunks} / ${e.totalChunks} notebooks`),t.length>0?t.join(` · `):null}function R4(e){let t=e.match(/^notebook\.(.+)$/);return t?{slug:t[1]}:null}function z4(e){let t=e.items.map(e=>e.date).filter(e=>!!e).sort();return{packageId:`local-notebooks-${e.id}`,slug:e.id,label:e.name,description:e.description,image:e.image,categories:e.categories,sourceLabel:`Local`,href:`/notebook/${encodeURIComponent(e.id)}`,itemCount:e.items.length,...t.length>0?{latestDate:t[t.length-1],firstDate:t[0]}:{},...e.readme===void 0?{}:{readme:e.readme},installed:!0}}function B4(e,t,n){let r=[],i=new Map;if(t)for(let e of YO(`notebooks`,t))i.set(e.id,e),r.push(z4(e));let a=e.map(e=>{let t=R4(e.chunkId);if(!t)return null;let r=i.get(t.slug),a=UA(e.feedId),o=(r?.items??[]).map(e=>e.date).filter(e=>!!e).sort();return{packageId:e.id,feedId:e.feedId,chunkId:e.chunkId,slug:t.slug,label:e.label,description:e.description||r?.description,image:r?.image,categories:r?.categories??[],sourceLabel:a?.label??e.feedId,...a?.repositoryUrl?{repositoryUrl:a.repositoryUrl}:{},href:`/notebook/${encodeURIComponent(t.slug)}`,itemCount:r?.items.length??0,...o.length>0?{latestDate:o[o.length-1],firstDate:o[0]}:{},...r?.readme===void 0?{}:{readme:r.readme},installed:!!r,subscribed:!n||n(e.feedId,e.chunkId)}}).filter(e=>e!==null),o=new Set(a.map(e=>e.slug));return[...a,...r.filter(e=>!o.has(e.slug)),...V4(t)]}function V4(e){return Aa.filter(e=>e.feedEntryId===`core`&&e.slug!==`guides`&&typeof e.seedChunkId==`string`).map(t=>{let n=`markdown/${t.slug}/`,r=e?Object.keys(e).filter(e=>e.startsWith(n)&&e.endsWith(`.md`)&&!e.endsWith(`/README.md`)):[];return{packageId:`core-${t.slug}`,feedId:`core`,chunkId:t.seedChunkId,slug:t.slug,label:t.name,description:t.description,categories:[],sourceLabel:`Core`,href:t.href,itemCount:r.length,installed:e?r.length>0:!1,subscribed:!0}})}function H4(e,t){let n={},r=[],i=new Set(t.map(e=>e.id));for(let t of e)t.feedId&&i.has(t.feedId)?(n[t.feedId]??=[]).push(t):r.push(t);let a=[];for(let e of t){let t=n[e.id];t?.length&&a.push({feed:e,label:e.label,...e.description?{description:e.description}:{},url:e.url,...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},notebooks:t})}return r.length>0&&a.push({label:`Local`,notebooks:r}),a}function U4(e,t,n,r){return H4(B4(e,t,r),n).map(e=>{let t=e.notebooks.map(e=>e.latestDate).filter(e=>!!e).sort();return{feedId:e.feed?.id,slug:e.feed?.id??`local`,label:e.label,...e.description?{description:e.description}:{},...e.url?{url:e.url}:{},...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},notebooks:e.notebooks,itemCount:e.notebooks.reduce((e,t)=>e+t.itemCount,0),installed:e.notebooks.every(e=>e.installed),subscribed:e.notebooks.some(e=>e.subscribed),...t.length>0?{latestDate:t[t.length-1]}:{},href:`/notebooks`}})}function W4(e,t){let n=t.text?.trim().toLowerCase();return e.filter(e=>t.feedId&&e.feedId!==t.feedId||t.subscribedOnly&&!e.notebooks.some(e=>e.subscribed)?!1:!n||e.label.toLowerCase().includes(n)||(e.description?.toLowerCase().includes(n)??!1)||e.notebooks.some(e=>e.label.toLowerCase().includes(n)||(e.description?.toLowerCase().includes(n)??!1)))}function G4(e,t){let n=[...e];switch(t){case`name`:return n.sort((e,t)=>e.label.localeCompare(t.label));case`size`:return n.sort((e,t)=>t.itemCount-e.itemCount||e.label.localeCompare(t.label));default:return n.sort((e,t)=>e.latestDate&&t.latestDate?t.latestDate.localeCompare(e.latestDate):e.latestDate?-1:t.latestDate?1:e.label.localeCompare(t.label))}}var K4=[`bg-rose-500/12 text-rose-600 dark:text-rose-400`,`bg-amber-500/12 text-amber-600 dark:text-amber-400`,`bg-emerald-500/12 text-emerald-600 dark:text-emerald-400`,`bg-sky-500/12 text-sky-600 dark:text-sky-400`,`bg-violet-500/12 text-violet-600 dark:text-violet-400`,`bg-cyan-500/12 text-cyan-600 dark:text-cyan-400`];function q4(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return K4[Math.abs(t)%K4.length]}function J4(e){return(e.match(/[a-z0-9]/i)?.[0]??`•`).toUpperCase()}function Y4(e){if(!e)return null;let t=new Date(`${e}T00:00:00`);return isNaN(t.getTime())?null:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`})}var X4=4;function Z4({feed:e,testId:t=`feed-card`,className:n,onImport:r,importing:i,busy:a,status:o,onToggleNotebookSubscription:c}){let[l,u]=q4(e.slug).split(` `),d=Y4(e.latestDate),f=e.notebooks.slice(0,X4),p=e.notebooks.length-f.length,m=e.installed&&e.feedId?e.href:void 0,h=e.notebooks.find(e=>e.image)?.image,g=(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground`,children:[(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[e.notebooks.length,` `,e.notebooks.length===1?`notebook`:`notebooks`]}),e.installed&&e.itemCount>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[e.itemCount,` `,e.itemCount===1?`item`:`items`]})]}),e.installed&&d&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[`updated `,d]})]}),!e.installed&&(0,W.jsx)(`span`,{"aria-hidden":!0,children:`·`}),!e.installed&&(0,W.jsx)(`span`,{children:`not imported`})]}),_=(0,W.jsx)(`div`,{className:G(`relative overflow-hidden bg-muted/40 aspect-[16/10]`,l),children:h?(0,W.jsx)(`img`,{src:h,alt:``,loading:`lazy`,className:`absolute inset-0 size-full object-cover`}):(0,W.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:[(0,W.jsx)(`span`,{className:G(`text-7xl font-black tracking-tighter select-none`,u),"aria-hidden":!0,children:J4(e.label)}),(0,W.jsx)(L,{className:G(`absolute bottom-4 right-4 size-6 opacity-50`,u),"aria-hidden":!0})]})});return(0,W.jsxs)(`article`,{"data-testid":t,"data-installed":e.installed,className:G(`group relative flex flex-col overflow-hidden rounded-2xl border border-border bg-card`,`transition-colors hover:border-foreground/25 focus-within:border-foreground/25`,n),children:[m?(0,W.jsx)(xt,{to:m,"data-testid":`${t}-open`,className:`block outline-none`,"aria-label":`Open the library for ${e.label}`,children:_}):_,(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col gap-2 p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,W.jsx)(`h3`,{className:`min-w-0 text-sm font-bold leading-snug text-foreground`,children:m?(0,W.jsx)(xt,{to:m,className:`transition-colors hover:text-primary`,children:e.label}):e.label}),m?(0,W.jsx)(xt,{to:m,"data-testid":`${t}-cta`,"aria-label":`Open the library for ${e.label}`,className:`flex min-h-11 min-w-11 size-11 shrink-0 items-center justify-center rounded-full border border-border text-muted-foreground transition-colors hover:border-primary/50 hover:text-primary`,children:(0,W.jsx)(on,{className:`size-3.5`,"aria-hidden":!0})}):r&&e.feedId?(0,W.jsxs)(`button`,{type:`button`,"data-testid":`${t}-import`,disabled:i||a,onClick:()=>r(e.feedId),className:G(`flex min-h-11 shrink-0 items-center gap-1.5 rounded-full border px-4`,`text-[10px] font-black uppercase tracking-widest`,`border-primary/30 bg-primary/10 text-primary`,`transition-colors hover:bg-primary/20`,`disabled:cursor-wait disabled:opacity-60`),children:[i?(0,W.jsx)(s,{className:`size-3 animate-spin`,"aria-hidden":!0}):(0,W.jsx)(Zt,{className:`size-3`,"aria-hidden":!0}),i?`Importing`:`Import feed`]}):null]}),e.description&&(0,W.jsx)(`p`,{className:`line-clamp-2 text-xs leading-relaxed text-muted-foreground`,children:e.description}),e.notebooks.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,"data-testid":`${t}-notebooks`,children:[f.map(n=>(0,W.jsxs)(`span`,{"data-testid":`${t}-notebook-${n.packageId}`,className:G(`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[9px] font-black uppercase tracking-widest transition-colors`,n.subscribed?`border-emerald-500/40 bg-emerald-500/10 text-emerald-800`:`border-border text-muted-foreground`),children:[n.installed?(0,W.jsx)(xt,{to:n.href,className:`hover:text-primary`,children:n.label}):(0,W.jsx)(`span`,{children:n.label}),c&&e.feedId&&n.chunkId&&(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.preventDefault(),t.stopPropagation(),c(e.feedId,n.chunkId,!n.subscribed)},title:n.subscribed?`Unsubscribe ${n.label}`:`Subscribe ${n.label}`,"aria-label":n.subscribed?`Unsubscribe ${n.label}`:`Subscribe ${n.label}`,"data-testid":`${t}-notebook-toggle-${n.packageId}`,className:`relative -my-3 -mr-2.5 ml-0.5 inline-flex min-h-11 min-w-11 items-center justify-center font-bold hover:text-foreground`,children:n.subscribed?`✓`:`+`})]},n.packageId)),p>0&&(0,W.jsxs)(`span`,{className:`rounded-full border border-dashed border-border px-2 py-0.5 text-[9px] font-black uppercase tracking-widest text-muted-foreground`,children:[`+`,p,` more`]})]}),(0,W.jsxs)(`div`,{className:`mt-auto pt-1`,children:[g,o&&(0,W.jsx)(`p`,{role:o.tone===`error`?`alert`:`status`,"data-testid":`${t}-status`,className:G(`mt-1.5 flex items-start gap-1.5 text-xs`,o.tone===`error`?`text-destructive`:`text-muted-foreground`),children:(0,W.jsx)(`span`,{children:o.text})})]})]})]})}function Q4({direction:e,children:t,testId:n,className:r}){let i=(0,U.useRef)(null),a=(0,U.useRef)(null),[o,s]=(0,U.useState)(1),c=LJ(`(prefers-reduced-motion: reduce)`);(0,U.useEffect)(()=>{let e=i.current,t=a.current;if(!e||!t)return;let n=()=>{let n=o*2,r=t.scrollWidth/n;if(r<=0)return;let i=Math.max(1,Math.ceil(e.clientWidth/r));i!==o&&s(i)};n();let r=new ResizeObserver(n);return r.observe(e),r.observe(t),()=>r.disconnect()},[o,t]);let l=c?1:o*2;return(0,W.jsx)(`div`,{ref:i,"data-testid":n,className:G(`wod-marquee overflow-hidden`,r),children:(0,W.jsx)(`div`,{ref:a,className:G(`flex w-max`,!c&&`wod-marquee-track`,!c&&e===`left`&&`wod-marquee-track--left`,!c&&e===`right`&&`wod-marquee-track--right`,!c&&e===`alternate`&&`wod-marquee-track--left wod-marquee-track--alternate`),children:Array.from({length:l},(e,n)=>(0,W.jsx)(`div`,{"data-marquee-copy":n,"aria-hidden":n>0,inert:n>0,className:`flex shrink-0 items-stretch gap-4 pr-4`,children:t},n))})})}var $4=[{value:`updated`,label:`Updated`},{value:`name`,label:`Name`},{value:`size`,label:`Size`}],e3=`group flex flex-col justify-between rounded-2xl 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 t3(e){let t=e.icon;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg bg-foreground text-background`,children:(0,W.jsx)(t,{className:`size-5`,"aria-hidden":!0})}),(0,W.jsx)(`h3`,{className:`mt-4 text-base font-semibold text-foreground`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-1.5 text-sm leading-6 text-muted-foreground`,children:e.description})]}),e.note?(0,W.jsx)(`span`,{className:`mt-4 text-xs font-medium text-muted-foreground`,children:e.note}):(0,W.jsxs)(`span`,{className:`mt-4 inline-flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,W.jsx)(`span`,{children:e.action}),(0,W.jsx)(on,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]})]})}function n3(){let e=On(),[t,n]=(0,U.useState)(``),[r,i]=(0,U.useState)(`updated`),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)({}),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(),[p,m]=(0,U.useState)(0);(0,U.useEffect)(()=>lN(()=>m(e=>e+1)),[]);let h=a!==null,g=_k(),_=LJ(`(min-width: 1024px)`),v=(0,U.useMemo)(()=>U4(YA(),g,JA(),(e,t)=>oN(e,t)),[g,p]),y=(0,U.useMemo)(()=>G4(W4(v,{text:t,feedId:d,subscribedOnly:l}),r),[v,t,r,d,l]),b=Math.ceil(y.length/2),x=y.slice(0,b),S=y.slice(b),C=(0,U.useCallback)(()=>{Kj.record(qj.libraryOpened)},[]),[w,T]=(0,U.useState)(!0);(0,U.useEffect)(()=>{let e=!1,t=()=>{$N().then(t=>{e||T(t.libraryImported)}).catch(()=>{})};t();let n=lN(t);return()=>{e=!0,n()}},[h]);let E=(0,U.useCallback)(async e=>{if(a)return;o(e);let t=t=>c(n=>({...n,[e]:t}));t({text:`Checking the feed…`,tone:`muted`});try{let n=await JN(e,{onProgress:e=>t({text:I4(e),tone:`muted`})});t(n===`imported`||n===`current`?{text:aN(e,!0)?n===`imported`?`Imported — this feed is available offline.`:`Already up to date.`:`Subscribed for this session only — browser storage is unavailable.`,tone:`muted`}:{text:n===`server-stale`?`Published version is older than stored copy.`:n===`busy`?`Another tab is syncing. Try again shortly.`:`Sync failed. Check connection and try again.`,tone:`error`})}catch(e){t({text:e instanceof Error?e.message:String(e),tone:`error`})}finally{o(null)}},[a]),D=(0,U.useCallback)(async(e,t,n)=>{sN(e,t,n),n&&JN(e,{force:!1})},[]),O=(0,U.useCallback)(async()=>{let t=gF(),n=await SF.create({journalDate:t,title:t,rawContent:``});Kj.record(qj.noteCreated),e(HP(n.id))},[e]),k=!!t.trim();return(0,W.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,W.jsx)(l1,{index:`03`,before:`Library & `,accentText:`Community Feeds`,after:``,accent:``,blurb:`Subscribe to a feed — one Markdown repository compiled with npx wod build into a versioned manifest, served from its own GitHub Pages. One Subscribe imports every notebook the feed publishes; browse the feeds below, notebooks and all.`}),(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`label`,{className:`relative w-full sm:w-64`,children:[(0,W.jsx)(kn,{className:`pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground/60`,"aria-hidden":!0}),(0,W.jsx)(`input`,{type:`search`,value:t,onChange:e=>n(e.target.value),placeholder:`Search feeds…`,"aria-label":`Search feeds`,"data-testid":`package-search-input`,className:`h-11 w-full rounded-full border border-border bg-background pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground outline-none transition-colors focus:border-primary/50`}),t&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(``),"aria-label":`Clear search`,className:`absolute right-0 top-1/2 -translate-y-1/2 size-11 inline-flex items-center justify-center text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(Sr,{className:`size-3.5`})})]}),(0,W.jsxs)(`label`,{className:`flex min-h-11 items-center gap-2 cursor-pointer select-none text-muted-foreground hover:text-foreground px-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:l,onChange:e=>u(e.target.checked),"data-testid":`filter-subscribed-only`,className:`size-4 accent-primary rounded`}),(0,W.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-widest`,children:`Subscribed only`})]}),(0,W.jsxs)(`select`,{value:d??``,onChange:e=>f(e.target.value?e.target.value:void 0),"aria-label":`Filter by feed`,"data-testid":`filter-feed-source`,className:`min-h-11 h-11 rounded-full border border-border bg-background px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground outline-none transition-colors hover:border-foreground/25 focus:border-primary/50`,children:[(0,W.jsx)(`option`,{value:``,children:`All feeds`}),JA().map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))]}),(0,W.jsx)(`div`,{className:`ml-auto flex items-center gap-1.5`,role:`group`,"aria-label":`Sort feeds`,children:$4.map(e=>{let t=r===e.value;return(0,W.jsx)(`button`,{type:`button`,"aria-pressed":t,"data-testid":`package-sort-${e.value}`,onClick:()=>i(e.value),className:G(`inline-flex min-h-11 items-center justify-center rounded-full px-3 text-[10px] font-black uppercase tracking-widest transition-colors`,t?`bg-foreground text-background`:`text-muted-foreground hover:text-foreground`),children:e.label},e.value)})})]}),(0,W.jsx)(`div`,{"data-testid":`jump-grid`,className:`mt-6`,children:(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2`,children:[w?(0,W.jsx)(xt,{to:`/notebooks`,onClick:C,"data-testid":`jump-library`,className:e3,children:(0,W.jsx)(t3,{icon:pe,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`})}):(0,W.jsx)(`div`,{"data-testid":`jump-library`,"aria-disabled":`true`,className:`${e3} cursor-not-allowed opacity-60`,children:(0,W.jsx)(t3,{icon:pe,title:`Library`,description:`Curated workouts and sessions, organized by tag.`,action:`Open the library`,note:`0 feeds synchronized`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{O()},"data-testid":`jump-new-note`,className:e3,children:(0,W.jsx)(t3,{icon:fr,title:`Start your own journal`,description:`Create today's note and log your first workout.`,action:`Create today's note`})})]})})]}),(0,W.jsx)(`div`,{"data-testid":`jump-rows`,className:`mt-6`,children:y.length>0?_?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q4,{direction:`left`,testId:`jump-row-a`,children:x.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] sm:w-[320px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))}),S.length>0&&(0,W.jsx)(Q4,{direction:`right`,testId:`jump-row-b`,className:`mt-4`,children:S.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] sm:w-[320px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))})]}):(0,W.jsx)(Q4,{direction:`alternate`,testId:`jump-row-mobile`,children:y.map(e=>(0,W.jsx)(Z4,{feed:e,testId:`feed-card-${e.feedId??e.slug}`,className:`w-[290px] shrink-0`,onImport:E,importing:!!e.feedId&&a===e.feedId,busy:h,status:e.feedId?s[e.feedId]:void 0,onToggleNotebookSubscription:D},e.feedId??e.slug))}):(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:(0,W.jsxs)(`div`,{"data-testid":`jump-empty`,className:`flex flex-col items-center justify-center rounded-2xl border border-dashed border-border p-10 text-center`,children:[(0,W.jsx)(`p`,{className:`text-sm font-bold text-muted-foreground`,children:`No feeds match your search.`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Try a different term or clear the filters.`}),k&&(0,W.jsx)(`button`,{type:`button`,"data-testid":`jump-clear-filters`,onClick:()=>{n(``),f(void 0),u(!1)},className:`mt-3 h-8 rounded-full border border-border px-3 text-[10px] font-black uppercase tracking-widest text-muted-foreground transition-colors hover:border-primary/50 hover:text-primary`,children:`Clear filters`})]})})}),(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-6xl px-4 sm:px-6`,children:(0,W.jsx)(`p`,{className:`mt-4 font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground xl:text-[11px]`,children:`— or keep scrolling ↓`})})]})}var r3=`wods/examples/home/welcome-1.md`;function i3({wodFiles:e,theme:t,quests:n}){let r=LJ(`(prefers-reduced-motion: reduce)`),i=Jj()?.track;Xj(`/`);let a=(0,U.useMemo)(()=>zH(r3,e),[e]),[o,s]=(0,U.useState)(()=>x2()),c=o?.content??a,l=o?o.by?.trim()||`anonymous`:void 0;(0,U.useEffect)(()=>{let e=e=>{let t=e.detail;t?.content&&(s(t),d(t.content))};return window.addEventListener(`wodwiki:home-shared`,e),()=>window.removeEventListener(`wodwiki:home-shared`,e)},[]);let[u,d]=(0,U.useState)(c),f=(0,U.useRef)(u);f.current=u;let p=(0,U.useRef)([]),m=(0,U.useRef)(!1),{run:h,start:g,finalize:_,end:v}=wJ(),y=(0,U.useRef)(h);y.current=h;let b=(0,U.useRef)(!1),x=(0,U.useRef)(!1),S=(0,U.useRef)(null),[C,w]=(0,U.useState)(!1),T=(0,U.useRef)(!1),E=(0,U.useRef)(null),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),j=(0,U.useRef)(k);j.current=k;let M=(0,U.useRef)(!1),N=(0,U.useRef)(()=>{}),[P,F]=(0,U.useState)(0),[I,L]=(0,U.useState)(!1),[R,ee]=(0,U.useState)(!1),[z,te]=(0,U.useState)(null),ne=(0,U.useCallback)(async(e,t,n)=>{if(!t||M.current)return!1;M.current=!0,x.current=!1,b.current=!1,S.current=null,te(t),F(e=>e+1),L(!0),O(null),A(!0);try{await g(e,t,{pageTitle:`Home`,sectionTitle:n})}catch(e){return console.error(`[HomeTour] failed to persist playground run note:`,e),A(!1),te(null),Q({title:`Could not start workout`,description:`The playground entry could not be saved.`,variant:`destructive`}),!1}finally{M.current=!1}return!0},[g]),re=(0,U.useCallback)(async()=>{if(T.current=!1,w(!1),S.current)try{await _(S.current,!1),S.current=null}catch(e){console.error(`[HomeTour] retry save failed:`,e),Q({title:`Session still not saved`,description:`The run is kept — try again.`,variant:`destructive`});return}let e=E.current;if(E.current=null,e)switch(e.kind){case`apply-doc`:m.current=!1,d(e.doc),A(!1),te(null),F(e=>e+1),L(!1);break;case`restart`:await ne(e.doc,e.block,e.sectionTitle)}},[ne,_]),ie=(0,U.useCallback)(e=>{if(!E.current){if(!y.current||x.current||!b.current||S.current){E.current=e,re();return}E.current=e,T.current=!0,w(!0)}},[re]),ae=(0,U.useRef)(null),oe=(0,U.useRef)(null),se=(0,U.useRef)(null);t$(`hero`,se);let[ce,le]=(0,U.useState)(!1),B=(0,U.useRef)(ce);B.current=ce;let V=(0,U.useCallback)(()=>{let e=document.getElementById(`tour-section-editor`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,e.getBoundingClientRect().top+window.scrollY-n),behavior:r?`auto`:`smooth`})},[r]),ue=(0,U.useCallback)(()=>{le(!0),window.setTimeout(V,350)},[V]),de=(0,U.useCallback)(()=>{le(!1),window.scrollTo({top:0,behavior:r?`auto`:`smooth`})},[r]),fe=(0,U.useRef)(!1),pe=(0,U.useCallback)(()=>{ie({kind:`apply-doc`,doc:c})},[c,ie]);(0,U.useEffect)(()=>{let e=oe.current;if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{e.isIntersecting?fe.current&&!j.current&&(fe.current=!1,pe()):fe.current=!0});return t.observe(e),()=>t.disconnect()},[pe]);let me=(0,U.useCallback)(()=>{S2(),s(null),ie({kind:`apply-doc`,doc:a})},[a,ie]),he=(0,U.useCallback)(()=>{pe();let e=document.getElementById(`tour-section-editor`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,e.getBoundingClientRect().top+window.scrollY-n),behavior:r?`auto`:`smooth`})},[r,pe]);IJ({pageRoute:`/`,quests:n,initialSource:c,currentSource:u}),FJ({pageRoute:`/`,quests:n,completedResults:D}),N.current=E2(`/`,n),C2({pageRoute:`/`,quests:n,running:R}),(0,U.useEffect)(()=>{let e=document.getElementById(`tour-section-insights`);if(!e||typeof IntersectionObserver>`u`)return;let t=new IntersectionObserver(([e])=>{e.isIntersecting&&N.current?.(`session-insights`)});return t.observe(e),()=>t.disconnect()},[]);let ge=(0,U.useCallback)(e=>{d(e),e!==c&&!m.current&&(m.current=!0,i?.(qj.demoEdited))},[c,i]),_e=(0,U.useCallback)(e=>{p.current=e},[]),ve=(0,U.useCallback)((e,t,n,r)=>{if(n){if(i?.(qj.demoRun),r&&ee(!0),te(n),A(!0),L(!0),F(e=>e+1),O(null),M.current||E.current){E.current={kind:`restart`,doc:t,block:n,sectionTitle:e};return}if(y.current&&b.current&&!x.current){E.current={kind:`restart`,doc:t,block:n,sectionTitle:e},T.current=!0,w(!0);return}if(y.current&&!x.current){v().then(()=>ne(t,n,e));return}ne(t,n,e)}},[ne,v,i]),ye=(0,U.useCallback)(()=>{ve(`Run`,f.current,p.current[0],!0)},[ve]),be=(0,U.useCallback)(()=>{let e=()=>{let e=document.getElementById(`tour-section-insights`),t=ae.current;if(!e||!t||typeof window.scrollTo!=`function`)return;let n=t.getBoundingClientRect().top+window.scrollY,i=Math.max(0,e.getBoundingClientRect().top+window.scrollY-n);window.scrollTo({top:i,behavior:r?`auto`:`smooth`})};if(B.current){e();return}le(!0),window.setTimeout(e,350)},[r]),xe=(0,U.useCallback)((e,t)=>{if(!(x.current&&!S.current))return(t.logs??[]).length===0?(x.current=!0,O(t),A(!1),be(),re()):(x.current=!0,_(t,t.completed).then(()=>{if(S.current=null,O(t),T.current||E.current)return A(!1),re()}).catch(e=>{throw x.current=!1,b.current=!1,S.current=t,T.current=!1,w(!1),E.current=null,Q({title:`Session not saved`,description:`The run could not be recorded. Nothing was lost — your next action retries the save.`,variant:`destructive`}),e}))},[_,re,be]),Se=(0,U.useCallback)(()=>{A(!1),be()},[be]),Ce=(0,U.useRef)(null),we=(0,U.useCallback)(e=>{Ce.current=e},[]),Te=(0,U.useCallback)(()=>{b.current=!0;let e=Ce.current;I&&e&&e.handle(new tm(void 0,e.nowProvider)),L(!1)},[I]),{setL3Items:Ee}=IP(),De=(0,U.useMemo)(()=>[{id:`tour-hero`,label:`Welcome`,level:3,action:{type:`scroll`,sectionId:`tour-hero`}},{id:`editor`,label:`Live Preview`,level:3,action:{type:`scroll`,sectionId:`tour-section-editor`}},{id:`insights`,label:`Session Insights`,level:3,action:{type:`scroll`,sectionId:`tour-section-insights`},secondaryAction:{id:`run-start`,label:`Run the workout`,action:{type:`call`,handler:ye}}},{id:`boards`,label:`One Run Becomes Many`,level:3,action:{type:`scroll`,sectionId:`tour-section-boards`}},{id:`community-feeds`,label:`Library & Community Feeds`,level:3,action:{type:`scroll`,sectionId:`tour-section-community-feeds`}},{id:`offerings`,label:`Who owns the Data?`,level:3,action:{type:`scroll`,sectionId:`tour-section-offerings`}},{id:`university`,label:`Wod Wiki University`,level:3,action:{type:`scroll`,sectionId:`tour-section-university`}}],[ye]);(0,U.useEffect)(()=>(Ee(De),()=>Ee([])),[Ee,De]),O2((0,U.useMemo)(()=>De.map(e=>e.action.type===`scroll`?e.action.sectionId:e.id),[De]));let Oe=h?.block??z,ke=k&&Oe&&(0,W.jsx)(fQ,{block:Oe,resultId:h?.resultId,autoStart:I,externalStop:C,onRunStarted:Te,onRuntimeReady:we,onClose:Se,onCompleteWorkout:xe},P),Ae=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(t4,{}),(0,W.jsxs)(`p`,{className:`-mt-8 text-center font-mono text-[10px] uppercase tracking-[0.3em] text-muted-foreground xl:text-[11px]`,children:[`— or learn the language with examples`,` `,(0,W.jsx)(xt,{to:`/syntax`,className:`text-foreground underline underline-offset-4 transition-colors hover:text-primary`,children:`on the syntax page →`})]})]}),je=(0,W.jsx)(n$,{gateId:`editor-pane`,segmentId:`hero`,className:`w-full max-w-[720px] xl:max-w-[820px] 2xl:max-w-[920px]`,children:(0,W.jsx)(BJ,{title:l?l.toLowerCase().startsWith(`shared by`)?l:`shared by: ${l}`:`welcome-1.md`,headerActions:l&&(0,W.jsx)(`button`,{type:`button`,onClick:me,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-[540px] lg:h-[600px] 2xl:h-[640px]`,children:(0,W.jsx)(n4,{doc:u,theme:t,onDocChange:ge,onBlocksChange:_e,onRun:ye})})}),Me=(0,W.jsx)(`div`,{id:`tour-why-video-wrap`,"aria-hidden":ce,className:G(`grid w-full transition-all duration-300 motion-reduce:transition-none`,ce?`grid-rows-[0fr] opacity-0 invisible`:`grid-rows-[1fr] opacity-100`),children:(0,W.jsx)(`div`,{className:`min-h-0 overflow-hidden`,children:(0,W.jsx)(L2,{onWatched:ue})})}),Ne=(0,W.jsxs)(`div`,{ref:oe,id:`tour-section-editor`,"data-testid":`tour-section-editor`,className:`flex w-full flex-col items-center px-5 py-8 text-center lg:px-10 xl:py-10 2xl:px-16`,children:[ce&&(0,W.jsxs)(`button`,{type:`button`,onClick:de,"data-testid":`tour-why-watch-again`,className:`inline-flex items-center gap-1.5 rounded-t-lg border border-b-0 border-border bg-muted/40 px-3 py-1.5 font-mono text-[10px] uppercase tracking-[0.2em] text-muted-foreground transition-colors hover:text-foreground`,children:[(0,W.jsx)(gr,{className:`size-3`}),`Watch again`]}),je]});return r?(0,W.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,W.jsxs)(`section`,{id:`tour-hero`,"data-testid":`tour-hero`,className:`flex flex-col items-center gap-5 px-6 py-6 text-center`,children:[(0,W.jsx)(F2,{}),Me,Ne]}),(0,W.jsx)(F4,{session:D,onRun:ye,onBackToEditor:he}),(0,W.jsx)(n3,{}),Ae,(0,W.jsx)(g1,{variant:`university`}),(0,W.jsx)(z2,{}),ke]}):(0,W.jsxs)(`div`,{"data-testid":`home-tour`,children:[(0,W.jsx)(`div`,{ref:ae,"aria-hidden":!0,className:`h-px`}),(0,W.jsxs)(`section`,{ref:se,id:`tour-hero`,"data-testid":`tour-hero`,className:`relative flex min-h-[calc(100dvh-65px)] flex-col items-center justify-center gap-5 px-5 py-6 text-center lg:min-h-[calc(100dvh-104px)] lg:px-10 xl:gap-7 xl:py-8 2xl:px-16`,children:[(0,W.jsx)(F2,{}),Me,Ne]}),(0,W.jsx)(F4,{session:D,onRun:ye,onBackToEditor:he}),(0,W.jsx)(n3,{}),Ae,(0,W.jsx)(g1,{variant:`university`}),(0,W.jsx)(z2,{}),ke]})}function a3(e){return(0,W.jsx)(A2,{children:(0,W.jsx)(e$,{children:(0,W.jsx)(i3,{...e})})})}function o3({wodFiles:e,theme:t}){let n=(0,U.useMemo)(()=>g2(e),[e]);return(0,U.useEffect)(()=>{bS(`homeFirstPaint`)},[]),(0,W.jsx)(a3,{wodFiles:n,theme:t,quests:m2.quests})}var s3=`idle`,c3=null,l3=new Set,u3=null,d3=null;function f3(){for(let e of l3)e()}function p3(e){typeof document>`u`||(document.documentElement.dataset.feedState=e)}function m3(e){typeof document>`u`||(e===null?delete document.documentElement.dataset.feedOutcome:document.documentElement.dataset.feedOutcome=e)}p3(s3);function h3(e){s3!==e&&(s3=e,p3(e),f3())}function g3(){u3&&=(clearTimeout(u3),null),d3&&=(d3.close(),null)}function _3(e){c3=e,f3()}function v3(){g3(),m3(null),c3!==null&&(c3=null,f3()),h3(`preparing`)}function y3(e){switch(m3(e),e){case`busy`:if(s3!==`preparing`)return;typeof BroadcastChannel<`u`&&!d3&&(d3=new BroadcastChannel(uy),d3.onmessage=e=>{e.data?.kind===`seed-imported`&&(g3(),h3(`ready`))}),u3=setTimeout(()=>{KN({onProgress:_3}).then(y3)},SN);break;case`error`:g3(),h3(`error`);break;default:g3(),h3(`ready`)}}function b3(){return s3===`idle`?`ready`:s3}function x3(){return c3}function S3(e){return l3.add(e),()=>l3.delete(e)}function C3(){return(0,U.useSyncExternalStore)(S3,b3)}function w3(){return(0,U.useSyncExternalStore)(S3,x3)}var T3=null;function E3(e={}){return bS(`feedStart`),T3??=D3(e).finally(()=>{bS(`feedSettled`)}),T3}async function D3(e){let t=t=>{_3(t),e.onProgress?.(t)},n=e.sources??DN();await iP(e).catch(e=>console.error(`[feedSync] notebook vocabulary migration failed`,e)),await nP(e).catch(e=>console.error(`[feedSync] checkpoint adoption failed`,e)),await pN(n,e.storage).catch(e=>console.error(`[feedSync] subscription migration failed`,e));let r=e.storage??WM(),i;try{i=await r.getSeedMeta(fy(`core`))}catch{i=void 0}let a=!i||i.seedVersion<=0;if(a?v3():y3(`current`),await rP(e).catch(e=>console.error(`[feedSync] feed provenance repair failed`,e)),a){y3(await KN({...e,sources:n,onProgress:t,onFirstPaint:()=>y3(`imported`)})),n.some(e=>e.id!==`core`&&iN(e.id))&&await KN({...e,sources:n,onProgress:t}).catch(e=>console.error(`[feedSync] background boot sync failed`,e));return}await KN({...e,sources:n,onProgress:t}).catch(e=>console.error(`[feedSync] background boot sync failed`,e))}function O3(){let[e,t]=(0,U.useState)(null);return(0,U.useEffect)(()=>{let e=!1,n=()=>{$N().then(n=>{e||t(!n.libraryImported)}).catch(()=>{e||t(!0)})};n();let r=aS(()=>n()),i=RN(()=>n()),a=null;if(typeof BroadcastChannel<`u`)try{a=new BroadcastChannel(uy),a.onmessage=()=>n()}catch{}return()=>{e=!0,r(),i(),a?.close()}},[]),e}function k3({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,U.useRef)(a),[c,l]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(a>s.current){l(!0);let e=setTimeout(()=>l(!1),200);return s.current=a,()=>clearTimeout(e)}s.current=a},[a]),(0,W.jsxs)(`div`,{className:G(`w-full`,r),children:[n?(0,W.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,W.jsx)(`span`,{children:n}),(0,W.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[a,`/`,i]})]}):null,(0,W.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,W.jsx)(`div`,{className:G(`h-full rounded-pill transition-[width] duration-500 ease-out`,c?`bg-brand-deep`:`bg-brand`),style:{width:`${o}%`}})})]})}function A3(e,t,n,r){HU.getState().open({placeholder:`Craft the query…`,wql:{initialQuery:e,execute:t,onApply:n,preferredChoices:r},sources:[OW()]})}function j3({query:e,onQueryChange:t,scopeOptions:n,execute:r,defaultQuery:i,compact:a=!1,className:o}){let s=(0,U.useCallback)(()=>A3(e,r,t,n),[e,r,t,n]);return a?(0,W.jsx)(`div`,{"data-testid":`stream-query-bar-dock`,className:G(`flex min-h-12 w-full items-stretch overflow-hidden rounded-xl border border-border bg-muted/40 shadow-xs`,o),children:(0,W.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,W.jsx)(kn,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,W.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,W.jsx)(Ot,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`})]})}):(0,W.jsx)(`div`,{"data-testid":`stream-query-bar`,className:G(`flex min-w-0 flex-1 items-center gap-1 text-xs`,o),children:(0,W.jsx)(aT,{query:e,onQueryChange:t,compact:!0,showDiagnostics:!1,preferredChoices:n,placeholder:`Filter or search…`,className:`min-w-0 flex-1`})})}function M3(e,t){let n=t??X(e);return n.error?null:n.groupBy?.length?n.groupBy.map(e=>String(e).toLowerCase()):null}function N3(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/(^-|-$)/g,``)||`default`}function P3(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=F3(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 F3(e,t,n){let r=t.toLowerCase(),i=fW();if(r===`date`||r===`day`){let t=new Map,r=[],a=[];for(let i of e){let e=i.date??(i.sourceNotebook===`playground`&&i.createdAt&&i.createdAt>9466848e5?new Date(i.createdAt).toISOString().slice(0,10):null);if(n?.shelfVisible&&(e==null||i.kind===`note`&&!i.sourceNote))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:`Notebook Sessions`,entries:r});for(let e of o)s.push({id:`date-group-${e}`,key:e,label:e===i?`Today`:pW(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])}return bI(Array.from(t.entries()),`priority-then-alpha`,{priority:[`Strength`,`Gymnastics`,`Cardio`,`Running`,`Rowing`,`Weightlifting`]}).map(([e])=>e).map(e=>({id:`group-discipline-${N3(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 bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-origin-${N3(e)}`,key:e,label:e,entries:t}))}if(r===`source`||r===`notebook`){let t=new Map;for(let n of e){let e=n.sourceNotebook||`Other`,r=e.charAt(0).toUpperCase()+e.slice(1),i=t.get(r);i?i.push(n):t.set(r,[n])}return bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-source-${N3(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 bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-kind-${N3(e)}`,key:e,label:e,entries:t}))}if(r===`feed`){let t=new Map;for(let n of e){let e=n.feedId??(n.sourceNotebook===`journal`||n.sourceNotebook===`playground`?`local`:`core`),r=t.get(e);r?r.push(n):t.set(e,[n])}return bI(Array.from(t.entries()),`alpha`).map(([e,t])=>({id:`group-feed-${N3(e)}`,key:e,label:e===`local`?`Local`:e===`core`?`Core`:e,entries:t}))}if(!jm.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 bI(Array.from(t.entries()),`alpha-sink-last`,{sink:`Unassigned`}).map(([e,t])=>({id:`group-property-${N3(r)}-${N3(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 bI(Array.from(a.entries()),`alpha-sink-last`,{sink:`Untagged`}).map(([e,t])=>({id:`group-tag-${N3(e)}`,key:e,label:e,entries:t}))}var I3=[{id:UF.route,label:`Journal`,profile:UF,scopeChoices:HC,shortcuts:!0},{id:GF.route,label:`Notes`,profile:GF,scopeChoices:HC,shortcuts:!0},{id:WF.route,label:`Notebooks`,profile:WF,scopeChoices:HC,shortcuts:!0},{id:KF.route,label:`Feeds`,profile:KF,scopeChoices:HC,shortcuts:!0},{id:qF.route,label:`Pages`,profile:qF,scopeChoices:HC,shortcuts:!0},{id:JF.route,label:`Efforts`,profile:JF,scopeChoices:HC,shortcuts:!0},{id:YF.route,label:`Equipment`,profile:YF,scopeChoices:HC,shortcuts:!0},{id:XF.route,label:`Tags`,profile:XF,shortcuts:!0},{id:ZF.route,label:`Sessions`,profile:ZF,scopeChoices:HC,shortcuts:!0},{id:QF.route,label:`Playgrounds`,profile:QF,scopeChoices:HC,shortcuts:!0}],L3={id:`/dashboards`,label:`Dashboards`,systemDefaultWql:`:dashboard{}`},R3={id:wI,label:`Command palette`,systemDefaultWql:wW,scopeChoices:HC},z3=[...I3,L3,R3];function B3(e){return z3.find(t=>t.id===e)}function V3({className:e,...t}){return(0,W.jsx)(P,{"data-slot":`control`,...t,className:G(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,W.jsx)(`span`,{"aria-hidden":`true`,className:G(`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 H3=Object.fromEntries([...HC,...VC].map(e=>[e.value,e.label]));function U3({values:e,choices:t,labels:n,onChange:r,testPrefix:i,reorderable:a=!1}){let o=(t,n)=>{let i=[...e],a=t+n;if(a<0||a>=i.length)return;let o=i[t];i[t]=i[a],i[a]=o,r(i)};return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[e.length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map((t,s)=>(0,W.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,a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":`Move ${t} up`,"data-testid":`${i}-up-${t}`,disabled:s===0,onClick:()=>o(s,-1),className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,W.jsx)(_e,{className:`size-3`})}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Move ${t} down`,"data-testid":`${i}-down-${t}`,disabled:s===e.length-1,onClick:()=>o(s,1),className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,children:(0,W.jsx)(tn,{className:`size-3`})})]}),(0,W.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,W.jsx)(Sr,{className:`size-3`})})]},t))}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.filter(t=>!e.includes(t.value)).map(t=>(0,W.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 W3({values:e,choices:t,onChange:n,testPrefix:r}){return(0,W.jsx)(U3,{values:e,choices:t,labels:H3,onChange:n,testPrefix:r,reorderable:!0})}function G3({values:e,onChange:t,testPrefix:n}){return(0,W.jsx)(U3,{values:e,choices:gI.map(e=>({value:e.id,label:e.label})),labels:Object.fromEntries(gI.map(e=>[e.id,e.label])),onChange:t,testPrefix:n,reorderable:!0})}function K3({label:e,enabled:t,onEnabledChange:n,testId:r,children:i}){return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:e}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`Custom`,(0,W.jsx)(V3,{checked:t,onChange:n,"data-testid":r})]})]}),i]})}function q3({shortcuts:e,icons:t,landingId:n,onEdit:r,onDelete:i,onCreate:a,error:o,testPrefix:s}){return(0,W.jsxs)(`div`,{className:`space-y-2`,"data-testid":`${s}-shortcuts`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Saved shortcuts`}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:a,"data-testid":`${s}-shortcut-new`,children:`New shortcut`})]}),e.map(e=>{let a=t[e.icon]??t.bookmark,o=e.to?`Opens ${e.to}`:e.wql||`Landing (no query)`;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border/50 px-2 py-1.5`,"data-testid":`${s}-shortcut-${e.id}`,children:[(0,W.jsx)(a,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`min-w-0 max-w-40 truncate text-xs font-medium`,children:e.label}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[10px] text-muted-foreground`,children:o}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Edit ${e.label}`,"data-testid":`${s}-shortcut-edit-${e.id}`,onClick:()=>r(e),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-foreground`,children:(0,W.jsx)(dr,{className:`size-3`})}),!e.to&&e.id!==n&&(0,W.jsx)(`button`,{type:`button`,"aria-label":`Delete ${e.label}`,"data-testid":`${s}-shortcut-delete-${e.id}`,onClick:()=>i(e.id),className:`shrink-0 rounded p-1 text-muted-foreground hover:text-destructive`,children:(0,W.jsx)(ne,{className:`size-3`})})]},e.id)}),o&&(0,W.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`${s}-shortcut-error`,children:o})]})}function J3(e){return{defaultWql:e.defaultWql??``,customScope:e.typeOptions!==void 0,scopeOptions:e.typeOptions??[],customGroupBy:e.groupByOptions!==void 0,groupByOptions:e.groupByOptions??[]}}function Y3(e){return{defaultWql:e.defaultWql.trim()||void 0,typeOptions:e.customScope?e.scopeOptions:void 0,groupByOptions:e.customGroupBy?e.groupByOptions:void 0}}function X3({surface:e,onSaved:t}){let n=UI(e.id),r=dL(e.id),[i,a]=(0,U.useState)(()=>J3(n)),[o,s]=(0,U.useState)(()=>n),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null);(0,U.useEffect)(()=>{a(J3(n)),s(n),l(null),d(null)},[n]);let m=e.profile?.defaultWql??e.systemDefaultWql??``,h=(()=>{let e=i.defaultWql.trim();return e?Gw(e).error??null:null})(),g=Y3(i),_=JSON.stringify(g)!==JSON.stringify(o),v=Object.values(o).some(e=>e!==void 0),y=[...o.invalidTypeOptions??[],...o.invalidGroupByOptions??[]],b=async()=>{if(!_)return;let n=i.defaultWql.trim();if(!(n&&Gw(n).error)){if(!await II(e.id,g)){l(`Save failed — storage is unavailable; the previous default still stands.`);return}l(null),s(FI(e.id)),t?.()}},x=async()=>{if(!await LI(e.id)){l(`Reset failed — storage is unavailable; the stored override still stands.`);return}l(null),s({}),a(J3({})),t?.()},S=async t=>{d(null),await aL(e.id,r.filter(e=>e.id!==t))||d(`Delete failed — storage is unavailable. Nothing was lost; the link remains.`)},C=e.scopeChoices??[],w=C.length>0;return(0,W.jsxs)(`div`,{className:`space-y-5`,"data-testid":`query-settings-panel`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-xs font-semibold text-muted-foreground`,children:`Landing default query`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`System default: `,(0,W.jsx)(`span`,{className:`font-mono`,children:m})]}),(0,W.jsx)(`textarea`,{rows:2,value:i.defaultWql,onChange:e=>a({...i,defaultWql:e.target.value}),placeholder:m,"data-testid":`query-settings-wql`,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`}),h?(0,W.jsxs)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-settings-wql-error`,children:[`Couldn't parse — `,h]}):!i.defaultWql.trim()&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Empty — the system default is used.`})]}),y.length>0&&(0,W.jsxs)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-invalid`,children:[`Stored options no longer recognized: `,y.join(`, `),` — remove them; they are never turned into query clauses.`]}),w&&(0,W.jsx)(K3,{label:`Where-stored options`,enabled:i.customScope,onEnabledChange:e=>a({...i,customScope:e}),testId:`query-settings-scope-custom`,children:i.customScope&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(W3,{values:i.scopeOptions,choices:C,onChange:e=>a({...i,scopeOptions:e}),testPrefix:`query-settings-scope`}),i.scopeOptions.length===0&&(0,W.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-scope-empty`,children:`No predefined options — the page nudges for a pick instead.`})]})}),e.profile&&(0,W.jsxs)(K3,{label:`Group-by options`,enabled:i.customGroupBy,onEnabledChange:e=>a({...i,customGroupBy:e}),testId:`query-settings-group-custom`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`The dimensions this page offers first, and the one a bare landing groups by. Order is the priority.`}),i.customGroupBy&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(G3,{values:i.groupByOptions,onChange:e=>a({...i,groupByOptions:e}),testPrefix:`query-settings-group`}),i.groupByOptions.length===0&&(0,W.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`query-settings-group-empty`,children:`No favorites — the page groups by its own default.`})]})]}),e.shortcuts&&(0,W.jsx)(q3,{shortcuts:r,icons:KI,landingId:`all`,onEdit:e=>p({editing:e}),onDelete:S,onCreate:()=>p({editing:null}),error:u,testPrefix:`query-settings`}),c&&(0,W.jsx)(`p`,{className:`text-xs text-destructive`,"data-testid":`query-settings-storage-error`,role:`alert`,children:c}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:x,disabled:!v,"data-testid":`query-settings-reset`,children:[(0,W.jsx)(Bt,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Reset to system default`})]}),(0,W.jsx)(K,{size:`sm`,onClick:b,disabled:!_||!!h,"data-testid":`query-settings-save`,children:`Save`})]}),f&&(0,W.jsx)(gL,{open:!0,onOpenChange:e=>{e||p(null)},route:e.id,editing:f.editing})]})}function Z3({surface:e,open:t,onOpenChange:n}){return(0,W.jsx)(LC,{open:t,onClose:()=>n(!1),title:`${e.label} query settings`,description:`Override the landing query and the Where-stored / Group-By options for this page. 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.`,presentation:`sheet`,children:(0,W.jsx)(X3,{surface:e})})}function Q3({query:e,layout:t,refreshKey:n,onChanged:r,onQueryChange:i,onEditNotebook:a,onDeleteNotebook:o}){let[c,l]=(0,U.useState)([]),[u,d]=(0,U.useState)({}),[f,p]=(0,U.useState)(!0),[m,h]=(0,U.useState)({}),[g,_]=(0,U.useState)({}),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(null),S=(0,U.useCallback)(async()=>{try{let e=await cj.getAllNotebooks().catch(()=>[]);l(e);let t=WM(),n=JA(),r={};for(let e of n){let n=await t.getSeedMeta(fy(e.id)).catch(()=>void 0);n&&(r[e.id]=n)}d(r)}finally{p(!1)}},[]);(0,U.useEffect)(()=>(S(),lN(()=>{S()})),[S,n]);let C=(0,U.useMemo)(()=>{let e=[],t=new Set;for(let n of c){t.add(n.slug);let r=n.origin==="default";e.push({id:n.id,slug:n.slug,notebookId:n.notebookId,chunkId:r?`notebook.${n.slug}`:void 0,feedId:r?`core`:`local`,feedLabel:r?`App Core`:`Yours (Local)`,origin:n.origin,label:n.name,description:n.description,category:n.origin,itemCount:0,localVersion:1,remoteVersion:1,updateAvailable:!1,subscribed:!0,installed:!0,icon:n.icon})}let n=JA();for(let r of n){let n=XA(r.id),i=u[r.id];for(let a of n){let n=a.id,o=a.chunkId,s=oN(r.id,o),c=i?.chunks[o],l=!!c,u=c?.version,d=u??1,f=!!(u&&d&&d>u);t.has(n)||(t.add(n),e.push({slug:n,notebookId:a.chunkId,chunkId:o,feedId:r.id,feedLabel:r.label,origin:`feed`,label:a.label,description:a.description,category:a.category,itemCount:c?.noteIds?.length??0,localVersion:u,remoteVersion:d,updateAvailable:f,subscribed:s,installed:l}))}}return e},[c,u]),{matched:w,activePredicate:T,activeFeedFilter:E,isSubscribedFalse:D,isSubscribedAll:O}=(0,U.useMemo)(()=>{let t=X(e),n=ah(t)?t.filters:[],r=null,i=null,a=null,o=null;for(let e of n)e.key===`feed`?r=e.values.map(e=>e.value).join(`,`):e.key===`subscribed`?i=e.values.map(e=>e.value).join(`,`):e.key===`text`?a=e.values.map(e=>e.value).join(` `).toLowerCase():e.key===`notebook`&&(o=e.values.map(e=>e.value).join(`,`));let s=i===`false`,c=i===`true,false`||i===`false,true`,l=`user ∨ default ∨ subscribed`;return s?l=`subscribed:false`:c?l=`subscribed:true,false`:i===`true`&&(l=`subscribed:true`),{matched:C.filter(e=>{if(r){if(r===`local`){if(e.origin!==`user`)return!1}else if(r!==`*`&&e.feedId!==r)return!1}if(o){let t=o.split(`,`).map(e=>e.replace(/^notebook\//,``));if(!t.includes(e.slug)&&!t.includes(e.notebookId))return!1}return a&&!(e.label.toLowerCase().includes(a)||(e.description??``).toLowerCase().includes(a))?!1:c?!0:s?e.origin===`feed`&&!e.subscribed:e.origin===`user`||e.origin==="default"||e.subscribed}),activePredicate:l,activeFeedFilter:r,isSubscribedFalse:s,isSubscribedAll:c}},[C,e]),k=(0,U.useMemo)(()=>{let e=new Map;for(let t of w){let n=e.get(t.feedId);n?n.push(t):e.set(t.feedId,[t])}return e},[w]),A=async e=>{if(!e.chunkId||m[e.slug])return;h(t=>({...t,[e.slug]:!0})),x(null);let t=!e.subscribed;try{y(t?`Subscribing & pulling ${e.label}…`:`Unsubscribing ${e.label}…`),await XN(e.feedId,e.chunkId,t),await S(),r(),y(t?`Subscribed ${e.label}`:`Unsubscribed ${e.label}`)}catch(e){x(e instanceof Error?e.message:`Subscription update failed.`)}finally{h(t=>({...t,[e.slug]:!1}))}},j=async e=>{if(!(!e.chunkId||m[e.slug])){h(t=>({...t,[e.slug]:!0})),x(null);try{y(`Pulling update for ${e.label}…`),await YN(e.feedId,e.chunkId),await S(),r(),y(`Updated ${e.label}`)}catch(e){x(e instanceof Error?e.message:`Update pull failed.`)}finally{h(t=>({...t,[e.slug]:!1}))}}},M=async e=>{if(!g[e]){_(t=>({...t,[e]:!0})),x(null);try{y(`Subscribing whole feed ${e}…`),aN(e,!0),await JN(e),await S(),r(),y(`Subscribed feed ${e}`)}catch(e){x(e instanceof Error?e.message:`Feed subscription failed.`)}finally{_(t=>({...t,[e]:!1}))}}},N=async e=>{if(!g[e]){_(t=>({...t,[e]:!0})),x(null);try{y(`Unsubscribing feed ${e}…`),await ZN(e),await S(),r(),y(`Unsubscribed feed ${e}`)}catch(e){x(e instanceof Error?e.message:`Feed unsubscribe failed.`)}finally{_(t=>({...t,[e]:!1}))}}};return f?(0,W.jsxs)(`div`,{className:`flex items-center justify-center p-12 text-xs text-muted-foreground`,"data-testid":`notebook-browser-loading`,children:[(0,W.jsx)(s,{className:`size-4 animate-spin mr-2 text-primary`}),(0,W.jsx)(`span`,{children:`Loading library notebooks…`})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,"data-testid":`notebook-library-browser`,children:[(0,W.jsx)(`div`,{role:`status`,"aria-live":`polite`,className:`sr-only`,children:v}),b&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 p-3 rounded-lg border border-destructive/40 bg-destructive/10 text-xs text-destructive`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)($n,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{children:b})]}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>x(null),className:`h-6 px-2 text-xs`,children:`Dismiss`})]}),w.length===0&&(0,W.jsxs)(`div`,{className:`text-center p-8 rounded-xl border border-border bg-card/40 space-y-3`,"data-testid":`notebook-browser-empty`,children:[(0,W.jsx)(pe,{className:`size-8 mx-auto text-muted-foreground/60`}),(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:D?`All published feed notebooks are currently subscribed!`:`No notebooks are imported yet.`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground max-w-sm mx-auto`,children:D?`All published feed notebooks are currently subscribed!`:`No notebooks matched the current filters.`}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2 pt-1`,children:[!O&&(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>i(`:notebook{subscribed:true,false}`),className:`text-xs h-8`,children:`Include unsubscribed notebooks (subscribed:true,false)`}),!D&&(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>i(`:notebook{subscribed:false}`),className:`text-xs h-8`,children:`Available to subscribe`}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>i(`:notebook{}`),className:`text-xs h-8`,children:`Reset to default`})]})]}),t===`cards`&&w.length>0&&(0,W.jsx)(`div`,{className:`space-y-6`,children:[...k.entries()].map(([e,t])=>{let n=t[0]?.feedLabel??e,r=e===`local`?`local`:rN(e);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-border/40 pb-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-xs font-bold uppercase tracking-wider text-muted-foreground`,children:n}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:t.length})]}),e!==`local`&&e!==`core`&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r!==`full`&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>M(e),disabled:g[e],"data-testid":`feed-subscribe-all-${e}`,className:`h-7 px-2 text-xs`,children:[g[e]?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Subscribe All`]}),r!==`unsubscribed`&&(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>N(e),disabled:g[e],"data-testid":`feed-unsubscribe-all-${e}`,className:`h-7 px-2 text-xs text-destructive hover:bg-destructive/10`,children:`Unsubscribe Feed`})]})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3`,children:t.map(e=>{let t=m[e.slug],n=e.subscribed,r=e.origin===`user`;return(0,W.jsxs)(`article`,{className:`rounded-xl border p-4 flex flex-col justify-between gap-3 bg-card transition-all ${n?`border-border`:`border-dashed border-border/80 opacity-80`}`,"data-testid":`notebook-card-${e.slug}`,children:[(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,W.jsxs)(`h4`,{className:`text-sm font-bold text-foreground flex items-center gap-1.5 truncate`,children:[e.icon&&(0,W.jsx)(`span`,{"aria-hidden":!0,children:e.icon}),(0,W.jsx)(`span`,{className:`truncate`,children:e.label})]}),(0,W.jsx)(`div`,{className:`shrink-0 flex items-center gap-1`,children:e.origin===`user`?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-purple-500/10 text-purple-600`,children:`Yours`}):e.origin==="default"?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`Core`}):e.updateAvailable?(0,W.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-600`,children:[`Update v`,e.localVersion,` → v`,e.remoteVersion]}):n&&e.installed?(0,W.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:[`Subscribed · v`,e.localVersion]}):(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`Unsubscribed`})})]}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`pt-2 border-t border-border/40 flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-[11px] font-mono text-muted-foreground`,children:[`feed:`,e.feedId]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-7 px-2 text-xs border-amber-500 text-amber-600 hover:bg-amber-500/10`,children:[t?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):(0,W.jsx)(lt,{className:`size-3 mr-1`}),`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsxs)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-7 px-2 text-xs ${n?`text-muted-foreground`:`bg-sky-600 hover:bg-sky-500 text-white`}`,children:[t?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,n?`Unsubscribe`:`+ Subscribe & Pull`]}),r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>a?.(e),className:`h-7 w-7 p-0`,"aria-label":`Edit ${e.label}`,children:(0,W.jsx)(dr,{className:`size-3`})}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>e.id&&o?.(e.id),className:`h-7 w-7 p-0 text-destructive hover:bg-destructive/10`,"aria-label":`Delete ${e.label}`,children:(0,W.jsx)(ne,{className:`size-3`})}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`inline-flex items-center text-xs font-semibold text-primary hover:underline h-7 px-2`,children:`Open`})]}):(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`inline-flex items-center text-xs font-semibold text-primary hover:underline h-7 px-2`,children:`Open →`})]})]})]},e.slug)})})]},e)})}),t===`feed`&&w.length>0&&(0,W.jsx)(`div`,{className:`space-y-6`,children:[...k.entries()].map(([e,t])=>{let n=t[0]?.feedLabel??e,r=e===`local`?`local`:rN(e);return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`p-4 bg-muted/20 border-b border-border flex items-center justify-between gap-4 flex-wrap`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm font-bold text-foreground`,children:n}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold px-1.5 py-0.5 rounded bg-muted text-muted-foreground uppercase`,children:r})]}),(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:[`feed:`,e]})]}),e!==`local`&&e!==`core`&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r!==`full`&&(0,W.jsxs)(K,{size:`sm`,onClick:()=>M(e),disabled:g[e],"data-testid":`feed-subscribe-all-${e}`,className:`h-8 text-xs bg-sky-600 hover:bg-sky-500 text-white`,children:[g[e]?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Subscribe Whole Feed`]}),r!==`unsubscribed`&&(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>N(e),disabled:g[e],"data-testid":`feed-unsubscribe-all-${e}`,className:`h-8 text-xs text-destructive hover:bg-destructive/10`,children:`Unsubscribe Feed`})]})]}),(0,W.jsx)(`div`,{className:`divide-y divide-border/60`,children:t.map(e=>{let t=m[e.slug],n=e.subscribed;return(0,W.jsxs)(`div`,{className:`p-4 flex flex-wrap items-center justify-between gap-3 ${n?``:`bg-muted/10 opacity-75`}`,"data-testid":`notebook-card-${e.slug}`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`strong`,{className:`text-sm font-medium text-foreground`,children:e.label}),(0,W.jsxs)(`span`,{className:`text-[11px] font-mono text-muted-foreground`,children:[e.chunkId??`local`,` · v`,e.remoteVersion??1,` · `,e.itemCount,` items`]}),e.updateAvailable&&(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-600`,children:`Update Available`})]}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5 truncate`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-8 text-xs border-amber-500 text-amber-600`,children:[`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsx)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-8 text-xs ${n?`text-muted-foreground`:`bg-sky-600 text-white`}`,children:n?`Subscribed ✓`:`+ Subscribe`}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`text-xs font-semibold text-primary hover:underline px-2`,children:`Open →`})]})]},e.slug)})})]},e)})}),t===`rows`&&w.length>0&&(0,W.jsx)(`div`,{className:`rounded-xl border border-border bg-card overflow-x-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-xs text-left`,"data-testid":`notebook-directory-table`,children:[(0,W.jsx)(`thead`,{className:`bg-muted/40 border-b border-border text-muted-foreground font-semibold`,children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`p-3`,children:`Notebook`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Feed (feed:)`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Subscription`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Version`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Workouts`}),(0,W.jsx)(`th`,{className:`p-3`,children:`Updated`}),(0,W.jsx)(`th`,{className:`p-3 text-right`,children:`Actions`})]})}),(0,W.jsx)(`tbody`,{className:`divide-y divide-border/60`,children:w.map(e=>{let t=m[e.slug],n=e.subscribed;return(0,W.jsxs)(`tr`,{className:`hover:bg-muted/20`,"data-testid":`notebook-row-${e.slug}`,children:[(0,W.jsx)(`td`,{className:`p-3 font-medium text-foreground`,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:e.label}),e.description&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate max-w-xs`,children:e.description})]})}),(0,W.jsx)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:e.feedId}),(0,W.jsx)(`td`,{className:`p-3`,children:e.origin===`user`?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-purple-500/10 text-purple-600`,children:`user`}):e.origin==="default"?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`default`}):n?(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600`,children:`subscribed:true`}):(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`subscribed:false`})}),(0,W.jsxs)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:[`v`,e.localVersion??`-`,` / v`,e.remoteVersion??1]}),(0,W.jsx)(`td`,{className:`p-3 tabular-nums`,children:e.itemCount}),(0,W.jsx)(`td`,{className:`p-3 font-mono text-muted-foreground`,children:e.updatedAt??`-`}),(0,W.jsx)(`td`,{className:`p-3 text-right`,children:(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[e.updateAvailable&&(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(e),disabled:t,"data-testid":`notebook-pull-${e.slug}`,className:`h-7 px-2 text-xs border-amber-500 text-amber-600`,children:[`Pull v`,e.remoteVersion]}),e.origin===`feed`&&(0,W.jsx)(K,{variant:n?`ghost`:`default`,size:`sm`,onClick:()=>A(e),disabled:t,"data-testid":n?`notebook-unsubscribe-${e.slug}`:`notebook-subscribe-${e.slug}`,className:`h-7 px-2 text-xs ${n?`text-muted-foreground`:`bg-sky-600 text-white`}`,children:n?`Unsubscribe`:`Subscribe`}),(0,W.jsx)(xt,{to:`/notebook/${encodeURIComponent(e.slug)}`,className:`text-xs font-semibold text-primary hover:underline px-1.5`,children:`Open`})]})})]},e.slug)})})]})})]})}var $3=[`date`,`datetime-local`,`month`,`time`,`week`],e6=(0,U.forwardRef)(function({className:e,...t},n){return(0,W.jsx)(`span`,{"data-slot":`control`,className:G(`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,W.jsx)(qe,{ref:n,...t,className:G(t.type&&$3.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)})})});function t6({feedParam:e,onDismiss:t,onRegistered:n,onSubscribed:r}){let[i,a]=(0,U.useState)(null),[o,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let t=!0,n=TA(e);return n?(a(n),u(!0),g(null),new HM(n).fetchManifest().then(e=>{if(!t)return;let n=My(e);m(n),u(!1)}).catch(e=>{t&&(g(e instanceof Error?e.message:`Failed to probe feed manifest.`),u(!1))})):(a(null),m(null),u(!1)),()=>{t=!1}},[e]);let y=()=>{let e=TA(o);if(!e){g(`Invalid feed URL. Must be an HTTPS URL.`);return}a(e),u(!0),g(null),new HM(e).fetchManifest().then(e=>{let t=My(e);m(t),u(!1)}).catch(e=>{g(e instanceof Error?e.message:`Failed to probe feed manifest.`),u(!1)})},b=()=>{if(!(!i||!p||d))try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!1),n(e.id)}catch(e){g(e instanceof Error?e.message:`Failed to register feed.`)}},x=async()=>{if(!(!i||!p||d)){f(!0),g(null);try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!1),await JN(e.id,{subscribe:!1,manifest:p}),r(e.id)}catch(e){g(e instanceof Error?e.message:`Import failed.`)}finally{f(!1)}}},S=async()=>{if(!(!i||!p||d)){f(!0),g(null);try{let e=MA(p.name??`Custom Feed`,i);aN(e.id,!0),fN(e.id,_),await JN(e.id,{manifest:p}),r(e.id)}catch(e){g(e instanceof Error?e.message:`Sync failed.`)}finally{f(!1)}}};if(!i&&!p)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card/60 p-4 mb-4`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-xs font-semibold px-2 py-0.5 rounded bg-sky-500/10 text-sky-500 border border-sky-500/30`,children:`Unknown Feed`}),(0,W.jsxs)(`span`,{className:`text-sm font-semibold text-foreground`,children:[`Feed "`,e,`" is not registered`]})]}),(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:t,className:`h-7 px-2 text-xs`,children:[(0,W.jsx)(Sr,{className:`size-3.5 mr-1`}),`Dismiss`]})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`To browse or import this feed, enter its HTTPS seed directory URL (containing `,(0,W.jsx)(`code`,{children:`manifest.json`}),`):`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(e6,{value:o,onChange:e=>c(e.target.value),placeholder:`https://example.com/seed/`,className:`text-xs h-8 flex-1`}),(0,W.jsxs)(K,{size:`sm`,onClick:y,disabled:!o.trim()||l,className:`h-8 text-xs`,children:[l?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Probe Feed`]})]}),h&&(0,W.jsx)(`p`,{className:`text-xs text-destructive mt-2`,children:h})]});if(l)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card/60 p-4 mb-4 flex items-center gap-3 text-xs text-muted-foreground`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsx)(s,{className:`size-4 animate-spin text-primary`}),(0,W.jsxs)(`span`,{children:[`Probing feed manifest at `,(0,W.jsxs)(`code`,{children:[i,`manifest.json`]}),`…`]})]});if(h&&!p)return(0,W.jsxs)(`div`,{className:`rounded-xl border border-destructive/40 bg-destructive/10 p-4 mb-4 text-xs`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-destructive font-semibold`,children:[(0,W.jsx)($n,{className:`size-4`}),(0,W.jsx)(`span`,{children:`Feed Probe Failed`})]}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:t,className:`h-7 px-2 text-xs`,children:`Dismiss`})]}),(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:h})]});if(!p)return null;let C=p.notebooks?.length??p.chunks.length,w=p.notebooks?.reduce((e,t)=>e+(t.count??0),0)??p.chunks.reduce((e,t)=>e+(t.count??0),0);return(0,W.jsxs)(`div`,{className:`rounded-xl border border-sky-500/40 bg-sky-500/5 p-4 mb-4 space-y-3`,"data-testid":`unknown-feed-intake-banner`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded bg-sky-500/20 text-sky-400 border border-sky-500/30`,children:`Feed Deep Link`}),(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:i})]}),(0,W.jsxs)(`h3`,{className:`text-base font-bold text-foreground mt-1`,children:[`Add "`,p.name??`Custom Feed`,`" to your Library?`]}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:p.description??`Published whiteboard workouts and notebooks.`})]}),(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:t,disabled:d,className:`h-7 px-2 text-xs`,children:[(0,W.jsx)(Sr,{className:`size-3.5 mr-1`}),`Decline`]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-2 text-xs bg-background/50 p-3 rounded-lg border border-border/40`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Version`}),(0,W.jsxs)(`span`,{className:`font-mono`,children:[`v`,p.version,` (schema `,p.schema,`)`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Notebooks`}),(0,W.jsxs)(`span`,{children:[C,` notebooks (`,w,` items)`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground block text-[10px] uppercase font-bold`,children:`Built`}),(0,W.jsx)(`span`,{className:`font-mono`,children:p.builtAt?p.builtAt.slice(0,10):`unknown`})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:_,onChange:e=>v(e.target.checked),className:`rounded border-border text-primary`}),(0,W.jsx)(`span`,{children:`Auto-sync updates`})]})})]}),h&&(0,W.jsx)(`p`,{className:`text-xs text-destructive`,children:h}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2 pt-1`,children:[(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:b,disabled:d,"data-testid":`feed-intake-browse`,className:`text-xs h-8`,children:`Browse in Library (Register Only)`}),(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:x,disabled:d,"data-testid":`feed-intake-once`,className:`text-xs h-8`,children:[d?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`Import Once`]}),(0,W.jsxs)(K,{size:`sm`,onClick:S,disabled:d,"data-testid":`feed-intake-subscribe`,className:`text-xs h-8 bg-sky-600 hover:bg-sky-500 text-white`,children:[d?(0,W.jsx)(s,{className:`size-3 animate-spin mr-1`}):null,`✓ Subscribe & Sync All`]})]})]})}var n6=e=>$y(new Date(e)),r6=e=>{if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1);return`${(e/1024**n).toFixed(n===0?0:1)} ${t[n]}`};function i6(e,t){Q(e===`imported`?{title:`${t} synced`,description:`Content was imported from the published feed. 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 a6={imported:`Synced`,current:`Up to date`,"server-stale":`Published version is older than the stored version`,"update-pending":`Update available`,busy:`Another tab is syncing`,disabled:`Feed import is disabled`,error:`Sync failed`};function o6(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??a6[e.outcome]}}function s6({source:e,running:t,disabled:n,onSync:r,onSubscribe:i,onUnsubscribe:a,onDelete:o,onAutoSync:s,onToggleNotebook:c,subscribedOnly:l}){let u=On(),d=(0,U.useSyncExternalStore)(lN,()=>dN(e.id)),f=e.notebooks.filter(t=>t.id!==e.id),p=rN(e.id),m=f.filter(e=>e.subscribed).length;l&&f.filter(e=>e.subscribed);let h=e.autoImport,g=e.subscribed&&!e.upToDate&&e.remote!==null;return(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`feed-source-${e.id}`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-x-4 gap-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-wrap`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:e.label}),(0,W.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded shrink-0 ${e.subscribed?`bg-emerald-500/10 text-emerald-600`:`bg-muted text-muted-foreground`}`,children:e.subscribed?`Subscribed`:`Not subscribed`}),h&&(0,W.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:`Core`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 flex-wrap justify-end`,children:[e.subscribed?g?(0,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>r(e.id),disabled:n,"data-testid":`feed-sync-${e.id}`,className:`gap-2`,children:[(0,W.jsx)(lt,{className:`size-3.5 ${t?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:t?`Syncing…`:`Sync`})]}):(0,W.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1.5`,"data-testid":`feed-current-${e.id}`,children:[(0,W.jsx)(Ct,{className:`size-3.5 text-emerald-500`}),e.remote===null?`Remote unreachable`:`Up to date`]}):(0,W.jsxs)(K,{size:`sm`,onClick:()=>i(e.id),disabled:n,"data-testid":`feed-subscribe-${e.id}`,className:`gap-2`,children:[(0,W.jsx)(Zt,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Subscribe`})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,title:e.subscribed?`Apply new published versions automatically during the load-time check. Turning it off never removes content.`:`Unsubscribed sources never auto-import.`,children:[(0,W.jsx)(`input`,{type:`checkbox`,className:`size-3.5 accent-primary`,checked:d,disabled:n||!e.subscribed,onChange:t=>s(e.id,t.target.checked),"aria-label":`Auto-sync ${e.label}`,"data-testid":`feed-autosync-${e.id}`}),(0,W.jsx)(`span`,{children:`Auto-sync`})]}),(0,W.jsxs)(`details`,{className:`relative shrink-0`,"data-testid":`feed-more-${e.id}`,children:[(0,W.jsx)(`summary`,{"aria-label":`More actions for ${e.label}`,className:`flex cursor-pointer list-none items-center justify-center rounded-md border border-border px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground [&::-webkit-details-marker]:hidden`,children:`…`}),(0,W.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 flex w-64 max-w-[80vw] flex-col items-stretch gap-1.5 rounded-lg border border-border bg-card p-2 text-xs shadow-lg`,children:[e.url?(0,W.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`break-all font-mono text-primary hover:underline`,children:[`Published HTML: `,e.url]}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Published HTML: bundled with this app (no standalone URL)`}),e.repositoryUrl?(0,W.jsx)(`a`,{href:e.repositoryUrl,target:`_blank`,rel:`noopener noreferrer`,className:`break-all text-primary hover:underline`,children:`Git source directory`}):(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Git repository: not published`}),!h&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),disabled:n||!e.subscribed,"data-testid":`feed-unsubscribe-${e.id}`,className:`min-h-8 rounded-md px-2 text-left text-destructive hover:bg-destructive/10 disabled:opacity-50`,children:`Unsubscribe`}),!h&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),disabled:n,"data-testid":`feed-delete-${e.id}`,className:`min-h-8 rounded-md px-2 text-left text-destructive hover:bg-destructive/10 disabled:opacity-50`,children:`Delete source`})]})]})]})]}),e.url&&(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono break-all`,"data-testid":`feed-origin-${e.id}`,children:e.url}),e.description&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`feed-description-${e.id}`,children:e.description}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-muted/20 px-3 py-2 flex flex-wrap items-center justify-between gap-3`,"data-testid":`feed-notebooks-${e.id}`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-black uppercase tracking-widest text-muted-foreground/70`,children:`Subscription Mode`}),(0,W.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,W.jsx)(`span`,{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded text-xs font-semibold ${p===`full`?`bg-emerald-500/10 text-emerald-600`:p===`partial`?`bg-amber-500/10 text-amber-600`:`bg-muted text-muted-foreground`}`,"data-testid":`feed-sub-mode-${e.id}`,children:p===`full`?`Full`:p===`partial`?`Partial (${m} of ${f.length} subscribed)`:`Unsubscribed`})})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>u(`/notebooks?q=:notebook{feed:${e.id},subscribed:true,false}`),"data-testid":`browse-notebooks-link-${e.id}`,className:`text-xs font-semibold text-primary hover:underline flex items-center gap-1`,children:`Browse notebooks in Library →`})]}),(0,W.jsxs)(`div`,{className:`grid gap-1 text-sm`,"data-testid":`feed-status-card`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Library`}),(0,W.jsxs)(`span`,{className:`font-medium text-foreground text-xs tabular-nums`,"data-testid":`feed-source-size`,children:[e.count.toLocaleString(),` feed `,e.count===1?`item`:`items`,` · `,r6(e.bytes)]})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Local database`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-local-version`,children:e.stored?`v${e.stored.version} · schema ${e.stored.schema} · imported ${n6(e.stored.importedAt)}`:`Not imported yet`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Published version`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs flex items-center gap-1.5`,"data-testid":`feed-remote-version`,children:e.remote?`v${e.remote.version} · schema ${e.remote.schema}`:e.remoteError?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)($n,{className:`size-3.5 text-muted-foreground`}),`Unavailable`]}):`Checking…`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Last check`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-last-check`,children:e.checkedAt?n6(e.checkedAt):`—`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Last sync`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground text-xs`,"data-testid":`feed-last-sync`,children:e.stored?n6(e.stored.importedAt):`Never`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Status`}),(0,W.jsx)(`span`,{className:`font-medium text-xs flex items-center gap-1.5`,"data-testid":`feed-sync-status`,children:e.subscribed?e.upToDate?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ct,{className:`size-3.5 text-emerald-500`}),`Up to date`]}):e.remote==null?`Unknown (remote unreachable)`:d?`Update available — applied automatically on next load`:`Update available — sync to apply`:`Not subscribed`})]})]})]})}function c6(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)([]),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(!0),[v,y]=(0,U.useState)(),b=(0,U.useCallback)(async()=>{a(null);try{t(await eP())}catch(e){a(e instanceof Error?e.message:String(e))}finally{r(!1)}},[]);(0,U.useEffect)(()=>{b()},[b]),(0,U.useEffect)(()=>lN(()=>{b()}),[b]),(0,U.useEffect)(()=>RN(()=>{b()}),[b]);let x=(0,U.useCallback)(async t=>{s(t??`all`),l([]);let n=e=>l(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{i6(t?await JN(t,{force:!0,onProgress:n}):await GN({force:!0,onProgress:n}),t?e?.sources.find(e=>e.id===t)?.label??t:`All sources`),await b()}finally{s(null)}},[b,e]),S=(0,U.useCallback)(async(e,t,n)=>{sN(e,t,n),n?await x(e):await b()},[x,b]),C=(0,U.useCallback)(async()=>{h(null);let e;try{e=MA(u,f)}catch(e){h(e instanceof Error?e.message:String(e));return}d(``),p(``),await x(e.id)},[u,f,x]),w=(0,U.useCallback)((e,t)=>{fN(e,t)||Q({title:`Couldn't save Auto-sync`,description:`Browser storage is unavailable — the choice lasts this session only.`,variant:`destructive`}),b()},[b]),T=(0,U.useCallback)(async t=>{let n=e?.sources.find(e=>e.id===t)?.label??t;if(window.confirm(`Unsubscribe from "${n}"? Imported content for this feed's content is removed from your library; the source stays listed so you can subscribe again. Your own notes are never touched.`)){try{let{deleted:e}=await ZN(t);Q({title:`${n} unsubscribed`,description:`${e.toLocaleString()} imported ${e===1?`item`:`items`} removed. The source stays listed for a later Subscribe.`})}catch(e){Q({title:`${n} unsubscribe failed`,description:e instanceof Error?e.message:String(e),variant:`destructive`});return}await b()}},[e,b]),E=(0,U.useCallback)(async t=>{let n=e?.sources.find(e=>e.id===t)?.label??t;if(window.confirm(`Delete "${n}"? Imported content is removed and the source is unregistered. Your own notes are never touched.`)){try{let{deleted:e}=await QN(t);Q({title:`${n} deleted`,description:`${e.toLocaleString()} imported ${e===1?`item`:`items`} removed and the source unregistered.`})}catch(e){Q({title:`${n} delete failed`,description:e instanceof Error?e.message:String(e),variant:`destructive`});return}await b()}},[e,b]),D=c.at(-1)?.event;return(0,W.jsxs)(`div`,{className:`space-y-8`,children:[(0,W.jsxs)(`section`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,W.jsx)(Zt,{className:`size-4 text-primary`}),`Content Sources`]}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`A feed is one published Markdown repository — its notebooks, notes, guides, dashboards, and efforts import into your active data location together. Subscribed feeds are checked against their published manifest on every load: Auto-sync applies updates by itself, otherwise you press Sync when an update is pending. The core feed imports automatically at launch and is always subscribed.`})]}),i&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-destructive`,"data-testid":`feed-status-error`,children:[(0,W.jsx)($n,{className:`size-3.5 shrink-0`}),`Couldn't read the feed status from the active storage: `,i]}),D&&(0,W.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-border bg-card p-4`,"data-testid":`feed-sync-progress`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-4 text-sm font-medium`,children:[(0,W.jsx)(`span`,{children:o===null?c.some(e=>e.event.phase===`finished`&&e.event.outcome===`error`)?`Sync finished with errors`:`Sync finished`:`Syncing…`}),(0,W.jsxs)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[`Source `,D.sourceIndex,` of `,D.totalSources]})]}),(0,W.jsxs)(`p`,{role:`status`,"aria-live":`polite`,className:`sr-only`,"data-testid":`feed-sync-live-status`,children:[D.sourceLabel,`: `,o6(D)]}),c.map(({event:e,imported:t,chunks:n})=>(0,W.jsxs)(`div`,{className:`space-y-2 border-t border-border/50 pt-3`,children:[(0,W.jsxs)(`p`,{className:`text-xs ${e.phase===`finished`&&e.outcome===`error`?`text-destructive`:`text-muted-foreground`}`,children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:e.sourceLabel}),` · `,o6(e)]}),t&&t.totalChunks>0?(0,W.jsx)(k3,{value:t.completedChunks,max:t.totalChunks,label:`Chunks committed · ${e.sourceLabel}`}):e.phase===`finished`?null:(0,W.jsx)(`progress`,{"aria-label":`Checking ${e.sourceLabel}`,className:`h-2 w-full`}),t&&(0,W.jsxs)(`p`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-xs tabular-nums`,"data-testid":`feed-sync-totals`,children:[(0,W.jsxs)(`span`,{children:[t.totalNotes.toLocaleString(),` notes`]}),(0,W.jsxs)(`span`,{children:[t.totalEfforts.toLocaleString(),` efforts`]}),(0,W.jsxs)(`span`,{children:[t.totalBlocks.toLocaleString(),` blocks`]}),t.skippedUserOwned>0&&(0,W.jsxs)(`span`,{children:[t.skippedUserOwned.toLocaleString(),` user-owned rows preserved`]}),t.deleted>0&&(0,W.jsxs)(`span`,{children:[t.deleted.toLocaleString(),` feed rows removed`]})]}),n.length>0&&(0,W.jsxs)(`details`,{className:`text-xs`,"data-testid":`feed-sync-chunks`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:[`Committed chunks (`,n.length,`)`]}),(0,W.jsx)(`ul`,{className:`mt-2 max-h-32 space-y-1 overflow-y-auto font-mono text-muted-foreground`,children:n.map(e=>(0,W.jsx)(`li`,{children:e},e))})]})]},e.sourceId))]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 p-2.5 rounded-xl border border-border bg-card text-xs`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer select-none text-muted-foreground hover:text-foreground`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:g,onChange:e=>_(e.target.checked),"data-testid":`sync-subscribed-only-toggle`,className:`size-3.5 accent-primary rounded`}),(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`Subscribed only`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Source:`}),(0,W.jsxs)(`select`,{value:v??``,onChange:e=>y(e.target.value?e.target.value:void 0),"data-testid":`sync-feed-source-filter`,"aria-label":`Filter notebooks by feed`,className:`h-8 rounded-md border border-border bg-background px-2 text-xs text-foreground outline-none transition-colors hover:border-foreground/25 focus:border-primary/50`,children:[(0,W.jsx)(`option`,{value:``,children:`All feeds`}),e?.sources.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3`,"data-testid":`feed-source-list`,children:[e?.sources.filter(e=>{if(v&&e.id!==v)return!1;if(g){let t=e.notebooks.some(e=>e.subscribed);if(!e.subscribed&&!t)return!1}return!0}).map(e=>(0,W.jsx)(s6,{source:e,running:o===e.id||o===`all`,disabled:o!==null,onSync:e=>{x(e)},onSubscribe:e=>{x(e)},onUnsubscribe:e=>{T(e)},onDelete:e=>{E(e)},onAutoSync:w,onToggleNotebook:S,subscribedOnly:g},e.id)),n&&e===null&&(0,W.jsx)(`div`,{className:`rounded-xl border border-border bg-card p-4 text-sm text-muted-foreground`,children:`Checking sources…`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between pt-3 border-t border-border/50`,children:[(0,W.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,W.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>{x(null)},disabled:o!==null||n,"data-testid":`feed-resync-button`,className:`gap-2`,children:[(0,W.jsx)(lt,{className:`size-3.5 ${o===`all`?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:o===`all`?`Syncing all…`:`Sync All Sources`})]})]})]}),(0,W.jsxs)(`section`,{className:`space-y-4 pt-4 border-t border-border/50`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h2`,{className:`text-base font-semibold text-foreground flex items-center gap-2`,children:[(0,W.jsx)(V,{className:`size-4 text-primary`}),`Add a Source`]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Register any URL serving a Wod Wiki feed (a directory with `,(0,W.jsx)(`code`,{children:`manifest.json`}),` and`,` `,(0,W.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 and start subscribed; manage Auto-sync, Unsubscribe, and Delete on each source card above.`]})]}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-border bg-card p-4 space-y-3`,"data-testid":`feed-add-source-form`,children:[(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{htmlFor:`feed-source-label`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Label`}),(0,W.jsx)(e6,{id:`feed-source-label`,value:u,onChange:e=>d(e.target.value),placeholder:`My library (optional — defaults to the host name)`,disabled:o!==null})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{htmlFor:`feed-source-url`,className:`block text-xs font-medium text-muted-foreground mb-1`,children:`Feed directory URL`}),(0,W.jsx)(e6,{id:`feed-source-url`,type:`text`,autoComplete:`off`,spellCheck:!1,value:f,onChange:e=>p(e.target.value),placeholder:`https://example.com/feed/library/`,className:`font-mono`,disabled:o!==null})]})]}),m&&(0,W.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-1.5 text-xs text-destructive`,"data-testid":`feed-add-error`,children:[(0,W.jsx)($n,{className:`size-3.5 mt-0.5 shrink-0`}),(0,W.jsx)(`span`,{children:m})]}),(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsxs)(K,{size:`sm`,onClick:()=>{C()},disabled:o!==null||!f.trim(),"data-testid":`feed-add-button`,className:`gap-2`,children:[(0,W.jsx)(rr,{className:`size-3.5`}),(0,W.jsx)(`span`,{children:`Add & Sync`})]})})]})]})]})}var l6={stream:`cards`,table:`rows`},u6=`wodwiki.viewSettings.v1`,d6={"/notebooks":`/catalogs`,"/notes":`/feeds`,"/sessions":`/results`,"/dashboards":`/dashboard`},f6={"/notes":`/collections`},p6={"/feeds":`/feeds@2`};function m6(e){let t=e.startsWith(`/`)?e:`/${e}`;return p6[t]??t}var h6=new Fx(u6);function g6(e,t){return{level:e,layout:t??`cards`,visibleFields:NH(e),groupBy:void 0}}function _6(e,t,n=h6,r){let i=g6(t,r),a=m6(e),o=d6[a],s=n.get(a,{alias:o});if(s==null&&o&&(s=n.get(o,{alias:f6[a]})),!s)return i;let c=typeof s.layout==`string`?s.layout:``,l=c===`cards`||c===`rows`||c===`feed`?c:l6[c]??`cards`,u=new Set(MH(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 v6(e,t,n=h6){let r=m6(e);n.set(r,{level:t.level,layout:t.layout,visibleFields:t.visibleFields,groupBy:t.groupBy})}function y6(e,t,n=h6){let r=m6(e),i=d6[r],a=f6[r];return n.remove(r,i),a&&n.remove(a),g6(t)}function b6(e,t,n){let[r,i]=(0,U.useState)(()=>_6(e,t,h6,n));(0,U.useEffect)(()=>{i(_6(e,t,h6,n))},[e,t,n]);let a=(0,U.useCallback)(t=>{i(n=>{let r=t(n);return v6(e,r),r})},[e]);return{settings:r,setLayout:(0,U.useCallback)(e=>{a(t=>({...t,layout:e}))},[a]),toggleField:(0,U.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,U.useCallback)(e=>{a(t=>({...t,visibleFields:e}))},[a]),setGroupBy:(0,U.useCallback)(e=>{a(t=>({...t,groupBy:e}))},[a]),resetSettings:(0,U.useCallback)(()=>{let n=y6(e,t);i(n)},[e,t])}}function x6(e,t=200){let[n,r]=(0,U.useState)(t),i=(0,U.useRef)(null);(0,U.useEffect)(()=>{r(t)},[e,t]);let a=n<e.length,o=(0,U.useCallback)(t=>r(n=>Math.max(n,Math.min(Math.max(t,0),e.length))),[e.length]);return(0,U.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 S6(e,t){let n=X(e);return n.error||!oh(n)?e:Qh({...n,metric:t})}function C6(e){let t=X(e);return t.error?e:Qh({...t,window:void 0})}function w6(e,t){let n=X(e);return n.error?e:Qh({...n,groupBy:[t]})}function T6(e){return e.kind===`note`&&!e.sourceNote?!1:e.kind===`note`}async function E6(e){if(e.wodBlock?.content.trim())return e.wodBlock.content;let t=await SF.resolve(e.id),n=dW(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 D6(e,t){return{id:e.wodBlock?.blockId??e.block?.blockId??nn(),contentId:e.wodBlock?.blockContentId??e.blockContentId,dialect:`time`,startLine:0,endLine:t.split(`
453
453
  `).length,content:t,state:`idle`,widgetIds:{},version:1,createdAt:Date.now()}}async function O6(e,t){let n=await E6(e),r=D6(e,n),i=nn();if(yW(e)){let n=await SF.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.`);g0.set(i,{block:{...r,id:a.id},noteId:e.id,origin:`playground`,returnTo:vW(e)}),t(GP(i));return}let a=await h0({workoutName:e.title,category:e.sourceNotebook,sourceNoteLabel:e.subtitle??e.title,sourceNotePath:vW(e),wodContent:n}),o=Object.values(a.blocks??{}).find(e=>e.kind===`wod`);if(!o)throw Error(`The saved journal workout is unavailable.`);g0.set(i,{block:{...r,id:o.id},noteId:a.id}),t(VP(a.journalDate??``,i))}var k6={note:z,effort:Ce,result:oe,segment:L,event:me,dashboard:E,equipment:f,tag:Qe},A6={note:`Note`,effort:`Effort`,result:`Result`,segment:`Segment`,event:`Event`,dashboard:`Dashboard`,equipment:`Equipment`,tag:`Tag`},j6={note:`bg-primary/10 text-primary group-hover:bg-primary/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`,tag:`bg-violet-500/10 text-violet-600 group-hover:bg-violet-500/20`};function M6({entry:e,leading:t,actions:n,dateLabel:r,visibleFieldIds:i,tone:a=`secondary`,onAddToToday:o,onRunStart:s,moveNotebookTargets:c,onMoveNotebook:l}){let u=On(),d=e.kind===`note`?e.sourceNotebook:void 0,f=!!d&&d!==`journal`&&d!==`playground`&&d!==`guides`,p=d===`playground`?k:d===`guides`?C:f?Gt:k6[e.kind],m=d===`playground`?`Playground`:d===`guides`?`Guide`:f?`Notebook`:A6[e.kind],h=f?`bg-amber-500/10 text-amber-600 group-hover:bg-amber-500/20`:j6[e.kind],g=a===`primary`,_=bW(e),v=vW(e),y=i?new Set(i):null,b=!y||y.has(`date`),x=!y||y.has(`sourceNotebook`)||y.has(`protocol`)||y.has(`elapsedTime`)||y.has(`splitDuration`)||y.has(`discipline`)||y.has(`met`)||y.has(`canonicalSlug`),S=!y||y.has(`excerpt`)||y.has(`movements`)||y.has(`tags`)||y.has(`aliases`);return(0,W.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>u(vW(e)),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),u(vW(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 ${g?`bg-primary/[0.025]`:``}`,"data-testid":`library-row-${e.kind}`,children:[t,(0,W.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl flex items-center justify-center transition-colors ${h}`,children:(0,W.jsx)(p,{className:`size-4`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,W.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,W.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,W.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:m}),e.execution?.effortSlug&&(0,W.jsx)(xt,{to:nF(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}),_&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(xt,{to:v,"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 notebook details`,children:`Details`}),(0,W.jsx)(xt,{to:_,"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&&x&&(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60 truncate`,children:e.subtitle})]}),S&&(e.block?(0,W.jsx)(`div`,{className:`mt-0.5`,"data-testid":`library-row-block-preview`,children:e.block.preview.map((e,t)=>(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate font-mono`,children:e},t))}):e.detail?(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate mt-0.5`,children:e.detail}):null)]}),r&&b&&(0,W.jsx)(`span`,{className:`flex-shrink-0 text-[10px] text-muted-foreground/70 tabular-nums`,"data-testid":`library-row-date`,children:r}),n??(0,W.jsx)(N6,{entry:e,onAddToToday:o,onRunStart:s,moveNotebookTargets:c,onMoveNotebook:l})]})}function N6({entry:e,onAddToToday:t,onRunStart:n,moveNotebookTargets:r,onMoveNotebook:i}){let a=On(),o=xW(e),s=bW(e),c=SW(e)&&!!t,l=T6(e)&&!!n,u=!!i&&e.kind===`note`&&!!e.notebookId&&e.notebookId!==`notebook/journal`&&!!r?.length,d=r?.filter(t=>t.id!==e.notebookId)??[];return(0,W.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(F6,{title:s?`Details`:`Open`,testId:`action-open`,onClick:()=>a(vW(e)),children:(0,W.jsx)(gr,{className:`size-3.5`})}),s&&(0,W.jsx)(F6,{title:`Notebook`,testId:`action-notebook`,onClick:()=>a(s),children:(0,W.jsx)(Gt,{className:`size-3.5`})}),c&&(0,W.jsx)(F6,{title:`Add to today`,testId:`action-add`,onClick:()=>t?.(e),children:(0,W.jsx)(rr,{className:`size-3.5`})}),l&&(0,W.jsx)(F6,{title:`Run`,testId:`action-run`,onClick:()=>n?.(e),children:(0,W.jsx)(gr,{className:`size-3.5`})}),u&&d.length>0&&(0,W.jsx)(P6,{targets:d,triggerTestId:`action-move`,itemTestIdPrefix:`action-move-`,triggerClassName:`size-8 rounded-lg flex items-center justify-center text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors`,onMove:t=>i?.(e,t)}),o&&(0,W.jsx)(F6,{title:`Compare`,testId:`action-compare`,onClick:()=>a(o),children:(0,W.jsx)(Vt,{className:`size-3.5`})})]})}function P6({targets:e,triggerTestId:t,itemTestIdPrefix:n,triggerClassName:r,onMove:i}){return(0,W.jsxs)(mH,{children:[(0,W.jsx)(hH,{asChild:!0,children:(0,W.jsx)(`button`,{type:`button`,title:`Move to notebook`,"data-testid":t,className:r,children:(0,W.jsx)(Ke,{className:`size-3.5`})})}),(0,W.jsxs)(gH,{align:`end`,children:[(0,W.jsx)(vH,{children:`Move to notebook`}),(0,W.jsx)(yH,{}),e.map(e=>(0,W.jsxs)(_H,{"data-testid":`${n}${e.id}`,onClick:()=>i(e.id),children:[(0,W.jsx)(`span`,{className:`w-5 text-center`,children:e.icon}),(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.name})]},e.id))]})]})}function F6({title:e,testId:t,onClick:n,children:r}){return(0,W.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 I6({entries:e,level:t,visibleFieldIds:n,onRowClick:r,emptyMessage:i=`No entries to display`,className:a=``,stickyHeaderTop:o}){let s=On(),c=(0,U.useMemo)(()=>t||(e.length>0?kH(e[0]):`note`),[t,e]),l=(0,U.useMemo)(()=>MH(c),[c]),u=(0,U.useMemo)(()=>{let e=new Set(n??NH(c));return l.filter(t=>e.has(t.id))},[l,n,c]),d=e=>{r?r(e):s(vW(e))},[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(`asc`),g=e=>{f===e?h(e=>e===`asc`?`desc`:`asc`):(p(e),h(`asc`))},_=(0,U.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,W.jsx)(`div`,{className:`w-full py-16 text-center text-sm text-muted-foreground ${a}`,"data-testid":`property-table-empty`,children:i}):(0,W.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,W.jsxs)(`table`,{className:`w-full text-left border-collapse text-xs`,children:[(0,W.jsx)(`thead`,{className:o===void 0?void 0:`sticky z-10`,style:o===void 0?void 0:{top:`${o}px`},children:(0,W.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,W.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,W.jsxs)(`div`,{className:`inline-flex items-center gap-1.5 ${t===`text-right`?`justify-end`:t===`text-center`?`justify-center`:`justify-start`}`,children:[(0,W.jsx)(`span`,{children:e.label}),f===e.id?(0,W.jsx)(`span`,{className:`text-primary font-bold text-xs`,"aria-label":m===`asc`?`sorted ascending`:`sorted descending`,children:m===`asc`?`↑`:`↓`}):(0,W.jsx)(`span`,{className:`opacity-0 group-hover/th:opacity-40 text-muted-foreground text-[10px]`,"aria-hidden":`true`,children:`↕`})]})},e.id)})})}),(0,W.jsx)(`tbody`,{className:`divide-y divide-border/60`,children:_.map(e=>{let t=bW(e),n=vW(e);return(0,W.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,W.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,W.jsx)(xt,{to:nF(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,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground group-hover:text-primary transition-colors`,children:a}),t&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 ml-auto`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(xt,{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,W.jsx)(xt,{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 L6={note:z,effort:Ce,result:oe,segment:L,event:me,dashboard:E,equipment:f,tag:Qe},R6={note:`Note`,effort:`Effort`,result:`Result`,segment:`Segment`,event:`Event`,dashboard:`Dashboard`,equipment:`Equipment`,tag:`Tag`},z6=8;function B6({entry:e}){let t=e.execution;if(!t)return null;let n=[];return t.elapsedMs!=null&&n.push(GB(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,W.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,"data-testid":`stream-feed-metrics`,children:n.map(e=>(0,W.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 V6({entry:e}){let[t,n]=(0,U.useState)(!1),r=e.wodBlock?.content.trim(),i=r?r.split(`
454
454
  `):e.excerpt??e.block?.preview??[],a=i.length>z6,o=t||!a?i:i.slice(0,z6);return i.length===0&&!e.detail?null:(0,W.jsxs)(`div`,{className:`mt-1.5`,"data-testid":`stream-feed-preview`,children:[i.length>0&&(0,W.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(`
455
455
  `)}),i.length===0&&e.detail&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e.detail}),a&&(0,W.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-z6} lines)`})]})}function H6({groups:e,batch:t,onRunEntry:n,onSendToPlayground:r,onAddToToday:i,moveNotebookTargets:a,onMoveNotebook:o,stickyOffset:s}){return(0,W.jsxs)(`div`,{className:`flex-1 divide-y divide-border/40`,"data-testid":`stream-feed`,children:[e.map(e=>(0,W.jsxs)(`section`,{id:e.id,"data-testid":`stream-feed-group-${e.key}`,children:[(0,W.jsx)(rH,{top:s,icon:(0,W.jsx)(vt,{className:`size-3 shrink-0 text-muted-foreground`}),label:e.label,badge:e.isToday?(0,W.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,W.jsx)(`div`,{className:`divide-y divide-border/30`,children:e.entries.map(e=>{let t=e.kind===`note`?e.sourceNotebook:void 0,s=!!t&&t!==`journal`&&t!==`playground`&&t!==`guides`,c=t===`playground`?k:t===`guides`?C:s?Gt:L6[e.kind],l=t===`playground`?`Playground`:t===`guides`?`Guide`:s?`Notebook`:R6[e.kind],u=vW(e),d=bW(e),f=!yW(e)&&e.kind===`note`,p=SW(e)&&!!i,m=a?.filter(t=>t.id!==e.notebookId)??[],h=!!o&&e.kind===`note`&&!!e.notebookId&&e.notebookId!==`notebook/journal`&&m.length>0;return(0,W.jsx)(`article`,{"data-testid":`stream-feed-item`,className:`px-6 py-4`,children:(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(`div`,{className:`flex-shrink-0 size-9 rounded-xl bg-primary/10 flex items-center justify-center`,children:(0,W.jsx)(c,{className:`size-4 text-primary`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-bold text-foreground min-w-0 basis-full sm:basis-auto sm:truncate`,children:(0,W.jsx)(xt,{to:u,className:`hover:text-primary transition-colors`,children:e.title})}),(0,W.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:l}),e.subtitle&&(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground/70 truncate`,children:e.subtitle})]}),(0,W.jsx)(V6,{entry:e}),(0,W.jsx)(B6,{entry:e}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(xt,{to:u,"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:d?`Details`:`Open`}),d&&(0,W.jsxs)(xt,{to:d,"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,W.jsx)(Gt,{className:`size-3`}),`Feed`]}),T6(e)&&(0,W.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,W.jsx)(gr,{className:`size-3`}),`Run`]}),f&&r&&(0,W.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,W.jsx)(Ae,{className:`size-3`}),`Playground`]}),p&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i?.(e),"data-testid":`stream-feed-add`,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,W.jsx)(rr,{className:`size-3`}),`Add`]}),h&&(0,W.jsx)(P6,{targets:m,triggerTestId:`stream-feed-move`,itemTestIdPrefix:`stream-feed-move-`,triggerClassName:`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`,onMove:t=>o?.(e,t)})]})]})]})},e.id)})})]},e.id)),t.hasMore&&(0,W.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 U6(e,t,n){return{journalDate:n,title:e.title,rawContent:t,sourceId:e.sourceId,type:`journal`}}var W6=/\[([^\]]*)\]\((:[^)]*)\)!/g;function G6(e){let t=e.trim();return PI((()=>{try{return decodeURIComponent(t)}catch{return t}})())}function K6(e){let t=G6(e);return t.startsWith(`:`)&&!X(t).error}function q6(e){let t=[],n=0;for(let r of e.matchAll(W6)){let i=r.index??0,a=G6(r[2]);K6(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 J6(e){return e.some(e=>e.kind===`query`)}var Y6=`9999-12-31`;function X6(e,t){return(e.date??Y6).localeCompare(t.date??Y6)||e.title.localeCompare(t.title,void 0,{numeric:!0,sensitivity:`base`})}function Z6(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 Q6({query:e,heading:t,onAddToToday:n,onRunStart:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null);(0,U.useEffect)(()=>{let t=!1;return a(null),s(null),rV.query(e).then(e=>{t||a([...e].sort(X6))}).catch(e=>{t||s(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e]);let c=(0,U.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,W.jsxs)(`p`,{className:`my-3 text-xs text-destructive`,"data-testid":`readme-query-error`,children:[`Query failed: `,o]});if(i===null)return(0,W.jsx)(`div`,{className:`my-3 text-xs text-muted-foreground/60`,"data-testid":`readme-query-loading`,children:`Loading…`});if(i.length===0)return(0,W.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,W.jsx)(M6,{entry:e,onAddToToday:n,onRunStart:r},e.id);return(0,W.jsxs)(`div`,{className:`my-3 not-prose`,"data-testid":`readme-query-block`,children:[t&&(0,W.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,W.jsxs)(`div`,{className:`mt-3`,"data-testid":`readme-query-date-group`,children:[(0,W.jsx)(`p`,{className:`mb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:e?Z6(e):`Undated`}),(0,W.jsx)(`div`,{className:`divide-y divide-border/40`,children:t.map(l)})]},e||`undated`)):(0,W.jsx)(`div`,{className:`divide-y divide-border/40`,children:i.map(l)})]})}var $6=new mA;function e8({batch:e,testId:t=`stream-load-more`}){return e.hasMore?(0,W.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 t8=150;function n8(e){switch(e.phase){case`checking`:return`Checking ${e.sourceLabel}…`;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??a6[e.outcome]}}function r8(e){return`${e.negate?`!`:``}${e.key}=${e.values.map(e=>`${e.wildcard?`*`:``}${e.value}`).sort().join(`|`)}`}function i8(e,t){let n={};for(let e of t){let t=r8(e);n[t]=(n[t]??0)+1}return e.filter(e=>{let t=r8(e),r=n[t]??0;return n[t]=r-1,r<=0})}function a8({error:e,target:t,matched:n,total:r,loading:i,applied:a,ignored:o,advisories:s,groupDims:c,groupingSource:l}){return(0,W.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,W.jsx)(`span`,{className:`font-semibold text-destructive`,children:`Invalid query — showing previous results`}):t?(0,W.jsxs)(`span`,{className:`font-mono`,children:[`:`,t]}):null,(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsxs)(`span`,{"data-testid":`stream-query-counts`,className:i?`motion-safe:animate-pulse`:void 0,children:[n,` of `,r]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsxs)(`span`,{"data-testid":`stream-query-filters`,children:[a,` applied`,o>0?`, ${o} ignored`:``]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,W.jsxs)(`span`,{children:[`by `,c.join(`, `),` `,(0,W.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[`(`,l,`)`]})]}),s.map(e=>(0,W.jsx)(`p`,{className:`w-full break-words text-amber-700 dark:text-amber-400`,children:e},e))]})}function o8({profile:e,actions:t,queryEngine:n,onAddToToday:r,registerStreamDraft:i}){let a=On(),o=Ft(),s=C3(),c=O3(),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=(0,U.useSyncExternalStore)(lN,()=>DN().filter(e=>e.autoImport===!1&&iN(e.id)).map(e=>e.id).join(`
@@ -492,4 +492,4 @@ Fran went unbroken until round three. Throat on fire.
492
492
  `,k9]})]})}var lne=`✎`;function une({wql:e,setWql:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(e);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(j9,{wql:e}),!n&&(0,W.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:lne})]}),n&&(0,W.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,W.jsx)(`div`,{className:`text-[10px] text-sky-400 font-mono`,children:`editing query:table — Apply writes the fence`}),(0,W.jsx)(aT,{query:i,onQueryChange:a,autoFocus:!0,placeholder:`:session…`}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.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,W.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 dne({wql:e,setWql:t}){let[n,r]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`space-y-3 pb-24`,children:[(0,W.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,W.jsx)(j9,{wql:e})}),(0,W.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,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-mono ${n?`text-sky-400`:`text-muted-foreground`}`,children:n?`◉ bound: query:table · ${D9.slice(0,8)}…`:`○ click a query block to bind the composer`}),n&&(0,W.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-muted-foreground hover:text-foreground`,children:`Done`})]}),n&&(0,W.jsx)(aT,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`})]})]})}function fne({wql:e,setWql:t}){let[n,r]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&r(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),n?(0,W.jsxs)(`div`,{className:`rounded-lg border border-sky-500/50 bg-muted/60 shadow-lg shadow-sky-500/5`,children:[(0,W.jsx)(`div`,{className:`px-3 pt-2 text-[10px] font-mono text-muted-foreground select-none`,children:"```query:table"}),(0,W.jsx)(`div`,{className:`px-3 py-2`,children:(0,W.jsx)(aT,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`,className:`bg-transparent border-0 shadow-none`})}),(0,W.jsxs)(`div`,{className:`px-3 pb-2 flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-mono text-muted-foreground select-none`,children:"```"}),(0,W.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-sky-400 hover:text-sky-300 font-mono`,children:`Esc / leave fence ↩`})]})]}):(0,W.jsx)(`button`,{onClick:()=>r(!0),className:`block w-full text-left hover:ring-1 hover:ring-border rounded-lg`,children:(0,W.jsx)(j9,{wql:e})})}var N9=[[`inline`,`A · in-flow expansion`],[`dock`,`B · bound dock`],[`fence`,`C · fence-as-composer`]];function pne(){let[e,t]=Wt(),n=e.get(`v`)??`inline`,[r,i]=(0,U.useState)(ane),a=e=>{let r=N9[(N9.findIndex(([e])=>e===n)+e+N9.length)%N9.length][0];t({v:r})};return(0,U.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,W.jsxs)(`div`,{className:`min-h-screen bg-background text-foreground p-6`,children:[(0,W.jsxs)(`div`,{className:`max-w-5xl mx-auto grid grid-cols-[1fr_320px] gap-6 items-start`,children:[(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] text-amber-500 mb-1`,children:`PROTOTYPE — throwaway · query:table editing via WqlComposer`}),(0,W.jsx)(`h1`,{className:`text-xl font-bold`,children:`Journal — 2026-09-13`})]}),(0,W.jsx)(M9,{children:O9.split("```time")[0].trim()}),(0,W.jsx)(sne,{}),n===`inline`&&(0,W.jsx)(une,{wql:r,setWql:i}),n===`dock`&&(0,W.jsx)(dne,{wql:r,setWql:i}),n===`fence`&&(0,W.jsx)(fne,{wql:r,setWql:i}),(0,W.jsx)(M9,{children:k9})]}),(0,W.jsx)(`div`,{className:`sticky top-6`,children:(0,W.jsx)(cne,{wql:r})})]}),(0,W.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,W.jsx)(`button`,{onClick:()=>a(-1),className:`px-2 text-muted-foreground hover:text-foreground`,children:`←`}),N9.map(([e,r])=>(0,W.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,W.jsx)(`button`,{onClick:()=>a(1),className:`px-2 text-muted-foreground hover:text-foreground`,children:`→`})]})]})}function P9(e,t,n=`absent`){return{id:e,fields:t,missPolicy:n,get:()=>void 0}}function mne(){let e=new yp;return e.register(P9(`effort`,{met:{dimension:J,type:`number`},disciplineFactor:{dimension:J,type:`number`},discipline:{dimension:J,type:`string`},intensityTier:{dimension:J,type:`string`},resolvedFrom:{dimension:J,type:`string`}},`default-row`)),e.register(P9(`rpe-labels`,{rpe:{dimension:J,type:`number`}})),e.register(P9(`profile`,{vo2max:{dimension:J,type:`number`}})),e.register(P9(`disciplines`,{disciplineFactor:{dimension:J,type:`number`}},`default-row`)),e}function hne(e,t){for(let n of t)try{e.register(n)}catch{}}function F9(e,t=`segment`){let n=[],r=[];try{let i=zd(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 rp(mne());hne(i,[...xp,...Tp]);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=Gd(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=nd(a)),r.length===0&&n.push({severity:`warning`,message:`No calc line parsed.`}),{defs:r,diagnostics:n,dim:a,compound:o}}var gne=[`segment`,`workout`,`store`],I9=[`when`,`where`,`key`,`grouped`,`label`,`emit`,`meta`,`estimated`,`library`,`on`,`by`,`without`,`and`,`or`,`not`],L9=[`convert`,`lookup`,`has`,`round`,`floor`,`ceil`,`abs`,`clamp`,`min`,`max`,`sum`,`avg`,`count`,`last`,`windowMean`,`windowSum`,`windowSd`,`mean`],R9=[{name:`elapsed`,dim:rd.elapsed.dim,detail:`s (time)`},{name:`reps`,dim:rd.reps.dim,detail:`count`},{name:`resistance`,dim:rd.resistance.dim,detail:`kg (mass)`},{name:`distance`,dim:rd.distance.dim,detail:`m (length)`},{name:`effort`,dim:id.effort,detail:`resolved effort slug`},{name:`effortLabel`,dim:id.effortLabel,detail:`raw effort label`}],z9=[{name:`sessionRpe`,dim:id.sessionRpe,detail:`captured session RPE`},{name:`session.duration`,dim:id[`session.duration`],detail:`workout duration`},{name:`profile.vo2max`,dim:id[`profile.vo2max`],detail:`user VO₂max (mL/kg/min)`}],B9=Object.keys(rd),_ne=Object.keys(ad),V9=[{name:`effort`,detail:`effort library`,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`]}],H9=Object.keys(ld),vne=Object.keys(ad);function yne(e){return e?H9.filter(t=>{let n=ld[t];return n?n.dim.every((t,n)=>t===e[n]):!1}):H9}var bne=new Set([...I9,...gne,`lookup`]),xne=new Set(L9),Sne=new Set([...R9.map(e=>e.name),...z9.map(e=>e.name),...B9,...V9.map(e=>e.name)]),Cne=/^\d*\.?\d+(?:d)?/,wne=/^[A-Za-z_][\w.]*/,Tne=Or.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(Cne))return`number`;if(e.match(wne)){let t=e.current();return bne.has(t)?`keyword`:xne.has(t)?`function`:(Sne.has(t),`variableName`)}return e.next(),null}}),Ene=Mr.define([{tag:H.keyword,color:`#c084fc`},{tag:H.function(H.variableName),color:`#60a5fa`},{tag:H.variableName,color:`#e4e4e7`},{tag:H.number,color:`#fbbf24`},{tag:H.string,color:`#34d399`},{tag:H.operator,color:`#a1a1aa`},{tag:H.comment,color:`#71717a`,fontStyle:`italic`}]);function Dne(){return new Fr(Tne,[jr(Ene)])}var One=[`effort`,`thruster`,`push-press`,`front-squat`,`wall-ball`,`row`,`run`];function U9(e,t){return`${t?``:`"`}${e}"`}function kne(e={}){let t=e.scope??`segment`,n=()=>{let t=e.effortKeys?.().filter(Boolean)??[];return[`effort`,...t.length?t:One.slice(1)]};return e=>{let r=e.state.sliceDoc(0,e.pos),i=e.matchBefore(/[\w./"]*/);if(!i)return null;if(/lookup\(\s*/.test(r)){let t=r.lastIndexOf(`lookup(`),i=r.slice(t+7);if(!/,/.test(i)&&/^"?[\w.-]*"?$/.test(i.replace(/"/g,``).trim()||``)){let t=i.replace(/"/g,``).trim(),n=i.trimStart().startsWith(`"`),r=V9.filter(e=>e.name.startsWith(t)).map(e=>({label:e.name,apply:U9(e.name,n),detail:e.detail}));if(r.length)return{from:e.pos-t.length,to:e.pos+ +(e.state.sliceDoc(e.pos,e.pos+1)===`"`),options:r,validFor:/^[\w.-]*$/}}let a=/lookup\(\s*"[^"]+"\s*,\s*[^,]+,\s*"?([\w-]*)"?$/.exec(r);if(a){let t=/lookup\(\s*"([^"]+)"/.exec(r)?.[1],n=V9.find(e=>e.name===t),i=e.pos-a[1].length,o=e.state.sliceDoc(i-1,i)===`"`,s=(n?.fields??[]).filter(e=>e.startsWith(a[1])).map(e=>({label:e,apply:U9(e,o),detail:`${t} field`}));return{from:i,to:e.pos+ +(e.state.sliceDoc(e.pos,e.pos+1)===`"`),options:s,validFor:/^[\w-]*$/}}let o=/lookup\(\s*"(effort)"\s*,\s*"?([\w.-]*)"?$/.exec(r);if(o){let t=n().filter(e=>e.startsWith(o[2])),r=e.pos-o[2].length,i=e.state.sliceDoc(r-1,r)===`"`,a=t.map(e=>({label:e,apply:e===`effort`?e:U9(e,i),detail:`effort key`}));return{from:r,to:e.pos+ +(e.state.sliceDoc(e.pos,e.pos+1)===`"`),options:a,validFor:/^[\w.-]*$/}}}let a=/->\s*([\w/]*)$/.exec(r);if(a){let n=e.state.doc.lineAt(e.pos).text,r=F9(n,t);if(!r.dim){let e=n.lastIndexOf(`->`);if(e>=0){let i=F9(n.slice(0,e),t);i.diagnostics.length===0&&(r=i)}}let i=r.diagnostics.length===0?r.dim:void 0,o=yne(i).filter(e=>e.startsWith(a[1])).map(e=>({label:e,detail:i?`matches inferred dimension`:`unit`}));return{from:e.pos-a[1].length,options:o,validFor:/^[\w/]*$/}}if(t===`store`){let e=/^(sum|avg|max|min|count|last):([\w.]*)$/.exec(i.text);if(e){let t=B9.filter(t=>t.startsWith(e[2])).map(e=>({label:e,detail:`metric key`}));return{from:i.from+i.text.indexOf(`:`)+1,options:t,validFor:/^[\w.]*$/}}}let o=[];if(t===`segment`)o.push(...R9.map(e=>({label:e.name,apply:e.name,detail:e.detail})));else if(o.push(...z9.map(e=>({label:e.name,apply:e.name,detail:e.detail}))),t===`workout`){for(let e of _ne)for(let t of[`reps`,`distance`,`segmentVolume`,`metMinutes`,`elapsed`,`effortRpe`])o.push({label:`${e}(${t})`,apply:`${e}(${t})`,detail:`aggregate`});o.push({label:`sum(reps, without: rest)`,apply:`sum(reps, without: rest)`,detail:`exclusion aggregate`})}o.push(...L9.map(e=>({label:`${e}()`,apply:`${e}()`,detail:`function`}))),t===`store`&&o.push(...vne.map(e=>({label:`${e}:{}`,apply:`${e}:`,detail:`WQL atom`}))),o.push(...I9.map(e=>({label:e,apply:e===`when`?`when `:e,detail:`clause`}))),o.push({label:`estimated`,apply:`estimated`,detail:`variant origin`}),o.push({label:`(library)`,apply:`(library)`,detail:`library calc`});let s=o.filter(e=>e.label.startsWith(i.text)).slice(0,20);return s.length?{from:i.from,options:s,validFor:/^[\w./]*$/}:null}}function Ane(e){return Yr({override:[kne(e)],interactionDelay:0})}function jne({value:e,onChange:t,scope:n=`segment`,placeholder:r,readOnly:i=!1,autoFocus:a=!1,className:o}){let s=(0,U.useRef)(null),c=(0,U.useRef)(null),l=(0,U.useRef)(t);return l.current=t,(0,U.useEffect)(()=>{let t=s.current;if(!t)return;c.current?.destroy();let r=Ar.updateListener.of(e=>{e.docChanged&&l.current(e.state.doc.toString())}),o=new Ar({state:ri.create({doc:e,extensions:[Dne(),Ane({scope:n,effortKeys:()=>UO().list().map(e=>e.slug)}),qw,Qr(),pi(),Cr.of([ti,...$r,...ci]),Ar.lineWrapping,ri.readOnly.of(i),r,Ar.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,U.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,W.jsx)(`div`,{ref:s,className:`calc-line-editor ${o??``}`,"data-testid":`calc-line-editor`})}function Mne({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,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 px-3 py-2 text-xs`,"data-testid":`calc-diagnostics`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[t?(0,W.jsxs)(`div`,{className:`text-muted-foreground`,children:[`computes `,(0,W.jsx)(`b`,{className:`text-foreground`,children:Nne(t)}),n&&(0,W.jsxs)(`span`,{className:`text-purple-400 dark:text-purple-300`,children:[` → `,n]})]}):!o&&(0,W.jsx)(`div`,{className:`text-muted-foreground`,children:`dimension unknown`}),o&&(0,W.jsx)(`span`,{className:`text-signal-positive`,children:`✓ valid`})]}),i.map((e,t)=>(0,W.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e.message]},`e-${t}`)),a.map((e,t)=>(0,W.jsxs)(`div`,{className:`text-signal-caution`,children:[`⚠ `,e.message]},`w-${t}`)),i.length===0&&a.length===0&&t===void 0&&(0,W.jsx)(`div`,{className:`text-muted-foreground`,children:`Type a calc line to see diagnostics.`})]})}var W9=[[`L`,`length`],[`M`,`mass`],[`T`,`time`],[`C`,`count`],[`E`,`energy`]];function Nne(e){let t=[];return e.forEach((e,n)=>{e!==0&&t.push(e===1?W9[n][1]:`${W9[n][1]}${e}`)}),t.length?t.join(`·`):`dimensionless`}function G9(e){return new ha({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 K9(e){return{...e,metrics:e.metrics.filter(e=>e.origin!==`analyzed`)}}function Pne(e){return e.output?.emitType??e.output?.key??e.id}function Fne(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 q9(e){return String(Number.isInteger(e)?e:Math.round(e*100)/100)}function J9(e,t,n){return Ip(e,{userProfile:t.vo2max===void 0?void 0:{vo2max:t.vo2max},calcs:n}).engine}function Ine(e){let t=[],n=e.defs[0];if(!n)return{rows:[],errors:[`No calc line to preview.`]};let r=Pne(n),i=e.logs.filter(e=>e.outputType===`segment`);if(e.scope===`segment`){let n=J9(e.block,e,e.defs),a=[];for(let e of i){let t=n.run(G9(K9(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:q9(i),unit:t.unit,estimated:t.origin===`analyzed-estimated`,raw:i})}return{rows:a,errors:t}}if(e.scope===`workout`){let n=i.map(K9),a=[];for(let t=1;t<=n.length;t++){let i=J9(e.block,e,e.defs);for(let e=0;e<t;e++)i.run(G9(n[e]));let o=Fne(i.finalize(),r),s=o&&typeof o.value==`number`?o.value:NaN;o&&Number.isFinite(s)?a.push({label:`after line ${t}`,text:q9(s),unit:o.unit,estimated:o.origin===`analyzed-estimated`,raw:s}):a.push(null)}return{rows:a,errors:t}}return Lne(n,t)}var Y9=[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 Lne(e,t){let n=[],r=e.variants[0]?.nodes[Gd(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)=>Y9.map((n,r)=>r+1>=e?t(Y9.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 Rne(r.includes(`windowSum`)||r.includes(` * sum`)?u:d,n),{rows:[],series:n,errors:t}}function Rne(e,t){for(let n of e.slice(-7))t.push(Number.isNaN(n)?null:Number(Math.round(n*100)/100))}var zne=[{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 Bne(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 Vne(e,t){let n=[Bne(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`}),fj(new ha({outputType:`segment`,timeSpan:{started:t*1e3,ended:t*1e3+e.elapsedMs},sourceBlockKey:`preview-block`,stackLevel:1,metrics:n}))}function Hne(){return{id:`preview-block`,dialect:`time`,startLine:0,endLine:10,content:"```time\nFran preview\n```",state:`idle`,widgetIds:{},version:1,createdAt:0}}var Une=zne.map((e,t)=>Vne(e,t+1)),Wne=Hne();function Gne(e){return e==null?`—`:String(e)}function Kne({scope:e,analysis:t,vo2max:n}){let r=(0,U.useMemo)(()=>t.defs.filter(()=>t.diagnostics.length===0),[t]),i=r[0],a=(0,U.useMemo)(()=>{if(i)return Ine({logs:Une,block:Wne,defs:r,scope:e,vo2max:n})},[i,e,n]);return(0,W.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 p-3 text-xs`,"data-testid":`calc-preview`,children:[(0,W.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,W.jsx)(`div`,{className:`text-muted-foreground`,children:`Enter a valid calc line to see live results.`}),i&&a?.rows&&(0,W.jsxs)(`div`,{className:`space-y-1 font-mono`,children:[a.rows.length===0&&(0,W.jsx)(`div`,{className:`text-muted-foreground`,children:`No applicable segments.`}),a.rows.map((e,t)=>(0,W.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e?e.label:`segment ${t+1}`}),(0,W.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,W.jsx)(`div`,{className:`space-y-1 font-mono`,children:a.series.map((e,t)=>(0,W.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`D-`,6-t]}),(0,W.jsx)(`span`,{className:`text-sky-300 dark:text-sky-400`,children:Gne(e)})]},t))}),a?.errors?.length?a.errors.map((e,t)=>(0,W.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e]},`e-${t}`)):null]})}var qne=[`segment`,`workout`,`store`];function Jne(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 Yne({defaultScope:e=`segment`,initialId:t}){let[n,r]=(0,U.useState)(`# ${e} calc line
493
493
  segmentVolume = reps * resistance (library) when has(reps) and has(resistance)
494
494
  `),[i,a]=(0,U.useState)(e),[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)(),u=(0,U.useMemo)(()=>F9(n,i),[n,i]),d=Jne(u.defs,n),f=u.diagnostics.every(e=>e.severity!==`error`)&&u.defs.length>0,p=async()=>{s(await i5())};(0,U.useEffect)(()=>{p()},[]),(0,U.useEffect)(()=>{t&&(async()=>{let e=(await i5()).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 a5({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 o5(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,W.jsxs)(`div`,{className:`space-y-3`,"data-testid":`calc-authoring-panel`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Scope`}),(0,W.jsx)(`div`,{className:`flex gap-1`,children:qne.map(e=>(0,W.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,W.jsx)(`div`,{className:`ml-auto flex gap-2`,children:(0,W.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,W.jsx)(jne,{value:n,onChange:r,scope:i,autoFocus:!0}),(0,W.jsx)(Mne,{analysis:u}),(0,W.jsx)(Kne,{scope:i,analysis:u}),c&&(0,W.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:c}),o.length>0&&(0,W.jsxs)(`div`,{className:`mt-2`,children:[(0,W.jsx)(`div`,{className:`mb-1 text-[11px] uppercase tracking-wide text-muted-foreground`,children:`Saved user calcs`}),(0,W.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:o.map(e=>(0,W.jsxs)(`li`,{className:`flex items-center justify-between px-3 py-2 text-sm`,children:[(0,W.jsx)(`button`,{onClick:()=>g(e),className:`text-left font-mono text-purple-300 dark:text-purple-400 hover:underline`,children:e.id}),(0,W.jsx)(`button`,{onClick:()=>h(e.id),className:`text-xs text-muted-foreground hover:text-destructive`,children:`delete`})]},e.id))})]})]})}function Xne(){let e=On(),[t]=fn(`zip`),[n]=fn(`z`),[r]=(0,U.useState)(()=>{let e=window.location.search;return e.includes(`zip=`)||e.includes(`z=`)});return(0,U.useEffect)(()=>{!t&&!n&&!r&&e(`/`,{replace:!0})},[t,n,e,r]),(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}async function X9(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 Z9(){let e=On(),t=Ft(),{date:n}=pn(),[r]=fn(`zip`),[i,a]=(0,U.useState)({state:`loading`});return(0,U.useEffect)(()=>{if(!(t.pathname===`/load/journal`||t.pathname.startsWith(`/load/journal/`)))return;if(!r){e($.journal,{replace:!0});return}let i=!1,o=async()=>{try{a({state:`loading`});let t;try{t=await X9(r)}catch(e){console.error(`Failed to decode zip:`,e),a({state:`error`,error:`Failed to decode the journal entry`,onRetry:()=>{o()}}),Q({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=vF(n);if(!t){a({state:`error`,error:`Invalid date format`}),Q({title:`Error`,description:`Invalid date format. Expected YYYY-MM-DD.`,variant:`destructive`}),e($.journal,{replace:!0});return}c=t.dateKey}else c=gF();if(i)return;if(_F(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()}}),Q({title:`Error`,description:`An unexpected error occurred.`,variant:`destructive`}))}},s=async(t,n)=>{if(!i)try{a({state:`creating`});let r=await SF.create({journalDate:n,title:n,rawContent:t});i||(a({state:`success`,content:t,dateKey:n}),e(HP(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)}}),Q({title:`Error`,description:`Failed to create journal entry.`,variant:`destructive`}))}};return o(),()=>{i=!0}},[r,n,e]),i}var Zne=({selectedDate:e,onImportToday:t,onDateSelect:n,entryDates:r,isLoading:i=!1,className:a})=>{let[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),{triggerRef:u,align:d,recompute:f}=W0(`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?Zy(e):`Date`,_=i||c;return(0,W.jsxs)(`div`,{className:G(`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,W.jsxs)(`button`,{type:`button`,title:`Import to today's journal`,onClick:p,disabled:_,className:G(`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,W.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}):(0,W.jsx)(Ct,{className:`h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{children:`Import Today`})]}),(0,W.jsx)(`div`,{className:`w-px bg-border/60 self-stretch`}),(0,W.jsxs)(mH,{open:o,onOpenChange:h,children:[(0,W.jsx)(hH,{asChild:!0,children:(0,W.jsxs)(`button`,{ref:e=>{u.current=e},type:`button`,title:`Select a date to plan for the future`,className:G(`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,W.jsx)(je,{className:`h-4 w-4 shrink-0`}),e&&(0,W.jsx)(`span`,{className:`leading-none text-xs`,children:g})]})}),(0,W.jsx)(gH,{align:d,className:`p-0 w-auto`,children:(0,W.jsx)(d0,{selectedDate:e||null,onDateSelect:m,entryDates:r})})]})]})},Qne=({dateKey:e,onConfirm:t,onCancel:n,isLoading:r=!1})=>{let[i,a]=U.useState(!1),o=Xy(new Date(`${e}T00:00:00`));return(0,W.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,W.jsx)(`div`,{className:`absolute inset-0 bg-black/50 animate-in fade-in`}),(0,W.jsx)(`div`,{className:`relative z-10 w-full max-w-sm mx-auto px-4 animate-in zoom-in-95 fade-in`,children:(0,W.jsxs)(`div`,{className:`bg-background rounded-lg border border-border shadow-lg`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-border`,children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold`,children:`Backdate Journal Entry`}),(0,W.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,W.jsx)(Sr,{className:`h-4 w-4`})})]}),(0,W.jsxs)(`div`,{className:`px-6 py-4 space-y-4`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The date you selected is in the past.`}),(0,W.jsxs)(`p`,{className:`text-sm`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Import to: `}),(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:o})]}),(0,W.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,W.jsxs)(`div`,{className:`px-6 py-4 border-t border-border flex gap-2 justify-end`,children:[(0,W.jsx)(K,{variant:`outline`,onClick:n,disabled:r||i,children:`Cancel`}),(0,W.jsx)(K,{onClick:async()=>{a(!0);try{await t()}finally{a(!1)}},disabled:r||i,className:G(r||i?`opacity-70`:``),children:i?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`inline-block animate-spin mr-2`,children:`⏳`}),`Importing...`]}):`Confirm & Import`})]})]})})]})},$ne={h1:({children:e})=>(0,W.jsx)(`h1`,{className:`text-3xl font-bold mt-8 mb-4 first:mt-0 text-foreground`,children:e}),h2:({children:e})=>(0,W.jsx)(`h2`,{className:`text-2xl font-bold mt-6 mb-3 text-foreground`,children:e}),h3:({children:e})=>(0,W.jsx)(`h3`,{className:`text-xl font-semibold mt-5 mb-2 text-foreground`,children:e}),h4:({children:e})=>(0,W.jsx)(`h4`,{className:`text-lg font-semibold mt-4 mb-2 text-foreground`,children:e}),h5:({children:e})=>(0,W.jsx)(`h5`,{className:`text-base font-semibold mt-3 mb-1 text-foreground`,children:e}),h6:({children:e})=>(0,W.jsx)(`h6`,{className:`text-sm font-semibold mt-2 mb-1 text-muted-foreground`,children:e}),p:({children:e})=>(0,W.jsx)(`p`,{className:`text-sm leading-relaxed mb-4 text-muted-foreground`,children:e}),strong:({children:e})=>(0,W.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e}),em:({children:e})=>(0,W.jsx)(`em`,{className:`italic text-muted-foreground`,children:e}),ul:({children:e})=>(0,W.jsx)(`ul`,{className:`list-disc list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),ol:({children:e})=>(0,W.jsx)(`ol`,{className:`list-decimal list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),li:({children:e})=>(0,W.jsx)(`li`,{className:`ml-2`,children:e}),code:({children:e,className:t})=>t?null:(0,W.jsx)(`code`,{className:`px-1.5 py-0.5 rounded bg-muted text-primary font-mono text-xs`,children:e}),pre:({children:e})=>(0,W.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,W.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,W.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary hover:underline font-medium`,children:t}),table:({children:e})=>(0,W.jsx)(`div`,{className:`my-4 overflow-x-auto rounded border border-border`,children:(0,W.jsx)(`table`,{className:`w-full text-xs`,children:e})}),thead:({children:e})=>(0,W.jsx)(`thead`,{className:`bg-muted/50`,children:e}),tbody:({children:e})=>(0,W.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e}),tr:({children:e})=>(0,W.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e}),th:({children:e})=>(0,W.jsx)(`th`,{className:`px-3 py-2 text-left font-semibold text-foreground text-xs`,children:e}),td:({children:e})=>(0,W.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground`,children:e}),hr:()=>(0,W.jsx)(`hr`,{className:`my-6 border-border/50`})};function Q9(){let e=On(),t=Z9(),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(null),{state:o,content:s,dateKey:l,error:u,onConfirmBackdate:d,onRetry:f}=t;return(0,W.jsxs)(`div`,{className:`flex flex-col h-screen bg-background`,children:[(0,W.jsxs)(`div`,{className:`border-b border-border/50 bg-muted/30 px-6 py-4 flex items-center justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.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,W.jsx)(c,{className:`h-5 w-5`})}),(0,W.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:`Import Journal Entry`})]}),o===`loading`?(0,W.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}),`Preparing preview...`]}):o===`error`?(0,W.jsx)(K,{variant:`outline`,size:`sm`,onClick:f,children:`Retry`}):o===`pending-confirmation`||o===`creating`?null:(0,W.jsx)(Zne,{selectedDate:i,onImportToday:async()=>{d&&await d()},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):d&&await d()},isLoading:o===`creating`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-auto px-6 py-6`,children:[o===`loading`&&(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,W.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Loading preview...`})]}),o===`error`&&(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,W.jsx)(`div`,{className:`bg-destructive/10 border border-destructive/50 rounded-lg p-4 max-w-md`,children:(0,W.jsxs)(`div`,{className:`flex gap-3 items-start`,children:[(0,W.jsx)($n,{className:`h-5 w-5 text-destructive mt-0.5 shrink-0`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`font-semibold text-foreground`,children:`Error Loading Preview`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:u||`Failed to decode the zip content`})]})]})}),(0,W.jsx)(K,{onClick:f,variant:`outline`,children:`Try Again`})]}),o===`pending-confirmation`&&(0,W.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,W.jsxs)(`div`,{className:`text-center`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`Backdate Confirmation Required`}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`This date is in the past. Please confirm to proceed.`})]})}),o===`creating`&&(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,W.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Creating journal entry...`})]}),o===`success`&&(0,W.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,W.jsxs)(`div`,{className:`text-center`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`✓ Entry Created`}),(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Redirecting...`})]})}),o===`loading`||o===`error`||o===`pending-confirmation`||o===`creating`||o===`success`?null:s?(0,W.jsx)(`article`,{className:`prose prose-sm max-w-2xl mx-auto`,children:(0,W.jsx)(_n,{remarkPlugins:[Gn],components:$ne,children:s})}):null]}),n&&l&&(0,W.jsx)(Qne,{dateKey:l,onConfirm:async()=>{d&&(r(!1),await d())},onCancel:()=>r(!1),isLoading:o===`creating`})]})}function ere(){let e=Ft(),t=On();return(0,U.useEffect)(()=>{let n=new URLSearchParams(e.search).get(`source`);t(n?`${$.notebooks}?feed=${encodeURIComponent(n)}`:$.notebooks,{replace:!0})},[e.search,t]),(0,W.jsx)(`div`,{className:`p-8 text-center text-xs text-muted-foreground`,"data-testid":`feed-subscription-intake`,children:`Redirecting to Library…`})}async function tre(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 mA().updateRecord(r.id,{rawContent:o,expectedSourceRevision:r.sourceRevision})}function nre(){let{runtimeId:e}=pn(),t=On(),n=(0,U.useRef)(e?g0.get(e):void 0),r=(0,U.useRef)(null),i=(0,U.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 pM(t.snapshot,t.block,e,t.origin):await mM(t.noteId,t.block,e,t.origin),r.current.block)},[e]);(0,U.useEffect)(()=>{e&&g0.delete(e)},[e]);let a=n.current,o=(0,U.useRef)(!1),s=(0,U.useCallback)((t,n)=>!n||!e||!a?Promise.reject(Error(`Run cannot be saved — its session data or runtime id is missing.`)):(o.current=n.completed,bM.record({runBlock:a.block,blockId:a.block.id,noteId:a.noteId,resultId:e,data:n,createdAt:n.endTime||Date.now(),...a.origin?{origin:a.origin}:{}}).then(async()=>{if(n.completed)try{await tre(a.noteId,a.block.id,e)}catch{}})),[e,a]),c=(0,U.useCallback)(()=>{if(!a){t(`/`);return}if(o.current){t(qP(e),{replace:!0});return}if(a.returnTo){t(a.returnTo,{replace:!0});return}t(T0(wB(a.noteId)),{replace:!0})},[e,a,t]);if(!a)return(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-red-400`,children:`Runtime not found. Please start the workout from the editor.`});let l=r.current?.note.rawContent??a.captured?.note.rawContent??a.snapshot?.rawContent;return(0,W.jsx)(fQ,{block:a.block,noteContent:l,prepareRun:i,onClose:c,onCompleteWorkout:s,resultId:e,autoStart:!0})}var $9=null;async function rre(e){(!$9||$9.attempt!==e)&&($9={attempt:e,promise:xJ(Q0.content)});try{return await $9.promise}finally{$9?.attempt===e&&($9=null)}}function ire(){let e=On(),[t,n]=(0,U.useState)(!1),[r,i]=(0,U.useState)(0);return(0,U.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await rre(r);t||e(zP(n),{replace:!0})}catch{t||n(!0)}})(),()=>{t=!0}},[e,r]),t?(0,W.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-3 text-zinc-300 px-4 text-center`,children:[(0,W.jsx)(`p`,{role:`alert`,children:`Unable to create a new playground note.`}),(0,W.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,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}function are(){let e=On(),t=Ft(),[n]=fn(`zip`),[r]=fn(`z`),[i]=fn(`by`),[a]=fn(`src`);(0,U.useEffect)(()=>{if(t.pathname!==`/load`&&!(t.pathname===`/`&&r))return;if(r){let t=!1;return(async()=>{try{let e=await X9(r);if(e===null)throw Error(`Invalid workout link`);if(t)return;let n=_2(e,i??void 0);if(await SJ(n,{reuseKey:`home`,title:`Home playground`}),t)return;b2({content:n,by:i??void 0})}catch(e){console.error(`Failed to decode zip:`,e),t||Q({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 X9(n);if(t===null)throw Error(`Invalid workout link`);if(o)return;let r=s?await xJ(t,{sourcePath:s}):await xJ(t);o||e(zP(r),{replace:!0})}catch(t){console.error(`Failed to decode zip:`,t),o||(Q({title:`Could not import workout`,description:`The link was invalid or the workout could not be saved.`,variant:`destructive`}),e($.home,{replace:!0}))}})(),()=>{o=!0}},[n,r,i,a,e,t.pathname])}function ore(){let{pathname:e,hash:t}=Ft(),{scrollToSection:n}=IP();return(0,U.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 sre(){return are(),Z9(),(0,U.useEffect)(()=>{Xk.current().catch(console.error),yk(),E3(),uM().catch(()=>{})},[]),null}function cre({settling:e}){let t=w3();if(e){let e=L4(t);return(0,W.jsxs)(`div`,{role:`status`,className:`flex min-h-dvh flex-col items-center justify-center gap-2 text-muted-foreground`,children:[(0,W.jsx)(`span`,{children:t?I4(t):`Loading library…`}),e&&(0,W.jsx)(`span`,{className:`text-xs`,"data-testid":`boot-progress-detail`,children:e})]})}return(0,W.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold`,children:`The library's routed content failed to load.`}),(0,W.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:`The feed corpus has not supplied this page. Re-running the feed import usually restores it.`}),(0,W.jsx)(K,{variant:`outline`,size:`sm`,"data-testid":`root-refeed`,onClick:()=>{GN().then(()=>mk())},children:`Re-import library`})]})}function lre(){let e=(0,U.useRef)(()=>{}),t=mz(),n=C3(),r=(0,U.useMemo)(()=>LR(()=>e.current(),t),[t]);return(0,W.jsx)(Ai,{defaultTheme:`system`,storageKey:`wod-wiki-playground-theme`,children:(0,W.jsx)(Wy,{children:(0,W.jsx)(sP,{children:(0,W.jsx)(uP,{children:(0,W.jsx)(cte,{children:(0,W.jsx)(Vn,{children:(0,W.jsxs)(Cn,{children:[(0,W.jsx)(sre,{}),(0,W.jsx)(jP,{}),(0,W.jsxs)(RP,{tree:r,children:[(0,W.jsx)(ore,{}),(0,W.jsxs)(Et,{children:[(0,W.jsx)(Zn,{path:$.home,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:`*`,element:t.length===0?(0,W.jsx)(cre,{settling:n===`preparing`||EN()&&n!==`error`}):(0,W.jsx)(Gte,{})}),(0,W.jsx)(Zn,{path:`/proto/calc-authoring`,element:(0,W.jsx)(rne,{})}),(0,W.jsx)(Zn,{path:`/proto/query-block-composer`,element:(0,W.jsx)(pne,{})}),(0,W.jsx)(Zn,{path:`/settings`,element:(0,W.jsx)(ln,{to:`/settings/appearance`,replace:!0})}),(0,W.jsx)(Zn,{path:`/settings/appearance`,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.settingsProfile,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.settingsData,element:(0,W.jsx)(ln,{to:$.settingsStorage,replace:!0})}),(0,W.jsx)(Zn,{path:$.settingsDatabase,element:(0,W.jsx)(ln,{to:$.settingsStorage,replace:!0})}),(0,W.jsx)(Zn,{path:$.settingsStorage,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.settingsSync,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:`/settings/system`,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.settingsQueries,element:(0,W.jsx)(ln,{to:$.journal,replace:!0})}),(0,W.jsx)(Zn,{path:$.settingsTags,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.settingsSoundProfiles,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:`/settings/library/calcs`,element:(0,W.jsx)(`div`,{className:`p-6`,children:(0,W.jsx)(Yne,{})})}),(0,W.jsx)(Zn,{path:`/legacy`,element:(0,W.jsx)(jte,{})}),(0,W.jsx)(Zn,{path:`/syntax`,element:(0,W.jsx)(Wte,{})}),(0,W.jsx)(Zn,{path:$.plan,element:(0,W.jsx)(Cte,{})}),(0,W.jsx)(Zn,{path:$.feeds,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.feed,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.notebooks,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.notebook,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.notebookTarget,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.notebookItem,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.subscribe,element:(0,W.jsx)(ere,{})}),(0,W.jsx)(Zn,{path:$.pages,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.page,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.load,element:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,W.jsx)(Xne,{})})}),(0,W.jsx)(Zn,{path:$.loadJournal,element:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,W.jsx)(Q9,{})})}),(0,W.jsx)(Zn,{path:$.loadJournalDate,element:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,W.jsx)(Q9,{})})}),(0,W.jsx)(Zn,{path:$.playgroundRoot,element:(0,W.jsx)(ire,{})}),(0,W.jsx)(Zn,{path:$.playground,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.playgrounds,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.notes,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.note,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.journal,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.day,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.run,element:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,W.jsx)(nre,{})})}),(0,W.jsx)(Zn,{path:$.tracker,element:(0,W.jsx)(Ste,{})}),(0,W.jsx)(Zn,{path:`/results/segments`,element:(0,W.jsx)(xte,{})}),(0,W.jsx)(Zn,{path:$.sessionDetail,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.sessions,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.sessionDate,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:`/review/:runtimeId`,element:(0,W.jsx)(J7,{})}),(0,W.jsx)(Zn,{path:`/note/:noteId/review`,element:(0,W.jsx)(J7,{})}),(0,W.jsx)(Zn,{path:`/note/:noteId/review/:sectionId`,element:(0,W.jsx)(J7,{})}),(0,W.jsx)(Zn,{path:`/note/:noteId/review/:sectionId/:resultId`,element:(0,W.jsx)(J7,{})}),(0,W.jsx)(Zn,{path:$.efforts,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.effort,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.equipment,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.equipmentSlug,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.tags,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.tagCategory,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.tag,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.dashboards,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),(0,W.jsx)(Zn,{path:$.dashboardView,element:(0,W.jsx)(q7,{searchHandlerRef:e})}),t.map(({route:t})=>(0,W.jsx)(Zn,{path:t,element:(0,W.jsx)(q7,{searchHandlerRef:e})},t))]}),(0,W.jsx)(wte,{})]})]})})})})})})})}function ure({error:e,onRetry:t}){let n=e instanceof Error?e.message:String(e),r=Bk();return(0,W.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-4 p-6 text-center`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold`,children:`The local database could not be opened.`}),(0,W.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground font-mono break-all`,"data-testid":`boot-recovery-error`,children:n}),(0,W.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.`,r.state!==`indexed-db`&&` Turn off Turso Sync to skip backup comparison. Settings → Storage has the full controls once the app loads.`]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:[(0,W.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`}),r.state!==`indexed-db`&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{Kk(),window.location.reload()},"data-testid":`boot-recovery-local`,className:`rounded-md border border-border bg-card px-3 py-1.5 text-xs font-medium hover:bg-accent`,children:`Turn off Turso Sync`})]}),r.state!==`indexed-db`&&(0,W.jsxs)(`details`,{className:`w-full max-w-md rounded-xl border border-border bg-card p-4 text-left`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium`,children:`Fix Turso credentials`}),(0,W.jsx)(`div`,{className:`pt-3`,children:(0,W.jsx)(L7,{saved:r.state===`turso`?{url:r.url,authToken:r.authToken}:void 0})})]})]})}function dre(){let e=(0,U.useSyncExternalStore)(fS,dS),t=e.phase===`updating`;return(0,W.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,W.jsx)(`p`,{className:`text-sm font-semibold`,children:t?`Updating local database…`:`Checking for storage updates…`}),t&&e.fromVersion!==null&&(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Schema v`,e.fromVersion,` → v`,e.toVersion]}),e.message&&(0,W.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:e.message})]})}var fre=(0,Oi.createRoot)(document.getElementById(`root`));function pre(){let[e,t]=(0,U.useState)(!1),[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(0),o=(0,U.useSyncExternalStore)(fS,dS);return(0,U.useEffect)(()=>{let e=!1,n;return nA().then(()=>Oj?Nj():void 0).then(()=>cj.ensureNotebooks().catch(e=>hM(`NotebookService`,`ensureNotebooks failed`,e))).then(()=>{e||(n=oA(),t(!0))}).catch(t=>{e||r(t)}),()=>{e=!0,n?.()}},[i]),n?(0,W.jsx)(ure,{error:n,onRetry:()=>{r(null),a(e=>e+1)}}):o.phase===`checking`||o.phase===`updating`?(0,W.jsx)(dre,{}):e?(0,W.jsx)(lre,{}):(0,W.jsx)(`div`,{role:`status`,className:`flex min-h-dvh items-center justify-center text-muted-foreground`,children:`Opening local library…`})}fre.render((0,W.jsx)(U.StrictMode,{children:(0,W.jsx)(pre,{})}));export{HU as t};
495
- //# sourceMappingURL=main-D0MbuRhX.js.map
495
+ //# sourceMappingURL=main-euGENSOK.js.map