@bitcobblers/wod-wiki-tools 0.51.2195 → 0.51.2196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/wod.cjs +1 -1
- package/dist/bin/wod.cjs.map +1 -1
- package/dist/bin/wod.mjs +2 -2
- package/dist/{chunk-V7EGHQAY.mjs → chunk-QE5CK3QT.mjs} +3 -3
- package/dist/chunk-QE5CK3QT.mjs.map +1 -0
- package/dist/{chunk-QAPPKPCL.mjs → chunk-TDYC2FCK.mjs} +4 -4
- package/dist/{chunk-QAPPKPCL.mjs.map → chunk-TDYC2FCK.mjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{scaffoldFeed-I35NUXOI.mjs → scaffoldFeed-MROAPAAP.mjs} +3 -3
- package/dist/{scaffoldFeed-I35NUXOI.mjs.map → scaffoldFeed-MROAPAAP.mjs.map} +1 -1
- package/dist/web/playground/assets/{feedSync.worker-CK48nNHX.js → feedSync.worker-ftP9nOAl.js} +2 -2
- package/dist/web/playground/assets/{main-CRhUHzsM.js → main-lF0MJ7yl.js} +6 -6
- package/dist/web/playground/assets/{statementBuilderFlow-uTfwbWmx.js → statementBuilderFlow-CNz2Wkh9.js} +2 -2
- package/dist/web/playground/index.html +1 -1
- package/dist/web/{server/seed/core/chunks/canvas.ed613b72.json → playground/seed/core/chunks/canvas.499930d3.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{dashboards.d1732e3d.json → dashboards.91cae756.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{efforts.1f14a471.json → efforts.f2875ac9.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{equipment.3d9eda19.json → equipment.a56f9b72.json} +1 -1
- package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +180 -180
- package/dist/web/playground/seed/core/indexes/notebooks/dashboards.json +16 -16
- package/dist/web/playground/seed/core/indexes/notebooks/efforts.json +326 -326
- package/dist/web/playground/seed/core/indexes/notebooks/equipment.json +50 -50
- package/dist/web/playground/seed/core/manifest.json +27 -27
- package/dist/web/playground/seed/core/markdown/canvas/ai-first/README.json +1 -1
- package/dist/web/playground/seed/core/markdown/canvas/guide/README.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/guide/clock.json +1 -1
- package/dist/web/playground/seed/core/markdown/canvas/guide/dashboards.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/guide/metrics.json +12 -12
- package/dist/web/playground/seed/core/markdown/canvas/guide/protocols.json +20 -20
- package/dist/web/playground/seed/core/markdown/canvas/guide/sessions.json +33 -33
- package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +11 -11
- package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +25 -25
- package/dist/web/playground/seed/core/markdown/canvas/guide/wql.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/home/sample-script.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/home/welcome-1.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-3.json +10 -10
- package/dist/web/playground/seed/core/markdown/canvas/syntax/document-4.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/measurements.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
- package/dist/web/playground/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
- package/dist/web/playground/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
- package/dist/web/playground/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
- package/dist/web/playground/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
- package/dist/web/playground/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
- package/dist/web/playground/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
- package/dist/web/playground/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
- package/dist/web/playground/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
- package/dist/web/playground/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
- package/dist/web/playground/seed/core/markdown/dashboards/training-block-review.json +11 -11
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/recovery/rest.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/recovery/stretching.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/rowing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/backward-running.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/running/running-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/snatch.json +2 -2
- package/dist/web/playground/seed/core/markdown/efforts/strength/back-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/bench-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/carioca.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/cluster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/devils-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/front-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/good-morning.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/l-sit.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/man-maker.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/power-clean.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/push-press.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sled-push.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/thruster.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/swimming/swimming.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
- package/dist/web/playground/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/air-bike.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/barbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/bench.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/bike-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/climbing-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/clubs.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/dumbbell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/ghd.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/jump-rope.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/kettlebell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/macebell.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/medicine-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/parallettes.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/plyo-box.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/pull-up-bar.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/rower.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sandbag.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/ski-erg.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/slam-ball.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sled.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/sledgehammer.json +1 -1
- package/dist/web/playground/seed/core/markdown/equipment/weight-vest.json +1 -1
- package/dist/web/playground/seed/core/report.html +13 -13
- package/dist/web/server/assets/{feedSync.worker-CK48nNHX.js → feedSync.worker-ftP9nOAl.js} +2 -2
- package/dist/web/server/assets/{main-DYNiJfcz.js → main-4y8Q5pTh.js} +6 -6
- package/dist/web/server/assets/{statementBuilderFlow-D5c1zwcv.js → statementBuilderFlow-BgrBt6FL.js} +2 -2
- package/dist/web/server/index.html +1 -1
- package/dist/web/{playground/seed/core/chunks/canvas.ed613b72.json → server/seed/core/chunks/canvas.499930d3.json} +1 -1
- package/dist/web/server/seed/core/chunks/{dashboards.d1732e3d.json → dashboards.91cae756.json} +1 -1
- package/dist/web/server/seed/core/chunks/{efforts.1f14a471.json → efforts.f2875ac9.json} +1 -1
- package/dist/web/server/seed/core/chunks/{equipment.3d9eda19.json → equipment.a56f9b72.json} +1 -1
- package/dist/web/server/seed/core/indexes/notebooks/canvas.json +180 -180
- package/dist/web/server/seed/core/indexes/notebooks/dashboards.json +16 -16
- package/dist/web/server/seed/core/indexes/notebooks/efforts.json +326 -326
- package/dist/web/server/seed/core/indexes/notebooks/equipment.json +50 -50
- package/dist/web/server/seed/core/manifest.json +27 -27
- package/dist/web/server/seed/core/markdown/canvas/ai-first/README.json +1 -1
- package/dist/web/server/seed/core/markdown/canvas/guide/README.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/guide/clock.json +1 -1
- package/dist/web/server/seed/core/markdown/canvas/guide/dashboards.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/guide/metrics-summaries.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/guide/metrics.json +12 -12
- package/dist/web/server/seed/core/markdown/canvas/guide/protocols.json +20 -20
- package/dist/web/server/seed/core/markdown/canvas/guide/sessions.json +33 -33
- package/dist/web/server/seed/core/markdown/canvas/guide/start.json +11 -11
- package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +25 -25
- package/dist/web/server/seed/core/markdown/canvas/guide/wql.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/home/sample-script.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/home/welcome-1.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/actions-comments.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/alternating-emom.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/basic-emom.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/calculated-metrics.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/classic-amrap.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-barbell-cycling.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-full-session.json +10 -10
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-nested-protocols.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-partner-workout.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/complex-swimming.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/core-rules.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-and-calculated-metrics.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-intervals.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-3.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/custom-metrics-5.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-bouldering.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-hangboard.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-climb-sport.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-log.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-plan.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/dialect-wod.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/distance-intervals.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-3.json +10 -10
- package/dist/web/server/seed/core/markdown/canvas/syntax/document-4.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/frontmatter-summaries.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-1.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-2.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-3.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/groups-4.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/longer-duration.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/longer-intervals.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/measurements.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-1.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-2.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-3.json +8 -8
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-4.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/metrics-5.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-sections.json +10 -10
- package/dist/web/server/seed/core/markdown/canvas/syntax/mixed-timers.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-amrap-windows.json +7 -7
- package/dist/web/server/seed/core/markdown/canvas/syntax/multiple-sets.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/named-groups.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-1.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-2.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-3.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-4.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/protocols-5.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/single-movement.json +3 -3
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-1.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-2.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-3.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/supplemental-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/time-cap.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timer-modifiers.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-1.json +6 -6
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-2.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-3.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-4.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-5.json +5 -5
- package/dist/web/server/seed/core/markdown/canvas/syntax/timers-rest.json +4 -4
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-effort.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/aggregate-by-week.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/content-fran.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/filter-combos.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/pipes-limit.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/session-rpe.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/source-journal.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/tis-trend.json +2 -2
- package/dist/web/server/seed/core/markdown/canvas/wql-presets/where-join.json +2 -2
- package/dist/web/server/seed/core/markdown/dashboards/benchmark-pr-board.json +6 -6
- package/dist/web/server/seed/core/markdown/dashboards/finger-strength-v8.json +5 -5
- package/dist/web/server/seed/core/markdown/dashboards/polarized-base-marathon.json +9 -9
- package/dist/web/server/seed/core/markdown/dashboards/recovery-readiness.json +7 -7
- package/dist/web/server/seed/core/markdown/dashboards/road-to-560-total.json +9 -9
- package/dist/web/server/seed/core/markdown/dashboards/training-block-review.json +11 -11
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/air-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/box-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/broad-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-box-jump-over.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee-over-dumbbell.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/dumbbell-squat-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/ghd-sit-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/ground-kong.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/jumping-jack.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/kong-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/lunge.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/overhead-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-roll.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/parkour-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/pistol-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/plank.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/precision-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/quadrupedal-movement.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/russian-twist.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/sit-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/squat-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/tuck-jump.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/bodyweight/wall-burpee.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/assault-bike.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-moderate.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/cycling/cycling-vigorous.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/assisted-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/burpee-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/chest-to-bar-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/dip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/double-under.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/handstand-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jump-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/jumping-push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/l-sit-pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/muscle-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/pull-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/push-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/reverse-wall-dip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/rope-climb.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/gymnastics/toes-to-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-arm-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-around-the-world.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-bent-over-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean-and-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-floor-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-front-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-goblet-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-gorilla-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-halo.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-overhead-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/kettlebell-windmill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/kettlebell/turkish-get-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/recovery/rest.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/recovery/stretching.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/rowing-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/rowing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/rowing/ski-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/backward-running.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-6-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-8-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/running/running-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/snatch.json +2 -2
- package/dist/web/server/seed/core/markdown/efforts/strength/back-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/bench-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/box-step-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/carioca.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/clean-and-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/cluster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dead-hang.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/devils-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-box-step-up.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-fly.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-row.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/dumbbell-thruster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/elbows-to-knees.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/farmer-carry.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/frog-stand.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/front-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/good-morning.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/hanging-leg-raise.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/hollow-rock.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/knees-to-elbows.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/l-sit.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/man-maker.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/medicine-ball-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/overhead-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/parkour-vault.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/pig-flip.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/power-clean.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/power-snatch.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/push-jerk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/push-press.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/romanian-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/single-leg-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/skull-crusher.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/slam-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sled-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sled-push.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/sumo-deadlift.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/thruster.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/triceps-extension.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/v-sit-hold.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/wall-walk.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/strength/yoga-sun-salutation.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-assisted-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-backstroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-breaststroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-butterfly.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-catch-up-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-choice-stroke.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dive-start.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-dolphin-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-drafting.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-fingertip-drag.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-freestyle.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-individual-medley.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-kick.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-resisted-sprint.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-rotation-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-sighting.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-single-arm-drill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-stroke-transition.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-two-kick-one-pull.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming-vigorous.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/swimming/swimming.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-arm-cast.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-circles.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-mill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-reverse-mill.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/clubbell-shield-cast.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-10-to-2-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-360-swing.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-barbarian-squat.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-flow.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-gravedigger.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/macebell-touchdown.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-carry.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-bear-hug-extension.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/unconventional/sandbag-over-shoulder.json +1 -1
- package/dist/web/server/seed/core/markdown/efforts/walking/walking-3-mph.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/air-bike.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/barbell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/bench.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/bike-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/climbing-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/clubs.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/dumbbell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/ghd.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/gymnastic-rings.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/jump-rope.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/kettlebell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/macebell.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/medicine-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/parallettes.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/plyo-box.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/pull-up-bar.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/rower.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sandbag.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/ski-erg.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/slam-ball.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sled.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/sledgehammer.json +1 -1
- package/dist/web/server/seed/core/markdown/equipment/weight-vest.json +1 -1
- package/dist/web/server/seed/core/report.html +13 -13
- package/package.json +6 -6
- package/dist/chunk-V7EGHQAY.mjs.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-BiwvmytJ.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-CelWxf33.css","assets/statementBuilderFlow-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-BiwvmytJ.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-CelWxf33.css","assets/statementBuilderFlow-CNz2Wkh9.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 z,Jn as ee,Jr as te,Jt as ne,K as re,Kn as ie,Kr as ae,Kt as oe,L as se,Ln as B,Lr as ce,M as V,Mn as le,Mr as ue,Mt as de,N as fe,Nn as pe,Nr as me,O as H,On as he,Or as ge,Ot as _e,P as ve,Pn as ye,Pr as be,Q as xe,Qn as Se,Qr as Ce,Qt as we,R as Te,Rn as Ee,Rr as De,S as Oe,Sn as ke,Sr as Ae,St as je,T as Me,Tn as Ne,Tr as Pe,Tt as Fe,U as Ie,Un as Le,Ur as Re,Ut as ze,V as Be,Vn as Ve,Vr as He,Vt as Ue,W as We,Wn as Ge,Wr as Ke,Wt as qe,X as Je,Xn as Ye,Xr as Xe,Xt as Ze,Y as Qe,Yn as $e,Yr as et,Yt as tt,Z as nt,Zn as rt,Zr as it,Zt as at,_ as ot,_i as st,_n as ct,_r as lt,_t as ut,a as dt,ai as ft,an as pt,ar as mt,at as ht,b as gt,bi as _t,bn as eee,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 tee,ei as kt,en as At,er as jt,et as Mt,f as Nt,fi as Pt,fn as Ft,fr as It,ft as Lt,g as nee,gi as Rt,gn as zt,gr as Bt,gt as Vt,h as Ht,hi as Ut,hn as Wt,hr as Gt,ht as Kt,i as qt,ii as Jt,in as Yt,ir as Xt,it as Zt,j as Qt,jn as $t,jr as en,jt as tn,k as ree,kn as nn,kr as rn,kt as an,l as on,li as sn,ln as cn,lr as ln,lt as un,m as dn,mi as fn,mn as pn,mr as mn,mt as iee,n as hn,ni as gn,nn as _n,nr as vn,nt as yn,o as bn,oi as xn,on as Sn,or as Cn,ot as wn,p as Tn,pi as En,pn as Dn,pr as On,pt as kn,q as An,qn as jn,qr as Mn,qt as Nn,r as Pn,ri as Fn,rn as In,rr as Ln,rt as Rn,s as zn,si as Bn,sn as Vn,sr as Hn,st as Un,t as Wn,ti as Gn,tn as Kn,tr as qn,tt as Jn,u as Yn,ui as Xn,un as Zn,ur as Qn,ut as $n,v as er,vi as tr,vn as nr,vr as rr,vt as ir,w as ar,wn as or,wr as sr,wt as cr,x as lr,xn as ur,xr as dr,xt as fr,y as pr,yi as mr,yn as hr,yr as gr,yt as _r,z as vr,zn as yr,zr as br,zt as xr}from"./vendor-BiwvmytJ.js";import{$ as Sr,A as Cr,B as U,C as wr,D as Tr,E as Er,F as Dr,G as Or,H as kr,I as Ar,J as jr,K as Mr,L as Nr,M as Pr,N as Fr,O as Ir,P as Lr,Q as Rr,R as zr,S as aee,T as Br,U as oee,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 Xr,ct as Zr,d as Qr,et as $r,f as ei,g as ti,h as ni,i as ri,it as ii,j as ai,k as oi,l as si,lt as ci,m as li,n as see,nt as ui,o as cee,ot as di,p as fi,q as pi,r as mi,rt as hi,s as gi,st as _i,t as vi,tt as yi,u as bi,ut as xi,v as Si,w as Ci,x as wi,y as Ti,z as Ei}from"./vendor-codemirror-B461LMkB.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 Di=tr(),W=e(_t(),1),G=xn(),Oi=(0,W.createContext)({theme:`system`,setTheme:()=>null});function ki({children:e,defaultTheme:t=`system`,storageKey:n=`vite-ui-theme`}){let[r,i]=(0,W.useState)(()=>localStorage.getItem(n)||t);(0,W.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,W.useCallback)(e=>{localStorage.setItem(n,e),i(e)},[n]),o=(0,W.useMemo)(()=>({theme:r,setTheme:a}),[r,a]);return(0,G.jsx)(Oi.Provider,{value:o,children:e})}var Ai=()=>{let e=(0,W.useContext)(Oi);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e};function K(...e){return D(ft(e))}function ji(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 Mi=R(`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`}}),q=W.memo(W.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>{let o=r?ce:`button`;return(0,G.jsx)(Jt,{as:o,className:K(Mi({variant:t,size:n,className:e})),ref:a,...i})}));q.displayName=`Button`;var Ni=[`parser`,`dialect`,`user-plan`,`runtime`,`user-entry`],Pi={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 Fi(e){return Pi[e??`parser`]??`parser`}var J=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}({}),Ii={parser:0,dialect:1,"user-plan":2,runtime:3,"user-entry":4};function Li(e){return e.ownershipLayer??Fi(e.origin)}function Ri(e){return Ii[Li(e)]??0}function zi(e){return e.map((e,t)=>{let n=Li(e);return{metric:e,type:e.type,layer:n,layerRank:Ii[n]??0,index:t,isSuppressor:e.action===`suppress`}})}function Bi(e,t){return t?e.filter(e=>!(t.types&&!t.types.includes(e.type)||t.layers&&!t.layers.includes(e.layer))):[...e]}function Vi(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 Hi(e){let t;for(let n of e)n.isSuppressor||(t==null||n.layerRank>t)&&(t=n.layerRank);return t}function Ui(e,t){return{metric:e.metric,type:e.type,layer:e.layer,outcome:t}}function Wi(e,t){return e.index-t.index}function Gi(e){let t=zi(e);return{raw(e){return Bi(t,e).map(e=>e.metric)},visible(e){let n=Vi(Bi(t,e)),r=[];for(let e of n.values()){if(e.some(e=>e.isSuppressor))continue;let t=Hi(e);if(t!=null)for(let n of e)!n.isSuppressor&&n.layerRank===t&&r.push(n)}return r.sort(Wi),r.map(e=>e.metric)},byLayer(e){let n=Bi(t,e),r={};for(let e of Ni)r[e]=[];for(let e of n)r[e.layer].push(e.metric);for(let e of Ni)r[e]?.length===0&&delete r[e];return r},promotionCandidates(e){let n=Vi(Bi(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:Ni[i]});continue}let i=Hi(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:Ni[i]})}return r.sort((e,t)=>{let n=(Ii[t.layer]??0)-(Ii[e.layer]??0);return n===0?0:n}),r},explain(e){let n=Vi(Bi(t,e)),r=[];for(let[e,t]of n.entries()){let n=t.some(e=>e.isSuppressor),i=n?void 0:Hi(t),a=t.map(e=>e.isSuppressor?Ui(e,`suppressor`):n?Ui(e,`hidden-by-suppressor`):i!=null&&e.layerRank===i?Ui(e,`visible`):Ui(e,`hidden-by-layer`));r.push({type:e,winnerLayer:i==null?void 0:Ni[i],suppressed:n,entries:a})}return r}}}function Ki(e,t){let n=[...e];return(t?.types?.includes(J.Hint)??!1)||(n=n.filter(e=>e.type!==J.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 qi=class{resolve(e,t){return Gi(Ki(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)=>Ri(t)-Ri(e))}};function Ji(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 Yi(e){let t=Ji(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 Xi(e){return e.split(`.`).map(Yi).filter(e=>e.length>0).join(`.`)}function Zi(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 Qi(e){return JSON.stringify([e.path,e.kind,e.dimension??null])}var $i=class extends Error{code;constructor(e,t){super(t),this.name=`UnitConversionError`,this.code=e}},ea=[{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`]}],ta=(()=>{let e=new Map;for(let t of ea){e.set(t.canonical.toLowerCase(),t);for(let n of t.aliases??[])e.has(n.toLowerCase())||e.set(n.toLowerCase(),t)}return e})();function na(e){if(typeof e==`string`)return ta.get(e.trim().toLowerCase())}function ra(e){return na(e)?.dimension}var ia=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 aa(e){return ia[e]}function oa(e,t,n){let r=na(t);if(!r)throw new $i(`unknown-unit`,`Unknown unit "${t}"`);let i=na(n);if(!i)throw new $i(`unknown-unit`,`Unknown unit "${n}"`);if(r.dimension!==i.dimension)throw new $i(`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 $i(`scale-mismatch`,`Named scales ${t} and ${n} are not interchangeable`);if(!Number.isFinite(e))throw new $i(`non-finite`,`Non-finite value cannot be converted`);return e*r.factor/i.factor}var sa=`references`,ca=[`explicit`,`split`,`whole`,`default`,`none`];function la(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 ua(e){return!e||typeof e!=`object`?!1:typeof e.reason==`string`}function da(e){let t=e?.[sa];if(!t||typeof t!=`object`)return;let n=t;if(!(typeof n.matched!=`string`||!ca.includes(n.matched))&&typeof n.source==`string`&&!(n.refs!==void 0&&(!Array.isArray(n.refs)||!n.refs.every(la)))&&!(n.diagnostics!==void 0&&(!Array.isArray(n.diagnostics)||!n.diagnostics.every(ua))))return t}var fa=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}},pa=class e{_metrics;_indexedLength=0;_resolver=new qi;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)=>Ri(t)-Ri(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=>Ri(e))),i=Math.max(...t.map(e=>Ri(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(`, `)}]`}},ma=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 pa?this.metrics:pa.from(this.metrics,this.id)}},ha=class extends ma{id=0;parent;children=[];meta=new fa(0,0,0,0);_metrics=pa.empty();metricMeta=new Map;isLeaf;get metrics(){return this._metrics}set metrics(e){this._metrics=pa.from(e,this.id)}constructor(e){super(),e&&(Object.assign(this,e),e.metrics&&(this.metrics=pa.from(e.metrics,this.id)),this.metricMeta||=new Map)}},ga=class e extends ma{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=pa.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 fa(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=pa.from(n,this.id),this.metricMeta=new Map,this.children=[],this.isLeaf=!0,this.meta=i?.meta??new fa(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}},_a=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 va(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 ya=`tagReference`;function ba(e){let t=e?.[ya];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 xa(e){let t=e.trim(),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619);return`bc-${(n>>>0).toString(16).padStart(8,`0`)}`}function Sa(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 Ca(e){return[...e].sort(Sa)}function wa(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[];for(let t of Ca(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 Ta(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 Ea=[`segment`,`system`,`load`,`event`,`compiler`,`completion`,`analytics`,`wellness`];function Da(e){return e===`time`?`run`:e===`log`?`log`:null}function Oa(e){let t=e.trim();return t.startsWith(`notebook/`)||t.startsWith(`notebook:`)?t.slice(9):t}function ka(e){return`notebook/${Oa(e)}`}function Aa(e,t){return t?t!==`feed`:e.seedOrigin!==`seed`&&e.feedOrigin!==`feed`}var ja=[{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`}],Ma=[`playground-run-tip`,`attention`,`code-example`,`syntax-group`],Na={table:!0,list:!0,value:!0,timeseries:!0,bar:!0,donut:!0,toplist:!0,"stacked-bar":!0,"goal-rings":!0,"zone-distribution":!0};function Pa(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 Fa(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 Ia(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 La(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]==="`"?Pa(`\`\`\`${h}`):null,_=a[0]==="`"?h.match(/^widget:([\w-]+)$/):null,v=t.registeredWidgets??Ma,y=_&&(`has`in v?v.has(_[1]):v.includes(_[1])),b=a[0]==="`"&&!y?h.match(/^widget:([a-zA-Z-]+)(?:-(?:full|\d+))?(?:\s+.*)?$/i):null,x=!!(b&&Na[b[1].toLowerCase()]),S=a[0]==="`"?h.match(/^query(?:[:\s](.*))?$/i)??(x?h.match(/^widget:?(.*)$/i):null):null,C=p&&g?g.dialect:p&&y?`widget`:p&&S?`query`:`code`,w=u(C,l,m);w.contentFrom=r[l]+n[l].length+i[l].length,w.contentTo=p?r[c]:w.to,w.displayContent=e.slice(w.contentFrom,w.contentTo),g&&p&&(w.sport=g.sport,w.contentId=xa(w.displayContent),w.scriptBlock={id:w.id,contentId:w.contentId,dialect:g.dialect,sport:g.sport,startLine:l,endLine:m,content:w.displayContent,state:`idle`,version:1,createdAt:s}),C===`widget`&&_&&(w.widgetName=_[1]),C===`query`&&S&&(w.querySuffix=(S[1]??``).trim()),o.push(w),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=Fa(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=Ia(m.displayContent.trim()),a&&(c=!1),o.push(m),l=p+1}return o}function Ra(e){return e.type===`time`||e.type===`log`?`wod`:e.type===`query`||e.type===`widget`||e.type===`embed`?e.type:null}function za(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 La(e,t)){let e=Ra(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 Ba(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=za(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 Va(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 Ha=/^[A-Za-z][\w.-]*$/,Ua=/^---\r?\n([\s\S]*?)\r?\n---/;function Wa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ga(e){let t=e.trim();return t===``||t.startsWith(`#`)}function Ka(e){return Array.isArray(e)}function qa(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 Ja(e,t,n){let r=` `.repeat(e);return Ka(n)?n.length===0?[`${r}${t}: []`]:[`${r}${t}:`,...n.map(e=>`${r} - ${typeof e==`number`?String(e):qa(e)}`)]:[`${r}${t}: ${typeof n==`number`?String(n):qa(n)}`]}function Ya(e,t,n,r){let i=[],a=r;for(let r=t;r<e.length;r++)r===e.length-1?i.push(...Ja(a,e[r],n)):i.push(`${` `.repeat(a)}${e[r]}:`),a+=2;return i}function Xa(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 Za(e,t,n){let r=[t],i=[];for(let a=t+1;a<e.length;a++){let t=e[a];if(Ga(t)){i.push(a);continue}if(t.length-t.trimStart().length>n)r.push(...i,a),i=[];else break}return r}function Qa(e,t,n,r,i){let a=RegExp(`^ {${n}}${Wa(t)}\\s*:`);for(let t=r;t<i;t++)if(a.test(e[t]))return t;return-1}function $a(e,t,n){if(t.length===0||!t.every(e=>typeof e==`string`&&Ha.test(e)))return e;let r=e.includes(`\r
|
|
5
5
|
`)?`\r
|
|
6
6
|
`:`
|
|
7
7
|
`,i=e.match(Ua);if(!i){if(n===null)return e;let i=`---${r}${Ya(t,0,n,0).join(r)}${r}---${r}`;return e.length?i+e:i}let a=i[1]===``?[]:i[1].split(/\r?\n/),o=t;if(t.length===1&&Qa(a,t[0],0,0,a.length)===-1){if(t[0].includes(`.`)){let e=t[0].split(`.`),n=Qa(a,e[0],0,0,a.length);if(n!==-1)o=e,/:\s*(?:""|''|\{\})?\s*$/.test(a[n])&&(a[n]=a[n].replace(/:\s*(?:""|''|\{\})\s*$/,`:`));else if(e[0]===`metrics`&&(e[1]===`met`||e[1]===`disciplineFactor`)){let t=Qa(a,`baseAttributes`,0,0,a.length);t!==-1&&Za(a,t,0).length>1&&(o=[`baseAttributes`,e[1]])}}else if(t[0]===`discipline`||t[0]===`intensityTier`){let e=Qa(a,`baseAttributes`,0,0,a.length);e!==-1&&Za(a,e,0).length>1&&(o=[`baseAttributes`,t[0]])}}let s=0,c=a.length,l=-1,u=-1,d=[];for(let e=0;e<o.length;e++){let t=e*2,n=Qa(a,o[e],t,s,c);if(n===-1)break;l=e,u=n,d=Za(a,n,t),s=n+1,c=d[d.length-1]+1}if(n===null){if(l!==o.length-1)return e;let t=new Set(d);for(let e=l-1;e>=0;e--){let n=e*2,r=Qa(a,o[e],n,0,a.length);if(r===-1||t.has(r))break;let i=!1;for(let e=r+1;e<a.length;e++){if(t.has(e))continue;let r=a[e];if(!Ga(r)){r.length-r.trimStart().length>n&&(i=!0);break}}if(i)break;t.add(r)}let n=a.filter((e,n)=>!t.has(n));return`---${r}${n.length?n.join(r)+r:``}---`+e.slice(i[0].length)}let f,p,m;if(l===o.length-1){if(m=Ja(l*2,o[l],n),!Ka(n)){let e=Xa(a[u]);if(e!==-1){let t=a[u].slice(e).trim();m[0]=`${m[0]} ${t}`}}f=d[0],p=d.length}else f=l===-1?a.length:c,p=0,m=Ya(o,l+1,n,(l+1)*2);let h=[...a];return h.splice(f,p,...m),`---${r}${h.length?h.join(r)+r:``}---`+e.slice(i[0].length)}var eo=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;function to(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\nrt])/g,(e,t)=>t===`n`?`
|
|
8
|
-
`:t===`r`?`\r`:t===`t`?` `:t):n)}function no(e){let t={};for(let n=0;n<e.length;n++){let r=e[n].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!r)continue;let i=r[1],a=r[2].trim();if(a===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(to(t[1].trim())),n++}if(r.length>0)t[i]=r;else if(i===`metrics`||i===`summaries`||i===`widgets
|
|
8
|
+
`:t===`r`?`\r`:t===`t`?` `:t):n)}function no(e){let t={};for(let n=0;n<e.length;n++){let r=e[n].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!r)continue;let i=r[1],a=r[2].trim();if(a===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(to(t[1].trim())),n++}if(r.length>0)t[i]=r;else if(i===`metrics`||i===`summaries`||i===`widgets`)for(;n+1<e.length;){let r=e[n+1];if(/^\s*(?:#.*)?$/.test(r)){n++;continue}let a=r.match(/^\s{2,}([A-Za-z][\w.-]*)\s*:(.*)$/);if(!a)break;n++;let o=`${i}.${a[1]}`,s=a[2].trim();if(s===``){let r=[];for(;n+1<e.length;){let t=e[n+1].match(/^\s{4,}-\s+(.+)$/);if(!t)break;r.push(to(t[1].trim())),n++}t[o]=r.length>0?r:``}else{let e=/^(['"])(.*)\1$/.test(s),n=to(s),r=Number(n);t[o]=!e&&n!==``&&!isNaN(r)?r:n}}else t[i]=``}else{let e=/^(['"])(.*)\1$/.test(a),n=to(a),r=Number(n);t[i]=!e&&n!==``&&!isNaN(r)?r:n}}return t}function ro(e){let t=e.match(eo);return t?{meta:no(t[1].split(/\r?\n/)),body:e.slice(t[0].length)}:{meta:{},body:e}}function io(e){return no(e.split(/\r?\n/))}function ao(e){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r)){if(r.length===0){t.push(`${n}: ""`);continue}t.push(`${n}:`);for(let e of r)t.push(` - ${qa(e)}`)}else typeof r==`number`?t.push(`${n}: ${r}`):t.push(`${n}: ${qa(r)}`);return t.join(`
|
|
9
9
|
`)}function oo(e){return ro(e).body}function so(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`?n:void 0}function co(e,t){let n=e[t];return Array.isArray(n)?n:[]}function lo(e){return co(ro(e).meta,`category`).map(e=>e.toLowerCase())}function uo(e){let t=eo.test(e)?ro(e).meta:io(e),n=t.tags??t.category,r=Array.isArray(n)?n:typeof n==`string`&&n.trim()?n.trim().startsWith(`[`)&&n.trim().endsWith(`]`)?n.trim().slice(1,-1).split(`,`):[n]:[];return[...new Set(r.map(e=>e.trim()).filter(Boolean))]}function fo(e,t=[]){let n=eo.test(e)?ro(e).meta:io(e),r=[];for(let t of uo(e))r.push({label:t});let i=Object.keys(n);for(let e of t){if(e===`tags`||e===`category`)continue;let t=i.find(t=>t.toLowerCase()===e.toLowerCase());if(!t)continue;let a=n[t];if(a==null||a===``)continue;let o=[];if(Array.isArray(a))o=a.map(String);else if(typeof a==`string`&&a.trim()){let e=a.trim();o=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1).split(`,`):[e]}for(let t of o){let n=t.trim();n&&r.push({label:n,type:e})}}let a=new Map;for(let e of r){let t=a.get(e.label);(!t||!t.type&&e.type)&&a.set(e.label,e)}return Array.from(a.values())}function po(e){return mo(e.split(/\r?\n/))}function mo(e){let t={};for(let n of e){let e=n.match(/^([^:]+):\s*(.*)$/);e&&(t[e[1].trim()]=e[2].trim())}return t}var ho=class{items=new Map;constructor(e=[]){for(let t of e)this.items.set(t.id,t)}register(e){this.items.set(e.id,e)}unregister(e){this.items.delete(e)}has(e){return this.items.has(e)}get(e){return this.items.get(e)}list(){return[...this.items.values()].sort((e,t)=>(t.priority??0)-(e.priority??0))}get size(){return this.items.size}},go={REPEATING_INTERVAL:`behavior.repeating_interval`,REQUIRED_TIMER:`behavior.required_timer`,INJECT_REST:`behavior.inject_rest`,LABEL_AMRAP:`workout.amrap`,LABEL_EMOM:`workout.emom`,LABEL_TABATA:`workout.tabata`,LABEL_FOR_TIME:`workout.for_time`};Object.values(go);function _o(e){if(!e)return[];if(Array.isArray(e.rawMetrics))return e.rawMetrics;let t=e.metrics;return t?Array.isArray(t)?t:t.rawMetrics??[]:[]}function vo(e,t=`dialect`,n){return{type:J.Hint,value:e,image:e,origin:t,...n?{icon:n}:{}}}function yo(e,t,n=`dialect`){let r=t??pa.empty(`dialect`),i=new Set(bo(r));for(let t of e)i.has(t)||(i.add(t),r.add(vo(t,n)));return r}function bo(e){return _o(e).filter(e=>e.type===J.Hint&&typeof e.value==`string`).map(e=>e.value)}function xo(e,t){return _o(e).some(e=>e.type===J.Hint&&e.value===t)}var So=/^([a-zA-Z]+)([\s\S]*)$/,Co=class e{defs;byToken;constructor(e=[]){this.defs=e,this.byToken=new Map;for(let t of e){this.byToken.set(t.canonical.toLowerCase(),t);for(let e of t.aliases)this.byToken.set(e.toLowerCase(),t)}}get(e){return this.byToken.get(e.trim().toLowerCase())}has(e){return this.byToken.has(e.trim().toLowerCase())}consumeLeading(e){let t=So.exec(e.trimStart());if(!t)return null;let n=t[1],r=this.get(n);return r?{unit:r,token:n,rest:t[2].trim()}:null}extend(...t){return new e([...this.defs,...t])}toArray(){return[...this.defs]}},wo=[{canonical:`m`,dimension:`length`,aliases:[`meter`,`meters`,`metre`,`metres`]},{canonical:`km`,dimension:`length`,aliases:[`kilometer`,`kilometers`,`kilometre`,`kilometres`]},{canonical:`cm`,dimension:`length`,aliases:[`centimeter`,`centimeters`,`centimetre`,`centimetres`]},{canonical:`mm`,dimension:`length`,aliases:[`millimeter`,`millimeters`,`millimetre`,`millimetres`]},{canonical:`ft`,dimension:`length`,aliases:[`foot`,`feet`]},{canonical:`in`,dimension:`length`,aliases:[`inch`,`inches`]},{canonical:`yd`,dimension:`length`,aliases:[`yard`,`yards`]},{canonical:`mi`,dimension:`length`,aliases:[`mile`,`miles`]},{canonical:`kg`,dimension:`mass`,aliases:[`kilo`,`kilos`,`kilogram`,`kilograms`]},{canonical:`g`,dimension:`mass`,aliases:[`gram`,`grams`]},{canonical:`lb`,dimension:`mass`,aliases:[`lbs`,`pound`,`pounds`]},{canonical:`bw`,dimension:`mass`,aliases:[`bodyweight`]},{canonical:`cal`,dimension:`energy`,aliases:[`cals`,`calorie`,`calories`]},{canonical:`kcal`,dimension:`energy`,aliases:[`kcals`,`kilocalorie`,`kilocalories`]}],To={standard(){return new Co(wo)},of(e){return new Co(e)}},Eo=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`)}`},Do=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`)}`},Oo=e=>e==null||!Number.isFinite(e)?`--:--`:Math.floor(Math.abs(e)/1e3)>=3600?Do(e):Eo(e),ko=new Set([J.Duration,J.Time,J.Elapsed,J.Total]);function Ao(e){return ko.has(e)}function jo(e){if(e.image)return e.image;if(e.value===void 0||e.value===null)return e.type;if(typeof e.value==`object`){let t=e.value;return`text`in t?String(t.text):`current`in t?`Round ${t.current}`:JSON.stringify(e.value)}return String(e.value)}function Mo(e,t){if(Ao(e.type)&&typeof e.value==`number`)return Oo(e.value);let n=jo(e);if(e.type===J.Rounds||e.type===`rounds`){let e=n.trim();if(/^\d+$/.test(e))return`${n} ${Number(e)===1?`Round`:`Rounds`}`}return n}function No(e){let t=[];return t.push(`Type: ${e.type}`),e.value!==void 0&&t.push(`Value: ${e.value}`),e.origin&&t.push(`Origin: ${e.origin}`),e.sourceBlockKey&&t.push(`Block: ${e.sourceBlockKey}`),e.timestamp&&t.push(`Time: ${e.timestamp.toISOString()}`),t.join(`
|
|
10
10
|
`)}var Po={duration:`Duration`,rep:`Reps`,effort:`Effort`,distance:`Distance`,rounds:`Rounds`,resistance:`Resistance`,action:`Action`,increment:`Increment`,metric:`Metric`,label:`Label`,text:`Text`,custom:`Custom`,calculated:`Calculated`,"current-round":`Current Round`,volume:`Volume`,intensity:`Intensity`,load:`Load`,work:`Work`,lap:`Lap`,group:`Group`,time:`Time`,elapsed:`Elapsed`,total:`Total`,"system-time":`System Time`,spans:`Spans`,system:`System`,rir:`RIR`,"session-rpe":`Session RPE`,"session-load":`Session Load`,"met-score":`MET Score`,tis:`TIS`,sound:`Sound`};function Fo(e){let t=e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).trim();return t.length===0?``:t.split(/\s+/).map(e=>e===e.toUpperCase()||/^[A-Z]{2,}$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function Io(e){let t=String(e).trim();return Po[t.toLowerCase()]??Fo(t)}function Lo(e,t){let n=Vo(e,t),r=n.metrics.find(e=>e.type===J.Sound&&typeof e.value==`string`);return{slug:t,label:t,...n.functions.length>0?{functions:[...n.functions]}:{},...r?{soundProfileId:r.value}:{}}}function Ro(e,t=[]){for(let n of e){let e=ba(n.metadata);e&&(t.some(t=>t.slug===e.slug)||t.push(e))}return t}var zo=`tag.`,Bo={metrics:[],functions:[],tags:[]};function Vo(e,t){if(!e)return Bo;let n=[],r=[],i=[],a=new Set,o=new Set,s=(t,c)=>{if(c>8||o.has(t))return;let l=e.resolve(t);if(l){o.add(t),i.push(t);for(let e of l.contributions)e.kind===`metric`?n.push(e):e.kind===`function`&&(a.has(e.name)||(a.add(e.name),r.push(e.name)));for(let e of l.contributions)e.kind===`tag`&&s(e.slug,c+1)}};return s(t,0),{metrics:n,functions:r,tags:i}}function Ho(e){if(!e)return[];let t=[],n=new Set,r=(i,a,o)=>{if(o.has(i)){let e=a.indexOf(i);if(e>=0){let r=[...a.slice(e),i],o=Uo(r);n.has(o)||(n.add(o),t.push(r))}return}let s=e.resolve(i);if(!s)return;let c=[...a,i],l=new Set(o);l.add(i);for(let e of s.contributions)e.kind===`tag`&&r(e.slug,c,l)};for(let t of e.list())r(t.slug,[],new Set);return t}function Uo(e){let t=e.slice(0,-1);if(t.length===0)return``;let n=0;for(let e=1;e<t.length;e++)t[e]<t[n]&&(n=e);return[...t.slice(n),...t.slice(0,n)].join(`>`)}function Wo(e){return`${zo}${e}`}function Go(e){if(!e.startsWith(`tag.`))return;let t=e.slice(4);return t.length>0?t:void 0}function Ko(e){let t=[];for(let n of e){let e=Go(n.type);e!==void 0&&!t.includes(e)&&t.push(e)}return t}function qo(e){if(typeof e!=`string`)return!1;let t=e.trim();return!t||/^[+-]?\d+(?:\.\d+)?(?:\s*[A-Za-z%/][\w%/.-]*)?$/.test(t)||/^[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_]+)*$/.test(t)?!1:/[*/+()]|\s-\s|->|\b(?:convert|sum|avg|min|max|count|last|round|floor|ceil|abs|clamp|lookup|when|and|or)\b/.test(t)}function Jo(e,t=`parser`){return e.filter(e=>!e.type.trim().startsWith(`summaries.`)&&!qo(e.value)).map(e=>({type:e.type,value:e.value,origin:t,image:e.unit?`${String(e.value)} ${e.unit}`:String(e.value),...e.unit?{unit:e.unit}:{}}))}function Yo(e){return e.type.toLowerCase()===`effort`&&(e.value??e.image??``).trim().toLowerCase()===`rest`}function Xo(e,t){return t?`rest`:{time:`time`,duration:`time`,elapsed:`time`,total:`time`,spans:`time`,rep:`rep`,effort:`effort`,distance:`distance`,rounds:`rounds`,increment:`rounds`,"current-round":`rounds`,action:`action`,resistance:`resistance`,text:`muted`,label:`muted`,group:`muted`,lap:`muted`,system:`system`,"system-time":`system`,volume:`rep`,intensity:`effort`,load:`resistance`,work:`effort`,rir:`effort`,"session-rpe":`effort`,"session-load":`resistance`,"met-score":`distance`,tis:`action`,sound:`system`,metric:`effort`,custom:`muted`,calculated:`effort`}[e.type.toLowerCase()]??`unknown`}function Zo(){return{isStructural(e){let t=e.type;if(t===J.Group||t===`group`){let t=e.image??``;return t===`+`||t===`-`}return t===J.Lap||t===`lap`},isHidden(e,t){if(this.isStructural(e))return t!==`debug`;let n=e.type;return!!((n===J.Sound||n===`sound`)&&t!==`debug`||n.startsWith(`tag.`)&&t!==`debug`||t===`review-grid-column`&&(n===J.Elapsed||n===`elapsed`||n===J.Total||n===`total`||n===J.System||n===`system`))},present(e,t){let n=this.isStructural(e),r=this.isHidden(e,t),i=Yo(e),a=(e.type===J.Text||e.type===`text`)&&e.origin===`parser`,o=e.origin===`user`,s;return s=r?`hidden`:a?`comment`:t===`timer-subtitle`||t===`history-label`||t===`label-composer`?`plain-text`:t===`review-grid-column`?`column-heading`:`badge`,{metric:e,label:Mo(e,t),tooltip:No(e),renderKind:s,tone:Xo(e,i),iconKey:i?`rest`:e.type,visible:!r,structural:n,rest:i,comment:a,userEntered:o,columnLabel:Io(e.type)}},presentGroup(e,t){return e.map(e=>this.present(e,t))},columnLabel(e){return Io(e)}}}var Qo=Zo(),$o=class{effort;value;image;name;origin=`parser`;metadata;constructor(e,t){this.effort=e,this.value=t?.resolvedSlug??e,this.image=e,t?.canonicalLabel&&(this.name=t.canonicalLabel),t?.references&&(this.metadata={[sa]:t.references})}type=J.Effort},es=class{unit;value;image;origin;constructor(e,t){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`}type=J.Distance},ts=class{unit;value;image;origin;constructor(e,t){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`}type=J.Resistance},ns=class{unit;dimension;value;image;origin;type;constructor(e,t,n){this.unit=t,this.dimension=n,this.value={amount:e,unit:t},this.image=e===void 0?`? ${t}`:`${e} ${t}`,this.origin=e===void 0?`hinted`:`parser`,this.type=n===`energy`?`energy`:J.Custom}};function rs(e,t,n){switch(n){case`length`:return new es(e,t);case`mass`:return new ts(e,t);default:return new ns(e,t,n)}}var is=class{alternatives;type=J.Choice;origin=`parser`;value;image;constructor(e){this.alternatives=e,this.value={alternatives:e},this.image=e.map(e=>e.image??String(e.value??``)).join(` | `)}},as=class{unit;value;image;origin;constructor(e,t=`%`){this.unit=t,this.value={amount:e,unit:t},this.image=e===void 0?`?${t}`:`${e}${t}`,this.origin=e===void 0?`hinted`:`parser`}type=J.Intensity};function os(e){return e.type===J.Rep&&(typeof e.value==`number`||e.value===void 0)}function ss(e){return e.type===J.Effort&&(typeof e.value==`string`?e.value:e.image)===`/`}function cs(e){return e.type===J.Effort&&(typeof e.value==`string`?e.value:e.image)===`|`}function ls(e){return e.type!==J.Effort&&e.type!==J.Text?null:typeof e.value==`string`?e.value:typeof e.image==`string`?e.image:null}function us(e){if(e.type!==J.Distance&&e.type!==J.Resistance)return!1;let t=e.value;return!!t&&t.amount!==void 0&&(!t.unit||t.unit===``)}function ds(e,t,n){if(!e||!t)return e??t;let r=e.startOffset,i=(t.startOffset??0)+n.length,a=(t.startOffset??0)-(e.endOffset??0),o=e.raw===void 0?void 0:e.raw+` `.repeat(Math.max(0,a))+n,s=r===void 0?void 0:i-r;return{line:e.line,startOffset:r,endOffset:i,columnStart:e.columnStart,columnEnd:e.columnStart!==void 0&&s!==void 0?e.columnStart+s:e.columnEnd,length:s,raw:o}}function fs(e,t){if(!e||e.raw===void 0)return e&&{...e,raw:t};let n=e.raw.indexOf(t),r=n>=0?n:0,i=(e.startOffset??0)+r;return{line:e.line,startOffset:i,endOffset:e.endOffset,columnStart:(e.columnStart??0)+r,columnEnd:e.columnEnd,length:t.length,raw:t}}var ps=/^([\s\S]*?)([a-zA-Z]+)$/;function ms(e){let t=ps.exec(e.trimEnd());return t?{rest:t[1].trim(),token:t[2]}:null}function hs(e,t){return e&&{line:e.line,startOffset:e.startOffset,endOffset:e.startOffset===void 0?e.endOffset:e.startOffset+t.length,columnStart:e.columnStart,columnEnd:e.columnStart===void 0?e.columnEnd:e.columnStart+t.length,length:t.length,raw:t}}function gs(e,t){if(!e)return e;let n=Math.max(0,(e.raw?.trimEnd().length??(e.endOffset??0)-(e.startOffset??0))-t.length);return{line:e.line,startOffset:e.startOffset===void 0?void 0:e.startOffset+n,endOffset:e.startOffset===void 0?e.endOffset:e.startOffset+n+t.length,columnStart:e.columnStart===void 0?void 0:e.columnStart+n,columnEnd:e.columnStart===void 0?e.columnEnd:e.columnStart+n+t.length,length:t.length,raw:t}}function _s(e,t){if(!e||!t)return e??t;let n=e.startOffset,r=t.endOffset,i=n!==void 0&&r!==void 0?r-n:void 0;return{line:e.line,startOffset:n,endOffset:r,columnStart:e.columnStart,columnEnd:t.columnEnd,length:i,raw:e.raw}}function vs(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(!(ss(i.metric)||cs(i.metric))){if(a){let t=ls(i.metric),o=e[r+2]?ls(e[r+2].metric):null;if(t!==null&&cs(a.metric)&&o!==null){let t=[i.metric],a=r+1;for(;a+1<e.length&&cs(e[a].metric)&&ls(e[a+1].metric)!==null;)t.push(e[a+1].metric),a+=2;n.push({metric:new is(t),meta:_s(i.meta,e[a-1].meta)}),r=a-1;continue}}if(a&&e[r+2]&&e[r+3]){let o=e[r+2],s=e[r+3],c=os(i.metric)||us(i.metric),l=os(o.metric)||us(o.metric);if(c&&cs(a.metric)&&l){let e=ls(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=os(i.metric)?i.metric.value:i.metric.value.amount,t=os(o.metric)?o.metric.value:o.metric.value.amount,c=rs(e,a.token,a.unit.dimension),l=rs(t,a.token,a.unit.dimension);if(c.type===l.type){let e=ds(i.meta,s.meta,a.token);n.push({metric:new is([c,l]),meta:e}),a.rest&&n.push({metric:new $o(a.rest),meta:fs(s.meta,a.rest)}),r+=3;continue}}}}if(a&&e[r+2]&&e[r+3]){let o=e[r+2],s=e[r+3],c=os(i.metric)||us(i.metric),l=os(o.metric)||us(o.metric);if(c&&ss(a.metric)&&l){let e=ls(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=os(i.metric)?i.metric.value:i.metric.value.amount,t=os(o.metric)?o.metric.value:o.metric.value.amount;if(e!==void 0&&t!==void 0&&t!==0){let o=rs(e/t,a.token,a.unit.dimension),c=ds(i.meta,s.meta,a.token);n.push({metric:o,meta:c}),a.rest&&n.push({metric:new $o(a.rest),meta:fs(s.meta,a.rest)}),r+=3;continue}}}}if(a&&os(i.metric)){let e=ls(a.metric);if(e!==null&&e.trim()===`%`){n.push({metric:new as(i.metric.value),meta:ds(i.meta,a.meta,`%`)}),r++;continue}}if(a&&(os(i.metric)||us(i.metric))){let e=ls(a.metric),o=e===null?null:t.consumeLeading(e);if(o){let e=os(i.metric)?i.metric.value:i.metric.value.amount;n.push({metric:rs(e,o.token,o.unit.dimension),meta:ds(i.meta,a.meta,o.token)}),o.rest&&n.push({metric:new $o(o.rest),meta:fs(a.meta,o.rest)}),r++;continue}}if(!a){let e=ls(i.metric),r=e===null?null:ms(e),a=r?t.get(r.token):void 0;if(r&&r.rest&&a&&a.canonical===`bw`){n.push({metric:new $o(r.rest),meta:hs(i.meta,r.rest)}),n.push({metric:rs(void 0,r.token,a.dimension),meta:gs(i.meta,r.token)});continue}}n.push(i)}}return n}function ys(e,t){let n=e.metrics.toArray(),r=vs(n.map(t=>({metric:t,meta:e.metricMeta?.get(t)})),t);if((r.length!==n.length||r.some((e,t)=>e.metric!==n[t]))&&(e.metrics.clear().add(...r.map(e=>e.metric)),e.metricMeta)){let t=new Map(e.metricMeta);for(let e of n)r.some(t=>t.metric===e)||t.delete(e);for(let e of r)e.meta&&t.set(e.metric,e.meta);e.metricMeta=t}}var bs=class{id=`units`;name=`Units Dialect`;units;constructor(e=To.standard()){this.units=e}transform(e){ys(e,this.units)}analyze(e){return{}}},xs=class{id=`crossfit`;name=`CrossFit Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===J.Action||e.type===J.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t))}hasChildren(e){return e.children&&e.children.length>0}analyze(e){let t=[],n=pa.from(e.metrics),r=this.hasKeyword(n,`AMRAP`);r&&(t.push(`behavior.time_bound`),t.push(`workout.amrap`));let i=this.hasKeyword(n,`EMOM`);if(i&&(t.push(`behavior.repeating_interval`),t.push(`workout.emom`)),!i&&!r){let r=n.some(e=>e.type===J.Rounds),i=n.some(e=>e.type===J.Duration),a=this.hasChildren(e);r&&i&&a&&(t.push(`behavior.repeating_interval`),t.push(`workout.emom`),t.push(`workout.implicit_emom`))}return this.hasKeyword(n,`FOR TIME`)&&(t.push(`behavior.time_bound`),t.push(`workout.for_time`)),this.hasKeyword(n,`TABATA`)&&(t.push(`behavior.repeating_interval`),t.push(`workout.tabata`)),{metrics:yo(t)}}},Ss=class{id=`wod`;name=`WOD Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===J.Action||e.type===J.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}analyze(e){let t=[],n=pa.from(e.metrics);return this.hasKeyword(n,`STRENGTH`)&&(t.push(`domain.wod`),t.push(`workout.strength`),t.push(`behavior.load_bearing`)),(this.hasKeyword(n,`METCON`)||this.hasKeyword(n,`METABOLIC`))&&(t.push(`domain.wod`),t.push(`workout.metcon`)),(this.hasKeyword(n,`SKILL`)||this.hasKeyword(n,`TECHNIQUE`))&&(t.push(`domain.wod`),t.push(`workout.skills`)),this.hasKeyword(n,`WOD`)&&t.push(`domain.wod`),this.hasKeyword(n,`SUPERSET`)&&(t.push(`domain.wod`),t.push(`workout.superset`)),{metrics:yo(t)}}},Cs=[{keywords:[`RUN`,`JOG`,`SPRINT`],hints:[`workout.run`,`behavior.aerobic`]},{keywords:[`ROW`,`ROWING`],hints:[`workout.row`,`behavior.aerobic`]},{keywords:[`BIKE`,`CYCLE`,`CYCLING`],hints:[`workout.bike`,`behavior.aerobic`]},{keywords:[`SWIM`,`SWIMMING`],hints:[`workout.swim`,`behavior.aerobic`]},{keywords:[`WALK`,`WALKING`],hints:[`workout.walk`]}],ws=class{id=`cardio`;name=`Cardio Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===J.Action||e.type===J.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}hasDistance(e){return e.some(e=>e.type===J.Distance)}analyze(e){let t=[],n=pa.from(e.metrics);for(let e of Cs)e.keywords.some(e=>this.hasKeyword(n,e))&&t.push(`domain.cardio`,...e.hints);return t.length===0&&this.hasDistance(n)&&(t.push(`domain.cardio`),t.push(`behavior.distance_based`)),t.includes(`domain.cardio`)&&this.hasDistance(n)&&(t.push(`behavior.distance_based`),t.push(`behavior.pace_based`)),{metrics:yo(t)}}},Ts=class e{id=`yoga`;name=`Yoga Dialect`;static POSE_KEYWORDS=[`WARRIOR`,`DOWNWARD`,`UPWARD`,`CHILD'S POSE`,`COBRA`,`PIGEON`,`TRIANGLE`,`MOUNTAIN`,`TREE POSE`,`LOTUS`,`CORPSE`,`SAVASANA`,`TADASANA`,`VIRABHADRASANA`,`BALASANA`,`ADHO`,`URDHVA`,`UTTANASANA`,`VRKSASANA`];static FLOW_KEYWORDS=[`SUN SALUTATION`,`VINYASA`,`FLOW`,`SEQUENCE`];static BREATHING_KEYWORDS=[`PRANAYAMA`,`BREATH`,`BREATHING`,`NADI SHODHANA`,`KAPALABHATI`,`UJJAYI`,`BOX BREATH`,`WIM HOF`];static MEDITATION_KEYWORDS=[`MEDITATION`,`MEDITATE`,`MINDFULNESS`,`BODY SCAN`,`VISUALIZATION`];hasAnyKeyword(e,t){return e.some(e=>(e.type===J.Action||e.type===J.Effort||e.type===J.Text)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=pa.from(t.metrics),i=r.some(e=>e.type===J.Duration);return this.hasAnyKeyword(r,e.POSE_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.pose`),i&&n.push(`behavior.hold`)),this.hasAnyKeyword(r,e.FLOW_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.flow`)),this.hasAnyKeyword(r,e.BREATHING_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.breathing`),n.push(`behavior.mindful`)),this.hasAnyKeyword(r,e.MEDITATION_KEYWORDS)&&(n.push(`domain.yoga`),n.push(`workout.meditation`),n.push(`behavior.mindful`)),{metrics:yo(n)}}},Es=class e{id=`habits`;name=`Habits Dialect`;static HABIT_KEYWORDS=[`DAILY`,`HABIT`,`STREAK`,`CHECK`,`LOG`,`MORNING`,`EVENING`,`ROUTINE`];static STREAK_KEYWORDS=[`STREAK`,`CONSECUTIVE`,`IN A ROW`];hasAnyKeyword(e,t){return e.some(e=>(e.type===J.Action||e.type===J.Effort||e.type===J.Text||e.type===J.Label)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=pa.from(t.metrics),i=r.some(e=>e.type===J.Duration),a=r.some(e=>e.type===J.Rep);return this.hasAnyKeyword(r,e.HABIT_KEYWORDS)&&(n.push(`domain.habits`),n.push(`behavior.completable`),i?n.push(`workout.habit_timed`):a?n.push(`workout.habit_rep`):(n.push(`workout.habit_check`),n.push(`behavior.daily`))),this.hasAnyKeyword(r,e.STREAK_KEYWORDS)&&(n.includes(`domain.habits`)||n.push(`domain.habits`),n.push(`behavior.streak`),n.push(`behavior.recurring`)),{metrics:yo(n)}}},Ds={Discipline:`climb-discipline`,Grade:`climb-grade`,SendType:`climb-send-type`,AttemptCount:`climb-attempt-count`,RouteName:`climb-route-name`,HighPoint:`climb-high-point`},Os={onsight:`onsight`,os:`onsight`,flash:`flash`,fl:`flash`,redpoint:`redpoint`,rp:`redpoint`,sent:`redpoint`,send:`redpoint`,repeat:`repeat`,"re-send":`repeat`,resend:`repeat`,dogged:`dogged`,hangdog:`dogged`,a0:`dogged`,tr:`top-rope`,toprope:`top-rope`,"top-rope":`top-rope`,dnf:`did-not-finish`,attempted:`did-not-finish`},ks={boulder:`bouldering`,bouldering:`bouldering`,sport:`sport`,trad:`trad`,"top rope":`top-rope`,toprope:`top-rope`,hangboard:`hangboard`,moonboard:`training-board`,kilter:`training-board`,board:`training-board`};function As(e){return e?typeof e.value==`string`?e.value:e.value&&typeof e.value==`object`&&`text`in e.value?String(e.value.text??``):typeof e.value==`number`?String(e.value):``:``}function js(e){return e.toLowerCase().replace(/[_\s]+/g,`-`).trim()}function Ms(e,t,n,r){e.add({type:t,value:n,origin:`dialect`,unit:r})}function Ns(e,t){e.includes(t)||e.push(t)}var Ps=class{id=`climb`;name=`Climb Dialect`;analyze(e){let t=[],n=pa.empty(`climb-dialect`),r=pa.from(e.metrics).toArray(),i=r.map(As).filter(Boolean).join(` `),a=this.findRouteName(r);a&&Ms(n,Ds.RouteName,a);let o=this.findGrade(r);o&&Ms(n,Ds.Grade,o);let s=this.findSendType(i);s&&Ms(n,Ds.SendType,s);let c=this.findAttemptCount(r);c!==void 0&&Ms(n,Ds.AttemptCount,c);let l=this.findHighPoint(i);l&&Ms(n,Ds.HighPoint,l);let u=this.findDisciplines(i,o);for(let e of u)Ms(n,Ds.Discipline,e);(a||o||s||l||u.length>0)&&(t.push(`domain.climb`),t.push(`behavior.route_based`)),o&&t.push(`behavior.grade_based`),c!==void 0&&t.push(`behavior.attempt_based`),s===`did-not-finish`&&t.push(`climb.project`);for(let e of u)t.push(`climb.${e.replace(`-`,`_`)}`);return{metrics:yo(t,n)}}findRouteName(e){let t=e.find(e=>e.type===J.Action&&typeof e.value==`string`);return t?.value?String(t.value):void 0}findGrade(e){for(let t=0;t<e.length;t+=1){let n=e[t],r=As(n),i=As(e[t+1]),a=r.match(/\bV(\d{1,2})(?:[-+])?\b/i);if(a){let e=Number(a[1]);return{raw:a[0].toUpperCase(),system:`v-scale`,normalizedRank:e}}if(typeof n.value==`number`&&n.value>=5&&n.value<6){let e=i.match(/^\s*([abcd])\b/i)?.[1],t=e?`${n.value}${e}`:String(n.value);if(/^5\.\d{1,2}[abcd]?$/i.test(t))return{raw:t,system:`yds`,normalizedRank:this.ydsRank(t)}}let o=r.match(/\b5\.(\d{1,2})([abcd])?\b/i);if(o)return{raw:o[0],system:`yds`,normalizedRank:this.ydsRank(o[0])};let s=r.match(/\b([3-9][ABC](?:\+)?)\b/);if(s)return{raw:s[1],system:`font`};if(typeof n.value==`number`&&n.value>=3&&n.value<=9){let e=i.match(/^\s*([ABC]\+?)\b/)?.[1];if(e)return{raw:`${n.value}${e}`,system:`font`}}let c=r.match(/\b([3-9][abc](?:\+)?)\b/);if(c)return{raw:c[1],system:`french`}}}ydsRank(e){let t=e.match(/^5\.(\d{1,2})([abcd])?$/i);if(!t)return;let n=Number(t[1]),r=t[2]?.toLowerCase();return n+(r?[`a`,`b`,`c`,`d`].indexOf(r)/4:0)}findSendType(e){let t=e.toLowerCase().match(/[a-z0-9-]+/g)??[];for(let e of t){let t=js(e);if(t in Os)return Os[t]}if(/\bnot\s+sent\b/i.test(e))return`did-not-finish`;if(/\bwith\s+falls\b/i.test(e))return`dogged`}findAttemptCount(e){return e.find(e=>{if(e.type!==J.Resistance)return!1;let t=e.value;return t&&typeof t.amount==`number`&&String(t.unit??e.unit??``)===``})?.value?.amount}findHighPoint(e){let t=e.match(/\b(?:bolt|move|crux|high\s*point)\s*\d+\b/i)?.[0];return t?t.toLowerCase().replace(/\s+/g,` `):void 0}findDisciplines(e,t){let n=[],r=e.toLowerCase();for(let[e,t]of Object.entries(ks))r.includes(e)&&Ns(n,t);return(t?.system===`v-scale`||t?.system===`font`)&&Ns(n,`bouldering`),(t?.system===`yds`||t?.system===`french`)&&Ns(n,`sport`),n}};function Fs(e){console.warn(e)}var Is=`units`,Ls={climbing:`climb`},Rs=new Set,zs=new class{dialects;registry;constructor(e){e instanceof ho?this.registry=e:this.dialects=e}get effectiveDialects(){return this.registry?this.registry.list():this.dialects??[]}dialectsFor(e){let t=this.effectiveDialects;if(!e)return t;let n=Ls[e]??e;return t.some(e=>e.id===n)?t.filter(e=>e.id===Is||e.id===n):(Rs.has(e)||(Rs.add(e),Fs(`[DialectStack] Unknown :sport suffix "${e}" — falling back to the full dialect stack. Known dialect ids: ${t.map(e=>e.id).join(`, `)}.`)),t)}process(e,t){this.applyDialects(e,this.dialectsFor(t))}processAll(e,t){let n=this.dialectsFor(t);for(let t of e)this.applyDialects(t,n)}applyDialects(e,t){for(let n of t){n.transform?.(e);let t=n.analyze(e);t?.metrics?.length&&e.metrics.add(...t.metrics)}}get list(){return this.effectiveDialects}}(new ho([new bs,new xs,new Ss,new ws,new Ts,new Es,new Ps])),Bs=class{value;image;raw;name;isPinned;origin=`parser`;constructor(e,t={}){this.raw=t.raw??e,this.isPinned=t.isPinned??this.raw.trim().startsWith(`!`),this.name=t.name??(this.raw.trim().replace(/^!/,``)||e),this.value=this.name,this.image=this.raw}type=J.Action},Vs=class{image;forceCountUp;required;value;origin;constructor(e,t=!1,n=!1){if(this.image=e,this.forceCountUp=t,this.required=n,this.image===`:?`)this.days=0,this.hours=0,this.minutes=0,this.seconds=0,this.original=void 0,this.value=void 0,this.origin=`hinted`;else{let e=this.image.split(`:`).map(e=>1*(e===``?0:Number(e))).reverse();for(;e.length<4;)e.push(0);if(this.days=e[3],this.hours=e[2],this.minutes=e[1],this.seconds=e[0],this.seconds<0||this.minutes<0||this.hours<0||this.days<0)throw Error(`Timer components cannot be negative: ${this.image}`);if(this.seconds>59&&(this.minutes>0||this.hours>0||this.days>0))throw Error(`Invalid seconds component: ${this.seconds} (must be < 60 if other components present)`);if(this.minutes>59&&(this.hours>0||this.days>0))throw Error(`Invalid minutes component: ${this.minutes} (must be < 60 if hours/days present)`);this.original=(this.seconds+this.minutes*60+this.hours*60*60+this.days*60*60*24)*1e3,this.value=this.original,this.origin=`parser`}}days;hours;minutes;seconds;original;type=J.Duration;get direction(){return this.forceCountUp||this.value===void 0?`up`:this.value>0?`down`:`up`}},Hs=class{type=J.Equipment;origin;value;image;name;metadata;constructor(e,t){this.value=[...new Set(e)],this.image=t?.source??this.value.join(` `),this.name=t?.refs?.length?t.refs.map(e=>e.label).join(`, `):`equipment`,this.origin=t?.origin??`parser`;let n={matched:t?.matched??`whole`,source:t?.source??this.image,...t?.refs?{refs:t.refs}:{},...t?.diagnostics?.length?{diagnostics:t.diagnostics}:{}};this.metadata={[sa]:n}}},Us=class{group;image;value;constructor(e,t){this.group=e,this.image=t,this.value=e}type=J.Group;origin=`parser`};function lee(e){return e===null?`null`:String(e)}var Ws=class{key;value;image;origin;constructor(e,t,n={}){this.key=e,this.value=t,this.image=n.image??`${e}: ${lee(t)}`,this.origin=n.origin??`parser`,this.type=n.type??J.Custom;let r=Zi(t);this.metadata={originalKey:e,...r!==`object`&&r!==`undefined`?{fieldRef:{path:Xi(e),kind:r,...n.dimension?{dimension:n.dimension}:{}}}:{}}}type;metadata},Gs=class{reps;value;image;origin;constructor(e){if(this.reps=e,e!==void 0&&e<0)throw Error(`Rep count cannot be negative: ${e}`);this.value=e,this.image=e===void 0?`?`:e.toString(),this.origin=e===void 0?`hinted`:`parser`}type=J.Rep},Ks=class{count;value;image;origin=`parser`;constructor(e){this.count=e,this.value=e,this.image=e.toString()}type=J.Rounds},qs=class{text;level;value;image;origin=`parser`;constructor(e,t){this.text=e,this.level=t,this.value={text:e,level:t},this.image=e}type=J.Text},Js={rpe:J.SessionRPE,rir:J.RIR,intensity:J.Intensity,load:J.Load,volume:J.Volume,work:J.Work,sound:J.Sound},Ys=new Set([`rest`,`amrap`,`emom`,`tabata`,`for time`]),Xs=To.standard(),Zs=new Set([`effort`,`equipment`]);function Qs(e){return{matched:e.matched,source:e.label,...e.effortRef||e.equipment.length>0?{refs:[...e.effortRef?[e.effortRef]:[],...e.equipment]}:{},...e.remaining?{remaining:e.remaining}:{},...e.diagnostics.length>0?{diagnostics:e.diagnostics}:{}}}function $s(e,t){return e.statements.map(e=>{let n=new ha,r=[];for(let n of e.primitives)r.push(...rc(n,t));let i=new Set;for(let e of r)e.kind===`explicit`&&i.add(e.pair.metrics.type);let a=new Set,o=[];for(let e of r){if(e.kind!==`contributed`){o.push(e.pair);continue}let t=e.pair.metrics.type;i.has(t)||a.has(t)||(a.add(t),o.push(e.pair))}let s=lc(o),c=t?.index?uee(s,e,t):s;n.metrics=c.map(e=>e.metrics),n.metricMeta=new Map(c.map(e=>[e.metrics,e.meta]));let l=c.find(e=>e.metrics.type===J.Effort)?.metrics,u=da(l?.metadata)?.refs?.find(e=>e.kind===`effort`);return u?.slug&&(n.exerciseId=u.slug),n.id=e.id,n.line=e.line,n.text=e.meta.raw,n.raw=e.meta.raw,n.meta=e.meta,n.parent=e.parentId,n.children=e.children,n.isLeaf=e.isLeaf,n})}function ec(e,t,n){if(e.matched!==`split`||!e.remaining)return n;let r=t.trimEnd().length-e.remaining.length;if(r<=0)return n;let i=n.raw.slice(0,r).trimEnd(),a=i.length;return a<=0?n:{...n,endOffset:n.startOffset+a,length:a,columnEnd:n.columnStart+a,raw:i}}function uee(e,t,n){let r=n.index,{defaults:i}=n,a=[],o=(e,t,n)=>{if((e.effortRef||e.matched!==`none`||e.diagnostics.length>0)&&a.push({metrics:new $o(t,{resolvedSlug:e.effortRef?.slug,canonicalLabel:e.effortRef?.label,references:Qs(e)}),meta:n}),e.equipment.length>0){let r=ec(e,t,n),i=e.matched===`split`?r.raw:e.matched===`explicit`?e.equipment.map(e=>e.label).join(`, `):t;a.push({metrics:new Hs(e.equipment.map(e=>e.slug),{refs:e.equipment,source:i,matched:e.matched,diagnostics:e.diagnostics}),meta:r})}},s=new Set,c=[];for(let e of t.primitives){if(e.kind!==`metric_object`||s.has(e.raw))continue;if(s.add(e.raw),e.pairs.length===0){c.push({metrics:{...vo(`reference.malformed_json`,`parser`),metadata:Qs(r.resolve(e.raw))},meta:e.meta});continue}if(!e.pairs.some(e=>Zs.has(e.key.toLowerCase())))continue;let t=r.resolve(e.raw);t.matched===`explicit`&&o(t,e.raw,e.meta);for(let t of e.pairs){if(Zs.has(t.key.toLowerCase()))continue;let n=Js[t.key.toLowerCase()]??J.Custom,r=Array.isArray(t.value)?t.value.join(`, `):t.value;a.push({metrics:new Ws(t.key,r,{type:n,image:`${t.key}: ${r}`}),meta:e.meta})}}let l=!1,u=!1,d=!1,f;for(let t of e){let e=t.metrics;if(!(e.type===J.Custom&&s.has(t.meta.raw))){if(e.type===J.Effort){let n=e instanceof $o?e.effort:String(e.value??``),s=n.trim().toLowerCase();if(Ys.has(s)||Xs.has(s)){a.push(t);continue}l=!0;let c=r.resolve(n,i);if(c.matched===`none`&&c.diagnostics.length===0){a.push(t);continue}o(c,n,t.meta);continue}e.type===J.Duration&&(u=!0),(e.type===J.Rep||e.type===J.Rounds||e.type===J.Resistance||e.type===J.Distance)&&(d=!0),a.push(t),f??=t.meta}}if(i&&!l&&t.isLeaf&&d&&!u){let e=r.resolve(``,i);e.effortRef&&o(e,e.effortRef.label,f??t.meta)}return a.push(...c),a}function tc(e,t){if(!t?.index)return;let{index:n,defaults:r}=t;for(let t of e){let e=t.metrics.toArray();if(!e.some(e=>e.type===J.Effort&&!e.metadata))continue;let i=[],a=new Map(t.metricMeta);for(let o of e){if(o.type!==J.Effort||o.metadata){i.push(o);continue}let e=o instanceof $o?o.effort:String(o.value??``),s=e.trim().toLowerCase();if(Ys.has(s)||Xs.has(s)){i.push(o);continue}let c=t.metricMeta?.get(o),l=n.resolve(e,r);if(l.matched===`none`&&l.diagnostics.length===0){i.push(o);continue}if(a.delete(o),l.effortRef||l.matched!==`none`||l.diagnostics.length>0){let n=new $o(e,{resolvedSlug:l.effortRef?.slug,canonicalLabel:l.effortRef?.label,references:Qs(l)});i.push(n),c&&a.set(n,c),l.effortRef?.slug&&(t.exerciseId=l.effortRef.slug)}if(l.equipment.length>0){let t=c?ec(l,e,c):void 0,n=l.matched===`split`&&t?t.raw:e,r=new Hs(l.equipment.map(e=>e.slug),{refs:l.equipment,source:n,matched:l.matched,diagnostics:l.diagnostics});i.push(r),t&&a.set(r,t)}}t.metrics.clear().add(...i),t.metricMeta=a}}function nc(e){switch(e.kind){case`lap`:return[{metrics:new Us(e.lapType,e.raw),meta:e.meta}];case`duration`:{let t=[];return e.timerRaw&&t.push({metrics:new Vs(e.timerRaw,e.hasTrend,e.isRequired),meta:e.meta}),e.isRequired&&t.push({metrics:vo(`behavior.required_timer`,`parser`),meta:e.meta}),t}case`rounds`:return e.sequence?e.sequence.length===1?[{metrics:new Ks(e.sequence[0]),meta:e.meta}]:[{metrics:new Ks(e.sequence.length),meta:e.meta},...e.sequence.map(t=>({metrics:new Gs(t),meta:e.meta}))]:e.label?[{metrics:new Ks(e.label),meta:e.meta}]:[];case`round_scheme`:return[{metrics:new Ks(e.rounds),meta:e.meta},{metrics:new Gs(e.reps),meta:e.meta}];case`action`:{let t=e.hasColonPrefix?e.raw.substring(2,e.raw.length-1).trim():e.raw.substring(1,e.raw.length-1).trim();return[{metrics:new Bs(t,{raw:t}),meta:e.meta}]}case`text`:return[{metrics:new qs(e.raw.substring(2).trim(),void 0),meta:e.meta}];case`heading`:{let t=e.raw.match(/^(#+)\s*(.*)$/),n=t?String(t[1].length):`1`;return[{metrics:new qs(t?t[2].trim():e.raw.substring(1).trim(),n),meta:e.meta}]}case`quantity`:return e.hasAtSign?[{metrics:new ts(e.value,``),meta:e.meta}]:[{metrics:new Gs(e.value),meta:e.meta}];case`effort`:return[{metrics:new $o(e.raw),meta:e.meta}];case`property`:return[cc(e)];case`metric_object`:return e.pairs.map(t=>{let n=Js[t.key.toLowerCase()]??J.Custom,r=Array.isArray(t.value)?t.value.join(`, `):t.value;return{metrics:new Ws(t.key,r,{type:n,image:`${t.key}: ${r}`}),meta:e.meta}});default:return[]}}function rc(e,t){return e.kind===`property`&&e.tagRefs!==void 0?ic(e,t):e.kind===`tag_ref`?ac(e,t):nc(e).map(e=>({kind:`explicit`,pair:e}))}function ic(e,t){let{slots:n,resolved:r}=oc(e.tagRefs??[],e.meta,t);return r?n:[{kind:`explicit`,pair:cc(e)}]}function ac(e,t){let{slots:n,resolved:r}=oc([e.slug],e.meta,t);return r?n:[{kind:`explicit`,pair:{metrics:{type:J.Custom,value:e.raw,origin:`parser`,image:e.raw},meta:e.meta}}]}function oc(e,t,n){let r=[],i=!1;for(let a of e){let e=Vo(n?.tags,a),o=Lo(n?.tags,a),s=Jo(e.metrics);s.length>0&&(i=!0);for(let e of s)r.push({kind:`contributed`,pair:{metrics:sc(e,o),meta:t}});for(let s of e.tags){i=!0;let e=s===a?o:Lo(n?.tags,s);r.push({kind:`marker`,pair:{metrics:sc({type:Wo(s),value:s,origin:`parser`,image:s},e),meta:t}})}}return{slots:r,resolved:i}}function sc(e,t){return{...e,metadata:{...e.metadata??{},[ya]:t}}}function cc(e){let t=Js[e.key.toLowerCase()]??J.Custom;return{metrics:new Ws(e.key,e.value,{type:t,image:e.raw}),meta:e.meta}}function lc(e){if(e.length<2)return e;let t=[],n=e[0];for(let r=1;r<e.length;r++){let i=e[r];if(n.metrics instanceof $o&&i.metrics instanceof $o){if(n.metrics.effort===`/`||n.metrics.effort===`|`||i.metrics.effort===`/`||i.metrics.effort===`|`){t.push(n),n=i;continue}let e=i.meta.startOffset-n.meta.endOffset;if(e<=1){let t={...n.meta,endOffset:i.meta.endOffset,columnEnd:i.meta.columnEnd,length:i.meta.endOffset-n.meta.startOffset,raw:n.meta.raw+(e===1?` `:``)+i.meta.raw};n={metrics:new $o(n.metrics.effort+(e===1?` `:``)+i.metrics.effort),meta:t};continue}}if(n.metrics instanceof Gs&&i.metrics instanceof $o&&/^(reps?)$/i.test(i.metrics.effort)){let e=i.meta.startOffset-n.meta.endOffset;if(e<=1){let t={...n.meta,endOffset:i.meta.endOffset,columnEnd:i.meta.columnEnd,length:i.meta.endOffset-n.meta.startOffset,raw:n.meta.raw+(e===1?` `:``)+i.meta.raw};n={metrics:n.metrics,meta:t};continue}}if(n.metrics instanceof Gs&&(i.metrics instanceof ts||i.metrics instanceof es)){let e=i.meta.startOffset-n.meta.endOffset;if(e<=1){let t={...n.meta,endOffset:i.meta.endOffset,columnEnd:i.meta.columnEnd,length:i.meta.endOffset-n.meta.startOffset,raw:n.meta.raw+(e===1?` `:``)+i.meta.raw};if(i.metrics instanceof ts&&i.metrics.value.amount===void 0){n={metrics:new ts(n.metrics.reps,i.metrics.unit),meta:t};continue}if(i.metrics instanceof es&&i.metrics.value.amount===void 0){n={metrics:new es(n.metrics.reps,i.metrics.unit),meta:t};continue}}}t.push(n),n=i}return t.push(n),t}var uc=xi.deserialize({version:14,states:`(dQVQPOOO!mQPO'#DPO$TQPO'#CdOOQO'#Cd'#CdOOQO'#Cg'#CgOOQO'#Ch'#ChOOQO'#Cf'#CfO%hQPO'#CfO%pQPO'#CjOOQO'#Cl'#ClOOQO'#DP'#DPOOQO'#Cu'#CuO%xQPO'#CmOOQO'#Cn'#CnOOQO'#Co'#CoOOQO'#Cq'#CqOOQO'#Cr'#CrOOQO'#Cp'#CpO%}QPO'#CpOOQO'#Cs'#CsOOQO'#Ct'#CtO&tQPO'#CvOOQO'#Ce'#CeOOQO'#C|'#C|O(]QPO'#CcO&{QPO'#CcOOQO'#Cz'#CzQVQPOOO(dQPO,58xOOQO,59Q,59QO(rQPO'#CkOOQO'#C}'#C}O)QQPO,59UOOQO-E6}-E6}O)]QPO,59XOOQO,59[,59[OOQO'#DQ'#DQO)hQPO,59bOOQO,59b,59bOOQO-E6z-E6zOOQO,58},58}O)oQPO,58}OOQO-E6x-E6xOOQO'#C{'#C{OOQO1G.d1G.dO)vQPO'#DOO){QPO,59VOOQO-E6{-E6{OOQO1G.p1G.pO*ZQPO1G.sOOQO-E7O-E7OOOQO1G.|1G.|OOQO1G.i1G.iPOQO-E6y-E6yOOQO,59j,59jOOQO-E6|-E6|OOQO7+$_7+$_`,stateData:"+V~OwOS~ORPOTaOUfO]UOyQOzRO{SO|VO}TO!OWO!QXO!RXO!S[O!TYO!V]O!W^O!X_O!Y`O!ZcO![dO!]eO!`jO~OxlORsXTsXUsX]sXysX{sX|sX}sX!OsX!QsX!RsX!SsX!TsX!VsX!WsX!XsX!YsX!ZsX![sX!]sX!`sX~ORWXTWXUWX]WXyWX{WX|WX}WX!OWX!QWX!RWX!SWX!TWX!VWX!WWX!XWX!YWX!ZWX![WX!]WX!`sX~O]mO}TO~ORoOTnO~OxrO~OTsO!Y`O~ORtOStOTtOktOltOmtOxtO!TtO!^tO~O!_vO~P&VORYOTaOUfO]UOyYO{SO|VO}TO!OWO!QXO!RXO!S[O!TYO!V]O!W^O!X_O!Y`O!ZcO![dO!]eO~O!`xO~P&{OR|OS|OT|OU{O~Oy}OR_XT_X!P_X~ORoOTnO!P!QO~ORYOyYO!TYO~O!_!TO~P&VO!`!UO~P&{OT!WO~Oy}OR_aT_a!P_a~ORYOyYO!TYO!U!YO~O!VU!W!Q!R}]!X{|x!Z![!T!]!_!^klmRyzT!`w!T~",goto:`$ZuPPvPPPPvz!O!V!^!eP!V!o!V!V!V!V!V!s!z!V!V!V!VPPP#U#[#_#j#p#v$TTjOkTiOkZgOhikyZfOhikyZVOhikyYUOhikyRmVToWpZbOhikyYaOhikyRsbQkORzkR|lShOkSwhyRyiQpWR!PpQ!OnR!X!OYZOhikyQq!RR!RrQueR!Su`,nodeNames:`⚠ Program Property Identifier String Number TagRef Block Lap Fragment Duration Trend CollectibleTimer Timer Rounds Sequence RoundScheme Action Text Heading Quantity AtSign Question Slash Pipe Effort MetricObject True False Null`,maxTerm:62,skippedNodes:[0],repeatNodeCount:7,tokenData:"7o~RvXY#iYZ#z]^$Ppq#iqr$Vrs$}st'dtu$Vuv$Vvw$Vxy)Pyz)Uz{)Z{|*T|}*Y}!O+S!O!P+X!P!Q,[!Q![-R![!]/U!_!`$V!a!b/n!b!c/s!c!}0m!}#O0{#O#P$V#P#Q1Q#Q#R1V#T#Y0m#Y#Z2P#Z#b0m#b#c4Q#c#h0m#h#i5p#i#o0m#o#p7`#p#q7e#q#r7j~#nSw~XY#iYZ#z]^$Ppq#i~$PO!`~~$SPYZ#z~$[Z!T~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~%QXOY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^<%lO$}~%rXS~OY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^<%lO$}~&bRO;'S$};'S;=`&k;=`O$}~&nYOY$}Z]$}^r$}rs%ms#O$}#O#P&_#P;'S$};'S;=`'^;=`<%l$}<%lO$}~'aP;=`<%l$}~'gXO!Q(S!QUO!O~~)ZO!P~~)bZ|~!T~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~*YOz~~*aZ!T~!^~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~+XOy~~+^[!T~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!Q![,S!_!`$V!b!c$V#O#P$V#Q#R$V~,XPT~!Q![,S~,aP!Z~!P!Q,d~,iU!V~OY,dZ],d^s,dt;'S,d;'S;=`,{<%lO,d~-OP;=`<%l,d~-WUT~pq-j!O!P._!Q![-R![!].e!z!{.v#l#m.v~-mRpq-j!z!{-v#l#m-v~-yPpq-|~.PQpq-|!Q![.V~.[P!R~!Q![.V~.bP!Q![,S~.hP!Q![.k~.pQ]~!Q![.k![!].e~.yP!Q![.|~/RP!Q~!Q![.|~/ZQx~!Q![/a!a!b/i~/fP]~!Q![/a~/nO}~~/sO!Y~~/zZ!X~!T~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~0rRR~!Q![0m!c!}0m#T#o0m~1QO!S~~1VO!U~~1^Z{~!T~qr$Vtu$Vuv$Vvw$Vz{$V|}$V!O!P$V!_!`$V!b!c$V#O#P$V#Q#R$V~2USR~!Q![0m!c!}0m#T#U2b#U#o0m~2gTR~!Q![0m!c!}0m#T#`0m#`#a2v#a#o0m~2{TR~!Q![0m!c!}0m#T#g0m#g#h3[#h#o0m~3aTR~!Q![0m!c!}0m#T#X0m#X#Y3p#Y#o0m~3wRl~R~!Q![0m!c!}0m#T#o0m~4VTR~!Q![0m!c!}0m#T#i0m#i#j4f#j#o0m~4kTR~!Q![0m!c!}0m#T#`0m#`#a4z#a#o0m~5PTR~!Q![0m!c!}0m#T#`0m#`#a5`#a#o0m~5gRm~R~!Q![0m!c!}0m#T#o0m~5uTR~!Q![0m!c!}0m#T#f0m#f#g6U#g#o0m~6ZTR~!Q![0m!c!}0m#T#i0m#i#j6j#j#o0m~6oTR~!Q![0m!c!}0m#T#X0m#X#Y7O#Y#o0m~7VRk~R~!Q![0m!c!}0m#T#o0m~7eO!]~~7jO![~~7oO!_~",tokenizers:[0],topRules:{Program:[0,1]},tokenPrec:439});function dc(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
|
|
11
11
|
`&&t.push(n+1);return e=>{let n=0,r=t.length-1;for(;n<=r;){let i=Math.floor((n+r)/2);t[i]<=e?n=i+1:r=i-1}let i=r>=0?r:0;return{lineNumber:i+1,lineStart:t[i]}}}function fc(e,t){let n=typeof e==`string`?e:e.doc.toString(),r=n.endsWith(`
|
|
@@ -81,7 +81,7 @@ sum:$metric{} by {week}
|
|
|
81
81
|
- `),override:[qT]}),YT=class{view;rects=[];docVersion=0;listeners=new Set;pendingNotify=null;constructor(e){this.view=e,this.measure()}update(e){e.docChanged&&this.docVersion++,(e.docChanged||e.geometryChanged)&&this.measure()}addListener(e){return this.listeners.add(e),e(this.rects,this.docVersion),()=>{this.listeners.delete(e)}}measure(){try{let e=this.view.state.field(wT,!1)?.sections??[],t=this.view.state.doc.length;this.rects=e.map(e=>{let n=Math.max(0,Math.min(e.from,t)),r=Math.max(0,Math.min(e.to,t)),i=0,a=20,o;try{let e=this.view.lineBlockAt(n),t=this.view.lineBlockAt(r);i=e.top,o=e.height,a=t.top+t.height}catch{}let s=Math.max(a-i,20);return{sectionId:e.id,top:i,height:s,firstLineHeight:o,type:e.type,subtype:e.subtype,widgetName:e.widgetName}}),this.notify()}catch{}}notify(){if(typeof requestAnimationFrame==`function`){if(this.pendingNotify!==null)return;this.pendingNotify=requestAnimationFrame(()=>{this.pendingNotify=null;for(let e of this.listeners)e(this.rects,this.docVersion)})}else for(let e of this.listeners)e(this.rects,this.docVersion)}destroy(){this.pendingNotify!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.pendingNotify),this.listeners.clear()}},XT=Hr.fromClass(YT),ZT=Vr.line({attributes:{class:`cm-wod-fence cm-wod-fence-open`}}),QT=Vr.line({attributes:{class:`cm-wod-fence cm-wod-fence-close`}}),$T=Vr.line({attributes:{class:`cm-wod-inner`}});function eE(e){let t=new _i,{sections:n}=e.field(wT);for(let r of n){if(r.type!==`time`&&r.type!==`log`)continue;let n=e.doc.line(r.startLine),i=e.doc.line(r.endLine);if(r.endLine<=r.startLine){t.add(n.from,n.from,ZT);continue}t.add(n.from,n.from,ZT);for(let n=r.startLine+1;n<r.endLine;n++){let r=e.doc.line(n);t.add(r.from,r.from,$T)}t.add(i.from,i.from,QT)}return t.finish()}var tE=[ci.define({create(e){return eE(e)},update(e,t){return t.docChanged?eE(t.state):e},provide:e=>kr.decorations.from(e)}),kr.baseTheme({".cm-wod-fence":{opacity:`0.5`,fontSize:`0.85em`,color:`hsl(var(--metric-time))`,paddingLeft:`8px`,paddingRight:`8px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`},".cm-wod-fence-open":{borderTop:`1px solid hsl(var(--border) / 0.5)`,borderRadius:`6px 6px 0 0`,paddingTop:`26px`,backgroundColor:`transparent`,backgroundImage:`linear-gradient(to bottom, transparent 27px, rgba(128, 128, 128, 0.05) 27px)`},".cm-wod-fence-close":{borderBottom:`1px solid hsl(var(--border) / 0.5)`,borderRadius:`0 0 6px 6px`},".cm-wod-inner":{paddingLeft:`8px`,paddingRight:`8px`,backgroundColor:`rgba(128, 128, 128, 0.05)`,borderLeft:`1px solid hsl(var(--border) / 0.5)`,borderRight:`1px solid hsl(var(--border) / 0.5)`,boxSizing:`border-box`}})],nE=class extends Or{height;constructor(e){super(),this.height=e}eq(e){return e.height===this.height}toDOM(){let e=document.createElement(`div`);return e.className=`cm-embed-spacer`,e.style.height=`${this.height}px`,e.style.pointerEvents=`none`,e}get estimatedHeight(){return this.height}get block(){return!0}};function rE(e){let t=new _i,{sections:n}=e.field(wT);for(let r of n)if(r.type===`embed`&&r.embed?.height){let n=e.doc.line(r.startLine);t.add(n.from,n.from,Vr.widget({widget:new nE(r.embed.height),side:1}))}return t.finish()}var iE=[ci.define({create(e){return rE(e)},update(e,t){return t.docChanged?rE(t.state):e},provide:e=>kr.decorations.from(e)})];function aE(e,t,n,r,i=8){let a=Math.min(Math.max(e.width,192),320),o=Math.min(Math.max(n,0),256),s={top:e.bottom+i,bottom:e.bottom+i+o},c={top:e.top-i-o,bottom:e.top-i},l=s.bottom<=t.height,u=c.top>=0,d=(r&&s.bottom>r.top&&s.top<r.bottom||!l)&&u?`above`:`below`,f=d===`below`?s:c;return{left:Math.min(Math.max(i,e.left),Math.max(i,t.width-a-i)),top:Math.min(Math.max(i,f.top),Math.max(i,t.height-o-i)),width:a,placement:d}}var oE=0,sE=class{element;inputElement;onPick;avoid;listId;currentChoices=[];currentIndex=-1;isOpen=!1;constructor(e,t){this.inputElement=e,this.onPick=t.onPick,this.avoid=t.avoid,this.listId=`frontmatter-suggestions-${++oE}`;let n=document.createElement(`div`);n.id=this.listId,n.setAttribute(`role`,`listbox`),n.setAttribute(`aria-label`,t.label),n.tabIndex=-1,n.className=`fixed z-[60] max-h-64 overflow-auto rounded-md border border-border bg-popover text-popover-foreground shadow-md text-xs`,n.hidden=!0,this.element=n,document.body.appendChild(n),e.setAttribute(`role`,`combobox`),e.setAttribute(`aria-haspopup`,`listbox`),e.setAttribute(`aria-autocomplete`,`list`),e.setAttribute(`aria-controls`,this.listId),e.setAttribute(`aria-expanded`,`false`)}get choices(){return this.currentChoices}get activeIndex(){return this.currentIndex}setChoices(e){this.currentChoices=e,this.currentIndex=-1,this.inputElement.removeAttribute(`aria-activedescendant`),this.element.replaceChildren(),e.forEach((e,t)=>{let n=document.createElement(`div`);n.id=`${this.listId}-${t}`,n.setAttribute(`role`,`option`),n.setAttribute(`aria-selected`,`false`),n.className=`cursor-pointer px-2 py-1.5 hover:bg-muted`,n.textContent=e.label,n.addEventListener(`mousedown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>this.pick(e)),this.element.appendChild(n)})}open(){this.isOpen||(this.isOpen=!0,this.element.hidden=!1,this.position(),this.inputElement.setAttribute(`aria-expanded`,`true`),window.addEventListener(`scroll`,this.handleViewportChange,!0),window.addEventListener(`resize`,this.handleViewportChange))}close(){this.isOpen&&(this.isOpen=!1,this.element.hidden=!0,this.currentIndex=-1,this.inputElement.setAttribute(`aria-expanded`,`false`),this.inputElement.removeAttribute(`aria-activedescendant`),window.removeEventListener(`scroll`,this.handleViewportChange,!0),window.removeEventListener(`resize`,this.handleViewportChange))}destroy(){this.close(),this.element.remove()}activate(e){this.currentIndex=e,Array.from(this.element.children).forEach((t,n)=>{t.setAttribute(`aria-selected`,String(n===e)),t.classList.toggle(`bg-muted`,n===e)});let t=this.element.children[e];t&&(this.inputElement.setAttribute(`aria-activedescendant`,t.id),t instanceof HTMLElement&&t.scrollIntoView?.({block:`nearest`}))}moveActive(e){if(this.currentChoices.length===0)return;let t=this.currentIndex<0?e>0?0:this.currentChoices.length-1:(this.currentIndex+e+this.currentChoices.length)%this.currentChoices.length;this.activate(t)}pickActive(){let e=this.currentChoices[this.currentIndex];e&&this.pick(e)}pick(e){this.inputElement.value=e.value,this.close(),this.onPick(e)}handleViewportChange=()=>{this.isOpen&&this.position()};position(){let e=this.inputElement.getBoundingClientRect(),t=(this.avoid?.()??null)?.getBoundingClientRect(),n=Math.min(this.element.scrollHeight,256),r=aE({top:e.top,bottom:e.bottom,left:e.left,width:e.width},{width:window.innerWidth,height:window.innerHeight},n,t?{top:t.top,bottom:t.bottom,left:t.left,right:t.right}:void 0);this.element.style.width=`${r.width}px`,this.element.style.maxHeight=`${n}px`,this.element.style.left=`${r.left}px`,this.element.style.top=`${r.top}px`,this.element.dataset.placement=r.placement}},cE=Jr.define({combine:e=>e[0]??null}),lE=Jr.define({combine:e=>e[0]??null}),uE=Zr.define(),dE=Jr.define({combine:e=>e[0]??!0}),fE=Jr.define({combine:e=>e[0]??!1}),pE=new Set([`type`,`id`,`registrysource`,`registry-source`]);function mE(e){return pE.has(e.trim().toLowerCase())}var hE=Zr.define(),gE=ci.define({create:()=>!1,update(e,t){for(let e of t.effects)if(e.is(hE))return e.value;return e}}),_E=Zr.define(),vE=ci.define({create:()=>!1,update(e,t){let n=e;for(let e of t.effects)e.is(_E)&&(n=e.value);if(n&&t.selection){let e=t.state.field(wT).sections.find(e=>e.type===`frontmatter`);(!e||!t.state.selection.ranges.some(t=>t.from<=e.to&&t.to>=e.from))&&(n=!1)}return n}}),yE=new WeakMap,bE=new WeakMap;function xE(e){let{sections:t}=e.state.field(wT),n=t.find(e=>e.type===`frontmatter`),r=n?Math.min(e.state.doc.length,n.to):0;e.dispatch({selection:{anchor:r},scrollIntoView:!0}),e.focus()}function SE(e,t,n){let{sections:r}=e.state.field(wT),i=r.find(e=>e.type===`frontmatter`);if(!i){yE.set(e,{kind:`key`,key:`property`}),NE(e,`new`,[`property`],``,!0);return}e.state.field(gE)||e.dispatch({effects:hE.of(!0)});let a=t??e.dom.querySelector(`.cm-frontmatter-preview`),o=a?.querySelector(`input[data-frontmatter-field="key"]:is([value=""], [value="property"])`);if(o){o.focus(),o.select?.();return}let s=a?.querySelector(`button[aria-label="Add property"]`);if(s){s.click();return}yE.set(e,{kind:`key`,key:`property`}),NE(e,i.id,[`property`],``,!0)}var CE=new WeakMap,wE=0,TE={tag:!0,tags:!0,category:!0,domain:!0,format:!0,equipment:!0,effort:!0,quality:!0,intent:!0,discipline:!0,intensity:!0,intensitytier:!0,sound:!0};function EE(e){return[`tag`,`tags`,`category`].includes(e.trim().toLowerCase())}function DE(e,t){let n=document.createElement(`span`);return n.id=`frontmatter-hint-${++wE}`,n.className=`sr-only`,n.textContent=t,e.appendChild(n),n}function OE(){let e=document.createElement(`div`);e.className=`flex items-center border-b border-border text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`;let t=document.createElement(`div`);t.dataset.frontmatterColumn=`key`,t.className=`px-3 py-1.5 w-36 shrink-0 border-r border-border max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,t.textContent=`Key`;let n=document.createElement(`div`);n.dataset.frontmatterColumn=`value`,n.className=`px-3 py-1.5 flex-1 min-w-0`,n.textContent=`Value`;let r=document.createElement(`div`);return r.className=`w-9 shrink-0`,e.append(t,n,r),e}function kE(e,t){e.querySelector(`[data-frontmatter-column]`)||e.insertBefore(OE(),t)}function AE(e,t,n,r,i,a,o,s=`tags`){let c=t.state.facet(cE);if(!c||!e.parentElement)return;let l=new sE(e,{label:r===`key`?`Suggested properties`:jE(s),onPick:()=>o(!0),avoid:()=>n.querySelector(`[data-frontmatter-actions]`)}),u=0,d=()=>{u++,l.close()},f=async(t=!1)=>{d();let n=++u,o=t?``:e.value.trim().toLowerCase();try{let t=await c();if(n!==u||!e.isConnected||document.activeElement!==e)return;let d;if(r===`key`)d=t.types.map(e=>({value:e,label:e,haystack:e}));else if(s===`effort`||s===`equipment`)d=(s===`effort`?t.efforts??[]:t.equipment??[]).map(e=>({value:e.slug,label:e.label.toLowerCase()===e.slug.toLowerCase()?e.label:`${e.label} (${e.slug})`,haystack:[e.label,e.slug,...e.aliases].join(` `).toLowerCase()}));else{let e=i.trim().toLowerCase(),n=t.tags.filter(t=>EE(i)||t.type?.toLowerCase()===e).map(e=>({value:e.label,label:e.label,haystack:e.label.toLowerCase()}));d=n.length>0?n:e===`discipline`?il.map(e=>({value:e,label:e,haystack:e.toLowerCase()})):e===`intensitytier`||e===`intensity`?[`low`,`moderate`,`high`].map(e=>({value:e,label:e,haystack:e})):[]}let f=new Set(a.map(e=>e.toLowerCase())),p=new Set,m=d.filter(e=>{let t=e.value.toLowerCase();return f.has(t)||p.has(t)||o!==``&&!e.haystack.includes(o)?!1:(p.add(t),!0)}).map(e=>({value:e.value,label:e.label}));l.setChoices(m),m.length>0&&l.open()}catch{n===u&&d()}};e.addEventListener(`focus`,()=>void f(!0)),e.addEventListener(`input`,()=>void f(!1)),e.addEventListener(`blur`,d),e.addEventListener(`keydown`,e=>{if(e.ctrlKey&&(e.code===`Space`||e.key===` `))e.preventDefault(),f(!0);else if(e.key===`Escape`)e.preventDefault(),d();else if(e.key===`ArrowDown`||e.key===`ArrowUp`){if(l.choices.length===0)return;e.preventDefault(),l.moveActive(e.key===`ArrowDown`?1:-1)}else if(e.key===`Enter`||e.key===`Tab`){if(l.activeIndex<0)return;e.preventDefault(),l.pickActive()}}),CE.get(n)?.push(()=>l.destroy())}function jE(e){return e===`effort`?`Suggested efforts`:e===`equipment`?`Suggested equipment`:`Suggested tags`}function ME(e){if(Array.isArray(e))return e.map(String).map(e=>e.trim()).filter(Boolean);if(typeof e==`string`&&e.trim()){let t=e.trim();return t.startsWith(`[`)&&t.endsWith(`]`)?t.slice(1,-1).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(Boolean):[t.replace(/^['"]|['"]$/g,``)]}return[]}function NE(e,t,n,r,i=!1){if(e.state.readOnly)return;let a=e.state.doc.toString(),o=$a(a,n,r);if(o===a){i&&e.dispatch({effects:hE.of(!0)});return}let s=e.state.selection.main.anchor,c=o.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/)?.[0].length??0,l=s<=c?c:Math.min(s,o.length);e.dispatch({changes:{from:0,to:a.length,insert:o},selection:{anchor:l},...i?{effects:hE.of(!0)}:{}})}function PE(e,t,n,r,i){if(e.state.readOnly)return;let a=e.state.doc.toString(),o=$a($a(a,[r],i),[n],null);if(o===a)return;let s=e.state.selection.main.anchor,c=o.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/)?.[0].length??0,l=s<=c?c:Math.min(s,o.length);e.dispatch({changes:{from:0,to:a.length,insert:o},selection:{anchor:l}})}function FE(e){let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;return t===`effort`?`effort`:t===`equipment`?`equipment`:e.registrySource!==void 0||e.baseAttributes!==void 0?`effort`:null}function IE(e,t){let n=e.trim().toLowerCase();return n===`metrics.effort`||n===`effort`?`effort`:n===`metrics.equipment`||n===`equipment`||n===`aliases`&&t===`equipment`?`equipment`:n===`aliases`&&t===`effort`?`effort`:`tags`}function LE(e,t){let n=e.trim().toLowerCase();return n===`metrics.effort`||n===`metrics.equipment`||n===`equipment`&&t===`effort`}function RE(e,t,n,r){let i=document.createElement(`div`);i.className=`flex items-center min-h-[34px] border-b border-dashed border-border last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,i.setAttribute(`data-frontmatter-tag-draft`,`true`),i.dataset.frontmatterRow=n;let a=document.createElement(`div`);a.className=`flex items-center gap-2 px-3 py-1.5 w-36 shrink-0 border-r border-dashed border-border text-muted-foreground max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,a.appendChild(WE());let o=document.createElement(`span`);o.className=`truncate font-medium text-foreground/90`,o.textContent=n,a.appendChild(o),i.appendChild(a);let s=document.createElement(`div`);s.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`;let c=document.createElement(`input`);c.className=`flex-none w-44 max-w-full rounded-md border border-field-border bg-background/60 px-2 py-1 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:border-ring focus:ring-1 focus:ring-ring`,c.placeholder=`Add tag…`,c.setAttribute(`aria-label`,`Value for ${n}`),c.dataset.frontmatterField=`value`,c.dataset.frontmatterProperty=n,c.setAttribute(`aria-describedby`,DE(s,`Press Enter to add the value.`).id),s.appendChild(c),i.appendChild(s);let l=!1,u=t=>{if(!l){if(l=!0,t){let e=c.value.trim().replace(/^,|,$/g,``);e&&r(e)}i.remove(),e.requestMeasure()}},d=()=>u(!0),f=()=>u(!1);return AE(c,e,t,`value`,n,[],d),c.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),f();return}e.defaultPrevented||(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),d())}),c.addEventListener(`blur`,()=>queueMicrotask(()=>{c.isConnected&&(c.value.trim()?d():f())})),i}function zE(e,t){let n=e.split(/\r?\n/);for(let e=0;e<n.length;e++)if(RegExp(`^${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}:\\s*$`).test(n[e]))return e+1<n.length&&/^\s+\S/.test(n[e+1]);return!1}function BE(e,t,n){let r=t.trim();if(!r||e.resolveEffort(r))return null;let i=e.resolve(r).diagnostics,a=document.createElement(`div`);a.setAttribute(`data-testid`,`editor-ref-unknown`),a.className=`w-full basis-full flex flex-wrap items-center gap-2 text-[10px] text-destructive`;let o=document.createElement(`span`);o.textContent=i[0]?.message||`Unknown effort: ${r}`,a.appendChild(o);for(let e of i[0]?.candidates??[]){let t=document.createElement(`button`);t.type=`button`,t.textContent=`Use ${e}`,t.className=`underline hover:text-foreground cursor-pointer`,t.addEventListener(`click`,t=>{t.preventDefault(),n(e)}),a.appendChild(t)}let s=document.createElement(`a`);return s.href=e.createHref(`effort`),s.textContent=`Create page`,s.className=`underline hover:text-foreground`,a.appendChild(s),a}var VE={effort:{label:`Effort`,path:`metrics.effort`,kind:`effort`},equipment:{label:`Equipment`,path:`metrics.equipment`,kind:`equipment`},rpe:{label:`RPE`,path:`metrics.rpe`,kind:`number`},custom:{label:`Custom / Equation`,path:`metrics.`,kind:`custom`}};function HE(e,t,n,r){let i=document.createElement(`div`);i.className=`flex items-center min-h-[34px] border-b border-dashed border-border last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,i.setAttribute(`data-frontmatter-metric-draft`,`true`),i.dataset.frontmatterRow=`metric`;let a=document.createElement(`select`);a.setAttribute(`aria-label`,`Metric kind`),a.className=`mx-3 my-1.5 h-7 w-28 shrink-0 rounded-md border border-input bg-background px-1.5 text-[11px] text-muted-foreground outline-none`;for(let[e,t]of Object.entries(VE)){let n=document.createElement(`option`);n.value=e,n.textContent=t.label,a.appendChild(n)}i.appendChild(a);let o=document.createElement(`div`);o.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`;let s=null,c=document.createElement(`input`);c.className=`flex-none w-44 max-w-full rounded-md border border-field-border bg-background/60 px-2 py-1 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:border-ring focus:ring-1 focus:ring-ring`,c.placeholder=`Value…`,c.setAttribute(`aria-label`,`Metric value`),c.dataset.frontmatterField=`value`,c.setAttribute(`aria-describedby`,DE(o,`Press Enter to apply the metric value.`).id),o.appendChild(c),i.appendChild(o);let l=!1,u=t=>{if(l)return;l=!0;let n=VE[a.value],o=c.value.trim();if(t&&n&&o){if(n.kind===`equipment`)r([n.path],[o]);else if(n.kind===`number`){let e=Number(o);Number.isNaN(e)||r([n.path],e)}else if(n.kind===`custom`){let e=(s?.value.trim()||`custom`).replace(/^metrics\./i,``),t=Number(o);r([`metrics.${e}`],!Number.isNaN(t)&&o!==``?t:o)}else r([n.path],o)}i.remove(),e.requestMeasure()},d=()=>{let r=VE[a.value];r?.kind===`custom`?(s||(s=document.createElement(`input`),s.className=`flex-none w-32 max-w-full rounded-md border border-field-border bg-background/60 px-2 py-1 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:border-ring focus:ring-1 focus:ring-ring`,s.placeholder=`Metric key…`,s.setAttribute(`aria-label`,`Metric key`),s.dataset.frontmatterField=`key`,s.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),u(!1)):e.key===`Enter`&&(e.preventDefault(),c.value.trim()?u(!0):c.focus())}),o.insertBefore(s,c)),c.placeholder=`Value or equation…`):s&&(s.remove(),s=null,c.placeholder=`Value…`),r&&(r.kind===`effort`||r.kind===`equipment`)&&n&&AE(c,e,t,`value`,r.path,[],()=>u(!0),r.kind)};return d(),a.addEventListener(`change`,d),c.addEventListener(`keydown`,e=>{if(!(e.defaultPrevented&&e.key!==`Escape`)){if(e.key===`Escape`){e.preventDefault(),u(!1);return}e.key===`Enter`&&(e.preventDefault(),u(!0))}}),c.addEventListener(`blur`,()=>queueMicrotask(()=>{c.isConnected&&(i.contains(document.activeElement)||u(c.value.trim().length>0))})),a.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),u(!1))}),i}function UE(e,t){let n=document.createElement(`div`);n.className=`flex items-center min-h-[34px] border-b border-dashed border-border last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,n.setAttribute(`data-frontmatter-summary-draft`,`true`),n.dataset.frontmatterRow=`summary`;let r=document.createElement(`div`);r.className=`flex items-center gap-2 px-3 py-1.5 w-36 shrink-0 border-r border-dashed border-border text-muted-foreground max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,r.appendChild(GE());let i=document.createElement(`input`);i.className=`w-full rounded-md border border-field-border bg-background/60 px-2 py-1 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:border-ring focus:ring-1 focus:ring-ring`,i.placeholder=`Summary key…`,i.setAttribute(`aria-label`,`Summary key`),i.dataset.frontmatterField=`key`,i.setAttribute(`aria-describedby`,DE(r,`Summary metric name. Press Enter to move to the equation.`).id),r.appendChild(i),n.appendChild(r);let a=document.createElement(`div`);a.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`;let o=document.createElement(`input`);o.className=`flex-1 min-w-[160px] rounded-md border border-field-border bg-background/60 px-2 py-1 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:border-ring focus:ring-1 focus:ring-ring`,o.placeholder=`Equation (e.g. sum(work))…`,o.setAttribute(`aria-label`,`Summary equation`),o.dataset.frontmatterField=`value`,o.setAttribute(`aria-describedby`,DE(a,`Summary equation. Press Enter to apply.`).id),a.appendChild(o),n.appendChild(a);let s=!1,c=r=>{if(s)return;s=!0;let a=i.value.trim(),c=(a||`summary`).replace(/^summaries\./i,``),l=o.value.trim();r&&(l||a)&&t([`summaries.${c}`],l),n.remove(),e.requestMeasure()};i.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),c(!1);return}e.key===`Enter`&&(e.preventDefault(),o.value.trim()?c(!0):o.focus())}),o.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),c(!1);return}e.key===`Enter`&&(e.preventDefault(),c(!0))});let l=()=>queueMicrotask(()=>{n.isConnected&&(n.contains(document.activeElement)||c(i.value.trim().length>0||o.value.trim().length>0))});return i.addEventListener(`blur`,l),o.addEventListener(`blur`,l),n}function WE(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3.5 w-3.5 text-muted-foreground/70`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M12 2H2v10l9.29 9.29c.94.94 2.48.94 3.42 0l6.58-6.58c.94-.94.94-2.48 0-3.42L12 2Z`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`circle`);return n.setAttribute(`cx`,`7`),n.setAttribute(`cy`,`7`),n.setAttribute(`r`,`.5`),n.setAttribute(`fill`,`currentColor`),e.appendChild(n),e}function GE(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3.5 w-3.5 text-muted-foreground/70`);for(let t of[`6`,`12`,`18`]){let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`4`),n.setAttribute(`x2`,`20`),n.setAttribute(`y1`,t),n.setAttribute(`y2`,t),e.appendChild(n)}return e}function KE(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`shrink-0 h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);t.setAttribute(`x1`,`12`),t.setAttribute(`x2`,`12`),t.setAttribute(`y1`,`5`),t.setAttribute(`y2`,`19`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);return n.setAttribute(`x1`,`5`),n.setAttribute(`x2`,`19`),n.setAttribute(`y1`,`12`),n.setAttribute(`y2`,`12`),e.appendChild(n),e}function qE(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M15 3h6v6`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`10`),n.setAttribute(`x2`,`21`),n.setAttribute(`y1`,`14`),n.setAttribute(`y2`,`3`),e.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`polyline`);return r.setAttribute(`points`,`21 14 21 3 10 3`),e.appendChild(r),e}function JE(e=`md`){let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`viewBox`,`0 0 24 24`),t.setAttribute(`fill`,`none`),t.setAttribute(`stroke`,`currentColor`),t.setAttribute(`stroke-width`,e===`sm`?`2.5`:`2`),t.setAttribute(`stroke-linecap`,`round`),t.setAttribute(`stroke-linejoin`,`round`),t.setAttribute(`class`,e===`sm`?`h-2.5 w-2.5`:`h-3.5 w-3.5`);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`18`),n.setAttribute(`x2`,`6`),n.setAttribute(`y1`,`6`),n.setAttribute(`y2`,`18`),t.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);return r.setAttribute(`x1`,`6`),r.setAttribute(`x2`,`18`),r.setAttribute(`y1`,`6`),r.setAttribute(`y2`,`18`),t.appendChild(r),t}function YE(e){return[`alias`,`aliases`].includes(e.trim().toLowerCase())}function XE(e,t){let n=document.createElement(`span`);n.className=`inline-flex max-w-full items-center rounded-md border border-border/60 bg-muted/40 px-2 py-0.5 text-xs text-foreground`;let r=document.createElement(`span`);return r.className=`truncate`,r.textContent=t?`#${e}`:e,n.appendChild(r),n}function ZE(e,t){let n=document.createElement(`div`);n.dataset.frontmatterSummary=`true`,n.className=`divide-y divide-border/60`;let r=[{label:`Tags`,entries:e.filter(([e])=>TE[e.trim().toLowerCase()]===!0),hash:!0},{label:`Aliases`,entries:e.filter(([e])=>YE(e)),hash:!1}];for(let e of r){let t=new Set,r=e.entries.flatMap(([,e])=>ME(e)).filter(e=>{let n=e.toLowerCase();return!t.has(n)&&(t.add(n),!0)});if(r.length===0)continue;let i=document.createElement(`div`);i.className=`flex flex-wrap items-center gap-1.5 px-3 py-2`;let a=document.createElement(`span`);a.className=`mr-1 w-14 shrink-0 text-[11px] font-medium text-muted-foreground`,a.textContent=e.label,i.appendChild(a);for(let t of r)i.appendChild(XE(t,e.hash));n.appendChild(i)}let i=e.filter(([e])=>TE[e.trim().toLowerCase()]!==!0&&!YE(e)),a=i.filter(([e])=>{let t=e.trim().toLowerCase();return t.startsWith(`metrics.`)||t===`metrics`}).length,o=i.filter(([e])=>{let t=e.trim().toLowerCase();return t.startsWith(`summaries.`)||t===`summaries`}).length,s=document.createElement(`button`);s.type=`button`,s.setAttribute(`aria-label`,`Show property details`),s.setAttribute(`aria-expanded`,`false`),s.className=`flex w-full flex-wrap items-center gap-x-2 gap-y-1 px-3 py-2 text-left text-[11px] text-muted-foreground transition-colors hover:bg-muted/20 hover:text-foreground cursor-pointer`;let c=document.createElement(`span`);if(c.textContent=`${i.length} more ${i.length===1?`property`:`properties`}`,s.appendChild(c),a>0){let e=document.createElement(`span`);e.textContent=`· ${a} custom ${a===1?`metric`:`metrics`}`,s.appendChild(e)}if(o>0){let e=document.createElement(`span`);e.textContent=`· ${o} ${o===1?`summary`:`summaries`}`,s.appendChild(e)}let l=document.createElement(`span`);return l.className=`ml-auto`,l.setAttribute(`aria-hidden`,`true`),l.textContent=`▾`,s.appendChild(l),s.addEventListener(`click`,t),n.appendChild(s),n}var QE=class extends Or{sectionId;rawContent;readOnly;detailed;debugMode;constructor(e,t,n=!1,r=!1,i=!1){super(),this.sectionId=e,this.rawContent=t??``,this.readOnly=n,this.detailed=r,this.debugMode=i}eq(e){return this.sectionId===e.sectionId&&this.rawContent===e.rawContent&&this.readOnly===e.readOnly&&this.detailed===e.detailed&&this.debugMode===e.debugMode}ignoreEvent(){return!0}toDOM(e){let t=document.createElement(`div`);CE.set(t,[]),t.className=`cm-frontmatter-preview py-2 font-sans select-none`;let n=document.createElement(`div`);n.className=`mb-1.5 flex items-center px-0.5 text-xs font-medium text-muted-foreground`;let r=document.createElement(`span`);if(r.textContent=`Properties`,n.appendChild(r),this.detailed){let t=document.createElement(`button`);t.type=`button`,t.setAttribute(`aria-label`,`Show property summary`),t.setAttribute(`aria-expanded`,`true`),t.className=`ml-auto px-1 py-0.5 text-[11px] font-normal hover:text-foreground cursor-pointer`,t.textContent=`Hide details ▴`,t.addEventListener(`click`,()=>{bE.set(e.dom,!1),e.dispatch({effects:hE.of(!1)})}),n.appendChild(t)}t.appendChild(n);let i=document.createElement(`div`);i.dataset.frontmatterProperties=`true`,i.className=`rounded-lg border border-border/80 bg-background/50 text-xs shadow-xs`,t.appendChild(i);let a=this.rawContent.replace(/^---\r?\n?/,``).replace(/\r?\n?---\r?$/,``),o=io(a),s=this.debugMode||e.state.facet(fE),c=Object.entries(o).filter(([e])=>s||!mE(e)),l=FE(o),u=e.state.facet(lE)?.()??null;if(!this.detailed)i.appendChild(ZE(c,()=>{bE.set(e.dom,!0),e.dispatch({effects:hE.of(!0)})}));else{if(i.appendChild(OE()),c.length===0){let e=document.createElement(`div`);e.className=`px-3 py-2 text-xs text-muted-foreground/60 italic`,e.textContent=`No properties`,i.appendChild(e)}let n=c.map(([e])=>e);for(let r=0;r<c.length;r++){let[s,d]=c[r],f=EE(s),p=IE(s,l),m=(LE(s,l)||s===`aliases`)&&Array.isArray(d),h=f||m||Array.isArray(d),g=d===``&&zE(a,s),_=document.createElement(`div`);_.className=`flex items-center min-h-[34px] border-b border-dashed border-border last:border-b-0 group hover:bg-muted/10 transition-colors max-[479px]:flex-col max-[479px]:items-stretch`,_.dataset.frontmatterRow=s,i.appendChild(_);let v=document.createElement(`div`);if(v.className=`flex items-center gap-2 px-3 py-1.5 w-36 shrink-0 border-r border-dashed border-border text-muted-foreground max-[479px]:w-auto max-[479px]:border-r-0 max-[479px]:border-b`,_.appendChild(v),v.appendChild(h?WE():GE()),this.readOnly||g){let e=document.createElement(`span`);e.className=`truncate font-medium text-foreground/90`,e.textContent=s,v.appendChild(e)}else{let a=document.createElement(`input`);a.className=`w-full bg-transparent text-xs text-foreground/90 font-medium outline-none truncate hover:bg-muted/30 focus:bg-background focus:ring-1 focus:ring-ring rounded px-1 -mx-1`,a.value=s,a.spellcheck=!1,a.setAttribute(`aria-label`,`Property key: ${s}`),a.dataset.frontmatterField=`key`,a.dataset.frontmatterProperty=s,a.setAttribute(`aria-describedby`,DE(v,`Property name. Press Enter to apply. Arrow keys browse suggested property names.`).id);let l=s,u=(t=!1)=>{let n=a.value.trim();if(!n||n===l){a.value=l,t&&_.querySelector(`input[data-frontmatter-field="value"]`)?.focus();return}if(!/^[A-Za-z_][\w.-]*$/.test(n)||n in o){a.value=l;return}t&&yE.set(e,{kind:`value`,key:n}),PE(e,this.sectionId,l,n,d),delete o[l],o[n]=d,l=n},f=()=>queueMicrotask(()=>{a.isConnected&&u()});a.addEventListener(`change`,f),v.appendChild(a),AE(a,e,t,`key`,s,c.map(([e])=>e),u),a.addEventListener(`blur`,f),a.addEventListener(`keydown`,o=>{if((o.metaKey||o.ctrlKey)&&o.key===`;`){o.preventDefault(),SE(e,t,this.sectionId);return}if(!o.defaultPrevented){if(o.key===`Tab`){if(o.preventDefault(),!o.shiftKey)u(!0),_.querySelector(`input[data-frontmatter-field="value"]`)?.focus();else if(r>0){u(!1);let e=n[r-1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="value"]`)?.focus()}else u(!1),t.querySelector(`button[aria-label="Show property summary"]`)?.focus();return}if(o.key===`Enter`){o.preventDefault(),u(!0),_.querySelector(`input[data-frontmatter-field="value"]`)?.focus();return}if(o.key===`ArrowDown`){if(a.getAttribute(`aria-expanded`)===`true`)return;if(o.preventDefault(),r<c.length-1){let e=n[r+1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}else t.querySelector(`button[aria-label="Add property"]`)?.focus();return}if(o.key===`ArrowUp`){if(a.getAttribute(`aria-expanded`)===`true`)return;if(o.preventDefault(),r>0){let e=n[r-1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}return}}});let p=yE.get(e);p?.kind===`key`&&p.key===s&&(setTimeout(()=>{a.isConnected&&(a.focus(),a.select())},0),yE.delete(e))}let y=document.createElement(`div`);y.className=`flex items-center flex-wrap gap-1.5 px-3 py-1.5 flex-1 min-w-0`,_.appendChild(y);let b=t=>{o[s]=t,NE(e,this.sectionId,[s],t.length>0?t:``)},x=e=>u?p===`effort`?u.resolveEffort(e):p===`equipment`?u.resolveEquipment(e):null:null;if(h){let a=ME(d),o=p!==`tags`,l=YE(s);for(let e=0;e<a.length;e++){let t=a[e],n=o?x(t):null,r=document.createElement(`span`);r.className=n?`group/pill inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-muted/50 text-foreground border border-border/60`:o?`group/pill inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-destructive/10 text-destructive border border-destructive/30`:`group/pill inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium bg-muted/40 text-foreground/90 border border-border/60`;let i=document.createElement(`span`);if(i.textContent=l?t:n?n.label:t,r.appendChild(i),n&&u&&(!l||e===0)){let e=document.createElement(`a`);e.href=u.openHref(p,n.slug),e.title=`Open ${n.label} page`,e.setAttribute(`aria-label`,`Open ${n.label} page`),e.className=l?`inline-flex items-center justify-center text-muted-foreground/40 hover:text-foreground cursor-pointer`:`inline-flex items-center justify-center text-muted-foreground/60 hover:text-foreground cursor-pointer`,e.appendChild(qE()),r.appendChild(e)}if(!this.readOnly){let n=document.createElement(`button`);n.type=`button`,n.tabIndex=-1,n.setAttribute(`aria-label`,f?`Remove tag ${t}`:`Remove ${t}`),n.className=`inline-flex items-center justify-center text-muted-foreground/50 hover:text-destructive cursor-pointer transition-colors`,n.appendChild(JE(`sm`)),n.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),b(a.filter((t,n)=>n!==e))}),r.appendChild(n)}y.appendChild(r)}if(!this.readOnly){let l=document.createElement(`input`);l.className=`flex-1 min-w-[96px] bg-transparent px-1 py-0.5 text-xs text-foreground outline-none placeholder:text-field-placeholder focus:bg-background/80 focus:ring-1 focus:ring-ring rounded transition-colors`,l.placeholder=a.length===0?m?`Add ${p===`effort`?`effort`:`equipment`}…`:`Add tags…`:f?`Add tag…`:`Add…`,l.setAttribute(`aria-label`,`Value for ${s}`),l.dataset.frontmatterField=`value`,l.dataset.frontmatterProperty=s,l.setAttribute(`aria-describedby`,DE(y,`Press Enter or comma to add a value. Arrow keys browse the suggestions.`).id);let d=()=>{let t=l.value.trim().replace(/^,|,$/g,``);t&&!a.some(e=>e.toLowerCase()===t.toLowerCase())&&(l.value=``,yE.set(e,{kind:`tag`,key:s}),b([...a,t]))};y.appendChild(l),AE(l,e,t,`value`,s,a,d,p),l.addEventListener(`keydown`,o=>{if((o.metaKey||o.ctrlKey)&&o.key===`;`){o.preventDefault(),SE(e,t,this.sectionId);return}if(!o.defaultPrevented){if((o.key===`Enter`||o.key===`,`)&&l.value.trim()){o.preventDefault(),d();return}if(o.key===`Backspace`&&!l.value&&a.length>0){o.preventDefault(),yE.set(e,{kind:`tag`,key:s}),b(a.slice(0,-1));return}if(o.key===`Tab`){if(l.value.trim()&&!o.shiftKey){o.preventDefault(),d();return}if(o.preventDefault(),o.shiftKey)_.querySelector(`input[data-frontmatter-field="key"]`)?.focus();else if(r<c.length-1){let e=n[r+1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}else t.querySelector(`button[aria-label="Add property"]`)?.focus();return}if(o.key===`Enter`){if(o.preventDefault(),r<c.length-1){let e=n[r+1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}else t.querySelector(`button[aria-label="Add property"]`)?.click();return}if(o.key===`ArrowDown`){if(l.getAttribute(`aria-expanded`)===`true`)return;if(o.preventDefault(),r<c.length-1){let e=n[r+1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="value"]`)?.focus()}else xE(e);return}if(o.key===`ArrowUp`){if(l.getAttribute(`aria-expanded`)===`true`)return;if(o.preventDefault(),r>0){let e=n[r-1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="value"]`)?.focus()}return}}}),l.addEventListener(`blur`,()=>queueMicrotask(()=>{l.isConnected&&l.value.trim()&&d()}));let h=yE.get(e);if((h?.kind===`tag`||h?.kind===`value`)&&h.key===s&&(setTimeout(()=>{l.isConnected&&l.focus()},0),yE.delete(e)),o&&u){let e=a.filter(e=>!x(e));if(e.length>0){let t=document.createElement(`div`);t.setAttribute(`data-testid`,`editor-ref-unknown`),t.className=`w-full basis-full flex flex-wrap items-center gap-2 text-[10px] text-destructive`;let n=document.createElement(`span`);n.textContent=`Unknown ${p===`effort`?`effort`:`equipment`}: ${e.join(`, `)}`,t.appendChild(n);let r=document.createElement(`button`);r.type=`button`,r.textContent=`Select existing`,r.className=`underline hover:text-foreground cursor-pointer`,r.addEventListener(`click`,e=>{e.preventDefault(),l.focus()}),t.appendChild(r);let i=document.createElement(`a`);i.href=u.createHref(p),i.textContent=`Create page`,i.className=`underline hover:text-foreground`,t.appendChild(i),y.appendChild(t)}}}}else if(g){let e=document.createElement(`span`);e.className=`text-xs text-muted-foreground/60 italic py-0.5 truncate`,e.textContent=`Nested block — edit in YAML`,y.appendChild(e)}else{let a=Array.isArray(d)?d.join(`, `):String(d??``);if(this.readOnly){let e=document.createElement(`span`);e.className=`text-xs text-foreground py-0.5 truncate`,e.textContent=a,y.appendChild(e)}else{let l=document.createElement(`input`);l.className=`w-full bg-transparent px-1.5 py-0.5 -mx-1.5 text-xs text-foreground outline-none placeholder:text-field-placeholder hover:bg-muted/30 focus:bg-background focus:ring-1 focus:ring-ring rounded transition-colors`,l.value=a,l.placeholder=`Empty`,l.spellcheck=!1,l.setAttribute(`aria-label`,`Value for ${s}`),l.dataset.frontmatterField=`value`,l.dataset.frontmatterProperty=s,l.setAttribute(`aria-describedby`,DE(y,`Property value. Press Enter to apply.`).id);let d=a,f=t=>{let n=l.value.trim();if(n!==d){d=n;let r=Number(n),i=n!==``&&!isNaN(r)?r:n;o[s]=i,typeof t==`string`?yE.set(e,{kind:`key`,key:t}):t===!0&&yE.set(e,{kind:`value`,key:s}),NE(e,this.sectionId,[s],i)}},p=()=>queueMicrotask(()=>{l.isConnected&&f()});l.addEventListener(`change`,p),y.appendChild(l),AE(l,e,t,`value`,s,[a],f,s.trim().toLowerCase()===`metrics.effort`?`effort`:`tags`),l.addEventListener(`blur`,p),l.addEventListener(`keydown`,a=>{if((a.metaKey||a.ctrlKey)&&a.key===`;`){a.preventDefault(),SE(e,t,this.sectionId);return}if(!a.defaultPrevented){if(a.key===`Tab`){if(a.preventDefault(),a.shiftKey)f(),_.querySelector(`input[data-frontmatter-field="key"]`)?.focus();else if(r<c.length-1){let e=n[r+1];f(e),i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}else f(),t.querySelector(`button[aria-label="Add property"]`)?.focus();return}if(a.key===`Enter`){if(a.preventDefault(),r<c.length-1){let e=n[r+1];f(e),i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="key"]`)?.focus()}else f(),t.querySelector(`button[aria-label="Add property"]`)?.click();return}if(a.key===`ArrowDown`){if(l.getAttribute(`aria-expanded`)===`true`)return;if(a.preventDefault(),r<c.length-1){let e=n[r+1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="value"]`)?.focus()}else xE(e);return}if(a.key===`ArrowUp`){if(l.getAttribute(`aria-expanded`)===`true`)return;if(a.preventDefault(),r>0){let e=n[r-1];i.querySelector(`[data-frontmatter-row="${e}"] input[data-frontmatter-field="value"]`)?.focus()}return}}});let m=yE.get(e);if(m?.kind===`value`&&m.key===s&&(setTimeout(()=>{l.isConnected&&(l.focus(),l.select?.())},0),yE.delete(e)),s.trim().toLowerCase()===`metrics.effort`&&u){let t=u.resolveEffort(a);if(t){l.className=`flex-1 min-w-[70px] bg-transparent px-1.5 py-0.5 -mx-1.5 text-xs text-foreground outline-none placeholder:text-field-placeholder hover:bg-muted/30 focus:bg-background focus:ring-1 focus:ring-ring rounded transition-colors`;let e=document.createElement(`a`);e.href=u.openHref(`effort`,t.slug),e.title=`Open ${t.label} page`,e.setAttribute(`aria-label`,`Open ${t.label} page`),e.className=`shrink-0 inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors cursor-pointer`;let n=document.createElement(`span`);n.textContent=t.label,e.appendChild(n),e.appendChild(qE()),y.appendChild(e)}let n=BE(u,a,t=>{o[s]=t,NE(e,this.sectionId,[s],t)});n&&y.appendChild(n)}}if(/^https?:\/\/\S+$/i.test(a)){let e=document.createElement(`a`);e.href=a,e.target=`_blank`,e.rel=`noopener noreferrer`,e.title=a,e.setAttribute(`aria-label`,`Open ${s} in new tab`),e.className=`shrink-0 inline-flex items-center justify-center text-muted-foreground/60 hover:text-foreground transition-colors cursor-pointer`,e.appendChild(qE()),y.appendChild(e)}}if(!this.readOnly&&!g){let t=document.createElement(`div`);t.className=`flex items-center pr-2`;let n=document.createElement(`button`);n.type=`button`,n.tabIndex=-1,n.setAttribute(`aria-label`,`Remove property ${s}`),n.className=`opacity-0 group-hover:opacity-100 focus-visible:opacity-100 text-muted-foreground/70 hover:text-destructive p-1 rounded transition-opacity cursor-pointer`,n.appendChild(JE(`md`)),n.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),delete o[s],NE(e,this.sectionId,[s],null)}),t.appendChild(n),_.appendChild(t)}}}if(!this.readOnly){let n=c.find(([e])=>e.trim().toLowerCase()===`tags`)?.[0]??c.find(([e])=>EE(e))?.[0],r=document.createElement(`div`);r.className=`mt-2 flex flex-wrap items-center gap-x-3 gap-y-1`,r.dataset.frontmatterActions=`true`;let a=document.createElement(`button`);a.type=`button`,a.setAttribute(`aria-label`,`Add property`),a.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,a.appendChild(KE());let s=document.createElement(`span`);s.textContent=`Add property`,a.appendChild(s),a.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),this.detailed||(bE.set(e.dom,!0),e.dispatch({effects:hE.of(!0)}));let r=`property`,i=1;for(;r in o;)i++,r=`property_${i}`;yE.set(e,{kind:`key`,key:r}),NE(e,this.sectionId,[r],``,!0);let a=(e.dom.querySelector(`.cm-frontmatter-preview`)??t).querySelector(`[data-frontmatter-row="${r}"] [data-frontmatter-field="key"]`);a?.focus(),a?.select()}),a.addEventListener(`keydown`,t=>{if(t.key===`ArrowDown`||t.key===`Tab`&&!t.shiftKey)t.preventDefault(),xE(e);else if(t.key===`ArrowUp`||t.key===`Tab`&&t.shiftKey){t.preventDefault();let e=i.querySelectorAll(`input[data-frontmatter-field]:not([disabled])`);e[e.length-1]?.focus()}}),r.appendChild(a);{let n=document.createElement(`button`);n.type=`button`,n.setAttribute(`aria-label`,`Add metric`),n.setAttribute(`data-testid`,`editor-add-metric-note`),n.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,n.appendChild(KE());let a=document.createElement(`span`);a.textContent=`Add metric`,n.appendChild(a),n.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),bE.set(e.dom,!0),this.detailed||e.dispatch({effects:hE.of(!0)});let r=e.dom.querySelector(`.cm-frontmatter-preview`)??t,a=r.querySelector(`[data-frontmatter-properties]`)??i,o=r.querySelector(`[data-frontmatter-metric-draft] input`);if(o){o.focus();return}let s=HE(e,r,u,(t,n)=>{NE(e,this.sectionId,t,n)});a.appendChild(s),s.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(n)}{let n=document.createElement(`button`);n.type=`button`,n.setAttribute(`aria-label`,`Add summary`),n.setAttribute(`data-testid`,`editor-add-summary-note`),n.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,n.appendChild(KE());let a=document.createElement(`span`);a.textContent=`Add summary`,n.appendChild(a),n.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),bE.set(e.dom,!0),this.detailed||e.dispatch({effects:hE.of(!0)});let r=e.dom.querySelector(`.cm-frontmatter-preview`)??t,a=r.querySelector(`[data-frontmatter-properties]`)??i,o=r.querySelector(`[data-frontmatter-summary-draft] input`);if(o){o.focus();return}let s=UE(e,(t,n)=>{NE(e,this.sectionId,t,n,!0)});a.appendChild(s),s.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(n)}{let a=document.createElement(`button`);a.type=`button`,a.setAttribute(`aria-label`,`Add tag`),a.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,a.appendChild(KE());let o=document.createElement(`span`);o.textContent=`Add tag`,a.appendChild(o),a.addEventListener(`click`,r=>{r.preventDefault(),r.stopPropagation(),bE.set(e.dom,!0),this.detailed||e.dispatch({effects:hE.of(!0)});let a=e.dom.querySelector(`.cm-frontmatter-preview`)??t,o=a.querySelector(`[data-frontmatter-properties]`)??i;if(n){Array.from(a.querySelectorAll(`[data-frontmatter-field="value"]`)).find(e=>e.dataset.frontmatterProperty===n)?.focus();return}let s=a.querySelector(`[data-frontmatter-tag-draft] input`);if(s){s.focus();return}let c=RE(e,a,`category`,t=>{yE.set(e,{kind:`tag`,key:`category`}),NE(e,this.sectionId,[`category`],[t])});o.appendChild(c),c.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(a)}{let t=document.createElement(`button`);t.type=`button`,t.setAttribute(`aria-label`,`Edit YAML`),t.setAttribute(`data-testid`,`editor-property-edit-yaml`),t.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`;let n=document.createElement(`span`);n.textContent=`Edit YAML`,t.appendChild(n),t.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation();let{sections:n}=e.state.field(wT),r=n.find(e=>e.id===this.sectionId&&e.type===`frontmatter`)||n.find(e=>e.type===`frontmatter`);r&&(e.dispatch({selection:{anchor:r.from},effects:_E.of(!0),scrollIntoView:!0}),e.focus())}),t.addEventListener(`keydown`,t=>{(t.key===`ArrowDown`||t.key===`Tab`&&!t.shiftKey)&&(t.preventDefault(),xE(e))}),r.appendChild(t)}t.appendChild(r)}return t}destroy(e){CE.get(e)?.forEach(e=>e()),CE.delete(e)}},$E=class extends Or{detailed;constructor(e=!1){super(),this.detailed=e}eq(e){return this.detailed===e.detailed}ignoreEvent(){return!0}toDOM(e){let t=document.createElement(`div`);t.className=`cm-frontmatter-preview py-2 font-sans select-none`;let n=document.createElement(`div`);n.className=`text-xs font-medium text-muted-foreground mb-1.5 px-0.5`,n.textContent=`Properties`,t.appendChild(n);let r=document.createElement(`div`);r.className=`flex flex-wrap items-center gap-x-3 gap-y-1`,r.dataset.frontmatterActions=`true`;let i=document.createElement(`button`);i.type=`button`,i.setAttribute(`aria-label`,`Add property`),i.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,i.appendChild(KE());let a=document.createElement(`span`);a.textContent=`Add property`,i.appendChild(a),i.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),bE.set(e.dom,!0),e.dispatch({effects:hE.of(!0)}),yE.set(e,{kind:`key`,key:`property`}),NE(e,`new`,[`property`],``,!0);let r=(e.dom.querySelector(`.cm-frontmatter-preview`)??t).querySelector(`[data-frontmatter-row="property"] [data-frontmatter-field="key"]`);r?.focus(),r?.select()}),i.addEventListener(`keydown`,t=>{(t.key===`ArrowDown`||t.key===`Tab`&&!t.shiftKey)&&(t.preventDefault(),xE(e))}),r.appendChild(i);let o=document.createElement(`button`);o.type=`button`,o.setAttribute(`aria-label`,`Add metric`),o.setAttribute(`data-testid`,`editor-add-metric-note`),o.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,o.appendChild(KE());let s=document.createElement(`span`);s.textContent=`Add metric`,o.appendChild(s),o.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),bE.set(e.dom,!0),this.detailed||e.dispatch({effects:hE.of(!0)});let r=e.dom.querySelector(`.cm-frontmatter-preview`)??t,i=r.querySelector(`[data-frontmatter-metric-draft] input`);if(i){i.focus();return}let a=HE(e,r,e.state.facet(lE)?.()??null,(t,n)=>{NE(e,`new`,t,n,!0)});r.appendChild(a),kE(r,a),a.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(o);let c=document.createElement(`button`);c.type=`button`,c.setAttribute(`aria-label`,`Add summary`),c.setAttribute(`data-testid`,`editor-add-summary-note`),c.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,c.appendChild(KE());let l=document.createElement(`span`);l.textContent=`Add summary`,c.appendChild(l),c.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),bE.set(e.dom,!0),this.detailed||e.dispatch({effects:hE.of(!0)});let r=e.dom.querySelector(`.cm-frontmatter-preview`)??t,i=r.querySelector(`[data-frontmatter-summary-draft] input`);if(i){i.focus();return}let a=UE(e,(t,n)=>{NE(e,`new`,t,n,!0)});r.appendChild(a),kE(r,a),a.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(c);let u=document.createElement(`button`);u.type=`button`,u.setAttribute(`aria-label`,`Add tag`),u.className=`inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground px-1 py-1 cursor-pointer transition-colors select-none`,u.appendChild(KE());let d=document.createElement(`span`);return d.textContent=`Add tag`,u.appendChild(d),u.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),this.detailed||e.dispatch({effects:hE.of(!0)});let r=e.dom.querySelector(`.cm-frontmatter-preview`)??t,i=r.querySelector(`[data-frontmatter-tag-draft] input`);if(i){i.focus();return}let a=RE(e,r,`category`,t=>{yE.set(e,{kind:`tag`,key:`category`}),NE(e,`new`,[`category`],[t],!0)});r.appendChild(a),kE(r,a),a.querySelector(`input`)?.focus(),e.requestMeasure()}),r.appendChild(u),t.appendChild(r),t}};function eD(e){let t=new _i,{sections:n}=e.field(wT),r=e.facet(dE),i=!1;for(let a of n){if(a.type!==`frontmatter`)continue;if(i=!0,!r){let n=a.to<e.doc.length?a.to+1:a.to;t.add(a.from,n,Vr.replace({block:!0}));continue}let n=e.field(gE);if(!e.readOnly&&e.field(vE))continue;let o=e.doc.sliceString(a.from,a.to),s=e.facet(fE);t.add(a.from,a.to,Vr.replace({widget:new QE(a.id,o,e.readOnly,n,s),block:!0}))}return r&&!i&&!e.readOnly&&t.add(0,0,Vr.widget({widget:new $E(e.field(gE)),side:-1,block:!0})),t.finish()}var tD=[gE,vE,ci.define({create(e){return eD(e)},update(e,t){return t.docChanged||t.reconfigured||t.selection||t.effects.some(e=>e.is(uE)||e.is(hE)||e.is(_E))?eD(t.state):e},provide:e=>[kr.decorations.from(e),kr.atomicRanges.of(t=>t.state.facet(dE)?Vr.none:t.state.field(e))]}),kr.updateListener.of(e=>{let t=e.state.field(gE);t===e.startState.field(gE)?bE.get(e.view.dom)===!0&&!t&&queueMicrotask(()=>{e.view.state.field(gE)===!1&&e.view.dispatch({effects:hE.of(!0)})}):e.transactions.some(e=>e.effects.some(e=>e.is(hE)))?bE.set(e.view.dom,t):bE.get(e.view.dom)===!0&&!t&&queueMicrotask(()=>{e.view.state.field(gE)===!1&&e.view.dispatch({effects:hE.of(!0)})})}),di.highest(Sr.of([{key:`Mod-;`,run(e){return!e.state.readOnly&&(SE(e),!0)}},{key:`ArrowUp`,run(e){if(e.state.readOnly||e.state.field(vE)||!e.state.facet(dE))return!1;let{head:t}=e.state.selection.main,{sections:n}=e.state.field(wT),r=n.find(e=>e.type===`frontmatter`);if(!r)return!1;let i=e.state.doc.lineAt(t),a=e.state.doc.lineAt(r.to);if(i.number>a.number+1)return!1;let o=e.dom.querySelectorAll(`.cm-frontmatter-preview input[data-frontmatter-field]:not([disabled])`);if(o.length===0){let t=e.dom.querySelector(`.cm-frontmatter-preview button[aria-label="Add property"]`);if(t)return t.focus(),!0;let n=e.dom.querySelector(`.cm-frontmatter-preview button[aria-label="Show property details"]`);return n?(n.focus(),!0):!1}let s=o[o.length-1];return s.focus(),s.select?.(),!0}}]))],nD=/^(#{1,6}) /,rD=/\*\*([^*\n]+)\*\*/g,iD=/(?<!\*)\*([^*\n]+)\*(?!\*)/g,aD=[1,2,3,4,5,6].map(e=>Vr.line({attributes:{class:`cm-md-heading cm-md-heading-${e}`}})),oD=Vr.replace({}),sD=Vr.mark({class:`cm-md-bold font-bold`}),cD=Vr.mark({class:`cm-md-italic italic`});function lD(e){let t=new _i,{sections:n}=e.field(wT),r=e.selection.main.head;for(let i of n)if(i.type===`markdown`)for(let n=i.startLine;n<=i.endLine;n++){let i=e.doc.line(n),a=r>=i.from&&r<=i.to,o=i.text.match(nD);if(o){let e=o[1].length;t.add(i.from,i.from,aD[e-1]),a||t.add(i.from,i.from+o[0].length,oD)}if(!a){let e;for(rD.lastIndex=0;(e=rD.exec(i.text))!==null;){let n=i.from+e.index,r=n+e[0].length;t.add(n,n+2,oD),t.add(n+2,r-2,sD),t.add(r-2,r,oD)}for(iD.lastIndex=0;(e=iD.exec(i.text))!==null;){let n=i.from+e.index,r=n+e[0].length;t.add(n,n+1,oD),t.add(n+1,r-1,cD),t.add(r-1,r,oD)}}}return t.finish()}var uD=ci.define({create(e){return lD(e)},update(e,t){return t.docChanged||t.selection?lD(t.state):e},provide:e=>kr.decorations.from(e)}),dD=kr.baseTheme({".cm-md-heading-1":{fontSize:`1.3em`,fontWeight:`bold`},".cm-md-heading-2":{fontSize:`1.2em`,fontWeight:`bold`},".cm-md-heading-3":{fontSize:`1.1em`,fontWeight:`bold`}});function fD(){return[uD,dD]}function pD(e){return/^\|[\s:]*-+[\s:]*(\|[\s:]*-+[\s:]*)*\|$/.test(e.trim())}function mD(e){let t=e.trim();return(t.startsWith(`|`)&&t.endsWith(`|`)?t.slice(1,-1):t).split(`|`).map(e=>e.trim())}var hD=class extends Or{head;rows;constructor(e,t){super(),this.head=e,this.rows=t}eq(e){return this.head.length!==e.head.length||this.rows.length!==e.rows.length?!1:this.head.every((t,n)=>t===e.head[n])}toDOM(){let e=document.createElement(`div`);e.className=`cm-table-preview my-2 overflow-auto border border-border/80 rounded-lg`;let t=document.createElement(`table`);t.className=`w-full text-xs font-mono border-collapse`;let n=document.createElement(`thead`),r=document.createElement(`tr`);r.className=`border-b border-border bg-muted/40 text-muted-foreground text-left`;for(let e of this.head){let t=document.createElement(`th`);t.className=`py-1.5 px-3 font-semibold`,t.textContent=e,r.appendChild(t)}n.appendChild(r),t.appendChild(n);let i=document.createElement(`tbody`);for(let e of this.rows){let t=document.createElement(`tr`);t.className=`border-b border-border/40 hover:bg-muted/20`;for(let n of e){let e=document.createElement(`td`);e.className=`py-1.5 px-3 text-foreground`,e.textContent=n,t.appendChild(e)}i.appendChild(t)}return t.appendChild(i),e.appendChild(t),e}};function gD(e,t){let n=[];for(let r=t.startLine;r<=t.endLine;r++){if(!e.doc.line(r).text.trim().startsWith(`|`))continue;let t=n[n.length-1];t&&t.toLine===r-1?t.toLine=r:n.push({fromLine:r,toLine:r})}for(let t of n){let n=[];for(let r=t.fromLine;r<=t.toLine;r++)n.push(e.doc.line(r).text);if(!(n.length<2||!pD(n[1].trim())))return{head:mD(n[0]),rows:n.slice(2).map(mD),fromLine:t.fromLine,toLine:t.toLine}}return null}function _D(e){let t=new _i,{sections:n}=e.field(wT),r=e.selection.main.head;for(let i of n){if(i.type!==`markdown`)continue;let n=gD(e,i);if(!n)continue;let a=e.doc.line(n.fromLine).from,o=e.doc.line(n.toLine).to;r>=a&&r<=o||t.add(a,o,Vr.replace({widget:new hD(n.head,n.rows),block:!0}))}return t.finish()}var vD=[ci.define({create(e){return _D(e)},update(e,t){return t.docChanged||t.selection?_D(t.state):e},provide:e=>kr.decorations.from(e)})],yD=/\[([^\]]*)\]\((https?:\/\/[^)\s]+)\)/g,bD=/https?:\/\/\S+/g,xD=/`[^`\n]*`/g,SD=/[.,;:!?)\]}>'"]$/;function CD(e){let t=e.match(/[?&]v=([a-zA-Z0-9_-]{11})/);if(t)return t[1];let n=e.match(/youtu\.be\/([a-zA-Z0-9_-]+)/);if(n)return n[1];let r=e.match(/youtube\.com\/embed\/([a-zA-Z0-9_-]{11})/);return r?r[1]:null}function wD(){let e=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);e.setAttribute(`viewBox`,`0 0 24 24`),e.setAttribute(`fill`,`none`),e.setAttribute(`stroke`,`currentColor`),e.setAttribute(`stroke-width`,`2`),e.setAttribute(`stroke-linecap`,`round`),e.setAttribute(`stroke-linejoin`,`round`),e.setAttribute(`class`,`h-3 w-3`);let t=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.setAttribute(`d`,`M15 3h6v6`),e.appendChild(t);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`line`);n.setAttribute(`x1`,`10`),n.setAttribute(`x2`,`21`),n.setAttribute(`y1`,`14`),n.setAttribute(`y2`,`3`),e.appendChild(n);let r=document.createElementNS(`http://www.w3.org/2000/svg`,`polyline`);return r.setAttribute(`points`,`21 14 21 3 10 3`),e.appendChild(r),e}var TD=class extends Or{label;url;constructor(e,t){super(),this.label=e,this.url=t}eq(e){return this.label===e.label&&this.url===e.url}toDOM(){let e=document.createElement(`span`);e.className=`cm-link-pill`;let t=document.createElement(`span`);t.className=`cm-link-pill-label`,t.textContent=this.label||this.url,e.appendChild(t);let n=document.createElement(`a`);return n.className=`cm-link-pill-open`,n.href=this.url,n.target=`_blank`,n.rel=`noopener noreferrer`,n.title=this.url,n.setAttribute(`aria-label`,`Open ${this.label||this.url} in new tab`),n.appendChild(wD()),e.appendChild(n),e}},ED=class extends Or{videoId;title;constructor(e,t){super(),this.videoId=e,this.title=t}eq(e){return this.videoId===e.videoId&&this.title===e.title}toDOM(){let e=document.createElement(`div`);e.className=`cm-youtube-player`;let t=document.createElement(`iframe`);return t.className=`cm-youtube-player-frame`,t.src=`https://www.youtube-nocookie.com/embed/${encodeURIComponent(this.videoId)}`,t.title=this.title||`YouTube video`,t.setAttribute(`allow`,`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`),t.setAttribute(`allowfullscreen`,``),t.setAttribute(`loading`,`lazy`),e.appendChild(t),e}get block(){return!0}};function DD(e){let t=[],n=[],r;for(xD.lastIndex=0;(r=xD.exec(e.text))!==null;)n.push([r.index,r.index+r[0].length]);let i=e=>n.some(([t,n])=>e>=t&&e<n);for(yD.lastIndex=0;(r=yD.exec(e.text))!==null;)i(r.index)||t.push({from:e.from+r.index,to:e.from+r.index+r[0].length,label:r[1],url:r[2]});for(bD.lastIndex=0;(r=bD.exec(e.text))!==null;){if(i(r.index))continue;let n=r;if(t.some(t=>n.index>=t.from-e.from&&n.index<t.to-e.from))continue;let a=n[0];for(;SD.test(a);)a=a.slice(0,-1);a&&t.push({from:e.from+n.index,to:e.from+n.index+a.length,label:a,url:a})}return t.sort((e,t)=>e.from-t.from)}function OD(e){let t=new _i,{sections:n}=e.field(wT),r=e.selection.main.head,i=e.readOnly;for(let a of n)if((a.type===`markdown`||a.type===`embed`)&&(a.type!==`markdown`||a.subtype!==`table`))for(let n=a.startLine;n<=a.endLine;n++){let a=e.doc.line(n);if(a.text.trim().startsWith(`|`)||!i&&r>=a.from&&r<=a.to)continue;let o=DD(a),s=a.text.trimStart(),c=a.text.length-s.length,l=a.text.length-a.text.trimEnd().length,u=c+(s.match(/^[-*+]\s+/)?.[0].length??0);for(let e of o){let n=o.length===1&&e.from===a.from+u&&e.to===a.to-l?CD(e.url):null;n?t.add(a.from,a.to,Vr.replace({widget:new ED(n,e.label),block:!0})):t.add(e.from,e.to,Vr.replace({widget:new TD(e.label,e.url)}))}}return t.finish()}var kD=[ci.define({create(e){return OD(e)},update(e,t){return t.docChanged||t.selection?OD(t.state):e},provide:e=>kr.decorations.from(e)}),kr.baseTheme({".cm-link-pill":{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`0 5px`,border:`1px solid hsl(var(--border))`,borderRadius:`6px`,backgroundColor:`hsl(var(--muted) / 0.35)`,maxWidth:`100%`},".cm-link-pill-label":{color:`hsl(var(--primary))`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},".cm-link-pill-open":{display:`inline-flex`,alignItems:`center`,flexShrink:`0`,color:`hsl(var(--muted-foreground))`,textDecoration:`none`,cursor:`pointer`},".cm-link-pill-open:hover":{color:`hsl(var(--primary))`},".cm-youtube-player":{width:`100%`,aspectRatio:`16 / 9`,margin:`8px 0`,backgroundColor:`#000`,borderRadius:`6px`,overflow:`hidden`},".cm-youtube-player-frame":{display:`block`,width:`100%`,height:`100%`,border:`none`}})],AD=Zr.define(),jD=ci.define({create(){return new Set},update(e,t){for(let e of t.effects)if(e.is(AD))return e.value;return e}}),MD={runtime:`cm-gutter-runtime`,error:`cm-gutter-error`,warning:`cm-gutter-warning`,info:`cm-gutter-info`},ND=class extends oee{kind;constructor(e){super(),this.kind=e}toDOM(){let e=document.createElement(`div`);return e.className=`cm-unified-gutter-marker ${MD[this.kind]}`,e}},PD=new Map([[`runtime`,new ND(`runtime`)],[`error`,new ND(`error`)],[`warning`,new ND(`warning`)],[`info`,new ND(`info`)]]),FD=[jD,jr({class:`cm-unified-gutter`,markers(e){let t=new _i,n=e.state.field(jD),r=new Map;for(let t of n)t>=1&&t<=e.state.doc.lines&&r.set(t,`runtime`);qr(e.state,t=>{let n=e.state.doc.lineAt(t.from).number;if(r.get(n)===`runtime`)return;let i=r.get(n);(!i||t.severity===`error`&&i!==`error`)&&r.set(n,t.severity)});let i=Array.from(r.keys()).sort((e,t)=>e-t);for(let n of i){let i=e.state.doc.line(n),a=PD.get(r.get(n));a&&t.add(i.from,i.from,a)}return t.finish()},initialSpacer:()=>new ND(`info`)})];function ID(e,t){e.dispatch({effects:AD.of(new Set(t))})}var LD=Zr.define(),RD=Zr.define(),zD=Zr.define(),BD=class extends Or{height;constructor(e){super(),this.height=e}eq(e){return e.height===this.height}toDOM(){let e=document.createElement(`div`);return e.className=`cm-runtime-panel-spacer`,e.style.height=`${this.height}px`,e.style.pointerEvents=`none`,e}get block(){return!0}};function VD(e){let t=new _i,n=Array.from(e.values()).sort((e,t)=>e.afterPos-t.afterPos);for(let e of n){let n=e.expanded?600:500;t.add(e.afterPos,e.afterPos,Vr.widget({widget:new BD(n),block:!0,side:1}))}return t.finish()}ci.define({create(){return new Map},update(e,t){let n=e;for(let e of t.effects)if(e.is(LD))n=new Map(n),n.set(e.value.sectionId,e.value);else if(e.is(RD))n.has(e.value.sectionId)&&(n=new Map(n),n.delete(e.value.sectionId));else if(e.is(zD)){let t=n.get(e.value.sectionId);t&&(n=new Map(n),n.set(e.value.sectionId,{...t,expanded:e.value.expanded}))}return n},provide:e=>kr.decorations.compute([e],t=>VD(t.field(e)))});function HD(e){return`:session{result:${e}}`}function UD(e,t,n){let r=e.field(wT).sections.find(e=>e.id===t);return!r||r.type!==`time`&&r.type!==`log`?null:{from:r.to,insert:`\n\n\`\`\`query:table\n${HD(n)}\n\`\`\``}}function WD(e){let t=e.split(`:`);if(t.length<1||t.length>4)return null;let n=t.map(e=>parseInt(e,10));if(n.some(e=>isNaN(e)))return null;for(;n.length<4;)n.unshift(0);return n}function GD(e,t,n,r){let i=[];return e>0?i.push(e,t,n,r):t>0?i.push(t,n,r):n>0?i.push(n,r):i.push(r),i.map((e,t)=>t===0?String(e):String(e).padStart(2,`0`)).join(`:`)}function KD(e,t,n,r,i,a){let o=e*86400+t*3600+n*60+r,s=[86400,3600,60,1][i]??1;o=Math.max(0,o+a*s);let c=Math.floor(o/86400);o%=86400;let l=Math.floor(o/3600);return o%=3600,[c,l,Math.floor(o/60),o%60]}function qD(e,t){let n=/\b(\d{1,2}(?::\d{2}){1,3})\b/g,r;for(;(r=n.exec(e))!==null;){let e=r.index,n=e+r[0].length;if(t>=e&&t<=n){let i=r[0],a=Math.min(t-e,i.length-1),o=(i.slice(0,a).match(/:/g)||[]).length;return{timeStr:i,startCol:e,endCol:n,digitIndex:4-((i.match(/:/g)||[]).length+1)+o}}}return null}function JD(e,t){let n=e.state.selection.main,r=e.state.doc.lineAt(n.head),i=n.head-r.from,a=qD(r.text,i);if(!a)return!1;let o=WD(a.timeStr);if(!o)return!1;let[s,c,l,u]=KD(o[0],o[1],o[2],o[3],a.digitIndex,t),d=GD(s,c,l,u);return e.dispatch({changes:{from:r.from+a.startCol,to:r.from+a.endCol,insert:d}}),!0}var YD=Sr.of([{key:`Alt-ArrowUp`,run:e=>JD(e,1)},{key:`Alt-ArrowDown`,run:e=>JD(e,-1)}]),XD=[],ZD={duration:`cm-metric-duration`,rep:`cm-metric-rep`,rounds:`cm-metric-rounds`,distance:`cm-metric-distance`,resistance:`cm-metric-resistance`,action:`cm-metric-action`,pace:`cm-metric-pace`,heart_rate:`cm-metric-heart_rate`,power:`cm-metric-power`,calories:`cm-metric-calories`};function QD(e,t){if(e.type!==`time`&&e.type!==`log`||e.contentFrom===void 0||e.contentTo===void 0)return null;let n=t.doc.sliceString(e.contentFrom,e.contentTo);try{return kc().read(n,e.sport).statements}catch{return null}}function $D(e){let t=new _i,{sections:n}=e.field(wT),r=e.selection.main.head,i=e.doc.lineAt(r),a=null;for(let o of n){if(o.type!==`time`&&o.type!==`log`)continue;let n=QD(o,e);if(!n)continue;let s=r>=o.from&&r<=o.to;for(let r=0;r<n.length;r++){let c=n[r],l=o.startLine+1+r;if(l>=o.endLine)break;let u=e.doc.line(l),d=s&&i.number===l;for(let e=0;e<c.metrics.length;e++){let i=c.metrics[e],s=ZD[i.type]||`cm-metric-generic`;t.add(u.from,u.to,Vr.mark({class:`cm-metric-mark ${s}`})),d&&!a&&(a={sectionId:o.id,section:o,lineFrom:u.from,docLine:l,statementIndex:r,statement:c,focusedMetric:i,focusedMetricIndex:e,allStatements:n})}}}return{focus:a,decos:t.finish()}}ci.define({create(e){return $D(e)},update(e,t){return $D(t.state)},provide:e=>kr.decorations.from(e,e=>e.decos)});var eO=class extends Or{queryText;sectionId;widgetType;widgetError;attributes;tokenValues;options;root=null;constructor(e,t,n,r,i,a,o){super(),this.queryText=e,this.sectionId=t,this.widgetType=n,this.widgetError=r,this.attributes=i,this.tokenValues=a,this.options=o}eq(e){return this.queryText===e.queryText&&this.sectionId===e.sectionId&&this.widgetType===e.widgetType&&this.widgetError===e.widgetError&&JSON.stringify(this.attributes??{})===JSON.stringify(e.attributes??{})&&JSON.stringify(this.tokenValues??{})===JSON.stringify(e.tokenValues??{})&&this.options?.readOnly===e.options?.readOnly&&this.options?.executor===e.options?.executor&&this.options?.onOpenNote===e.options?.onOpenNote&&this.options?.noteHref===e.options?.noteHref}toDOM(e){let t=document.createElement(`div`);t.className=`cm-query-block-preview my-2`;let n=(0,Di.createRoot)(t);return this.root=n,n.render((0,G.jsx)(iT,{query:this.queryText,widgetType:this.widgetType,widgetError:this.widgetError,attributes:this.attributes,tokenValues:this.tokenValues,readOnly:this.options?.readOnly,executor:this.options?.executor,onResultSaved:this.options?.onResultSaved,onSaveQuery:t=>{if(this.options?.onSaveQuery)return this.options.onSaveQuery(this.sectionId,t);let n=nO(e,this.sectionId,t);if(!n.ok)throw Error(n.message)},onOpenNote:this.options?.onOpenNote,noteHref:this.options?.noteHref})),t}updateDOM(e,t){return this.root?(this.root.render((0,G.jsx)(iT,{query:this.queryText,widgetType:this.widgetType,widgetError:this.widgetError,attributes:this.attributes,tokenValues:this.tokenValues,readOnly:this.options?.readOnly,executor:this.options?.executor,onResultSaved:this.options?.onResultSaved,onOpenNote:this.options?.onOpenNote,noteHref:this.options?.noteHref,onSaveQuery:e=>{if(this.options?.onSaveQuery)return this.options.onSaveQuery(this.sectionId,e);let n=nO(t,this.sectionId,e);if(!n.ok)throw Error(n.message)}})),!0):!1}destroy(){this.root&&setTimeout(()=>{try{this.root?.unmount()}catch{}},0)}get block(){return!0}};function tO(e,t){let n=new _i,{sections:r,rawContent:i}=e.field(wT),a=e.selection.main.head,o=ro(i).meta,s={...zv(Rv(o)),...t?.tokenValues};for(let i of r){if(i.type!==`query`||a>=i.from&&a<=i.to||i.contentFrom===void 0||i.contentTo===void 0)continue;let r=e.doc.sliceString(i.contentFrom,i.contentTo);n.add(i.from,i.to,Vr.replace({widget:new eO(r,i.id,i.queryType,i.queryError,i.queryAttributes,s,t),block:!0}))}return n.finish()}function nO(e,t,n,r=0){if(e.state.readOnly)return{ok:!1,message:`Cannot modify query source in read-only mode.`};let i=rO(e,t);if(!i||i.contentFrom===void 0||i.contentTo===void 0)return{ok:!1,message:`Query block section not found`};let a=qC(e.state.doc.sliceString(i.contentFrom,i.contentTo),n,r);return e.dispatch({changes:{from:i.contentFrom,to:i.contentTo,insert:a}}),{ok:!0,patchedContent:a}}function rO(e,t){let{sections:n}=e.state.field(wT);return n.find(e=>e.id===t)??null}function iO(e){return[ci.define({create(t){return tO(t,e)},update(t,n){return n.docChanged||n.selection?tO(n.state,e):t},provide:e=>kr.decorations.from(e)})]}var aO={view:`Edit widget`,editing:`Save widget`,error:`Undo changes`};function oO(e,t,n,r){return e===`editing`?n:e===`error`?r:t}function sO(e){return e?`opacity-100 scale-100 rotate-0`:`pointer-events-none opacity-0 scale-75 -rotate-12`}var cO=W.forwardRef(({mode:e,enterEditMode:t,onSave:n,onUndo:r,className:i,type:a=`button`,...o},s)=>{let c=aO[e],l=oO(e,t,n,r);return(0,G.jsx)(`button`,{...o,ref:s,type:a,"aria-label":c,title:c,"data-mode":e,onClick:l,className:hS(`absolute right-2 top-2 inline-flex h-8 w-8 items-center justify-center rounded-full border border-border/80 bg-background/90 shadow-sm backdrop-blur-sm transition-all duration-200 ease-out hover:bg-muted/80 hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer`,e===`view`&&`text-muted-foreground hover:text-foreground`,e===`editing`&&`text-signal-positive hover:text-signal-positive/80`,e===`error`&&`text-signal-caution hover:text-signal-caution/80`,i),children:(0,G.jsxs)(`span`,{className:`relative h-4 w-4`,"aria-hidden":`true`,children:[(0,G.jsx)(fe,{"data-icon-state":`view`,className:hS(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,sO(e===`view`))}),(0,G.jsx)(Be,{"data-icon-state":`editing`,className:hS(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,sO(e===`editing`))}),(0,G.jsx)(O,{"data-icon-state":`error`,className:hS(`absolute inset-0 h-4 w-4 transition-all duration-200 ease-out`,sO(e===`error`))})]})})});cO.displayName=`WidgetEditButton`;var lO=W.forwardRef(({className:e,hasError:t=!1,spellCheck:n=!1,...r},i)=>(0,G.jsx)(`textarea`,{...r,ref:i,spellCheck:n,className:hS(`min-h-[160px] w-full rounded-xl border bg-background px-4 py-3 font-mono text-sm leading-6 text-foreground shadow-sm outline-none transition-colors duration-200 ease-out placeholder:text-muted-foreground/70`,`focus:border-ring focus:ring-2 focus:ring-ring/20`,t?`border-destructive/70 focus:border-destructive focus:ring-destructive/20`:`border-border/70`,e)}));lO.displayName=`EditableMarkdown`;var uO=Zr.define(),dO=ci.define({create:()=>new Set,update(e,t){let n=e;for(let e of t.effects)e.is(uO)&&(n=new Set(n),e.value.editing?n.add(e.value.sectionId):n.delete(e.value.sectionId));return n}});function fO(e){return e.endsWith(`
|
|
82
82
|
`)?e.slice(0,-1):e}function pO(e){return`${e.replace(/\n+$/,``)}\n`}function mO(e){let t=e.trim();if(t.length===0)return{ok:!0,config:{}};try{let e=JSON.parse(t);return!e||Array.isArray(e)||typeof e!=`object`?{ok:!1,config:{},message:`Widget config must be a JSON object.`}:{ok:!0,config:e}}catch(e){return{ok:!1,config:{},message:e instanceof Error?e.message:`Invalid JSON.`}}}function hO(e,t){let{sections:n}=e.state.field(wT);return n.find(e=>e.type===`widget`&&e.id===t)??null}function gO(e,t,n){if(e.state.readOnly)return{ok:!1,config:{},message:`Cannot modify widget source in read-only mode.`};let r=mO(n);if(!r.ok)return r;let i=hO(e,t);return!i||i.contentFrom==null||i.contentTo==null?{ok:!1,config:{},message:`Unable to locate widget source in the editor.`}:(e.dispatch({changes:{from:i.contentFrom,to:i.contentTo,insert:pO(n)}}),r)}function _O(e){return(0,G.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border/70 bg-muted/30 px-4 py-5 text-sm text-muted-foreground`,children:[(0,G.jsxs)(`span`,{className:`font-mono`,children:[`widget:`,e]}),(0,G.jsx)(`span`,{className:`ml-2 opacity-70`,children:`is not registered`})]})}function vO(e,t){return(0,G.jsxs)(`div`,{className:`rounded-xl border border-destructive/30 bg-destructive/5 px-4 py-5 text-sm text-destructive shadow-sm`,children:[(0,G.jsx)(`p`,{className:`font-medium`,children:`Widget config error`}),(0,G.jsxs)(`p`,{className:`mt-1 font-mono text-xs leading-5 text-destructive/90`,children:[`widget:`,e]}),(0,G.jsx)(`p`,{className:`mt-2 font-mono text-xs leading-5 text-destructive/90`,children:t})]})}function yO({widgetName:e,rawContent:t,sectionId:n,registry:r,view:i}){let a=W.useRef(null),o=W.useRef(null),s=W.useRef(null),c=W.useMemo(()=>fO(t),[t]),[l,u]=W.useState(()=>({isEditing:!1,isDirty:!1,error:null,originalMarkdown:c,currentMarkdown:c,hasFocus:!1}));W.useEffect(()=>{u(e=>({...e,isEditing:!1,isDirty:!1,error:null,originalMarkdown:c,currentMarkdown:c}))},[c]),W.useEffect(()=>{if(!l.isEditing)return;let e=window.requestAnimationFrame(()=>{o.current?.focus();let e=o.current?.value.length??0;o.current?.setSelectionRange(e,e)});return()=>window.cancelAnimationFrame(e)},[l.isEditing]);let d=r.get(e),f=W.useMemo(()=>mO(l.originalMarkdown),[l.originalMarkdown]),p=W.useCallback(e=>{u(t=>t.hasFocus===e?t:{...t,hasFocus:e})},[]),m=W.useCallback(()=>{u(e=>({...e,isEditing:!0,isDirty:!1,error:null,currentMarkdown:e.originalMarkdown}))},[]),h=W.useCallback(e=>{let t=gO(i,n,e);if(!t?.ok)return u(e=>({...e,error:t?.message??`Invalid JSON.`})),!1;let r=fO(pO(e));return u({isEditing:!1,isDirty:!1,error:null,originalMarkdown:r,currentMarkdown:r,hasFocus:!1}),!0},[i,n]),g=W.useCallback(()=>{h(o.current?.value??l.currentMarkdown)},[h,l.currentMarkdown]),_=W.useCallback(()=>{u(e=>({...e,isEditing:!1,isDirty:!1,error:null,currentMarkdown:e.originalMarkdown}))},[]),v=W.useCallback(e=>{let t=e.target.value;u(e=>{let n=e.error?mO(t):null;return{...e,currentMarkdown:t,isDirty:t!==e.originalMarkdown,error:n?.ok===!1?n.message:n?.ok?null:e.error}})},[]),y=W.useCallback(()=>{p(!1);let e=o.current?.value;if(e===void 0)return;let t=gO(i,n,e);if(!t?.ok){u(n=>({...n,isDirty:e!==n.originalMarkdown,error:t?.message??`Unable to save widget source.`}));return}let r=fO(pO(e));u({isEditing:!1,isDirty:!1,error:null,originalMarkdown:r,currentMarkdown:r,hasFocus:!1})},[n,i,p]),b=W.useCallback(e=>{let t=e.relatedTarget;t instanceof Node&&a.current?.contains(t)||p(!1)},[p]),x=W.useCallback(e=>{e.key===`Enter`&&!l.isEditing&&(e.preventDefault(),m())},[m,l.isEditing]);W.useEffect(()=>{let e=s.current;if(e)return e.addEventListener(`keydown`,x),()=>e.removeEventListener(`keydown`,x)},[x]);let S=W.useCallback(e=>{e.key===`Escape`?(e.preventDefault(),_()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),g())},[g,_]),C=l.error?`error`:l.isEditing?`editing`:`view`,w=l.hasFocus||l.isEditing||l.error!==null,T;return T=d?f.ok?W.createElement(d,{config:f.config,rawContent:l.originalMarkdown,sectionId:n}):vO(e,f.message):_O(e),(0,G.jsxs)(`div`,{ref:a,"data-widget-section-id":n,"data-widget-mode":C,className:hS(`group relative rounded-2xl border border-transparent bg-background/95 p-3 transition-colors duration-200 ease-out hover:border-border`,l.isEditing&&l.error===null&&`border-signal-positive/40 ring-1 ring-signal-positive/15`,l.error!==null&&`border-destructive/40 ring-1 ring-destructive/15`),onMouseDownCapture:e=>{l.isEditing||e.preventDefault()},onFocusCapture:()=>p(!0),onBlurCapture:b,onKeyDownCapture:x,children:[(0,G.jsx)(cO,{mode:C,enterEditMode:m,onSave:g,onUndo:_,className:hS(`z-10 focus-visible:opacity-100 focus-visible:scale-100 group-focus-within:pointer-events-auto group-focus-within:opacity-100 group-focus-within:scale-100`,w?`pointer-events-auto opacity-100 scale-100`:`pointer-events-none opacity-0 scale-95 group-hover:pointer-events-auto group-hover:opacity-100 group-hover:scale-100`)}),l.isEditing?(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.error!==null&&(0,G.jsxs)(`div`,{"data-testid":`widget-error-inlay`,className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:[`Invalid JSON: `,l.error]}),(0,G.jsx)(lO,{ref:o,"data-testid":`widget-markdown-editor`,value:l.currentMarkdown,onChange:v,onBlur:y,onKeyDown:S,hasError:l.error!==null})]}):(0,G.jsx)(`div`,{ref:s,"data-testid":`widget-preview-surface`,tabIndex:0,onKeyDown:x,children:T})]})}var bO=class extends Or{sectionId;constructor(e){super(),this.sectionId=e}eq(e){return this.sectionId===e.sectionId}toDOM(e){let t=document.createElement(`div`);return t.className=`relative h-0 w-full`,(0,Di.createRoot)(t).render((0,G.jsx)(`div`,{className:`absolute right-0 top-1 z-50`,children:(0,G.jsx)(cO,{mode:`editing`,enterEditMode:()=>{},onSave:()=>{e.dispatch({effects:uO.of({sectionId:this.sectionId,editing:!1})})},onUndo:()=>{e.dispatch({effects:uO.of({sectionId:this.sectionId,editing:!1})})}})})),t}ignoreEvent(){return!1}},xO=class extends Or{widgetName;rawContent;sectionId;registry;root=null;constructor(e,t,n,r){super(),this.widgetName=e,this.rawContent=t,this.sectionId=n,this.registry=r}eq(e){return this.widgetName===e.widgetName&&this.rawContent===e.rawContent&&this.sectionId===e.sectionId}toDOM(e){let t=document.createElement(`div`);return t.className=`cm-widget-block-preview`,t.style.cssText=`display:block; width:100%; min-height:1.5em; outline:none;`,this.root=(0,Di.createRoot)(t),this.root.render(W.createElement(yO,{widgetName:this.widgetName,rawContent:this.rawContent,sectionId:this.sectionId,registry:this.registry,view:e})),t}destroy(){if(this.root){let e=this.root;this.root=null,queueMicrotask(()=>{try{e.unmount()}catch{}})}}ignoreEvent(){return!1}get estimatedHeight(){return 200}};function SO(e,t){let n;try{n=e.field(wT)}catch{return Vr.none}let{sections:r}=n,i=e.field(dO),a=[],o=e.selection.main.head;for(let n of r){if(n.type!==`widget`||!n.widgetName)continue;let r=e.doc;if(n.startLine>r.lines||n.endLine>r.lines)continue;if(i.has(n.id)){a.push(Vr.widget({widget:new bO(n.id),side:1,block:!1}).range(n.from));continue}if(o>=n.from&&o<=n.to)continue;let s=n.contentFrom!=null&&n.contentTo!=null?r.sliceString(n.contentFrom,n.contentTo):``;a.push(Vr.replace({widget:new xO(n.widgetName,s,n.id,t),block:!0}).range(n.from,n.to))}return a.sort((e,t)=>e.from-t.from),Vr.set(a)}function CO(e,t){return e.find(e=>e.type===`widget`&&t.from>=e.from&&t.from<=e.to)??null}function wO(e,t){let{head:n}=e.state.selection.main,r=e.state.doc.lineAt(n),i=Math.max(0,n-r.from),a=Math.min(i,t.length),o=t.from+a;e.dispatch({selection:{anchor:o,head:o},scrollIntoView:!0})}function TO(e){let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t),{sections:r}=e.state.field(wT),i=e.state.field(dO),a=CO(r,n);if(a&&!i.has(a.id))return!1;let o=n.number+1;if(o>e.state.doc.lines)return!1;let s=CO(r,e.state.doc.line(o));return!s||i.has(s.id)?!1:(wO(e,e.state.doc.line(s.startLine)),!0)}function EO(e){let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t),{sections:r}=e.state.field(wT),i=e.state.field(dO),a=CO(r,n);if(a&&!i.has(a.id))return!1;let o=n.number-1;if(o<1)return!1;let s=CO(r,e.state.doc.line(o));return!s||i.has(s.id)?!1:(wO(e,e.state.doc.line(s.endLine)),!0)}var DO=di.high(Sr.of([{key:`ArrowDown`,run:TO},{key:`ArrowUp`,run:EO}]));function OO(e){return[ci.define({create(t){return SO(t,e)},update(t,n){let r=n.effects.some(e=>e.is(uO)),i=!n.startState.selection.eq(n.newSelection);return n.docChanged||r||i?SO(n.state,e):t},provide:e=>kr.decorations.from(e)}),dO,DO]}function kO(e){let t=e?.split(`:`,1)[0]?.toLowerCase();return t===`time`||t===`log`||t===`wod`||t===`whiteboard`?Xc:t===`wql`||t===`query`?_g:null}var AO=new class{_db;constructor(e){this._db=e}get db(){return this._db??Z}async load(){return this.db.getAllEfforts()}async save(e){await this.db.saveEffort(e)}async delete(e){await this.db.deleteEffort(e)}};function jO(){return new zl({storage:AO})}async function MO(e){let t=await Z.getAllEfforts();await e.loadBundled(t.filter(e=>e.registrySource===`bundled`)),FO()}var NO=new Set;function PO(e){return NO.add(e),()=>NO.delete(e)}function FO(){for(let e of NO)e()}var IO=null;function LO(){return IO||=jO(),IO}function RO(e){let t=e.split(/\r?\n\s*\r?\n/).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`)&&!e.startsWith("```")&&!e.startsWith(`|`)&&!e.startsWith(`- `)&&!e.startsWith(`* `));if(t)return t.replace(/^>\s?/,``).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/[`*_~]/g,``).replace(/\s+/g,` `).trim()||void 0}function zO(e){let{meta:t,body:n}=ro(e),r=so(t,`description`),i=so(t,`image`),a;if(typeof i==`string`&&i.trim()){let e=i.trim();(/^https?:\/\//.test(e)||e.startsWith(`/`))&&(a=e)}let o=typeof r==`string`&&r.trim()?r.trim():RO(n);return{...o?{description:o}:{},...a?{image:a}:{}}}function BO(e){return e.split(/[-_\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}var VO={and:!0,or:!0,of:!0,for:!0,to:!0,in:!0,on:!0,at:!0,by:!0,with:!0,the:!0,a:!0,an:!0};function HO(e){let t=e.replace(/\.md$/,``);if(t.toUpperCase()===`README`)return`Overview`;let n=t.replace(/^day-\d+-/,``).split(/[-_]/),r=[];for(let e=0;e<n.length;e++){let t=n[e],i=n[e+1],a=n[e+2],o=n[e-1];if(/^\d{1,2}$/.test(t)&&/^\d{1,2}$/.test(i??``)&&!/^\d+$/.test(o??``)&&!/^\d+$/.test(a??``)){r.push(`${t}.${i}`),e++;continue}if(r.length>0&&VO[t.toLowerCase()]){r.push(t.toLowerCase());continue}r.push(t.charAt(0).toUpperCase()+t.slice(1))}return r.join(` `)}function UO(e,t){if(e!==`notebooks`)return[];let n=new Map,r=e=>{let t=n.get(e);return t||(t={id:e,name:BO(e),categories:[],items:[]},n.set(e,t)),t};for(let[e,n]of Object.entries(t)){let t=e.match(/(?:^|\/)markdown\/notebooks\/([^/]+)\/README\.md$/i);if(t){let e=r(t[1]);e.readme=n,e.categories=lo(n),Object.assign(e,zO(n));continue}let i=e.match(/(?:^|\/)markdown\/notebooks\/([^/]+)\/(\d{4}-\d{2}-\d{2})\/([^/]+\.md)$/);if(i){let[,t,a,o]=i;r(t).items.push({id:o.replace(/\.md$/,``),name:HO(o),content:n,path:e,...a?{date:a}:{}});continue}let a=e.match(/(?:^|\/)markdown\/notebooks\/([^/]+)\/([^/]+\.md)$/);if(!a)continue;let[,o,s]=a;s.toLowerCase()!==`readme.md`&&r(o).items.push({id:s.replace(/\.md$/,``),name:HO(s),content:n,path:e})}for(let e of n.values())e.items.sort((e,t)=>e.date&&t.date&&e.date!==t.date?t.date.localeCompare(e.date):e.date&&!t.date?-1:!e.date&&t.date?1:e.id.localeCompare(t.id));return Array.from(n.values()).filter(({items:e,readme:t})=>e.length>0||t!==void 0).sort((e,t)=>e.name.localeCompare(t.name))}function WO(e){return UO(`notebooks`,e)}var GO=null,KO=[];async function qO(){let e=await sk();return GO!==e&&(GO=e,KO=WO(e)),KO}function JO(e,t,n){return e?.items.find(e=>(e.date??``)===t&&e.id===n)}var YO=null,XO=null;function ZO(){return YO||=Z.getAllBlockIndex().then(e=>e.filter(e=>e.isStatic===!0)).catch(e=>{throw YO=null,e}),YO}function QO(){YO=null,XO=null}function $O(e){let t=new Map;for(let n of e)for(let e of La(n.rawContent).filter(e=>e.type===`frontmatter`).flatMap(e=>uo(e.displayContent))){let r=t.get(e);r?r.add(n.id):t.set(e,new Set([n.id]))}return t}function ek(){return XO||=Z.getAllNotes().then(async e=>{let t=$O(e.filter(e=>e.seedOrigin===`seed`));try{let e=await qO();for(let n of e)for(let e of n.categories){let r=t.get(e);r?r.add(n.id):t.set(e,new Set([n.id]))}}catch{}return t}),XO}async function tk(){let e=LO();return e.isInitialized()||await e.loadBundled(),e.list()}mw(`discipline`,{load:async()=>{try{return lw((await tk()).map(e=>e.baseAttributes?.discipline).filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>({value:e.trim(),label:e.trim()})),cw(il))}catch{return cw(il)}},cache:{ttlMs:6e4},open:!1,emptyText:`No disciplines available`}),mw(`effort`,{load:async()=>{try{return lw((await tk()).filter(e=>e.slug).map(e=>({value:e.slug,label:e.label||e.slug})),[]).sort((e,t)=>e.value.localeCompare(t.value))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No efforts indexed yet — type one to filter`}),mw(`intensity`,{load:async()=>{try{return lw((await tk()).map(e=>e.baseAttributes?.intensityTier).filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>({value:e.trim(),label:e.trim()})),cw(nl))}catch{return cw(nl)}},cache:{ttlMs:6e4},open:!1,emptyText:`No intensity tiers indexed yet`}),mw(`type`,{load:async()=>{try{return lw(gte(await ZO()).map(e=>({value:e,label:e})),cw(sw))}catch{return cw(sw)}},cache:{ttlMs:3e5},open:!1,emptyText:`No indexed block types yet`}),mw(`notebook`,{load:async()=>hte(await ZO()).map(e=>({value:e,label:e})),cache:`static`,open:!1,emptyText:`No notebooks in the static corpus`}),mw(`tag`,{load:async()=>{let e=await ek(),t=Array.from(e.keys()),n=[];try{n=(await Z.getAllTags()).map(e=>e.label)}catch{}return _te(n,t).map(e=>({value:e,label:e}))},cache:{ttlMs:3e4},open:!0,emptyText:`No tags yet — type one to filter by it`});for(let e of[`domain`,`format`,`equipment`,`quality`,`intent`])mw(e,{load:async()=>{try{return(await Z.getTags(e)).map(e=>({value:e.label,label:e.label}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No ${e}s indexed yet`});mw(`origin`,{load:async()=>{try{let e=await Z.getAllEfforts(),t=new Set;for(let n of e)n.registrySource&&t.add(n.registrySource);return Array.from(t).sort().map(e=>({value:e,label:e}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No effort origins indexed yet — type one to filter`}),(async()=>{try{let e=await Z.getAllTagTypes();for(let t of e)hw(t.name)||mw(t.name,{load:async()=>{try{return(await Z.getTags(t.name)).map(e=>({value:e.label,label:e.label}))}catch{return[]}},cache:{ttlMs:6e4},open:!0,emptyText:`No ${t.label}s indexed yet`})}catch{}})();var nk=null,rk=null,ik=new Set;function ak(){for(let e of ik)e()}async function ok(){let e=await Z.getSeedContent(),t={};for(let{path:n,raw:r}of e)t[n]=r;return t}function sk(){return rk||=ok().then(e=>(Object.keys(e).length>0&&mS(`corpusReady`),nk=e,ak(),e)).catch(e=>{throw rk=null,e}),rk}function ck(){nk=null,rk=null,QO(),sk()}function lk(e){return ik.add(e),()=>ik.delete(e)}function uk(){return nk}function dk(){let e=(0,W.useSyncExternalStore)(lk,uk);return(0,W.useEffect)(()=>{sk()},[]),e}var fk=!1;function pk(){if(fk||typeof BroadcastChannel>`u`)return;fk=!0;let e=new BroadcastChannel(Oy);e.onmessage=()=>ck()}var mk=200,hk=1e6,gk=500,_k=50,vk=6e4,yk=3e4,bk=750,xk=`wodwiki-sync`,Sk={attachments:`data`};function Ck(e,t){let n=e instanceof Error?e.message:String(e);return t&&(n=n.split(t).join(`••••••`)),n||`Sync failed`}function wk(e){let t=0;for(let n of e.ops){if(t+=32,n.op!==`put`)continue;let e=Sk[n.store],r=n.value,i=e&&typeof r==`object`&&r&&!Array.isArray(r)?Reflect.get(r,e):void 0;t+=typeof i==`string`?i.length:i instanceof ArrayBuffer?Math.ceil(i.byteLength/3)*4+64:JSON.stringify(n.value)?.length??0}return t}var Tk=class{local;settings;connect;db;stopped=!1;chain=Promise.resolve();timers=[];reconciled=!1;halted=!1;retryAt=0;debounceTimer;unsubscribeOutbox;onOnline;onVisible;constructor(e,t,n){this.local=e,this.settings=t,this.connect=n}syncNow(){let e=this.chain.then(()=>this.cycle(!0));return this.chain=e.then(()=>void 0,()=>void 0),e}restoreNow(){let e=this.chain.then(async()=>{if(this.stopped)throw Error(`Restore engine is stopped`);if((await this.local.snapshotAllRows()).some(e=>e.rows.length>0)||(await this.local.readOutbox(0,1)).length>0)throw Error(`Restore requires an empty isolated local database`);let e=await this.remote(),t=await Hb(e);if(t===`empty`||t.kind!==`current`||t.schemaVersion!==32)throw Error(`Restore requires a provisioned v32 backup. Migrate older backups with the CLI first.`);let n=0;for(;n<t.rev;){let r=await qb(e,n,gk);if(r.length===0)break;if(r[r.length-1].rev>t.rev)throw Error(`Backup changed during restore. Freeze its writers and retry with a fresh local database.`);n=r[r.length-1].rev,await this.local.applySyncMutations(r.map(e=>e.mutation),n,this.cursorKey())}await this.local.validateSyncState();let r=await Hb(e);if(r===`empty`||r.kind!==`current`||r.schemaVersion!==t.schemaVersion||r.rev!==t.rev||n!==t.rev)throw Error(`Backup changed during restore. Freeze its writers and retry with a fresh local database.`);await this.local.setSyncState(this.bootstrappedKey(),{done:!0}),this.reconciled=!0});return this.chain=e.then(()=>void 0,()=>void 0),e}start(){let e=e=>{this.enqueue(()=>this.cycle(!1,e))};return this.onOnline=()=>{e(`full`)},this.onVisible=()=>{typeof document<`u`&&!document.hidden&&e(`full`)},typeof window<`u`&&(window.addEventListener(`online`,this.onOnline),typeof document<`u`&&document.addEventListener(`visibilitychange`,this.onVisible)),this.timers.push(setInterval(()=>{e(`full`)},vk)),this.unsubscribeOutbox=ox(()=>{this.scheduleUpload()}),e(`full`),()=>{this.stop()}}async stop(){this.stopped=!0;for(let e of this.timers)clearInterval(e);this.timers=[],clearTimeout(this.debounceTimer),this.debounceTimer=void 0,typeof window<`u`&&this.onOnline&&window.removeEventListener(`online`,this.onOnline),typeof document<`u`&&this.onVisible&&document.removeEventListener(`visibilitychange`,this.onVisible),this.onOnline=void 0,this.onVisible=void 0,this.unsubscribeOutbox?.(),this.unsubscribeOutbox=void 0,await this.chain.catch(()=>void 0),await this.db?.close().catch(()=>void 0),this.db=void 0}scheduleUpload(){this.stopped||this.debounceTimer!==void 0||(this.debounceTimer=setTimeout(()=>{this.debounceTimer=void 0,this.stopped||this.enqueue(()=>this.cycle(!1,`upload`))},bk))}enqueue(e){this.chain=this.chain.then(e,e),this.chain.catch(()=>{})}async cycle(e=!1,t=`full`){if(this.stopped||this.halted||!e&&Date.now()<this.retryAt)return;let n=globalThis.navigator?.locks;try{n?await n.request(xk,()=>this.cycleInner(e,t)):await this.cycleInner(e,t)}catch(e){this.retryAt=Date.now()+yk,Zx(Ck(e,this.settings.authToken))}}async cycleInner(e,t){let n=[];if(t===`full`){try{await this.ensureReconciled()}catch(e){n.push(e)}try{await this.pullOnce()}catch(e){n.push(e)}}try{await this.uploadOnce()}catch(e){n.push(e)}if(n.length>0)throw n[0]}async remote(){return this.db||=this.connect?.()??tS(_e({url:this.settings.url,authToken:this.settings.authToken})),this.db}cursorKey(){return`cursor:${this.settings.url}`}watermarkKey(){return`watermark:${this.settings.url}`}bootstrappedKey(){return`bootstrapped:${this.settings.url}`}bootstrapRunKey(){return`bootstrap-run:${this.settings.url}`}async ensureReconciled(){if(this.reconciled)return;let e=await this.remote(),t=await Hb(e);if(t!==`empty`&&t.kind===`unknown`){let e=`Backup database contains unrelated tables and no WOD Wiki schema; refusing to adopt it. Point the backup setting at a fresh database.`;throw this.halted=!0,uS(e),Error(e)}let n=t===`empty`?0:t.schemaVersion;if(n>32){let e=`Backup database schema is newer than this app supports (v${n} > v32). Update the app to sync.`;throw this.halted=!0,uS(e),Error(e)}if(t===`empty`)await Ub(e,32);else if(t.kind===`legacy`||n<32){let e=`Backup schema v${n} requires an explicit CLI migration into a fresh v32 target. The old database was left untouched.`;throw this.halted=!0,uS(e),Error(e)}this.reconciled=!0}async bootstrapSnapshot(){let e=await this.remote(),t=await this.local.captureSyncBootstrap(this.bootstrapRunKey());for(let n of t)await Kb(e,[n],{expectSchema:32});await this.local.setSyncState(this.bootstrappedKey(),{done:!0}),await(await this.local.open()).delete(`sync_state`,this.bootstrapRunKey())}async uploadOnce(){if(!this.reconciled||this.stopped||this.halted||!await this.local.getSyncState(this.bootstrappedKey()))return;let e=this.watermarkKey();if((await this.local.readOutbox((await this.local.getSyncState(e))?.seq??0,1)).length===0)return;let t=Jx(`upload`,`Uploading changes to backup`);try{let t=await this.remote(),n=(await this.local.getSyncState(e))?.seq??0,r=0;for(;;){let i=await this.local.readOutbox(n,_k);if(i.length===0)break;let a=0;for(;a<i.length;){let o=[],s=0,c=0,l=n;for(;a<i.length&&s<mk&&c<hk;){let e=i[a],t=wk(e);if(o.length>0&&(s+e.ops.length>mk||c+t>hk))break;o.push({id:e.id,at:e.at,ops:e.ops}),s+=e.ops.length,c+=t,l=e.seq,a+=1}await Kb(t,o,{expectSchema:32}),r+=o.flatMap(e=>e.ops).filter(e=>e.op===`put`&&(e.store===`notes`||e.store===`efforts`)).length,n=l,await this.local.setSyncState(e,{seq:n}),await this.local.ackOutbox(n)}if(i.length<_k)break}r>0&&Yx({source:`turso backup`,added:r,updated:0})}finally{t()}}async pullOnce(){if(!this.reconciled||this.stopped||this.halted)return;let e=this.cursorKey(),t=(await this.local.getSyncState(e))?.rev??0,n=Jx(`download`,`Syncing from backup`);try{let n=await this.remote(),r=t,i=0,a=0;for(;;){let t=await qb(n,r,gk);if(t.length===0){if(!await this.local.getSyncState(this.bootstrappedKey())){await this.bootstrapSnapshot();continue}break}let o=t[t.length-1].rev,s=await this.local.applySyncMutations(t.map(e=>e.mutation),o,e);i+=s.added,a+=s.updated,r=o}if(i+a>0){Yx({source:`turso backup`,added:i,updated:a}),ck();let e=LO();e.isInitialized()&&await MO(e)}}finally{n()}}},Ek=`wodwiki.dataSettings.v1`;function Dk(){let e=Pk();return e.state!==`invalid`&&e.localDbName?e.localDbName:Jb}function Ok(e,t){let n=e=>{let t=e.trim();try{let e=new URL(t);return`${e.hostname===`[::1]`?`::1`:e.hostname}${e.port?`:${e.port}`:``}${e.pathname.replace(/\/+$/,``)}`}catch{return t}};return n(e)===n(t)}function kk(e){return typeof e==`string`&&/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(e)}var Ak={"libsql:":!0,"https:":!0,"wss:":!0};function jk(e,t){let n;try{n=new URL(e.trim())}catch{return`That is not a valid URL.`}if(n.protocol===`http:`||n.protocol===`ws:`){if(n.hostname!==`localhost`&&n.hostname!==`127.0.0.1`&&n.hostname!==`[::1]`&&n.hostname!==`::1`)return`Plain http:// is only allowed for a local smoke server (localhost / 127.0.0.1).`}else if(!Ak[n.protocol])return`Unsupported protocol "${n.protocol}" — use libsql:// or https://.`;if(n.username||n.password)return`The URL must not embed credentials — put the token in the token field.`;if(n.search)return`The URL must not contain a query string.`;if(n.hash)return`The URL must not contain a fragment.`;if(!t||!t.trim())return`A database token is required.`}function Mk(e,...t){let n=e instanceof Error?e.message:String(e);for(let e of t)e&&(n=n.split(e).join(`••••••`));return Error(n)}function Nk(){try{return localStorage.getItem(Ek)}catch{return null}}function Pk(){let e=Nk();if(e===null)return{state:`indexed-db`};let t;try{t=JSON.parse(e)}catch{return{state:`invalid`,raw:e,error:`Saved data settings are not valid JSON.`}}if(!t||typeof t!=`object`||Array.isArray(t))return{state:`invalid`,raw:e,error:`Saved data settings have an unexpected shape.`};if(!(`kind`in t))return{state:`invalid`,raw:e,error:`Saved data settings have no kind.`};let n=t.kind,r=`localDbName`in t?t.localDbName:void 0;if(r!==void 0&&!kk(r))return{state:`invalid`,raw:e,error:`Saved data settings have an invalid localDbName.`};let i=r===void 0?{}:{localDbName:r};if(n===`indexed-db`)return{state:`indexed-db`,...i};if(n!==`turso`)return{state:`invalid`,raw:e,error:`Saved data settings have an unknown kind "${String(n)}".`};if(!(`url`in t)||!(`authToken`in t))return{state:`invalid`,raw:e,error:`Saved Turso settings are missing the URL or token.`};let a=t.url,o=t.authToken;if(typeof a!=`string`||typeof o!=`string`)return{state:`invalid`,raw:e,error:`Saved Turso settings are missing the URL or token.`};let s=jk(a,o);return s?{state:`invalid`,raw:e,error:s}:{state:`turso`,url:a,authToken:o,...i}}async function Fk(e){let t=tS(_e({url:e.url.trim(),authToken:e.authToken}));try{await t.query(`SELECT 1`);let e=Error(`verifyTursoTarget: deliberate rollback`);try{await t.transaction(async t=>{throw await t.exec(`CREATE TABLE IF NOT EXISTS "_wodwiki_write_check" ("v" TEXT)`),await t.exec(`INSERT INTO "_wodwiki_write_check" ("v") VALUES (?)`,[crypto.randomUUID()]),e})}catch(t){if(t!==e)throw t}}finally{await t.close().catch(()=>void 0)}}var Ik;async function Lk(e){if(Ik)throw Error(`A connect is already running — wait for it to finish.`);let t=jk(e.url,e.authToken);if(t)throw Error(t);Ik=(async()=>{try{await Fk(e)}catch(t){throw Mk(t,e.authToken)}let t=Pk(),n=t.state!==`invalid`&&t.localDbName?{localDbName:t.localDbName}:{};localStorage.setItem(Ek,JSON.stringify({kind:`turso`,url:e.url.trim(),authToken:e.authToken,...n}))})();try{await Ik}finally{Ik=void 0}}async function Rk(e){let t=jk(e.url,e.authToken);if(t)throw Error(t);try{await Fk(e)}catch(t){throw Mk(t,e.authToken)}}function zk(e){if(!kk(e))throw Error(`A valid local database name is required.`);localStorage.setItem(Ek,JSON.stringify({kind:`indexed-db`,localDbName:e}))}function Bk(){let e=Pk(),t=e.state!==`invalid`&&e.localDbName?{localDbName:e.localDbName}:{};localStorage.setItem(Ek,JSON.stringify({kind:`indexed-db`,...t}))}var Vk=Nk();typeof window<`u`&&window.addEventListener(`storage`,e=>{(e.key===`wodwiki.dataSettings.v1`||e.key===null)&&e.newValue!==Vk&&window.location.reload()});var Hk=t({DATA_SETTINGS_KEY:()=>Ek,IndexedDBStorage:()=>hx,StorageService:()=>Ax,getActiveLocalDbName:()=>Dk,profileService:()=>Wk,readAllLocalRows:()=>rA,readDataSettings:()=>Pk,readUnsentEdits:()=>nA,startBackgroundStorageSync:()=>eA,stopBackgroundStorageSync:()=>tA,storage:()=>qk,storageBackend:()=>Uk,storageService:()=>Z,whenStorageReady:()=>Xk}),Uk=`indexed-db`,Wk=Ix(`indexed-db`);function Gk(){return new hx({dbName:Dk(),getUserId:()=>Wk.currentSync()?.id,onUpgradeStart:e=>lS(e,32)})}var Kk=Gk(),qk={readonly(e){return Kk.readonly(e)},readwrite(e){return Kk.readwrite(e)},transaction(e,t,n){return Kk.transaction(e,t,n)},async queryDomain(e){return Kk.queryDomain?.(e)},wipe(){return Kk.wipe()},close(){return Kk.close()}},Z=new Ax(qk),Jk;async function Yk(){try{await Z.ensureDefaultTagTypes()}catch{}}function Xk(){return Jk||(Jk=(async()=>{try{let e=globalThis.indexedDB;if(e&&typeof e.databases==`function`){let t=Dk(),n=(await e.databases().catch(()=>[])).find(e=>e.name===t);if(n&&typeof n.version==`number`){if(n.version>32){let e=`local database schema v${n.version} is newer than this app supports (v32); refusing to downgrade`;throw uS(e),Error(e)}n.version<32&&cS(`Checking local database schema v${n.version}…`)}}await Kk.open(),sS(32),await Yk()}catch(e){throw Jk=void 0,aS().phase!==`error`&&uS(e instanceof Error?e.message:String(e)),e}})(),Jk)}var Zk,Qk,$k;function eA(){if(!Zk){if(!(Kk instanceof hx))Zk={stop:()=>{Zk=void 0}};else{let e=Pk();if(e.state===`invalid`){let t=`Saved backup settings are invalid: ${e.error}`;Zx(t),uS(t),Zk={stop:()=>{Zk=void 0}}}else if(e.state===`turso`){let t=new Tk(Kk,e);$k=t;let n=t.start();Zk={stop:()=>{n(),$k===t&&($k=void 0),Zk=void 0}}}else Zk={stop:()=>{Zk=void 0}}}Qk=()=>{Zk?.stop(),Qk=void 0}}return Qk}async function tA(){if(!Zk)return!1;let e=$k;return Zk.stop(),e&&await e.stop(),e!==void 0}async function nA(){return Kk instanceof hx?Kk.readOutbox(0,2**53-1):[]}async function rA(){return Kk instanceof hx?Kk.snapshotAllRows():[]}var iA={registeredWidgets:Ma},aA=[`notes`,`block_revisions`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`,`sessions`,`events`,`block_index`,`block_efforts`,`block_equipment`,`efforts`,`equipment`];function oA(e){let t=wa(e.links,e.pages),n=Ta(t);return{id:e.note.id,title:e.note.title,slug:n.pageSlug,pageId:n.pageId,journalDate:n.journalDate,placements:t,createdAt:e.note.createdAt,updatedAt:e.note.createdAt,targetDate:e.note.date??e.note.createdAt,rawContent:e.note.rawContent,blocks:e.note.blocks,sourceRevision:e.note.sourceRevision,tags:e.tags.map(e=>e.label),type:e.note.type??`note`,sourceId:e.note.sourceId,notebookId:e.note.notebookId,seedOrigin:e.note.seedOrigin,schemaVersion:1}}function sA(e){if(e?.dateRange)return e.dateRange;if(e?.daysBack!=null){let t=Date.now();return{start:t-e.daysBack*864e5,end:t}}}var cA=class e{db;constructor(e=Z){this.db=e}get persistenceStorage(){return this.db}mode=`history`;capabilities={canWrite:!0,canDelete:!0,canFilter:!0,canMultiSelect:!0,supportsHistory:!0};async getRecords(e){let t=sA(e),n=[];t&&n.push({field:`date`,start:t.start,end:t.end});for(let t of e?.tags??[])n.push({field:`tags`,values:[t]});let r=await this.db.queryDomain(n.length?{plan:`detail`,selection:n}:{plan:`detail`}),i;if(r?.plan===`detail`)i=r.rows.map(oA);else{let e=t?await this.db.getNotesByDateRange(t.start,t.end):await this.db.getAllNotes();i=[...(await this.db.getDetailBatches(e.map(e=>e.id))).values()].map(oA)}return i=i.filter(n=>(!t||n.targetDate>=t.start&&n.targetDate<=t.end)&&(e?.tags??[]).every(e=>n.tags.includes(e))),i.sort((e,t)=>t.targetDate-e.targetDate)}async getRecord(e){let t=await this.resolveStoredNote(e);if(!t)return null;let n=(await this.db.getDetailBatches([t.id])).get(t.id);if(!n)return null;let r=oA(n),i=(await this.db.getSessionsForNote(t.id)).sort((e,t)=>t.createdAt-e.createdAt)[0],a=La(t.rawContent,iA).map(e=>{let n=Object.values(t.blocks).find(t=>t.from===e.from&&t.to===e.to);return n?{...e,id:n.id,version:n.version,scriptBlock:e.scriptBlock?{...e.scriptBlock,id:n.id,version:n.version}:void 0}:e});return{...r,sections:a,results:i?bb(i,await this.db.getEventsByResult(i.id)):void 0}}async cloneRecord(e,t){let n=await this.getRecord(e);if(!n)throw Error(`Source entry not found: ${e}`);let r=t??Date.now();return this.saveRecord({title:n.title,rawContent:n.rawContent,tags:n.tags,targetDate:r,journalDate:gb(new Date(r)),type:`journal`,sourceId:n.id})}async saveRecord(t){let n=Date.now(),r=t.id??(t.type===`playground`?vb(n):tn());if(!t.id&&t.type===`playground`){let e=r;for(let t=1;await this.db.getNote(r);t++){if(t>100)throw Error(`Unable to allocate unique playground timestamp ID`);r=`${e}-${t}`}}await this.db.withTransaction([...aA],async n=>{let i=await n.getNote(r),a=i?t.sourceRevision:0;if(a===void 0)throw new xb(`STALE_SOURCE`,`An expected source revision is required for ${r}`);let o=await new e(n).changedManualTags(r,t.tags),s=t.blocks??(i?.rawContent===t.rawContent?i.blocks:za(t.rawContent,{...iA,sourceRevision:a||1}));await n.saveNoteSource({noteId:r,rawContent:t.rawContent,blocks:s,expectedSourceRevision:a,createdAt:t.createdAt,metadata:{title:t.title,type:t.type,tags:o,targetDate:t.targetDate,sourceId:t.sourceId}});let c=new e(n);await c.updateRelationships(r,{journalDate:t.journalDate,slug:t.slug}),await c.updateTags(r,t.rawContent,o)});let i=await this.getRecord(r);if(!i)throw Error(`Saved note disappeared: ${r}`);return i}async updateRecord(t,n){let r=await this.resolveStoredNote(t);if(!r)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${t}`);await this.db.withTransaction([...aA],async t=>{let i=await t.getNote(r.id);if(!i)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${r.id}`);let a=n.rawContent??i.rawContent;if(n.rawContent!==void 0&&n.expectedSourceRevision===void 0)throw new xb(`STALE_SOURCE`,`An expected source revision is required for ${i.id}`);let o=n.expectedSourceRevision??i.sourceRevision,s=n.tags===void 0?void 0:await new e(t).changedManualTags(i.id,n.tags),c=n.blocks??(a===i.rawContent?i.blocks:za(a,{...iA,sourceRevision:o}));await t.saveNoteSource({noteId:i.id,rawContent:a,blocks:c,expectedSourceRevision:o,metadata:{title:n.title,type:n.type,tags:s,targetDate:n.targetDate,sourceId:n.sourceId}});let l=new e(t);if(await l.updateRelationships(i.id,n),(n.tags!==void 0||a!==i.rawContent)&&await l.updateTags(i.id,a,s),n.results){if(!n.blockId||!n.blockVersion)throw Error(`Recording a result requires its frozen block pin`);let e=await t.getBlockRevision(i.id,n.blockId,n.blockVersion);if(!e||e.kind!==`wod`)throw new xb(`BLOCK_REVISION_NOT_FOUND`,`Pinned workout revision not found`);let r=n.resultId?await t.getSessionById(n.resultId):void 0;if(r&&(r.noteId!==i.id||r.blockId!==n.blockId||r.blockVersion!==n.blockVersion))throw new xb(`RESULT_NOTE_MISMATCH`,`Cannot replace a Session pin`);let a=n.results,o={...r,id:n.resultId??tn(),noteId:i.id,blockId:n.blockId,blockVersion:n.blockVersion,blockContentId:n.blockContentId,origin:n.origin??r?.origin,startTime:a.startTime,endTime:a.endTime,duration:a.duration??0,completed:a.completed,roundsCompleted:a.roundsCompleted,totalRounds:a.totalRounds,repsCompleted:a.repsCompleted,status:`completed`,createdAt:r?.createdAt??a.endTime??Date.now()};if(await t.saveSession(o),a.logs?.length){let e={noteId:o.noteId,resultId:o.id,blockId:o.blockId,blockVersion:o.blockVersion,blockContentId:o.blockContentId,origin:o.origin,pageId:o.pageId,workoutTimestamp:o.endTime};await t.appendEvents(A_(a.logs,e)),await t.finalizeSummaries(o.id,j_(a.logs,e))}}});let i=await this.getRecord(r.id);if(!i)throw Error(`Saved note disappeared: ${r.id}`);return i}async updateRelationships(e,t){for(let n of[`journalDate`,`slug`]){let r=t[n];if(r===void 0)continue;if(!r){for(let t of await this.db.getNotePages(e)){let r=await this.db.getPage(t.pageId);(n===`journalDate`?r?.date:r?.slug&&!r.date)&&await this.db.removeNoteFromPage(e,t.pageId)}continue}let i=await this.resolvePage(e,n,r);await this.db.addNoteToPage(e,i.id)}}async resolvePage(e,t,n){if(t===`journalDate`)return this.db.getOrCreatePageForDate(n);let r=await this.db.getPageBySlug(n);if(r)return r;let i={id:tn(),slug:n,title:(await this.db.getNote(e))?.title,createdAt:Date.now()};return await this.db.savePage(i),i}async resolveTargetPage(e,t){if(t.date)return this.db.getOrCreatePageForDate(t.date);if(t.slug)return this.resolvePage(e,`slug`,t.slug);throw Error(`A placement target needs a date or a slug`)}async addRecordPlacement(e,t){let n=await this.resolvePlacementNoteId(e),r=await this.resolveTargetPage(n,t);await this.db.addNoteToPage(n,r.id);let i=await this.getRecord(n);if(!i)throw Error(`Saved note disappeared: ${n}`);return i}async removeRecordPlacement(e,t){let n=await this.resolvePlacementNoteId(e);await this.db.removeNoteFromPage(n,t);let r=await this.getRecord(n);if(!r)throw Error(`Saved note disappeared: ${n}`);return r}async moveRecordPlacement(e,t,n){let r=await this.resolvePlacementNoteId(e),i=await this.resolveTargetPage(r,n);await this.db.moveNoteBetweenPages(r,t,i.id);let a=await this.getRecord(r);if(!a)throw Error(`Saved note disappeared: ${r}`);return a}async getPageRecords(e){let t=await this.db.getPageBySlug(e);if(!t)return[];let n=await this.db.getPagePlacements(t.id);if(n.length===0)return[];let r=await this.db.getDetailBatches(n.map(e=>e.noteId));return n.map(e=>r.get(e.noteId)).filter(e=>e!==void 0).map(oA)}async resolvePlacementNoteId(e){let t=e.startsWith(`playground/`)?e.slice(11):e,n=await this.db.getNote(e)??(t===e?void 0:await this.db.getNote(t));if(!n)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${e}`);return n.id}async resolveStoredNote(e){let t=e.startsWith(`playground/`)?e.slice(11):e;return await this.db.getNote(e)??(t===e?void 0:await this.db.getNote(t))??await this.db.getNoteBySlug(e)??(t===e?void 0:await this.db.getNoteBySlug(t))}async resolveNoteId(e){let t=await this.resolveStoredNote(e);if(!t)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${e}`);return t.id}async changedManualTags(e,t){let n=(await this.db.getTagsForNote(e)).map(e=>e.label).sort(),r=[...new Set(t.map(e=>e.trim()).filter(Boolean))].sort();return n.length===r.length&&n.every((e,t)=>e===r[t])?void 0:r}async updateTags(e,t,n){let r=(await this.db.getAllTagTypes()).map(e=>e.name),i=La(t,iA).filter(e=>e.type===`frontmatter`).flatMap(e=>fo(e.displayContent,r)),a=n??(await this.db.getNote(e))?.tags??[];await this.db.setNoteTags(e,[...a,...i.map(e=>e.type?e:e.label)])}async deleteRecord(e){await this.db.deleteNote(e)}async getAttachments(e){return this.db.getAttachmentsForNote(e)}async saveAttachment(e,t){let n={...t,id:t.id??tn(),noteId:e,createdAt:Date.now()};return await this.db.saveAttachment(n),n}async deleteAttachment(e){await this.db.deleteAttachment(e)}},lA={beep:{notes:[{freq:880,type:`sine`,duration:.1}]},tick:{notes:[{freq:880,type:`sine`,duration:.1}]},click:{notes:[{freq:1400,type:`sine`,duration:.1}]},buzzer:{notes:[{freq:150,type:`sawtooth`,duration:.5}]},chime:{notes:[{freq:523.25,type:`sine`,duration:.5,offset:0},{freq:659.25,type:`sine`,duration:.5,offset:.1},{freq:783.99,type:`sine`,duration:.5,offset:.2}]},complete:{notes:[{freq:523.25,type:`sine`,duration:.5,offset:0},{freq:659.25,type:`sine`,duration:.5,offset:.1},{freq:783.99,type:`sine`,duration:.5,offset:.2}]},select:{notes:[{freq:880,type:`sine`,duration:.08,offset:0},{freq:1200,type:`sine`,duration:.12,offset:.08}]},start:{notes:[{freq:440,type:`square`,duration:.1,offset:0},{freq:880,type:`square`,duration:.3,offset:.15}]},"countdown-beep":{notes:[{freq:880,type:`sine`,duration:.1}]},"timer-complete":{notes:[{freq:523.25,type:`sine`,duration:.4,offset:0},{freq:659.25,type:`sine`,duration:.4,offset:.1},{freq:783.99,type:`sine`,duration:.6,offset:.2}]},"start-beep":{notes:[{freq:440,type:`square`,duration:.1,offset:0},{freq:880,type:`square`,duration:.3,offset:.15}]},"interval-start":{notes:[{freq:440,type:`square`,duration:.1,offset:0},{freq:880,type:`square`,duration:.3,offset:.15}]},"interval-complete":{notes:[{freq:523.25,type:`sine`,duration:.4,offset:0},{freq:659.25,type:`sine`,duration:.4,offset:.1},{freq:783.99,type:`sine`,duration:.6,offset:.2}]},"rest-over":{notes:[{freq:783.99,type:`sine`,duration:.3,offset:0},{freq:1046.5,type:`sine`,duration:.5,offset:.15}]}};function uA(e){return lA[e]}var dA=Object.freeze(Object.keys(lA)),fA=class{context=null;masterGain=null;init(){if(this.context)return;let e=window;if(typeof window>`u`)return;let t=window.AudioContext??e.webkitAudioContext;t&&(this.context=new t,this.masterGain=this.context.createGain(),this.masterGain.connect(this.context.destination))}async playNotes(e,t){if(this.context||this.init(),!this.context||!this.masterGain||(this.context.state===`suspended`&&await this.context.resume().catch(()=>{}),this.context.state!==`running`))return;let n=this.context.currentTime;for(let r of e)this.playNote(n+(r.offset??0),r.freq,r.type,r.duration,t)}playNote(e,t,n,r,i){if(!this.context||!this.masterGain)return;let a=this.context.createOscillator(),o=this.context.createGain();a.connect(o),o.connect(this.masterGain),a.type=n,a.frequency.setValueAtTime(t,e),o.gain.setValueAtTime(i*.5,e),o.gain.exponentialRampToValueAtTime(.01,e+r),a.start(e),a.stop(e+r)}},pA=class extends Error{sound;constructor(e){super(`Unknown sound "${e}" — it has no entry in the sound table`),this.sound=e,this.name=`UnknownSoundError`}},mA=new class{enabled;sink;constructor(e,t){if(this.sink=e??new fA,t!==void 0)this.enabled=t;else if(typeof window<`u`)try{let e=localStorage.getItem(`wod-wiki-audio-enabled`);this.enabled=e===null||e===`true`}catch{this.enabled=!0}else this.enabled=!0}setEnabled(e){if(this.enabled=e,typeof window<`u`)try{localStorage.setItem(`wod-wiki-audio-enabled`,String(e))}catch{}}isEnabled(){return this.enabled}async playSound(e,t=1){if(!this.enabled)return;let n=uA(e);if(!n)throw new pA(e);`init`in this.sink&&typeof this.sink.init==`function`&&this.sink.init(),await this.sink.playNotes(n.notes,t)}},hA=class{listeners=new Set;emit(e){this.listeners.forEach(t=>{try{t(e)}catch(e){console.error(`[SimpleEventBus] Error in listener:`,e)}})}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get size(){return this.listeners.size}};new class{bus=new hA;emitScrollToBlock(e,t=`unknown`){this.bus.emit({type:`workbench:scroll-to-block`,payload:{blockId:e,source:t}})}emitHighlightBlock(e,t=`unknown`){this.bus.emit({type:`workbench:highlight-block`,payload:{blockId:e,source:t}})}emitStartWorkout(e){this.bus.emit({type:`workbench:start-workout`,payload:{block:e}})}emitNavigateTo(e,t){this.bus.emit({type:`workbench:navigate-to`,payload:{entryId:e,view:t}})}onScrollToBlock(e){return this.bus.subscribe(t=>{t.type===`workbench:scroll-to-block`&&e(t.payload)})}onHighlightBlock(e){return this.bus.subscribe(t=>{t.type===`workbench:highlight-block`&&e(t.payload)})}onStartWorkout(e){return this.bus.subscribe(t=>{t.type===`workbench:start-workout`&&e(t.payload)})}onNavigateTo(e){return this.bus.subscribe(t=>{t.type===`workbench:navigate-to`&&e(t.payload)})}},new hA;function gA(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`notebook`}var _A=`wodwiki.seedSources`,vA=`wodwiki.seedSources.hidden`;function yA(e){let t=e.trim();if(!t)return null;let n;try{n=new URL(t)}catch{return null}return n.protocol!==`https:`&&n.protocol!==`http:`||n.username||n.password||n.search||n.hash?null:(n.pathname.endsWith(`/`)||(n.pathname+=`/`),n.toString())}function bA(e){let t=e.trim();if(!t)return null;let n;try{n=new URL(t)}catch{return null}return n.protocol!==`https:`||n.username||n.password||n.search||n.hash?null:n.toString()}var xA=`/seed/core/`;function SA(e,t){if(/^https?:\/\//i.test(e))return e;let n=t??(typeof document<`u`?document.baseURI:void 0);if(!n)return e;try{return new URL(e,n).href}catch{return e}}function CA(){try{let e=localStorage.getItem(_A);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||typeof e.id!=`string`||typeof e.label!=`string`||typeof e.url!=`string`)return[];let{repositoryUrl:t}=e,n=typeof t==`string`?bA(t):null,r={id:e.id,label:e.label,url:e.url};return[n?{...r,repositoryUrl:n}:r]}):[]}catch{return[]}}function wA(){return CA()}function TA(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`source`}function EA(e,t,n){let r=yA(t);if(!r)throw Error(`Enter an absolute http(s) URL of a feed directory.`);let i=CA();if(i.some(e=>yA(e.url)===r)||IA().includes(r))throw Error(`This source is already registered.`);let a=n?.repositoryUrl?.trim(),o;if(a&&(o=bA(a)??void 0,!o))throw Error(`Enter an absolute https repository URL without credentials.`);let s=e.trim()||(()=>{try{return new URL(r).hostname}catch{return`Source`}})(),c={...YA};for(let e of i)c[e.id]=!0;let l=TA(s);for(let e=2;c[l];e++)l=`${TA(s)}-${e}`;let u={id:l,label:s,url:r,...o?{repositoryUrl:o}:{}};return localStorage.setItem(_A,JSON.stringify([...i,u])),u}function DA(e){localStorage.setItem(_A,JSON.stringify(CA().filter(t=>t.id!==e)))}function OA(){return FA.map(e=>e.id)}function kA(){try{let e=JSON.parse(localStorage.getItem(vA)??`null`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function AA(e){let t=JA(e),n=kA();OA().includes(t)&&!n.includes(t)&&localStorage.setItem(vA,JSON.stringify([...n,t]))}function jA(){return[...new Set(kA().map(JA))]}var MA={id:`core`,label:`Core`,url:xA,description:`The app's own corpus — guides, the page template, and the reference chunks.`,tier:`core`},NA=`https://bitcobblers.github.io`;function PA(e,t,n,r,i=!1){return{id:e,label:t,url:`${NA}/${n}/`,repositoryUrl:`https://github.com/bitcobblers/${n}`,description:r,tier:`community`,...i?{autoImport:!0}:{}}}var FA=[PA(`sport-crossfit`,`CrossFit`,`wod-wiki-sport-crossfit`,`CrossFit benchmark collections (Games, Girls, Heroes) and weekly programming.`),PA(`sport-hyrox`,`HYROX`,`wod-wiki-sport-hyrox`,`HYROX race preparation and simulation workouts.`),PA(`legends-of-kettlebell`,`Kettlebell Coaches`,`wod-wiki-legends-of-kettlebell`,`Kettlebell coach collections and the Dan John 40-Day Program feed.`),PA(`sport-swimming`,`Swimming`,`wod-wiki-sport-swimming`,`Swimming programs from pre-highschool through college, masters, Olympic, and triathlete.`),PA(`sport-track`,`Track & Field`,`wod-wiki-sport-track`,`High-school track programs — 400m (Raffensperger) and sprints (Arrowhead).`),PA(`wayback-zombie-fit`,`ZombieFit`,`wod-wiki-wayback-zombie-fit`,`The ZombieFit parkour archive — daily WODs since 2009.`),PA(`sport-golos-method`,`Golos Method`,`wod-wiki-feed-golos-method`,`Daily minimalist strength and conditioning.`),PA(`yt-dan-john`,`Dan John`,`wod-wiki-youtube-dan-john`,`Dan John kettlebell workouts.`),PA(`yt-mark-wildman`,`Mark Wildman`,`wod-wiki-youtube-mark-wildman`,`Mark Wildman athletic kettlebell and club training.`),PA(`yt-strongfirst`,`StrongFirst`,`wod-wiki-youtube-strongfirst`,`StrongFirst hardstyle kettlebell workouts.`),PA(`yt-the-stone-circle`,`The Stone Circle`,`wod-wiki-youtube-the-stone-circle`,`Sandbag power-endurance and density training.`),PA(`samples-movement`,`Movement Examples`,`wod-wiki-samples-movement`,`Unconventional and parkour-style training examples.`),PA(`sport-yoga`,`Yoga Examples`,`wod-wiki-sport-yoga`,`Yoga session examples.`),PA(`r-workoutroutines`,`r/WorkoutRoutines`,`wod-wiki-r-workoutroutines`,`Community feed from the r/WorkoutRoutines subreddit.`)];function IA(){return[xA,...FA.map(e=>e.url)]}function LA(e){return VA().find(t=>t.id===e)}function RA(e){let t=LA(e);if(!t)throw Error(`unknown feed source: ${e}`);return t}function zA(e,t,n,r,i,a){return RA(e),{id:`community-${t}`,feedId:e,chunkId:n,label:r,category:i,description:a}}var BA=[zA(`sport-crossfit`,`crossfit-games`,`notebook.crossfit-games`,`CrossFit Games`,`workouts`,`CrossFit Games workouts — Open, Regionals, and Games programming, formatted for Wod Wiki.`),zA(`sport-crossfit`,`crossfit-girls`,`notebook.crossfit-girls`,`CrossFit Girls`,`workouts`,`Classic benchmark workouts — Fran, Helen, Grace, Diane, and more, formatted for Wod Wiki.`),zA(`sport-crossfit`,`crossfit-heroes`,`notebook.crossfit-heroes`,`CrossFit Heroes`,`workouts`,`Hero benchmark workouts honoring service members — Murph, DT, Badger, and more.`),zA(`sport-crossfit`,`crossfit-programming`,`notebook.crossfit-programming`,`CrossFit Programming`,`programs`,`Weekly CrossFit programming — daily strength, conditioning, and skill sessions on a rotation with a weekly benchmark.`),zA(`sport-hyrox`,`hyrox`,`notebook.hyrox`,`HYROX`,`workouts`,`HYROX race preparation — running, sled work, ergs, and functional stations in race format.`),zA(`legends-of-kettlebell`,`geoff-neupert`,`notebook.geoff-neupert`,`Geoff Neupert`,`workouts`,`Geoff Neupert kettlebell workouts — strength and conditioning from a Master SFG coach.`),zA(`legends-of-kettlebell`,`girevoy-sport`,`notebook.girevoy-sport`,`Girevoy Sport`,`workouts`,`Competitive kettlebell sport — jerk, snatch, and long-cycle programming.`),zA(`legends-of-kettlebell`,`joe-daniels`,`notebook.joe-daniels`,`Joe Daniels (Swing This)`,`workouts`,`Joe Daniels kettlebell workouts — kettlebell sport and hardstyle fusion.`),zA(`legends-of-kettlebell`,`keith-weber`,`notebook.keith-weber`,`Keith Weber`,`workouts`,`Keith Weber kettlebell workouts — high-intensity kettlebell cardio.`),zA(`legends-of-kettlebell`,`steve-cotter`,`notebook.steve-cotter`,`Steve Cotter`,`workouts`,`Steve Cotter kettlebell workouts — comprehensive kettlebell education.`),zA(`legends-of-kettlebell`,`dan-john-40-day`,`notebook.dan-john-40-day`,`Dan John 40-Day Program`,`programs`,`Dan John's 40-day barbell program — five lifts, five sets of five, five days a week for 40 sessions.`),zA(`yt-dan-john`,`dan-john`,`notebook.dan-john`,`Dan John Kettlebell`,`workouts`,`Dan John kettlebell workouts — simple, effective programming with clear objectives.`),zA(`yt-mark-wildman`,`mark-wildman`,`notebook.mark-wildman`,`Mark Wildman`,`workouts`,`Mark Wildman workouts — athletic kettlebell and club training.`),zA(`yt-strongfirst`,`strongfirst`,`notebook.strongfirst`,`StrongFirst`,`workouts`,`StrongFirst workouts — hardstyle kettlebell strength and skill.`),zA(`yt-the-stone-circle`,`the-stone-circle`,`notebook.the-stone-circle`,`The Stone Circle`,`workouts`,`Sandbag power endurance and density training — progressive EMOM protocols.`),zA(`sport-swimming`,`swimming-college`,`notebook.swimming-college`,`Swimming: College`,`workouts`,`College swimming training sessions.`),zA(`sport-swimming`,`swimming-highschool`,`notebook.swimming-highschool`,`Swimming: High School`,`workouts`,`High-school swimming training sessions.`),zA(`sport-swimming`,`swimming-masters`,`notebook.swimming-masters`,`Swimming: Masters`,`workouts`,`Masters swimming training sessions.`),zA(`sport-swimming`,`swimming-olympic`,`notebook.swimming-olympic`,`Swimming: Olympic`,`workouts`,`Olympic-caliber swimming training sessions.`),zA(`sport-swimming`,`swimming-post-college`,`notebook.swimming-post-college`,`Swimming: Post-College`,`workouts`,`Post-college swimming training sessions.`),zA(`sport-swimming`,`swimming-pre-highschool`,`notebook.swimming-pre-highschool`,`Swimming: Pre-Highschool`,`workouts`,`Pre-highschool swimming training sessions.`),zA(`sport-swimming`,`swimming-triathlete`,`notebook.swimming-triathlete`,`Swimming: Triathlete`,`workouts`,`Triathlete swim training sessions.`),zA(`sport-track`,`hs-track-400m`,`notebook.hs-track-400m`,`HS Track 400m`,`workouts`,`High-school 400m program after Raffensperger — speed, tempo, and strength phases.`),zA(`sport-track`,`hs-track-sprints`,`notebook.hs-track-sprints`,`HS Track Sprints`,`workouts`,`High-school sprints program after Arrowhead — acceleration, maximum velocity, and speed endurance.`),zA(`wayback-zombie-fit`,`zombiefit`,`notebook.zombiefit`,`ZombieFit`,`workouts`,`The ZombieFit archive — parkour-inspired fitness WODs, 2009–2013.`),zA(`sport-golos-method`,`the-golos-method`,`notebook.the-golos-method`,`The Golos Method`,`workouts`,`Daily minimalist strength and conditioning — dense, repeatable sessions.`),zA(`samples-movement`,`unconventional`,`notebook.unconventional`,`Unconventional`,`workouts`,`Unconventional training — maces, clubs, sandbags, and parkour movement.`),zA(`sport-yoga`,`yoga`,`notebook.yoga`,`Yoga`,`workouts`,`Yoga sessions for mobility and recovery.`),zA(`r-workoutroutines`,`workoutroutines-reddit`,`notebook.workoutroutines-reddit`,`r/WorkoutRoutines`,`programs`,`Community workouts from the r/WorkoutRoutines subreddit.`)];function VA(){return[MA,...FA,...wA().map(e=>({id:e.id,label:e.label,url:e.url,description:`Custom feed synced from ${e.url}`,tier:`imported`,...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{}}))]}function HA(){return VA().filter(e=>e.id!==MA.id)}function UA(){return[...BA,...wA().map(e=>({id:e.id,feedId:e.id,chunkId:e.id,label:e.label,category:`custom`,description:`Custom feed synced from ${e.url}`}))]}function WA(e){return UA().filter(t=>t.feedId===e)}function GA(e){return UA().find(t=>t.id===e)}function KA(e){let t=e.trim(),n=GA(t);return n&&n.chunkId.startsWith(`notebook.`)?n.chunkId.replace(/^notebook\./,``):t.startsWith(`notebook/`)||t.startsWith(`notebook:`)||t.startsWith(`notebook.`)?t.slice(9):t}var qA={"seed-crossfit":`sport-crossfit`,"seed-hyrox":`sport-hyrox`,"seed-kettlebell":`legends-of-kettlebell`,"seed-swimming":`sport-swimming`,"seed-track":`sport-track`,"seed-zombie-fit":`wayback-zombie-fit`,"seed-golos-method":`sport-golos-method`,"example-movement":`samples-movement`,"example-yoga":`sport-yoga`};function JA(e){return qA[e]||(BA.find(t=>t.id===e)?.feedId??e)}var YA=Object.fromEntries([[`core`,!0],[`community`,!0],[`common`,!0],[`seed-core`,!0],[`seed-crossfit`,!0],[`seed-hyrox`,!0],[`seed-kettlebell`,!0],[`seed-swimming`,!0],[`seed-track`,!0],[`seed-zombie-fit`,!0],[`seed-golos-method`,!0],[`example-movement`,!0],[`example-yoga`,!0],...FA.map(e=>[e.id,!0]),...BA.map(e=>[e.id,!0])]),XA=`notebook/defaults`,ZA=new Set(ja.map(e=>e.slug)),QA=class{store;constructor(e=Z){this.store=e}tail=Promise.resolve();enqueue(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),t}getFeedNotebooks(){let e=[];for(let t of UA()){if(t.category===`dashboards`)continue;let n=t.chunkId.replace(/^notebook\./,``);e.push({id:ka(n),slug:n,notebookId:ka(n),name:t.label,description:t.description,icon:t.category===`feeds`?`📡`:`📚`,origin:`feed`,feedEntryId:t.feedId,seedChunkId:t.chunkId,createdAt:0})}return e}getDefaultNotebooks(){return ja.map(e=>({id:e.notebookId,slug:e.slug,notebookId:e.notebookId,name:e.name,description:e.description,icon:e.icon,origin:`default`,...e.feedEntryId?{feedEntryId:e.feedEntryId}:{},...e.seedChunkId?{seedChunkId:e.seedChunkId}:{},createdAt:0}))}async getAllNotebooks(){let e=new Map;for(let t of[...this.getDefaultNotebooks(),...this.getFeedNotebooks(),...await this.getAll()])e.set(t.notebookId,t);return[...e.values()]}async getAll(){let e=await this.store.getAllNotes(),t=e.filter($A),n=new Set(t.map(e=>e.id.slice(9))),r=t.map(rj);for(let t of e)if(t.notebookId?.startsWith(`notebook/`)){let e=t.notebookId.slice(9);e&&!ZA.has(e)&&!n.has(e)&&(n.add(e),r.push({id:t.notebookId,slug:e,notebookId:ka(e),name:e,description:``,icon:`📓`,origin:`user`,createdAt:t.createdAt}))}return r.sort((e,t)=>e.createdAt-t.createdAt)}async getById(e){let t=ka(e),n=await this.store.getNote(t);return n&&$A(n)?rj(n):null}create(e,t=``,n=`📓`){return this.enqueue(()=>this.createNow(e,t,n))}async createNow(e,t,n){let r=await this.getAll(),i=gA(e),a=new Set([...ZA,...r.map(e=>e.slug)]),o=i;for(let e=2;a.has(o);e++)o=`${i}-${e}`;let s=ka(o);return rj(await this.saveLanding(s,e,t,n))}async saveLanding(e,t,n,r,i){let a=tj(t,n,r),o={...await this.store.saveNoteSource({noteId:e,rawContent:a,blocks:za(a,{sourceRevision:i||1}),expectedSourceRevision:i??0,metadata:{title:t}}),notebookId:e,type:`note`};return i===void 0&&(o.createdAt=Date.now()),await this.store.saveNote(o),o}update(e,t){return this.enqueue(async()=>{let n=ka(e);ej(n);let r=await this.store.getNote(n);if(!r||!$A(r))throw Error(`Notebook not found: ${e}`);let i=nj(r);return rj(await this.saveLanding(r.id,t.name??r.title,t.description??i.description,t.icon??i.icon,r.sourceRevision))})}delete(e){return this.enqueue(async()=>{let t=ka(e);ej(t);let n=await this.listNotes(t);for(let e of n){let{notebookId:t,...n}=e;await this.store.saveNote(n)}await this.store.deleteNote(t)})}async listNotes(e){let t=ka(e);return(await this.store.getAllNotes()).filter(e=>e.notebookId===t&&!$A(e))}moveNote(e,t){return this.enqueue(async()=>{let n=await this.store.getNote(e);if(!n)throw Error(`Note not found: ${e}`);if(t===null){let{notebookId:e,...t}=n;await this.store.saveNote(t);return}let r=ka(t);if(this.getFeedNotebooks().some(e=>e.notebookId===r))throw Error(`Notebook ${r} is feed-delivered and read-only.`);await this.store.saveNote({...n,notebookId:r})})}cloneNote(e,t,n){return this.enqueue(async()=>{let r=await this.store.getNote(e);if(!r)throw Error(`Note not found: ${e}`);let i=r.rawContent,a={...await this.store.saveNoteSource({noteId:tn(),rawContent:i,blocks:za(i,{sourceRevision:1}),expectedSourceRevision:0,createdAt:Date.now(),metadata:{title:n??r.title,type:`note`,sourceId:r.id,...r.tags?.length?{tags:[...r.tags]}:{}}}),notebookId:ka(t),seedOrigin:`user`};return await this.store.saveNote(a),a})}ensureNotebooks(){return this.enqueue(async()=>{let e=await this.store.getAllNotes();e.some(e=>$A(e)&&e.id===`notebook/defaults`)||await this.saveLanding(XA,`Defaults`,`Starter notes — clone any of them into your own notebooks.`,`📝`);for(let t of e)t.type===`template`&&await this.store.saveNote({...t,type:`note`,notebookId:t.notebookId??`notebook/defaults`});if((await this.listNotes(`notebook/defaults`)).length===0){let e="# My Workout\n\n```time\n10 Push-ups\n```\n",t=await this.store.saveNoteSource({noteId:tn(),rawContent:e,blocks:za(e,{sourceRevision:1}),expectedSourceRevision:0,createdAt:Date.now(),metadata:{title:`My Workout`,type:`note`}});await this.store.saveNote({...t,notebookId:XA,seedOrigin:`user`})}})}};function $A(e){return e.id.startsWith(`notebook/`)&&e.notebookId===e.id}function ej(e){if(ZA.has(Oa(e)))throw Error(`Notebook ${e} is always present and cannot be changed.`)}function tj(e,t,n){return`---\ndescription: ${t?JSON.stringify(t.replace(/\n/g,` `)):``}\nicon: ${n?JSON.stringify(n.replace(/\n/g,` `)):``}\n---\n\n# ${e}\n`}function nj(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(e.rawContent),n=``,r=`📓`,i=e=>{if(e.length>=2&&e.startsWith(`"`)&&e.endsWith(`"`))try{return JSON.parse(e)}catch{return e}return e};if(t)for(let e of t[1].split(/\r?\n/)){let t=e.match(/^(description|icon):\s*(.*)$/);t&&(t[1]===`description`?n=i(t[2].trim()):r=i(t[2].trim())||r)}return{description:n,icon:r}}function rj(e){let{description:t,icon:n}=nj(e);return{id:e.id,slug:e.id.slice(9),notebookId:ka(e.id),name:e.title,description:t,icon:n,origin:`user`,createdAt:e.createdAt}}var ij=new QA;function aj(e){if(!e)return``;let t=e.split(`-`);return t.length>1?t[t.length-1]:e}function oj(e){return typeof File<`u`&&e instanceof File?!1:`file`in e&&e.file!==void 0||`data`in e&&e.data!==void 0}async function sj(e){let t=Date.now();if(!oj(e))return{label:e.name,mimeType:e.type,data:await e.arrayBuffer(),timeSpan:{start:t,end:t}};let n=`file`in e?e.file:void 0,r=`data`in e?e.data:void 0,i;if(r!==void 0)i=r;else{if(!n)throw Error(`Attachment input requires either file or data, but neither was provided`);i=await n.arrayBuffer()}return{id:e.id,label:e.label??n?.name??`Attachment`,mimeType:e.mimeType??n?.type??`application/octet-stream`,data:i,timeSpan:e.timeSpan??{start:t,end:t}}}function cj(e){return{id:e.id,outputType:e.outputType,timeSpan:{started:e.timeSpan.started,ended:e.timeSpan.ended},metrics:e.metrics.toArray(),hints:(()=>{let t=bo(e);return t.length?t:void 0})(),sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,parent:e.parent,sourceStatementId:e.sourceStatementId,line:e.line,text:e.text,dialect:e.dialect,completionReason:e.completionReason}}function lj(e){return new ga({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 uj(e){return{...e,metrics:e.metrics.filter(e=>e.origin!==`analyzed`)}}function dj(e,t){let{engine:n}=$p(t.block,{effortResolver:t.effortResolver,userProfile:t.userProfile,calcs:t.calcs,tags:t.tags,activeTags:t.activeTags,propertySources:t.propertySources}),r=[];for(let t of e){if(t.outputType===`analytics`)continue;if(t.outputType!==`segment`){r.push(t);continue}let e=uj(t),i=n.run(lj(e)),a=t.metrics.filter(e=>e.origin===`analyzed`&&!i.metrics.some(t=>t.origin===`analyzed`&&t.type===e.type));r.push(cj(a.length?new ga({...i,metrics:[...i.metrics,...a]}):i))}return[...r,...n.finalize().map(cj)]}function fj(e,t,n){return dj(N_(t),{block:e,...n})}var pj={soreness:{unit:`rating`,label:`Soreness`,min:1,max:10},sleep:{unit:`h`,label:`Sleep`},hrv:{unit:`ms`,label:`HRV`},weight:{unit:`kg`,label:`Bodyweight`},hang:{unit:`kg`,label:`Max Hang Weight`},hr:{unit:`bpm`,label:`Avg Heart Rate`},planned:{unit:`count`,label:`Planned Sessions`}};function mj(e){let t=/^(-?\d+(?:\.\d+)?)\s*([a-z%]*)$/i.exec(e.trim());if(t)return{value:parseFloat(t[1]),unit:t[2]||void 0}}function hj(e){let t=new Map;for(let n of e.split(`
|
|
83
83
|
`)){let e=/^([a-z][a-z0-9]*)\s*[:=]\s*(.+)$/i.exec(n.trim());if(!e)continue;let r=e[1].toLowerCase(),i=pj[r];if(!i)continue;let a=mj(e[2]);a&&(i.min!==void 0&&a.value<i.min||i.max!==void 0&&a.value>i.max||t.set(r,{key:r,value:a.value,unit:a.unit??i.unit,label:i.label}))}return[...t.values()]}function gj(e){let t=new Map,n=/```wellness[^\S\n]*\n([\s\S]*?)```/g,r;for(;(r=n.exec(e))!==null;)for(let e of hj(r[1]))t.set(e.key,e);return[...t.values()]}function _j(e,t,n={}){let r=gj(t);if(r.length===0)return[];let i=n.targetDate??n.now??Date.now(),a=new Date(i),o=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,`0`)}-${String(a.getDate()).padStart(2,`0`)}`,s=new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime();return r.map(t=>({id:vj(e,t.key),resultId:`wellness:${e}`,noteId:e,timestamp:s,grain:`summary`,origin:`user`,outputType:`wellness`,representationKind:`direct`,metrics:[{type:t.key,value:t.value,unit:t.unit,origin:`user`,metadata:{canonicalKey:t.key}}],metricTemporal:[{temporalKind:`civil-date`,civilDate:o}]}))}function vj(e,t){return`wellness:${e}:${t}`}async function yj(e,t,n,r={}){let i=_j(e,t,r),a=new Set(i.map(e=>e.id)),o=(await n.getEventsForNote(e)).filter(t=>t.id.startsWith(`wellness:${e}:`)),s=i.filter(e=>{let t=o.find(t=>t.id===e.id);return!t||t.metrics[0]?.value!==e.metrics[0]?.value||t.timestamp!==e.timestamp}),c=o.filter(e=>!a.has(e.id)).map(e=>e.id);return s.length>0&&await n.appendEvents(s),c.length>0&&await n.deleteEvents(c),{written:s.length,deleted:c.length}}function bj(e){return[...e].sort((e,t)=>t.createdAt-e.createdAt)}function xj(e,t){return t==null?e:e.slice(0,t)}var Sj=class e{storage;contentProvider;constructor(e=Z,t=new cA(e)){this.storage=e,this.contentProvider=t}async createNote(e){if(await this.contentProvider.persistenceReady,await this.storage.getNote(e.id))throw Error(`Note already exists: ${e.id}`);return this.contentProvider.saveRecord({id:e.id,title:e.title,rawContent:e.rawContent,tags:e.tags??[],targetDate:e.targetDate,journalDate:e.journalDate,type:e.type??`note`,slug:e.slug,sourceId:e.sourceId})}async getNote(e,t={}){await this.contentProvider.persistenceReady;let n=await this.resolveNote(e);if(!n)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);let r=t.projection??`workbench`,i=t.includeSections??r!==`summary`,a=t.includeAttachments??!1,o=await this.contentProvider.getRecord(n.id);if(!o)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);let s=r===`summary`?{}:await this.selectResults(n,t.resultSelection),c=a?await this.storage.getAttachmentsForNote(n.id):void 0;return{...o,...s,sections:i?o.sections:void 0,attachments:c}}async listNotes(e={}){if(e.ids&&e.ids.length>0){let t=e.projection??`summary`;return Promise.all(e.ids.map(e=>this.getNote(e,{projection:t,...t===`history-detail`&&{resultSelection:{mode:`all-for-note`}}})))}let t=await this.contentProvider.getRecords(e);if(e.journalDate&&(t=t.filter(t=>t.placements&&t.placements.length>0?t.placements.some(t=>t.date===e.journalDate):t.journalDate===e.journalDate)),e.kind&&(t=t.filter(t=>t.type===e.kind)),e.search){let n=e.search.toLowerCase();t=t.filter(e=>e.title.toLowerCase().includes(n)||e.rawContent.toLowerCase().includes(n))}return e.projection===`history-detail`&&(t=await Promise.all(t.map(e=>this.getNote(e.id,{projection:`history-detail`,resultSelection:{mode:`all-for-note`}})))),(e.offset||e.limit)&&(t=t.slice(e.offset??0,(e.offset??0)+(e.limit??t.length))),t}async mutateNote(e,t){await this.contentProvider.persistenceReady;let n=await this.resolveNote(e);if(!n)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);if(t.expectedSourceRevision!==void 0&&t.expectedSourceRevision!==n.sourceRevision)throw new xb(`STALE_SOURCE`,`Note ${n.id} changed since it was loaded`);let r=t.attachments?.add?await Promise.all(t.attachments.add.map(e=>sj(e))):[];return await this.storage.withTransaction([`notes`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`,`block_revisions`,`sessions`,`events`,`attachments`,`block_index`,`block_efforts`,`block_equipment`,`efforts`,`equipment`],async e=>{let i=new cA(e);if(await i.updateRecord(n.id,{...t.metadata,rawContent:t.rawContent,blocks:t.blocks,expectedSourceRevision:t.expectedSourceRevision,results:t.workoutResult?.data,blockId:t.workoutResult?.blockId,blockVersion:t.workoutResult?.blockVersion,blockContentId:t.workoutResult?.blockContentId,origin:t.workoutResult?.origin,resultId:t.workoutResult?.id}),t.rawContent!==void 0&&t.rawContent!==n.rawContent){let r=await i.getRecord(n.id);await yj(n.id,t.rawContent,e,{targetDate:r?.targetDate})}for(let i of r)await e.saveAttachment({...i,id:i.id??tn(),noteId:n.id,resultId:t.workoutResult?.id,createdAt:Date.now()});for(let n of t.attachments?.remove??[])await e.deleteAttachment(n)}),this.getNote(n.id,{includeAttachments:!!t.attachments})}async saveNote(e){if(await this.contentProvider.persistenceReady,await this.storage.getNote(e.noteId))return this.mutateNote(e.noteId,{rawContent:e.rawContent,blocks:e.blocks,expectedSourceRevision:e.expectedSourceRevision,metadata:e.metadata});if(e.expectedSourceRevision!==0)throw new xb(`STALE_SOURCE`,`Note ${e.noteId} no longer exists`);return this.contentProvider.saveRecord({id:e.noteId,rawContent:e.rawContent,blocks:e.blocks,sourceRevision:0,title:e.metadata?.title??`Workout Note`,tags:e.metadata?.tags??[],targetDate:e.metadata?.targetDate??Date.now(),journalDate:e.metadata?.journalDate,slug:e.metadata?.slug??void 0,type:e.metadata?.type??e.noteType,sourceId:e.metadata?.sourceId??void 0,createdAt:e.createdAt})}async startSession(t,n){if(await this.contentProvider.persistenceReady,n.noteId!==t.noteId)throw new xb(`RESULT_NOTE_MISMATCH`,`Session belongs to another Note`);return this.storage.withTransaction([`notes`,`block_revisions`,`block_index`,`block_efforts`,`block_equipment`,`efforts`,`equipment`,`sessions`,`events`,`page`,`page_notes`,`tags`,`note_tags`,`tag_types`],async r=>{await new e(r,new cA(r)).saveNote(t);let i=await r.getNote(t.noteId),a=i?.blocks[n.blockId];if(!i||!a||a.kind!==`wod`)throw new xb(`BLOCK_REVISION_NOT_FOUND`,`Selected workout is not in the saved Note`);let o=await r.getBlockRevision(i.id,a.id,a.version);if(!o)throw new xb(`BLOCK_REVISION_NOT_FOUND`,`Selected workout revision is missing`);if(await r.getSessionById(n.id))throw Error(`Session already exists: ${n.id}`);let s=La(o.rawContent,{registeredWidgets:Ma}).find(e=>e.scriptBlock),c={...n,blockId:a.id,blockVersion:o.version,blockContentId:s?.scriptBlock?.contentId,status:`in-progress`};return await r.saveSession(c),{note:i,revision:o,session:c}})}async finishSession(e,t,n){return await this.contentProvider.persistenceReady,this.storage.withTransaction([`sessions`,`block_revisions`,`events`],async r=>{let i=await r.getSessionById(e);if(!i)throw new xb(`RESULT_NOT_FOUND`,`Session not found: ${e}`);if(!await r.getBlockRevision(i.noteId,i.blockId,i.blockVersion))throw new xb(`BLOCK_REVISION_NOT_FOUND`,`Pinned workout revision is missing`);let a={...i,startTime:t.startTime,endTime:t.endTime,duration:t.duration??0,roundsCompleted:t.roundsCompleted,totalRounds:t.totalRounds,repsCompleted:t.repsCompleted,completed:t.completed,status:`completed`,createdAt:n??i.createdAt};if(await r.saveSession(a),t.logs?.length){let e={noteId:a.noteId,resultId:a.id,blockId:a.blockId,blockVersion:a.blockVersion,blockContentId:a.blockContentId,origin:a.origin,pageId:a.pageId,workoutTimestamp:a.endTime};await r.appendEvents(A_(t.logs,e)),await r.finalizeSummaries(a.id,j_(t.logs,e))}return a})}async getBlockRevision(e,t,n){return await this.contentProvider.persistenceReady,this.storage.getBlockRevision(e,t,n)}async getBlockHistory(e,t){return await this.contentProvider.persistenceReady,this.storage.getBlockHistory(e,t)}async getNoteBlockHistory(e){return await this.contentProvider.persistenceReady,this.storage.getNoteBlockHistory(e)}async deleteNote(e){await this.contentProvider.persistenceReady;let t=await this.resolveNote(e);if(!t)throw new xb(`NOTE_NOT_FOUND`,`Note not found: ${this.describeLocator(e)}`);await this.contentProvider.deleteRecord(t.id)}async getSessionById(e){return await this.contentProvider.persistenceReady,this.storage.getSessionById(e)}async rederiveResultAnalytics(e){await this.contentProvider.persistenceReady;let t=await this.storage.getSessionById(e);if(!t)throw new xb(`RESULT_NOT_FOUND`,`Result not found: ${e}`);let n=await this.storage.getBlockRevision(t.noteId,t.blockId,t.blockVersion),r=n&&La(n.rawContent).find(e=>e.scriptBlock)?.scriptBlock;if(!r||n?.kind!==`wod`)throw new xb(`BLOCK_REVISION_NOT_FOUND`,`Cannot re-derive result ${e}: pinned workout revision is missing`);let i={...r,id:t.blockId,version:t.blockVersion,dialect:n.dialect,sport:n.sport,statements:kc().read(r.content,n.sport).statements},a=this.storage.getEventsByResult?await this.storage.getEventsByResult(e):[],o=fj(i,a);if(this.storage.appendEvents&&this.storage.finalizeSummaries){let e={noteId:t.noteId,resultId:t.id,blockId:t.blockId,blockVersion:t.blockVersion,blockContentId:t.blockContentId,origin:t.origin,pageId:t.pageId,workoutTimestamp:t.createdAt};await this.storage.withTransaction([`events`],async n=>{a.length>0&&await n.deleteEvents(a.map(e=>e.id)),await n.appendEvents(A_(o,e)),await n.finalizeSummaries(t.id,j_(o,e))})}return t}async resolveNote(e){if(typeof e==`string`)return this.resolveByAnyId(e);if(e.id)return this.resolveByAnyId(e.id);if(e.slug)return this.resolveByAnyId(e.slug);let t=await this.storage.getAllNotes();if(e.shortId)return t.find(t=>aj(t.id)===e.shortId);let n=e.title;if(n)return t.find(e=>e.title.toLowerCase()===n.toLowerCase())}async resolveByAnyId(e){return await this.storage.getNote(e)||await this.storage.getNoteBySlug?.(e)||(await this.storage.getAllNotes()).find(t=>aj(t.id)===e||t.title.toLowerCase()===e.toLowerCase())}describeLocator(e){return typeof e==`string`?e:e.id??e.slug??e.shortId??e.title??`<empty locator>`}async getSimilarSessions(e,t={}){let n=await this.storage.getSessionsByContentId(e);return t.excludeNoteId&&(n=n.filter(e=>e.noteId!==t.excludeNoteId)),t.includePlayground||(n=n.filter(e=>e.origin!==`playground`)),xj(bj(n),t.limit)}async selectResults(e,t={mode:`latest`}){let n=async e=>!e||!this.storage.getEventsByResult?[]:this.storage.getEventsByResult(e.id);if(t.mode===`by-result-id`){let r=await this.storage.getSessionById(t.resultId);if(!r)throw new xb(`RESULT_NOT_FOUND`,`Result not found: ${t.resultId}`);if(r.noteId!==e.id)throw new xb(`RESULT_NOTE_MISMATCH`,`Result ${t.resultId} does not belong to note ${e.id}`);return{results:bb(r,await n(r))}}if(t.mode===`latest-for-section`||t.mode===`all-for-section`){let n=bj(await this.storage.getSessionsForSection(e.id,t.blockId));if(t.mode===`all-for-section`){let e=xj(n,t.limit);return{results:await this.payloadOf(e[0]),extendedResults:e}}return{results:await this.payloadOf(n[0])}}let r=bj(await this.storage.getSessionsForNote(e.id));if(t.mode===`all-for-note`){let e=xj(r,t.limit);return{results:await this.payloadOf(e[0]),extendedResults:e}}return{results:await this.payloadOf(r[0])}}async payloadOf(e){return e?bb(e,this.storage.getEventsByResult?await this.storage.getEventsByResult(e.id):[]):void 0}},Cj=new Sj,wj=Uk===`api`,Tj=[`wodwiki.routeWql.v1`,`wodwiki.routeWqlShortcuts.v1`,`wodwiki.soundProfiles.v1`],Ej=[],Dj=new Map,Oj={getItem:e=>Dj.get(e)??null,setItem:(e,t)=>Dj.set(e,t),removeItem:e=>Dj.delete(e)};async function kj(){let e=await Promise.all(Tj.map(e=>qk.readonly(`meta`).getAll(IDBKeyRange.bound(e,`${e}\uffff`)))),t=await Promise.all(Ej.map(e=>qk.readonly(`meta`).get(e)));for(let t of e)for(let e of t)Dj.set(e.key,e.value);for(let e of t)e&&Dj.set(e.key,e.value)}async function Aj(e,t){t===null?(await qk.readwrite(`meta`).delete(e),Dj.delete(e)):(await qk.readwrite(`meta`).put({key:e,value:t}),Dj.set(e,t))}async function jj(e){if(e.length===1)return Aj(e[0],null);await qk.transaction([`meta`],`readwrite`,async t=>{for(let n of e)await t.readwrite(`meta`).delete(n)});for(let t of e)Dj.delete(t)}async function Mj(e){return await qk.readonly(`meta`).getAll(IDBKeyRange.bound(e,`${e}\uffff`))}async function Nj(e,t){await qk.readwrite(`meta`).put({key:e,value:t})}async function Pj(e){await qk.readwrite(`meta`).delete(e)}var Fj=`wodwiki-telemetry`,Ij=1,Lj=`events`,Rj=`wodwiki.telemetry.consent`,zj=class{events=new hA;consentListeners=new Set;storage;forwarder;idb;sink;load;dbPromise;_consent;setForwarder(e){this.forwarder=e}constructor(e={}){this.storage=e.storage??(globalThis.localStorage===void 0?void 0:globalThis.localStorage),this.forwarder=e.forwarder,this.idb=e.sink?void 0:e.idb??(typeof indexedDB<`u`?indexedDB:void 0),this.sink=e.sink,this.load=e.load,this._consent=this.storage?.getItem(Rj)!==`denied`}get consent(){return this._consent}setConsent(e){if(this._consent!==e){this._consent=e;try{this.storage?.setItem(Rj,e?`granted`:`denied`)}catch{}this.consentListeners.forEach(t=>t(e))}}subscribeConsent(e){return this.consentListeners.add(e),()=>this.consentListeners.delete(e)}record(e,t){let n={name:e,payload:t,at:Date.now()};if(this.persist(n).catch(e=>console.error(`[TelemetryService] persist failed:`,e)),this.events.emit(n),this._consent&&this.forwarder)try{this.forwarder(n)}catch(e){console.error(`[TelemetryService] forwarder error:`,e)}}async list(){if(this.load)return this.load();let e=await this.open();if(!e)return[];let{promise:t,resolve:n,reject:r}=Promise.withResolvers(),i=e.transaction(Lj,`readonly`).objectStore(Lj).getAll();return i.onsuccess=()=>n(i.result.map(({name:e,payload:t,at:n})=>({name:e,payload:t,at:n}))),i.onerror=()=>r(i.error),t}async persist(e){if(this.sink){await this.sink(e);return}let t=await this.open();if(!t)return;let{promise:n,resolve:r,reject:i}=Promise.withResolvers(),a=t.transaction(Lj,`readwrite`);return a.objectStore(Lj).add(e),a.oncomplete=()=>r(),a.onerror=()=>i(a.error),n}open(){return this.idb?(this.dbPromise??=this.openDatabase(),this.dbPromise):Promise.resolve(null)}async openDatabase(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=this.idb.open(Fj,Ij);return r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Lj)){let t=e.createObjectStore(Lj,{keyPath:`id`,autoIncrement:!0});t.createIndex(`by-name`,`name`),t.createIndex(`by-at`,`at`)}},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error),e.catch(e=>(console.error(`[TelemetryService] open failed:`,e),null))}},Bj;function Vj(){let e=Date.now(),t=Bj===void 0?0:e-Bj;return Bj=e,t}var Hj=wj?new zj({sink:e=>Nj(`telemetry:${crypto.randomUUID()}`,{name:e.name,payload:e.payload,at:e.at}),load:async()=>(await Mj(`telemetry:`)).map(e=>e.value).sort((e,t)=>e.at-t.at)}):new zj,Uj={demoOpened:`home:demo_opened`,demoRun:`home:demo_run`,demoEdited:`home:demo_edited`,libraryOpened:`home:library_opened`,feedsOpened:`home:feeds_opened`,noteCreated:`home:note_created`,lessonStarted:`home:lesson_started`,cheatsheetOpened:`home:cheatsheet_opened`,behaviorsOpened:`home:behaviors_opened`,analyticsGuideOpened:`home:analytics_guide_opened`,explorerOpened:`home:explorer_opened`,dashboardViewed:`home:dashboard_viewed`,effortsOpened:`home:efforts_opened`,referenceOpened:`home:reference_opened`,chapterHeroViewed:`home:chapter_hero_viewed`,chapterExampleRun:`home:chapter_example_run`,chapterGuideClicked:`home:chapter_guide_clicked`,hostedInterestClicked:`home:hosted_interest_clicked`,hostedSurveyOpened:`home:hosted_survey_opened`};function Wj(){let e=(0,W.useSyncExternalStore)(e=>Hj.subscribeConsent(e),()=>Hj.consent);return{track:(0,W.useCallback)((e,t)=>Hj.record(e,t),[]),consent:e,setConsent:(0,W.useCallback)(e=>Hj.setConsent(e),[])}}var Gj=[25,50,75,90];function Kj(e,t=Gj){let n=(0,W.useRef)(new Set);(0,W.useEffect)(()=>{if(!e||typeof window>`u`)return;n.current.clear();let r=()=>{let r=document.documentElement.scrollHeight-window.innerHeight;if(r<=0)return;let i=Math.round(window.scrollY/r*100);for(let r of t)i>=r&&!n.current.has(r)&&(n.current.add(r),Hj.record(`scroll`,{percent_scrolled:r,page_path:e}))};return window.addEventListener(`scroll`,r,{passive:!0}),r(),()=>{window.removeEventListener(`scroll`,r)}},[e,t])}var qj=`sound-`;function Jj(e){if(!e.startsWith(`sound-`))return;let t=e.slice(6);return t.length>0?t:void 0}function Yj(e){let t=Jj(e);return t?[{kind:`metric`,type:`sound`,value:t}]:[]}function Xj(e,t=[]){let n=[],r=new Set([...rM().map(e=>e.slug),...t.map(e=>e.name.trim())]);for(let t of e){let e=t.label.trim();e.length>0&&r.add(e)}for(let t of e){let e=t.label.trim();if(e.length===0)continue;let i=t.contributions?.length?[...t.contributions]:[...Yj(e)],a=t.type?.trim();a&&a!==e&&a!==`category`&&r.has(a)&&!i.some(e=>e.kind===`tag`&&e.slug===a)&&i.push({kind:`tag`,slug:a}),n.push({slug:e,...a===`category`?{isCategory:!0}:{},contributions:i})}return n}function Zj(e){let t=rM(),n=new Set(t.map(e=>e.slug)),r=e.filter(e=>!n.has(e.slug)||e.contributions.length>0),i=new Set(r.map(e=>e.slug));return va([...t.filter(e=>!i.has(e.slug)),...r])}function Qj(e){return e.filter(e=>e.name.trim().length>0).map(e=>({slug:e.name.trim(),isCategory:!0,contributions:e.contributions??[]}))}async function $j(){return eM.loadTags()}var eM=new class{async loadTags(){let[e,t]=await Promise.all([Z.getAllTags(),Z.getAllTagTypes().catch(()=>[])]);return[...Qj(t),...Xj(e,t)]}},tM=va(rM()),nM=new Set;function rM(){return[{slug:`tonnage`,contributions:[{kind:`metric`,type:`resistance`,value:24,unit:`kg`},{kind:`metric`,type:`work`,value:`reps * resistance`},{kind:`metric`,type:`summaries.totalWork`,value:`sum(work)`}]},{slug:`metabolic`,contributions:[{kind:`metric`,type:`met`,value:8},{kind:`metric`,type:`metMinutes`,value:`met * convert(elapsed, min)`},{kind:`metric`,type:`summaries.totalMetMinutes`,value:`sum(metMinutes)`}]},{slug:`kettlebell-24kg`,contributions:[{kind:`metric`,type:`resistance`,value:24,unit:`kg`},{kind:`metric`,type:`work`,value:`reps * resistance`},{kind:`metric`,type:`summaries.totalWork`,value:`sum(work)`}]}]}function iM(){return tM}var aM=null;function oM(){return aM||=$j().then(e=>{tM=Zj(e);for(let e of nM)e();return tM}).finally(()=>{aM=null}),aM}async function sM(){tM=Zj(await $j());for(let e of nM)e();return tM}function cM(e){return nM.add(e),()=>nM.delete(e)}function lM(e){if(e.kind!==`wod`||!e.dialect)throw Error(`The saved revision is not a workout.`);let t=La(e.rawContent).find(t=>t.type===e.dialect);if(!t?.scriptBlock)throw Error(`The saved workout fence cannot be read.`);let n=t.scriptBlock.content;return{id:e.blockId,content:n,dialect:e.dialect,sport:e.sport,statements:kc().read(n,e.sport).statements,startLine:0,endLine:e.rawContent.split(`
|
|
84
|
-
`).length-1,version:e.version,state:`idle`,widgetIds:{},createdAt:e.savedAt}}async function uM(e,t,n,r,i=Cj){let a=Date.now(),o=await i.startSession(e,{id:n,noteId:e.noteId,blockId:t.id,blockContentId:t.contentId,origin:r??`journal`,startTime:a,endTime:a,duration:0,completed:!1,status:`in-progress`,createdAt:a});return{...o,block:lM(o.revision)}}async function dM(e,t,n,r){let i=await Z.getNote(e);if(!i)throw Error(`The note is unavailable. Save the note before starting a workout.`);return uM({noteId:i.id,rawContent:i.rawContent,blocks:i.blocks,expectedSourceRevision:i.sourceRevision},t,n,r)}function fM(e,...t){console.warn(`[${e}]`,...t)}function pM(e,...t){console.error(`[${e}]`,...t)}var mM=new Set;function hM(e){return mM.add(e),()=>{mM.delete(e)}}function gM(e){for(let t of mM)try{t(e)}catch(e){pM(`resultRecorder`,`error in listener:`,e)}}function _M(e){return{async record({resultId:t,data:n,createdAt:r}){let i=await e.finishSession(t,n,r);return gM(i),i}}}var vM=_M(Cj),yM=`sound`,bte=`wodwiki.soundProfiles.v1`,bM=`profiles`,xM=new jx(bte,wj?Oj:void 0);function SM(e){return`${qj}${e}`}function CM(e){return[{kind:`metric`,type:`sound`,value:e}]}function wM(e=xM){let t=e.get(bM);if(!Array.isArray(t))return[];let n=[],r=new Set;for(let e of t){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.id!=`string`||t.id.length===0||r.has(t.id))continue;r.add(t.id);let i=[];if(Array.isArray(t.rules))for(let e of t.rules){if(!e||typeof e!=`object`)continue;let t=e;typeof t.trigger==`string`&&typeof t.sound==`string`&&i.push({trigger:t.trigger,sound:t.sound})}n.push({id:t.id,name:typeof t.name==`string`&&t.name.length>0?t.name:t.id,rules:i})}return n}async function xte(e,t=xM){let n=e.map(e=>({id:e.id,name:e.name,rules:e.rules.map(e=>({trigger:e.trigger,sound:e.sound}))})),r=JSON.stringify(n);if(wj){try{await Aj(t.qualify(bM),r)}catch(e){return console.error(`[soundProfiles] server write failed:`,e),!1}return OM(),!0}return t.set(bM,n),t.getRaw(bM)===r&&(OM(),!0)}var TM=Promise.resolve();async function Ste(e,t=xM){let n=TM.then(async()=>xte(e(wM(t)),t));return TM=n.catch(()=>!1),n}async function Cte(e,t){let n=SM(e),r=(await t.getAllTags()).find(e=>e.label===n);if(r){let n=CM(e),i=r.contributions?.[0];if(r.contributions?.length===1&&i?.kind===`metric`&&i.type===n[0].type&&i.value===n[0].value)return;await t.putTag({...r,contributions:n,type:yM});return}await t.putTag({id:`sound-profile-${e}`,label:n,type:yM,contributions:CM(e),createdAt:Date.now()})}async function wte(e,t){let n=SM(e),r=(await t.getAllTags()).find(e=>e.label===n);r&&await t.deleteTag(r.id)}var EM=new Set,DM=0;function OM(){DM+=1;for(let e of EM)e()}function Tte(e){return EM.add(e),()=>{EM.delete(e)}}function Ete(){return DM}async function Dte(e,t={}){let{resultId:n,occurrence:r,metric:i}=e;if(!n||typeof n!=`string`)throw TypeError(`captureMetricCorrection: resultId is required`);if(!r?.blockKey||typeof r.blockKey!=`string`)throw TypeError(`captureMetricCorrection: occurrence.blockKey is required`);if(!i||typeof i.image!=`string`||i.image.length===0)throw TypeError(`captureMetricCorrection: metric.image is required`);if(typeof i.value!=`number`||!Number.isFinite(i.value))throw RangeError(`captureMetricCorrection: metric.value must be finite, got ${i.value}`);if(i.type===J.Rep&&(!Number.isSafeInteger(i.value)||i.value<0))throw RangeError(`captureMetricCorrection: rep corrections must be nonnegative safe integers, got ${i.value}`);let a=t.storage??Z,o=t.persistence??new Sj(a);if(!await a.getSessionById(n)||await a.withTransaction([`events`],async e=>{let t=(await e.getEventsByResult(n)).filter(e=>e.grain===`event`&&e.outputType===`segment`&&e.sourceBlockKey===r.blockKey&&(r.sourceStatementId===void 0||e.sourceStatementId===r.sourceStatementId)&&(r.stackLevel===void 0||e.stackLevel===r.stackLevel));if(t.length===0)return`not-found`;if(t.length>1)throw Error(`captureMetricCorrection: ambiguous occurrence ${r.blockKey} in result ${n} — ${t.length} segments match; pass sourceStatementId/stackLevel`);let a=t[0],o=[...a.metrics.filter(e=>e.origin!==`user`||e.type!==i.type),{type:i.type,value:i.value,image:i.image,origin:`user`,timestamp:new Date}],s=a.timeSpan?.started??a.timestamp,c={...a,metrics:o,...a.metricTemporal?{metricTemporal:o.map(()=>({temporalKind:`instant`,instant:s}))}:{}};return await e.appendEvents([c]),`captured`})===`not-found`)return`not-found`;try{return await o.rederiveResultAnalytics(n),`captured`}catch(e){if(e instanceof xb&&e.code===`BLOCK_REVISION_NOT_FOUND`)return`captured-no-rederive`;throw e}}var kM=null,AM=new Set;function jM(e){kM!==e&&(kM=e,AM.forEach(e=>e(kM)))}function MM(){return kM}function NM(e){return AM.add(e),()=>{AM.delete(e)}}var PM=(0,W.createContext)({transport:null});function FM(){let e=(0,W.useContext)(PM),[t,n]=W.useState(()=>MM());return W.useEffect(()=>NM(n),[]),e.transport??t}var Ote=({children:e,transport:t})=>{let n=(0,W.useMemo)(()=>({transport:t}),[t]);return(0,G.jsx)(PM.Provider,{value:n,children:e})},IM=(0,W.createContext)(void 0);function kte({children:e}){let[t,n]=(0,W.useState)(mA.isEnabled()),r=FM();(0,W.useEffect)(()=>{mA.setEnabled(t)},[t]);let i=(0,W.useCallback)((e,n=1)=>{if(t){if(r?.connected){console.log(`[AudioContext] Routing sound '${e}' to cast receiver`);try{r.send({type:`rpc-audio`,name:e,volume:n})}catch(t){console.error(`[AudioContext] Failed to send rpc-audio`,t),mA.playSound(e,n).catch(LM)}}else mA.playSound(e,n).catch(LM)}},[t,r]),a=(0,W.useCallback)(()=>{let e=!t;n(e),e&&(mA.setEnabled(!0),mA.playSound(`beep`).catch(LM))},[t]),o=(0,W.useCallback)(()=>{i(`chime`)},[i]),s=(0,W.useCallback)(()=>{i(`click`,.5)},[i]),c=(0,W.useMemo)(()=>({isEnabled:t,toggleAudio:a,playTestSound:o,playSound:i,playClick:s}),[t,a,o,i,s]);return(0,G.jsx)(IM.Provider,{value:c,children:e})}function LM(e){console.error(`[AudioContext] Sound playback failed`,e)}function RM(){let e=(0,W.useContext)(IM);if(e===void 0)throw Error(`useAudio must be used within an AudioProvider`);return e}var zM=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`FeedSourceError`}},BM=class{baseUrl;fetchImpl;constructor(e,t=fetch.bind(globalThis)){this.baseUrl=e,this.fetchImpl=t}async fetchManifest(){let e=await this.fetchImpl(`${this.baseUrl}manifest.json`,{cache:`no-cache`});if(!e.ok)throw new zM(`feed manifest fetch failed: HTTP ${e.status}`,e.status);return ib(await e.json())}async fetchChunk(e){let t=await this.fetchImpl(`${this.baseUrl}${e}`);if(!t.ok)throw new zM(`feed chunk fetch failed: HTTP ${t.status} for ${e}`,t.status);return await t.json()}},Ate=class{storageInstance;constructor(e){this.storageInstance=e}async getSeedMeta(e){return await this.storageInstance.readonly(`meta`).get(e)}async getNoteCommits(e){let t=await this.storageInstance.readonly(`notes`).getMany(e),n=new Map;for(let r=0;r<e.length;r++){let i=t[r];n.set(e[r],i?.seedCommit)}return n}async putSeedMeta(e,t){await this.storageInstance.transaction([`meta`],`readwrite`,async n=>{let r=n.readwrite(`meta`),i=await r.get(e.key);if(t!==void 0&&JSON.stringify(i??null)!==JSON.stringify(t))throw Error(`Seed checkpoint changed during claim`);await r.put(e)})}applyChunk(e){return Pee(this.storageInstance,e)}backfillFeedProvenance(){return Iee(this.storageInstance)}migrateNotebookVocabulary(){return Lee(this.storageInstance)}async removeSourceContent(e){return await this.storageInstance.transaction([`notes`,`attachments`,`note_tags`,`block_index`,`block_efforts`,`block_equipment`,`page_notes`,`efforts`,`equipment`,`meta`],`readwrite`,async t=>{let n=new Set,r=[];for(let[t,i]of Object.entries(e.chunks))if(i.noteIds?.length)for(let e of i.noteIds)n.add(e);else r.push(t);if(r.length)for(let e of await t.readwrite(`notes`).getAll())e.seedOrigin===`seed`&&e.seedChunkId&&r.includes(e.seedChunkId)&&n.add(e.id);let i=t.readwrite(`meta`),a=[];for(let t of await i.getAll()){let n=t;if(!n||typeof n.key!=`string`||!n.key.startsWith(`seed:`)||n.key===e.key)continue;let r=new Set;for(let e of Object.values(n.chunks??{}))for(let t of e.noteIds??[])r.add(t);a.push({key:n.key,sourceId:n.key.slice(5),rank:Dy(n.key,n.tier),meta:n,noteIds:r})}a.sort((e,t)=>t.rank-e.rank);let o=e=>a.some(t=>t.noteIds.has(e)),s=e.key.startsWith(`seed:`)?e.key.slice(5):e.key,c=t.readwrite(`notes`),l=0,u=new Set;for(let r of n){if(o(r))continue;let n=await c.get(r);if(!n||n.seedOrigin!==`seed`||n.seedChunkId&&!e.chunks[n.seedChunkId])continue;n.sourcePath&&u.add(n.sourcePath),await c.delete(r);let i=t.readwrite(`attachments`);for(let e of await i.getAllFromIndex(`by-note`,r))await i.delete(e.id);let a=t.readwrite(`note_tags`);for(let e of await a.getAllFromIndex(`by-note`,r))await a.delete(e.id);let s=t.readwrite(`block_index`);for(let e of await s.getAllFromIndex(`by-note`,r))await s.delete(e.id);let d=t.readwrite(`block_efforts`);for(let e of await d.getAllFromIndex(`by-note`,r))await d.delete(e.id);let f=t.readwrite(`block_equipment`);for(let e of await f.getAllFromIndex(`by-note`,r))await f.delete(e.id);let p=t.readwrite(`page_notes`);for(let e of await p.getAllFromIndex(`by-note`,r))await p.delete(e.id);l++}let d=[{storeName:`efforts`,familyPathPrefix:`markdown/efforts/`,parse:vl},{storeName:`equipment`,familyPathPrefix:`markdown/equipment/`,parse:yl}];for(let{storeName:e,familyPathPrefix:r,parse:i}of d){let o=t.readwrite(e);for(let t of await o.getAll()){if(t.registrySource!==`bundled`||!(t.sourceId===s||t.ownerNoteId!==void 0&&n.has(t.ownerNoteId)&&(!t.sourceId||t.sourceId===e)||t.sourcePath!==void 0&&t.sourcePath.startsWith(r)&&u.has(t.sourcePath)))continue;let l=!1;for(let n of a){let r=n.meta.chunks?.[e]?.noteIds??[];for(let e of r){let r=await c.get(e);if(!r||r.seedOrigin!==`seed`)continue;let a=i(r.rawContent);if(a&&a.slug===t.slug){await o.put({...a,registrySource:`bundled`,ownerNoteId:r.id,sourceId:n.sourceId,feedSourceId:n.sourceId,sourcePath:r.sourcePath??``}),l=!0;break}}if(l)break}l||await o.delete(t.slug)}}return await i.delete(e.key),l})}};function VM(){return new Ate(qk)}var HM={core:1};function jte(e,t){return e===void 0||e<=0||t>e?`import`:t===e?`current`:`server-stale`}function Mte(e,t){return e?.schema!==void 0&&e.schema!==9?!1:e?.seedVersion!=null&&e.seedVersion>0&&e.seedVersion===t}var UM=`wodwiki.seedSubscriptions`,WM=`wodwiki.seedAutoSync`,GM=null,KM=null,qM=new Set;function JM(e){let t={};try{let n=localStorage.getItem(e),r=n?JSON.parse(n):{};if(r&&typeof r==`object`&&!Array.isArray(r))for(let[e,n]of Object.entries(r))typeof n==`boolean`&&(t[e]=n)}catch{t={}}return t}function YM(){return GM||(GM=JM(UM),GM)}function XM(e,t){let n=!0;try{localStorage.setItem(e,JSON.stringify(t))}catch{n=!1}return n}function ZM(e){GM=e;let t=XM(UM,e);for(let e of qM)e();return t}function QM(e){let t=JA(e);if(t===`core`)return`full`;let n=YM();if(n[t]===!0||n[e]===!0)return`full`;let r=`${t}#`,i=`${e}#`;return Object.entries(n).some(([e,t])=>t===!0&&(e.startsWith(r)||e.startsWith(i)))?`partial`:`unsubscribed`}function $M(e){return e===`core`||QM(e)!==`unsubscribed`}function eN(e,t){if(e===`core`)return!0;let n={},r=`${e}#`;for(let[t,i]of Object.entries(YM()))t.startsWith(r)||BA.some(n=>n.feedId===e&&n.id===t)||(n[t]=i);return n[e]=t,ZM(n)}function tN(e,t){let n=JA(e);if(n===`core`)return!0;let r=YM(),i=`${n}#${t}`;if(i in r)return r[i]===!0;let a=`${e}#${t}`;return a in r?r[a]===!0:r[n]===!0||r[e]===!0}function nN(e,t,n,r){if(e===`core`)return!0;let i={...YM()},a=`${e}#${t}`,o=`${e}#`,s=r??BA.filter(t=>t.feedId===e).map(e=>e.chunkId);if(i[e]===!0&&!n){i[e]=!1;for(let n of s)n!==t&&(i[`${e}#${n}`]=!0);return i[a]=!1,ZM(i)}if(i[a]=n,n&&s.length>0&&s.every(n=>n===t||i[`${e}#${n}`]===!0)){i[e]=!0;for(let e of Object.keys(i))e.startsWith(o)&&delete i[e]}else!n&&s.length>0&&s.every(t=>i[`${e}#${t}`]===!1)&&(i[e]=!1);return ZM(i)}function rN(e){let t=JA(e),n=QM(t);if(n===`full`)return null;if(n===`unsubscribed`)return[];let r=YM(),i=`${t}#`,a=`${e}#`;return Object.entries(r).filter(([e,t])=>t===!0&&(e.startsWith(i)||e.startsWith(a))).map(([e])=>e.startsWith(i)?e.slice(i.length):e.slice(a.length))}function iN(e){return qM.add(e),()=>{qM.delete(e)}}function aN(){return KM||(KM=JM(WM),KM)}function oN(e){let t=aN();return e in t?t[e]===!0:e===`core`}function sN(e,t){let n={...aN(),[e]:t},r=XM(WM,n);KM=n;for(let e of qM)e();return r}async function Nte(e,t=VM()){let n={...YM()},r=[],i=!1;for(let[e,t]of Object.entries(qA))e in n&&(t in n||(n[t]=n[e],n[e]&&r.push(t)),delete n[e],i=!0);for(let e of BA){let t=e.chunkId.replace(/^notebook\./,``),r=`${e.feedId}#${e.chunkId}`,a=[e.feedId];for(let[t,n]of Object.entries(qA))n===e.feedId&&a.push(t);for(let o of a)for(let a of[`collection.${t}`,`feed.${t}`,e.chunkId]){let e=`${o}#${a}`;e===r||!(e in n)||(r in n||(n[r]=n[e]),delete n[e],i=!0)}}for(let e of BA)e.id in n&&(e.feedId in n||(n[e.feedId]=n[e.id],n[e.id]&&r.push(e.feedId)),delete n[e.id]);for(let{id:i}of e)if(!(i===`core`||i in n))try{let e=await t.getSeedMeta(Ay(i));e&&e.seedVersion>0&&(n[i]=!0,r.push(i))}catch{}return(r.length||i)&&ZM(n),r}var Pte=new class{_db;constructor(e){this._db=e}get db(){return this._db??Z}async load(){return this.db.getAllEquipment()}async save(e){await this.db.saveEquipment(e)}async delete(e){await this.db.deleteEquipment(e)}};async function cN(e){let t=await Z.getAllEquipment();await e.loadBundled(t.filter(e=>e.registrySource===`bundled`)),dN()}var lN=new Set;function uN(e){return lN.add(e),()=>lN.delete(e)}function dN(){for(let e of lN)e()}var fN=null;function pN(){return fN||=new Rl({storage:Pte}),fN}var mN=class{storage;source;sourceId;now;constructor(e,t,n,r=Date.now){this.storage=e,this.source=t,this.sourceId=n,this.now=r}async applyAll(e={}){let t=ib(e.manifest??await this.source.fetchManifest()),n=Ay(this.sourceId),r=e.stored===void 0?await this.storage.getSeedMeta(n):e.stored,i=r?.schema===9?r:void 0,a=i??My(n);if(t.version<a.seedVersion)throw Error(`Seed manifest is older than the stored checkpoint`);let o=t.chunks.filter(t=>!(e.notebookIds!==void 0&&e.notebookIds!==null&&(e.notebookIds.length===0||!e.notebookIds.includes(t.id)&&t.id!==`efforts`&&t.id!==`equipment`))),s=!!(t.notebooks&&t.notebooks.length>0),c=o.filter(n=>{let r=t.notebooks?.find(e=>e.notebookId===n.id),i=a.chunks[n.id];if(e.forceAll||!i)return!0;if(r){if((r.version??0)>(i.version??0))return!0}else if(!s&&(t.version!==a.seedVersion||t.builtAt!==a.builtAt))return!0;return i.sha256!==n.sha256});c.sort((e,t)=>Number(t.id===ky)-Number(e.id===ky));let l=Object.keys(a.chunks).filter(e=>!t.chunks.some(t=>t.id===e)),u={status:`current`,appliedChunks:0,totalNotes:0,totalEfforts:0,totalEquipment:0,totalBlocks:0,skippedUserOwned:0,deleted:0,addedNotes:0,updatedNotes:0};if(!c.length&&!l.length&&t.version===a.seedVersion&&t.builtAt===a.builtAt)return u;u.status=`imported`;let d=(t,n,r,i,a)=>e.onProgress?.({phase:t,chunkId:n,completedChunks:u.appliedChunks,totalChunks:c.length,totalNotes:u.totalNotes,totalEfforts:u.totalEfforts,totalEquipment:u.totalEquipment,totalBlocks:u.totalBlocks,skippedUserOwned:u.skippedUserOwned,deleted:u.deleted,addedNotes:u.addedNotes,updatedNotes:u.updatedNotes,...r===void 0?{}:{recordId:r},...i===void 0?{}:{completedRecords:i},...a===void 0?{}:{totalRecords:a}});for(let n=0;n<c.length;){let r=c.slice(n,n+(c[n]?.id===`canvas`?1:4));for(let n of r){let r,o=t.notebooks?.find(e=>e.notebookId===n.id),s=n.records,c=!!(a.chunks[n.id]&&e.granularRecords&&(o?.indexPath||n.records));if(c||e.granularRecords&&n.records&&n.records.length>0){if(c&&o?.indexPath&&(s=jee(await this.source.fetchChunk(o.indexPath)).records),s&&s.length>0){let t=!e.forceAll&&this.storage.getNoteCommits?await this.storage.getNoteCommits(s.map(e=>e.uuid)):void 0,i=t?s.filter(e=>t.get(e.uuid)!==e.commit):s;if(c&&i.length>s.length/2){if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`)}else{let e=[],t=0;for(let r of i){d(`fetching`,n.id,r.uuid,t,i.length);let a=await this.source.fetchChunk(r.recordPath),o=Array.isArray(a)?ab(a):[Mee(a)];e.push(...o),t++}r=e}}else if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`)}else if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`);let l=s&&s.length>0?s.map(e=>e.uuid):await Promise.all(r.map(e=>ob(e.path))),f={...a,seedVersion:t.version,builtAt:t.builtAt,chunks:{...a.chunks,[n.id]:{sha256:n.sha256,version:o?.version,builtAt:o?.builtAt??t.builtAt,importedAt:this.now(),noteIds:l}},importedAt:this.now()};d(`applying`,n.id);let p=await this.storage.applyChunk({chunkId:n.id,rows:r,manifest:t,expectedMeta:i,meta:f});u.totalNotes+=p.totalNotes,u.totalEfforts+=p.totalEfforts,u.totalEquipment+=p.totalEquipment,u.totalBlocks+=p.totalBlocks,u.skippedUserOwned+=p.skippedUserOwned,u.deleted+=p.deleted,u.addedNotes+=p.addedNotes,u.updatedNotes+=p.updatedNotes,u.appliedChunks++,a=f,i=f,d(`committed`,n.id),n.id===`canvas`&&e.onFirstPaintApplied?.()}n+=r.length}for(let e of l){let n={...a.chunks};delete n[e];let r={...a,chunks:n,importedAt:this.now()},o=await this.storage.applyChunk({chunkId:e,rows:[],manifest:t,expectedMeta:i,meta:r});u.deleted+=o.deleted,a=r,i=r}let f={...a,schema:9,seedVersion:t.version,builtAt:t.builtAt,importedAt:this.now()};return await this.storage.applyChunk({chunkId:null,rows:[],manifest:t,expectedMeta:i,meta:f}),d(`finalizing`,null),u}},hN=45e3;function gN(e){return(e instanceof Error?e.message:String(e)).replace(/(authToken["'=:\s]+)[^&\s,"']+/gi,`$1…`).replace(/(Bearer\s+)[\w.-]+/gi,`$1…`).replace(/https?:\/\/[^\s]+/gi,e=>{try{let t=new URL(e);return`${t.protocol}//${t.host}/…`}catch{return`…`}}).slice(0,300)}function _N(e,t,n){let r=e?.claim;return!!r&&r.owner!==t&&n-r.at<45e3}async function vN(e,t,n={}){let{storage:r,owner:i}=t,a=t.now,o=Ay(e.id),s={outcome:`current`,error:null,manifestChecked:!1,hadCheckpoint:!1};try{let c=await r.getSeedMeta(o);if(s.hadCheckpoint=(c?.seedVersion??0)>0,!t.force&&!t.probeManifests&&Mte(c,e.embeddedVersion))return s.outcome=`current`,s;if(_N(c,i,a()))return s.outcome=`busy`,s;let l=ib(await e.source.fetchManifest());s.manifestChecked=!0;let u=t.force?`import`:jte(c?.seedVersion,l.version);if(u===`server-stale`)return s.outcome=`server-stale`,s;if(c&&c.schema!==9)throw Error(`Incompatible seed checkpoint; recreate storage`);if(t.background&&!e.autoSyncOn)return s.outcome=l.chunks.filter(t=>!(e.notebookIds!==void 0&&e.notebookIds!==null&&(e.notebookIds.length===0||!e.notebookIds.includes(t.id)&&t.id!==`efforts`&&t.id!==`equipment`))).some(e=>{let t=l.notebooks?.find(t=>t.notebookId===e.id),n=c?.chunks[e.id];return!n||t&&(t.version??0)>(n.version??0)?!0:n.sha256!==e.sha256})?`update-pending`:`current`,s;if(!t.force&&u===`current`&&c?.schema===9&&c.builtAt===l.builtAt)return s.outcome=`current`,s;let d={...c??My(o),...e.tier?{tier:e.tier}:{},claim:{owner:i,at:a()}};await r.putSeedMeta(d,c??null);try{let i=await new mN(r,e.source,e.id,a).applyAll({forceAll:t.force===!0,onFirstPaintApplied:()=>n.onFirstPaint?.(),onProgress:n.onProgress,notebookIds:e.notebookIds,granularRecords:e.granularRecords,manifest:l,stored:d});s.outcome=`imported`,i.status===`imported`&&(s.applied=!0,s.importedVersion=l.version,s.added=i.addedNotes,s.updated=i.updatedNotes)}finally{let e=await r.getSeedMeta(o);e?.claim?.owner===i&&await r.putSeedMeta({...e,claim:null},e)}return s}catch(t){return console.warn(`[feedSync] ${e.id} seed sync failed`,t),s.outcome=`error`,s.error=gN(t),s}}function yN(){try{return typeof localStorage<`u`&&localStorage.getItem(`wodwiki.seedImport.enabled`)!==`0`}catch{return!1}}function bN(){let e=new Set(jA()),t=SA(xA);return[{id:`core`,label:`Core`,source:new BM(t),url:t,embeddedVersion:HM.core??0},...FA.map(e=>({id:e.id,label:e.label,source:new BM(e.url),url:e.url,...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},embeddedVersion:0,autoImport:e.autoImport??!1,tier:e.tier,...e.description?{description:e.description}:{}})),...wA().map(e=>({id:e.id,label:e.label,source:new BM(e.url),url:e.url,repositoryUrl:e.repositoryUrl,embeddedVersion:HM[e.id]??0,autoImport:!1}))].filter(t=>!e.has(t.id))}function xN(e){try{if(typeof BroadcastChannel<`u`){let t=new BroadcastChannel(Oy);t.postMessage(e),t.close()}}catch{}}async function SN(){ck(),await sM().catch(()=>{});let e=LO();e.isInitialized()&&await MO(e);let t=pN();t.isInitialized()&&await cN(t)}function CN(e){return e.includes(`error`)?`error`:e.includes(`imported`)?`imported`:e.includes(`update-pending`)?`update-pending`:e.includes(`server-stale`)?`server-stale`:e.includes(`busy`)?`busy`:`current`}function wN(e,t,n,r){let i=n.now??Date.now,a=n.broadcast??xN,o=n.reportActivity!==!1;if(t.manifestChecked&&IN(e.id,i()),t.outcome===`error`){let i=t.error??`feed sync failed`;n.mode===`background`&&r?.set(e.id,{sourceId:e.id,label:e.label,state:`error`}),o&&Zx(i);return}t.outcome===`imported`&&t.applied&&(a({kind:`seed-imported`,source:e.id,version:t.importedVersion}),SN(),o&&Yx({source:e.label,added:t.added??0,updated:t.updated??0}),r&&t.hadCheckpoint&&r.set(e.id,{sourceId:e.id,label:e.label,state:`updated`})),r&&t.outcome===`update-pending`&&r.set(e.id,{sourceId:e.id,label:e.label,state:`pending`})}function TN(){return typeof Worker<`u`&&!0}async function EN(e,t,n){return await new Promise(r=>{let i;try{i=new Worker(new URL(`/assets/feedSync.worker-CK48nNHX.js`,``+import.meta.url),{type:`module`})}catch(e){console.warn(`[feedSync] seed worker unavailable; running on main thread`,e),r(null);return}let a=t.mode===`background`?new Map:void 0,o=[],s=e.length,c=!1,l=e=>{Xx(null),i.terminate(),r(e)};i.onerror=e=>{console.warn(`[feedSync] feed worker failed`,e.message??`unknown error`),l(c?CN(o):null)},i.onmessage=n=>{c=!0;let r=n.data;if(r.type===`progress`){let n=e.find(e=>e.id===r.sourceId);Xx({sourceId:r.sourceId,sourceLabel:n?.label??r.sourceId,chunkId:r.progress.chunkId,recordId:r.progress.recordId,completedRecords:r.progress.completedRecords,totalRecords:r.progress.totalRecords,completedChunks:r.progress.completedChunks,totalChunks:r.progress.totalChunks,phase:r.progress.phase}),t.onProgress?.({...r.progress,sourceId:r.sourceId,sourceLabel:n?.label??r.sourceId,sourceIndex:e.indexOf(n)+1,totalSources:s});return}if(r.type===`first-paint`){SN(),t.onFirstPaint?.();return}if(r.type===`source-result`){let n=e.findIndex(e=>e.id===r.sourceId),i=e[n];if(!i)return;o.push(r.result.outcome),wN(i,r.result,t,a),t.onProgress?.({phase:`finished`,outcome:r.result.outcome,error:r.result.error,sourceId:i.id,sourceLabel:i.label,sourceIndex:n+1,totalSources:s});return}a&&MN([...a.values()]),l(CN(r.outcomes.length?r.outcomes:o))},i.postMessage({type:`run`,dbName:Dk(),userId:Wk.currentSync()?.id??null,owner:n,force:t.force,probeManifests:t.probeManifests,background:t.mode===`background`,sources:e.map(e=>({id:e.id,label:e.label,url:SA(e.url),...e.tier?{tier:e.tier}:{},embeddedVersion:e.embeddedVersion,autoSyncOn:oN(e.id),notebookIds:t.notebookIds===void 0?QM(e.id)===`partial`?rN(e.id)??void 0:t.mode===`background`&&QM(e.id)===`unsubscribed`?[]:void 0:t.notebookIds??void 0,granularRecords:!0}))})})}var DN=null,ON=0,kN=new Set;function AN(){return DN}function jN(e){return kN.add(e),()=>{kN.delete(e)}}function MN(e){DN=e.length?{id:++ON,updates:e}:null;for(let e of kN)e()}function NN(e){DN?.updates.some(t=>t.sourceId===e)&&MN(DN.updates.filter(t=>t.sourceId!==e))}var PN=`wodwiki.seedChecks`;function FN(){try{let e=JSON.parse(localStorage.getItem(PN)??`null`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`number`))}catch{return{}}}function IN(e,t){try{localStorage.setItem(PN,JSON.stringify({...FN(),[e]:t}))}catch{}}function LN(e){return FN()[e]??null}async function RN(e={}){let t=[],n=e.storage??VM(),r=e.mode===`background`?new Map:void 0;if(!(e.isEnabled??yN)())return`disabled`;let i=e.owner??`seed-${(e.now??Date.now)()}-${Math.random().toString(36).slice(2,8)}`,a=e.sources??bN();if(!e.storage&&!e.now&&TN()){let t=await EN(a,e,i);if(t)return t}for(let[o,s]of a.entries()){let c=await BN(s,e,n,i,o+1,a.length,r);console.debug(`[feedSync] ${s.id} outcome: ${c}`),t.push(c)}return r&&MN([...r.values()]),CN(t)}async function zN(e={}){let t=e.sources??bN(),n=e.storage??VM();await QN({storage:n}).catch(e=>console.warn(`[feedSync] core registry migration failed`,e));let r;try{r=await n.getSeedMeta(Ay(`core`))}catch(e){return console.warn(`[feedSync] boot provider probe failed`,e),`error`}if(!r||r.seedVersion<=0)return RN({...e,sources:t.filter(e=>e.autoImport!==!1)});let i=t.filter(e=>e.id===`core`||QM(e.id)!==`unsubscribed`);return RN({...e,sources:i,probeManifests:!0,mode:`background`,reportActivity:!1})}async function BN(e,t,n,r,i,a,o){let s=t.now??Date.now,c=t.onProgress,l=t.reportActivity!==!1,u=(t,n=null)=>c?.({phase:`finished`,outcome:t,error:n,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});c?.({phase:`checking`,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});let d=l?Jx(`download`,e.label):()=>{};try{let l=await vN({id:e.id,label:e.label,source:e.source,embeddedVersion:e.embeddedVersion,autoSyncOn:oN(e.id),...e.tier?{tier:e.tier}:{},notebookIds:t.notebookIds===void 0?QM(e.id)===`partial`?rN(e.id)??void 0:t.mode===`background`&&QM(e.id)===`unsubscribed`?[]:void 0:t.notebookIds??void 0,granularRecords:!0},{storage:n,owner:r,now:s,force:t.force,probeManifests:t.probeManifests,background:t.mode===`background`},{onProgress:t=>{Xx({sourceId:e.id,sourceLabel:e.label,chunkId:t.chunkId,recordId:t.recordId,completedRecords:t.completedRecords,totalRecords:t.totalRecords,completedChunks:t.completedChunks,totalChunks:t.totalChunks,phase:t.phase}),c?.({...t,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a})},onFirstPaint:()=>{ck(),t.onFirstPaint?.()}});return wN(e,l,t,o),u(l.outcome,l.error),l.outcome}finally{Xx(null),d()}}async function VN(e,t={}){let n=(t.sources??bN()).find(t=>t.id===e);if(!n)return console.warn(`[feedSync] unknown feed source: ${e}`),`error`;let r=await RN({...t,sources:[n]});return(r===`imported`||r===`current`)&&(t.subscribe===!1?$M(e)||eN(e,!1):!t.preserveSubscriptionState&&!t.notebookIds&&eN(e,!0),NN(e)),r}async function HN(e,t,n={}){return VN(e,{...n,notebookIds:[t],preserveSubscriptionState:!0,force:!0})}async function UN(e,t,n,r={}){if(n)return nN(e,t,!0),{outcome:await HN(e,t,r)};{nN(e,t,!1);let n=r.storage??VM(),i=await n.getSeedMeta(Ay(e));if(!i||!i.chunks[t])return{deleted:0};let a={...i.chunks};if(delete a[t],Object.keys(a).length===0){let t=await n.removeSourceContent(i);ck();let r=LO();r.isInitialized()&&await MO(r);let a=pN();return a.isInitialized()&&await cN(a),xN({kind:`seed-removed`,source:e}),{deleted:t}}let o={...i,chunks:a,importedAt:Date.now()},s={schema:9,version:i.seedVersion,builtAt:i.builtAt,chunks:[]},c=await n.applyChunk({chunkId:t,rows:[],manifest:s,expectedMeta:i,meta:o});ck();let l=LO();l.isInitialized()&&await MO(l);let u=pN();return u.isInitialized()&&await cN(u),xN({kind:`seed-removed`,source:e}),{deleted:c.deleted}}}async function WN(e,t={}){if(e===`core`)return{deleted:0};let n=t.storage??VM(),r=await n.getSeedMeta(Ay(e)),i=r?await n.removeSourceContent(r):0;eN(e,!1),sN(e,!1),NN(e),ck();let a=LO();a.isInitialized()&&await MO(a);let o=pN();return o.isInitialized()&&await cN(o),xN({kind:`seed-removed`,source:e}),{deleted:i}}async function GN(e,t={}){if(e===`core`)return{deleted:0};let n=await WN(e,t);return wA().some(t=>t.id===e)?DA(e):AA(e),n}async function KN(e={}){let t=e.storage??VM(),n=!1,r=!1;return await Promise.all((e.sources??bN()).map(async e=>{try{let i=await t.getSeedMeta(Ay(e.id));if(!i||i.seedVersion<=0)return;e.autoImport===!1?r=!0:n=!0}catch{}})),{coreImported:n,libraryImported:r}}async function qN(e={}){let t=e.storage??VM();return{sources:await Promise.all((e.sources??bN()).map(async n=>{let r=await t.getSeedMeta(Ay(n.id)),i=null,a=null,o=null,s=n.repositoryUrl;try{o=ib(await n.source.fetchManifest()),i={version:o.version,schema:o.schema,builtAt:o.builtAt},s??=bA(o.repositoryUrl??``)??void 0,IN(n.id,(e.now??Date.now)())}catch(e){a=e instanceof Error?e.message:String(e)}let c=JN(n.id,o,r);return{id:n.id,label:n.label,url:n.url,...s?{repositoryUrl:s}:{},...n.description?{description:n.description}:{},autoImport:n.autoImport!==!1,notebooks:c,stored:r?{version:r.seedVersion,schema:r.schema,builtAt:r.builtAt,importedAt:r.importedAt}:null,remote:i,remoteError:a,upToDate:r!=null&&i!=null&&r.schema===9&&r.seedVersion===i.version,count:c.reduce((e,t)=>e+t.count,0),bytes:c.reduce((e,t)=>e+t.bytes,0),checkedAt:LN(n.id),subscribed:$M(n.id),autoSync:oN(n.id)}}))}}function JN(e,t,n){let r={};for(let t of WA(e))r[t.chunkId]=t;let i=(t?.chunks??[]).map(t=>({id:r[t.id]?.id??t.id,label:r[t.id]?.label??t.id,chunkId:t.id,count:t.count,bytes:t.bytes,imported:!!n?.chunks[t.id],subscribed:tN(e,t.id)}));return i.length>0?i:WA(e).map(t=>({id:t.id,label:t.label,chunkId:t.chunkId,count:0,bytes:0,imported:!!n?.chunks[t.chunkId],subscribed:tN(e,t.chunkId)}))}async function YN(e={}){let t=e.storage??VM(),n=0;for(let e of FA){let r=Ay(e.id);try{let i=await t.getSeedMeta(r);if(i&&i.seedVersion>0)continue;let a=[];for(let n of WA(e.id)){if(n.id===e.id)continue;let r=await t.getSeedMeta(Ay(n.id));r&&r.seedVersion>0&&a.push(r)}if(a.length===0)continue;let o=a.reduce((e,t)=>t.seedVersion>e.seedVersion?t:e),s=a.find(e=>e.tier)?.tier,c={key:r,schema:o.schema,seedVersion:o.seedVersion,builtAt:o.builtAt,importedAt:Math.max(...a.map(e=>e.importedAt)),chunks:Object.assign({},...a.map(e=>e.chunks)),...s?{tier:s}:{},claim:null};await t.putSeedMeta(c,i??null);for(let e of a)await t.putSeedMeta({...e,seedVersion:0,chunks:{},claim:null},e);n+=1}catch(t){console.warn(`[feedSync] legacy checkpoint adoption failed for ${e.id}`,t)}}return n}async function XN(e={}){return await(e.storage??VM()).backfillFeedProvenance()}async function ZN(e={}){return await(e.storage??VM()).migrateNotebookVocabulary()}async function QN(e={}){let t=e.storage??VM(),n=Ay(`seed-core`),r=await t.getSeedMeta(n),i=r?.chunks??{};if(!r||r.seedVersion<=0&&Object.keys(i).length===0&&!r.claim)return!1;let a=Ay(`core`),o=await t.getSeedMeta(a),s={...o?.chunks};for(let[e,t]of Object.entries(i)){let n=s[e];s[e]=n?{sha256:n.sha256,noteIds:[...new Set([...n.noteIds??[],...t.noteIds??[]])]}:{...t,noteIds:t.noteIds??[]}}let c=o?{...o,builtAt:``,claim:null,chunks:s}:{...My(a),chunks:s};return await t.putSeedMeta(c,o??null),await t.putSeedMeta(My(n),r),!0}var $N=(0,W.createContext)(null);function eP({children:e}){let[{isReady:t,error:n,revision:r},i]=(0,W.useState)({isReady:!1,error:null,revision:0}),a=LO(),o=(0,W.useCallback)(async()=>{try{await MO(a),i(e=>({isReady:!0,error:null,revision:e.revision+1}))}catch(e){i(t=>({...t,isReady:!1,error:e instanceof Error?e:Error(String(e))}))}},[a]),s=(0,W.useCallback)(async()=>{await o()},[o]);return(0,W.useEffect)(()=>{o()},[o]),(0,W.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(Oy);return e.onmessage=()=>{s()},()=>e.close()},[s]),(0,G.jsx)($N.Provider,{value:{registry:a,isReady:t,error:n,revision:r,refresh:s},children:e})}function tP(){let e=(0,W.useContext)($N);if(!e)throw Error(`useEffortRegistry must be within EffortRegistryProvider`);return e}var nP=(0,W.createContext)(null);function rP({children:e}){let[t,n]=(0,W.useState)(!1),[r,i]=(0,W.useState)(null),a=pN(),o=(0,W.useCallback)(async()=>{try{await cN(a),n(!0),i(null)}catch(e){i(e instanceof Error?e:Error(String(e))),n(!1)}},[a]),s=(0,W.useCallback)(async()=>{n(!1),await o()},[o]);return(0,W.useEffect)(()=>{o()},[o]),(0,W.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(Oy);return e.onmessage=()=>{s()},()=>e.close()},[s]),(0,G.jsx)(nP.Provider,{value:{registry:a,isReady:t,error:r,refresh:s},children:e})}function iP(){let e=(0,W.useContext)(nP);if(!e)throw Error(`useEquipmentRegistry must be within EquipmentRegistryProvider`);return e}var aP=gt,oP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(p,{ref:n,className:K(`pointer-events-none fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]`,e),...t}));oP.displayName=p.displayName;var sP=R(`group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full`,{variants:{variant:{default:`border bg-background text-foreground`,destructive:`destructive group border-destructive bg-destructive text-destructive-foreground`}},defaultVariants:{variant:`default`}}),cP=W.forwardRef(({className:e,variant:t,...n},r)=>(0,G.jsx)(lr,{ref:r,className:K(sP({variant:t}),e),...n}));cP.displayName=lr.displayName;var lP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(ot,{ref:n,className:K(`inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive`,e),...t}));lP.displayName=ot.displayName;var uP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(er,{ref:n,className:K(`absolute right-2 top-2 rounded-md p-1 text-muted-foreground opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-destructive-foreground group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive group-[.destructive]:focus:ring-offset-background`,e),"toast-close":``,"aria-label":`Dismiss notification`,...t,children:(0,G.jsx)(xr,{className:`h-4 w-4`})}));uP.displayName=er.displayName;var dP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(Oe,{ref:n,className:K(`text-sm font-semibold`,e),...t}));dP.displayName=Oe.displayName;var fP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(pr,{ref:n,className:K(`text-sm opacity-90`,e),...t}));fP.displayName=pr.displayName;var pP=3,mP=1e6,hP=0;function gP(){return hP=(hP+1)%(2**53-1),hP.toString()}var _P=new Map,vP=e=>{if(_P.has(e))return;let t=setTimeout(()=>{_P.delete(e),SP({type:`REMOVE_TOAST`,toastId:e})},mP);_P.set(e,t)},yP=(e,t)=>{switch(t.type){case`ADD_TOAST`:return{...e,toasts:[t.toast,...e.toasts].slice(0,pP)};case`UPDATE_TOAST`:return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case`DISMISS_TOAST`:{let{toastId:n}=t;return n?vP(n):e.toasts.forEach(e=>vP(e.id)),{...e,toasts:e.toasts.map(e=>!n||e.id===n?{...e,open:!1}:e)}}case`REMOVE_TOAST`:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},bP=[],xP={toasts:[]};function SP(e){xP=yP(xP,e),bP.forEach(e=>e(xP))}function Q(e){let t=gP(),n=()=>SP({type:`DISMISS_TOAST`,toastId:t}),r=e=>SP({type:`UPDATE_TOAST`,toast:{...e,id:t}});return SP({type:`ADD_TOAST`,toast:{...e,id:t,open:!0,onOpenChange:e=>{e||n()}}}),{id:t,dismiss:n,update:r}}function CP(){let[e,t]=W.useState(xP);return W.useEffect(()=>(bP.push(t),()=>{let e=bP.indexOf(t);e>-1&&bP.splice(e,1)}),[e]),{...e,toast:Q,dismiss:e=>SP({type:`DISMISS_TOAST`,toastId:e})}}function wP(){let{toasts:e}=CP();return(0,G.jsxs)(aP,{children:[e.map(function({id:e,title:t,description:n,action:r,...i}){return(0,G.jsxs)(cP,{...i,children:[(0,G.jsxs)(`div`,{className:`grid gap-1`,children:[t&&(0,G.jsx)(dP,{children:t}),n&&(0,G.jsx)(fP,{children:n})]}),r,(0,G.jsx)(uP,{})]},e)}),(0,G.jsx)(oP,{})]})}var TP={activeL1Id:null,activeL2Id:null,activeL3Id:null,leftDrawerOpen:!1,rightDrawerOpen:!1,expandedIds:new Set,journalFilter:{selectedDate:null,selectedTags:[]},searchFilter:{scope:`all`}};function EP(e,t){switch(t.type){case`SET_ACTIVE_L1`:return e.activeL1Id===t.id?e:{...e,activeL1Id:t.id};case`SET_ACTIVE_L2`:return e.activeL2Id===t.id?e:{...e,activeL2Id:t.id};case`SET_ACTIVE_L3`:return e.activeL3Id===t.id?e:{...e,activeL3Id:t.id};case`SET_LEFT_DRAWER`:return e.leftDrawerOpen===t.open?e:{...e,leftDrawerOpen:t.open};case`SET_RIGHT_DRAWER`:return e.rightDrawerOpen===t.open?e:{...e,rightDrawerOpen:t.open};case`TOGGLE_EXPANDED`:{let n=new Set(e.expandedIds);return n.has(t.id)?n.delete(t.id):n.add(t.id),{...e,expandedIds:n}}case`SET_JOURNAL_DATE`:return{...e,journalFilter:{...e.journalFilter,selectedDate:t.date}};case`SET_JOURNAL_TAGS`:return{...e,journalFilter:{...e.journalFilter,selectedTags:t.tags}};case`SET_SEARCH_SCOPE`:return{...e,searchFilter:{scope:t.scope}};default:return e}}var DP=e=>{let t=document.getElementById(e);if(t){let e=t.getBoundingClientRect().top+window.scrollY-80;window.scrollTo({top:e,behavior:`smooth`})}},OP=(0,W.createContext)({tree:[],navState:TP,dispatch:()=>{},l3Items:[],setL3Items:()=>{},secondarySpec:void 0,setSecondarySpec:()=>{},contextNav:void 0,setContextNav:()=>{},streamControls:null,setStreamControls:()=>{},scrollToSection:DP,registerScrollFn:()=>{},openCreateJournal:()=>{},registerCreateJournal:()=>{}});function kP(){return(0,W.useContext)(OP)}function AP(e){let{tree:t,dispatch:n}=kP();(0,W.useEffect)(()=>{e&&t.some(t=>t.id===e)&&n({type:`SET_ACTIVE_L1`,id:e})},[e,t,n])}function jP({tree:e,children:t}){let[n,r]=(0,W.useReducer)(EP,TP),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(void 0),[c,l]=(0,W.useState)(void 0),[u,d]=(0,W.useState)(null),f=(0,W.useCallback)(e=>{s(t=>t===e?t:e)},[]),p=(0,W.useCallback)(e=>{l(t=>{let n=typeof e==`function`?e(t):e;return t===n||!t&&!n||t&&n&&t.pathname===n.pathname&&t.spec===n.spec?t:n})},[]),m=(0,W.useCallback)(e=>{d(t=>t===e?t:e)},[]),h=En(),g=(0,W.useRef)(DP),_=(0,W.useRef)(null);(0,W.useEffect)(()=>{let t=e.find(e=>e.isActive?e.isActive(h,n):e.action.type===`route`?e.action.to===`/`?h.pathname===`/`||h.pathname===``:h.pathname.startsWith(e.action.to):!1);r({type:`SET_ACTIVE_L1`,id:t?.id??null})},[h.pathname]),(0,W.useEffect)(()=>{r({type:`SET_LEFT_DRAWER`,open:!1})},[h.pathname]);let v=(0,W.useCallback)(e=>{a(t=>t.length===e.length&&t.every((t,n)=>t.id===e[n]?.id&&t.label===e[n]?.label&&t.secondaryAction?.id===e[n]?.secondaryAction?.id&&t.secondaryRunIcon===e[n]?.secondaryRunIcon)?t:e)},[]),y=(0,W.useCallback)(e=>{r({type:`SET_ACTIVE_L3`,id:e}),g.current(e)},[]),b=(0,W.useCallback)(e=>{g.current=e},[]),x=(0,W.useCallback)(e=>{_.current?.(e)},[]),S=(0,W.useCallback)(e=>{_.current=e},[]),C=(0,W.useMemo)(()=>({tree:e,navState:n,dispatch:r,l3Items:i,setL3Items:v,secondarySpec:o,setSecondarySpec:f,contextNav:c,setContextNav:p,streamControls:u,setStreamControls:m,scrollToSection:y,registerScrollFn:b,openCreateJournal:x,registerCreateJournal:S}),[e,n,i,v,o,f,c,p,u,m,y,b,x,S]);return(0,G.jsx)(OP.Provider,{value:C,children:t})}function MP(e){if(!e)return null;let t=X(e);return t.error?`Couldn't parse "${e}" — ${t.error}`:null}var NP=1e3;function PP(e){let t=(0,W.useRef)(e);t.current=e;let[n,r]=Rt(),i=n.get(`q`)??``,[a,o]=(0,W.useState)(()=>{let{defaultQuery:e,legacy:r}=t.current;return i?X(i).error?r?.salvageQ?.(i,n)??e:i:r?.toQuery(n)??e}),[s,c]=(0,W.useState)(()=>!i||!X(i).error||t.current.legacy?.salvageQ?.(i,n)?null:MP(i)),l=(0,W.useRef)(a);l.current=a;let u=(0,W.useRef)(n);u.current=n;let d=(0,W.useRef)(!1);(0,W.useEffect)(()=>{if(d.current)return;d.current=!0;let{legacy:e}=t.current,n=u.current,i=n.get(`q`)??``,a=null;if(i?X(i).error&&(a=e?.salvageQ?.(i,n)??null):a=e?.toQuery(n)??null,!a)return;let o=new URLSearchParams(n);for(let t of e?.keys??[])o.delete(t);o.set(`q`,a),r(o,{replace:!0})},[r]);let f=(0,W.useRef)(!0),p=(0,W.useRef)(null),m=(0,W.useRef)(i);(0,W.useEffect)(()=>{if(i===m.current)return;m.current=i,f.current=!0,clearTimeout(p.current),p.current=null,c(MP(i));let e=i&&!X(i).error?i:t.current.defaultQuery;o(t=>t===e?t:e)},[i]);let h=(0,W.useRef)(t.current.defaultQuery);return(0,W.useEffect)(()=>{let e=t.current.defaultQuery;e!==h.current&&(h.current=e,!i&&o(t=>t===e?t:e))},[i,t.current.defaultQuery]),(0,W.useEffect)(()=>{let e=()=>{let e=new URLSearchParams(window.location.search).get(`q`)??``;e!==m.current&&(m.current=e,f.current=!0,clearTimeout(p.current),p.current=null,c(MP(e)),o(e&&!X(e).error?e:t.current.defaultQuery))};return window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`popstate`,e),clearTimeout(p.current)}},[]),{query:a,setQuery:(0,W.useCallback)(e=>{if(o(e),!X(e).error&&e!==l.current){let t=new URLSearchParams(u.current);t.set(`q`,e),m.current=e,r(t,{replace:!f.current}),f.current=!1,clearTimeout(p.current),p.current=setTimeout(()=>{f.current=!0,p.current=null},NP)}},[r]),urlQueryError:s}}var FP=[`origin`,`discipline`];function IP(e){return/\s/.test(e)?`text:"${e}"`:`text:${e}`}function LP(e){let t=e.filter(Boolean);return`:effort${t.length?`{${t.join(`,`)}}`:``}`}function RP(e,t){let n=e.trim();if(!n||n.startsWith(`:`)||n.includes(`{`)||n.includes(`}`))return null;let r=t.get(`origin`),i=t.get(`discipline`)?.trim();return LP([IP(n),...r&&r!==`all`?[`origin:${r}`]:[],...i?[`discipline:${i}`]:[]])}function zP(e){if(!FP.some(t=>e.get(t)))return null;let t=e.get(`origin`),n=e.get(`discipline`)?.trim();return LP([...t&&t!==`all`?[`origin:${t}`]:[],...n?[`discipline:${n}`]:[]])}var BP={keys:FP,toQuery:zP,salvageQ:RP};function VP(e){return e.endsWith(`/`)&&e.length>1?e.slice(0,-1):e}function HP(e){let t=[`note`,`session`,`post`,`text`,`timePreset`,`rangeStart`,`rangeEnd`,`s`,`tags`,`mode`];return{keys:t,toQuery(n){if(!t.some(e=>n.has(e)))return null;let r=null;if(n.has(`note`)||n.has(`session`)||n.has(`post`)){let e=[];(n.get(`note`)??`include`)!==`hide`&&e.push(`journal`),(n.get(`session`)??`include`)!==`hide`&&e.push(`notebooks`),e.length===1&&(r=`source:${e[0]}`)}else e&&(r=`source:${e}`);let i=n.get(`timePreset`)??`2w`,a=i===`all`||i===`custom`?null:`last ${i}`,o=n.get(`text`)?.trim(),s=n.get(`tags`)?.trim(),c=o?/\s/.test(o)?`text:"${o}"`:`text:${o}`:null,l=s?`tags:${s}`:null,u=`:note`,d=[c,l].filter(Boolean);r===`source:journal`?u=`:journal`:r===`source:notebooks`?u=`:notebooks`:r===`source:playground`?u=`:playground`:r&&d.unshift(r);let f=d.length?`{${d.join(`,`)}}`:``;return[`${u}${f}`,a].filter(Boolean).join(` `)}}}var UP={route:`/journal`,title:`Journal`,defaultWql:`:note{notebook:journal} by {date} last 4w`,level:`note`,target:`note`,scopeOptions:[`journal`],calendarCapable:!0,legacy:HP(`journal`)},WP={route:`/notebooks`,title:`Notebooks`,defaultWql:`:notebook{subscribed:true} by {feed}`,level:`session`,target:`note`,scopeOptions:[`notebooks`],shelfVisible:!1,feedNotice:!0,legacy:HP(`notebooks`)},GP={route:`/notes`,title:`Notes`,defaultWql:`:note{notebook:*}`,level:`note`,target:`note`,scopeOptions:[`journal`,`notebooks`],emptyMessage:`No note entries match your search.`,calendarCapable:!0,legacy:HP(`notebooks`)},KP={route:`/feeds`,title:`Feeds`,defaultWql:`:notebook{source:notebooks}`,level:`session`,target:`notebook`,scopeOptions:[`notebooks`],shelfVisible:!1,defaultLayout:`cards`,emptyMessage:`No feeds match your search.`,feedNotice:!0,legacy:HP(`notebooks`)},qP={route:`/pages`,title:`Pages`,defaultWql:`:page{}`,level:`note`,target:`page`,scopeOptions:[],emptyMessage:`No pages match your search.`},JP={route:`/efforts`,title:`Efforts`,defaultWql:`:effort`,level:`effort`,target:`effort`,scopeOptions:[],emptyMessage:`No efforts match your search.`,legacy:BP},YP={route:`/equipment`,title:`Equipment`,defaultWql:`:equipment{}`,level:`note`,target:`equipment`,scopeOptions:[`equipment`],emptyMessage:`No equipment matches your search.`},XP={route:`/tags`,title:`Tags`,defaultWql:`:tag{}`,level:`note`,target:`tag`,scopeOptions:[],emptyMessage:`No tags match your search.`},ZP={route:`/sessions`,title:`Sessions`,defaultWql:`:session{}`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No completed session results recorded in this period.`,calendarCapable:!0},QP={route:`/playgrounds`,title:`Playgrounds`,defaultWql:`:playground{} by {date} last 1w`,level:`note`,target:`note`,scopeOptions:[`playground`],shelfVisible:!0,legacy:HP(`playground`)};function $P(e){return{route:`/session/${e}`,defaultWql:`:session{} from ${e} to ${e}`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No session results recorded on ${e}.`}}function eF(e){return{route:`/results/${e}`,defaultWql:`:session{result:${e}, plane:segment}`,level:`segment`,target:`session`,scopeOptions:[],defaultLayout:`rows`,dashboardEnabled:!0,emptyMessage:`No segment records found for result ${e}.`}}function tF(e){let t=KA(e);return{route:`/notebook/${e}`,title:BO(t),defaultWql:`:note{notebook:${t}} by {date}`,level:`session`,target:`note`,scopeOptions:[`notebooks`],shelfVisible:!1,defaultLayout:`cards`,calendarCapable:!0,notebookSlug:t,legacy:HP(`notebooks`)}}var nF={"/journal":UP,"/notebooks":WP,"/notes":GP,"/feeds":KP,"/pages":qP,"/efforts":JP,"/equipment":YP,"/tags":XP,"/sessions":ZP,"/playgrounds":QP};function rF(e){let t=VP(e),n=nF[t];if(n)return n;if(t.startsWith(`/results/`)){let e=t.slice(9);if(e)return eF(e)}if(t.startsWith(`/session/`)){let e=t.slice(9);if(e)return $P(e)}if(t.startsWith(`/notebook/`)){let e=t.slice(10);if(e&&!e.includes(`/`))return tF(e)}}function iF(e){return rF(e)??UP}function aF(e){let t=nF[VP(e)]?.title;if(t)return t;if(VP(e).startsWith(`/notebook/`)){let t=VP(e).slice(10);if(t&&!t.includes(`/`))return BO(t)}}function oF(e){let t=VP(e);if(nF[t])return!0;if(t.startsWith(`/results/`)||t.startsWith(`/session/`))return t.slice(9)!==``;if(t.startsWith(`/notebook/`)){let e=t.slice(10);return!!(e&&!e.includes(`/`))}return!1}var $={home:`/`,playgroundRoot:`/playground`,playground:`/playground/:id`,note:`/note/:noteId`,notes:`/notes`,journal:`/journal`,day:`/day/:date`,plan:`/plan`,aiFirst:`/ai-first`,feeds:`/feeds`,feed:`/feed/:slug`,notebooks:`/notebooks`,notebook:`/notebook/:slug`,notebookTarget:`/notebook/:slug/:target`,notebookItem:`/notebook/:slug/:itemDate/:item`,subscribe:`/subscribe`,pages:`/pages`,page:`/page/:slug`,tags:`/tags`,tagCategory:`/t/:type`,tag:`/t/:type/:tag`,sessions:`/sessions`,sessionDetail:`/results/:sessionId`,sessionDate:`/session/:date`,playgrounds:`/playgrounds`,tracker:`/tracker/:runtimeId`,run:`/run/:runtimeId`,load:`/load`,loadJournal:`/load/journal`,loadJournalDate:`/load/journal/:date`,efforts:`/efforts`,effort:`/effort/:slug`,equipment:`/equipment`,equipmentSlug:`/equipment/:slug`,dashboards:`/dashboards`,dashboardView:`/dashboard/:slug`,settings:`/settings`,settingsAppearance:`/settings/appearance`,settingsProfile:`/settings/profile`,settingsStorage:`/settings/storage`,settingsSync:`/settings/sync`,settingsSystem:`/settings/system`,settingsTags:`/settings/tags`,settingsSoundProfiles:`/settings/sound-profiles`,settingsData:`/settings/data`,settingsDatabase:`/settings/database`,settingsQueries:`/settings/queries`};function sF(e){return`/playground/${encodeURIComponent(e)}`}function cF(e){return`/day/${encodeURIComponent(e)}`}function lF(e,t){return`/day/${encodeURIComponent(e)}?autoStart=${encodeURIComponent(t)}`}function uF(e){return`/note/${encodeURIComponent(e)}`}function dF(e){let t=KA(e);return`/notebook/${encodeURIComponent(t)}`}function fF(e,t){return`/notebook/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function pF(e,t){return`/notebook/${encodeURIComponent(e)}/${t.split(`/`).map(encodeURIComponent).join(`/`)}`}function mF(e){return`/run/${encodeURIComponent(e)}`}function hF({zip:e}){return`/load?zip=${encodeURIComponent(e)}`}function gF(e){return`/results/${encodeURIComponent(e)}`}function _F(e){return`/page/${encodeURIComponent(e)}`}function vF(){return`/playgrounds`}function yF(){return`/efforts`}function bF(e){return`/equipment/${encodeURIComponent(e)}`}function xF(e){return`/t/${encodeURIComponent(e)}`}function SF(e,t){return`/t/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function CF(e){let t=new URLSearchParams;e?.q&&t.set(`q`,e.q),e?.weeks&&t.set(`weeks`,String(e.weeks));let n=t.toString();return`/dashboards${n?`?${n}`:``}`}function wF(){return`/dashboards`}function TF(e){return`/dashboard/${encodeURIComponent(e)}`}function EF(e,t,n){let r=new URLSearchParams;if(t)for(let[e,n]of Object.entries(t))r.set(e,n);n?.mode&&r.set(`mode`,n.mode),n?.tab&&r.set(`tab`,n.tab);let i=r.toString();return i?`/effort/${encodeURIComponent(e)}?${i}`:`/effort/${encodeURIComponent(e)}`}function DF(e){return{mode:e.get(`mode`)??void 0,tab:e.get(`tab`)??void 0,q:e.get(`q`)??void 0,origin:e.get(`origin`)??void 0}}function OF(e){return e.startsWith(`/playground/`)}function kF(e){return e===`/efforts`||e.startsWith(`/effort/`)||e===`/t/effort`||e.startsWith(`/t/effort/`)}function AF(e){return e===`/equipment`||e.startsWith(`/equipment/`)||e===`/t/equipment`||e.startsWith(`/t/equipment/`)}function jF(e){let t=e.match(/^\/notebook\/([^/]+)\/([^/]+)\/([^/]+)$/);return t?[t[1],t[2],t[3]]:null}function MF(e){let t=e.match(/^\/feed\/([^/]+)$/);return t?t[1]:null}function NF(e){return Object.entries(e).filter(([e])=>e.startsWith(`markdown/dashboards/`)).map(([e,t])=>{let{meta:n}=ro(t),r=e.split(`/`).pop().replace(/\.md$/,``);return{slug:typeof n.slug==`string`&&n.slug?n.slug:r,title:typeof n.title==`string`&&n.title?n.title:r,rawContent:t}}).sort((e,t)=>e.title.localeCompare(t.title))}function PF(e){return e.map(e=>{let{meta:t}=ro(e.rawContent);if(t.dashboard!==`true`)return null;let n=typeof t.slug==`string`&&t.slug?t.slug:null,r=typeof t.title==`string`&&t.title?t.title:n??e.id;return n?{noteId:e.id,slug:n,title:r,rawContent:e.rawContent}:null}).filter(e=>e!==null)}function FF(e,t){let n=dk(),r=(0,W.useMemo)(()=>n?NF(n):[],[n]),[i,a]=(0,W.useState)(null),[o,s]=(0,W.useState)(!0);return(0,W.useEffect)(()=>{if(!e){a(null),s(!1);return}let t=!1;return s(!0),Cj.listNotes({kind:`dashboard`}).then(n=>{if(t)return;let i=PF(n).find(t=>t.slug===e);if(i)a({slug:e,title:i.title,rawContent:i.rawContent,editable:!0,noteId:i.noteId});else{let t=r.find(t=>t.slug===e);a(t?{slug:t.slug,title:t.title,rawContent:t.rawContent,editable:!1}:null)}}).catch(()=>{t||a(null)}).finally(()=>{t||s(!1)}),()=>{t=!0}},[e,t,r]),{source:i,loading:o}}function IF(){let e=dk(),t=(0,W.useMemo)(()=>e?NF(e):[],[e]),[n,r]=(0,W.useState)([]),[i,a]=(0,W.useState)(!0);return(0,W.useEffect)(()=>{let e=!1;return Cj.listNotes({kind:`dashboard`}).then(n=>{if(e)return;let i=PF(n),a=new Set(i.map(e=>e.slug)),o=[...i.map(e=>({slug:e.slug,title:e.title,editable:!0})),...t.filter(e=>!a.has(e.slug)).map(e=>({slug:e.slug,title:e.title,editable:!1}))];e||r(o)}).catch(()=>{e||r(t.map(e=>({slug:e.slug,title:e.title,editable:!1})))}).finally(()=>{e||a(!1)}),()=>{e=!0}},[t]),{items:n,loading:i}}function LF(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function RF(){return LF(new Date)}function zF(e){return e<RF()}function BF(e){let t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2])-1,i=Number(t[3]),a=new Date(n,r,i),o=LF(a);return o===e?{dateKey:o,date:a}:null}function VF(e){let t=BF(e);if(!t)throw Error(`Invalid journal date: ${e}`);return t.date.getTime()}function HF({persistence:e,moveRecordPlacement:t,addRecordPlacement:n,uuid:r=tn}){let i=new Map;return{async create(t){let n=t.journalDate?VF(t.journalDate):Date.now();return e.createNote({id:r(),title:xx(t.title),rawContent:t.rawContent,tags:t.tags??[],targetDate:n,journalDate:t.journalDate||void 0,type:t.type??`journal`,slug:t.slug,sourceId:t.sourceId})},getById(t){return e.getNote({id:t},{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},resolve(t){return e.getNote(t,{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},async listByDate(t){return VF(t),(await e.listNotes({journalDate:t,kind:`journal`,projection:`summary`})).sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id))},update(t,n,r){let a=t.id,o=xx(n.match(/^#\s+(.+)$/m)?.[1]?.trim()),s=t.sourceRevision;if(s===void 0)return Promise.reject(Error(`Loaded Note source revision is required`));let c=0;for(;c<t.rawContent.length&&c<n.length&&t.rawContent[c]===n[c];)c++;let l=t.rawContent.length,u=n.length;for(;l>c&&u>c&&t.rawContent[l-1]===n[u-1];)l--,u--;let d=Va(t.blocks??{},r?.changes??[{from:c,to:l,insert:n.slice(c,u)}]);for(let e of r?.retainedBlocks??[]){let n=Object.values(t.blocks??{}).find(t=>t.from===e.from&&t.to===e.to);n&&(d[n.id]={...n,from:e.nextFrom,to:e.nextTo})}let f=za(n,{sourceRevision:s,registeredWidgets:Ma,blocks:d}),p=async()=>e.mutateNote({id:a},{rawContent:n,blocks:f,expectedSourceRevision:s,metadata:o?{title:o}:void 0}),m=(i.get(a)??Promise.resolve()).then(p,p);i.set(a,m);let h=()=>{i.get(a)===m&&i.delete(a)};return m.then(h,h),m},async moveToDate(r,i){let a=VF(i);if(t&&n){let a=(await e.getNote({id:r},{projection:`summary`})).placements?.find(e=>e.date);return a?t(r,a.pageId,{date:i}):n(r,{date:i})}return e.mutateNote({id:r},{metadata:{journalDate:i,targetDate:a}})},delete(t){return e.deleteNote({id:t})}}}var UF=new cA,WF=HF({persistence:Cj,moveRecordPlacement:(e,t,n)=>UF.moveRecordPlacement(e,t,n),addRecordPlacement:(e,t)=>UF.addRecordPlacement(e,t)});function GF({persistence:e,journal:t}){async function n(n){let r=await e.listNotes({kind:`dashboard`});for(let e of r){if(n&&e.id===n)continue;let{meta:r,body:i}=ro(e.rawContent);if(r.dashboard!==`true`||r[`dashboard.active`]!==`true`)continue;let a={...r};delete a[`dashboard.active`],await t.update(e,`---\n${ao(a)}\n---\n${i}`)}}return{async createDashboard(e=qv){return await n(),t.create({title:e,rawContent:Yv(e),type:`dashboard`,sourceId:`dashboards`})},async createDashboardFromScope(e){await n();let r=hy(e),{meta:i}=ro(r),a=typeof i.title==`string`&&i.title?i.title:qv;return t.create({title:a,rawContent:r,type:`dashboard`,sourceId:`dashboards`})},async cloneDashboard(e,r,i){await n();let{meta:a,body:o}=ro(r),s={...a,slug:e};i&&(s.title=i);let c=`---\n${ao(s)}\n---\n${o}`;return t.create({title:typeof s.title==`string`?s.title:e,rawContent:c,type:`dashboard`,sourceId:`dashboards`})}}}var KF=GF({persistence:Cj,journal:WF}),qF=[{query:`sum:totalVolume{discipline:strength} by {week}`,label:`Weekly strength volume`,question:`Is strength volume rising?`},{query:`avg:tis{effort:thruster} by {week}`,label:`Thruster time-in-motion`,question:`Is time-in-motion improving?`},{query:`sum:totalReps{discipline:strength} by {effort}`,label:`Reps by lift`,question:`Where do the reps go?`},{query:`last:sessionLoad{note:benchmark} by {session}`,label:`Benchmark loads`,question:`Is session load dropping?`},{query:`sum:sessionLoad{} by {intensity, week}`,label:`Polarized weekly load`,question:`Is my intensity 80/20?`},{query:`avg:calc.acwr{} by {day}`,label:`Injury risk (ACWR)`,question:`Am I spiking my workload?`},{query:`count:totalReps{tags:mobility} by {week}`,label:`Mobility habit`,question:`Did I do mobility work?`},{query:`avg:tis{} by {round}`,label:`TIS by round`,question:`Where does the pace fall apart?`},{query:`sum:totalVolume{} by {effort}`,label:`Volume by lift`,question:`Where does the volume go?`},{query:`:note{tags:pr,source:journal}`,label:`Find PR notes`,question:`Which notes are tagged PR?`},{query:`:note{type:wod,source:journal} last 8w`,label:`Recent workouts`,question:`What workouts did I do recently?`},{query:`:note{source:feeds}`,label:`Notebook workouts`,question:`What workouts are in the library?`},{query:`:block{text:fran}`,label:`Find Fran everywhere`,question:`Which blocks mention Fran?`}],JF=(0,W.createContext)(()=>{});function YF({close:e,children:t}){return(0,G.jsx)(JF.Provider,{value:e,children:t})}function XF(){return(0,W.useContext)(JF)}function ZF(e,t){if(!e)return!1;if(e===t)return!0;let n=X(e),r=X(t);return!n.error&&!r.error&&hg(n)===hg(r)}function QF(e){let t=En(),n=fn(),r=XF(),{items:i,loading:a}=IF(),[o,s]=(0,W.useState)(!1),c=async()=>{s(!0);try{let e=await KF.createDashboard(),{meta:t}=ro(e.rawContent),i=typeof t.slug==`string`&&t.slug?t.slug:e.id;n(TF(i)),r()}finally{s(!1)}},l=t.pathname===`/dashboards`,u=l?new URLSearchParams(t.search).get(`q`):null;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-1 px-2 py-3`,"data-testid":`dashboards-nav-panel`,children:[(0,G.jsx)($F,{label:`Explorer`,active:l,onClick:()=>{n(wF()),r()}}),l?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Examples`}),qF.map(e=>(0,G.jsx)($F,{label:e.label,title:e.question,active:ZF(u,e.query),onClick:()=>{n(CF({q:e.query})),r()}},e.query))]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Dashboards`}),a?(0,G.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`Loading…`}):i.length===0?(0,G.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`No dashboards yet.`}):i.map(e=>(0,G.jsx)($F,{label:e.title,badge:e.editable?void 0:`prebuilt`,active:t.pathname===`/dashboard/${e.slug}`,onClick:()=>{n(TF(e.slug)),r()}},e.slug)),(0,G.jsxs)(`button`,{type:`button`,onClick:c,disabled:o,"data-testid":`dashboards-nav-new`,className:`mt-2 flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-muted-foreground hover:bg-muted hover:text-foreground transition-colors disabled:opacity-50`,children:[(0,G.jsx)(nr,{className:`size-3.5`}),`New dashboard`]})]})]})}function $F({label:e,active:t,onClick:n,badge:r,title:i}){return(0,G.jsxs)(`button`,{type:`button`,onClick:n,title:i,className:K(`flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-left transition-colors`,t?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,G.jsx)(`span`,{className:K(`size-2 rounded-full shrink-0`,t?`bg-primary`:`bg-border`)}),(0,G.jsx)(`span`,{className:`truncate`,children:e}),r&&(0,G.jsx)(`span`,{className:`ml-auto text-[9px] font-bold uppercase tracking-wide text-muted-foreground/50 shrink-0`,children:r})]})}function eI({children:e}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`absolute left-1/2 top-1/2 size-[max(100%,2.75rem)] -translate-x-1/2 -translate-y-1/2 pointer-events-auto`,"aria-hidden":`true`}),e]})}var tI=(0,W.forwardRef)(function(e,t){return(0,G.jsx)(gn,{children:(0,G.jsx)(sn,{...e,to:e.href,ref:t})})});function nI({className:e,...t}){return(0,G.jsx)(`nav`,{...t,className:ft(e,`flex h-full min-h-0 flex-col`)})}function rI({className:e,...t}){return(0,G.jsx)(`div`,{...t,className:ft(e,`flex flex-col border-b border-zinc-950/5 p-4 dark:border-white/5 [&>[data-slot=section]+[data-slot=section]]:mt-2.5`)})}function iI({className:e,...t}){return(0,G.jsx)(`div`,{...t,className:ft(e,`flex flex-1 flex-col overflow-y-auto p-4 [&>[data-slot=section]+[data-slot=section]]:mt-8`)})}function aI({className:e,...t}){let n=(0,W.useId)();return(0,G.jsx)(nee,{id:n,children:(0,G.jsx)(`div`,{...t,"data-slot":`section`,className:ft(e,`flex flex-col gap-0.5`)})})}function oI({className:e,...t}){return(0,G.jsx)(`h3`,{...t,className:ft(e,`mb-1 px-2 text-xs/6 font-medium text-muted-foreground`)})}var sI=(0,W.forwardRef)(function({current:e,className:t,children:n,...r},i){let a=ft(`group flex w-full items-center gap-3 rounded-xl px-2 py-2.5 text-left text-base/6 font-medium text-foreground sm:py-2 sm:text-sm/5 transition-all duration-200`,`[&>[data-slot=icon]]:size-6 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:text-muted-foreground sm:[&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:transition-colors`,`[&>[data-slot=icon]:last-child]:ml-auto [&>[data-slot=icon]:last-child]:size-5 sm:[&>[data-slot=icon]:last-child]:size-4`,`[&>[data-slot=avatar]]:-m-0.5 [&>[data-slot=avatar]]:size-7 sm:[&>[data-slot=avatar]]:size-6`,`data-[hover]:bg-primary/10 data-[hover]:text-primary data-[hover]:[&>[data-slot=icon]]:text-primary`,`data-[active]:bg-primary/15 data-[active]:scale-[0.98]`,`data-[current]:bg-primary/10 data-[current]:text-primary data-[current]:[&>[data-slot=icon]]:text-primary font-bold`);return(0,G.jsxs)(`span`,{className:ft(t,`relative`),children:[e&&(0,G.jsx)(Ht.span,{layoutId:`current-indicator`,className:`absolute inset-y-2 -left-4 w-1 rounded-full bg-primary shadow-[0_0_8px_rgba(129,140,248,0.5)]`}),typeof r.href==`string`?(0,G.jsx)(Fn,{as:tI,...r,className:a,"data-current":e?`true`:void 0,"aria-current":e?`page`:void 0,ref:i,children:(0,G.jsx)(eI,{children:n})}):(0,G.jsx)(Jt,{...r,className:ft(`cursor-default`,a),"data-current":e?`true`:void 0,"aria-current":e?`page`:void 0,ref:i,children:(0,G.jsx)(eI,{children:n})})]})});function cI({className:e,...t}){return(0,G.jsx)(`span`,{...t,className:ft(e,`truncate`)})}function lI(e){return e.replace(/(^|[{,\s!])catalog:("[^"]*"|[\w][\w/-]*)/g,`$1notebook:$2`)}var uI=[{id:`date`,label:`Date`},{id:`week`,label:`Week`},{id:`month`,label:`Month`},{id:`year`,label:`Year`},{id:`tag`,label:`Tags`},{id:`type`,label:`Type`},{id:`discipline`,label:`Discipline`},{id:`source`,label:`Source`},{id:`origin`,label:`Origin`}],dI=uI.map(e=>e.id),fI=Object.fromEntries(uI.map(e=>[e.id,e.label]));function pI(e){return fI[e]??e}function mI(e,t,n){let r=n?.sink,i=n?.priority??[],a=e=>{let t=i.indexOf(e);return t===-1?1/0:t};return[...e].sort((e,n)=>{if(t===`chronological-desc`)return n[0].localeCompare(e[0]);if(t===`priority-then-alpha`){let t=a(e[0]),r=a(n[0]);return t===r?e[0].localeCompare(n[0]):t-r}if(r){if(e[0]===r)return 1;if(n[0]===r)return-1}return e[0].localeCompare(n[0])})}function hI(e,t){let n=new Set(e);if(!t||t.length===0)return uI.filter(e=>n.has(e.id));let r=t.filter(e=>n.has(e)),i=new Set(r);return[...r.map(e=>({id:e,label:pI(e)})),...uI.filter(e=>n.has(e.id)&&!i.has(e.id))]}function gI(e,t,n){if(!e)return n;let r=new Set(t);return e.find(e=>r.has(e))??n}function _I(e){if(!e)return{options:[],invalid:[]};let t=[],n=[],r=new Set;for(let i of e){if(!dI.includes(i)){n.includes(i)||n.push(i);continue}r.has(i)||(r.add(i),t.push(i))}return{options:t,invalid:n}}var vI=`/palette`,yI=new jx(`wodwiki.routeWql.v1`,wj?Oj:void 0),bI=[...Fm,...Im],xI={notes:`note`,blocks:`block`,efforts:`effort`,collections:`notebooks`,feeds:`notebooks`};function SI(e){let t=e.startsWith(`/`)?e:`/${e}`;return DI[t]??t}function CI(e){if(Array.isArray(e))return e.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim())}function wI(e,t,n){let r=[],i=[],a=new Set;for(let o of e){let e=n[o]??o;if(!t.includes(e)){i.includes(o)||i.push(o);continue}a.has(e)||(a.add(e),r.push(e))}return{options:r,invalid:i}}var TI={"/notebooks":`/catalogs`,"/notes":`/feeds`,"/sessions":`/results`,"/dashboards":`/dashboard`},EI={"/notes":`/collections`},DI={"/feeds":`/feeds@2`};function OI(e){return lI(e).replace(/^:(collections?|feeds?)(?![\w:])/,e=>e===`:collections`||e===`:feeds`?`:notebooks`:`:notebook`).replace(/(^|[{,\s])source:(collections|feeds)(?![\w:])/g,`$1source:notebooks`).replace(/(^|[{,\s])source:collection:/g,`$1source:notebook:`).replace(/(^|[{,\s])type:(feed|collection)(?![\w:])/g,`$1type:note`)}function kI(e,t=yI){let n=SI(e),r=TI[n],i=t.get(n,{alias:r});if(i==null&&r&&(i=t.get(r,{alias:EI[n]})),!i)return{};let a=CI(i.typeOptions),o=CI(i.groupByOptions),s=a&&wI(a,bI,xI),c=o?_I(o):void 0;return{defaultWql:typeof i.defaultWql==`string`&&i.defaultWql.trim().length>0?OI(i.defaultWql.trim()):void 0,typeOptions:s?.options,groupByOptions:c?.options,...s?.invalid.length?{invalidTypeOptions:s.invalid}:{},...c?.invalid.length?{invalidGroupByOptions:c.invalid}:{}}}async function AI(e,t,n=yI){let r=SI(e),i={defaultWql:t.defaultWql?.trim()||void 0,typeOptions:CI(t.typeOptions),groupByOptions:CI(t.groupByOptions)};if(wj){try{await Aj(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlConfig] server write failed:`,e),!1}return II(),!0}return n.set(r,i),II(),!0}async function jI(e,t=yI){let n=SI(e),r=TI[n];if(wj){try{await jj(r?[t.qualify(n),t.qualify(r)]:[t.qualify(n)])}catch(e){return console.error(`[routeWqlConfig] server delete failed:`,e),!1}return II(),!0}return t.remove(n,r),II(),!0}var MI=0,NI=new Set;function PI(e){return NI.add(e),()=>{NI.delete(e)}}function FI(){return MI}function II(){MI+=1;for(let e of NI)e()}function LI(e){let t=(0,W.useSyncExternalStore)(PI,FI,FI);return(0,W.useMemo)(()=>kI(e),[e,t])}function RI(e,t){let n=t??kI(e.route);return!n.defaultWql&&!n.typeOptions&&!n.groupByOptions?e:{...e,defaultWql:n.defaultWql??e.defaultWql,scopeOptions:n.typeOptions?n.typeOptions.filter(e=>Im.includes(e)):e.scopeOptions,groupByOptions:n.groupByOptions}}function zI(e){let t=LI(e?.route??``);return(0,W.useMemo)(()=>e?RI(e,t):void 0,[e,t])}var BI={bookmark:Pe,calendar:dr,"clipboard-list":Hn,clock:Cn,dumbbell:Se,flame:ie,folder:Le,"flask-conical":k,heart:Ve,library:pe,plus:nr,rss:Wt,star:At,tag:Ze,activity:be,wrench:f},VI=new jx(`wodwiki.routeWqlShortcuts.v1`,wj?Oj:void 0);function HI(e,t){return{id:`all`,label:e,icon:t,wql:``}}var UI={"/journal":`All entries`,"/notebooks":`Subscribed notebooks`,"/notes":`All notes`,"/feeds":`All feeds`,"/pages":`All pages`,"/playgrounds":`All playgrounds`,"/efforts":`All Efforts`,"/equipment":`All Equipment`,"/sessions":`All Sessions`,"/tags":`All Tags`},WI={"/journal":`calendar`,"/notebooks":`library`,"/notes":`rss`,"/feeds":`rss`,"/pages":`clipboard-list`,"/playgrounds":`flask-conical`,"/efforts":`dumbbell`,"/equipment":`wrench`,"/sessions":`clipboard-list`,"/tags":`tag`};function GI(e){let t=JI(e);return t===`/notebooks`?[HI(`Subscribed notebooks`,`library`),{id:`all-configured`,label:`All configured`,icon:`bookmark`,wql:`:notebook{subscribed:true,false}`},{id:`available`,label:`Available to subscribe`,icon:`plus`,wql:`:notebook{subscribed:false}`}]:t===`/sessions`?[HI(`All Sessions`,`clipboard-list`),{id:`recent-1d`,label:`Recent (last 1d)`,icon:`clock`,wql:`:session{} last 1d`},{id:`recent-7d`,label:`Last 7 days`,icon:`calendar`,wql:`:session{} last 7d`}]:[HI(UI[t]??`Landing link`,WI[t]??`bookmark`)]}function KI(e){return e.map(e=>({id:`tag-type-${e.name}`,label:e.label,icon:`tag`,wql:`:tag{type:${e.name}}`}))}function qI(e){let t=(0,W.useMemo)(()=>GI(e),[e]),[n,r]=(0,W.useState)([]);return(0,W.useEffect)(()=>{if(JI(e)!==`/tags`)return;let t=!0;return Z.getAllTagTypes().then(e=>{t&&r(e)}).catch(()=>{t&&r([])}),()=>{t=!1}},[e]),(0,W.useMemo)(()=>JI(e)===`/tags`?[...t,...KI(n)]:t,[e,t,n])}function JI(e){return e.startsWith(`/`)?e:`/${e}`}var YI={"/notebooks":`/catalogs`,"/notes":`/feeds`},XI={"/feeds":`/feeds@2`};function ZI(e){let t=JI(e);return XI[t]??t}function QI(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`object`||!r||Array.isArray(r))continue;let e=r;typeof e.id!=`string`||!e.id.trim()||n.has(e.id)||typeof e.label!=`string`||!e.label.trim()||typeof e.icon!=`string`||!BI[e.icon]||typeof e.wql==`string`&&(e.to!==void 0&&(typeof e.to!=`string`||!/^\/(?!\/)/.test(e.to))||(n.add(e.id.trim()),t.push({id:e.id.trim(),label:e.label.trim(),icon:e.icon,wql:OI(e.wql.trim()),...typeof e.to==`string`?{to:e.to}:{}})))}return t}function $I(e,t=VI){let n=ZI(e);return QI(t.get(n,{alias:YI[n]}))}function eL(e,t=VI,n=GI(e)){let r=ZI(e),i=YI[r];if(t.getRaw(r)!=null||i!=null&&t.getRaw(i)!=null){let r=$I(e,t);return r.some(e=>e.id===`all`)?r:[n[0],...r]}return n}async function tL(e,t,n=VI){let r=ZI(e),i=QI(t);if(wj){try{await Aj(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlShortcuts] server write failed:`,e),!1}return oL(),!0}return n.set(r,i),n.getRaw(r)===JSON.stringify(i)&&(oL(),!0)}var nL=0,rL=new Set;function iL(e){return rL.add(e),()=>{rL.delete(e)}}function aL(){return nL}function oL(){nL++;for(let e of rL)e()}function sL(e,t=VI){return(0,W.useSyncExternalStore)(iL,aL),eL(e,t,qI(e))}function cL(e){return Sh(e)?hg({...e,filters:(e.filters??[]).map(e=>({...e,values:[...e.values??[]].sort((e,t)=>e.value.localeCompare(t.value))})).sort((e,t)=>e.key.localeCompare(t.key)||Number(e.negate)-Number(t.negate)||e.values.map(e=>e.value).join(`|`).localeCompare(t.values.map(e=>e.value).join(`|`))),groupBy:[...e.groupBy??[]].sort((e,t)=>e.localeCompare(t))}):hg(e)}function lL(e,t){return e.to?t.pathname===e.to||t.pathname.startsWith(`${e.to}/`):uL(e.wql,t.query)}function uL(e,t){if(!e.trim())return t.trim()===``;if(t.trim()===``)return!1;if(t===e)return!0;let n=X(t),r=X(e);return!n.error&&!r.error&&cL(n)===cL(r)}var dL=`w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/40`;function fL({open:e,onOpenChange:t,route:n,editing:r=null,initialQuery:i=``}){let[a,o]=(0,W.useState)(r?.label??``),[s,c]=(0,W.useState)(r?.icon??`bookmark`),[l,u]=(0,W.useState)(r?r.wql:i),[d,f]=(0,W.useState)(null),p=qI(n);(0,W.useEffect)(()=>{e&&(o(r?.label??``),c(r?.icon??`bookmark`),u(r?r.wql:i),f(null))},[e,r,i]);let m=r!==null&&!!r.to,h=r?.id!==`all`,g=a.trim(),_=l.trim(),v=_?Hw(_).error??null:null,y=g?null:`Label is required.`,b=!!g&&!m&&(!h||!!_)&&!v;return(0,G.jsx)(QC,{open:e,onClose:()=>t(!1),title:r?`Edit shortcut`:`Save search shortcut`,description:`Saved shortcuts appear in this route's navigation panel. Stored ${wj?`on the server.`:`in this browser only.`}`,footer:(0,G.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,G.jsx)(q,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t(!1),children:`Cancel`}),(0,G.jsx)(q,{type:`submit`,form:`save-wql-shortcut-form`,size:`sm`,disabled:!b,"data-testid":`shortcut-save`,children:`Save`})]}),children:(0,G.jsxs)(`form`,{id:`save-wql-shortcut-form`,onSubmit:async e=>{if(e.preventDefault(),!b)return;let i={id:r?.id??crypto.randomUUID(),label:g,icon:s,wql:m?r.wql:_,...r?.to===void 0?{}:{to:r.to}};if(!await tL(n,[...eL(n,void 0,p).filter(e=>e.id!==i.id),i])){f(`Couldn’t save — storage is unavailable. Your input is kept.`);return}t(!1)},className:`flex flex-col gap-4`,noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{htmlFor:`shortcut-label`,className:`text-xs font-semibold text-muted-foreground`,children:`Label`}),(0,G.jsx)(`input`,{id:`shortcut-label`,value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Strength this month`,"data-testid":`shortcut-label-input`,"aria-invalid":y?!0:void 0,className:dL}),y&&(0,G.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-label-error`,children:y})]}),m?(0,G.jsxs)(`p`,{className:`rounded-md border border-border/60 bg-muted/30 px-3 py-2 text-xs text-muted-foreground`,children:[`Route action — always opens `,r?.to,`. Label and icon are editable.`]}):(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{htmlFor:`shortcut-query`,className:`text-xs font-semibold text-muted-foreground`,children:`Query (WQL)`}),(0,G.jsx)(`textarea`,{id:`shortcut-query`,rows:2,value:l,onChange:e=>u(e.target.value),placeholder:h?`find …`:`Empty — the plain route landing`,"data-testid":`shortcut-query-input`,"aria-invalid":v?!0:void 0,className:`${dL} font-mono text-xs`}),v?(0,G.jsxs)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-query-error`,children:[`Couldn't parse — `,v]}):!_&&(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:h?`A shortcut needs a query.`:`Empty — opens the plain route landing.`})]}),(0,G.jsxs)(`fieldset`,{className:`space-y-1.5`,children:[(0,G.jsx)(`legend`,{className:`text-xs font-semibold text-muted-foreground`,children:`Icon`}),(0,G.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Object.entries(BI).map(([e,t])=>(0,G.jsxs)(`label`,{title:e,className:s===e?`cursor-pointer rounded-md border border-primary bg-primary/10 p-1.5 text-primary`:`cursor-pointer rounded-md border border-border p-1.5 text-muted-foreground hover:text-foreground`,children:[(0,G.jsx)(`input`,{type:`radio`,name:`shortcut-icon`,value:e,checked:s===e,onChange:()=>c(e),"aria-label":`Icon ${e}`,"data-testid":`shortcut-icon-${e}`,className:`sr-only`}),(0,G.jsx)(t,{className:`size-4`,"aria-hidden":`true`})]},e))})]}),d&&(0,G.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-storage-error`,children:d})]})})}var pL=null,mL=new Set;function hL(e){pL=e;for(let e of mL)e()}function gL(e){return mL.add(e),()=>{mL.delete(e)}}function _L(){return pL}function vL(){return(0,W.useSyncExternalStore)(gL,_L)}function yL(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 bL=/^(?:uuid-|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$)/i;function xL(e){return typeof e==`string`&&e&&!bL.test(e)?e:void 0}function SL(e){return!!e.sourceId?.startsWith(`notebook:`)||e.sourcePath?.startsWith(`markdown/notebooks/`)===!0}function CL(e){return e.type===`dashboard`||e.sourceId===`dashboards`||e.sourcePath?.startsWith(`markdown/dashboards/`)===!0}function wL(e){return e.sourceId===`efforts`||e.sourcePath?.startsWith(`markdown/efforts/`)===!0}function TL(e){return e.sourceId===`equipment`||e.sourcePath?.startsWith(`markdown/equipment/`)===!0}function EL(e){return e.type===`tag`&&e.id.startsWith(`tag/`)}function DL(e){let t=/^tag\/([^/]+)\/(.+)$/.exec(e.id);return t?{type:t[1],label:t[2]}:void 0}function OL(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 kL(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(bL.test(r))return{slug:``,item:``};let[i,...a]=r.split(`/`);return{slug:i,item:a.join(`/`)}}function AL(e){return e.sourceId===`playground`||e.type===`playground`||e.id.startsWith(`playground/`)}function jL(e){let t=e.slug??e.id;return t.startsWith(`playground/`)?t.slice(11):t}function ML(e){return{...NL(e),noteType:e.type,notebookId:B_(e),feedId:e.feedSourceId??(V_(e)===`user`?`local`:`core`),editable:Aa(e,V_(e))}}function NL(e){let t=e.id,n=e.title,r=e.tags&&e.tags.length>0?e.tags:void 0;if(AL(e))return{id:t,kind:`note`,sourceNotebook:`playground`,sourceNote:jL(e),sourceId:e.sourceId,title:yb(n||jL(e)),date:null,createdAt:e.createdAt,...r?{tags:r}:{}};if(SL(e)){let{slug:i,item:a}=kL(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?LF(new Date(e.date)):null),createdAt:e.createdAt,subtitle:i,...r?{tags:r}:{}}}if(CL(e))return{id:t,kind:`dashboard`,sourceNotebook:`dashboards`,sourceNote:OL(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`dashboards`,...r?{tags:r}:{}};if(wL(e)){let i=OL(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(TL(e))return{id:t,kind:`equipment`,sourceNotebook:`equipment`,sourceNote:OL(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`equipment`,...r?{tags:r}:{}};if(EL(e)){let i=DL(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:xL(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:e.type===`journal`&&`date`in e&&typeof e.date==`number`&&Number.isFinite(e.date)?i=LF(new Date(e.date)):`targetDate`in e&&e.targetDate&&(typeof e.targetDate==`number`||typeof e.targetDate==`string`)?i=LF(new Date(e.targetDate)):e.createdAt&&(i=LF(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?xL(e.slug):void 0,title:n,date:i,createdAt:e.createdAt,...r?{tags:r}:{}}}function PL(e){return{id:e.noteId,title:e.noteTitle,createdAt:e.createdAt,type:`note`,sourceId:e.sourceId,sourcePath:e.sourcePath,rawContent:``,sourceRevision:1,blocks:{}}}var FL=3,IL=120;function LL(e){return e.split(`
|
|
84
|
+
`).length-1,version:e.version,state:`idle`,widgetIds:{},createdAt:e.savedAt}}async function uM(e,t,n,r,i=Cj){let a=Date.now(),o=await i.startSession(e,{id:n,noteId:e.noteId,blockId:t.id,blockContentId:t.contentId,origin:r??`journal`,startTime:a,endTime:a,duration:0,completed:!1,status:`in-progress`,createdAt:a});return{...o,block:lM(o.revision)}}async function dM(e,t,n,r){let i=await Z.getNote(e);if(!i)throw Error(`The note is unavailable. Save the note before starting a workout.`);return uM({noteId:i.id,rawContent:i.rawContent,blocks:i.blocks,expectedSourceRevision:i.sourceRevision},t,n,r)}function fM(e,...t){console.warn(`[${e}]`,...t)}function pM(e,...t){console.error(`[${e}]`,...t)}var mM=new Set;function hM(e){return mM.add(e),()=>{mM.delete(e)}}function gM(e){for(let t of mM)try{t(e)}catch(e){pM(`resultRecorder`,`error in listener:`,e)}}function _M(e){return{async record({resultId:t,data:n,createdAt:r}){let i=await e.finishSession(t,n,r);return gM(i),i}}}var vM=_M(Cj),yM=`sound`,bte=`wodwiki.soundProfiles.v1`,bM=`profiles`,xM=new jx(bte,wj?Oj:void 0);function SM(e){return`${qj}${e}`}function CM(e){return[{kind:`metric`,type:`sound`,value:e}]}function wM(e=xM){let t=e.get(bM);if(!Array.isArray(t))return[];let n=[],r=new Set;for(let e of t){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.id!=`string`||t.id.length===0||r.has(t.id))continue;r.add(t.id);let i=[];if(Array.isArray(t.rules))for(let e of t.rules){if(!e||typeof e!=`object`)continue;let t=e;typeof t.trigger==`string`&&typeof t.sound==`string`&&i.push({trigger:t.trigger,sound:t.sound})}n.push({id:t.id,name:typeof t.name==`string`&&t.name.length>0?t.name:t.id,rules:i})}return n}async function xte(e,t=xM){let n=e.map(e=>({id:e.id,name:e.name,rules:e.rules.map(e=>({trigger:e.trigger,sound:e.sound}))})),r=JSON.stringify(n);if(wj){try{await Aj(t.qualify(bM),r)}catch(e){return console.error(`[soundProfiles] server write failed:`,e),!1}return OM(),!0}return t.set(bM,n),t.getRaw(bM)===r&&(OM(),!0)}var TM=Promise.resolve();async function Ste(e,t=xM){let n=TM.then(async()=>xte(e(wM(t)),t));return TM=n.catch(()=>!1),n}async function Cte(e,t){let n=SM(e),r=(await t.getAllTags()).find(e=>e.label===n);if(r){let n=CM(e),i=r.contributions?.[0];if(r.contributions?.length===1&&i?.kind===`metric`&&i.type===n[0].type&&i.value===n[0].value)return;await t.putTag({...r,contributions:n,type:yM});return}await t.putTag({id:`sound-profile-${e}`,label:n,type:yM,contributions:CM(e),createdAt:Date.now()})}async function wte(e,t){let n=SM(e),r=(await t.getAllTags()).find(e=>e.label===n);r&&await t.deleteTag(r.id)}var EM=new Set,DM=0;function OM(){DM+=1;for(let e of EM)e()}function Tte(e){return EM.add(e),()=>{EM.delete(e)}}function Ete(){return DM}async function Dte(e,t={}){let{resultId:n,occurrence:r,metric:i}=e;if(!n||typeof n!=`string`)throw TypeError(`captureMetricCorrection: resultId is required`);if(!r?.blockKey||typeof r.blockKey!=`string`)throw TypeError(`captureMetricCorrection: occurrence.blockKey is required`);if(!i||typeof i.image!=`string`||i.image.length===0)throw TypeError(`captureMetricCorrection: metric.image is required`);if(typeof i.value!=`number`||!Number.isFinite(i.value))throw RangeError(`captureMetricCorrection: metric.value must be finite, got ${i.value}`);if(i.type===J.Rep&&(!Number.isSafeInteger(i.value)||i.value<0))throw RangeError(`captureMetricCorrection: rep corrections must be nonnegative safe integers, got ${i.value}`);let a=t.storage??Z,o=t.persistence??new Sj(a);if(!await a.getSessionById(n)||await a.withTransaction([`events`],async e=>{let t=(await e.getEventsByResult(n)).filter(e=>e.grain===`event`&&e.outputType===`segment`&&e.sourceBlockKey===r.blockKey&&(r.sourceStatementId===void 0||e.sourceStatementId===r.sourceStatementId)&&(r.stackLevel===void 0||e.stackLevel===r.stackLevel));if(t.length===0)return`not-found`;if(t.length>1)throw Error(`captureMetricCorrection: ambiguous occurrence ${r.blockKey} in result ${n} — ${t.length} segments match; pass sourceStatementId/stackLevel`);let a=t[0],o=[...a.metrics.filter(e=>e.origin!==`user`||e.type!==i.type),{type:i.type,value:i.value,image:i.image,origin:`user`,timestamp:new Date}],s=a.timeSpan?.started??a.timestamp,c={...a,metrics:o,...a.metricTemporal?{metricTemporal:o.map(()=>({temporalKind:`instant`,instant:s}))}:{}};return await e.appendEvents([c]),`captured`})===`not-found`)return`not-found`;try{return await o.rederiveResultAnalytics(n),`captured`}catch(e){if(e instanceof xb&&e.code===`BLOCK_REVISION_NOT_FOUND`)return`captured-no-rederive`;throw e}}var kM=null,AM=new Set;function jM(e){kM!==e&&(kM=e,AM.forEach(e=>e(kM)))}function MM(){return kM}function NM(e){return AM.add(e),()=>{AM.delete(e)}}var PM=(0,W.createContext)({transport:null});function FM(){let e=(0,W.useContext)(PM),[t,n]=W.useState(()=>MM());return W.useEffect(()=>NM(n),[]),e.transport??t}var Ote=({children:e,transport:t})=>{let n=(0,W.useMemo)(()=>({transport:t}),[t]);return(0,G.jsx)(PM.Provider,{value:n,children:e})},IM=(0,W.createContext)(void 0);function kte({children:e}){let[t,n]=(0,W.useState)(mA.isEnabled()),r=FM();(0,W.useEffect)(()=>{mA.setEnabled(t)},[t]);let i=(0,W.useCallback)((e,n=1)=>{if(t){if(r?.connected){console.log(`[AudioContext] Routing sound '${e}' to cast receiver`);try{r.send({type:`rpc-audio`,name:e,volume:n})}catch(t){console.error(`[AudioContext] Failed to send rpc-audio`,t),mA.playSound(e,n).catch(LM)}}else mA.playSound(e,n).catch(LM)}},[t,r]),a=(0,W.useCallback)(()=>{let e=!t;n(e),e&&(mA.setEnabled(!0),mA.playSound(`beep`).catch(LM))},[t]),o=(0,W.useCallback)(()=>{i(`chime`)},[i]),s=(0,W.useCallback)(()=>{i(`click`,.5)},[i]),c=(0,W.useMemo)(()=>({isEnabled:t,toggleAudio:a,playTestSound:o,playSound:i,playClick:s}),[t,a,o,i,s]);return(0,G.jsx)(IM.Provider,{value:c,children:e})}function LM(e){console.error(`[AudioContext] Sound playback failed`,e)}function RM(){let e=(0,W.useContext)(IM);if(e===void 0)throw Error(`useAudio must be used within an AudioProvider`);return e}var zM=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`FeedSourceError`}},BM=class{baseUrl;fetchImpl;constructor(e,t=fetch.bind(globalThis)){this.baseUrl=e,this.fetchImpl=t}async fetchManifest(){let e=await this.fetchImpl(`${this.baseUrl}manifest.json`,{cache:`no-cache`});if(!e.ok)throw new zM(`feed manifest fetch failed: HTTP ${e.status}`,e.status);return ib(await e.json())}async fetchChunk(e){let t=await this.fetchImpl(`${this.baseUrl}${e}`);if(!t.ok)throw new zM(`feed chunk fetch failed: HTTP ${t.status} for ${e}`,t.status);return await t.json()}},Ate=class{storageInstance;constructor(e){this.storageInstance=e}async getSeedMeta(e){return await this.storageInstance.readonly(`meta`).get(e)}async getNoteCommits(e){let t=await this.storageInstance.readonly(`notes`).getMany(e),n=new Map;for(let r=0;r<e.length;r++){let i=t[r];n.set(e[r],i?.seedCommit)}return n}async putSeedMeta(e,t){await this.storageInstance.transaction([`meta`],`readwrite`,async n=>{let r=n.readwrite(`meta`),i=await r.get(e.key);if(t!==void 0&&JSON.stringify(i??null)!==JSON.stringify(t))throw Error(`Seed checkpoint changed during claim`);await r.put(e)})}applyChunk(e){return Pee(this.storageInstance,e)}backfillFeedProvenance(){return Iee(this.storageInstance)}migrateNotebookVocabulary(){return Lee(this.storageInstance)}async removeSourceContent(e){return await this.storageInstance.transaction([`notes`,`attachments`,`note_tags`,`block_index`,`block_efforts`,`block_equipment`,`page_notes`,`efforts`,`equipment`,`meta`],`readwrite`,async t=>{let n=new Set,r=[];for(let[t,i]of Object.entries(e.chunks))if(i.noteIds?.length)for(let e of i.noteIds)n.add(e);else r.push(t);if(r.length)for(let e of await t.readwrite(`notes`).getAll())e.seedOrigin===`seed`&&e.seedChunkId&&r.includes(e.seedChunkId)&&n.add(e.id);let i=t.readwrite(`meta`),a=[];for(let t of await i.getAll()){let n=t;if(!n||typeof n.key!=`string`||!n.key.startsWith(`seed:`)||n.key===e.key)continue;let r=new Set;for(let e of Object.values(n.chunks??{}))for(let t of e.noteIds??[])r.add(t);a.push({key:n.key,sourceId:n.key.slice(5),rank:Dy(n.key,n.tier),meta:n,noteIds:r})}a.sort((e,t)=>t.rank-e.rank);let o=e=>a.some(t=>t.noteIds.has(e)),s=e.key.startsWith(`seed:`)?e.key.slice(5):e.key,c=t.readwrite(`notes`),l=0,u=new Set;for(let r of n){if(o(r))continue;let n=await c.get(r);if(!n||n.seedOrigin!==`seed`||n.seedChunkId&&!e.chunks[n.seedChunkId])continue;n.sourcePath&&u.add(n.sourcePath),await c.delete(r);let i=t.readwrite(`attachments`);for(let e of await i.getAllFromIndex(`by-note`,r))await i.delete(e.id);let a=t.readwrite(`note_tags`);for(let e of await a.getAllFromIndex(`by-note`,r))await a.delete(e.id);let s=t.readwrite(`block_index`);for(let e of await s.getAllFromIndex(`by-note`,r))await s.delete(e.id);let d=t.readwrite(`block_efforts`);for(let e of await d.getAllFromIndex(`by-note`,r))await d.delete(e.id);let f=t.readwrite(`block_equipment`);for(let e of await f.getAllFromIndex(`by-note`,r))await f.delete(e.id);let p=t.readwrite(`page_notes`);for(let e of await p.getAllFromIndex(`by-note`,r))await p.delete(e.id);l++}let d=[{storeName:`efforts`,familyPathPrefix:`markdown/efforts/`,parse:vl},{storeName:`equipment`,familyPathPrefix:`markdown/equipment/`,parse:yl}];for(let{storeName:e,familyPathPrefix:r,parse:i}of d){let o=t.readwrite(e);for(let t of await o.getAll()){if(t.registrySource!==`bundled`||!(t.sourceId===s||t.ownerNoteId!==void 0&&n.has(t.ownerNoteId)&&(!t.sourceId||t.sourceId===e)||t.sourcePath!==void 0&&t.sourcePath.startsWith(r)&&u.has(t.sourcePath)))continue;let l=!1;for(let n of a){let r=n.meta.chunks?.[e]?.noteIds??[];for(let e of r){let r=await c.get(e);if(!r||r.seedOrigin!==`seed`)continue;let a=i(r.rawContent);if(a&&a.slug===t.slug){await o.put({...a,registrySource:`bundled`,ownerNoteId:r.id,sourceId:n.sourceId,feedSourceId:n.sourceId,sourcePath:r.sourcePath??``}),l=!0;break}}if(l)break}l||await o.delete(t.slug)}}return await i.delete(e.key),l})}};function VM(){return new Ate(qk)}var HM={core:1};function jte(e,t){return e===void 0||e<=0||t>e?`import`:t===e?`current`:`server-stale`}function Mte(e,t){return e?.schema!==void 0&&e.schema!==9?!1:e?.seedVersion!=null&&e.seedVersion>0&&e.seedVersion===t}var UM=`wodwiki.seedSubscriptions`,WM=`wodwiki.seedAutoSync`,GM=null,KM=null,qM=new Set;function JM(e){let t={};try{let n=localStorage.getItem(e),r=n?JSON.parse(n):{};if(r&&typeof r==`object`&&!Array.isArray(r))for(let[e,n]of Object.entries(r))typeof n==`boolean`&&(t[e]=n)}catch{t={}}return t}function YM(){return GM||(GM=JM(UM),GM)}function XM(e,t){let n=!0;try{localStorage.setItem(e,JSON.stringify(t))}catch{n=!1}return n}function ZM(e){GM=e;let t=XM(UM,e);for(let e of qM)e();return t}function QM(e){let t=JA(e);if(t===`core`)return`full`;let n=YM();if(n[t]===!0||n[e]===!0)return`full`;let r=`${t}#`,i=`${e}#`;return Object.entries(n).some(([e,t])=>t===!0&&(e.startsWith(r)||e.startsWith(i)))?`partial`:`unsubscribed`}function $M(e){return e===`core`||QM(e)!==`unsubscribed`}function eN(e,t){if(e===`core`)return!0;let n={},r=`${e}#`;for(let[t,i]of Object.entries(YM()))t.startsWith(r)||BA.some(n=>n.feedId===e&&n.id===t)||(n[t]=i);return n[e]=t,ZM(n)}function tN(e,t){let n=JA(e);if(n===`core`)return!0;let r=YM(),i=`${n}#${t}`;if(i in r)return r[i]===!0;let a=`${e}#${t}`;return a in r?r[a]===!0:r[n]===!0||r[e]===!0}function nN(e,t,n,r){if(e===`core`)return!0;let i={...YM()},a=`${e}#${t}`,o=`${e}#`,s=r??BA.filter(t=>t.feedId===e).map(e=>e.chunkId);if(i[e]===!0&&!n){i[e]=!1;for(let n of s)n!==t&&(i[`${e}#${n}`]=!0);return i[a]=!1,ZM(i)}if(i[a]=n,n&&s.length>0&&s.every(n=>n===t||i[`${e}#${n}`]===!0)){i[e]=!0;for(let e of Object.keys(i))e.startsWith(o)&&delete i[e]}else!n&&s.length>0&&s.every(t=>i[`${e}#${t}`]===!1)&&(i[e]=!1);return ZM(i)}function rN(e){let t=JA(e),n=QM(t);if(n===`full`)return null;if(n===`unsubscribed`)return[];let r=YM(),i=`${t}#`,a=`${e}#`;return Object.entries(r).filter(([e,t])=>t===!0&&(e.startsWith(i)||e.startsWith(a))).map(([e])=>e.startsWith(i)?e.slice(i.length):e.slice(a.length))}function iN(e){return qM.add(e),()=>{qM.delete(e)}}function aN(){return KM||(KM=JM(WM),KM)}function oN(e){let t=aN();return e in t?t[e]===!0:e===`core`}function sN(e,t){let n={...aN(),[e]:t},r=XM(WM,n);KM=n;for(let e of qM)e();return r}async function Nte(e,t=VM()){let n={...YM()},r=[],i=!1;for(let[e,t]of Object.entries(qA))e in n&&(t in n||(n[t]=n[e],n[e]&&r.push(t)),delete n[e],i=!0);for(let e of BA){let t=e.chunkId.replace(/^notebook\./,``),r=`${e.feedId}#${e.chunkId}`,a=[e.feedId];for(let[t,n]of Object.entries(qA))n===e.feedId&&a.push(t);for(let o of a)for(let a of[`collection.${t}`,`feed.${t}`,e.chunkId]){let e=`${o}#${a}`;e===r||!(e in n)||(r in n||(n[r]=n[e]),delete n[e],i=!0)}}for(let e of BA)e.id in n&&(e.feedId in n||(n[e.feedId]=n[e.id],n[e.id]&&r.push(e.feedId)),delete n[e.id]);for(let{id:i}of e)if(!(i===`core`||i in n))try{let e=await t.getSeedMeta(Ay(i));e&&e.seedVersion>0&&(n[i]=!0,r.push(i))}catch{}return(r.length||i)&&ZM(n),r}var Pte=new class{_db;constructor(e){this._db=e}get db(){return this._db??Z}async load(){return this.db.getAllEquipment()}async save(e){await this.db.saveEquipment(e)}async delete(e){await this.db.deleteEquipment(e)}};async function cN(e){let t=await Z.getAllEquipment();await e.loadBundled(t.filter(e=>e.registrySource===`bundled`)),dN()}var lN=new Set;function uN(e){return lN.add(e),()=>lN.delete(e)}function dN(){for(let e of lN)e()}var fN=null;function pN(){return fN||=new Rl({storage:Pte}),fN}var mN=class{storage;source;sourceId;now;constructor(e,t,n,r=Date.now){this.storage=e,this.source=t,this.sourceId=n,this.now=r}async applyAll(e={}){let t=ib(e.manifest??await this.source.fetchManifest()),n=Ay(this.sourceId),r=e.stored===void 0?await this.storage.getSeedMeta(n):e.stored,i=r?.schema===9?r:void 0,a=i??My(n);if(t.version<a.seedVersion)throw Error(`Seed manifest is older than the stored checkpoint`);let o=t.chunks.filter(t=>!(e.notebookIds!==void 0&&e.notebookIds!==null&&(e.notebookIds.length===0||!e.notebookIds.includes(t.id)&&t.id!==`efforts`&&t.id!==`equipment`))),s=!!(t.notebooks&&t.notebooks.length>0),c=o.filter(n=>{let r=t.notebooks?.find(e=>e.notebookId===n.id),i=a.chunks[n.id];if(e.forceAll||!i)return!0;if(r){if((r.version??0)>(i.version??0))return!0}else if(!s&&(t.version!==a.seedVersion||t.builtAt!==a.builtAt))return!0;return i.sha256!==n.sha256});c.sort((e,t)=>Number(t.id===ky)-Number(e.id===ky));let l=Object.keys(a.chunks).filter(e=>!t.chunks.some(t=>t.id===e)),u={status:`current`,appliedChunks:0,totalNotes:0,totalEfforts:0,totalEquipment:0,totalBlocks:0,skippedUserOwned:0,deleted:0,addedNotes:0,updatedNotes:0};if(!c.length&&!l.length&&t.version===a.seedVersion&&t.builtAt===a.builtAt)return u;u.status=`imported`;let d=(t,n,r,i,a)=>e.onProgress?.({phase:t,chunkId:n,completedChunks:u.appliedChunks,totalChunks:c.length,totalNotes:u.totalNotes,totalEfforts:u.totalEfforts,totalEquipment:u.totalEquipment,totalBlocks:u.totalBlocks,skippedUserOwned:u.skippedUserOwned,deleted:u.deleted,addedNotes:u.addedNotes,updatedNotes:u.updatedNotes,...r===void 0?{}:{recordId:r},...i===void 0?{}:{completedRecords:i},...a===void 0?{}:{totalRecords:a}});for(let n=0;n<c.length;){let r=c.slice(n,n+(c[n]?.id===`canvas`?1:4));for(let n of r){let r,o=t.notebooks?.find(e=>e.notebookId===n.id),s=n.records,c=!!(a.chunks[n.id]&&e.granularRecords&&(o?.indexPath||n.records));if(c||e.granularRecords&&n.records&&n.records.length>0){if(c&&o?.indexPath&&(s=jee(await this.source.fetchChunk(o.indexPath)).records),s&&s.length>0){let t=!e.forceAll&&this.storage.getNoteCommits?await this.storage.getNoteCommits(s.map(e=>e.uuid)):void 0,i=t?s.filter(e=>t.get(e.uuid)!==e.commit):s;if(c&&i.length>s.length/2){if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`)}else{let e=[],t=0;for(let r of i){d(`fetching`,n.id,r.uuid,t,i.length);let a=await this.source.fetchChunk(r.recordPath),o=Array.isArray(a)?ab(a):[Mee(a)];e.push(...o),t++}r=e}}else if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`)}else if(d(`fetching`,n.id),r=ab(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`);let l=s&&s.length>0?s.map(e=>e.uuid):await Promise.all(r.map(e=>ob(e.path))),f={...a,seedVersion:t.version,builtAt:t.builtAt,chunks:{...a.chunks,[n.id]:{sha256:n.sha256,version:o?.version,builtAt:o?.builtAt??t.builtAt,importedAt:this.now(),noteIds:l}},importedAt:this.now()};d(`applying`,n.id);let p=await this.storage.applyChunk({chunkId:n.id,rows:r,manifest:t,expectedMeta:i,meta:f});u.totalNotes+=p.totalNotes,u.totalEfforts+=p.totalEfforts,u.totalEquipment+=p.totalEquipment,u.totalBlocks+=p.totalBlocks,u.skippedUserOwned+=p.skippedUserOwned,u.deleted+=p.deleted,u.addedNotes+=p.addedNotes,u.updatedNotes+=p.updatedNotes,u.appliedChunks++,a=f,i=f,d(`committed`,n.id),n.id===`canvas`&&e.onFirstPaintApplied?.()}n+=r.length}for(let e of l){let n={...a.chunks};delete n[e];let r={...a,chunks:n,importedAt:this.now()},o=await this.storage.applyChunk({chunkId:e,rows:[],manifest:t,expectedMeta:i,meta:r});u.deleted+=o.deleted,a=r,i=r}let f={...a,schema:9,seedVersion:t.version,builtAt:t.builtAt,importedAt:this.now()};return await this.storage.applyChunk({chunkId:null,rows:[],manifest:t,expectedMeta:i,meta:f}),d(`finalizing`,null),u}},hN=45e3;function gN(e){return(e instanceof Error?e.message:String(e)).replace(/(authToken["'=:\s]+)[^&\s,"']+/gi,`$1…`).replace(/(Bearer\s+)[\w.-]+/gi,`$1…`).replace(/https?:\/\/[^\s]+/gi,e=>{try{let t=new URL(e);return`${t.protocol}//${t.host}/…`}catch{return`…`}}).slice(0,300)}function _N(e,t,n){let r=e?.claim;return!!r&&r.owner!==t&&n-r.at<45e3}async function vN(e,t,n={}){let{storage:r,owner:i}=t,a=t.now,o=Ay(e.id),s={outcome:`current`,error:null,manifestChecked:!1,hadCheckpoint:!1};try{let c=await r.getSeedMeta(o);if(s.hadCheckpoint=(c?.seedVersion??0)>0,!t.force&&!t.probeManifests&&Mte(c,e.embeddedVersion))return s.outcome=`current`,s;if(_N(c,i,a()))return s.outcome=`busy`,s;let l=ib(await e.source.fetchManifest());s.manifestChecked=!0;let u=t.force?`import`:jte(c?.seedVersion,l.version);if(u===`server-stale`)return s.outcome=`server-stale`,s;if(c&&c.schema!==9)throw Error(`Incompatible seed checkpoint; recreate storage`);if(t.background&&!e.autoSyncOn)return s.outcome=l.chunks.filter(t=>!(e.notebookIds!==void 0&&e.notebookIds!==null&&(e.notebookIds.length===0||!e.notebookIds.includes(t.id)&&t.id!==`efforts`&&t.id!==`equipment`))).some(e=>{let t=l.notebooks?.find(t=>t.notebookId===e.id),n=c?.chunks[e.id];return!n||t&&(t.version??0)>(n.version??0)?!0:n.sha256!==e.sha256})?`update-pending`:`current`,s;if(!t.force&&u===`current`&&c?.schema===9&&c.builtAt===l.builtAt)return s.outcome=`current`,s;let d={...c??My(o),...e.tier?{tier:e.tier}:{},claim:{owner:i,at:a()}};await r.putSeedMeta(d,c??null);try{let i=await new mN(r,e.source,e.id,a).applyAll({forceAll:t.force===!0,onFirstPaintApplied:()=>n.onFirstPaint?.(),onProgress:n.onProgress,notebookIds:e.notebookIds,granularRecords:e.granularRecords,manifest:l,stored:d});s.outcome=`imported`,i.status===`imported`&&(s.applied=!0,s.importedVersion=l.version,s.added=i.addedNotes,s.updated=i.updatedNotes)}finally{let e=await r.getSeedMeta(o);e?.claim?.owner===i&&await r.putSeedMeta({...e,claim:null},e)}return s}catch(t){return console.warn(`[feedSync] ${e.id} seed sync failed`,t),s.outcome=`error`,s.error=gN(t),s}}function yN(){try{return typeof localStorage<`u`&&localStorage.getItem(`wodwiki.seedImport.enabled`)!==`0`}catch{return!1}}function bN(){let e=new Set(jA()),t=SA(xA);return[{id:`core`,label:`Core`,source:new BM(t),url:t,embeddedVersion:HM.core??0},...FA.map(e=>({id:e.id,label:e.label,source:new BM(e.url),url:e.url,...e.repositoryUrl?{repositoryUrl:e.repositoryUrl}:{},embeddedVersion:0,autoImport:e.autoImport??!1,tier:e.tier,...e.description?{description:e.description}:{}})),...wA().map(e=>({id:e.id,label:e.label,source:new BM(e.url),url:e.url,repositoryUrl:e.repositoryUrl,embeddedVersion:HM[e.id]??0,autoImport:!1}))].filter(t=>!e.has(t.id))}function xN(e){try{if(typeof BroadcastChannel<`u`){let t=new BroadcastChannel(Oy);t.postMessage(e),t.close()}}catch{}}async function SN(){ck(),await sM().catch(()=>{});let e=LO();e.isInitialized()&&await MO(e);let t=pN();t.isInitialized()&&await cN(t)}function CN(e){return e.includes(`error`)?`error`:e.includes(`imported`)?`imported`:e.includes(`update-pending`)?`update-pending`:e.includes(`server-stale`)?`server-stale`:e.includes(`busy`)?`busy`:`current`}function wN(e,t,n,r){let i=n.now??Date.now,a=n.broadcast??xN,o=n.reportActivity!==!1;if(t.manifestChecked&&IN(e.id,i()),t.outcome===`error`){let i=t.error??`feed sync failed`;n.mode===`background`&&r?.set(e.id,{sourceId:e.id,label:e.label,state:`error`}),o&&Zx(i);return}t.outcome===`imported`&&t.applied&&(a({kind:`seed-imported`,source:e.id,version:t.importedVersion}),SN(),o&&Yx({source:e.label,added:t.added??0,updated:t.updated??0}),r&&t.hadCheckpoint&&r.set(e.id,{sourceId:e.id,label:e.label,state:`updated`})),r&&t.outcome===`update-pending`&&r.set(e.id,{sourceId:e.id,label:e.label,state:`pending`})}function TN(){return typeof Worker<`u`&&!0}async function EN(e,t,n){return await new Promise(r=>{let i;try{i=new Worker(new URL(`/assets/feedSync.worker-ftP9nOAl.js`,``+import.meta.url),{type:`module`})}catch(e){console.warn(`[feedSync] seed worker unavailable; running on main thread`,e),r(null);return}let a=t.mode===`background`?new Map:void 0,o=[],s=e.length,c=!1,l=e=>{Xx(null),i.terminate(),r(e)};i.onerror=e=>{console.warn(`[feedSync] feed worker failed`,e.message??`unknown error`),l(c?CN(o):null)},i.onmessage=n=>{c=!0;let r=n.data;if(r.type===`progress`){let n=e.find(e=>e.id===r.sourceId);Xx({sourceId:r.sourceId,sourceLabel:n?.label??r.sourceId,chunkId:r.progress.chunkId,recordId:r.progress.recordId,completedRecords:r.progress.completedRecords,totalRecords:r.progress.totalRecords,completedChunks:r.progress.completedChunks,totalChunks:r.progress.totalChunks,phase:r.progress.phase}),t.onProgress?.({...r.progress,sourceId:r.sourceId,sourceLabel:n?.label??r.sourceId,sourceIndex:e.indexOf(n)+1,totalSources:s});return}if(r.type===`first-paint`){SN(),t.onFirstPaint?.();return}if(r.type===`source-result`){let n=e.findIndex(e=>e.id===r.sourceId),i=e[n];if(!i)return;o.push(r.result.outcome),wN(i,r.result,t,a),t.onProgress?.({phase:`finished`,outcome:r.result.outcome,error:r.result.error,sourceId:i.id,sourceLabel:i.label,sourceIndex:n+1,totalSources:s});return}a&&MN([...a.values()]),l(CN(r.outcomes.length?r.outcomes:o))},i.postMessage({type:`run`,dbName:Dk(),userId:Wk.currentSync()?.id??null,owner:n,force:t.force,probeManifests:t.probeManifests,background:t.mode===`background`,sources:e.map(e=>({id:e.id,label:e.label,url:SA(e.url),...e.tier?{tier:e.tier}:{},embeddedVersion:e.embeddedVersion,autoSyncOn:oN(e.id),notebookIds:t.notebookIds===void 0?QM(e.id)===`partial`?rN(e.id)??void 0:t.mode===`background`&&QM(e.id)===`unsubscribed`?[]:void 0:t.notebookIds??void 0,granularRecords:!0}))})})}var DN=null,ON=0,kN=new Set;function AN(){return DN}function jN(e){return kN.add(e),()=>{kN.delete(e)}}function MN(e){DN=e.length?{id:++ON,updates:e}:null;for(let e of kN)e()}function NN(e){DN?.updates.some(t=>t.sourceId===e)&&MN(DN.updates.filter(t=>t.sourceId!==e))}var PN=`wodwiki.seedChecks`;function FN(){try{let e=JSON.parse(localStorage.getItem(PN)??`null`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`number`))}catch{return{}}}function IN(e,t){try{localStorage.setItem(PN,JSON.stringify({...FN(),[e]:t}))}catch{}}function LN(e){return FN()[e]??null}async function RN(e={}){let t=[],n=e.storage??VM(),r=e.mode===`background`?new Map:void 0;if(!(e.isEnabled??yN)())return`disabled`;let i=e.owner??`seed-${(e.now??Date.now)()}-${Math.random().toString(36).slice(2,8)}`,a=e.sources??bN();if(!e.storage&&!e.now&&TN()){let t=await EN(a,e,i);if(t)return t}for(let[o,s]of a.entries()){let c=await BN(s,e,n,i,o+1,a.length,r);console.debug(`[feedSync] ${s.id} outcome: ${c}`),t.push(c)}return r&&MN([...r.values()]),CN(t)}async function zN(e={}){let t=e.sources??bN(),n=e.storage??VM();await QN({storage:n}).catch(e=>console.warn(`[feedSync] core registry migration failed`,e));let r;try{r=await n.getSeedMeta(Ay(`core`))}catch(e){return console.warn(`[feedSync] boot provider probe failed`,e),`error`}if(!r||r.seedVersion<=0)return RN({...e,sources:t.filter(e=>e.autoImport!==!1)});let i=t.filter(e=>e.id===`core`||QM(e.id)!==`unsubscribed`);return RN({...e,sources:i,probeManifests:!0,mode:`background`,reportActivity:!1})}async function BN(e,t,n,r,i,a,o){let s=t.now??Date.now,c=t.onProgress,l=t.reportActivity!==!1,u=(t,n=null)=>c?.({phase:`finished`,outcome:t,error:n,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});c?.({phase:`checking`,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a});let d=l?Jx(`download`,e.label):()=>{};try{let l=await vN({id:e.id,label:e.label,source:e.source,embeddedVersion:e.embeddedVersion,autoSyncOn:oN(e.id),...e.tier?{tier:e.tier}:{},notebookIds:t.notebookIds===void 0?QM(e.id)===`partial`?rN(e.id)??void 0:t.mode===`background`&&QM(e.id)===`unsubscribed`?[]:void 0:t.notebookIds??void 0,granularRecords:!0},{storage:n,owner:r,now:s,force:t.force,probeManifests:t.probeManifests,background:t.mode===`background`},{onProgress:t=>{Xx({sourceId:e.id,sourceLabel:e.label,chunkId:t.chunkId,recordId:t.recordId,completedRecords:t.completedRecords,totalRecords:t.totalRecords,completedChunks:t.completedChunks,totalChunks:t.totalChunks,phase:t.phase}),c?.({...t,sourceId:e.id,sourceLabel:e.label,sourceIndex:i,totalSources:a})},onFirstPaint:()=>{ck(),t.onFirstPaint?.()}});return wN(e,l,t,o),u(l.outcome,l.error),l.outcome}finally{Xx(null),d()}}async function VN(e,t={}){let n=(t.sources??bN()).find(t=>t.id===e);if(!n)return console.warn(`[feedSync] unknown feed source: ${e}`),`error`;let r=await RN({...t,sources:[n]});return(r===`imported`||r===`current`)&&(t.subscribe===!1?$M(e)||eN(e,!1):!t.preserveSubscriptionState&&!t.notebookIds&&eN(e,!0),NN(e)),r}async function HN(e,t,n={}){return VN(e,{...n,notebookIds:[t],preserveSubscriptionState:!0,force:!0})}async function UN(e,t,n,r={}){if(n)return nN(e,t,!0),{outcome:await HN(e,t,r)};{nN(e,t,!1);let n=r.storage??VM(),i=await n.getSeedMeta(Ay(e));if(!i||!i.chunks[t])return{deleted:0};let a={...i.chunks};if(delete a[t],Object.keys(a).length===0){let t=await n.removeSourceContent(i);ck();let r=LO();r.isInitialized()&&await MO(r);let a=pN();return a.isInitialized()&&await cN(a),xN({kind:`seed-removed`,source:e}),{deleted:t}}let o={...i,chunks:a,importedAt:Date.now()},s={schema:9,version:i.seedVersion,builtAt:i.builtAt,chunks:[]},c=await n.applyChunk({chunkId:t,rows:[],manifest:s,expectedMeta:i,meta:o});ck();let l=LO();l.isInitialized()&&await MO(l);let u=pN();return u.isInitialized()&&await cN(u),xN({kind:`seed-removed`,source:e}),{deleted:c.deleted}}}async function WN(e,t={}){if(e===`core`)return{deleted:0};let n=t.storage??VM(),r=await n.getSeedMeta(Ay(e)),i=r?await n.removeSourceContent(r):0;eN(e,!1),sN(e,!1),NN(e),ck();let a=LO();a.isInitialized()&&await MO(a);let o=pN();return o.isInitialized()&&await cN(o),xN({kind:`seed-removed`,source:e}),{deleted:i}}async function GN(e,t={}){if(e===`core`)return{deleted:0};let n=await WN(e,t);return wA().some(t=>t.id===e)?DA(e):AA(e),n}async function KN(e={}){let t=e.storage??VM(),n=!1,r=!1;return await Promise.all((e.sources??bN()).map(async e=>{try{let i=await t.getSeedMeta(Ay(e.id));if(!i||i.seedVersion<=0)return;e.autoImport===!1?r=!0:n=!0}catch{}})),{coreImported:n,libraryImported:r}}async function qN(e={}){let t=e.storage??VM();return{sources:await Promise.all((e.sources??bN()).map(async n=>{let r=await t.getSeedMeta(Ay(n.id)),i=null,a=null,o=null,s=n.repositoryUrl;try{o=ib(await n.source.fetchManifest()),i={version:o.version,schema:o.schema,builtAt:o.builtAt},s??=bA(o.repositoryUrl??``)??void 0,IN(n.id,(e.now??Date.now)())}catch(e){a=e instanceof Error?e.message:String(e)}let c=JN(n.id,o,r);return{id:n.id,label:n.label,url:n.url,...s?{repositoryUrl:s}:{},...n.description?{description:n.description}:{},autoImport:n.autoImport!==!1,notebooks:c,stored:r?{version:r.seedVersion,schema:r.schema,builtAt:r.builtAt,importedAt:r.importedAt}:null,remote:i,remoteError:a,upToDate:r!=null&&i!=null&&r.schema===9&&r.seedVersion===i.version,count:c.reduce((e,t)=>e+t.count,0),bytes:c.reduce((e,t)=>e+t.bytes,0),checkedAt:LN(n.id),subscribed:$M(n.id),autoSync:oN(n.id)}}))}}function JN(e,t,n){let r={};for(let t of WA(e))r[t.chunkId]=t;let i=(t?.chunks??[]).map(t=>({id:r[t.id]?.id??t.id,label:r[t.id]?.label??t.id,chunkId:t.id,count:t.count,bytes:t.bytes,imported:!!n?.chunks[t.id],subscribed:tN(e,t.id)}));return i.length>0?i:WA(e).map(t=>({id:t.id,label:t.label,chunkId:t.chunkId,count:0,bytes:0,imported:!!n?.chunks[t.chunkId],subscribed:tN(e,t.chunkId)}))}async function YN(e={}){let t=e.storage??VM(),n=0;for(let e of FA){let r=Ay(e.id);try{let i=await t.getSeedMeta(r);if(i&&i.seedVersion>0)continue;let a=[];for(let n of WA(e.id)){if(n.id===e.id)continue;let r=await t.getSeedMeta(Ay(n.id));r&&r.seedVersion>0&&a.push(r)}if(a.length===0)continue;let o=a.reduce((e,t)=>t.seedVersion>e.seedVersion?t:e),s=a.find(e=>e.tier)?.tier,c={key:r,schema:o.schema,seedVersion:o.seedVersion,builtAt:o.builtAt,importedAt:Math.max(...a.map(e=>e.importedAt)),chunks:Object.assign({},...a.map(e=>e.chunks)),...s?{tier:s}:{},claim:null};await t.putSeedMeta(c,i??null);for(let e of a)await t.putSeedMeta({...e,seedVersion:0,chunks:{},claim:null},e);n+=1}catch(t){console.warn(`[feedSync] legacy checkpoint adoption failed for ${e.id}`,t)}}return n}async function XN(e={}){return await(e.storage??VM()).backfillFeedProvenance()}async function ZN(e={}){return await(e.storage??VM()).migrateNotebookVocabulary()}async function QN(e={}){let t=e.storage??VM(),n=Ay(`seed-core`),r=await t.getSeedMeta(n),i=r?.chunks??{};if(!r||r.seedVersion<=0&&Object.keys(i).length===0&&!r.claim)return!1;let a=Ay(`core`),o=await t.getSeedMeta(a),s={...o?.chunks};for(let[e,t]of Object.entries(i)){let n=s[e];s[e]=n?{sha256:n.sha256,noteIds:[...new Set([...n.noteIds??[],...t.noteIds??[]])]}:{...t,noteIds:t.noteIds??[]}}let c=o?{...o,builtAt:``,claim:null,chunks:s}:{...My(a),chunks:s};return await t.putSeedMeta(c,o??null),await t.putSeedMeta(My(n),r),!0}var $N=(0,W.createContext)(null);function eP({children:e}){let[{isReady:t,error:n,revision:r},i]=(0,W.useState)({isReady:!1,error:null,revision:0}),a=LO(),o=(0,W.useCallback)(async()=>{try{await MO(a),i(e=>({isReady:!0,error:null,revision:e.revision+1}))}catch(e){i(t=>({...t,isReady:!1,error:e instanceof Error?e:Error(String(e))}))}},[a]),s=(0,W.useCallback)(async()=>{await o()},[o]);return(0,W.useEffect)(()=>{o()},[o]),(0,W.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(Oy);return e.onmessage=()=>{s()},()=>e.close()},[s]),(0,G.jsx)($N.Provider,{value:{registry:a,isReady:t,error:n,revision:r,refresh:s},children:e})}function tP(){let e=(0,W.useContext)($N);if(!e)throw Error(`useEffortRegistry must be within EffortRegistryProvider`);return e}var nP=(0,W.createContext)(null);function rP({children:e}){let[t,n]=(0,W.useState)(!1),[r,i]=(0,W.useState)(null),a=pN(),o=(0,W.useCallback)(async()=>{try{await cN(a),n(!0),i(null)}catch(e){i(e instanceof Error?e:Error(String(e))),n(!1)}},[a]),s=(0,W.useCallback)(async()=>{n(!1),await o()},[o]);return(0,W.useEffect)(()=>{o()},[o]),(0,W.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(Oy);return e.onmessage=()=>{s()},()=>e.close()},[s]),(0,G.jsx)(nP.Provider,{value:{registry:a,isReady:t,error:r,refresh:s},children:e})}function iP(){let e=(0,W.useContext)(nP);if(!e)throw Error(`useEquipmentRegistry must be within EquipmentRegistryProvider`);return e}var aP=gt,oP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(p,{ref:n,className:K(`pointer-events-none fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]`,e),...t}));oP.displayName=p.displayName;var sP=R(`group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full`,{variants:{variant:{default:`border bg-background text-foreground`,destructive:`destructive group border-destructive bg-destructive text-destructive-foreground`}},defaultVariants:{variant:`default`}}),cP=W.forwardRef(({className:e,variant:t,...n},r)=>(0,G.jsx)(lr,{ref:r,className:K(sP({variant:t}),e),...n}));cP.displayName=lr.displayName;var lP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(ot,{ref:n,className:K(`inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive`,e),...t}));lP.displayName=ot.displayName;var uP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(er,{ref:n,className:K(`absolute right-2 top-2 rounded-md p-1 text-muted-foreground opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-destructive-foreground group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive group-[.destructive]:focus:ring-offset-background`,e),"toast-close":``,"aria-label":`Dismiss notification`,...t,children:(0,G.jsx)(xr,{className:`h-4 w-4`})}));uP.displayName=er.displayName;var dP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(Oe,{ref:n,className:K(`text-sm font-semibold`,e),...t}));dP.displayName=Oe.displayName;var fP=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(pr,{ref:n,className:K(`text-sm opacity-90`,e),...t}));fP.displayName=pr.displayName;var pP=3,mP=1e6,hP=0;function gP(){return hP=(hP+1)%(2**53-1),hP.toString()}var _P=new Map,vP=e=>{if(_P.has(e))return;let t=setTimeout(()=>{_P.delete(e),SP({type:`REMOVE_TOAST`,toastId:e})},mP);_P.set(e,t)},yP=(e,t)=>{switch(t.type){case`ADD_TOAST`:return{...e,toasts:[t.toast,...e.toasts].slice(0,pP)};case`UPDATE_TOAST`:return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case`DISMISS_TOAST`:{let{toastId:n}=t;return n?vP(n):e.toasts.forEach(e=>vP(e.id)),{...e,toasts:e.toasts.map(e=>!n||e.id===n?{...e,open:!1}:e)}}case`REMOVE_TOAST`:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},bP=[],xP={toasts:[]};function SP(e){xP=yP(xP,e),bP.forEach(e=>e(xP))}function Q(e){let t=gP(),n=()=>SP({type:`DISMISS_TOAST`,toastId:t}),r=e=>SP({type:`UPDATE_TOAST`,toast:{...e,id:t}});return SP({type:`ADD_TOAST`,toast:{...e,id:t,open:!0,onOpenChange:e=>{e||n()}}}),{id:t,dismiss:n,update:r}}function CP(){let[e,t]=W.useState(xP);return W.useEffect(()=>(bP.push(t),()=>{let e=bP.indexOf(t);e>-1&&bP.splice(e,1)}),[e]),{...e,toast:Q,dismiss:e=>SP({type:`DISMISS_TOAST`,toastId:e})}}function wP(){let{toasts:e}=CP();return(0,G.jsxs)(aP,{children:[e.map(function({id:e,title:t,description:n,action:r,...i}){return(0,G.jsxs)(cP,{...i,children:[(0,G.jsxs)(`div`,{className:`grid gap-1`,children:[t&&(0,G.jsx)(dP,{children:t}),n&&(0,G.jsx)(fP,{children:n})]}),r,(0,G.jsx)(uP,{})]},e)}),(0,G.jsx)(oP,{})]})}var TP={activeL1Id:null,activeL2Id:null,activeL3Id:null,leftDrawerOpen:!1,rightDrawerOpen:!1,expandedIds:new Set,journalFilter:{selectedDate:null,selectedTags:[]},searchFilter:{scope:`all`}};function EP(e,t){switch(t.type){case`SET_ACTIVE_L1`:return e.activeL1Id===t.id?e:{...e,activeL1Id:t.id};case`SET_ACTIVE_L2`:return e.activeL2Id===t.id?e:{...e,activeL2Id:t.id};case`SET_ACTIVE_L3`:return e.activeL3Id===t.id?e:{...e,activeL3Id:t.id};case`SET_LEFT_DRAWER`:return e.leftDrawerOpen===t.open?e:{...e,leftDrawerOpen:t.open};case`SET_RIGHT_DRAWER`:return e.rightDrawerOpen===t.open?e:{...e,rightDrawerOpen:t.open};case`TOGGLE_EXPANDED`:{let n=new Set(e.expandedIds);return n.has(t.id)?n.delete(t.id):n.add(t.id),{...e,expandedIds:n}}case`SET_JOURNAL_DATE`:return{...e,journalFilter:{...e.journalFilter,selectedDate:t.date}};case`SET_JOURNAL_TAGS`:return{...e,journalFilter:{...e.journalFilter,selectedTags:t.tags}};case`SET_SEARCH_SCOPE`:return{...e,searchFilter:{scope:t.scope}};default:return e}}var DP=e=>{let t=document.getElementById(e);if(t){let e=t.getBoundingClientRect().top+window.scrollY-80;window.scrollTo({top:e,behavior:`smooth`})}},OP=(0,W.createContext)({tree:[],navState:TP,dispatch:()=>{},l3Items:[],setL3Items:()=>{},secondarySpec:void 0,setSecondarySpec:()=>{},contextNav:void 0,setContextNav:()=>{},streamControls:null,setStreamControls:()=>{},scrollToSection:DP,registerScrollFn:()=>{},openCreateJournal:()=>{},registerCreateJournal:()=>{}});function kP(){return(0,W.useContext)(OP)}function AP(e){let{tree:t,dispatch:n}=kP();(0,W.useEffect)(()=>{e&&t.some(t=>t.id===e)&&n({type:`SET_ACTIVE_L1`,id:e})},[e,t,n])}function jP({tree:e,children:t}){let[n,r]=(0,W.useReducer)(EP,TP),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(void 0),[c,l]=(0,W.useState)(void 0),[u,d]=(0,W.useState)(null),f=(0,W.useCallback)(e=>{s(t=>t===e?t:e)},[]),p=(0,W.useCallback)(e=>{l(t=>{let n=typeof e==`function`?e(t):e;return t===n||!t&&!n||t&&n&&t.pathname===n.pathname&&t.spec===n.spec?t:n})},[]),m=(0,W.useCallback)(e=>{d(t=>t===e?t:e)},[]),h=En(),g=(0,W.useRef)(DP),_=(0,W.useRef)(null);(0,W.useEffect)(()=>{let t=e.find(e=>e.isActive?e.isActive(h,n):e.action.type===`route`?e.action.to===`/`?h.pathname===`/`||h.pathname===``:h.pathname.startsWith(e.action.to):!1);r({type:`SET_ACTIVE_L1`,id:t?.id??null})},[h.pathname]),(0,W.useEffect)(()=>{r({type:`SET_LEFT_DRAWER`,open:!1})},[h.pathname]);let v=(0,W.useCallback)(e=>{a(t=>t.length===e.length&&t.every((t,n)=>t.id===e[n]?.id&&t.label===e[n]?.label&&t.secondaryAction?.id===e[n]?.secondaryAction?.id&&t.secondaryRunIcon===e[n]?.secondaryRunIcon)?t:e)},[]),y=(0,W.useCallback)(e=>{r({type:`SET_ACTIVE_L3`,id:e}),g.current(e)},[]),b=(0,W.useCallback)(e=>{g.current=e},[]),x=(0,W.useCallback)(e=>{_.current?.(e)},[]),S=(0,W.useCallback)(e=>{_.current=e},[]),C=(0,W.useMemo)(()=>({tree:e,navState:n,dispatch:r,l3Items:i,setL3Items:v,secondarySpec:o,setSecondarySpec:f,contextNav:c,setContextNav:p,streamControls:u,setStreamControls:m,scrollToSection:y,registerScrollFn:b,openCreateJournal:x,registerCreateJournal:S}),[e,n,i,v,o,f,c,p,u,m,y,b,x,S]);return(0,G.jsx)(OP.Provider,{value:C,children:t})}function MP(e){if(!e)return null;let t=X(e);return t.error?`Couldn't parse "${e}" — ${t.error}`:null}var NP=1e3;function PP(e){let t=(0,W.useRef)(e);t.current=e;let[n,r]=Rt(),i=n.get(`q`)??``,[a,o]=(0,W.useState)(()=>{let{defaultQuery:e,legacy:r}=t.current;return i?X(i).error?r?.salvageQ?.(i,n)??e:i:r?.toQuery(n)??e}),[s,c]=(0,W.useState)(()=>!i||!X(i).error||t.current.legacy?.salvageQ?.(i,n)?null:MP(i)),l=(0,W.useRef)(a);l.current=a;let u=(0,W.useRef)(n);u.current=n;let d=(0,W.useRef)(!1);(0,W.useEffect)(()=>{if(d.current)return;d.current=!0;let{legacy:e}=t.current,n=u.current,i=n.get(`q`)??``,a=null;if(i?X(i).error&&(a=e?.salvageQ?.(i,n)??null):a=e?.toQuery(n)??null,!a)return;let o=new URLSearchParams(n);for(let t of e?.keys??[])o.delete(t);o.set(`q`,a),r(o,{replace:!0})},[r]);let f=(0,W.useRef)(!0),p=(0,W.useRef)(null),m=(0,W.useRef)(i);(0,W.useEffect)(()=>{if(i===m.current)return;m.current=i,f.current=!0,clearTimeout(p.current),p.current=null,c(MP(i));let e=i&&!X(i).error?i:t.current.defaultQuery;o(t=>t===e?t:e)},[i]);let h=(0,W.useRef)(t.current.defaultQuery);return(0,W.useEffect)(()=>{let e=t.current.defaultQuery;e!==h.current&&(h.current=e,!i&&o(t=>t===e?t:e))},[i,t.current.defaultQuery]),(0,W.useEffect)(()=>{let e=()=>{let e=new URLSearchParams(window.location.search).get(`q`)??``;e!==m.current&&(m.current=e,f.current=!0,clearTimeout(p.current),p.current=null,c(MP(e)),o(e&&!X(e).error?e:t.current.defaultQuery))};return window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`popstate`,e),clearTimeout(p.current)}},[]),{query:a,setQuery:(0,W.useCallback)(e=>{if(o(e),!X(e).error&&e!==l.current){let t=new URLSearchParams(u.current);t.set(`q`,e),m.current=e,r(t,{replace:!f.current}),f.current=!1,clearTimeout(p.current),p.current=setTimeout(()=>{f.current=!0,p.current=null},NP)}},[r]),urlQueryError:s}}var FP=[`origin`,`discipline`];function IP(e){return/\s/.test(e)?`text:"${e}"`:`text:${e}`}function LP(e){let t=e.filter(Boolean);return`:effort${t.length?`{${t.join(`,`)}}`:``}`}function RP(e,t){let n=e.trim();if(!n||n.startsWith(`:`)||n.includes(`{`)||n.includes(`}`))return null;let r=t.get(`origin`),i=t.get(`discipline`)?.trim();return LP([IP(n),...r&&r!==`all`?[`origin:${r}`]:[],...i?[`discipline:${i}`]:[]])}function zP(e){if(!FP.some(t=>e.get(t)))return null;let t=e.get(`origin`),n=e.get(`discipline`)?.trim();return LP([...t&&t!==`all`?[`origin:${t}`]:[],...n?[`discipline:${n}`]:[]])}var BP={keys:FP,toQuery:zP,salvageQ:RP};function VP(e){return e.endsWith(`/`)&&e.length>1?e.slice(0,-1):e}function HP(e){let t=[`note`,`session`,`post`,`text`,`timePreset`,`rangeStart`,`rangeEnd`,`s`,`tags`,`mode`];return{keys:t,toQuery(n){if(!t.some(e=>n.has(e)))return null;let r=null;if(n.has(`note`)||n.has(`session`)||n.has(`post`)){let e=[];(n.get(`note`)??`include`)!==`hide`&&e.push(`journal`),(n.get(`session`)??`include`)!==`hide`&&e.push(`notebooks`),e.length===1&&(r=`source:${e[0]}`)}else e&&(r=`source:${e}`);let i=n.get(`timePreset`)??`2w`,a=i===`all`||i===`custom`?null:`last ${i}`,o=n.get(`text`)?.trim(),s=n.get(`tags`)?.trim(),c=o?/\s/.test(o)?`text:"${o}"`:`text:${o}`:null,l=s?`tags:${s}`:null,u=`:note`,d=[c,l].filter(Boolean);r===`source:journal`?u=`:journal`:r===`source:notebooks`?u=`:notebooks`:r===`source:playground`?u=`:playground`:r&&d.unshift(r);let f=d.length?`{${d.join(`,`)}}`:``;return[`${u}${f}`,a].filter(Boolean).join(` `)}}}var UP={route:`/journal`,title:`Journal`,defaultWql:`:note{notebook:journal} by {date} last 4w`,level:`note`,target:`note`,scopeOptions:[`journal`],calendarCapable:!0,legacy:HP(`journal`)},WP={route:`/notebooks`,title:`Notebooks`,defaultWql:`:notebook{subscribed:true} by {feed}`,level:`session`,target:`note`,scopeOptions:[`notebooks`],shelfVisible:!1,feedNotice:!0,legacy:HP(`notebooks`)},GP={route:`/notes`,title:`Notes`,defaultWql:`:note{notebook:*}`,level:`note`,target:`note`,scopeOptions:[`journal`,`notebooks`],emptyMessage:`No note entries match your search.`,calendarCapable:!0,legacy:HP(`notebooks`)},KP={route:`/feeds`,title:`Feeds`,defaultWql:`:notebook{source:notebooks}`,level:`session`,target:`notebook`,scopeOptions:[`notebooks`],shelfVisible:!1,defaultLayout:`cards`,emptyMessage:`No feeds match your search.`,feedNotice:!0,legacy:HP(`notebooks`)},qP={route:`/pages`,title:`Pages`,defaultWql:`:page{}`,level:`note`,target:`page`,scopeOptions:[],emptyMessage:`No pages match your search.`},JP={route:`/efforts`,title:`Efforts`,defaultWql:`:effort`,level:`effort`,target:`effort`,scopeOptions:[],emptyMessage:`No efforts match your search.`,legacy:BP},YP={route:`/equipment`,title:`Equipment`,defaultWql:`:equipment{}`,level:`note`,target:`equipment`,scopeOptions:[`equipment`],emptyMessage:`No equipment matches your search.`},XP={route:`/tags`,title:`Tags`,defaultWql:`:tag{}`,level:`note`,target:`tag`,scopeOptions:[],emptyMessage:`No tags match your search.`},ZP={route:`/sessions`,title:`Sessions`,defaultWql:`:session{}`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No completed session results recorded in this period.`,calendarCapable:!0},QP={route:`/playgrounds`,title:`Playgrounds`,defaultWql:`:playground{} by {date} last 1w`,level:`note`,target:`note`,scopeOptions:[`playground`],shelfVisible:!0,legacy:HP(`playground`)};function $P(e){return{route:`/session/${e}`,defaultWql:`:session{} from ${e} to ${e}`,level:`result`,target:`session`,scopeOptions:[],emptyMessage:`No session results recorded on ${e}.`}}function eF(e){return{route:`/results/${e}`,defaultWql:`:session{result:${e}, plane:segment}`,level:`segment`,target:`session`,scopeOptions:[],defaultLayout:`rows`,dashboardEnabled:!0,emptyMessage:`No segment records found for result ${e}.`}}function tF(e){let t=KA(e);return{route:`/notebook/${e}`,title:BO(t),defaultWql:`:note{notebook:${t}} by {date}`,level:`session`,target:`note`,scopeOptions:[`notebooks`],shelfVisible:!1,defaultLayout:`cards`,calendarCapable:!0,notebookSlug:t,legacy:HP(`notebooks`)}}var nF={"/journal":UP,"/notebooks":WP,"/notes":GP,"/feeds":KP,"/pages":qP,"/efforts":JP,"/equipment":YP,"/tags":XP,"/sessions":ZP,"/playgrounds":QP};function rF(e){let t=VP(e),n=nF[t];if(n)return n;if(t.startsWith(`/results/`)){let e=t.slice(9);if(e)return eF(e)}if(t.startsWith(`/session/`)){let e=t.slice(9);if(e)return $P(e)}if(t.startsWith(`/notebook/`)){let e=t.slice(10);if(e&&!e.includes(`/`))return tF(e)}}function iF(e){return rF(e)??UP}function aF(e){let t=nF[VP(e)]?.title;if(t)return t;if(VP(e).startsWith(`/notebook/`)){let t=VP(e).slice(10);if(t&&!t.includes(`/`))return BO(t)}}function oF(e){let t=VP(e);if(nF[t])return!0;if(t.startsWith(`/results/`)||t.startsWith(`/session/`))return t.slice(9)!==``;if(t.startsWith(`/notebook/`)){let e=t.slice(10);return!!(e&&!e.includes(`/`))}return!1}var $={home:`/`,playgroundRoot:`/playground`,playground:`/playground/:id`,note:`/note/:noteId`,notes:`/notes`,journal:`/journal`,day:`/day/:date`,plan:`/plan`,aiFirst:`/ai-first`,feeds:`/feeds`,feed:`/feed/:slug`,notebooks:`/notebooks`,notebook:`/notebook/:slug`,notebookTarget:`/notebook/:slug/:target`,notebookItem:`/notebook/:slug/:itemDate/:item`,subscribe:`/subscribe`,pages:`/pages`,page:`/page/:slug`,tags:`/tags`,tagCategory:`/t/:type`,tag:`/t/:type/:tag`,sessions:`/sessions`,sessionDetail:`/results/:sessionId`,sessionDate:`/session/:date`,playgrounds:`/playgrounds`,tracker:`/tracker/:runtimeId`,run:`/run/:runtimeId`,load:`/load`,loadJournal:`/load/journal`,loadJournalDate:`/load/journal/:date`,efforts:`/efforts`,effort:`/effort/:slug`,equipment:`/equipment`,equipmentSlug:`/equipment/:slug`,dashboards:`/dashboards`,dashboardView:`/dashboard/:slug`,settings:`/settings`,settingsAppearance:`/settings/appearance`,settingsProfile:`/settings/profile`,settingsStorage:`/settings/storage`,settingsSync:`/settings/sync`,settingsSystem:`/settings/system`,settingsTags:`/settings/tags`,settingsSoundProfiles:`/settings/sound-profiles`,settingsData:`/settings/data`,settingsDatabase:`/settings/database`,settingsQueries:`/settings/queries`};function sF(e){return`/playground/${encodeURIComponent(e)}`}function cF(e){return`/day/${encodeURIComponent(e)}`}function lF(e,t){return`/day/${encodeURIComponent(e)}?autoStart=${encodeURIComponent(t)}`}function uF(e){return`/note/${encodeURIComponent(e)}`}function dF(e){let t=KA(e);return`/notebook/${encodeURIComponent(t)}`}function fF(e,t){return`/notebook/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function pF(e,t){return`/notebook/${encodeURIComponent(e)}/${t.split(`/`).map(encodeURIComponent).join(`/`)}`}function mF(e){return`/run/${encodeURIComponent(e)}`}function hF({zip:e}){return`/load?zip=${encodeURIComponent(e)}`}function gF(e){return`/results/${encodeURIComponent(e)}`}function _F(e){return`/page/${encodeURIComponent(e)}`}function vF(){return`/playgrounds`}function yF(){return`/efforts`}function bF(e){return`/equipment/${encodeURIComponent(e)}`}function xF(e){return`/t/${encodeURIComponent(e)}`}function SF(e,t){return`/t/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function CF(e){let t=new URLSearchParams;e?.q&&t.set(`q`,e.q),e?.weeks&&t.set(`weeks`,String(e.weeks));let n=t.toString();return`/dashboards${n?`?${n}`:``}`}function wF(){return`/dashboards`}function TF(e){return`/dashboard/${encodeURIComponent(e)}`}function EF(e,t,n){let r=new URLSearchParams;if(t)for(let[e,n]of Object.entries(t))r.set(e,n);n?.mode&&r.set(`mode`,n.mode),n?.tab&&r.set(`tab`,n.tab);let i=r.toString();return i?`/effort/${encodeURIComponent(e)}?${i}`:`/effort/${encodeURIComponent(e)}`}function DF(e){return{mode:e.get(`mode`)??void 0,tab:e.get(`tab`)??void 0,q:e.get(`q`)??void 0,origin:e.get(`origin`)??void 0}}function OF(e){return e.startsWith(`/playground/`)}function kF(e){return e===`/efforts`||e.startsWith(`/effort/`)||e===`/t/effort`||e.startsWith(`/t/effort/`)}function AF(e){return e===`/equipment`||e.startsWith(`/equipment/`)||e===`/t/equipment`||e.startsWith(`/t/equipment/`)}function jF(e){let t=e.match(/^\/notebook\/([^/]+)\/([^/]+)\/([^/]+)$/);return t?[t[1],t[2],t[3]]:null}function MF(e){let t=e.match(/^\/feed\/([^/]+)$/);return t?t[1]:null}function NF(e){return Object.entries(e).filter(([e])=>e.startsWith(`markdown/dashboards/`)).map(([e,t])=>{let{meta:n}=ro(t),r=e.split(`/`).pop().replace(/\.md$/,``);return{slug:typeof n.slug==`string`&&n.slug?n.slug:r,title:typeof n.title==`string`&&n.title?n.title:r,rawContent:t}}).sort((e,t)=>e.title.localeCompare(t.title))}function PF(e){return e.map(e=>{let{meta:t}=ro(e.rawContent);if(t.dashboard!==`true`)return null;let n=typeof t.slug==`string`&&t.slug?t.slug:null,r=typeof t.title==`string`&&t.title?t.title:n??e.id;return n?{noteId:e.id,slug:n,title:r,rawContent:e.rawContent}:null}).filter(e=>e!==null)}function FF(e,t){let n=dk(),r=(0,W.useMemo)(()=>n?NF(n):[],[n]),[i,a]=(0,W.useState)(null),[o,s]=(0,W.useState)(!0);return(0,W.useEffect)(()=>{if(!e){a(null),s(!1);return}let t=!1;return s(!0),Cj.listNotes({kind:`dashboard`}).then(n=>{if(t)return;let i=PF(n).find(t=>t.slug===e);if(i)a({slug:e,title:i.title,rawContent:i.rawContent,editable:!0,noteId:i.noteId});else{let t=r.find(t=>t.slug===e);a(t?{slug:t.slug,title:t.title,rawContent:t.rawContent,editable:!1}:null)}}).catch(()=>{t||a(null)}).finally(()=>{t||s(!1)}),()=>{t=!0}},[e,t,r]),{source:i,loading:o}}function IF(){let e=dk(),t=(0,W.useMemo)(()=>e?NF(e):[],[e]),[n,r]=(0,W.useState)([]),[i,a]=(0,W.useState)(!0);return(0,W.useEffect)(()=>{let e=!1;return Cj.listNotes({kind:`dashboard`}).then(n=>{if(e)return;let i=PF(n),a=new Set(i.map(e=>e.slug)),o=[...i.map(e=>({slug:e.slug,title:e.title,editable:!0})),...t.filter(e=>!a.has(e.slug)).map(e=>({slug:e.slug,title:e.title,editable:!1}))];e||r(o)}).catch(()=>{e||r(t.map(e=>({slug:e.slug,title:e.title,editable:!1})))}).finally(()=>{e||a(!1)}),()=>{e=!0}},[t]),{items:n,loading:i}}function LF(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function RF(){return LF(new Date)}function zF(e){return e<RF()}function BF(e){let t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2])-1,i=Number(t[3]),a=new Date(n,r,i),o=LF(a);return o===e?{dateKey:o,date:a}:null}function VF(e){let t=BF(e);if(!t)throw Error(`Invalid journal date: ${e}`);return t.date.getTime()}function HF({persistence:e,moveRecordPlacement:t,addRecordPlacement:n,uuid:r=tn}){let i=new Map;return{async create(t){let n=t.journalDate?VF(t.journalDate):Date.now();return e.createNote({id:r(),title:xx(t.title),rawContent:t.rawContent,tags:t.tags??[],targetDate:n,journalDate:t.journalDate||void 0,type:t.type??`journal`,slug:t.slug,sourceId:t.sourceId})},getById(t){return e.getNote({id:t},{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},resolve(t){return e.getNote(t,{projection:`workbench`,resultSelection:{mode:`all-for-note`},includeSections:!0,includeAttachments:!0})},async listByDate(t){return VF(t),(await e.listNotes({journalDate:t,kind:`journal`,projection:`summary`})).sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id))},update(t,n,r){let a=t.id,o=xx(n.match(/^#\s+(.+)$/m)?.[1]?.trim()),s=t.sourceRevision;if(s===void 0)return Promise.reject(Error(`Loaded Note source revision is required`));let c=0;for(;c<t.rawContent.length&&c<n.length&&t.rawContent[c]===n[c];)c++;let l=t.rawContent.length,u=n.length;for(;l>c&&u>c&&t.rawContent[l-1]===n[u-1];)l--,u--;let d=Va(t.blocks??{},r?.changes??[{from:c,to:l,insert:n.slice(c,u)}]);for(let e of r?.retainedBlocks??[]){let n=Object.values(t.blocks??{}).find(t=>t.from===e.from&&t.to===e.to);n&&(d[n.id]={...n,from:e.nextFrom,to:e.nextTo})}let f=za(n,{sourceRevision:s,registeredWidgets:Ma,blocks:d}),p=async()=>e.mutateNote({id:a},{rawContent:n,blocks:f,expectedSourceRevision:s,metadata:o?{title:o}:void 0}),m=(i.get(a)??Promise.resolve()).then(p,p);i.set(a,m);let h=()=>{i.get(a)===m&&i.delete(a)};return m.then(h,h),m},async moveToDate(r,i){let a=VF(i);if(t&&n){let a=(await e.getNote({id:r},{projection:`summary`})).placements?.find(e=>e.date);return a?t(r,a.pageId,{date:i}):n(r,{date:i})}return e.mutateNote({id:r},{metadata:{journalDate:i,targetDate:a}})},delete(t){return e.deleteNote({id:t})}}}var UF=new cA,WF=HF({persistence:Cj,moveRecordPlacement:(e,t,n)=>UF.moveRecordPlacement(e,t,n),addRecordPlacement:(e,t)=>UF.addRecordPlacement(e,t)});function GF({persistence:e,journal:t}){async function n(n){let r=await e.listNotes({kind:`dashboard`});for(let e of r){if(n&&e.id===n)continue;let{meta:r,body:i}=ro(e.rawContent);if(r.dashboard!==`true`||r[`dashboard.active`]!==`true`)continue;let a={...r};delete a[`dashboard.active`],await t.update(e,`---\n${ao(a)}\n---\n${i}`)}}return{async createDashboard(e=qv){return await n(),t.create({title:e,rawContent:Yv(e),type:`dashboard`,sourceId:`dashboards`})},async createDashboardFromScope(e){await n();let r=hy(e),{meta:i}=ro(r),a=typeof i.title==`string`&&i.title?i.title:qv;return t.create({title:a,rawContent:r,type:`dashboard`,sourceId:`dashboards`})},async cloneDashboard(e,r,i){await n();let{meta:a,body:o}=ro(r),s={...a,slug:e};i&&(s.title=i);let c=`---\n${ao(s)}\n---\n${o}`;return t.create({title:typeof s.title==`string`?s.title:e,rawContent:c,type:`dashboard`,sourceId:`dashboards`})}}}var KF=GF({persistence:Cj,journal:WF}),qF=[{query:`sum:totalVolume{discipline:strength} by {week}`,label:`Weekly strength volume`,question:`Is strength volume rising?`},{query:`avg:tis{effort:thruster} by {week}`,label:`Thruster time-in-motion`,question:`Is time-in-motion improving?`},{query:`sum:totalReps{discipline:strength} by {effort}`,label:`Reps by lift`,question:`Where do the reps go?`},{query:`last:sessionLoad{note:benchmark} by {session}`,label:`Benchmark loads`,question:`Is session load dropping?`},{query:`sum:sessionLoad{} by {intensity, week}`,label:`Polarized weekly load`,question:`Is my intensity 80/20?`},{query:`avg:calc.acwr{} by {day}`,label:`Injury risk (ACWR)`,question:`Am I spiking my workload?`},{query:`count:totalReps{tags:mobility} by {week}`,label:`Mobility habit`,question:`Did I do mobility work?`},{query:`avg:tis{} by {round}`,label:`TIS by round`,question:`Where does the pace fall apart?`},{query:`sum:totalVolume{} by {effort}`,label:`Volume by lift`,question:`Where does the volume go?`},{query:`:note{tags:pr,source:journal}`,label:`Find PR notes`,question:`Which notes are tagged PR?`},{query:`:note{type:wod,source:journal} last 8w`,label:`Recent workouts`,question:`What workouts did I do recently?`},{query:`:note{source:feeds}`,label:`Notebook workouts`,question:`What workouts are in the library?`},{query:`:block{text:fran}`,label:`Find Fran everywhere`,question:`Which blocks mention Fran?`}],JF=(0,W.createContext)(()=>{});function YF({close:e,children:t}){return(0,G.jsx)(JF.Provider,{value:e,children:t})}function XF(){return(0,W.useContext)(JF)}function ZF(e,t){if(!e)return!1;if(e===t)return!0;let n=X(e),r=X(t);return!n.error&&!r.error&&hg(n)===hg(r)}function QF(e){let t=En(),n=fn(),r=XF(),{items:i,loading:a}=IF(),[o,s]=(0,W.useState)(!1),c=async()=>{s(!0);try{let e=await KF.createDashboard(),{meta:t}=ro(e.rawContent),i=typeof t.slug==`string`&&t.slug?t.slug:e.id;n(TF(i)),r()}finally{s(!1)}},l=t.pathname===`/dashboards`,u=l?new URLSearchParams(t.search).get(`q`):null;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-1 px-2 py-3`,"data-testid":`dashboards-nav-panel`,children:[(0,G.jsx)($F,{label:`Explorer`,active:l,onClick:()=>{n(wF()),r()}}),l?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Examples`}),qF.map(e=>(0,G.jsx)($F,{label:e.label,title:e.question,active:ZF(u,e.query),onClick:()=>{n(CF({q:e.query})),r()}},e.query))]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`mt-1 text-[10px] font-bold uppercase tracking-widest text-muted-foreground/60 px-3`,children:`Dashboards`}),a?(0,G.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`Loading…`}):i.length===0?(0,G.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground/60`,children:`No dashboards yet.`}):i.map(e=>(0,G.jsx)($F,{label:e.title,badge:e.editable?void 0:`prebuilt`,active:t.pathname===`/dashboard/${e.slug}`,onClick:()=>{n(TF(e.slug)),r()}},e.slug)),(0,G.jsxs)(`button`,{type:`button`,onClick:c,disabled:o,"data-testid":`dashboards-nav-new`,className:`mt-2 flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-muted-foreground hover:bg-muted hover:text-foreground transition-colors disabled:opacity-50`,children:[(0,G.jsx)(nr,{className:`size-3.5`}),`New dashboard`]})]})]})}function $F({label:e,active:t,onClick:n,badge:r,title:i}){return(0,G.jsxs)(`button`,{type:`button`,onClick:n,title:i,className:K(`flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-left transition-colors`,t?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,G.jsx)(`span`,{className:K(`size-2 rounded-full shrink-0`,t?`bg-primary`:`bg-border`)}),(0,G.jsx)(`span`,{className:`truncate`,children:e}),r&&(0,G.jsx)(`span`,{className:`ml-auto text-[9px] font-bold uppercase tracking-wide text-muted-foreground/50 shrink-0`,children:r})]})}function eI({children:e}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`absolute left-1/2 top-1/2 size-[max(100%,2.75rem)] -translate-x-1/2 -translate-y-1/2 pointer-events-auto`,"aria-hidden":`true`}),e]})}var tI=(0,W.forwardRef)(function(e,t){return(0,G.jsx)(gn,{children:(0,G.jsx)(sn,{...e,to:e.href,ref:t})})});function nI({className:e,...t}){return(0,G.jsx)(`nav`,{...t,className:ft(e,`flex h-full min-h-0 flex-col`)})}function rI({className:e,...t}){return(0,G.jsx)(`div`,{...t,className:ft(e,`flex flex-col border-b border-zinc-950/5 p-4 dark:border-white/5 [&>[data-slot=section]+[data-slot=section]]:mt-2.5`)})}function iI({className:e,...t}){return(0,G.jsx)(`div`,{...t,className:ft(e,`flex flex-1 flex-col overflow-y-auto p-4 [&>[data-slot=section]+[data-slot=section]]:mt-8`)})}function aI({className:e,...t}){let n=(0,W.useId)();return(0,G.jsx)(nee,{id:n,children:(0,G.jsx)(`div`,{...t,"data-slot":`section`,className:ft(e,`flex flex-col gap-0.5`)})})}function oI({className:e,...t}){return(0,G.jsx)(`h3`,{...t,className:ft(e,`mb-1 px-2 text-xs/6 font-medium text-muted-foreground`)})}var sI=(0,W.forwardRef)(function({current:e,className:t,children:n,...r},i){let a=ft(`group flex w-full items-center gap-3 rounded-xl px-2 py-2.5 text-left text-base/6 font-medium text-foreground sm:py-2 sm:text-sm/5 transition-all duration-200`,`[&>[data-slot=icon]]:size-6 [&>[data-slot=icon]]:shrink-0 [&>[data-slot=icon]]:text-muted-foreground sm:[&>[data-slot=icon]]:size-5 [&>[data-slot=icon]]:transition-colors`,`[&>[data-slot=icon]:last-child]:ml-auto [&>[data-slot=icon]:last-child]:size-5 sm:[&>[data-slot=icon]:last-child]:size-4`,`[&>[data-slot=avatar]]:-m-0.5 [&>[data-slot=avatar]]:size-7 sm:[&>[data-slot=avatar]]:size-6`,`data-[hover]:bg-primary/10 data-[hover]:text-primary data-[hover]:[&>[data-slot=icon]]:text-primary`,`data-[active]:bg-primary/15 data-[active]:scale-[0.98]`,`data-[current]:bg-primary/10 data-[current]:text-primary data-[current]:[&>[data-slot=icon]]:text-primary font-bold`);return(0,G.jsxs)(`span`,{className:ft(t,`relative`),children:[e&&(0,G.jsx)(Ht.span,{layoutId:`current-indicator`,className:`absolute inset-y-2 -left-4 w-1 rounded-full bg-primary shadow-[0_0_8px_rgba(129,140,248,0.5)]`}),typeof r.href==`string`?(0,G.jsx)(Fn,{as:tI,...r,className:a,"data-current":e?`true`:void 0,"aria-current":e?`page`:void 0,ref:i,children:(0,G.jsx)(eI,{children:n})}):(0,G.jsx)(Jt,{...r,className:ft(`cursor-default`,a),"data-current":e?`true`:void 0,"aria-current":e?`page`:void 0,ref:i,children:(0,G.jsx)(eI,{children:n})})]})});function cI({className:e,...t}){return(0,G.jsx)(`span`,{...t,className:ft(e,`truncate`)})}function lI(e){return e.replace(/(^|[{,\s!])catalog:("[^"]*"|[\w][\w/-]*)/g,`$1notebook:$2`)}var uI=[{id:`date`,label:`Date`},{id:`week`,label:`Week`},{id:`month`,label:`Month`},{id:`year`,label:`Year`},{id:`tag`,label:`Tags`},{id:`type`,label:`Type`},{id:`discipline`,label:`Discipline`},{id:`source`,label:`Source`},{id:`origin`,label:`Origin`}],dI=uI.map(e=>e.id),fI=Object.fromEntries(uI.map(e=>[e.id,e.label]));function pI(e){return fI[e]??e}function mI(e,t,n){let r=n?.sink,i=n?.priority??[],a=e=>{let t=i.indexOf(e);return t===-1?1/0:t};return[...e].sort((e,n)=>{if(t===`chronological-desc`)return n[0].localeCompare(e[0]);if(t===`priority-then-alpha`){let t=a(e[0]),r=a(n[0]);return t===r?e[0].localeCompare(n[0]):t-r}if(r){if(e[0]===r)return 1;if(n[0]===r)return-1}return e[0].localeCompare(n[0])})}function hI(e,t){let n=new Set(e);if(!t||t.length===0)return uI.filter(e=>n.has(e.id));let r=t.filter(e=>n.has(e)),i=new Set(r);return[...r.map(e=>({id:e,label:pI(e)})),...uI.filter(e=>n.has(e.id)&&!i.has(e.id))]}function gI(e,t,n){if(!e)return n;let r=new Set(t);return e.find(e=>r.has(e))??n}function _I(e){if(!e)return{options:[],invalid:[]};let t=[],n=[],r=new Set;for(let i of e){if(!dI.includes(i)){n.includes(i)||n.push(i);continue}r.has(i)||(r.add(i),t.push(i))}return{options:t,invalid:n}}var vI=`/palette`,yI=new jx(`wodwiki.routeWql.v1`,wj?Oj:void 0),bI=[...Fm,...Im],xI={notes:`note`,blocks:`block`,efforts:`effort`,collections:`notebooks`,feeds:`notebooks`};function SI(e){let t=e.startsWith(`/`)?e:`/${e}`;return DI[t]??t}function CI(e){if(Array.isArray(e))return e.filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim())}function wI(e,t,n){let r=[],i=[],a=new Set;for(let o of e){let e=n[o]??o;if(!t.includes(e)){i.includes(o)||i.push(o);continue}a.has(e)||(a.add(e),r.push(e))}return{options:r,invalid:i}}var TI={"/notebooks":`/catalogs`,"/notes":`/feeds`,"/sessions":`/results`,"/dashboards":`/dashboard`},EI={"/notes":`/collections`},DI={"/feeds":`/feeds@2`};function OI(e){return lI(e).replace(/^:(collections?|feeds?)(?![\w:])/,e=>e===`:collections`||e===`:feeds`?`:notebooks`:`:notebook`).replace(/(^|[{,\s])source:(collections|feeds)(?![\w:])/g,`$1source:notebooks`).replace(/(^|[{,\s])source:collection:/g,`$1source:notebook:`).replace(/(^|[{,\s])type:(feed|collection)(?![\w:])/g,`$1type:note`)}function kI(e,t=yI){let n=SI(e),r=TI[n],i=t.get(n,{alias:r});if(i==null&&r&&(i=t.get(r,{alias:EI[n]})),!i)return{};let a=CI(i.typeOptions),o=CI(i.groupByOptions),s=a&&wI(a,bI,xI),c=o?_I(o):void 0;return{defaultWql:typeof i.defaultWql==`string`&&i.defaultWql.trim().length>0?OI(i.defaultWql.trim()):void 0,typeOptions:s?.options,groupByOptions:c?.options,...s?.invalid.length?{invalidTypeOptions:s.invalid}:{},...c?.invalid.length?{invalidGroupByOptions:c.invalid}:{}}}async function AI(e,t,n=yI){let r=SI(e),i={defaultWql:t.defaultWql?.trim()||void 0,typeOptions:CI(t.typeOptions),groupByOptions:CI(t.groupByOptions)};if(wj){try{await Aj(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlConfig] server write failed:`,e),!1}return II(),!0}return n.set(r,i),II(),!0}async function jI(e,t=yI){let n=SI(e),r=TI[n];if(wj){try{await jj(r?[t.qualify(n),t.qualify(r)]:[t.qualify(n)])}catch(e){return console.error(`[routeWqlConfig] server delete failed:`,e),!1}return II(),!0}return t.remove(n,r),II(),!0}var MI=0,NI=new Set;function PI(e){return NI.add(e),()=>{NI.delete(e)}}function FI(){return MI}function II(){MI+=1;for(let e of NI)e()}function LI(e){let t=(0,W.useSyncExternalStore)(PI,FI,FI);return(0,W.useMemo)(()=>kI(e),[e,t])}function RI(e,t){let n=t??kI(e.route);return!n.defaultWql&&!n.typeOptions&&!n.groupByOptions?e:{...e,defaultWql:n.defaultWql??e.defaultWql,scopeOptions:n.typeOptions?n.typeOptions.filter(e=>Im.includes(e)):e.scopeOptions,groupByOptions:n.groupByOptions}}function zI(e){let t=LI(e?.route??``);return(0,W.useMemo)(()=>e?RI(e,t):void 0,[e,t])}var BI={bookmark:Pe,calendar:dr,"clipboard-list":Hn,clock:Cn,dumbbell:Se,flame:ie,folder:Le,"flask-conical":k,heart:Ve,library:pe,plus:nr,rss:Wt,star:At,tag:Ze,activity:be,wrench:f},VI=new jx(`wodwiki.routeWqlShortcuts.v1`,wj?Oj:void 0);function HI(e,t){return{id:`all`,label:e,icon:t,wql:``}}var UI={"/journal":`All entries`,"/notebooks":`Subscribed notebooks`,"/notes":`All notes`,"/feeds":`All feeds`,"/pages":`All pages`,"/playgrounds":`All playgrounds`,"/efforts":`All Efforts`,"/equipment":`All Equipment`,"/sessions":`All Sessions`,"/tags":`All Tags`},WI={"/journal":`calendar`,"/notebooks":`library`,"/notes":`rss`,"/feeds":`rss`,"/pages":`clipboard-list`,"/playgrounds":`flask-conical`,"/efforts":`dumbbell`,"/equipment":`wrench`,"/sessions":`clipboard-list`,"/tags":`tag`};function GI(e){let t=JI(e);return t===`/notebooks`?[HI(`Subscribed notebooks`,`library`),{id:`all-configured`,label:`All configured`,icon:`bookmark`,wql:`:notebook{subscribed:true,false}`},{id:`available`,label:`Available to subscribe`,icon:`plus`,wql:`:notebook{subscribed:false}`}]:t===`/sessions`?[HI(`All Sessions`,`clipboard-list`),{id:`recent-1d`,label:`Recent (last 1d)`,icon:`clock`,wql:`:session{} last 1d`},{id:`recent-7d`,label:`Last 7 days`,icon:`calendar`,wql:`:session{} last 7d`}]:[HI(UI[t]??`Landing link`,WI[t]??`bookmark`)]}function KI(e){return e.map(e=>({id:`tag-type-${e.name}`,label:e.label,icon:`tag`,wql:`:tag{type:${e.name}}`}))}function qI(e){let t=(0,W.useMemo)(()=>GI(e),[e]),[n,r]=(0,W.useState)([]);return(0,W.useEffect)(()=>{if(JI(e)!==`/tags`)return;let t=!0;return Z.getAllTagTypes().then(e=>{t&&r(e)}).catch(()=>{t&&r([])}),()=>{t=!1}},[e]),(0,W.useMemo)(()=>JI(e)===`/tags`?[...t,...KI(n)]:t,[e,t,n])}function JI(e){return e.startsWith(`/`)?e:`/${e}`}var YI={"/notebooks":`/catalogs`,"/notes":`/feeds`},XI={"/feeds":`/feeds@2`};function ZI(e){let t=JI(e);return XI[t]??t}function QI(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`object`||!r||Array.isArray(r))continue;let e=r;typeof e.id!=`string`||!e.id.trim()||n.has(e.id)||typeof e.label!=`string`||!e.label.trim()||typeof e.icon!=`string`||!BI[e.icon]||typeof e.wql==`string`&&(e.to!==void 0&&(typeof e.to!=`string`||!/^\/(?!\/)/.test(e.to))||(n.add(e.id.trim()),t.push({id:e.id.trim(),label:e.label.trim(),icon:e.icon,wql:OI(e.wql.trim()),...typeof e.to==`string`?{to:e.to}:{}})))}return t}function $I(e,t=VI){let n=ZI(e);return QI(t.get(n,{alias:YI[n]}))}function eL(e,t=VI,n=GI(e)){let r=ZI(e),i=YI[r];if(t.getRaw(r)!=null||i!=null&&t.getRaw(i)!=null){let r=$I(e,t);return r.some(e=>e.id===`all`)?r:[n[0],...r]}return n}async function tL(e,t,n=VI){let r=ZI(e),i=QI(t);if(wj){try{await Aj(n.qualify(r),JSON.stringify(i))}catch(e){return console.error(`[routeWqlShortcuts] server write failed:`,e),!1}return oL(),!0}return n.set(r,i),n.getRaw(r)===JSON.stringify(i)&&(oL(),!0)}var nL=0,rL=new Set;function iL(e){return rL.add(e),()=>{rL.delete(e)}}function aL(){return nL}function oL(){nL++;for(let e of rL)e()}function sL(e,t=VI){return(0,W.useSyncExternalStore)(iL,aL),eL(e,t,qI(e))}function cL(e){return Sh(e)?hg({...e,filters:(e.filters??[]).map(e=>({...e,values:[...e.values??[]].sort((e,t)=>e.value.localeCompare(t.value))})).sort((e,t)=>e.key.localeCompare(t.key)||Number(e.negate)-Number(t.negate)||e.values.map(e=>e.value).join(`|`).localeCompare(t.values.map(e=>e.value).join(`|`))),groupBy:[...e.groupBy??[]].sort((e,t)=>e.localeCompare(t))}):hg(e)}function lL(e,t){return e.to?t.pathname===e.to||t.pathname.startsWith(`${e.to}/`):uL(e.wql,t.query)}function uL(e,t){if(!e.trim())return t.trim()===``;if(t.trim()===``)return!1;if(t===e)return!0;let n=X(t),r=X(e);return!n.error&&!r.error&&cL(n)===cL(r)}var dL=`w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary/40`;function fL({open:e,onOpenChange:t,route:n,editing:r=null,initialQuery:i=``}){let[a,o]=(0,W.useState)(r?.label??``),[s,c]=(0,W.useState)(r?.icon??`bookmark`),[l,u]=(0,W.useState)(r?r.wql:i),[d,f]=(0,W.useState)(null),p=qI(n);(0,W.useEffect)(()=>{e&&(o(r?.label??``),c(r?.icon??`bookmark`),u(r?r.wql:i),f(null))},[e,r,i]);let m=r!==null&&!!r.to,h=r?.id!==`all`,g=a.trim(),_=l.trim(),v=_?Hw(_).error??null:null,y=g?null:`Label is required.`,b=!!g&&!m&&(!h||!!_)&&!v;return(0,G.jsx)(QC,{open:e,onClose:()=>t(!1),title:r?`Edit shortcut`:`Save search shortcut`,description:`Saved shortcuts appear in this route's navigation panel. Stored ${wj?`on the server.`:`in this browser only.`}`,footer:(0,G.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,G.jsx)(q,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t(!1),children:`Cancel`}),(0,G.jsx)(q,{type:`submit`,form:`save-wql-shortcut-form`,size:`sm`,disabled:!b,"data-testid":`shortcut-save`,children:`Save`})]}),children:(0,G.jsxs)(`form`,{id:`save-wql-shortcut-form`,onSubmit:async e=>{if(e.preventDefault(),!b)return;let i={id:r?.id??crypto.randomUUID(),label:g,icon:s,wql:m?r.wql:_,...r?.to===void 0?{}:{to:r.to}};if(!await tL(n,[...eL(n,void 0,p).filter(e=>e.id!==i.id),i])){f(`Couldn’t save — storage is unavailable. Your input is kept.`);return}t(!1)},className:`flex flex-col gap-4`,noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{htmlFor:`shortcut-label`,className:`text-xs font-semibold text-muted-foreground`,children:`Label`}),(0,G.jsx)(`input`,{id:`shortcut-label`,value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Strength this month`,"data-testid":`shortcut-label-input`,"aria-invalid":y?!0:void 0,className:dL}),y&&(0,G.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-label-error`,children:y})]}),m?(0,G.jsxs)(`p`,{className:`rounded-md border border-border/60 bg-muted/30 px-3 py-2 text-xs text-muted-foreground`,children:[`Route action — always opens `,r?.to,`. Label and icon are editable.`]}):(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{htmlFor:`shortcut-query`,className:`text-xs font-semibold text-muted-foreground`,children:`Query (WQL)`}),(0,G.jsx)(`textarea`,{id:`shortcut-query`,rows:2,value:l,onChange:e=>u(e.target.value),placeholder:h?`find …`:`Empty — the plain route landing`,"data-testid":`shortcut-query-input`,"aria-invalid":v?!0:void 0,className:`${dL} font-mono text-xs`}),v?(0,G.jsxs)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-query-error`,children:[`Couldn't parse — `,v]}):!_&&(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:h?`A shortcut needs a query.`:`Empty — opens the plain route landing.`})]}),(0,G.jsxs)(`fieldset`,{className:`space-y-1.5`,children:[(0,G.jsx)(`legend`,{className:`text-xs font-semibold text-muted-foreground`,children:`Icon`}),(0,G.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Object.entries(BI).map(([e,t])=>(0,G.jsxs)(`label`,{title:e,className:s===e?`cursor-pointer rounded-md border border-primary bg-primary/10 p-1.5 text-primary`:`cursor-pointer rounded-md border border-border p-1.5 text-muted-foreground hover:text-foreground`,children:[(0,G.jsx)(`input`,{type:`radio`,name:`shortcut-icon`,value:e,checked:s===e,onChange:()=>c(e),"aria-label":`Icon ${e}`,"data-testid":`shortcut-icon-${e}`,className:`sr-only`}),(0,G.jsx)(t,{className:`size-4`,"aria-hidden":`true`})]},e))})]}),d&&(0,G.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,"data-testid":`shortcut-storage-error`,children:d})]})})}var pL=null,mL=new Set;function hL(e){pL=e;for(let e of mL)e()}function gL(e){return mL.add(e),()=>{mL.delete(e)}}function _L(){return pL}function vL(){return(0,W.useSyncExternalStore)(gL,_L)}function yL(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 bL=/^(?:uuid-|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$)/i;function xL(e){return typeof e==`string`&&e&&!bL.test(e)?e:void 0}function SL(e){return!!e.sourceId?.startsWith(`notebook:`)||e.sourcePath?.startsWith(`markdown/notebooks/`)===!0}function CL(e){return e.type===`dashboard`||e.sourceId===`dashboards`||e.sourcePath?.startsWith(`markdown/dashboards/`)===!0}function wL(e){return e.sourceId===`efforts`||e.sourcePath?.startsWith(`markdown/efforts/`)===!0}function TL(e){return e.sourceId===`equipment`||e.sourcePath?.startsWith(`markdown/equipment/`)===!0}function EL(e){return e.type===`tag`&&e.id.startsWith(`tag/`)}function DL(e){let t=/^tag\/([^/]+)\/(.+)$/.exec(e.id);return t?{type:t[1],label:t[2]}:void 0}function OL(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 kL(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(bL.test(r))return{slug:``,item:``};let[i,...a]=r.split(`/`);return{slug:i,item:a.join(`/`)}}function AL(e){return e.sourceId===`playground`||e.type===`playground`||e.id.startsWith(`playground/`)}function jL(e){let t=e.slug??e.id;return t.startsWith(`playground/`)?t.slice(11):t}function ML(e){return{...NL(e),noteType:e.type,notebookId:B_(e),feedId:e.feedSourceId??(V_(e)===`user`?`local`:`core`),editable:Aa(e,V_(e))}}function NL(e){let t=e.id,n=e.title,r=e.tags&&e.tags.length>0?e.tags:void 0;if(AL(e))return{id:t,kind:`note`,sourceNotebook:`playground`,sourceNote:jL(e),sourceId:e.sourceId,title:yb(n||jL(e)),date:null,createdAt:e.createdAt,...r?{tags:r}:{}};if(SL(e)){let{slug:i,item:a}=kL(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?LF(new Date(e.date)):null),createdAt:e.createdAt,subtitle:i,...r?{tags:r}:{}}}if(CL(e))return{id:t,kind:`dashboard`,sourceNotebook:`dashboards`,sourceNote:OL(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`dashboards`,...r?{tags:r}:{}};if(wL(e)){let i=OL(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(TL(e))return{id:t,kind:`equipment`,sourceNotebook:`equipment`,sourceNote:OL(e,1)??t,sourceId:e.sourceId,sourcePath:e.sourcePath,title:n,date:null,createdAt:e.createdAt,subtitle:`equipment`,...r?{tags:r}:{}};if(EL(e)){let i=DL(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:xL(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:e.type===`journal`&&`date`in e&&typeof e.date==`number`&&Number.isFinite(e.date)?i=LF(new Date(e.date)):`targetDate`in e&&e.targetDate&&(typeof e.targetDate==`number`||typeof e.targetDate==`string`)?i=LF(new Date(e.targetDate)):e.createdAt&&(i=LF(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?xL(e.slug):void 0,title:n,date:i,createdAt:e.createdAt,...r?{tags:r}:{}}}function PL(e){return{id:e.noteId,title:e.noteTitle,createdAt:e.createdAt,type:`note`,sourceId:e.sourceId,sourcePath:e.sourcePath,rawContent:``,sourceRevision:1,blocks:{}}}var FL=3,IL=120;function LL(e){return e.split(`
|
|
85
85
|
`).map(e=>e.trim()).filter(Boolean).slice(0,FL).map(e=>e.length>IL?`${e.slice(0,119)}…`:e)}function RL(e){let t=ML(PL(e));return{...t,blockContentId:e.blockContentId??t.blockContentId,block:{blockId:e.blockId,dataType:e.dataType,preview:LL(e.rawContent)}}}function zL(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 BL(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 VL(e){if(!e||bL.test(e))return`Workout Session`;let t=yL(e);return t.kind===`journal`?t.id?`Journal: ${t.id}`:`Journal Entry`:t.kind===`workout`?bL.test(t.id)?`Workout Session`:zL(t.id)||t.id:t.id&&!bL.test(t.id)?zL(t.id):bL.test(e)?`Workout Session`:e}function HL(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 UL(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 WL(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=UL(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 GL(e,t){let n=WL(e),r=[];n.elapsedMs!=null&&r.push(BL(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(zL),a=LF(new Date(e.timestamp)),o=e.events.find(e=>!!e.blockContentId)?.blockContentId;if(e.timestamp){let t=new Date(e.timestamp).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`});t&&t!==`Invalid Date`&&r.unshift(t)}let s=t?.noteTitle&&!bL.test(t.noteTitle)?t.noteTitle:VL(e.noteId);return{id:e.resultId,kind:`result`,sourceNotebook:`results`,sourceNote:e.resultId,title:s,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 KL(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=UL(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?zL(e.effortSlug):e.outputType===`segment`?`Round ${c+1}`:`${e.outputType.charAt(0).toUpperCase()+e.outputType.slice(1)} ${c+1}`,u=[];n!=null&&u.push(BL(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=LF(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?zL(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 qL(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(KL(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(KL(i,{index:e++}))}return t}return e.runs.map(e=>GL(e,{noteTitle:t?.noteTitles?.get(e.noteId)}))}function JL(e){return e.split(`/`).map(encodeURIComponent).join(`/`)}function YL(e){let t=(()=>{switch(e.kind){case`note`:{if(e.sourceNotebook===`guides`)return e.pageSlug?`/page/${JL(e.pageSlug)}`:`/${JL(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/${JL(t[1])}`;let n=/^markdown\/efforts\/[^/]+\/(.+)\.md$/.exec(e.sourcePath??``);if(n?.[1])return`/effort/${JL(n[1])}`;let r=e.sourceId??``,i=e.sourcePath??``;return r.startsWith(`notebook:`)||i.startsWith(`markdown/notebooks/`)?e.sourceNote?`/notebook/${encodeURIComponent(e.sourceNotebook)}/${JL(e.sourceNote)}`:`/notebook/${encodeURIComponent(e.sourceNotebook)}`:e.pageSlug?`/page/${JL(e.pageSlug)}`:uF(e.id)}case`dashboard`:return e.sourceNotebook===`dashboards`&&e.sourceNote?`/dashboard/${JL(e.sourceNote)}`:uF(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/${JL(n)}`:uF(e.id)}case`tag`:{let t=DL(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 gF(e.id);case`segment`:case`event`:return gF(e.execution?.resultId??(e.sourceNotebook===`results`?e.sourceNote:e.id));default:return`/`}})();return e.block?`${t}#${encodeURIComponent(e.block.blockId)}`:t}function XL(e){return e.sourceNotebook===`playground`||e.sourceId===`playground`}function ZL(e){return e.kind===`note`&&!e.sourceNote?`/notebooks?q=${encodeURIComponent(`:notebook{notebook:${e.sourceNotebook}}`)}`:null}function QL(e){return e.blockContentId?CF({q:e.blockContentId}):null}function $L(e){return!!(e.kind===`note`||(e.kind===`result`||e.kind===`segment`)&&e.execution?.noteId)}function eR(e,t){if(e)switch(e.type){case`route`:t.navigate(e.to,{replace:!(e.pushHistory??!0)});break;case`query`:t.setQueryParam(e.params,!(e.pushHistory??!1));break;case`scroll`:t.scrollToSection?.(e.sectionId);break;case`view-source`:t.swapSource?.(e.source);break;case`view-state`:t.setPanelState?.(e.state,e.open);break;case`pipeline`:{let n=e.steps.filter(e=>e.type===`scroll`),r=e.steps.filter(e=>e.type!==`scroll`);r.forEach(e=>eR(e,t)),n.length>0&&(r.length>0?setTimeout(()=>{n.forEach(e=>eR(e,t))},0):n.forEach(e=>eR(e,t)));break}case`call`:e.handler();break;case`external`:window.open(e.href,`_blank`,`noopener,noreferrer`)}}function tR(e,t=`dialog`){if(e.action===`set-source`)return{type:`view-source`,source:e.value};if(e.action===`navigate`)return/^https?:\/\//.test(e.value)?{type:`external`,href:e.value}:{type:`route`,to:e.value};if(e.action===`set-state`){if(e.value===`note`)return{type:`view-state`,state:`note`};if(e.value===`review`)return{type:`view-state`,state:`review`};if(e.value===`track`)return{type:`view-state`,state:`track`,open:t}}return{type:`none`}}function nR(e,t){let n=e.pipeline.map(t=>tR(t,e.open));return{id:`btn-${t}`,label:e.label,action:n.length===1?n[0]:{type:`pipeline`,steps:n}}}function rR(e){let{action:t}=e;return t.type===`view-state`?t.state===`track`:t.type===`pipeline`&&t.steps.some(e=>e.type===`view-state`&&e.state===`track`)}var iR=`sticky top-0 z-10 bg-card`;function aR({title:e,defaultOpen:t=!1,collapsible:n=!0,children:r,count:i,className:a,sticky:o,trailing:s,bodyClassName:c,buttonClassName:u}){if(!n)return(0,G.jsxs)(`div`,{className:a,children:[(0,G.jsxs)(`div`,{className:ft(`group flex w-full items-center gap-1 px-2 py-3 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground/80`,o&&iR),children:[(0,G.jsx)(`div`,{className:`size-4 shrink-0`}),(0,G.jsx)(`span`,{children:e}),i!==void 0&&(0,G.jsx)(`span`,{className:`ml-auto flex size-5 items-center justify-center rounded-full bg-border/50 text-[9px] font-black tabular-nums text-muted-foreground`,children:i})]}),(0,G.jsx)(`div`,{className:ft(`flex flex-col gap-0.5`),children:r})]});let d=(0,G.jsxs)(te,{className:ft(`group flex items-center gap-1 px-2 py-3 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground/80 hover:text-primary transition-colors`,s?`min-w-0 flex-1`:`w-full`,u,o&&!s&&iR),children:[(0,G.jsx)(l,{className:`size-4 shrink-0 fill-muted-foreground/50 transition-transform duration-300 group-data-[open]:rotate-90 group-hover:fill-primary`}),(0,G.jsx)(`span`,{children:e}),i!==void 0&&(0,G.jsx)(`span`,{className:`ml-auto flex size-5 items-center justify-center rounded-full bg-border/50 text-[9px] font-black tabular-nums text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors`,children:i})]});return(0,G.jsxs)(Mn,{as:`div`,defaultOpen:t,className:a,children:[s?(0,G.jsxs)(`div`,{className:ft(`flex w-full items-center bg-card`,o&&iR),children:[d,s]}):d,(0,G.jsx)(ae,{className:ft(`flex flex-col gap-0.5`,c),transition:!0,children:r})]})}var oR={tags:`tag`},sR={source:!0},cR={text:!0};function lR(e){return oR[e]??e}function uR(e){return!!cR[e]}function dR(e){switch(e){case`note`:return`note`;case`effort`:return`effort`;default:return null}}function fR(e){return e.wildcard?`${e.value}*`:e.value}function pR(e,t){return e.filters.map((e,t)=>({filter:e,filterIndex:t})).filter(({filter:e})=>e.key===t).map(({filter:e,filterIndex:n})=>({filterIndex:n,key:t,negate:e.negate,values:e.values.map(e=>({value:e.value,wildcard:e.wildcard}))}))}function mR(e,t,n){let r=[];for(let i of pR(e,t))i.values.forEach((e,t)=>{let a=fR(e);r.push({display:a,negate:i.negate,label:n?.get(i.negate?a:e.value),occurrence:i,valueIndex:t})});return r}function hR(e,t,n){if(t===`source`)return SR(e,n);let r=X(e);if(r.error||!Sh(r))return e;let i=pR(r,t).filter(e=>!e.negate);if(i.length>0&&!sR[t]){let r=i[i.length-1];return TR(e,t,r,[...r.values.map(fR),n].join(`|`))}if(i.length>0)return TR(e,t,i[i.length-1],n);let a=Bw(e,ER(t,lR(t),``),n);return a.valid?a.wql:e}function gR(e,t,n){let r=n.occurrence.values.filter((e,t)=>t!==n.valueIndex).map(fR).join(`|`);return TR(e,t,n.occurrence,r||null)}function _R(e,t,n){let r=X(e);if(r.error||!Sh(r))return`off`;if(t===`source`&&wR(r)===n)return`include`;let i=pR(r,t);return i.some(e=>!e.negate&&e.values.some(e=>fR(e)===n))?`include`:i.some(e=>e.negate&&e.values.some(e=>fR(e)===n))?`exclude`:`off`}function vR(e,t,n,r){return _R(e,t,n)===r?e:r===`off`?yR(e,t,n,`both`):r===`include`?hR(yR(e,t,n,`negative`),t,n):bR(yR(e,t,n,`positive`),t,n)}function yR(e,t,n,r){let i=e;for(;;){let e=X(i);if(e.error||!Sh(e))return i;if(t===`source`&&r!==`negative`&&wR(e)===n){let e=SR(i,null);if(e===i)return i;i=e;continue}let a=pR(e,t).find(e=>(r===`both`||r===(e.negate?`negative`:`positive`))&&e.values.some(e=>fR(e)===n));if(!a)return i;let o=a.values.findIndex(e=>fR(e)===n),s=gR(i,t,{display:n,negate:a.negate,occurrence:a,valueIndex:o});if(s===i)return i;i=s}}function bR(e,t,n){let r=X(e);if(r.error||!Sh(r))return e;let i=pR(r,t).filter(e=>e.negate);if(i.length>0){let r=i[i.length-1];return r.values.some(e=>fR(e)===n)?e:TR(e,t,r,[...r.values.map(fR),n].join(`|`))}let a=Bw(e,{...ER(t,lR(t),``),negate:!0},n);return a.valid?a.wql:e}function xR(e,t){let n=t.trim(),r=e,i=!1;for(;;){let e=X(r);if(e.error||!Sh(e))return r;let t=pR(e,`text`).filter(e=>!e.negate);if(t.length===0){if(!n||i)return r;let e=Bw(r,ER(`text`,lR(`text`),``),n);return e.valid?e.wql:r}if(!n){let e=TR(r,`text`,t[0],null);if(e===r)return r;r=e;continue}if(!i){let e=TR(r,`text`,t[0],n);if(e===r)return r;r=e,i=!0;continue}if(t.length===1)return r;let a=TR(r,`text`,t[1],null);if(a===r)return r;r=a}}function SR(e,t){let n=X(e);if(n.error||!Sh(n))return e;let r=new Set,i=n.filters.filter(e=>{if(e.key!==`source`||e.negate)return!0;let t=e.values.map(e=>`${e.value}${e.wildcard?`*`:``}`).join(`|`);return!r.has(t)&&(r.add(t),!0)}),a=Lm.filter(t=>e.startsWith(`:${t}`)).sort((e,t)=>t.length-e.length)[0],o=a?Rm[a]:void 0;if(!t){if(!o)return hg({...n,sourceScope:void 0,filters:i});let e=!1,t=i.filter(t=>e||t.key!==`source`||t.negate?!0:t.values.length===1&&!t.values[0].wildcard&&t.values[0].value===o?(e=!0,!1):!0);return hg({...n,sourceScope:void 0,filters:t})}let s=t===`journal`?`:journal`:t===`notebooks`?`:notebooks`:t===`playground`?`:playground`:`:note{source:${t}}`,c=X(s.startsWith(`:note`)?s:`${s}{}`);if(c.error||!Sh(c)||!c.filters.length)return e;let l=i.findIndex(e=>e.key===`source`&&!e.negate),u=l>=0?i.map((e,t)=>t===l?c.filters[0]:e):[...i,c.filters[0]];return hg({...n,sourceScope:void 0,filters:u})}function CR(e,t,n){let r=X(e);if(r.error||!Sh(r))return e;let i=r.groupBy??[];if(n===i.some(e=>e.toLowerCase()===t.toLowerCase()))return e;let a=n?[...i,t.toLowerCase()]:i.filter(e=>e.toLowerCase()!==t.toLowerCase());return hg({...r,groupBy:a.length>0?a:void 0})}function wR(e){return e.filters.find(e=>e.key===`source`&&!e.negate)?null:e.sourceScope?.length===1?e.sourceScope[0]:null}function TR(e,t,n,r){let i=Bw(e,{...ER(t,lR(t),n.values.map(fR).join(`|`)),filterIndex:n.filterIndex,negate:n.negate},r);return i.valid?i.wql:e}function ER(e,t,n){return{id:`nav-${e}`,type:t,...aw(t),value:n}}function DR(e,t,n){let r=new Map,i=(e,t)=>{let n=r.get(e);n?(n.count+=1,!n.label&&t&&(n.label=t)):r.set(e,{value:e,label:t,count:1})},a=Dm.includes(t)?t:t===`tags`?`tags`:null;if(a&&!n.tagMembership)return[];let o=(e===`note`||e===`block`)&&t===`effort`;if(o&&!n.effortMembership)return[];let s=e=>{r.has(e)||r.set(e,{value:e,count:0})};for(let r of n.entries)switch(`${e}:${t}`){case`note:notebook`:case`block:notebook`:(r.notebookId||r.sourceNotebook)&&i(r.notebookId??r.sourceNotebook);break;case`note:type`:r.noteType&&i(r.noteType);break;case`block:type`:r.block?.dataType&&i(r.block.dataType);break;case`note:page`:i(r.noteType===`page`?`true`:`false`,r.noteType===`page`?`Pages`:`Non-pages`);break;case`effort:discipline`:r.effort?.discipline&&i(r.effort.discipline);break;case`effort:intensity`:r.effort?.intensityTier&&i(r.effort.intensityTier);break;case`effort:origin`:r.effort?.registrySource&&i(r.effort.registrySource);break;case`effort:effort`:r.effort?.slug&&i(r.effort.slug,r.effort.label);break;case`session:result`:r.execution?.resultId&&i(r.execution.resultId,r.title);break;case`session:block`:{let e=new Set;for(let t of r.execution?.events??[])t.blockContentId&&e.add(t.blockContentId);for(let t of e)i(t,r.title);break}case`session:note`:{let e=new Set;for(let t of r.execution?.events??[])t.noteId&&e.add(t.noteId);for(let t of e)i(t,r.title);break}case`session:plane`:for(let e of r.execution?.events??[])i(e.outputType);break;default:if(a){let e=n.tagMembership.get(r.sourceNotebook??r.id)??n.tagMembership.get(r.id)??[];for(let t of e)(a===`tags`||t.type===a)&&i(t.label)}else if(o){let e=n.effortMembership.get(r.sourceNotebook??r.id)??n.effortMembership.get(r.id)??[];for(let t of e)i(t)}}if(e===`note`&&t===`source`)return Im.map(e=>({value:e,count:n.entries.filter(t=>Y_({id:t.id,sourceId:t.sourceId,type:t.noteType},e)).length})).filter(e=>e.count>0);if(e===`block`&&t===`source`)return Im.map(e=>({value:e,count:n.entries.filter(t=>Y_({id:t.id,sourceId:t.sourceId,type:void 0},e)).length})).filter(e=>e.count>0);if((e===`note`||e===`block`)&&t===`note`)for(let e of n.entries)i(e.id,e.title);if(a)for(let e of n.tagMembership.values())for(let t of e)(a===`tags`||t.type===a)&&s(t.label);if(o)for(let e of n.effortMembership.values())for(let t of e)s(t);return[...r.values()].sort((e,t)=>t.count-e.count||(e.label??e.value).localeCompare(t.label??t.value))}var OR=e=>e.map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1)})),kR={source:{enabled:!1,expectedValues:OR(Im)},page:{enabled:!1,expectedValues:[{value:`true`,label:`Pages`},{value:`false`,label:`Non-pages`}]},intensity:{expectedValues:OR(Nm)},discipline:{expectedValues:OR(gg)}};function AR(e){return kR[e]??{}}var jR=[],MR=e=>new URLSearchParams(e.search).get(`q`)??``;async function NR(){let[e,t]=await Promise.all([Z.getNoteTagLabelsBatch(),Z.getAllNotes()]);for(let n of t){let t=e.get(n.id),r=z_(n.sourceId);if(!r||!t?.length)continue;let i=e.get(r);if(i)for(let e of t)i.some(t=>t.label===e.label)||i.push(e);else e.set(r,t.map(({label:e,type:t})=>({label:e,type:t})))}return e}function PR(e,t,n){let r=new URLSearchParams(e.search);r.set(`q`,n),t(`${e.pathname}?${r.toString()}`)}function FR(){let e=En(),t=fn(),n=vL(),r=MR(e),i=zI(iF(e.pathname)),a=r&&!X(r).error?r:i.defaultWql,o=(0,W.useMemo)(()=>X(a),[a]),s=(0,W.useMemo)(()=>!o.error&&Sh(o)?o:null,[o]),c=n&&n.pathname===e.pathname&&n.query===a?n.entries:null,[l,u]=(0,W.useState)(null);(0,W.useEffect)(()=>{n&&n.pathname===e.pathname&&u(n)},[n,e.pathname]);let d=c===null&&l!==null&&l.pathname===e.pathname,f=c??(d?l.entries:jR),p=s?dR(s.target):null,m=!!s&&!!p&&pR(s,p).length>0,h=(0,W.useMemo)(()=>s?oh(s.target,`find`).filter(e=>e!==p||m):[],[s,p,m]),g=h.some(e=>e===`tags`||Dm.includes(e)),_=h.includes(`effort`),[v,y]=(0,W.useState)({tags:null,efforts:null});(0,W.useEffect)(()=>{if(!g&&!_||f.length===0)return;let e=!1;return Promise.all([g?NR():null,_?Z.getEffortSlugsByNoteBatch():null]).then(([t,n])=>{e||y({tags:t,efforts:n})}).catch(()=>{e||y({tags:null,efforts:null})}),()=>{e=!0}},[g,_,f]);let b=(0,W.useMemo)(()=>({entries:f,tagMembership:v.tags,effortMembership:v.efforts}),[f,v]),x=(0,W.useRef)(new Map),S=x.current.get(e.pathname);S||(S=new Map,x.current.set(e.pathname,S));let C=c!==null||l!==null,w=n=>PR(e,t,n),T=s?wR(s):null,E=(0,W.useMemo)(()=>h.filter(e=>AR(e).enabled!==!1).sort((e,t)=>(AR(e).order??0)-(AR(t).order??0)),[h]);return s?(0,G.jsxs)(`div`,{className:`flex flex-col`,"aria-busy":d||void 0,"data-testid":`l3-filters`,children:[(0,G.jsx)(`div`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Filters`}),E.map(e=>(0,G.jsx)(`div`,{"data-testid":`conditions-section-${e}`,children:(0,G.jsx)(BR,{query:a,parsed:s,entryKey:e,facetContext:b,labels:IR(s.target,e,f),headScope:e===`source`?T:null,pending:d,hasEverPublished:C,routeKnownOptions:S,onApply:w})},e))]}):null}function IR(e,t,n){let r=new Map,i=(e,t)=>{e&&!r.has(e)&&r.set(e,t)};if((e===`note`||e===`block`)&&t===`note`)for(let e of n)i(e.id,e.title);if(e===`session`)for(let e of n){t===`result`&&i(e.execution?.resultId,e.title);for(let n of e.execution?.events??[])t===`block`&&i(n.blockContentId,e.title),t===`note`&&i(n.noteId,e.title)}return r}var LR=[`off`,`include`,`exclude`],RR={off:`Off`,include:`Include`,exclude:`Exclude`},zR={off:Kn,include:Yt,exclude:In};function BR({query:e,parsed:t,entryKey:n,facetContext:r,labels:i,headScope:a,pending:o,hasEverPublished:s,routeKnownOptions:c,onApply:l}){let u=En(),d=AR(n);if(d.enabled===!1)return null;let f=aw(lR(n)),p=uR(n)||HR[n]!==void 0,m=mR(t,n,i),h=n===`text`?pR(t,`text`).filter(e=>!e.negate).map(e=>e.values.map(e=>e.value).join(`|`)).join(`|`):null,g=DR(t.target,n,r),_=c.get(n);_||(_=new Map,c.set(n,_));for(let e of g)_.has(e.value)||_.set(e.value,{value:e.value,label:e.label,count:0});let v=new Map(m.map(e=>[e.display,e])),y=new Map(g.map(e=>[e.value,e])),b=d.expectedValues,x=[],S=new Set,C=(t,r,i)=>{S.has(t)||(S.add(t),x.push({value:t,label:i??r?.label??v.get(t)?.label??t,count:r?r.count:null,state:_R(e,n,t)}))};if(s){for(let e of b??[]){let t=y.get(e.value);C(e.value,t,e.label)}if(!b){for(let e of g)C(e.value,e);for(let e of _.values())C(e.value,y.get(e.value),e.label)}}for(let e of m)C(e.display,y.get(e.display));n===`source`&&a&&C(a,y.get(a));let w=new Map((b??[]).map((e,t)=>[e.value,t]));x.sort((e,t)=>(w.get(e.value)??2**53-1)-(w.get(t.value)??2**53-1)||e.label.localeCompare(t.label));let T=u.pathname.startsWith(`/journal`)||u.pathname.startsWith(`/day`),E=d.hideZero||n===`effort`||T&&(n===`tags`||Dm.includes(n))?x.filter(e=>e.count!==null&&e.count>0||e.state!==`off`):x;return E.length===0&&!p?null:(0,G.jsxs)(aR,{title:d.label??f.label,count:E.length,defaultOpen:x.some(e=>e.state!==`off`)||p,sticky:!0,buttonClassName:`gap-1.5 py-1.5 text-[11px] font-semibold normal-case tracking-normal [&>span:last-child]:h-auto [&>span:last-child]:w-auto [&>span:last-child]:min-w-0 [&>span:last-child]:rounded-sm [&>span:last-child]:px-1 [&>span:last-child]:bg-transparent [&>span:last-child]:text-[10px] [&>span:last-child]:font-semibold [&>span:last-child]:text-muted-foreground`,bodyClassName:`px-6`,children:[(0,G.jsx)(`ul`,{className:`flex flex-col`,children:E.map(t=>(0,G.jsx)(VR,{query:e,entryKey:n,row:t,pending:o,onApply:l},t.value))}),p&&(0,G.jsx)(UR,{entryKey:n,placeholder:f.placeholder,pending:o,currentText:h??void 0,onTextChange:t=>l(xR(e,t)),onApply:t=>l(vR(e,n,t,`include`))})]})}function VR({query:e,entryKey:t,row:n,pending:r,onApply:i}){let a=LR[(LR.indexOf(n.state)+1)%LR.length],o=zR[n.state],s=`${RR[a]} “${n.label}” (currently ${RR[n.state]})`,c=n.count===0&&n.state===`off`;return(0,G.jsx)(`li`,{"data-testid":`conditions-row-${t}:${n.value}`,className:ft(`px-1 py-0.5`,r&&`opacity-60`,c&&`opacity-40`),children:(0,G.jsxs)(`div`,{className:`flex h-11 items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:ft(`min-w-0 flex-1 truncate text-xs leading-4`,c?`text-muted-foreground`:`text-foreground`),children:n.label}),n.count!==null&&(0,G.jsx)(`span`,{className:`text-[10px] leading-4 tabular-nums text-muted-foreground`,children:n.count}),(0,G.jsx)(`button`,{type:`button`,"data-testid":`conditions-state-${t}:${n.value}`,"data-state":n.state,onClick:()=>i(vR(e,t,n.value,a)),disabled:r,"aria-label":s,title:s,className:ft(`flex size-11 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-default`,n.state===`include`&&`bg-primary/10 text-primary`,n.state===`exclude`&&`bg-destructive/10 text-destructive`,n.state===`off`&&`text-muted-foreground`),children:(0,G.jsx)(o,{"aria-hidden":`true`,className:`size-4`})})]})})}var HR={note:!0,block:!0,result:!0};function UR({entryKey:e,placeholder:t,pending:n,currentText:r,onTextChange:i,onApply:a}){let[o,s]=(0,W.useState)(``),c=XF();return e===`text`?(0,G.jsxs)(`div`,{className:`px-1 py-1.5`,children:[(0,G.jsx)(`input`,{value:r??``,onChange:e=>i?.(e.target.value),placeholder:t,"aria-label":t,"data-testid":`conditions-input-text`,className:`h-8 w-full min-w-0 rounded-md border border-border/60 bg-background px-2 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary/40`}),(0,G.jsxs)(`button`,{type:`button`,"data-testid":`conditions-jump-wql-text`,onClick:()=>{c(),document.querySelector(`[data-testid="stream-query-bar"]`)?.click()},className:`mt-1 inline-flex items-center gap-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground`,children:[(0,G.jsx)(_n,{"aria-hidden":`true`,className:`size-3`}),`Edit in WQL bar`]})]}):(0,G.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=o.trim();t&&(a(t),s(``))},className:`flex items-center gap-1 px-1 py-1.5`,children:[(0,G.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:t,"aria-label":t,"data-testid":`conditions-input-${e}`,disabled:n,className:`h-8 min-w-0 flex-1 rounded-md border border-border/60 bg-background px-2 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-primary/40`}),(0,G.jsx)(`button`,{type:`submit`,"aria-label":`Add ${t}`,"data-testid":`conditions-add-${e}`,disabled:n||!o.trim(),className:`flex size-8 shrink-0 items-center justify-center rounded-md border border-border/60 text-muted-foreground transition-colors hover:bg-foreground/5 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50`,children:(0,G.jsx)(nr,{"aria-hidden":`true`,className:`size-3.5`})})]})}var WR=e=>new URLSearchParams(e.search).get(`q`)??``;function GR(e){return function(t){let n=En(),r=fn(),i=zI(e.profile),a=WR(n),o=a&&!X(a).error?a:i.defaultWql,s=e=>PR(n,r,e),c=XF(),l=vL(),u=l&&l.pathname===n.pathname&&l.query===o?l.entries.slice(0,8):[],d=sL(e.route),f={pathname:n.pathname,query:WR(n)},p=d.find(e=>e.id===`all`)??null,m=d.filter(e=>e.to===void 0&&e.id!==`all`),h=p?.wql??``,g=p?.label??e.landingLabel,_=p?BI[p.icon]:e.icon,v=f.query&&!X(f.query).error&&!d.some(e=>lL(e,f))?o:null,[y,b]=(0,W.useState)(!1);return(0,G.jsxs)(`div`,{className:`-mx-4 flex flex-col gap-1 py-3`,"data-testid":`conditions-nav-panel`,children:[(0,G.jsxs)(aI,{className:`px-6`,children:[v?(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,"data-testid":`conditions-nav-custom`,children:[(0,G.jsxs)(sI,{current:!0,className:`min-w-0 flex-1`,title:v,"aria-label":`Custom query: ${v}`,onClick:()=>{s(v),c()},children:[_&&(0,G.jsx)(_,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:`Custom`})]}),(0,G.jsx)(`button`,{type:`button`,onClick:()=>b(!0),"aria-label":`Save shortcut`,title:`Save shortcut`,"data-testid":`conditions-nav-custom-save`,className:`grid size-8 shrink-0 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,G.jsx)(C,{className:`size-4`,"aria-hidden":`true`})}),(0,G.jsx)(`button`,{type:`button`,onClick:()=>{h?s(h):r(e.route),c()},"aria-label":`Clear query`,title:`Clear to all entries`,"data-testid":`conditions-nav-custom-clear`,className:`grid size-8 shrink-0 place-items-center rounded-lg text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground`,children:(0,G.jsx)(xr,{className:`size-4`,"aria-hidden":`true`})})]}):(0,G.jsxs)(sI,{onClick:()=>{h?s(h):r(e.route),c()},current:h&&p?lL(p,f):e.familyActive(n)&&WR(n).trim()===``,children:[_&&(0,G.jsx)(_,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:g})]}),m.map(t=>{let n=BI[t.icon];return(0,G.jsxs)(sI,{onClick:()=>{t.wql?s(t.wql):r(e.route),c()},current:lL(t,f),"data-testid":`nav-shortcut-${t.id}`,children:[(0,G.jsx)(n,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:t.label})]},`shortcut-${t.id}`)}),(e.extraChildren??[]).map(e=>{let t=e.action.type===`route`?e.action.to:null,i=t?d.find(e=>e.to===t):null,a=i?BI[i.icon]:null;return(0,G.jsxs)(sI,{onClick:()=>{e.action&&(eR(e.action,{navigate:r,setQueryParam:()=>{}}),c())},current:e.isActive?.(n)??!1,"data-testid":i?`nav-shortcut-${i.id}`:e.id,children:[a?(0,G.jsx)(a,{"data-slot":`icon`}):e.icon&&(0,G.jsx)(e.icon,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:i?.label??e.label})]},e.id)})]}),u.length>0&&(0,G.jsxs)(aI,{className:`px-6`,"data-testid":`conditions-nav-recent`,children:[(0,G.jsx)(oI,{children:`Recent`}),u.map(e=>{let t=e.execution?.timestamp?new Date(e.execution.timestamp).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`}):null;return(0,G.jsxs)(sI,{href:YL(e),onClick:c,"data-testid":`conditions-nav-recent-link`,children:[(0,G.jsx)(cI,{children:e.title}),t&&(0,G.jsx)(`span`,{className:`ml-auto text-[10px] text-muted-foreground/60 tabular-nums shrink-0`,children:t})]},`${e.id}:${e.block?.blockId??``}`)})]}),(0,G.jsx)(fL,{open:y,onOpenChange:b,route:e.route,initialQuery:o})]})}}var KR=e=>pz(e.pathname,`/journal`,`/day`),qR=e=>pz(e.pathname,`/playgrounds`,`/playground`),JR={id:`journal-all-notes`,label:`All`,level:2,icon:L,action:{type:`route`,to:`/journal?q=%3Anote%7B!source%3Aplayground%7D`},isActive:e=>e.pathname===$.journal&&new URLSearchParams(e.search).get(`q`)===`:note{!source:playground}`},YR=[{id:`notebooks-view-playgrounds`,label:`Playgrounds`,level:2,icon:k,action:{type:`route`,to:$.playgrounds},isActive:qR},{id:`notebooks-configure-sources`,label:`Configure sources`,level:2,icon:Zn,action:{type:`route`,to:$.settingsSync},isActive:e=>pz(e.pathname,$.settingsSync)}],XR=GR({landingLabel:`Subscribed notebooks`,icon:pe,route:$.notebooks,profile:WP,extraChildren:YR,familyActive:e=>pz(e.pathname,`/notebooks`,`/notebook`,`/playgrounds`,`/playground`)}),ZR=GR({landingLabel:`All entries`,icon:dr,route:$.journal,profile:UP,extraChildren:[JR],familyActive:KR}),QR=GR({landingLabel:`All playgrounds`,icon:k,route:$.playgrounds,profile:QP,extraChildren:YR,familyActive:qR});function $R(e){let t=En();return KR(t)?(0,G.jsx)(ZR,{...e}):qR(t)?(0,G.jsx)(QR,{...e}):(0,G.jsx)(XR,{...e})}function ez(e=[]){return[{id:`pages-sub-all`,label:`All Pages`,level:2,icon:jn,action:{type:`route`,to:$.pages},isActive:e=>e.pathname===$.pages},{id:`pages-sub-notes`,label:`Notes`,level:2,icon:Wt,action:{type:`route`,to:$.notes},isActive:e=>e.pathname===`/notes`||e.pathname.startsWith(`/note/`)&&!e.pathname.startsWith(`/notebook`)},...lz(e)]}function tz(e=[]){let t=ez(e),n=GR({landingLabel:`All pages`,icon:jn,route:$.pages,profile:qP,extraChildren:t,familyActive:e=>pz(e.pathname,`/pages`,`/page`)}),r=GR({landingLabel:`All notes`,icon:Wt,route:$.notes,profile:GP,extraChildren:t,familyActive:e=>e.pathname===`/notes`||e.pathname.startsWith(`/note/`)&&!e.pathname.startsWith(`/notebook`)});return function(e){let t=En();return t.pathname===`/notes`||t.pathname.startsWith(`/note/`)&&!t.pathname.startsWith(`/notebook`)?(0,G.jsx)(r,{...e}):(0,G.jsx)(n,{...e})}}var nz=`wodwiki.unpinnedGuides.v1`,rz=new jx;function iz(e){return!(rz.get(nz)??[]).includes(e)}function az(e,t){let n=new Set(rz.get(nz)??[]);t?n.delete(e):n.add(e),rz.set(nz,Array.from(n))}var oz=`https://www.buymeacoffee.com/sergeigolos`,sz=({className:e,...t})=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 884 1279`,fill:`currentColor`,className:e,"aria-hidden":`true`,...t,children:[(0,G.jsx)(`path`,{d:`M791.109 297.518L790.231 297.002L788.201 296.383C789.018 297.072 790.04 297.472 791.109 297.518V297.518Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M803.896 388.891L802.916 389.166L803.896 388.891Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M791.484 297.377C791.359 297.361 791.237 297.332 791.118 297.29C791.111 297.371 791.111 297.453 791.118 297.534C791.252 297.516 791.379 297.462 791.484 297.377V297.377Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M791.113 297.529H791.244V297.447L791.113 297.529Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M803.111 388.726L804.591 387.883L805.142 387.573L805.641 387.04C804.702 387.444 803.846 388.016 803.111 388.726V388.726Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M793.669 299.515L792.223 298.138L791.243 297.605C791.77 298.535 792.641 299.221 793.669 299.515V299.515Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M430.019 1186.18C428.864 1186.68 427.852 1187.46 427.076 1188.45L427.988 1187.87C428.608 1187.3 429.485 1186.63 430.019 1186.18Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M641.187 1144.63C641.187 1143.33 640.551 1143.57 640.705 1148.21C640.705 1147.84 640.86 1147.46 640.929 1147.1C641.015 1146.27 641.084 1145.46 641.187 1144.63Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M619.284 1186.18C618.129 1186.68 617.118 1187.46 616.342 1188.45L617.254 1187.87C617.873 1187.3 618.751 1186.63 619.284 1186.18Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M281.304 1196.06C280.427 1195.3 279.354 1194.8 278.207 1194.61C279.136 1195.06 280.065 1195.51 280.684 1195.85L281.304 1196.06Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M247.841 1164.01C247.704 1162.66 247.288 1161.35 246.619 1160.16C247.093 1161.39 247.489 1162.66 247.806 1163.94L247.841 1164.01Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M472.623 590.836C426.682 610.503 374.546 632.802 306.976 632.802C278.71 632.746 250.58 628.868 223.353 621.274L270.086 1101.08C271.74 1121.13 280.876 1139.83 295.679 1153.46C310.482 1167.09 329.87 1174.65 349.992 1174.65C349.992 1174.65 416.254 1178.09 438.365 1178.09C462.161 1178.09 533.516 1174.65 533.516 1174.65C553.636 1174.65 573.019 1167.08 587.819 1153.45C602.619 1139.82 611.752 1121.13 613.406 1101.08L663.459 570.876C641.091 563.237 618.516 558.161 593.068 558.161C549.054 558.144 513.591 573.303 472.623 590.836Z`,fill:`#FFDD00`}),(0,G.jsx)(`path`,{d:`M78.6885 386.132L79.4799 386.872L79.9962 387.182C79.5987 386.787 79.1603 386.435 78.6885 386.132V386.132Z`,fill:`#0D0C22`}),(0,G.jsx)(`path`,{d:`M879.567 341.849L872.53 306.352C866.215 274.503 851.882 244.409 819.19 232.898C808.711 229.215 796.821 227.633 788.786 220.01C780.751 212.388 778.376 200.55 776.518 189.572C773.076 169.423 769.842 149.257 766.314 129.143C763.269 111.85 760.86 92.4243 752.928 76.56C742.604 55.2584 721.182 42.8009 699.88 34.559C688.965 30.4844 677.826 27.0375 666.517 24.2352C613.297 10.1947 557.342 5.03277 502.591 2.09047C436.875 -1.53577 370.983 -0.443234 305.422 5.35968C256.625 9.79894 205.229 15.1674 158.858 32.0469C141.91 38.224 124.445 45.6399 111.558 58.7341C95.7448 74.8221 90.5829 99.7026 102.128 119.765C110.336 134.012 124.239 144.078 138.985 150.737C158.192 159.317 178.251 165.846 198.829 170.215C256.126 182.879 315.471 187.851 374.007 189.968C438.887 192.586 503.87 190.464 568.44 183.618C584.408 181.863 600.347 179.758 616.257 177.304C634.995 174.43 647.022 149.928 641.499 132.859C634.891 112.453 617.134 104.538 597.055 107.618C594.095 108.082 591.153 108.512 588.193 108.942L586.06 109.252C579.257 110.113 572.455 110.915 565.653 111.661C551.601 113.175 537.515 114.414 523.394 115.378C491.768 117.58 460.057 118.595 428.363 118.647C397.219 118.647 366.058 117.769 334.983 115.722C320.805 114.793 306.661 113.611 292.552 112.177C286.134 111.506 279.733 110.801 273.333 110.009L267.241 109.235L265.917 109.046L259.602 108.134C246.697 106.189 233.792 103.953 221.025 101.251C219.737 100.965 218.584 100.249 217.758 99.2193C216.932 98.1901 216.482 96.9099 216.482 95.5903C216.482 94.2706 216.932 92.9904 217.758 91.9612C218.584 90.9319 219.737 90.2152 221.025 89.9293H221.266C232.33 87.5721 243.479 85.5589 254.663 83.8038C258.392 83.2188 262.131 82.6453 265.882 82.0832H265.985C272.988 81.6186 280.026 80.3625 286.994 79.5366C347.624 73.2302 408.614 71.0801 469.538 73.1014C499.115 73.9618 528.676 75.6996 558.116 78.6935C564.448 79.3474 570.746 80.0357 577.043 80.8099C579.452 81.1025 581.878 81.4465 584.305 81.7391L589.191 82.4445C603.438 84.5667 617.61 87.1419 631.708 90.1703C652.597 94.7128 679.422 96.1925 688.713 119.077C691.673 126.338 693.015 134.408 694.649 142.03L696.731 151.752C696.786 151.926 696.826 152.105 696.852 152.285C701.773 175.227 706.7 198.169 711.632 221.111C711.994 222.806 712.002 224.557 711.657 226.255C711.312 227.954 710.621 229.562 709.626 230.982C708.632 232.401 707.355 233.6 705.877 234.504C704.398 235.408 702.75 235.997 701.033 236.236H700.895L697.884 236.649L694.908 237.044C685.478 238.272 676.038 239.419 666.586 240.486C647.968 242.608 629.322 244.443 610.648 245.992C573.539 249.077 536.356 251.102 499.098 252.066C480.114 252.57 461.135 252.806 442.162 252.771C366.643 252.712 291.189 248.322 216.173 239.625C208.051 238.662 199.93 237.629 191.808 236.58C198.106 237.389 187.231 235.96 185.029 235.651C179.867 234.928 174.705 234.177 169.543 233.397C152.216 230.798 134.993 227.598 117.7 224.793C96.7944 221.352 76.8005 223.073 57.8906 233.397C42.3685 241.891 29.8055 254.916 21.8776 270.735C13.7217 287.597 11.2956 305.956 7.64786 324.075C4.00009 342.193 -1.67805 361.688 0.472751 380.288C5.10128 420.431 33.165 453.054 73.5313 460.35C111.506 467.232 149.687 472.807 187.971 477.556C338.361 495.975 490.294 498.178 641.155 484.129C653.44 482.982 665.708 481.732 677.959 480.378C681.786 479.958 685.658 480.398 689.292 481.668C692.926 482.938 696.23 485.005 698.962 487.717C701.694 490.429 703.784 493.718 705.08 497.342C706.377 500.967 706.846 504.836 706.453 508.665L702.633 545.797C694.936 620.828 687.239 695.854 679.542 770.874C671.513 849.657 663.431 928.434 655.298 1007.2C653.004 1029.39 650.71 1051.57 648.416 1073.74C646.213 1095.58 645.904 1118.1 641.757 1139.68C635.218 1173.61 612.248 1194.45 578.73 1202.07C548.022 1209.06 516.652 1212.73 485.161 1213.01C450.249 1213.2 415.355 1211.65 380.443 1211.84C343.173 1212.05 297.525 1208.61 268.756 1180.87C243.479 1156.51 239.986 1118.36 236.545 1085.37C231.957 1041.7 227.409 998.039 222.9 954.381L197.607 711.615L181.244 554.538C180.968 551.94 180.693 549.376 180.435 546.76C178.473 528.023 165.207 509.681 144.301 510.627C126.407 511.418 106.069 526.629 108.168 546.76L120.298 663.214L145.385 904.104C152.532 972.528 159.661 1040.96 166.773 1109.41C168.15 1122.52 169.44 1135.67 170.885 1148.78C178.749 1220.43 233.465 1259.04 301.224 1269.91C340.799 1276.28 381.337 1277.59 421.497 1278.24C472.979 1279.07 524.977 1281.05 575.615 1271.72C650.653 1257.95 706.952 1207.85 714.987 1130.13C717.282 1107.69 719.576 1085.25 721.87 1062.8C729.498 988.559 737.115 914.313 744.72 840.061L769.601 597.451L781.009 486.263C781.577 480.749 783.905 475.565 787.649 471.478C791.392 467.391 796.352 464.617 801.794 463.567C823.25 459.386 843.761 452.245 859.023 435.916C883.318 409.918 888.153 376.021 879.567 341.849ZM72.4301 365.835C72.757 365.68 72.1548 368.484 71.8967 369.792C71.8451 367.813 71.9483 366.058 72.4301 365.835ZM74.5121 381.94C74.6842 381.819 75.2003 382.508 75.7337 383.334C74.925 382.576 74.4089 382.009 74.4949 381.94H74.5121ZM76.5597 384.641C77.2996 385.897 77.6953 386.689 76.5597 384.641V384.641ZM80.672 387.979H80.7752C80.7752 388.1 80.9645 388.22 81.0333 388.341C80.9192 388.208 80.7925 388.087 80.6548 387.979H80.672ZM800.796 382.989C793.088 390.319 781.473 393.726 769.996 395.43C641.292 414.529 510.713 424.199 380.597 419.932C287.476 416.749 195.336 406.407 103.144 393.382C94.1102 392.109 84.3197 390.457 78.1082 383.798C66.4078 371.237 72.1548 345.944 75.2003 330.768C77.9878 316.865 83.3218 298.334 99.8572 296.355C125.667 293.327 155.64 304.218 181.175 308.09C211.917 312.781 242.774 316.538 273.745 319.36C405.925 331.405 540.325 329.529 671.92 311.91C695.905 308.686 719.805 304.941 743.619 300.674C764.835 296.871 788.356 289.731 801.175 311.703C809.967 326.673 811.137 346.701 809.778 363.615C809.359 370.984 806.139 377.915 800.779 382.989H800.796Z`,fill:`#0D0C22`})]}),cz={"/page/guide-start":0,"/page/guide-protocols":1,"/page/guide-structure":2,"/page/guide-metrics":3,"/page/guide-clock":4,"/page/guide-wql":5,"/page/guide-dashboards":6,"/page/guide-sessions":7,"/page/guide-metrics-summaries":8};function lz(e){return e.filter(e=>!e.route.startsWith(`/notebook`)).filter(e=>e.page.frontmatter?.type===`guide`).filter(e=>iz(e.route)).sort((e,t)=>(cz[e.route]??99)-(cz[t.route]??99)).map(e=>({id:`guide-${e.route}`,label:e.page.sections[0]?.heading??`Untitled`,level:2,icon:vr,action:{type:`route`,to:e.route},isActive:t=>t.pathname===e.route,pinned:!0,onTogglePin:()=>{az(e.route,!1)}}))}function uz(e){return[{id:`home-landing`,label:`Home`,level:2,icon:T,action:{type:`route`,to:$.home},isActive:e=>e.pathname===`/`||e.pathname===``||e.pathname===$.home},{id:`home-all-pages`,label:`All pages`,level:2,icon:jn,action:{type:`route`,to:$.pages},isActive:e=>e.pathname===$.pages},...lz(e)]}var dz=e=>e.replace(/^\//,``).replace(/\/$/,``),fz=e=>{let t=dz(e);return t.charAt(0).toUpperCase()+t.slice(1)},pz=(e,...t)=>t.some(t=>e===t||e.startsWith(`${t}/`));function mz(e){return{id:dz(e.route),label:fz(e.route),level:1,icon:e.icon,action:{type:`route`,to:e.route},isActive:t=>e.familyActive(t),applyFooter:!0,panel:GR({landingLabel:e.landingLabel,icon:e.icon,route:e.route,profile:e.profile,extraChildren:e.extraChildren,familyActive:e.familyActive})}}function hz(e,t=[]){let n=uz(t),r=tz(t);return[{id:`home`,label:`Home`,level:1,icon:T,action:{type:`route`,to:$.home},isActive:e=>e.pathname===`/`||e.pathname===``||e.pathname===$.home||e.pathname===$.aiFirst||e.pathname.startsWith(`/ai-first/`),children:n},{id:dz($.journal),label:fz($.journal),level:1,icon:dr,action:{type:`route`,to:$.journal},isActive:e=>pz(e.pathname,`/journal`,`/day`),applyFooter:!0,panel:ZR},{id:dz($.notebooks),label:fz($.notebooks),level:1,icon:pe,action:{type:`route`,to:$.notebooks},isActive:e=>pz(e.pathname,`/notebooks`,`/notebook`,`/playgrounds`,`/playground`),applyFooter:!0,panel:$R},{id:dz($.pages),label:fz($.pages),level:1,icon:jn,action:{type:`route`,to:$.pages},isActive:e=>pz(e.pathname,`/pages`,`/page`,`/canvas`,`/notes`,`/note`),applyFooter:!0,panel:r},mz({landingLabel:`All Efforts`,icon:Se,route:$.efforts,profile:JP,familyActive:e=>kF(e.pathname)}),mz({landingLabel:`All Equipment`,icon:f,route:$.equipment,profile:YP,familyActive:e=>AF(e.pathname)}),mz({landingLabel:`All Tags`,icon:Ze,route:$.tags,profile:XP,familyActive:e=>pz(e.pathname,`/tags`,`/t`)}),{id:dz($.dashboards),label:fz($.dashboards),level:1,icon:rr,action:{type:`route`,to:$.dashboards},isActive:e=>e.pathname===$.dashboards||e.pathname.startsWith(`/dashboard/`),panel:QF},mz({landingLabel:`All Sessions`,icon:Hn,route:$.sessions,profile:ZP,familyActive:e=>pz(e.pathname,`/sessions`,`/session`,`/results`)}),{id:`settings`,label:`Settings`,level:1,icon:Zn,action:{type:`route`,to:$.settingsAppearance},isActive:e=>pz(e.pathname,`/settings`,`/feeds`,`/feed`),children:[{id:`settings-profile`,label:`Profile`,level:2,icon:ze,action:{type:`route`,to:$.settingsProfile},isActive:e=>e.pathname===$.settingsProfile},{id:`settings-feeds`,label:`Feeds & Sources`,level:2,icon:Wt,action:{type:`route`,to:$.feeds},isActive:e=>pz(e.pathname,`/feeds`,`/feed`)},{id:`settings-appearance`,label:`Appearance`,level:2,icon:v,action:{type:`route`,to:$.settingsAppearance},isActive:e=>e.pathname===$.settings||e.pathname===$.settingsAppearance},{id:`settings-tags`,label:`Tag Types`,level:2,icon:Ze,action:{type:`route`,to:$.settingsTags},isActive:e=>e.pathname===$.settingsTags},{id:`settings-sound-profiles`,label:`Sound Profiles`,level:2,icon:F,action:{type:`route`,to:$.settingsSoundProfiles},isActive:e=>e.pathname===$.settingsSoundProfiles},{id:`settings-sync`,label:`Sync`,level:2,icon:mt,action:{type:`route`,to:$.settingsSync},isActive:e=>e.pathname===$.settingsSync},{id:`settings-storage`,label:`Storage`,level:2,icon:jt,action:{type:`route`,to:$.settingsStorage},isActive:e=>e.pathname===$.settingsStorage},{id:`settings-system`,label:`System`,level:2,icon:Sn,action:{type:`route`,to:$.settingsSystem},isActive:e=>e.pathname===$.settingsSystem}]},{id:`buy-me-a-coffee`,label:`Buy Me a Coffee`,level:1,icon:sz,action:{type:`external`,href:oz}}]}hz(()=>{});var gz={slate:{panel:`border-slate-500/35 shadow-slate-500/12`,accent:`from-slate-500/70 via-slate-400/25 to-transparent`,progress:`from-slate-500 to-slate-400`},amber:{panel:`border-amber-500/35 shadow-amber-500/12`,accent:`from-amber-500/75 via-amber-400/25 to-transparent`,progress:`from-amber-500 to-orange-400`},emerald:{panel:`border-emerald-500/35 shadow-emerald-500/12`,accent:`from-emerald-500/75 via-emerald-400/25 to-transparent`,progress:`from-emerald-500 to-teal-400`},sky:{panel:`border-sky-500/35 shadow-sky-500/12`,accent:`from-sky-500/75 via-sky-400/25 to-transparent`,progress:`from-sky-500 to-cyan-400`},violet:{panel:`border-violet-500/35 shadow-violet-500/12`,accent:`from-violet-500/75 via-fuchsia-400/25 to-transparent`,progress:`from-violet-500 to-fuchsia-400`},rose:{panel:`border-rose-500/35 shadow-rose-500/12`,accent:`from-rose-500/75 via-pink-400/25 to-transparent`,progress:`from-rose-500 to-pink-400`}};function _z(e){return e.proseChunks.filter(e=>e.kind===`prose`).map(e=>e.text).join(``)}function vz(e){let t=new Map;for(let n of e.sections)for(let e of n.proseChunks)e.kind===`challenge`&&t.set(e.id,n.id);return t}function yz(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`).replace(/^-+|-+$/g,``)}function bz(e){let t=e.match(/^(#{1,6}) (.+)$/);if(!t)return null;let n=t[1].length,r=t[2],i=r.match(/\{([^}]+)\}$/),a=i?i[1].trim().split(/\s+/).filter(Boolean):[];return{level:n,text:i?r.slice(0,i.index).trim():r.trim(),attrs:a}}function xz(e){let t={};for(let n of e){let e=n.match(/^([a-zA-Z][\w-]*):\s*(.+)$/);e&&(t[e[1]]=e[2].trim())}return t}function Sz(e){let t=[];for(let n of e){let e=n.match(/^\s*-\s+([\w-]+):\s+(.+)$/);e&&t.push({action:e[1],value:e[2].trim()})}return t}function Cz(e){let t=e.split(`
|
|
86
86
|
`),n=xz(t),r=[];for(let e of t){let t=e.match(/^button:\s*(.+)$/);if(!t)continue;let n=t[1].split(`|`).map(e=>e.trim()),i=n[0]??`Run`,a,o=[];for(let e of n.slice(1)){let t=e.match(/^open:\s*(view|dialog|route)$/);if(t){a=t[1];continue}o.push(`- ${e}`)}r.push({label:i,open:a,pipeline:Sz(o)})}return{name:n.name??`view`,state:n.state??`note`,source:n.source??``,runtime:n.runtime,launch:n.launch,align:n.align??`right`,width:n.width??`50%`,buttons:r}}function wz(e){let t=e.split(`
|
|
87
87
|
`),n=``,r;for(let e of t){let t=e.match(/^target:\s*(.+)$/);if(t){n=t[1].trim();continue}let i=e.match(/^open:\s*(view|dialog|route)$/);if(i){r=i[1];continue}}return{target:n,open:r,pipeline:Sz(t)}}function Tz(e){let t=e.split(`
|
|
@@ -106,7 +106,7 @@ sum:$metric{} by {week}
|
|
|
106
106
|
|
|
107
107
|
`,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 rB({noteId:e,sourceRevision:t,blocks:n={},persistence:r=Cj,onRevert:i}){let[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)(``),[l,u]=(0,W.useState)(0),[d,f]=(0,W.useState)(0),[p,m]=(0,W.useState)(null),[h,g]=(0,W.useState)(!1);(0,W.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,G.jsxs)(`details`,{className:`rounded-lg border border-border p-3`,children:[(0,G.jsx)(`summary`,{className:`cursor-pointer font-medium focus-visible:ring-2`,children:`Saved block history`}),(0,G.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[p&&(0,G.jsx)(`p`,{role:`alert`,children:p}),_.length===0?(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No saved actionable blocks.`}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`label`,{className:`block text-sm`,children:[`Block occurrence`,(0,G.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,G.jsxs)(`option`,{value:e,children:[`Block `,t+1,` · `,e,n[e]?``:` · removed`]},e))})]}),(0,G.jsx)(`ol`,{"aria-label":`Saved versions`,className:`space-y-1 text-sm`,style:{contentVisibility:`auto`},children:y.map(e=>(0,G.jsxs)(`li`,{children:[`v`,e.version,` · `,(0,G.jsx)(`time`,{dateTime:new Date(e.savedAt).toISOString(),children:Wee(new Date(e.savedAt))}),` · `,e.kind,e.dialect?` · ${e.dialect}`:``,e.sport?` · ${e.sport}`:``]},e.version))}),(0,G.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,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`label`,{className:`block text-sm`,children:[e,(0,G.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,G.jsxs)(`option`,{value:e.version,children:[`v`,e.version]},e.version))})]}),(0,G.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,G.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,G.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 iB(e){let t=await sk(),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 aB(e){return await iB(e)??null}var oB=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 sB(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 cB(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:sB(e),nextFragments:o,behaviorsMetadata:s}}function lB(e){return{type:`rpc-stack-update`,snapshotType:e.type,blocks:e.blocks.map(cB),affectedBlockKey:e.affectedBlock?.key.toString(),depth:e.depth,clockTime:e.clockTime.getTime()}}function uB(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 dB(e,t,n){return{type:`rpc-analytics-summary`,totalDurationMs:t,completedSegments:n,projections:e}}function fB(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 pB=class{transport;id;lastFingerprint=``;constructor(e,t){this.transport=e,this.id=t?.id??`chromecast`}onStackSnapshot(e){if(!this.transport.connected)return;let t=lB(e),n=this.computeFingerprint(t);n!==this.lastFingerprint&&(this.lastFingerprint=n,this.transport.send(t))}onOutput(e){this.transport.connected&&this.transport.send(uB(e))}sendAnalyticsSummary(e,t,n){this.transport.connected&&this.transport.send(dB(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:${fB(n.displayFragments)}`),t.push(`promote:${fB(n.promoteFragments)}`),t.push(`result:${fB(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(`|`)}},mB=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 hB(e,...t){console.warn(`[${e}]`,...t)}function gB(e,...t){console.error(`[${e}]`,...t)}var _B={createSubscription:(e,t)=>new pB(e,{id:t}),createEventProvider:e=>new oB(e),createClockSync:e=>new mB(e)},vB=new class{deps;activeHandle=null;activeMeta=null;constructor(e=_B){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=>{gB(`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 yB(){return(0,W.useSyncExternalStore)(cM,iM,iM)}function bB(e,t){if(!e||e.trim().length===0)return{statements:[],errors:[],success:!0};try{let n=e.endsWith(`
|
|
108
108
|
`)?e:e+`
|
|
109
|
-
`;return{statements:Sc(ii.create({doc:n,extensions:[Xc]}),t),errors:[],success:!0}}catch(e){return{statements:[],errors:[{message:e instanceof Error?e.message:`Unknown parse error`,severity:`error`}],success:!1}}}function xB(e,t={}){let n=t.sourceRevision??1,r=za(e,{...t,blocks:t.noteBlocks,sourceRevision:n}),i=La(e,t),a=[];for(let e of i){if(!Ra(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=SB({...e.scriptBlock,id:t.id,version:t.version}),a.push(e.scriptBlock)))}return{sections:i,blocks:a,noteBlocks:r,rawContent:e,sourceRevision:n}}function SB(e){try{let t=bB(e.content,e.sport);return{...e,statements:t.statements,errors:t.errors,state:t.success?`parsed`:`error`}}catch(t){return pM(`WorkbenchDocumentModel`,`Block parse error:`,t),e}}var CB={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`},wB=5e3;function TB(e={}){let t=e.listeners??[],n=e.nowProvider??Zl,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=Tn()((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{...CB,setContent:r=>{let s=xB(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(()=>{})},wB))),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(()=>{})},wB))},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=nB({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=xB(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 uM({noteId:a,rawContent:i.content,blocks:i.noteBlocks,expectedSourceRevision:i.sourceRevision},e,tn(),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=xB(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 Vee.process(r),{v7:c}=await st(async()=>{let{v7:e}=await import(`./vendor-BiwvmytJ.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=xB(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 aB(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}=eB(t.runtime);return t.runtime?{outputStatementList:n,analyticsSegments:r,analyticsGroups:i}:{outputStatementList:n}}),clearOutputStatementList:()=>t({outputStatementList:[]}),feedLogOutputs:(e,n)=>{let{segments:r,groups:i}=tB(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,pa.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}),vB.setSubscriptionRegistry(e)},setViewMode:e=>t({viewMode:e}),setRuntime:e=>{for(let e of s)e();if(s=[],e){let r=eB(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(ji(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=MM();if(i?.connected){let t=new pB(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({...CB})}}});return t.length>0&&c.subscribe(e=>{for(let n of t)n(e)}),Object.assign(c,{__nowProvider:n})}var EB=TB();function DB(e){let t=EB;return EB=e,t}function OB(){return EB}var kB=e=>Nt(EB,e),AB=({nowProvider:e,notePersistence:t,provider:n,navigate:r,children:i})=>{let a=(0,W.useMemo)(()=>TB({nowProvider:e,notePersistence:t,provider:n,navigate:r}),[e,t,n,r]);return(0,W.useEffect)(()=>{let e=DB(a);return()=>{DB(e),a.getState().resetStore()}},[a]),W.createElement(W.Fragment,null,i)},jB={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)},MB={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}},NB={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}},PB=class{async getAllEfforts(){let e=LO();return e.isInitialized()||await MO(e),[...e.list()]}},FB=new y_,IB={events:[],notes:[]},LB={events:[],notes:[]};FB.set(`@session`,IB),FB.set(`@today`,LB);function RB(){let e=OB().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=A_(t.map(Cm),{noteId:n?.id??``,resultId:`live:${n?.id??`session`}`,origin:`playground`,workoutTimestamp:n?.targetDate}),IB)}function zB(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 r_(e.date??e.createdAt,r)}async function BB(e,t){let n=r_(e.instant,e.timeZone),r=c_(n,e.timeZone),i=c_(i_(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)zB(t,d.get(t.id)??[],u,e.timeZone)===n&&f.push(t);t===UB&&(LB.events=l,LB.notes=f,RB())}var VB=null,HB=null,UB=0,WB=!1,GB=new Set;function KB(){for(let e of GB)e()}function qB(e,t){HB=t;let n=++UB;return VB=BB(e,n),VB.then(()=>{n===UB&&JB()},()=>{n===UB&&JB()}),VB}function JB(){WB=!0,KB()}function YB(){let e=Zg(),t=r_(e.instant,e.timeZone);return!VB||HB!==t?qB(e,t):VB}function XB(){WB=!1;let e=Zg();return qB(e,r_(e.instant,e.timeZone))}function ZB(){return WB}function QB(e){return GB.add(e),()=>{GB.delete(e)}}var $B=class extends vv{async runQuery(e,t){return await YB(),super.runQuery(e,t)}async runPipeline(e,t){return await YB(),super.runPipeline(e,t)}async runFind(e,t){return await YB(),super.runFind(e,t)}async runRows(e,t){return await YB(),super.runRows(e,t)}async run(e,t){return await YB(),super.run(e,t)}};function eV(){return new $B({eventStore:jB,noteStore:MB,blockStore:NB,effortStore:new PB,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`?RB():FB.getDataset(e)}})}var tV=eV();function nV(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?zL(a):`${t===`segment`?`Segment`:`Event`} ${n+1}`,date:typeof e.date==`string`?e.date:null,subtitle:o.length>0?o.join(` • `):void 0}}function rV(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 iV(e,t,n){e&&e({selected:Math.max(t?.selected??0,n.length),matched:n.length})}function aV(e){return typeof e==`object`&&!!e&&`runFind`in e}var oV=new class e{customService;noteTitleResolver;noteTagsResolver;noteBlockInfo;constructor(e){aV(e)?this.customService=e:(this.customService=e?.service,this.noteTitleResolver=e?.noteTitleResolver,this.noteBlockInfo=e?.noteBlockInfo??!1,this.noteTagsResolver=e?.noteTagsResolver),this.noteTitleResolver||=async e=>{try{let t=await Z.getNote(e);return t?xx(t.title)||Sx(t.rawContent??``):void 0}catch{return}}}get service(){return this.customService??tV}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=wa(e?.links??[],e?.pages??[]);t.placements=n;let i=Ta(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(Sh(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)?ML(r.get(e.ownerNoteId)):HL(e));return iV(t,e.stages,i),i}if(n.target===`block`){let e=await this.service.runFind(n),r=e.blocks.map(RL);return await this.hydrateEntries(r,!0),iV(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=qL(e,{noteTitles:r});return iV(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)=>nV(t,e,n));return iV(t,r.stages,i),i}let e=await this.service.runFind(n),r=e.notes.map(ML);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),iV(t,e.stages,r),this.noteBlockInfo)for(let t=0;t<r.length;t++){let n=r[t],i=e.notes[t];n.excerpt=LL(i.rawContent);try{Ba(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&&La(i.rawContent).find(e=>e.from===a.from&&e.scriptBlock);if(a&&o?.scriptBlock){let e=o.scriptBlock.content,t=xa(e);n.wodBlock={blockId:a.id,blockVersion:a.version,blockContentId:t,content:e},n.blockContentId=t}}return r}if(n.family===`aggregate`){if(!this.service.runQuery)return[];let e=await this.service.runQuery(n.raw),r=rV(e);return t?.({selected:e.stages?.selected??r.length,matched:r.length}),r}return[]}};async function sV(e,t=oV,n){return t.query(e,n)}function cV(e){return e?e.map(e=>e.kind===`wql`?`${e.id}|${e.query}|${e.limit??``}`:`s:${e.id}`).join(`;`):``}async function lV(e){try{let t=(await sV(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 uV(e){let t=cV(e),n=(0,W.useRef)(e);n.current=e;let[r,i]=(0,W.useState)(()=>e&&!e.some(e=>e.kind===`wql`)?e:[]);return(0,W.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`?lV(e):Promise.resolve(e))).then(e=>{t||i(e)}),()=>{t=!0}},[t]),r}function dV(){let[e]=dn(`h`,{shallow:!0}),[t]=dn(`s`,{shallow:!0}),{navState:n}=kP(),r=n.activeL3Id??``;return e||t||r||``}function fV({entry:e,active:t,onActivate:n}){let r=e.onRun;return(0,G.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:K(`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`:K(`hover:bg-muted/60 hover:text-foreground`,e.muted?`text-muted-foreground/70`:`text-muted-foreground`)),children:[e.icon&&(0,G.jsx)(e.icon,{className:`size-4 shrink-0`}),e.timestamp&&(0,G.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/60`,children:e.timestamp}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 line-clamp-2 break-words`,title:e.label,children:e.label}),e.badge&&(0,G.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/50`,children:e.badge}),r&&(0,G.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,G.jsx)(re,{className:`size-3.5`}):e.runIcon===`stop`?(0,G.jsx)(_,{className:`size-3.5`}):e.runIcon===`edit`?(0,G.jsx)(fe,{className:`size-3.5`}):(0,G.jsx)(V,{className:`size-3.5`})})]})}function pV({entries:e,activeId:t,onSection:n}){let r=fn(),{scrollToSection:i}=kP(),a=XF(),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,G.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.map(e=>e.kind===`section`?e.entries.length===0?null:(0,G.jsxs)(`div`,{className:`mt-1 flex flex-col gap-0.5 first:mt-0`,children:[(0,G.jsx)(`div`,{className:`px-2 pb-1 pt-3 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,G.jsx)(pV,{entries:e.entries,activeId:t,onSection:n})]},e.id):e.kind===`wql`?null:e.kind===`widget`?(0,G.jsx)(`div`,{className:`px-1 py-1`,children:e.render()},e.id):(0,G.jsx)(fV,{entry:e,active:t!=null&&e.sectionId===t,onActivate:o},e.id))})}function mV(){let e=fn(),{scrollToSection:t}=kP();return{navigate:(t,n)=>e(t,{replace:n?.replace}),setQueryParam:(e,t)=>{},scrollToSection:t}}function hV(){let e=mV(),t=XF();return n=>{t(),eR(n.action,e)}}function gV(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 _V({items:e}){let{navState:t}=kP(),n=En(),r=hV();return(0,G.jsx)(aI,{children:e.map(e=>{let i=gV(e,t,n);return e.children&&e.children.length>0?(0,G.jsx)(aR,{title:e.label,count:e.children.length,defaultOpen:e.children.some(e=>gV(e,t,n)),collapsible:e.id!==`syntax-group`,children:e.children.map(e=>{let i=gV(e,t,n);return(0,G.jsxs)(sI,{onClick:()=>r(e),current:i,children:[e.icon&&(0,G.jsx)(e.icon,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:e.label})]},e.id)})},e.id):(0,G.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,G.jsxs)(sI,{onClick:e.disabled?void 0:()=>r(e),current:i,disabled:e.disabled,"aria-label":e.disabled?`${e.label} (coming soon)`:void 0,className:K(`flex-1`,e.disabled&&`opacity-60`),children:[e.icon&&(0,G.jsx)(e.icon,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:e.disabled?`+`:e.label})]}),e.onTogglePin&&(0,G.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,G.jsx)(eee,{className:`size-3.5`})})]},e.id)})})}function vV({navSpec:e}){let{tree:t,navState:n,dispatch:r,contextNav:i}=kP(),a=En(),o=uV(e),s=(t??[]).find(e=>e?.id===n.activeL1Id)??null,c=i?.pathname===a.pathname?i:null;return(0,G.jsxs)(nI,{children:[(0,G.jsx)(rI,{children:(0,G.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,G.jsxs)(iI,{children:[(()=>{if(c||!s)return null;if(s.panel){let e=s.panel;return(0,G.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,G.jsx)(e,{item:s,navState:n,dispatch:r})})}return s.children&&s.children.length>0?(0,G.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,G.jsx)(_V,{items:s.children})}):null})(),c?(0,G.jsx)(`div`,{className:`pt-1`,children:(0,G.jsx)(pV,{entries:c.spec})}):o.length>0&&(0,G.jsx)(`div`,{className:`pt-1`,children:(0,G.jsx)(pV,{entries:o})})]})]})}var yV=`0.51.2195`,bV=`https://github.com/bitcobblers/wod-wiki/releases`;function xV(e){return/-pr\.\d+$/.test(e)?bV:`${bV}/tag/v${e}`}function SV({onSearch:e,onCreate:t}){let{tree:n,navState:r,dispatch:i}=kP(),a=fn(),o=En(),s=XF(),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,G.jsxs)(G.Fragment,{children:[(0,G.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,G.jsx)(Se,{size:17}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Wod Wiki home`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Wod Wiki home`})]}),(0,G.jsx)(`nav`,{"aria-label":`Primary`,className:`flex flex-col items-center gap-1.5`,children:l.map(e=>{let t=e.icon,n=gV(e,r,o);return(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{s(),i({type:`SET_ACTIVE_L1`,id:e.id}),eR(e.action,c)},title:e.label,"aria-label":e.label,"aria-current":n?`page`:void 0,className:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(t,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:e.label}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:e.label})]},e.id)})}),(0,G.jsx)(`div`,{className:`flex-1`}),(0,G.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,G.jsx)(ve,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Search`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Search (⌘/)`})]}),(0,G.jsxs)(`a`,{href:oz,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,G.jsx)(sz,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Buy Me a Coffee`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Buy Me a Coffee`})]}),(0,G.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:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(ze,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Profile`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Profile`})]}),(0,G.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:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(Zn,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Settings`}),(0,G.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`,yV,`)`]})]})]})}function CV({activations:e,activeSection:t,variant:n,deps:r,className:i}){return(0,G.jsx)(`nav`,{className:K(`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,G.jsx)(`button`,{onClick:()=>eR(e.action,r),className:K(`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 wV=class e{now;name=`tick`;timestamp;data;static _counter=0;constructor(t,n=Zl){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this.data=t}},TV=20,EV=e=>{let[t,n]=(0,W.useState)(`idle`),[r,i]=(0,W.useState)(0),[a,o]=(0,W.useState)(0),[s,c]=(0,W.useState)(null),l=(0,W.useRef)(null),u=(0,W.useRef)(null),d=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),n(`idle`)},[]),f=(0,W.useCallback)(()=>{if(e)try{let t=new wV(void 0,e.nowProvider);e.handle(t),o(e=>e+1)}catch{d(),n(`error`)}},[e,d]);(0,W.useEffect)(()=>{if(e)return e.subscribeToStack(e=>{e.blocks.length===0&&t!==`completed`&&(l.current&&=(clearInterval(l.current),null),n(`completed`))})},[e,t]),(0,W.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]);let p=(0,W.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()??Zl.nowMs();u.current=i-r,r===0&&c(i),l.current=setInterval(f,TV)},[e,t,r,f]),m=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),e&&e.handle({name:`timer:pause`,timestamp:new Date,data:{}}),n(`paused`)},[e]),h=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),i(0),o(0),n(`idle`),c(null),u.current=null},[e]),g=(0,W.useCallback)(()=>{!e||t===`running`||(n(`paused`),f())},[e,t,f]);return(0,W.useEffect)(()=>{if(t!==`running`||!u.current)return;let n=setInterval(()=>{i((e?.nowProvider?.nowMs()??Zl.nowMs())-u.current)},100);return()=>clearInterval(n)},[t,e?.nowProvider]),(0,W.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]),(0,W.useEffect)(()=>{h()},[e,h]),(0,W.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])},DV=(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 OV(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,W.useState)(r);return(0,W.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 kV(e){return OV(e,`round`)}function AV(e){return OV(e,`display`)}function jV(e){let t=kV(e),n=AV(e);return(0,W.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 MV=(0,W.createContext)(void 0),NV=({runtime:e,children:t})=>(0,G.jsx)(MV.Provider,{value:e,children:t});function PV(){let e=(0,W.useContext)(MV);if(!e)throw Error(`useScriptRuntime must be used within ScriptRuntimeProvider`);return e}function FV(e){let t=PV(),n=e===void 0?t:e,[r,i]=(0,W.useState)(()=>n?.getOutputStatements?.()??[]);return(0,W.useEffect)(()=>{if(!n){i([]);return}return i(n.getOutputStatements()),n.subscribeToOutput?.(()=>{i(n.getOutputStatements())})},[n]),(0,W.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 IV(e){let t=PV(),n=e===void 0?t:e,[r,i]=(0,W.useState)(()=>n?.getLiveAnalytics?.()??[]);return(0,W.useEffect)(()=>{if(!n){i([]);return}return i(n.getLiveAnalytics?.()??[]),n.subscribeToOutput?.(()=>{i(n.getLiveAnalytics?.()??[])})},[n]),r}function LV(){let e=PV(),[t,n]=(0,W.useState)({type:`initial`,blocks:e.stack.blocks,depth:e.stack.count,clockTime:e.clock.currentDate});return(0,W.useEffect)(()=>e.subscribeToStack(e=>{n(e)}),[e]),t}function RV(){return LV().blocks}function zV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.useMemo)(()=>{for(let t of e){let e=t.getMemoryByTag(`metric:next`);if(e.length===0)continue;let n=pa.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 BV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 VV(){let e=BV();return(0,W.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 HV(){let e=BV(),t=VV();return(0,W.useMemo)(()=>t?e.filter(e=>e.block!==t.block):[],[e,t])}function UV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 WV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 GV(e){let t=PV(),n=(0,W.useMemo)(()=>t.stack.blocks.find(t=>t.key.toString()===e),[t,e]),[r,i]=(0,W.useState)(()=>n?.getMemoryByTag(`time`)[0]?.metrics[0]?.value);(0,W.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,W.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,W.useMemo)(()=>r?.spans??[],[r]),o=a.length>0&&a[a.length-1].ended===void 0,[s,c]=(0,W.useState)(zu()),l=(0,W.useMemo)(()=>a.length===0?0:DV(a,s),[a,s]);return(0,W.useEffect)(()=>{if(!o)return;let e,t=()=>{c(zu()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[o]),{elapsed:l,isRunning:o,timeSpans:a}}var KV=(0,W.createContext)(void 0),qV=(0,W.createContext)(null),JV={getState:()=>OB().getState(),setState:(e,t)=>{let n=OB();typeof e==`function`?n.setState(e(n.getState()),t):n.setState(e,t)},subscribe:e=>OB().subscribe(e)},YV=({factory:e,children:t})=>{let[n,r]=(0,W.useState)(null),[i,a]=(0,W.useState)(null),[o,s]=(0,W.useState)(!1),[c,l]=(0,W.useState)(null),u=(0,W.useRef)(e);u.current=e;let d=(0,W.useRef)(null),f=(0,W.useRef)(null),p=(0,W.useRef)(!1),m=(0,W.useCallback)(()=>{f.current&&=(f.current.dispose(),null),a(null),JV.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,W.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 Sm(i);e.add(new xm({id:`local`})),f.current=e,a(e),JV.getState().setSubscriptionManager(e)}else f.current=null,a(null),JV.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,W.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,G.jsx)(KV.Provider,{value:g,children:(0,G.jsx)(qV.Provider,{value:i,children:t})})};function XV({factory:e,children:t}){return(0,G.jsx)(YV,{factory:e,children:t})}var ZV=`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`,QV=`flex flex-col flex-1 min-w-0 xl:max-w-[984px] 2xl:max-w-none min-h-screen lg:rounded-[2.5rem]`;function $V({id:e,title:t,subtitle:n,titleAccessory:r,actions:i,queryBar:a,subheader:o,titleTestId:s,className:c}){return(0,G.jsxs)(`div`,{id:e,"data-page-sticky-boundary":`true`,className:K(`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,G.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,G.jsxs)(`div`,{className:`flex items-center gap-2.5 sm:gap-3 min-w-0`,children:[(0,G.jsx)(`div`,{className:`h-5 w-1.5 shrink-0 rounded-full bg-primary`}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`h1`,{"data-testid":s,className:`text-base sm:text-lg font-black tracking-tight text-foreground leading-none truncate`,children:t}),n&&(0,G.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground truncate`,children:n})]}),r]})]}),a&&(0,G.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),i&&(0,G.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto`,children:i})]}),o&&(0,G.jsx)(`div`,{className:`bg-background/40`,children:o})]})}function eH({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,W.useRef)(``),u=(0,W.useRef)(i),d=(0,W.useRef)(a),f=(0,W.useRef)(null),p=(0,W.useRef)(1);(0,W.useEffect)(()=>{u.current=i},[i]),(0,W.useEffect)(()=>{d.current=a},[a]);let m=e.filter(Boolean).join(`\0`),h=r.join(`,`),g=(0,W.useMemo)(()=>m?m.split(`\0`):[],[m]),_=(0,W.useMemo)(()=>h.split(`,`).map(Number),[h]),v=(0,W.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null)},[]);(0,W.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 tH({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]=dn(`s`,{defaultValue:o??a[0]?.id??``,shallow:!0,history:`replace`}),[f,p]=(0,W.useState)(c?.[0]?.id??``);if(eH({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}),eH({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,G.jsxs)(`div`,{className:K(`flex flex-col min-h-screen bg-background`,l),children:[s,(0,G.jsx)(CV,{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,G.jsx)(`div`,{className:`flex-1`,children:c.map(e=>{let t=(0,G.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,G.jsx)(XV,{factory:e.runtimeFactory,children:t},e.id):t})})]})}return(0,G.jsx)(`div`,{className:K(`relative flex w-full min-h-screen justify-start items-start`,l),children:(0,G.jsxs)(`div`,{className:K(QV,ZV),children:[(0,G.jsx)($V,{title:e,titleAccessory:t,actions:n,subheader:r}),(0,G.jsx)(`div`,{className:`flex-1`,children:i})]})})}var nH=`[data-page-sticky-boundary="true"]`,rH=0;function iH(e,t=rH){if(typeof document>`u`)return e;let n=Array.from(document.querySelectorAll(nH)).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 aH(e,t=rH){let[n,r]=(0,W.useState)(e);return(0,W.useEffect)(()=>{let n=0,i=()=>r(iH(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(nH).forEach(e=>o?.observe(e));let s=typeof MutationObserver>`u`?void 0:new MutationObserver(()=>{document.querySelectorAll(nH).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 oH({top:e,label:t,icon:n,badge:r,meta:i,testId:a,className:o}){return(0,G.jsxs)(`div`,{"data-testid":a,className:K(`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,G.jsx)(`span`,{className:`min-w-0 truncate text-xs font-bold text-foreground`,children:t}),r,i&&(0,G.jsx)(`span`,{className:`ml-auto shrink-0 pl-2 font-mono text-[10px] text-muted-foreground`,children:i})]})}var sH=(0,W.createContext)(null),cH=(0,W.createContext)(null);function lH({children:e}){let[t,n]=(0,W.useState)(null);return(0,G.jsx)(cH.Provider,{value:n,children:(0,G.jsx)(sH.Provider,{value:t,children:e})})}function uH({className:e}){let t=(0,W.useContext)(cH);return(0,G.jsx)(`div`,{ref:t,className:e,"data-testid":`mobile-query-slot`})}function dH(){return(0,W.useContext)(sH)}function fH({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,G.jsxs)(`div`,{className:K(`relative flex w-full min-h-screen justify-start items-start`,d),children:[(0,G.jsxs)(`div`,{className:K(QV,ZV),children:[(0,G.jsx)($V,{title:t,subtitle:n,titleTestId:r,actions:i}),(0,G.jsx)(`main`,{className:`flex-1 min-w-0 max-w-full`,children:e})]}),s&&a&&(0,G.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,G.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,G.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,G.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,G.jsx)(`div`,{className:`flex-1 min-h-0`,children:a})]})}),c&&o&&(0,G.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,G.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,G.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,G.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,G.jsx)(`div`,{className:`flex-1 min-h-0`,children:o})]})})]})}function pH(e){return e.map(e=>{if(e.panel){let t=e.panel;return{kind:`widget`,id:e.id,render:()=>(0,W.createElement)(`div`,{className:`flex flex-col gap-1`},(0,W.createElement)(`span`,{className:`px-1 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`},e.label),(0,W.createElement)(t,{currentPath:``,location:null}))}}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 mH=W.createContext(null);function hH(){let e=W.useContext(mH);if(!e)throw Error(`DropdownMenu components must be used inside a DropdownMenu`);return e}function gH(){let e=W.useContext(mH);return W.useCallback(()=>{e?.setIsOpen(!1)},[e])}var _H=({children:e,open:t,onOpenChange:n})=>{let r=W.useContext(mH),i=W.useId(),a=r?`${r.portalChain}/${i}`:i,[o,s]=W.useState(t??!1),c=W.useRef(null),[l,u]=W.useState(-1),d=W.useRef(new Map),[,f]=W.useReducer(e=>e+1,0);W.useEffect(()=>{t!==void 0&&s(t)},[t]);let p=W.useCallback(e=>{s(e),u(-1),n?.(e)},[n]),m=W.useCallback((e,t)=>{d.current.set(e,t),f()},[]),h=W.useCallback(e=>{d.current.delete(e),f()},[]),g=W.useCallback(e=>Array.from(d.current.keys()).indexOf(e),[]),_=d.current.size,v=W.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,G.jsx)(mH.Provider,{value:v,children:(0,G.jsx)(`div`,{ref:c,className:`relative inline-block`,children:e})})},vH=W.forwardRef(({className:e,children:t,asChild:n,...r},i)=>{let{isOpen:a,setIsOpen:o}=hH(),s=e=>{e.stopPropagation(),o(!a)};return n&&W.isValidElement(t)?W.cloneElement(t,{...r,onClick:s}):(0,G.jsx)(`button`,{ref:i,className:e,onClick:s,...r,children:t})});vH.displayName=`DropdownMenuTrigger`;var yH=W.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}=hH(),p=W.useRef(null),m=a||p,[h,g]=W.useState({top:0,bottom:0,left:0,width:0}),_=r===`bottom`,[v,y]=W.useState(!1);W.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]),W.useLayoutEffect(()=>{if(!o||!_||!m.current)return;let e=m.current.getBoundingClientRect();y(h.top+e.height>window.innerHeight)},[o,_,h.top,m]),W.useEffect(()=>{if(!o||u===0)return;let e=setTimeout(()=>{l(0)},0);return()=>clearTimeout(e)},[o,u,l]),W.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%)`),JC.createPortal((0,G.jsx)(`div`,{ref:m,role:`menu`,"data-dropdown-chain":f,className:K(`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)});yH.displayName=`DropdownMenuContent`;var bH=W.forwardRef(({className:e,disabled:t,inset:n,onClick:r,onKeyDown:i,...a},o)=>{let{setIsOpen:s,registerItem:c,unregisterItem:l,getItemIndex:u,activeIndex:d}=hH(),f=W.useId(),p=W.useRef(null),m=W.useCallback(e=>{p.current=e,typeof o==`function`?o(e):o&&(o.current=e)},[o]);W.useEffect(()=>(c(f,p),()=>l(f)),[f,c,l]);let h=u(f)===d;return W.useEffect(()=>{h&&p.current?.focus()},[h]),(0,G.jsx)(`div`,{ref:m,role:`menuitem`,tabIndex:t?-1:h?0:-1,"aria-disabled":t,"data-active":h?`true`:void 0,className:K(`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})});bH.displayName=`DropdownMenuItem`;var xH=W.forwardRef(({className:e,inset:t,...n},r)=>(0,G.jsx)(`div`,{ref:r,className:K(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));xH.displayName=`DropdownMenuLabel`;var SH=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:K(`-mx-1 my-1 h-px bg-muted`,e),...t}));SH.displayName=`DropdownMenuSeparator`;function CH({className:e,children:t,...n}){return(0,G.jsx)(`div`,{className:K(`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,e),...n,children:t})}var wH=[{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`}],TH=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function EH(e,t){return new Date(e,t+1,0).getDate()}function DH(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function OH(e,t){let n=X(e);if(n.error)return e;if(!t||t===`all`)return hg({...n,window:void 0});let r=X(`:note ${t}`);return r.error||r.family!==`find`||!r.window?e:hg({...n,window:r.window})}function kH(e){let t=X(e);return t.error||t.family===`pipeline`?null:`window`in t?t.window??null:null}function AH({query:e,onQueryChange:t,highlightDates:n=new Set,className:r}){let i=(0,W.useMemo)(()=>kH(e),[e]),[a,o]=(0,W.useState)(null),[s,c]=(0,W.useState)(()=>new Date),l=s.getFullYear(),u=s.getMonth(),d=(0,W.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,W.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:LF(t),end:LF(e)}},[i]),p=(0,W.useMemo)(()=>{let e=EH(l,u),t=DH(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(OH(e,`from ${n} to ${n}`));else{let[r,i]=a<=n?[a,n]:[n,a];o(null),t(OH(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=LF(new Date);return(0,G.jsxs)(`div`,{className:K(`relative inline-flex items-center`,r),children:[(0,G.jsxs)(_H,{children:[(0,G.jsx)(vH,{asChild:!0,children:(0,G.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,G.jsx)(dr,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,G.jsx)(`span`,{className:`font-mono text-xs`,children:d}),(0,G.jsx)(Gt,{className:`size-3 text-muted-foreground`,"aria-hidden":`true`})]})}),(0,G.jsxs)(yH,{align:`end`,className:`w-72 p-3`,children:[(0,G.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1 border-b border-border/60 pb-2`,children:wH.map(n=>{let r=n.value===`all`?!i:i?.kind===`relative`&&`last ${i.size}${i.unit}`===n.value;return(0,G.jsx)(`button`,{type:`button`,"data-testid":`wql-window-preset-${n.value}`,onClick:()=>{o(null),t(OH(e,n.value))},className:K(`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,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.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,G.jsx)(mn,{className:`size-4`})}),(0,G.jsx)(`span`,{className:`text-xs font-semibold text-foreground`,children:_}),(0,G.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,G.jsx)(On,{className:`size-4`})})]}),(0,G.jsx)(`div`,{className:`mb-1 grid grid-cols-7 gap-1`,children:TH.map(e=>(0,G.jsx)(`div`,{className:`text-center text-[10px] font-medium text-muted-foreground`,children:e},e))}),(0,G.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,"data-testid":`wql-calendar-grid`,children:p.map((e,t)=>{if(e===null)return(0,G.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,G.jsxs)(`button`,{type:`button`,"data-testid":`wql-calendar-day-${r}`,onClick:()=>m(r),className:K(`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,G.jsx)(`span`,{children:e}),d&&!o&&!s&&(0,G.jsx)(`span`,{className:`absolute bottom-0.5 size-1 rounded-full bg-primary`})]},r)})}),a&&(0,G.jsxs)(`div`,{className:`mt-2 text-center text-[10px] text-muted-foreground`,children:[`Select second date to complete range (starting from `,a,`)`]})]})]}),i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`wql-window-picker-clear`,onClick:()=>{o(null),t(OH(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,G.jsx)(xr,{className:`size-3.5`})})]})}function jH({onOpen:e}){let t=gH();return(0,G.jsxs)(q,{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,G.jsx)(Vn,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,G.jsx)(`span`,{className:`truncate`,children:`Query settings`})]})}function MH(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 NH=[{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??``)}],PH={note:NH,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?``:BL(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?``:BL(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?``:BL(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 FH(e){return PH[e]??NH}function IH(e){return FH(e).filter(e=>e.defaultVisible).map(e=>e.id)}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}=ro(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,W.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: ${LH}px)`).matches);return(0,W.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=[{id:`cards`,label:`Cards`,icon:ye},{id:`rows`,label:`Rows`,icon:at},{id:`feed`,label:`Feed`,icon:Wt},{id:`agenda`,label:`Agenda`,icon:h},{id:`planner`,label:`Planner`,icon:vn}];function WH({streamControls:e}){let t=e.availableLayouts;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`l3-stream-controls`,children:[e.onOpenQuerySettings&&(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`This page`}),(0,G.jsx)(jH,{onOpen:e.onOpenQuerySettings})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Date window`}),(0,G.jsx)(AH,{query:e.query,onQueryChange:e.onQueryChange,className:`w-full justify-between`})]}),e.availableGroupDims.length>0&&(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Group by`}),(0,G.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,G.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,G.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleGroupDim(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,G.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Layout`}),(0,G.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,"data-testid":`l3-layout-options`,children:UH.filter(e=>!t||t.includes(e.id)).map(t=>{let n=t.icon,r=e.settings.layout===t.id;return(0,G.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,G.jsx)(n,{"aria-hidden":!0,className:`size-3`}),t.label]},t.id)})})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Fields`}),(0,G.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-field-options`,children:FH(e.level).map(t=>{let n=e.settings.visibleFields.includes(t.id);return(0,G.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,G.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleField(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,G.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,G.jsx)(FR,{})]})}function GH(){let e=HH(),{streamControls:t}=kP();return!e||!t?null:(0,G.jsx)(WH,{streamControls:t})}function KH({spec:e,pageAction:t}){let{l3Items:n,streamControls:r}=kP(),i=uV(e),a=(0,W.useMemo)(()=>pH(n),[n]),o=dV();return i.length===0&&a.length===0&&!r&&!t?null:(0,G.jsxs)(`div`,{className:`flex flex-col px-3 py-4 gap-4`,children:[r&&(0,G.jsx)(`div`,{className:`pb-3 border-b border-border/50`,children:(0,G.jsx)(WH,{streamControls:r})}),i.length>0&&(0,G.jsx)(pV,{entries:i,activeId:o}),a.length>0&&(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.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,G.jsx)(pV,{entries:a,activeId:o})]}),t&&(0,G.jsx)(`div`,{className:`pt-2 border-t border-border/50`,children:t})]})}var qH=`wodwiki:fabAlignment`,JH=[{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 YH(){try{return XH(localStorage.getItem(qH))}catch{return}}function XH(e){return e===`right`||e===`left`?e:void 0}var ZH=typeof window>`u`?void 0:YH();typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===qH&&(ZH=XH(e.newValue))});function QH(e){ZH=e;try{e===`right`?localStorage.removeItem(qH):localStorage.setItem(qH,e)}catch{}window.dispatchEvent(new StorageEvent(`storage`,{key:qH,newValue:e}))}function $H(){let[e,t]=(0,W.useState)(()=>ZH??`right`);return(0,W.useEffect)(()=>{let e=e=>{e.key===qH&&t(XH(e.newValue)??`right`)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),[e,QH]}function eU({onOpen:e}){return(0,G.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search`,title:`Search`,"data-testid":`search-fab`,className:K(`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,G.jsx)(ve,{className:`size-6`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Search`})]})}var tU=(0,W.createContext)(null),nU=(0,W.createContext)(!1),rU=(0,W.createContext)(null);function iU(){return(0,W.useContext)(tU)!==null}function aU({primary:e,navbar:t,children:n,label:r,fallback:i=!1}){let a=(0,W.useContext)(tU),o=(0,W.useContext)(nU),s=HH(),c=(0,W.useId)(),l=a!==null&&!o&&s&&!i,u=a!==null&&i,d=n!=null&&n!==!1,f=(0,W.useMemo)(()=>(0,G.jsx)(nU.Provider,{value:!0,children:n}),[n]),p=l||u,m=(0,W.useRef)(null);return m.current={id:c,primary:e,navbar:t,children:f,hasContent:d,label:r??`Page options`,fallback:i},(0,W.useEffect)(()=>{if(p)return a.register(m.current),()=>a.unregister(c)},[p,a,c]),(0,W.useEffect)(()=>{p&&a.register(m.current)},[p,a,e,t,f,d,r,i]),i||a&&s&&!o?null:(0,G.jsx)(nU.Provider,{value:!0,children:(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t,e,n]})})}function oU({onSearch:e,children:t}){let[n,r]=(0,W.useState)([]),i=(0,W.useCallback)(e=>r(t=>{let n=t.findIndex(t=>t.id===e.id);if(n===-1)return[...t,e];let r=t[n];if(r.primary===e.primary&&r.navbar===e.navbar&&r.children===e.children&&r.hasContent===e.hasContent&&r.label===e.label&&r.fallback===e.fallback)return t;let i=[...t];return i[n]=e,i}),[]),a=(0,W.useCallback)(e=>r(t=>t.filter(t=>t.id!==e)),[]),o=(0,W.useMemo)(()=>({register:i,unregister:a}),[i,a]),s=(0,W.useMemo)(()=>{for(let e=n.length-1;e>=0;--e)if(!n[e].fallback)return n[e].navbar??null;return null},[n]);return(0,G.jsx)(tU.Provider,{value:o,children:(0,G.jsxs)(rU.Provider,{value:s,children:[t,(0,G.jsx)(cU,{registrations:n,onSearch:e})]})})}function sU(){let e=(0,W.useContext)(rU);return e?(0,G.jsx)(G.Fragment,{children:e}):null}function cU({registrations:e,onSearch:t}){let n=HH(),[r]=$H(),i=XC(),[a,o]=(0,W.useState)(!1),s=(0,W.useCallback)(()=>o(!1),[]),c=(0,W.useRef)(null),l=(0,W.useRef)(null),u=(0,W.useRef)(null),d=(0,W.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(!e[t].fallback)return e[t]},[e]),f=(0,W.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(e[t].fallback)return e[t]},[e]);(0,W.useLayoutEffect)(()=>{a&&c.current?.focus({preventScroll:!0})},[a]);let p=!!(d?.hasContent||f?.hasContent);return!n||!t&&!d&&!f?null:(0,G.jsxs)(`div`,{"data-testid":`actions-dock`,className:K(`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,G.jsxs)(`div`,{className:`relative z-40 flex flex-col items-center gap-2`,children:[t&&(0,G.jsx)(eU,{onOpen:()=>{o(!1),t()}}),d?.primary&&(0,G.jsx)(`div`,{className:`[&_button]:min-h-11 [&_button]:min-w-11`,children:d.primary})]}),a&&p&&(0,G.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-hidden":`true`,className:`fixed inset-0 z-30 cursor-default`,onClick:()=>o(!1)}),(0,G.jsx)(`div`,{ref:c,role:`dialog`,"aria-label":d?.label??f?.label??`Page options`,tabIndex:-1,hidden:!a||!p,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),o(!1))},className:K(a&&p?`flex`:`hidden`,`relative z-40 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,G.jsxs)(YF,{close:s,children:[(0,G.jsx)(`div`,{ref:l,className:`contents`,children:d?.children}),d?.children&&f?.children&&(0,G.jsx)(`div`,{className:`my-1 border-t border-border/60`,"aria-hidden":`true`}),(0,G.jsx)(`div`,{ref:u,className:`contents`,children:f?.children})]})}),p&&(0,G.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":d?.label??f?.label??`Page options`,title:d?.label??f?.label??`Page options`,"aria-expanded":a,"data-testid":`actions-overflow`,className:K(`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,G.jsx)(ar,{className:`size-6`}):(0,G.jsx)(I,{className:`size-6`}),(0,G.jsx)(`span`,{className:`sr-only`,children:d?.label??f?.label??`Page options`})]})]})}function lU(){return(0,G.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,G.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 uU(){return(0,G.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,G.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 dU(){let{tree:e,navState:t,contextNav:n}=kP(),r=En(),i=XF();return!e.find(e=>e.id===t.activeL1Id)?.applyFooter||n?.pathname===r.pathname?null:(0,G.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,G.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 fU({open:e,close:t,onSearch:n,children:r}){return(0,G.jsxs)(it,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,G.jsx)(et,{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,G.jsx)(i,{transition:!0,className:`fixed inset-y-0 left-0 w-full transition duration-300 ease-out data-closed:-translate-x-full`,children:(0,G.jsx)(YF,{close:t,children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 bg-card`,children:[(0,G.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,G.jsx)(SV,{onSearch:()=>{t(),n?.()}})}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,G.jsx)(`div`,{className:`flex items-center px-4 pt-3`,children:(0,G.jsxs)(Fn,{as:Yz,"aria-label":`Close navigation`,title:`Close navigation`,children:[(0,G.jsx)(uU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Close navigation`})]})}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:r}),(0,G.jsx)(dU,{})]})]})})})]})}function pU({open:e,close:t,children:n}){return(0,G.jsxs)(it,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,G.jsx)(et,{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,G.jsx)(i,{transition:!0,className:`fixed inset-y-0 right-0 w-full transition duration-300 ease-out data-closed:translate-x-full`,children:(0,G.jsx)(YF,{close:t,children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card`,children:[(0,G.jsx)(`div`,{className:`flex items-center justify-end px-4 pt-3`,children:(0,G.jsxs)(Fn,{as:Yz,"aria-label":`Close page options`,title:`Close page options`,children:[(0,G.jsx)(uU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Close page options`})]})}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:n}),(0,G.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,G.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 mU({navbar:e,sidebar:t,onSearch:n,secondary:r,pageAction:i,hideDesktopSidebar:a,children:o}){let[s,c]=(0,W.useState)(!1),[l,u]=(0,W.useState)(!1),{streamControls:d,l3Items:f}=kP(),p=!!(r&&r.length>0||f&&f.length>0||d||i),m=(0,W.useMemo)(()=>{let e=X(d?.query??``);return!e.error&&Sh(e)&&e.filters.length>0},[d?.query]);return(0,W.useEffect)(()=>{if(!s&&!l)return;let e=()=>{c(!1),u(!1)};return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[s,l]),(0,G.jsx)(lH,{children:(0,G.jsx)(oU,{onSearch:n,children:(0,G.jsx)(`div`,{className:`relative isolate flex min-h-svh w-full bg-background max-lg:flex-col lg:flex-row`,children:(0,G.jsxs)(`div`,{className:`flex flex-1 w-full max-lg:flex-col lg:flex-row`,children:[(0,G.jsxs)(`nav`,{"aria-label":`Main`,className:`hidden lg:flex`,children:[(0,G.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,G.jsx)(SV,{onSearch:n??(()=>{})})}),(0,G.jsx)(`div`,{className:K(`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`,a&&`lg:hidden`),children:t})]}),(0,G.jsx)(fU,{open:s,close:()=>c(!1),onSearch:n,children:t}),(0,G.jsxs)(`div`,{className:`flex flex-1 flex-col min-w-0 xl:max-w-[984px] 2xl:max-w-none`,children:[(0,G.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,G.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,G.jsxs)(Yz,{onClick:()=>c(!0),"aria-label":`Open navigation`,title:`Open navigation`,children:[(0,G.jsx)(lU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Open navigation`})]})}),(0,G.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),p&&(0,G.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,G.jsxs)(Yz,{onClick:()=>u(!0),"aria-label":`Open page options`,title:`Open page options`,children:[(0,G.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,G.jsx)(Vn,{className:`size-5`}),m&&(0,G.jsx)(`span`,{"data-testid":`drawer-filters-active`,className:`absolute -top-1 -right-1 size-2 rounded-full bg-amber-500`,"aria-hidden":`true`})]}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Open page options`})]})})]}),(0,G.jsxs)(`main`,{className:`flex flex-1 flex-col lg:min-w-0`,children:[(0,G.jsx)(`div`,{className:`grow w-full max-lg:pb-48 lg:overflow-visible`,children:o}),(0,G.jsx)(hU,{})]})]}),(0,G.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,G.jsx)(KH,{spec:r,pageAction:i})}),(0,G.jsx)(pU,{open:l,close:()=>u(!1),children:(0,G.jsx)(KH,{spec:r,pageAction:i})})]})})})})}function hU(){let e=(0,W.useRef)(null),[t,n]=(0,W.useState)(0);return(0,W.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,W.useEffect)(()=>(document.documentElement.style.setProperty(`--thumb-dock-lift`,`${t}px`),()=>document.documentElement.style.setProperty(`--thumb-dock-lift`,`0px`)),[t]),(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:K(`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,G.jsx)(`div`,{ref:e,className:`w-full min-w-0`,children:(0,G.jsx)(uH,{className:`flex w-full min-w-0`})})}),(0,G.jsx)(`div`,{className:`lg:hidden`,"aria-hidden":`true`,style:{height:t}})]})}function gU(e){let t=e.indexOf(`markdown`);return t!==-1&&e.length>t+2?e[t+2]:`General`}function _U(e){return String(so(ro(e).meta,`search`)??``).toLowerCase()===`hidden`}function vU(e){let t=so(ro(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 yU(e){return Object.entries(e).map(([e,t])=>{let n=e.split(`/`),r=n[n.length-1].replace(`.md`,``),i=t,a=so(ro(i).meta,`title`);return{id:e,name:r,displayName:typeof a==`string`&&a.trim()?a.trim():HO(r),category:gU(n),content:i,date:vU(i),searchHidden:_U(i)}})}function bU(){let e=dk();return(0,W.useMemo)(()=>e?yU(e):[],[e])}var xU={};function SU(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 CU(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=_z(e).split(`
|
|
109
|
+
`;return{statements:Sc(ii.create({doc:n,extensions:[Xc]}),t),errors:[],success:!0}}catch(e){return{statements:[],errors:[{message:e instanceof Error?e.message:`Unknown parse error`,severity:`error`}],success:!1}}}function xB(e,t={}){let n=t.sourceRevision??1,r=za(e,{...t,blocks:t.noteBlocks,sourceRevision:n}),i=La(e,t),a=[];for(let e of i){if(!Ra(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=SB({...e.scriptBlock,id:t.id,version:t.version}),a.push(e.scriptBlock)))}return{sections:i,blocks:a,noteBlocks:r,rawContent:e,sourceRevision:n}}function SB(e){try{let t=bB(e.content,e.sport);return{...e,statements:t.statements,errors:t.errors,state:t.success?`parsed`:`error`}}catch(t){return pM(`WorkbenchDocumentModel`,`Block parse error:`,t),e}}var CB={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`},wB=5e3;function TB(e={}){let t=e.listeners??[],n=e.nowProvider??Zl,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=Tn()((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{...CB,setContent:r=>{let s=xB(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(()=>{})},wB))),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(()=>{})},wB))},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=nB({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=xB(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 uM({noteId:a,rawContent:i.content,blocks:i.noteBlocks,expectedSourceRevision:i.sourceRevision},e,tn(),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=xB(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 Vee.process(r),{v7:c}=await st(async()=>{let{v7:e}=await import(`./vendor-BiwvmytJ.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=xB(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 aB(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}=eB(t.runtime);return t.runtime?{outputStatementList:n,analyticsSegments:r,analyticsGroups:i}:{outputStatementList:n}}),clearOutputStatementList:()=>t({outputStatementList:[]}),feedLogOutputs:(e,n)=>{let{segments:r,groups:i}=tB(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,pa.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}),vB.setSubscriptionRegistry(e)},setViewMode:e=>t({viewMode:e}),setRuntime:e=>{for(let e of s)e();if(s=[],e){let r=eB(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(ji(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=MM();if(i?.connected){let t=new pB(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({...CB})}}});return t.length>0&&c.subscribe(e=>{for(let n of t)n(e)}),Object.assign(c,{__nowProvider:n})}var EB=TB();function DB(e){let t=EB;return EB=e,t}function OB(){return EB}var kB=e=>Nt(EB,e),AB=({nowProvider:e,notePersistence:t,provider:n,navigate:r,children:i})=>{let a=(0,W.useMemo)(()=>TB({nowProvider:e,notePersistence:t,provider:n,navigate:r}),[e,t,n,r]);return(0,W.useEffect)(()=>{let e=DB(a);return()=>{DB(e),a.getState().resetStore()}},[a]),W.createElement(W.Fragment,null,i)},jB={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)},MB={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}},NB={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}},PB=class{async getAllEfforts(){let e=LO();return e.isInitialized()||await MO(e),[...e.list()]}},FB=new y_,IB={events:[],notes:[]},LB={events:[],notes:[]};FB.set(`@session`,IB),FB.set(`@today`,LB);function RB(){let e=OB().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=A_(t.map(Cm),{noteId:n?.id??``,resultId:`live:${n?.id??`session`}`,origin:`playground`,workoutTimestamp:n?.targetDate}),IB)}function zB(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 r_(e.date??e.createdAt,r)}async function BB(e,t){let n=r_(e.instant,e.timeZone),r=c_(n,e.timeZone),i=c_(i_(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)zB(t,d.get(t.id)??[],u,e.timeZone)===n&&f.push(t);t===UB&&(LB.events=l,LB.notes=f,RB())}var VB=null,HB=null,UB=0,WB=!1,GB=new Set;function KB(){for(let e of GB)e()}function qB(e,t){HB=t;let n=++UB;return VB=BB(e,n),VB.then(()=>{n===UB&&JB()},()=>{n===UB&&JB()}),VB}function JB(){WB=!0,KB()}function YB(){let e=Zg(),t=r_(e.instant,e.timeZone);return!VB||HB!==t?qB(e,t):VB}function XB(){WB=!1;let e=Zg();return qB(e,r_(e.instant,e.timeZone))}function ZB(){return WB}function QB(e){return GB.add(e),()=>{GB.delete(e)}}var $B=class extends vv{async runQuery(e,t){return await YB(),super.runQuery(e,t)}async runPipeline(e,t){return await YB(),super.runPipeline(e,t)}async runFind(e,t){return await YB(),super.runFind(e,t)}async runRows(e,t){return await YB(),super.runRows(e,t)}async run(e,t){return await YB(),super.run(e,t)}};function eV(){return new $B({eventStore:jB,noteStore:MB,blockStore:NB,effortStore:new PB,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`?RB():FB.getDataset(e)}})}var tV=eV();function nV(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?zL(a):`${t===`segment`?`Segment`:`Event`} ${n+1}`,date:typeof e.date==`string`?e.date:null,subtitle:o.length>0?o.join(` • `):void 0}}function rV(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 iV(e,t,n){e&&e({selected:Math.max(t?.selected??0,n.length),matched:n.length})}function aV(e){return typeof e==`object`&&!!e&&`runFind`in e}var oV=new class e{customService;noteTitleResolver;noteTagsResolver;noteBlockInfo;constructor(e){aV(e)?this.customService=e:(this.customService=e?.service,this.noteTitleResolver=e?.noteTitleResolver,this.noteBlockInfo=e?.noteBlockInfo??!1,this.noteTagsResolver=e?.noteTagsResolver),this.noteTitleResolver||=async e=>{try{let t=await Z.getNote(e);return t?xx(t.title)||Sx(t.rawContent??``):void 0}catch{return}}}get service(){return this.customService??tV}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=wa(e?.links??[],e?.pages??[]);t.placements=n;let i=Ta(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(Sh(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)?ML(r.get(e.ownerNoteId)):HL(e));return iV(t,e.stages,i),i}if(n.target===`block`){let e=await this.service.runFind(n),r=e.blocks.map(RL);return await this.hydrateEntries(r,!0),iV(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=qL(e,{noteTitles:r});return iV(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)=>nV(t,e,n));return iV(t,r.stages,i),i}let e=await this.service.runFind(n),r=e.notes.map(ML);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),iV(t,e.stages,r),this.noteBlockInfo)for(let t=0;t<r.length;t++){let n=r[t],i=e.notes[t];n.excerpt=LL(i.rawContent);try{Ba(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&&La(i.rawContent).find(e=>e.from===a.from&&e.scriptBlock);if(a&&o?.scriptBlock){let e=o.scriptBlock.content,t=xa(e);n.wodBlock={blockId:a.id,blockVersion:a.version,blockContentId:t,content:e},n.blockContentId=t}}return r}if(n.family===`aggregate`){if(!this.service.runQuery)return[];let e=await this.service.runQuery(n.raw),r=rV(e);return t?.({selected:e.stages?.selected??r.length,matched:r.length}),r}return[]}};async function sV(e,t=oV,n){return t.query(e,n)}function cV(e){return e?e.map(e=>e.kind===`wql`?`${e.id}|${e.query}|${e.limit??``}`:`s:${e.id}`).join(`;`):``}async function lV(e){try{let t=(await sV(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 uV(e){let t=cV(e),n=(0,W.useRef)(e);n.current=e;let[r,i]=(0,W.useState)(()=>e&&!e.some(e=>e.kind===`wql`)?e:[]);return(0,W.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`?lV(e):Promise.resolve(e))).then(e=>{t||i(e)}),()=>{t=!0}},[t]),r}function dV(){let[e]=dn(`h`,{shallow:!0}),[t]=dn(`s`,{shallow:!0}),{navState:n}=kP(),r=n.activeL3Id??``;return e||t||r||``}function fV({entry:e,active:t,onActivate:n}){let r=e.onRun;return(0,G.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:K(`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`:K(`hover:bg-muted/60 hover:text-foreground`,e.muted?`text-muted-foreground/70`:`text-muted-foreground`)),children:[e.icon&&(0,G.jsx)(e.icon,{className:`size-4 shrink-0`}),e.timestamp&&(0,G.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums text-muted-foreground/60`,children:e.timestamp}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 line-clamp-2 break-words`,title:e.label,children:e.label}),e.badge&&(0,G.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/50`,children:e.badge}),r&&(0,G.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,G.jsx)(re,{className:`size-3.5`}):e.runIcon===`stop`?(0,G.jsx)(_,{className:`size-3.5`}):e.runIcon===`edit`?(0,G.jsx)(fe,{className:`size-3.5`}):(0,G.jsx)(V,{className:`size-3.5`})})]})}function pV({entries:e,activeId:t,onSection:n}){let r=fn(),{scrollToSection:i}=kP(),a=XF(),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,G.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.map(e=>e.kind===`section`?e.entries.length===0?null:(0,G.jsxs)(`div`,{className:`mt-1 flex flex-col gap-0.5 first:mt-0`,children:[(0,G.jsx)(`div`,{className:`px-2 pb-1 pt-3 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,G.jsx)(pV,{entries:e.entries,activeId:t,onSection:n})]},e.id):e.kind===`wql`?null:e.kind===`widget`?(0,G.jsx)(`div`,{className:`px-1 py-1`,children:e.render()},e.id):(0,G.jsx)(fV,{entry:e,active:t!=null&&e.sectionId===t,onActivate:o},e.id))})}function mV(){let e=fn(),{scrollToSection:t}=kP();return{navigate:(t,n)=>e(t,{replace:n?.replace}),setQueryParam:(e,t)=>{},scrollToSection:t}}function hV(){let e=mV(),t=XF();return n=>{t(),eR(n.action,e)}}function gV(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 _V({items:e}){let{navState:t}=kP(),n=En(),r=hV();return(0,G.jsx)(aI,{children:e.map(e=>{let i=gV(e,t,n);return e.children&&e.children.length>0?(0,G.jsx)(aR,{title:e.label,count:e.children.length,defaultOpen:e.children.some(e=>gV(e,t,n)),collapsible:e.id!==`syntax-group`,children:e.children.map(e=>{let i=gV(e,t,n);return(0,G.jsxs)(sI,{onClick:()=>r(e),current:i,children:[e.icon&&(0,G.jsx)(e.icon,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:e.label})]},e.id)})},e.id):(0,G.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,G.jsxs)(sI,{onClick:e.disabled?void 0:()=>r(e),current:i,disabled:e.disabled,"aria-label":e.disabled?`${e.label} (coming soon)`:void 0,className:K(`flex-1`,e.disabled&&`opacity-60`),children:[e.icon&&(0,G.jsx)(e.icon,{"data-slot":`icon`}),(0,G.jsx)(cI,{children:e.disabled?`+`:e.label})]}),e.onTogglePin&&(0,G.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,G.jsx)(eee,{className:`size-3.5`})})]},e.id)})})}function vV({navSpec:e}){let{tree:t,navState:n,dispatch:r,contextNav:i}=kP(),a=En(),o=uV(e),s=(t??[]).find(e=>e?.id===n.activeL1Id)??null,c=i?.pathname===a.pathname?i:null;return(0,G.jsxs)(nI,{children:[(0,G.jsx)(rI,{children:(0,G.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,G.jsxs)(iI,{children:[(()=>{if(c||!s)return null;if(s.panel){let e=s.panel;return(0,G.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,G.jsx)(e,{item:s,navState:n,dispatch:r})})}return s.children&&s.children.length>0?(0,G.jsx)(`div`,{className:`border-b border-border/40 pb-2 mb-2`,children:(0,G.jsx)(_V,{items:s.children})}):null})(),c?(0,G.jsx)(`div`,{className:`pt-1`,children:(0,G.jsx)(pV,{entries:c.spec})}):o.length>0&&(0,G.jsx)(`div`,{className:`pt-1`,children:(0,G.jsx)(pV,{entries:o})})]})]})}var yV=`0.51.2196`,bV=`https://github.com/bitcobblers/wod-wiki/releases`;function xV(e){return/-pr\.\d+$/.test(e)?bV:`${bV}/tag/v${e}`}function SV({onSearch:e,onCreate:t}){let{tree:n,navState:r,dispatch:i}=kP(),a=fn(),o=En(),s=XF(),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,G.jsxs)(G.Fragment,{children:[(0,G.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,G.jsx)(Se,{size:17}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Wod Wiki home`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Wod Wiki home`})]}),(0,G.jsx)(`nav`,{"aria-label":`Primary`,className:`flex flex-col items-center gap-1.5`,children:l.map(e=>{let t=e.icon,n=gV(e,r,o);return(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{s(),i({type:`SET_ACTIVE_L1`,id:e.id}),eR(e.action,c)},title:e.label,"aria-label":e.label,"aria-current":n?`page`:void 0,className:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(t,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:e.label}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:e.label})]},e.id)})}),(0,G.jsx)(`div`,{className:`flex-1`}),(0,G.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,G.jsx)(ve,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Search`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Search (⌘/)`})]}),(0,G.jsxs)(`a`,{href:oz,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,G.jsx)(sz,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Buy Me a Coffee`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Buy Me a Coffee`})]}),(0,G.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:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(ze,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Profile`}),(0,G.jsx)(`span`,{role:`tooltip`,className:d,children:`Profile`})]}),(0,G.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:K(`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,G.jsx)(`span`,{className:`absolute -left-[14px] top-1/2 h-5 w-[3px] -translate-y-1/2 rounded-r-full bg-primary`}),(0,G.jsx)(Zn,{className:`size-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Settings`}),(0,G.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`,yV,`)`]})]})]})}function CV({activations:e,activeSection:t,variant:n,deps:r,className:i}){return(0,G.jsx)(`nav`,{className:K(`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,G.jsx)(`button`,{onClick:()=>eR(e.action,r),className:K(`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 wV=class e{now;name=`tick`;timestamp;data;static _counter=0;constructor(t,n=Zl){this.now=n;let r=this.now.nowMs();e._counter++,this.timestamp=new Date(r+e._counter),this.data=t}},TV=20,EV=e=>{let[t,n]=(0,W.useState)(`idle`),[r,i]=(0,W.useState)(0),[a,o]=(0,W.useState)(0),[s,c]=(0,W.useState)(null),l=(0,W.useRef)(null),u=(0,W.useRef)(null),d=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),n(`idle`)},[]),f=(0,W.useCallback)(()=>{if(e)try{let t=new wV(void 0,e.nowProvider);e.handle(t),o(e=>e+1)}catch{d(),n(`error`)}},[e,d]);(0,W.useEffect)(()=>{if(e)return e.subscribeToStack(e=>{e.blocks.length===0&&t!==`completed`&&(l.current&&=(clearInterval(l.current),null),n(`completed`))})},[e,t]),(0,W.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]);let p=(0,W.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()??Zl.nowMs();u.current=i-r,r===0&&c(i),l.current=setInterval(f,TV)},[e,t,r,f]),m=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),e&&e.handle({name:`timer:pause`,timestamp:new Date,data:{}}),n(`paused`)},[e]),h=(0,W.useCallback)(()=>{l.current&&=(clearInterval(l.current),null),i(0),o(0),n(`idle`),c(null),u.current=null},[e]),g=(0,W.useCallback)(()=>{!e||t===`running`||(n(`paused`),f())},[e,t,f]);return(0,W.useEffect)(()=>{if(t!==`running`||!u.current)return;let n=setInterval(()=>{i((e?.nowProvider?.nowMs()??Zl.nowMs())-u.current)},100);return()=>clearInterval(n)},[t,e?.nowProvider]),(0,W.useEffect)(()=>()=>{l.current&&=(clearInterval(l.current),null)},[]),(0,W.useEffect)(()=>{h()},[e,h]),(0,W.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])},DV=(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 OV(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,W.useState)(r);return(0,W.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 kV(e){return OV(e,`round`)}function AV(e){return OV(e,`display`)}function jV(e){let t=kV(e),n=AV(e);return(0,W.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 MV=(0,W.createContext)(void 0),NV=({runtime:e,children:t})=>(0,G.jsx)(MV.Provider,{value:e,children:t});function PV(){let e=(0,W.useContext)(MV);if(!e)throw Error(`useScriptRuntime must be used within ScriptRuntimeProvider`);return e}function FV(e){let t=PV(),n=e===void 0?t:e,[r,i]=(0,W.useState)(()=>n?.getOutputStatements?.()??[]);return(0,W.useEffect)(()=>{if(!n){i([]);return}return i(n.getOutputStatements()),n.subscribeToOutput?.(()=>{i(n.getOutputStatements())})},[n]),(0,W.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 IV(e){let t=PV(),n=e===void 0?t:e,[r,i]=(0,W.useState)(()=>n?.getLiveAnalytics?.()??[]);return(0,W.useEffect)(()=>{if(!n){i([]);return}return i(n.getLiveAnalytics?.()??[]),n.subscribeToOutput?.(()=>{i(n.getLiveAnalytics?.()??[])})},[n]),r}function LV(){let e=PV(),[t,n]=(0,W.useState)({type:`initial`,blocks:e.stack.blocks,depth:e.stack.count,clockTime:e.clock.currentDate});return(0,W.useEffect)(()=>e.subscribeToStack(e=>{n(e)}),[e]),t}function RV(){return LV().blocks}function zV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.useMemo)(()=>{for(let t of e){let e=t.getMemoryByTag(`metric:next`);if(e.length===0)continue;let n=pa.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 BV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 VV(){let e=BV();return(0,W.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 HV(){let e=BV(),t=VV();return(0,W.useMemo)(()=>t?e.filter(e=>e.block!==t.block):[],[e,t])}function UV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 WV(){let e=RV(),[t,n]=(0,W.useState)(0);return(0,W.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,W.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 GV(e){let t=PV(),n=(0,W.useMemo)(()=>t.stack.blocks.find(t=>t.key.toString()===e),[t,e]),[r,i]=(0,W.useState)(()=>n?.getMemoryByTag(`time`)[0]?.metrics[0]?.value);(0,W.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,W.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,W.useMemo)(()=>r?.spans??[],[r]),o=a.length>0&&a[a.length-1].ended===void 0,[s,c]=(0,W.useState)(zu()),l=(0,W.useMemo)(()=>a.length===0?0:DV(a,s),[a,s]);return(0,W.useEffect)(()=>{if(!o)return;let e,t=()=>{c(zu()),e=requestAnimationFrame(t)};return t(),()=>cancelAnimationFrame(e)},[o]),{elapsed:l,isRunning:o,timeSpans:a}}var KV=(0,W.createContext)(void 0),qV=(0,W.createContext)(null),JV={getState:()=>OB().getState(),setState:(e,t)=>{let n=OB();typeof e==`function`?n.setState(e(n.getState()),t):n.setState(e,t)},subscribe:e=>OB().subscribe(e)},YV=({factory:e,children:t})=>{let[n,r]=(0,W.useState)(null),[i,a]=(0,W.useState)(null),[o,s]=(0,W.useState)(!1),[c,l]=(0,W.useState)(null),u=(0,W.useRef)(e);u.current=e;let d=(0,W.useRef)(null),f=(0,W.useRef)(null),p=(0,W.useRef)(!1),m=(0,W.useCallback)(()=>{f.current&&=(f.current.dispose(),null),a(null),JV.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,W.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 Sm(i);e.add(new xm({id:`local`})),f.current=e,a(e),JV.getState().setSubscriptionManager(e)}else f.current=null,a(null),JV.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,W.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,G.jsx)(KV.Provider,{value:g,children:(0,G.jsx)(qV.Provider,{value:i,children:t})})};function XV({factory:e,children:t}){return(0,G.jsx)(YV,{factory:e,children:t})}var ZV=`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`,QV=`flex flex-col flex-1 min-w-0 xl:max-w-[984px] 2xl:max-w-none min-h-screen lg:rounded-[2.5rem]`;function $V({id:e,title:t,subtitle:n,titleAccessory:r,actions:i,queryBar:a,subheader:o,titleTestId:s,className:c}){return(0,G.jsxs)(`div`,{id:e,"data-page-sticky-boundary":`true`,className:K(`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,G.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,G.jsxs)(`div`,{className:`flex items-center gap-2.5 sm:gap-3 min-w-0`,children:[(0,G.jsx)(`div`,{className:`h-5 w-1.5 shrink-0 rounded-full bg-primary`}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`h1`,{"data-testid":s,className:`text-base sm:text-lg font-black tracking-tight text-foreground leading-none truncate`,children:t}),n&&(0,G.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground truncate`,children:n})]}),r]})]}),a&&(0,G.jsx)(`div`,{className:`min-w-0 flex-1`,children:a}),i&&(0,G.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0 ml-auto`,children:i})]}),o&&(0,G.jsx)(`div`,{className:`bg-background/40`,children:o})]})}function eH({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,W.useRef)(``),u=(0,W.useRef)(i),d=(0,W.useRef)(a),f=(0,W.useRef)(null),p=(0,W.useRef)(1);(0,W.useEffect)(()=>{u.current=i},[i]),(0,W.useEffect)(()=>{d.current=a},[a]);let m=e.filter(Boolean).join(`\0`),h=r.join(`,`),g=(0,W.useMemo)(()=>m?m.split(`\0`):[],[m]),_=(0,W.useMemo)(()=>h.split(`,`).map(Number),[h]),v=(0,W.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null)},[]);(0,W.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 tH({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]=dn(`s`,{defaultValue:o??a[0]?.id??``,shallow:!0,history:`replace`}),[f,p]=(0,W.useState)(c?.[0]?.id??``);if(eH({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}),eH({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,G.jsxs)(`div`,{className:K(`flex flex-col min-h-screen bg-background`,l),children:[s,(0,G.jsx)(CV,{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,G.jsx)(`div`,{className:`flex-1`,children:c.map(e=>{let t=(0,G.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,G.jsx)(XV,{factory:e.runtimeFactory,children:t},e.id):t})})]})}return(0,G.jsx)(`div`,{className:K(`relative flex w-full min-h-screen justify-start items-start`,l),children:(0,G.jsxs)(`div`,{className:K(QV,ZV),children:[(0,G.jsx)($V,{title:e,titleAccessory:t,actions:n,subheader:r}),(0,G.jsx)(`div`,{className:`flex-1`,children:i})]})})}var nH=`[data-page-sticky-boundary="true"]`,rH=0;function iH(e,t=rH){if(typeof document>`u`)return e;let n=Array.from(document.querySelectorAll(nH)).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 aH(e,t=rH){let[n,r]=(0,W.useState)(e);return(0,W.useEffect)(()=>{let n=0,i=()=>r(iH(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(nH).forEach(e=>o?.observe(e));let s=typeof MutationObserver>`u`?void 0:new MutationObserver(()=>{document.querySelectorAll(nH).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 oH({top:e,label:t,icon:n,badge:r,meta:i,testId:a,className:o}){return(0,G.jsxs)(`div`,{"data-testid":a,className:K(`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,G.jsx)(`span`,{className:`min-w-0 truncate text-xs font-bold text-foreground`,children:t}),r,i&&(0,G.jsx)(`span`,{className:`ml-auto shrink-0 pl-2 font-mono text-[10px] text-muted-foreground`,children:i})]})}var sH=(0,W.createContext)(null),cH=(0,W.createContext)(null);function lH({children:e}){let[t,n]=(0,W.useState)(null);return(0,G.jsx)(cH.Provider,{value:n,children:(0,G.jsx)(sH.Provider,{value:t,children:e})})}function uH({className:e}){let t=(0,W.useContext)(cH);return(0,G.jsx)(`div`,{ref:t,className:e,"data-testid":`mobile-query-slot`})}function dH(){return(0,W.useContext)(sH)}function fH({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,G.jsxs)(`div`,{className:K(`relative flex w-full min-h-screen justify-start items-start`,d),children:[(0,G.jsxs)(`div`,{className:K(QV,ZV),children:[(0,G.jsx)($V,{title:t,subtitle:n,titleTestId:r,actions:i}),(0,G.jsx)(`main`,{className:`flex-1 min-w-0 max-w-full`,children:e})]}),s&&a&&(0,G.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,G.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,G.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,G.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,G.jsx)(`div`,{className:`flex-1 min-h-0`,children:a})]})}),c&&o&&(0,G.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/95 backdrop-blur-sm`,children:(0,G.jsxs)(`div`,{className:`w-full h-full flex flex-col`,children:[(0,G.jsx)(`div`,{className:`flex justify-end p-4`,children:(0,G.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,G.jsx)(`div`,{className:`flex-1 min-h-0`,children:o})]})})]})}function pH(e){return e.map(e=>{if(e.panel){let t=e.panel;return{kind:`widget`,id:e.id,render:()=>(0,W.createElement)(`div`,{className:`flex flex-col gap-1`},(0,W.createElement)(`span`,{className:`px-1 text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`},e.label),(0,W.createElement)(t,{currentPath:``,location:null}))}}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 mH=W.createContext(null);function hH(){let e=W.useContext(mH);if(!e)throw Error(`DropdownMenu components must be used inside a DropdownMenu`);return e}function gH(){let e=W.useContext(mH);return W.useCallback(()=>{e?.setIsOpen(!1)},[e])}var _H=({children:e,open:t,onOpenChange:n})=>{let r=W.useContext(mH),i=W.useId(),a=r?`${r.portalChain}/${i}`:i,[o,s]=W.useState(t??!1),c=W.useRef(null),[l,u]=W.useState(-1),d=W.useRef(new Map),[,f]=W.useReducer(e=>e+1,0);W.useEffect(()=>{t!==void 0&&s(t)},[t]);let p=W.useCallback(e=>{s(e),u(-1),n?.(e)},[n]),m=W.useCallback((e,t)=>{d.current.set(e,t),f()},[]),h=W.useCallback(e=>{d.current.delete(e),f()},[]),g=W.useCallback(e=>Array.from(d.current.keys()).indexOf(e),[]),_=d.current.size,v=W.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,G.jsx)(mH.Provider,{value:v,children:(0,G.jsx)(`div`,{ref:c,className:`relative inline-block`,children:e})})},vH=W.forwardRef(({className:e,children:t,asChild:n,...r},i)=>{let{isOpen:a,setIsOpen:o}=hH(),s=e=>{e.stopPropagation(),o(!a)};return n&&W.isValidElement(t)?W.cloneElement(t,{...r,onClick:s}):(0,G.jsx)(`button`,{ref:i,className:e,onClick:s,...r,children:t})});vH.displayName=`DropdownMenuTrigger`;var yH=W.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}=hH(),p=W.useRef(null),m=a||p,[h,g]=W.useState({top:0,bottom:0,left:0,width:0}),_=r===`bottom`,[v,y]=W.useState(!1);W.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]),W.useLayoutEffect(()=>{if(!o||!_||!m.current)return;let e=m.current.getBoundingClientRect();y(h.top+e.height>window.innerHeight)},[o,_,h.top,m]),W.useEffect(()=>{if(!o||u===0)return;let e=setTimeout(()=>{l(0)},0);return()=>clearTimeout(e)},[o,u,l]),W.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%)`),JC.createPortal((0,G.jsx)(`div`,{ref:m,role:`menu`,"data-dropdown-chain":f,className:K(`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)});yH.displayName=`DropdownMenuContent`;var bH=W.forwardRef(({className:e,disabled:t,inset:n,onClick:r,onKeyDown:i,...a},o)=>{let{setIsOpen:s,registerItem:c,unregisterItem:l,getItemIndex:u,activeIndex:d}=hH(),f=W.useId(),p=W.useRef(null),m=W.useCallback(e=>{p.current=e,typeof o==`function`?o(e):o&&(o.current=e)},[o]);W.useEffect(()=>(c(f,p),()=>l(f)),[f,c,l]);let h=u(f)===d;return W.useEffect(()=>{h&&p.current?.focus()},[h]),(0,G.jsx)(`div`,{ref:m,role:`menuitem`,tabIndex:t?-1:h?0:-1,"aria-disabled":t,"data-active":h?`true`:void 0,className:K(`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})});bH.displayName=`DropdownMenuItem`;var xH=W.forwardRef(({className:e,inset:t,...n},r)=>(0,G.jsx)(`div`,{ref:r,className:K(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));xH.displayName=`DropdownMenuLabel`;var SH=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:K(`-mx-1 my-1 h-px bg-muted`,e),...t}));SH.displayName=`DropdownMenuSeparator`;function CH({className:e,children:t,...n}){return(0,G.jsx)(`div`,{className:K(`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,e),...n,children:t})}var wH=[{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`}],TH=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`];function EH(e,t){return new Date(e,t+1,0).getDate()}function DH(e,t){let n=new Date(e,t,1).getDay();return n===0?6:n-1}function OH(e,t){let n=X(e);if(n.error)return e;if(!t||t===`all`)return hg({...n,window:void 0});let r=X(`:note ${t}`);return r.error||r.family!==`find`||!r.window?e:hg({...n,window:r.window})}function kH(e){let t=X(e);return t.error||t.family===`pipeline`?null:`window`in t?t.window??null:null}function AH({query:e,onQueryChange:t,highlightDates:n=new Set,className:r}){let i=(0,W.useMemo)(()=>kH(e),[e]),[a,o]=(0,W.useState)(null),[s,c]=(0,W.useState)(()=>new Date),l=s.getFullYear(),u=s.getMonth(),d=(0,W.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,W.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:LF(t),end:LF(e)}},[i]),p=(0,W.useMemo)(()=>{let e=EH(l,u),t=DH(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(OH(e,`from ${n} to ${n}`));else{let[r,i]=a<=n?[a,n]:[n,a];o(null),t(OH(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=LF(new Date);return(0,G.jsxs)(`div`,{className:K(`relative inline-flex items-center`,r),children:[(0,G.jsxs)(_H,{children:[(0,G.jsx)(vH,{asChild:!0,children:(0,G.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,G.jsx)(dr,{className:`size-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,G.jsx)(`span`,{className:`font-mono text-xs`,children:d}),(0,G.jsx)(Gt,{className:`size-3 text-muted-foreground`,"aria-hidden":`true`})]})}),(0,G.jsxs)(yH,{align:`end`,className:`w-72 p-3`,children:[(0,G.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1 border-b border-border/60 pb-2`,children:wH.map(n=>{let r=n.value===`all`?!i:i?.kind===`relative`&&`last ${i.size}${i.unit}`===n.value;return(0,G.jsx)(`button`,{type:`button`,"data-testid":`wql-window-preset-${n.value}`,onClick:()=>{o(null),t(OH(e,n.value))},className:K(`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,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.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,G.jsx)(mn,{className:`size-4`})}),(0,G.jsx)(`span`,{className:`text-xs font-semibold text-foreground`,children:_}),(0,G.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,G.jsx)(On,{className:`size-4`})})]}),(0,G.jsx)(`div`,{className:`mb-1 grid grid-cols-7 gap-1`,children:TH.map(e=>(0,G.jsx)(`div`,{className:`text-center text-[10px] font-medium text-muted-foreground`,children:e},e))}),(0,G.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,"data-testid":`wql-calendar-grid`,children:p.map((e,t)=>{if(e===null)return(0,G.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,G.jsxs)(`button`,{type:`button`,"data-testid":`wql-calendar-day-${r}`,onClick:()=>m(r),className:K(`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,G.jsx)(`span`,{children:e}),d&&!o&&!s&&(0,G.jsx)(`span`,{className:`absolute bottom-0.5 size-1 rounded-full bg-primary`})]},r)})}),a&&(0,G.jsxs)(`div`,{className:`mt-2 text-center text-[10px] text-muted-foreground`,children:[`Select second date to complete range (starting from `,a,`)`]})]})]}),i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`wql-window-picker-clear`,onClick:()=>{o(null),t(OH(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,G.jsx)(xr,{className:`size-3.5`})})]})}function jH({onOpen:e}){let t=gH();return(0,G.jsxs)(q,{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,G.jsx)(Vn,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,G.jsx)(`span`,{className:`truncate`,children:`Query settings`})]})}function MH(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 NH=[{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??``)}],PH={note:NH,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?``:BL(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?``:BL(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?``:BL(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 FH(e){return PH[e]??NH}function IH(e){return FH(e).filter(e=>e.defaultVisible).map(e=>e.id)}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}=ro(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,W.useState)(()=>typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: ${LH}px)`).matches);return(0,W.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=[{id:`cards`,label:`Cards`,icon:ye},{id:`rows`,label:`Rows`,icon:at},{id:`feed`,label:`Feed`,icon:Wt},{id:`agenda`,label:`Agenda`,icon:h},{id:`planner`,label:`Planner`,icon:vn}];function WH({streamControls:e}){let t=e.availableLayouts;return(0,G.jsxs)(`div`,{className:`flex flex-col gap-3`,"data-testid":`l3-stream-controls`,children:[e.onOpenQuerySettings&&(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`This page`}),(0,G.jsx)(jH,{onOpen:e.onOpenQuerySettings})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Date window`}),(0,G.jsx)(AH,{query:e.query,onQueryChange:e.onQueryChange,className:`w-full justify-between`})]}),e.availableGroupDims.length>0&&(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Group by`}),(0,G.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,G.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,G.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleGroupDim(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,G.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Layout`}),(0,G.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,"data-testid":`l3-layout-options`,children:UH.filter(e=>!t||t.includes(e.id)).map(t=>{let n=t.icon,r=e.settings.layout===t.id;return(0,G.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,G.jsx)(n,{"aria-hidden":!0,className:`size-3`}),t.label]},t.id)})})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:`Fields`}),(0,G.jsx)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`l3-field-options`,children:FH(e.level).map(t=>{let n=e.settings.visibleFields.includes(t.id);return(0,G.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,G.jsx)(`input`,{type:`checkbox`,checked:n,onChange:()=>e.onToggleField(t.id),className:`size-3.5 rounded border-border accent-primary cursor-pointer`}),(0,G.jsx)(`span`,{children:t.label})]},t.id)})})]}),(0,G.jsx)(FR,{})]})}function GH(){let e=HH(),{streamControls:t}=kP();return!e||!t?null:(0,G.jsx)(WH,{streamControls:t})}function KH({spec:e,pageAction:t}){let{l3Items:n,streamControls:r}=kP(),i=uV(e),a=(0,W.useMemo)(()=>pH(n),[n]),o=dV();return i.length===0&&a.length===0&&!r&&!t?null:(0,G.jsxs)(`div`,{className:`flex flex-col px-3 py-4 gap-4`,children:[r&&(0,G.jsx)(`div`,{className:`pb-3 border-b border-border/50`,children:(0,G.jsx)(WH,{streamControls:r})}),i.length>0&&(0,G.jsx)(pV,{entries:i,activeId:o}),a.length>0&&(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.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,G.jsx)(pV,{entries:a,activeId:o})]}),t&&(0,G.jsx)(`div`,{className:`pt-2 border-t border-border/50`,children:t})]})}var qH=`wodwiki:fabAlignment`,JH=[{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 YH(){try{return XH(localStorage.getItem(qH))}catch{return}}function XH(e){return e===`right`||e===`left`?e:void 0}var ZH=typeof window>`u`?void 0:YH();typeof window<`u`&&window.addEventListener(`storage`,e=>{e.key===qH&&(ZH=XH(e.newValue))});function QH(e){ZH=e;try{e===`right`?localStorage.removeItem(qH):localStorage.setItem(qH,e)}catch{}window.dispatchEvent(new StorageEvent(`storage`,{key:qH,newValue:e}))}function $H(){let[e,t]=(0,W.useState)(()=>ZH??`right`);return(0,W.useEffect)(()=>{let e=e=>{e.key===qH&&t(XH(e.newValue)??`right`)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),[e,QH]}function eU({onOpen:e}){return(0,G.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search`,title:`Search`,"data-testid":`search-fab`,className:K(`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,G.jsx)(ve,{className:`size-6`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Search`})]})}var tU=(0,W.createContext)(null),nU=(0,W.createContext)(!1),rU=(0,W.createContext)(null);function iU(){return(0,W.useContext)(tU)!==null}function aU({primary:e,navbar:t,children:n,label:r,fallback:i=!1}){let a=(0,W.useContext)(tU),o=(0,W.useContext)(nU),s=HH(),c=(0,W.useId)(),l=a!==null&&!o&&s&&!i,u=a!==null&&i,d=n!=null&&n!==!1,f=(0,W.useMemo)(()=>(0,G.jsx)(nU.Provider,{value:!0,children:n}),[n]),p=l||u,m=(0,W.useRef)(null);return m.current={id:c,primary:e,navbar:t,children:f,hasContent:d,label:r??`Page options`,fallback:i},(0,W.useEffect)(()=>{if(p)return a.register(m.current),()=>a.unregister(c)},[p,a,c]),(0,W.useEffect)(()=>{p&&a.register(m.current)},[p,a,e,t,f,d,r,i]),i||a&&s&&!o?null:(0,G.jsx)(nU.Provider,{value:!0,children:(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t,e,n]})})}function oU({onSearch:e,children:t}){let[n,r]=(0,W.useState)([]),i=(0,W.useCallback)(e=>r(t=>{let n=t.findIndex(t=>t.id===e.id);if(n===-1)return[...t,e];let r=t[n];if(r.primary===e.primary&&r.navbar===e.navbar&&r.children===e.children&&r.hasContent===e.hasContent&&r.label===e.label&&r.fallback===e.fallback)return t;let i=[...t];return i[n]=e,i}),[]),a=(0,W.useCallback)(e=>r(t=>t.filter(t=>t.id!==e)),[]),o=(0,W.useMemo)(()=>({register:i,unregister:a}),[i,a]),s=(0,W.useMemo)(()=>{for(let e=n.length-1;e>=0;--e)if(!n[e].fallback)return n[e].navbar??null;return null},[n]);return(0,G.jsx)(tU.Provider,{value:o,children:(0,G.jsxs)(rU.Provider,{value:s,children:[t,(0,G.jsx)(cU,{registrations:n,onSearch:e})]})})}function sU(){let e=(0,W.useContext)(rU);return e?(0,G.jsx)(G.Fragment,{children:e}):null}function cU({registrations:e,onSearch:t}){let n=HH(),[r]=$H(),i=XC(),[a,o]=(0,W.useState)(!1),s=(0,W.useCallback)(()=>o(!1),[]),c=(0,W.useRef)(null),l=(0,W.useRef)(null),u=(0,W.useRef)(null),d=(0,W.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(!e[t].fallback)return e[t]},[e]),f=(0,W.useMemo)(()=>{for(let t=e.length-1;t>=0;--t)if(e[t].fallback)return e[t]},[e]);(0,W.useLayoutEffect)(()=>{a&&c.current?.focus({preventScroll:!0})},[a]);let p=!!(d?.hasContent||f?.hasContent);return!n||!t&&!d&&!f?null:(0,G.jsxs)(`div`,{"data-testid":`actions-dock`,className:K(`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,G.jsxs)(`div`,{className:`relative z-40 flex flex-col items-center gap-2`,children:[t&&(0,G.jsx)(eU,{onOpen:()=>{o(!1),t()}}),d?.primary&&(0,G.jsx)(`div`,{className:`[&_button]:min-h-11 [&_button]:min-w-11`,children:d.primary})]}),a&&p&&(0,G.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-hidden":`true`,className:`fixed inset-0 z-30 cursor-default`,onClick:()=>o(!1)}),(0,G.jsx)(`div`,{ref:c,role:`dialog`,"aria-label":d?.label??f?.label??`Page options`,tabIndex:-1,hidden:!a||!p,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),o(!1))},className:K(a&&p?`flex`:`hidden`,`relative z-40 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,G.jsxs)(YF,{close:s,children:[(0,G.jsx)(`div`,{ref:l,className:`contents`,children:d?.children}),d?.children&&f?.children&&(0,G.jsx)(`div`,{className:`my-1 border-t border-border/60`,"aria-hidden":`true`}),(0,G.jsx)(`div`,{ref:u,className:`contents`,children:f?.children})]})}),p&&(0,G.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":d?.label??f?.label??`Page options`,title:d?.label??f?.label??`Page options`,"aria-expanded":a,"data-testid":`actions-overflow`,className:K(`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,G.jsx)(ar,{className:`size-6`}):(0,G.jsx)(I,{className:`size-6`}),(0,G.jsx)(`span`,{className:`sr-only`,children:d?.label??f?.label??`Page options`})]})]})}function lU(){return(0,G.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,G.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 uU(){return(0,G.jsx)(`svg`,{"data-slot":`icon`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`[&>[data-slot=icon]]:size-5`,children:(0,G.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 dU(){let{tree:e,navState:t,contextNav:n}=kP(),r=En(),i=XF();return!e.find(e=>e.id===t.activeL1Id)?.applyFooter||n?.pathname===r.pathname?null:(0,G.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,G.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 fU({open:e,close:t,onSearch:n,children:r}){return(0,G.jsxs)(it,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,G.jsx)(et,{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,G.jsx)(i,{transition:!0,className:`fixed inset-y-0 left-0 w-full transition duration-300 ease-out data-closed:-translate-x-full`,children:(0,G.jsx)(YF,{close:t,children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 bg-card`,children:[(0,G.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,G.jsx)(SV,{onSearch:()=>{t(),n?.()}})}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,G.jsx)(`div`,{className:`flex items-center px-4 pt-3`,children:(0,G.jsxs)(Fn,{as:Yz,"aria-label":`Close navigation`,title:`Close navigation`,children:[(0,G.jsx)(uU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Close navigation`})]})}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:r}),(0,G.jsx)(dU,{})]})]})})})]})}function pU({open:e,close:t,children:n}){return(0,G.jsxs)(it,{open:e,onClose:t,className:`relative z-50 lg:hidden`,children:[(0,G.jsx)(et,{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,G.jsx)(i,{transition:!0,className:`fixed inset-y-0 right-0 w-full transition duration-300 ease-out data-closed:translate-x-full`,children:(0,G.jsx)(YF,{close:t,children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card`,children:[(0,G.jsx)(`div`,{className:`flex items-center justify-end px-4 pt-3`,children:(0,G.jsxs)(Fn,{as:Yz,"aria-label":`Close page options`,title:`Close page options`,children:[(0,G.jsx)(uU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Close page options`})]})}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto`,children:n}),(0,G.jsx)(`div`,{className:`shrink-0 border-t border-border/50 bg-card p-3`,children:(0,G.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 mU({navbar:e,sidebar:t,onSearch:n,secondary:r,pageAction:i,hideDesktopSidebar:a,children:o}){let[s,c]=(0,W.useState)(!1),[l,u]=(0,W.useState)(!1),{streamControls:d,l3Items:f}=kP(),p=!!(r&&r.length>0||f&&f.length>0||d||i),m=(0,W.useMemo)(()=>{let e=X(d?.query??``);return!e.error&&Sh(e)&&e.filters.length>0},[d?.query]);return(0,W.useEffect)(()=>{if(!s&&!l)return;let e=()=>{c(!1),u(!1)};return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[s,l]),(0,G.jsx)(lH,{children:(0,G.jsx)(oU,{onSearch:n,children:(0,G.jsx)(`div`,{className:`relative isolate flex min-h-svh w-full bg-background max-lg:flex-col lg:flex-row`,children:(0,G.jsxs)(`div`,{className:`flex flex-1 w-full max-lg:flex-col lg:flex-row`,children:[(0,G.jsxs)(`nav`,{"aria-label":`Main`,className:`hidden lg:flex`,children:[(0,G.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,G.jsx)(SV,{onSearch:n??(()=>{})})}),(0,G.jsx)(`div`,{className:K(`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`,a&&`lg:hidden`),children:t})]}),(0,G.jsx)(fU,{open:s,close:()=>c(!1),onSearch:n,children:t}),(0,G.jsxs)(`div`,{className:`flex flex-1 flex-col min-w-0 xl:max-w-[984px] 2xl:max-w-none`,children:[(0,G.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,G.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,G.jsxs)(Yz,{onClick:()=>c(!0),"aria-label":`Open navigation`,title:`Open navigation`,children:[(0,G.jsx)(lU,{}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Open navigation`})]})}),(0,G.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),p&&(0,G.jsx)(`div`,{className:`py-2.5 shrink-0`,children:(0,G.jsxs)(Yz,{onClick:()=>u(!0),"aria-label":`Open page options`,title:`Open page options`,children:[(0,G.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,G.jsx)(Vn,{className:`size-5`}),m&&(0,G.jsx)(`span`,{"data-testid":`drawer-filters-active`,className:`absolute -top-1 -right-1 size-2 rounded-full bg-amber-500`,"aria-hidden":`true`})]}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Open page options`})]})})]}),(0,G.jsxs)(`main`,{className:`flex flex-1 flex-col lg:min-w-0`,children:[(0,G.jsx)(`div`,{className:`grow w-full max-lg:pb-48 lg:overflow-visible`,children:o}),(0,G.jsx)(hU,{})]})]}),(0,G.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,G.jsx)(KH,{spec:r,pageAction:i})}),(0,G.jsx)(pU,{open:l,close:()=>u(!1),children:(0,G.jsx)(KH,{spec:r,pageAction:i})})]})})})})}function hU(){let e=(0,W.useRef)(null),[t,n]=(0,W.useState)(0);return(0,W.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,W.useEffect)(()=>(document.documentElement.style.setProperty(`--thumb-dock-lift`,`${t}px`),()=>document.documentElement.style.setProperty(`--thumb-dock-lift`,`0px`)),[t]),(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:K(`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,G.jsx)(`div`,{ref:e,className:`w-full min-w-0`,children:(0,G.jsx)(uH,{className:`flex w-full min-w-0`})})}),(0,G.jsx)(`div`,{className:`lg:hidden`,"aria-hidden":`true`,style:{height:t}})]})}function gU(e){let t=e.indexOf(`markdown`);return t!==-1&&e.length>t+2?e[t+2]:`General`}function _U(e){return String(so(ro(e).meta,`search`)??``).toLowerCase()===`hidden`}function vU(e){let t=so(ro(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 yU(e){return Object.entries(e).map(([e,t])=>{let n=e.split(`/`),r=n[n.length-1].replace(`.md`,``),i=t,a=so(ro(i).meta,`title`);return{id:e,name:r,displayName:typeof a==`string`&&a.trim()?a.trim():HO(r),category:gU(n),content:i,date:vU(i),searchHidden:_U(i)}})}function bU(){let e=dk();return(0,W.useMemo)(()=>e?yU(e):[],[e])}var xU={};function SU(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 CU(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=_z(e).split(`
|
|
110
110
|
`),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(LF(new Date(n)))}),r.forEach(t=>{let n=SU(t);n&&Number.isFinite(new Date(n).getTime())&&e.add(LF(new Date(n)))}),Array.from(e).sort().reverse().slice(0,10).map(e=>({id:e,label:Hee(new Date(e+`T00:00:00`)),type:`heading`}))}return[]}var wU=/^[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 TU(e){return wU.test(e)}function EU(e){try{return decodeURIComponent(e)}catch{return null}}function DU(e){if(!BF(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 OU(e){let t=(e.length>1?e.replace(/\/+$/,``):e).match(/^\/day\/([^/]+)$/);if(!t)return{kind:`invalid`};let n=EU(t[1]);return n!=null&&DU(n)?{kind:`date`,date:n}:{kind:`invalid`}}var kU=`# My Workout Notebook
|
|
111
111
|
|
|
112
112
|
Welcome to the **WOD.WIKI** playground.
|
|
@@ -169,7 +169,7 @@ Timer 12:00
|
|
|
169
169
|
border border-border/80 shadow-xl rounded-lg overflow-hidden pointer-events-auto`,style:{top:k,maxHeight:200},children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 bg-muted/40 border-b border-border/50 shrink-0`,children:[(0,G.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,G.jsxs)(`div`,{className:`flex items-center min-w-0 gap-2`,children:[(0,G.jsxs)(`span`,{className:`text-xs text-muted-foreground/60`,children:[`L`,D]}),(0,G.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,G.jsx)(`span`,{className:`text-xs font-mono text-foreground/90 truncate font-medium`,title:E,children:E||(0,G.jsx)(`span`,{className:`italic text-muted-foreground`,children:`—`})})]})]}),(0,G.jsx)(`div`,{className:`px-3 py-2.5 min-h-0 overflow-auto`,children:w.length>0?(0,G.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:w.map((e,t)=>(0,G.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,G.jsx)(`span`,{className:`text-base leading-none`,children:e.icon}),(0,G.jsx)(`span`,{className:`font-mono tracking-tight`,children:e.value})]},t))}):(0,G.jsx)(`span`,{className:`text-xs italic text-muted-foreground`,children:`No metrics on this line`})}),T&&(0,G.jsx)(hX,{summary:T}),(0,G.jsx)(`div`,{className:`border-t border-border/40 shrink-0`,children:(0,G.jsx)(yX,{commands:f,section:h,view:n})})]})]})},xX=({sectionId:e,widgetName:t,view:n,registry:r,docVersion:i})=>{let{rawContent:a,config:o}=(0,W.useMemo)(()=>{let t=n.state.field(wT).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,G.jsx)(`div`,{className:`h-full w-full overflow-hidden rounded-l-md border-l border-border bg-background shadow-sm`,children:(0,G.jsx)(s,{config:o,rawContent:a,sectionId:e})}):(0,G.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,G.jsxs)(`span`,{className:`font-mono`,children:[`widget:`,t]}),(0,G.jsx)(`span`,{className:`ml-2 opacity-60`,children:`— not registered`})]})};function SX(e,t,n,r,i){switch(t.type){case`fixed-field`:return CX(e,t);case`metric-type`:return wX(e,t);case`derived`:return TX(e,t,n,r,i);case`fallback`:return EX(e,t,n,r,i);default:return}}function CX(e,t){return e[t.field]}function wX(e,t){return e.cells.get(t.metricType)}function TX(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=SX(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 DX(e,t,n,r,i)}function DX(e,t,n,r,i){if(!(!t.sources||t.sources.length===0))switch(t.semantics){case`first-present`:return OX(e,t.sources,n,r,i);case`all-present-joined`:return kX(e,t.sources,t.joinString,n,r,i);case`all-present-combined`:return AX(e,t.sources,n,r,i);default:return}}function OX(e,t,n,r,i){for(let a of t){let t=SX(e,a,n,r,i);if(t!=null)return t}}function kX(e,t,n,r,i,a){let o=[];for(let n of t){let t=SX(e,n,r,i,a);if(t==null)return;o.push(t)}let s=n??` `;return o.map(e=>MX(e)).join(s)}function AX(e,t,n,r,i){let a=[];for(let o of t){let t=SX(e,o,n,r,i);if(t==null)return;a.push(t)}return a}function jX(e){if(e==null)return``;let t=Array.isArray(e)?e:e instanceof pa?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 MX(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=jX(e.metrics);if(t.length>0)return t}return String(e)}function NX(e,t,n,r){if(!t.sort)return``;let i=SX(e,t.source,n,r);return(t.sort.type===`custom`?typeof i==`number`||typeof i==`string`?i:String(i??``):t.sort.extractor(i))??``}function PX(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 FX(e,t,n,r){if(!t.graph)return;let i=SX(e,t.source,n,r);return t.graph.extractor(i)}function IX(e,t,n,r){if(!t.filter)return``;let i=SX(e,t.source,n,r);return t.filter.extractor(i)??``}function LX(e,t,n,r,i){if(!n||n.trim().length===0||!t.filter)return!0;let a=IX(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 RX=({metric:e})=>{let t=e.origin===`hinted`||e.image===`?`,n=(0,W.useMemo)(()=>tK(Qo.present(e,`review-grid-cell`)),[e]);return(0,G.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,G.jsx)(`span`,{className:`mr-0.5 text-[10px]`,children:`◉`}),n.label,n.userEntered&&!t&&(0,G.jsx)(`span`,{className:`text-[10px] opacity-70 ml-0.5`,children:`👤`})]})},zX=({columnDef:e,row:t,allRows:n,rowIndex:r,indent:i=0,onDoubleClick:a,className:o,style:s,definitionMap:c})=>{let l=(0,W.useRef)(null),u=(0,W.useMemo)(()=>{if(!(!n||r===void 0))return{allRows:n,rowIndex:r,columnDef:e,dependencies:new Map}},[n,r,e]),d=(0,W.useMemo)(()=>SX(t,e.source,u,c),[t,e.source,u,c]),f=e.source.type===`metric-type`,p=(0,W.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,W.useMemo)(()=>BX(d,e.format,i,t),[d,e.format,i,t]);return(0,G.jsx)(`td`,{ref:l,className:K(`py-1 px-2`,f&&`cursor-cell`,o),style:s,onDoubleClick:p,children:m})};function BX(e,t,n,r){if(e==null)return(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[$X(n),(0,G.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]});switch(t.type){case`text`:return VX(e,t,n);case`time`:return HX(e,t);case`number`:return UX(e,t);case`badge`:return WX(e,t);case`pill`:return GX(e,t);case`combined`:return qX(e,t,n);case`custom`:return YX(e,t,r);default:return ZX(e,n)}}function VX(e,t,n){let r=t.transform?t.transform(e):eZ(e);return(0,G.jsxs)(`span`,{className:K(`inline-flex items-center gap-1`,t.className),children:[$X(n),r]})}function HX(e,t){let n=tZ(e);if(n==null||!Number.isFinite(n))return(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r;switch(t.style){case`long`:r=vG(n);break;case`precise`:r=`${n.toFixed(2)}s`;break;default:r=_G(n)}return t.transform&&(r=t.transform(r)),(0,G.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:r})}function UX(e,t){let n=tZ(e);if(n==null||!Number.isFinite(n))return(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let r=t.decimals??0,i=n.toFixed(r)+(t.unit??``);return t.transform?(0,G.jsx)(`span`,{children:t.transform(i)}):(0,G.jsx)(`span`,{children:i})}function WX(e,t){let n=t.styleResolver(e),r=t.textResolver(e);return(0,G.jsxs)(`span`,{className:K(`inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium`,n.className),title:n.title,children:[n.icon&&(0,G.jsx)(`span`,{className:`mr-0.5`,children:n.icon}),r]})}function GX(e,t){let n=t.transform?t.transform(e):eZ(e),r=t.backgroundColor??`bg-muted`,i=t.borderRadius??`rounded`;return(0,G.jsx)(`span`,{className:K(`inline-block px-1.5 py-0.5 text-xs font-medium`,r,i),children:n})}var KX={primary:`text-sm font-semibold text-foreground`,secondary:`text-xs text-muted-foreground`,tertiary:`text-[11px] text-muted-foreground opacity-80`};function qX(e,t,n,r){let[i,a,o]=Array.isArray(e)?e:[e],s=i===void 0?null:JX(i,t.primaryFormat??{type:`text`},r,`primary`),c=a===void 0?null:JX(a,t.secondaryFormat??{type:`text`},r,`secondary`),l=o===void 0?null:JX(o,t.tertiaryFormat??{type:`text`},r,`tertiary`),u=t.layout===`horizontal`;return(0,G.jsxs)(`div`,{className:K(`inline-flex`,u?`flex-row items-center gap-1`:`flex-col items-start gap-0.5`,t.containerClassName),children:[$X(n),s,c&&(0,G.jsxs)(G.Fragment,{children:[u&&t.separator&&(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),c]}),l&&(0,G.jsxs)(G.Fragment,{children:[u&&t.separator&&(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:t.separator}),l]})]})}function JX(e,t,n,r){let i=BX(e,t,0,n);return r?(0,G.jsx)(`span`,{className:K(`inline-flex items-center`,KX[r]),children:i}):i}function YX(e,t,n){let r=n?{...t.context,row:n}:t.context;return t.render(e,r)}function XX(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 ZX(e,t){return e?.metrics?QX(e,t):(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[$X(t),eZ(e)]})}function QX(e,t){let n=XX(e);return n.length===0?(0,G.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[$X(t),(0,G.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`})]}):(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-1 items-center`,children:[$X(t),n.map((e,t)=>(0,G.jsx)(RX,{metric:e},t))]})}function $X(e){return e<=0?null:(0,G.jsx)(`div`,{className:`flex-shrink-0 mr-1 border-l-2 border-muted h-4`,style:{width:`${e*1.25}rem`,marginLeft:`2px`}})}function eZ(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=XX(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 tZ(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=XX(e);if(t.length>0&&typeof t[0]?.value==`number`)return t[0].value}var nZ=e=>e;function rZ(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 iZ(e){let t=rZ(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 aZ(e){let t=rZ(e);for(let e of t)if(typeof e?.value==`number`)return e.value}function oZ(e){return rZ(e).map(e=>e.image??String(e.value??``)).join(`, `)}function sZ(e){return e==null?``:Array.isArray(e)?e.map(e=>sZ(e)).filter(Boolean).join(` — `):typeof e==`string`?e:typeof e==`number`?String(e):oZ(e)}function cZ(e){switch(e){case J.Duration:case J.Rep:case J.Distance:case J.Rounds:case J.Resistance:case J.Increment:case J.Metric:case J.Volume:case J.Intensity:case J.Load:case J.Work:case J.CurrentRound:case J.Calculated:return!0;default:return!1}}function lZ(e){switch(e){case J.Duration:return`s`;case J.Rep:return`reps`;case J.Distance:return`m`;case J.Rounds:return`rounds`;case J.Resistance:return`kg`;case J.Increment:return`Δ`;case J.Calculated:case J.Custom:return``;default:return``}}function uZ(e,t){let n=Io(e),r=LG(e)??void 0,i=t?.graphable??cZ(e);return{id:e,label:n,icon:r,source:{type:`metric-type`,metricType:e},format:{type:`custom`,render:e=>QX(e,0)},sort:cZ(e)?{type:`numeric`,extractor:e=>aZ(e)}:{type:`text`,extractor:e=>{let t=iZ(e);return t===void 0?void 0:String(t)}},graph:i?{extractor:e=>aZ(e),axisLabel:n,unit:lZ(e)}:void 0,filter:{extractor:e=>oZ(e),caseInsensitive:!0},meta:{defaultVisible:t?.defaultVisible??!0,debugOnly:t?.debugOnly,tags:[e]}}}function dZ(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 fZ(e,t){if(!e||e.length===0)return``;let n=e=>_G(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 pZ(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 mZ({value:e}){let t=e.match(/^(-?)(\d+)(:\d{2})(?::\d{2})?(\.\d+)?$/);if(!t)return(0,G.jsx)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:e});let[,n,r,i,a,o]=t,s=i.slice(1);return(0,G.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap inline-flex items-baseline`,children:[n&&(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:n}),(0,G.jsx)(`span`,{className:`font-semibold text-foreground`,children:r}),(0,G.jsxs)(`span`,{className:`text-muted-foreground/60`,children:[`:`,s]}),a&&(0,G.jsx)(`span`,{className:`text-muted-foreground/40`,children:a}),o&&(0,G.jsx)(`span`,{className:`text-muted-foreground/30 text-[10px]`,children:o})]})}function hZ({elapsed:e,duration:t}){let n=_G(e);return(0,G.jsxs)(`span`,{className:`inline-flex items-baseline gap-0.5`,children:[(0,G.jsx)(mZ,{value:n}),t!==void 0&&t>0&&t!==e&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`text-muted-foreground/40 mx-0.5`,children:`/`}),(0,G.jsx)(`span`,{className:`opacity-60`,children:(0,G.jsx)(mZ,{value:_G(t)})})]})]})}var gZ={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,G.jsx)(`span`,{className:K(`font-mono text-[11px] w-8 text-right inline-block`,dZ(n)),title:`Type: ${n}\nBlock: ${r}`,children:t})}},sort:{type:`numeric`,extractor:e=>nZ(e)?.index||0},meta:{tags:[`layout`],defaultVisible:!0,width:`40px`,resizable:!1}},_Z={id:`timestamp`,label:`Timestamp`,source:{type:`fixed-field`,field:`absoluteStartTime`},format:{type:`custom`,render:(e,t)=>{let n=e,r=nZ(t)?.hideMs!==!1;return(0,G.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-24 whitespace-nowrap`,children:pZ(n,r)})},context:{hideMs:!1}},sort:{type:`numeric`,extractor:e=>nZ(e)?.absoluteStartTime??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},vZ={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,G.jsx)(`span`,{className:`text-muted-foreground font-mono text-[10px] text-center w-40 whitespace-nowrap`,children:fZ(t,n)})}},sort:{type:`numeric`,extractor:e=>(nZ(e)?.spans)?.[0]?.started??0},meta:{tags:[`timing`,`layout`],defaultVisible:!0}},yZ={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,G.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`}):(0,G.jsxs)(`div`,{className:`flex flex-col items-start gap-0 leading-tight`,children:[t!==void 0&&t>0&&(0,G.jsx)(`span`,{className:`text-muted-foreground/50 font-mono text-[10px] whitespace-nowrap`,children:pZ(t,!1)}),(0,G.jsx)(hZ,{elapsed:n,duration:r})]})}},sort:{type:`numeric`,extractor:e=>nZ(e)?.elapsed??0},graph:{extractor:e=>nZ(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(pZ(t,!1)),n!==void 0&&i.push(_G(n)),r!==void 0&&r>0&&r!==n&&i.push(_G(r)),i.join(` `)},caseInsensitive:!0},meta:{tags:[`timing`,`compound`],defaultVisible:!0,width:`100px`,subsumes:[`duration`,`elapsedTotal`]}},bZ={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=>nZ(e)?.sourceBlockKey??``},filter:{extractor:e=>nZ(e)?.sourceBlockKey??``,caseInsensitive:!0},meta:{tags:[`layout`],defaultVisible:!1}},xZ={id:`outputType`,label:`Type`,source:{type:`fixed-field`,field:`outputType`},format:{type:`custom`,render:e=>{let t=String(e??``);return(0,G.jsx)(`span`,{className:K(`text-xs px-1.5 py-0.5 rounded font-medium`,dZ(t)),children:t})}},sort:{type:`text`,extractor:e=>nZ(e)?.outputType??``},filter:{extractor:e=>nZ(e)?.outputType??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1}},SZ={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=>nZ(e)?.stackLevel??0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},CZ={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?_G(t):`${_G(t)} / ${_G(n)}`;return(0,G.jsx)(`span`,{className:`text-foreground font-mono text-xs text-right w-32 whitespace-nowrap`,children:r})}},sort:{type:`numeric`,extractor:e=>nZ(e)?.elapsed??0},graph:{extractor:e=>nZ(e)?.elapsed,axisLabel:`Elapsed`,unit:`s`,color:`#14b8a6`},meta:{tags:[`timing`],defaultVisible:!1}},wZ={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=>nZ(e)?.completionReason??``},filter:{extractor:e=>nZ(e)?.completionReason??``,caseInsensitive:!0},meta:{tags:[`debug`],defaultVisible:!1,debugOnly:!0}},TZ=uZ(J.Effort,{defaultVisible:!1}),EZ=uZ(J.Duration,{debugOnly:!0}),DZ=uZ(J.Rep),OZ=uZ(J.Rounds,{defaultVisible:!1}),kZ=uZ(J.Distance),AZ=uZ(J.Resistance),jZ=uZ(J.Action),MZ=uZ(J.Increment),NZ=uZ(J.Metric),PZ=uZ(J.Calculated),FZ=uZ(J.Custom,{defaultVisible:!1}),IZ=uZ(J.Group,{defaultVisible:!1}),LZ=uZ(J.System,{defaultVisible:!1}),RZ=uZ(J.Label,{defaultVisible:!1}),zZ=uZ(J.Text),BZ=uZ(J.CurrentRound,{defaultVisible:!1}),VZ=uZ(J.Volume),HZ=uZ(J.Intensity),UZ=uZ(J.Load),WZ=uZ(J.Work),GZ=uZ(J.Diagnostic),KZ=[gZ,yZ,_Z,vZ,bZ,xZ,SZ,CZ,wZ,{id:`exercise`,label:`Exercise`,icon:LG(J.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`fallback`,semantics:`all-present-combined`,sources:[{type:`metric-type`,metricType:J.Effort},{type:`metric-type`,metricType:J.Text}]},{type:`metric-type`,metricType:J.Text},{type:`metric-type`,metricType:J.Label},{type:`metric-type`,metricType:J.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=>sZ(e)},filter:{extractor:e=>sZ(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`grouping`,`fallback`,`descriptor`],subsumes:[`effort`,`text`,`label`]}},{id:`descriptor`,label:`Descriptor`,icon:LG(J.Effort)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:J.Effort},{type:`metric-type`,metricType:J.Label},{type:`metric-type`,metricType:J.Rounds},{type:`metric-type`,metricType:J.CurrentRound}]},format:{type:`custom`,render:e=>QX(e,0)},sort:{type:`text`,extractor:e=>sZ(e)},filter:{extractor:e=>sZ(e),caseInsensitive:!0},meta:{defaultVisible:!0,subsumes:[`effort`,`label`,`rounds`,`current-round`]}},TZ,zZ,RZ,EZ,{id:`pace`,label:`Pace`,icon:`⏱️`,source:{type:`derived`,dependencies:[`distance`,`duration`],compute:(e,t)=>{let n=aZ(t.dependencies.get(`distance`)),r=aZ(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,G.jsx)(`span`,{className:`text-muted-foreground opacity-40`,children:`—`});let t=1e3/e;return(0,G.jsxs)(`span`,{className:`font-mono text-xs whitespace-nowrap`,children:[_G(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?``:`${_G(1e3/e)}/km`,caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`endurance`,`derived`]}},DZ,OZ,kZ,AZ,jZ,MZ,NZ,PZ,FZ,BZ,VZ,HZ,{id:`loadFocus`,label:`Load`,icon:LG(J.Load)??LG(J.Resistance)??void 0,source:{type:`fallback`,semantics:`first-present`,sources:[{type:`metric-type`,metricType:J.Load},{type:`metric-type`,metricType:J.Resistance}]},format:{type:`custom`,render:e=>QX(e,0)},sort:{type:`numeric`,extractor:e=>aZ(e)},graph:{extractor:e=>aZ(e),axisLabel:`Load`,unit:`kg`},filter:{extractor:e=>oZ(e),caseInsensitive:!0},meta:{defaultVisible:!1,tags:[`strength`,`fallback`]}},UZ,WZ,GZ,IZ,LZ],qZ={outputTypes:[`segment`,`milestone`,`group`,`analytics`]},JZ={definitions:KZ,presets:{default:{label:`Default`,filters:qZ,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:qZ,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`rep`,`loadFocus`,`volume`,`intensity`,`load`,`work`,`elapsedTotal`]},endurance:{label:`Endurance`,filters:qZ,visibleColumnIds:[`#`,`timeSpan`,`exercise`,`distance`,`duration`,`pace`,`rounds`,`increment`,`work`,`elapsedTotal`]}},defaultPreset:`default`},YZ=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 SX(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 XZ(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,W.useMemo)(()=>ZZ(t,n),[t,n]),f=(0,W.useMemo)(()=>{let e=[...JZ.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(uZ(r)),t.add(r));return new YZ({...JZ,definitions:e})},[d]),p=(0,W.useMemo)(()=>{let e=new Set(u??[]);for(let t of c??[])e.add(t);return e},[u,c]),m=(0,W.useMemo)(()=>({rows:d,activePresetId:r,isDebugMode:i,graphTaggedColumnIds:s,visibilityOverrides:l,addedColumnIds:p}),[d,r,i,s,l,p]),h=(0,W.useMemo)(()=>f.getVisibleColumns(m),[f,m]),g=(0,W.useMemo)(()=>f.getAvailableColumns(m),[f,m]),_=(0,W.useMemo)(()=>({...f.getPreset(r).filters??{},...o}),[r,o,f]);return{rows:(0,W.useMemo)(()=>tQ(eQ(d,_,h,f.definitions),a,h,f.definitions),[d,_,a,h,f]),visibleColumns:h,availableColumns:g,graphTaggedColumnIds:(0,W.useMemo)(()=>Array.from(s??[]),[s])}}function ZZ(e,t){return e.map((e,n)=>{let r=new Map;if(e.metrics)for(let t of e.metrics)$Z(r,t);let i=QZ(e),a=i?t.get(i):void 0;if(a)for(let e of a)$Z(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 QZ(e){let t=e.context;return t?.sourceBlockKey?t.sourceBlockKey:e.name}function $Z(e,t){let n=t.type;if(n===J.Sound)return;let r=e.get(n);r?e.set(n,{metrics:r.metrics.clone().add(t),hasUserOverride:r.hasUserOverride}):e.set(n,{metrics:pa.empty(n).add(t),hasUserOverride:!1})}function eQ(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&&IX(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 LX(n,t,o,i,r)}))}return i}function tQ(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=PX(NX(i,t,s,r),NX(a,t,c,r));if(l!==0)return o.direction===`asc`?l:-l}return i.index-a.index}),i}function nQ(e,t){return{id:e,label:t.label,filters:t.filters??{},visibleColumns:[...t.visibleColumnIds],isDefault:e===JZ.defaultPreset}}var rQ=Object.fromEntries(Object.entries(JZ.presets).map(([e,t])=>[e,nQ(e,t)])),iQ=rQ.default;rQ.debug,rQ.strength,rQ.endurance;function aQ(e){return rQ[e]??iQ}var oQ=({activePreset:e,onPresetChange:t,searchText:n,onSearchChange:r,showFilters:i,onToggleFilters:a,totalRows:o,visibleRows:s})=>(0,G.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,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`label`,{className:`text-xs text-muted-foreground font-medium`,children:`View:`}),(0,G.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(rQ).map(e=>(0,G.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,G.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,G.jsx)(`div`,{className:`flex items-center flex-1 max-w-md`,children:(0,G.jsxs)(`div`,{className:`flex w-full group`,children:[(0,G.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,G.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,G.jsx)(`span`,{children:`🔍`}),(0,G.jsx)(`span`,{className:`font-medium`,children:`Search`})]})]})}),(0,G.jsx)(`div`,{className:`w-px h-5 bg-border`}),(0,G.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,G.jsx)(`div`,{className:`ml-auto text-xs text-muted-foreground tabular-nums`,children:s===o?`${o} rows`:`${s} / ${o} rows`})]}),sQ={"#":`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`},cQ=`48px`;function lQ(e){return e.meta?.width??sQ[e.id]??`96px`}function uQ(){return cQ}var dQ=({columns:e,sortConfigs:t,onSort:n,onToggleGraph:r,showFilters:i,columnFilters:a,onColumnFilterChange:o,availableToAdd:s,onAddColumn:c,graphTaggedColumnIds:l})=>(0,G.jsxs)(`thead`,{className:`bg-muted/50 dark:bg-muted/30 sticky top-0 z-10`,children:[(0,G.jsxs)(`tr`,{className:`border-b border-border`,children:[e.map(e=>(0,G.jsx)(fQ,{column:e,sortConfig:t.find(t=>t.columnId===e.id),onSort:n,onToggleGraph:r,isGraphed:l?.has(e.id)??!1},e.id)),c&&(0,G.jsx)(`th`,{className:`py-2 px-1`,style:{minWidth:uQ()},children:(0,G.jsx)(hQ,{availableToAdd:s??[],onAddColumn:c})})]}),i&&(0,G.jsxs)(`tr`,{className:`border-b border-border/50 bg-muted/20 dark:bg-muted/10`,children:[e.map(e=>(0,G.jsx)(mQ,{column:e,value:a[e.id]??``,onChange:o},e.id)),c&&(0,G.jsx)(`th`,{className:`py-1 px-1`,style:{minWidth:uQ()}})]})]}),fQ=({column:e,sortConfig:t,onSort:n,onToggleGraph:r,isGraphed:i})=>{let a=e.sort!==void 0,o=e.graph!==void 0,s=(0,W.useCallback)(t=>{a&&n(e.id,t.shiftKey)},[e.id,a,n]),c=(0,W.useCallback)(t=>{t.stopPropagation(),r(e.id)},[e.id,r]);return(0,G.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:lQ(e)},onClick:s,children:(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[e.icon&&(0,G.jsx)(`span`,{className:`text-sm`,children:e.icon}),(0,G.jsx)(`span`,{children:e.label}),t&&(0,G.jsx)(pQ,{direction:t.direction}),o&&(0,G.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:`📊`})]})})},pQ=({direction:e})=>(0,G.jsx)(`span`,{className:`text-primary text-[10px] ml-0.5`,children:e===`asc`?`▲`:`▼`}),mQ=({column:e,value:t,onChange:n})=>e.filter?(0,G.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:lQ(e)},children:(0,G.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,G.jsx)(`th`,{className:`py-1 px-2`,style:{minWidth:lQ(e)}}),hQ=({availableToAdd:e,onAddColumn:t})=>{let[n,r]=(0,W.useState)(!1),i=(0,W.useRef)(null),a=(0,W.useRef)(null);return(0,W.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,G.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,G.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,G.jsxs)(`div`,{ref:i,className:`absolute right-0 top-full mt-1 z-50 min-w-[160px] max-h-64 overflow-y-auto
|
|
170
170
|
bg-popover border border-border rounded-md shadow-xl py-1`,onClick:e=>e.stopPropagation(),children:[(0,G.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=LG(e)??`•`,i=Qo.columnLabel(e);return(0,G.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,G.jsx)(`span`,{className:`text-sm w-4 text-center`,children:n}),(0,G.jsx)(`span`,{children:i})]},e)})]})]})},gQ=({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,G.jsx)(`tr`,{className:K(`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===J.Effort;return(0,G.jsx)(zX,{columnDef:r,row:e,allRows:t,rowIndex:n,indent:i?e.stackLevel:0,onDoubleClick:c,style:{minWidth:lQ(r)}},r.id)})})};function _Q(e){let{rows:t,columns:n,graphTaggedColumnIds:r,definitionMap:i}=e,a=(0,W.useMemo)(()=>vQ(r,n),[r,n]),o=(0,W.useMemo)(()=>yQ(t,r,n,i),[t,r,n,i]);return{data:o,graphConfigs:a,hasData:a.length>0&&o.length>0}}function vQ(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:CQ(e),color:bQ(e),dataKey:r,icon:e.icon})}return n}function yQ(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]=FX(i,t,{allRows:e,rowIndex:a,columnDef:t,dependencies:new Map},r)??0}return o})}function bQ(e){if(e.graph?.color)return e.graph.color;let t=xQ(e);return t?SQ[t]??`#888888`:`#888888`}function xQ(e){if(e.source.type===`metric-type`)return e.source.metricType}var SQ={[J.Time]:`#3b82f6`,[J.Rep]:`#22c55e`,[J.Effort]:`#eab308`,[J.Distance]:`#14b8a6`,[J.Rounds]:`#a855f7`,[J.Resistance]:`#ef4444`,[J.Increment]:`#6366f1`,[J.Action]:`#ec4899`};function CQ(e){if(e.graph?.unit)return e.graph.unit;let t=xQ(e);if(!t)return``;switch(t){case J.Time:return`ms`;case J.Rep:return`reps`;case J.Distance:return`m`;case J.Rounds:return`rounds`;case J.Resistance:return`kg`;case J.Increment:return`Δ`;default:return``}}var wQ=({rows:e,columns:t,graphTaggedColumnIds:r,selectedIds:i,onSelectRow:a})=>{let[o,s]=(0,W.useState)(!1),{data:c,graphConfigs:l,hasData:u}=_Q({rows:e,columns:t,graphTaggedColumnIds:r,selectedIds:i}),d=(0,W.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,G.jsxs)(`div`,{className:`border-b border-border bg-background`,children:[(0,G.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,G.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(`span`,{children:`📊`}),(0,G.jsxs)(`span`,{children:[`Graph — `,l.map(e=>e.label).join(`, `)]})]}),(0,G.jsx)(`span`,{className:`text-[10px]`,children:o?`▼`:`▲`})]}),!o&&(0,G.jsx)(`div`,{className:`px-3 pb-3`,children:u?(0,G.jsx)(`div`,{className:`w-full bg-muted/30 rounded-lg border border-border p-2`,style:{height:220},children:(0,G.jsx)(Un,{width:`100%`,height:`100%`,children:(0,G.jsxs)(nt,{data:c,onClick:d,children:[(0,G.jsx)(yn,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,G.jsx)(n,{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,G.jsx)(xe,{stroke:`hsl(var(--muted-foreground))`,tick:{fontSize:10},domain:[`auto`,`auto`]}),(0,G.jsx)(ht,{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,G.jsx)(wn,{verticalAlign:`top`,height:24,wrapperStyle:{fontSize:`11px`}}),l.map(e=>(0,G.jsx)(Jn,{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,G.jsx)(`div`,{className:`h-32 flex items-center justify-center text-sm text-muted-foreground`,children:`No numeric data available for the tagged columns.`})})]})},TQ=({isOpen:e,blockKey:t,metricType:n,existingFragments:r,existingUserValue:i,anchorRect:a,onSave:o,onRemove:s,onClose:c})=>{let[l,u]=(0,W.useState)(``),d=(0,W.useRef)(null),f=(0,W.useRef)(null);(0,W.useEffect)(()=>{e&&(u(i===void 0?``:String(i)),setTimeout(()=>d.current?.focus(),0))},[e,i]),(0,W.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&c()};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,c]),(0,W.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,W.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,W.useCallback)(()=>{s(t,n),c()},[t,n,s,c]),h=(0,W.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),p())},[p]);if(!e)return null;let g=LG(n),_=FG(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,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`fixed inset-0 bg-black/20 dark:bg-black/40 z-40`}),(0,G.jsxs)(`div`,{ref:f,className:`w-64 rounded-lg border border-border bg-popover text-popover-foreground shadow-lg`,style:b,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border`,children:[g&&(0,G.jsx)(`span`,{className:`text-sm`,children:g}),(0,G.jsx)(`span`,{className:`text-sm font-medium capitalize`,children:n}),(0,G.jsx)(`span`,{className:`text-[10px] text-muted-foreground ml-auto truncate max-w-[100px]`,title:t,children:t})]}),y.length>0&&(0,G.jsxs)(`div`,{className:`px-3 py-1.5 border-b border-border/50 bg-muted/10`,children:[(0,G.jsx)(`div`,{className:`text-[10px] text-muted-foreground mb-1 uppercase tracking-wider`,children:`Current`}),(0,G.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:y.map((e,t)=>(0,G.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,G.jsxs)(`div`,{className:`px-3 py-2`,children:[(0,G.jsx)(`label`,{className:`text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block`,children:v?`Update override`:`Enter value`}),(0,G.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,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-t border-border/50`,children:[(0,G.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,G.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,G.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`})]})]})]})},EQ=({segments:e,selectedSegmentIds:t,onSelectSegment:n,userOutputOverrides:r=new Map,gridViewPreset:i=`default`,onPresetChange:a,hoveredBlockKey:o,onHoverBlockKey:s})=>{let{isDebugMode:c}=fb(),[l,u]=(0,W.useState)([]),[d,f]=(0,W.useState)(``),[p,m]=(0,W.useState)({}),[h,g]=(0,W.useState)(!1),[_,v]=(0,W.useState)(new Set),[y,b]=(0,W.useState)({}),[x,S]=(0,W.useState)(new Set),{overrides:C,setOverride:w,removeOverride:T}=Kq(!0),[E,D]=(0,W.useState)({isOpen:!1,blockKey:``,type:`Time`,anchorRect:null,existingFragments:[]}),O=(0,W.useMemo)(()=>{let e=new Map;for(let[t,n]of r)e.set(t,n instanceof pa?n:pa.from(n,t));for(let[t,n]of C)e.set(t,n);return e},[r,C]),k=c?`debug`:i,A=(0,W.useMemo)(()=>aQ(k),[k]),{rows:j,visibleColumns:M,availableColumns:N,graphTaggedColumnIds:P}=XZ({segments:e,userOutputOverrides:O,presetId:k,isDebugMode:c,sortConfigs:l,filterOverrides:(0,W.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,W.useMemo)(()=>j.map(e=>e.id),[j]),R=(0,W.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`}]})},[]),z=(0,W.useCallback)(e=>{v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),ee=(0,W.useCallback)((e,t)=>{m(n=>{if(!t){let t={...n};return delete t[e],t}return{...n,[e]:t}})},[]),te=(0,W.useCallback)(e=>{b({}),m({}),f(``),a?.(e)},[a]),ne=(0,W.useCallback)(e=>{S(t=>{let n=new Set(t);return n.add(e),n})},[]),re=(0,W.useMemo)(()=>N.filter(e=>e.source.type===`metric-type`).map(e=>e.source.metricType),[N]),ie=(0,W.useCallback)((e,t)=>{n(e,t,L)},[n,L]),ae=(0,W.useCallback)(e=>{s?.(e)},[s]),oe=(0,W.useCallback)(e=>{n(e,{ctrlKey:!1,shiftKey:!1},L)},[n,L]),se=(0,W.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]),B=(0,W.useCallback)((e,t,n,r)=>{w(e,t,n,r),D(e=>({...e,isOpen:!1}))},[w]),ce=(0,W.useCallback)(()=>{T(E.blockKey,E.type),D(e=>({...e,isOpen:!1}))},[E.blockKey,E.type,T]),V=(0,W.useCallback)(()=>{D(e=>({...e,isOpen:!1}))},[]);return(0,G.jsxs)(`div`,{className:`h-full flex flex-col bg-background`,children:[(0,G.jsx)(oQ,{activePreset:A,onPresetChange:te,searchText:d,onSearchChange:f,showFilters:h,onToggleFilters:()=>g(e=>!e),totalRows:I,visibleRows:j.length}),(0,G.jsx)(wQ,{rows:j,columns:M,graphTaggedColumnIds:P,selectedIds:t,onSelectRow:oe}),(0,G.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,G.jsxs)(`table`,{className:`text-left text-sm border-collapse min-w-[700px]`,children:[(0,G.jsx)(dQ,{columns:F,sortConfigs:l,onSort:R,onToggleGraph:z,showFilters:h,columnFilters:p,onColumnFilterChange:ee,availableToAdd:re,onAddColumn:ne,graphTaggedColumnIds:_}),(0,G.jsx)(`tbody`,{className:`divide-y divide-border`,children:j.length===0?(0,G.jsx)(`tr`,{children:(0,G.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,G.jsx)(gQ,{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,G.jsx)(TQ,{isOpen:E.isOpen,blockKey:E.blockKey,metricType:E.type,existingFragments:E.existingFragments,existingUserValue:E.existingUserValue,anchorRect:E.anchorRect??void 0,onSave:B,onRemove:ce,onClose:V}),(0,G.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,G.jsx)(`span`,{children:t.size>0?`${t.size} selected`:`Click a row to select`}),(0,G.jsxs)(`span`,{className:`tabular-nums`,children:[j.length,` / `,I,` rows`]})]})]})};qt();var DQ=({title:e,onClose:t,children:n,closeButtonClassName:r,floatingClose:i=!1,variant:a=`default`,actions:o,closeLabel:s})=>{(0,W.useEffect)(()=>(document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}),[]);let c=W.useRef(null);(0,W.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,G.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":OG.FOCUSED_DIALOG_CLOSE,children:s??(0,G.jsx)(xr,{className:`h-5 w-5`})});return JC.createPortal((0,G.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,G.jsxs)(`div`,{className:`absolute top-4 right-4 z-[110] flex items-center gap-2`,children:[o,d]}):e?(0,G.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,G.jsx)(`h2`,{className:`text-lg ${u?`font-black tracking-tight uppercase text-[11px] text-muted-foreground`:`font-semibold`}`,children:e}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[o,d]})]}):null,(0,G.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:n})]}),document.body)},OQ=(0,W.createContext)({updateFromSegments:()=>{},clear:()=>{}}),kQ=({children:e,chromecastSubscription:t=null})=>(0,G.jsx)(OQ.Provider,{value:{updateFromSegments:(e,n,r)=>{t&&t.sendAnalyticsSummary([],n,r)},clear:()=>{}},children:e}),AQ=new class{resolve(e){let t=this.resolveMode(e);return t===`active`?{type:`rpc-workbench-update`,mode:`active`}:t===`review`?Hq(e.analyticsSegments):Wq(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 jQ(){if(!(`wakeLock`in navigator))return;let e=navigator.wakeLock;if(!(typeof e!=`object`||!e||!(`request`in e)))return e}function MQ(e){let t=(0,W.useRef)(null);(0,W.useEffect)(()=>{let n=jQ();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 NQ(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 PQ=``,FQ=null,IQ=()=>{let e=UK(),[t,n]=(0,W.useState)(e.state),[r,i]=(0,W.useState)(!1);MQ(r);let[a,o]=(0,W.useState)(!1),[s,c]=(0,W.useState)(null),[l,u]=(0,W.useState)(null),d=(0,W.useRef)(null),f=vB,p=(0,W.useRef)(f.getActiveHandle()),m=(0,W.useRef)(!1),h=(0,W.useCallback)(e=>{let t=p.current;p.current=null,t&&f.dispose(e),jM(null),u(null),c(null),i(!1)},[f]),g=(0,W.useCallback)(async e=>{if(!m.current){m.current=!0;try{let t=JV.getState().subscriptionManager,n=f.connect(e,t);p.current=n,u(n),c(n.subscription),i(!0),jM(n.transport),n.eventProvider.onEvent(e=>{if(e.name===`clock-command`){let t=Bq(e.data);if(!t){console.warn(`[CastButtonRpc] Dropped malformed clock-command payload`);return}sq(t.runId,t.command)||console.warn(`[CastButtonRpc] Clock command rejected by authority:`,t.command.kind);return}let t=aq(),n=Vq(e.name,t);n&&t&&!sq(t.runId,n)&&console.warn(`[CastButtonRpc] Legacy receiver event rejected by authority:`,e.name)});let r=JV.getState(),a=AQ.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,W.useRef)(!1),v=(0,W.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:`,NQ(t)),h(!1),e.endSession()}finally{_.current=!1}}},[e,g,h,f]);(0,W.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,W.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,W.useEffect)(()=>{let e=l?.transport;if(!e)return;let t=()=>{let t=aq(),n=JSON.stringify(t);if(n!==PQ||e!==FQ){PQ=n,FQ=e;try{e.send({type:`rpc-clock-snapshot`,snapshot:t})}catch{}}};return t(),oq(t)},[l]),(0,W.useEffect)(()=>{let e=()=>{f.sendDisposeSignal()};return window.addEventListener(`pagehide`,e),()=>window.removeEventListener(`pagehide`,e)},[f]),(0,W.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=NQ(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,W.useRef)(t);y.current=t;let b=(0,W.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,G.jsxs)(q,{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,G.jsx)(gr,{className:`h-5 w-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Cast to TV (unavailable)`})]}):(0,G.jsx)(Ote,{transport:l?.transport??null,children:(0,G.jsx)(kQ,{chromecastSubscription:s,children:(0,G.jsxs)(q,{ref:d,variant:`ghost`,size:`icon`,disabled:D,onClick:()=>{},className:K(`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,G.jsx)(j,{className:`h-5 w-5`}):(0,G.jsx)(gr,{className:`h-5 w-5`}),(0,G.jsx)(`span`,{className:`sr-only`,children:T?`Stop casting`:`Cast to TV`})]})})})};function LQ(){let{isEnabled:e,toggleAudio:t}=RM();return(0,G.jsxs)(q,{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,G.jsx)(F,{className:`h-[1.2rem] w-[1.2rem]`}):(0,G.jsx)(Ue,{className:`h-[1.2rem] w-[1.2rem]`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`Toggle audio`})]})}var RQ=new Map,zQ=({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,W.useState)(n?null:e),[g,_]=(0,W.useState)(null),v=(0,W.useRef)(!1),y=(0,W.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,W.useEffect)(()=>{y()},[y]);let[b,x]=(0,W.useState)(null),[S,C]=(0,W.useState)(new Set),{isDebugMode:w}=fb(),T=(0,W.useRef)(Date.now()),E=(0,W.useRef)(typeof document<`u`?document.title:`Wod.Wiki`),D=(0,W.useRef)(null);(0,W.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:Vj()}));let a=Hj.consent;n?a&&window.gtag?.(`event`,`runtime_dialog_review`,{workout_label:t,block_type:e.blockType}):(Hj.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,W.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,W.useRef)(!1),k=(0,W.useRef)(!1),A=(0,W.useRef)(!1),[j,M]=(0,W.useState)(!1),[N,P]=(0,W.useState)(!1),F=(0,W.useRef)(!1),I=(0,W.useRef)(!1),L=(0,W.useRef)(null),[R,z]=(0,W.useState)(`idle`),[ee,te]=(0,W.useState)(null),[ne,re]=(0,W.useState)(!1),{collectionItems:ie}=yJ(b??[],RQ,null),[ae,oe]=(0,W.useState)(new Set),[se,B]=(0,W.useState)(new Set),[ce,V]=(0,W.useState)(!1),le=(0,W.useMemo)(()=>ie.filter(e=>{let t=aJ(e);return!ae.has(t)&&!se.has(t)}),[ie,ae,se]),ue=b!==null&&!!o&&le.length>0&&!ce,de=(0,W.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 Dte({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}=tB(N_(await Z.getEventsByResult(o)).map(e=>cj(new ga(e))));x(n),oe(t=>new Set(t).add(aJ(e)))},[o]),fe=(0,W.useCallback)(e=>{B(t=>new Set(t).add(aJ(e)))},[]),pe=(0,W.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,z(`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)),z(`error`),F.current=!1;return}F.current=!1,z(`idle`),re(!0);let{results:n}=e;if(n.logs&&n.logs.length>0)try{let{segments:e}=tB(n.logs,n.startTime);x(e)}catch{x([])}else n.completed?x([]):A.current&&i()},H=(0,W.useCallback)(()=>{O.current=!0,l?.()},[l]),he=()=>{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)},ge=()=>{P(!1),A.current=!0,M(!0)},_e=(0,W.useRef)(he);_e.current=he,WK(pe,(0,W.useCallback)(e=>e.kind===`dismiss`&&(_e.current(),!0),[]),20,{keyboard:!0});let ve=(e,t)=>{k.current||(k.current=!0,L.current={blockId:e,results:t},me())},ye=(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})},be=R===`idle`?null:(0,G.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,G.jsx)(`span`,{className:`text-muted-foreground`,children:`Saving…`}),R===`error`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`span`,{role:`alert`,className:`text-destructive`,children:[`Save failed`,ee?` — ${ee}`:``]}),(0,G.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,G.jsx)(DQ,{onClose:he,title:`Workout`,closeLabel:`Exit`,actions:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{type:`button`,onClick:he,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,G.jsx)(IQ,{}),(0,G.jsx)(LQ,{})]}),children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[be,g?(0,G.jsxs)(`div`,{className:`space-y-2 p-4`,children:[(0,G.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,g]}),(0,G.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,G.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:`p-4`,children:`Saving workout before starting…`}),(0,G.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,G.jsx)(UJ,{block:m,noteContent:t,view:r,onClose:he,onComplete:ve,isExpanded:!0,autoStart:s,onRuntimeReady:c,onRunStarted:H,externalStop:u||j,adoptRuntime:d,parkOnUnmount:f,onPark:p})}),N&&(0,G.jsx)(DQ,{title:`Stop workout?`,onClose:()=>P(!1),closeLabel:`Keep going`,actions:void 0,children:(0,G.jsxs)(`div`,{className:`space-y-4 p-6`,children:[(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The run stops now and your partial results are kept.`}),(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[(0,G.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,G.jsx)(`button`,{type:`button`,"data-testid":`stop-confirm`,onClick:ge,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,G.jsx)(DQ,{title:`Workout Complete`,onClose:he,actions:(0,G.jsxs)(G.Fragment,{children:[ne&&(0,G.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Saved ✓`}),(0,G.jsx)(IQ,{}),(0,G.jsx)(LQ,{})]}),children:(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[be,(0,G.jsx)(`div`,{className:`min-h-0 flex-1`,children:ue?(0,G.jsx)(wJ,{mode:`post-run`,items:le,onSave:de,onSkip:fe,onClose:()=>V(!0),runId:o?`result:${o}`:void 0,className:`mx-auto max-w-md`}):(0,G.jsx)(EQ,{runtime:null,segments:b,selectedSegmentIds:S,onSelectSegment:ye,groups:[],gridViewPreset:w?`debug`:`default`})})]})}):(0,G.jsx)(DQ,{title:`Starting workout`,onClose:i,children:g?(0,G.jsxs)(`div`,{className:`space-y-3 p-6`,children:[(0,G.jsxs)(`p`,{role:`alert`,children:[`Workout not started. `,g,` Your draft is kept.`]}),(0,G.jsx)(`button`,{type:`button`,className:`rounded border px-3 py-2 focus-visible:ring-2`,onClick:()=>void y(),children:`Retry start`})]}):(0,G.jsx)(`p`,{role:`status`,className:`p-6`,children:`Saving workout before starting…`})})},BQ={play:!0,"add-to-today":!0,schedule:!0},VQ=`log`;function HQ(e,t){return e.filter(e=>e.id===VQ?t===`log`:!BQ[e.id]||t===`run`)}function UQ(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 WQ(e){return function({className:t}){return W.isValidElement(e)?W.cloneElement(e,{className:K(e.props.className,t)}):(0,G.jsx)(`span`,{className:K(`flex items-center`,t),children:e})}}var GQ=({cmd:e,block:t})=>{let[n,r]=(0,W.useState)(!1),[i,a]=(0,W.useState)(!1),o=(0,W.useCallback)(async()=>{!e.onSplitClick||n||(await e.onSplitClick(t),r(!0),setTimeout(()=>r(!1),1500))},[e,t,n]),s=(0,W.useCallback)(async()=>{i||(await e.onClick(t),e.successIcon&&(a(!0),setTimeout(()=>a(!1),1500)))},[e,t,i]),c=(0,W.useMemo)(()=>WQ(i?e.successIcon??e.icon:e.icon),[e.icon,e.successIcon,i]),l=(0,W.useMemo)(()=>WQ(n?e.splitSuccessIcon??e.splitIcon:e.splitIcon),[n,e.splitIcon,e.splitSuccessIcon]),u=(0,W.useMemo)(()=>({id:e.id,label:e.label,icon:c,action:{type:`call`,handler:()=>s()}}),[e.id,e.label,c,s]),d=(0,W.useMemo)(()=>({id:`${e.id}-split`,label:`Copy link`,icon:l,action:{type:`call`,handler:o}}),[e.id,l,o]),f=(0,W.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]);if(!e.onSplitClick){let t=i?e.successIcon??e.icon:e.icon;return(0,G.jsxs)(q,{variant:e.primary?`default`:`secondary`,className:K(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`?OG.EDITOR_START_WORKOUT:void 0,onClick:e=>{f(e),s()},onMouseDown:f,onPointerDown:f,children:[(0,G.jsx)(`span`,{className:`flex items-center justify-center size-4 sm:size-3`,children:t}),!e.iconOnly&&(0,G.jsx)(`span`,{className:`sr-only sm:not-sr-only sm:inline`,children:e.label})]})}return(0,G.jsx)(`div`,{onClick:f,onMouseDown:f,onPointerDown:f,children:(0,G.jsx)(sX,{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`})})},KQ=({view:e,commands:t})=>{let[n,r]=(0,W.useState)(()=>e?.plugin(XT)?.rects??[]),[i,a]=(0,W.useState)(0);(0,W.useEffect)(()=>{if(!e)return;let t=e.plugin(XT);t&&(r([...t.rects]),t.addListener(e=>r([...e])))},[e]),(0,W.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(XT):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(wT),l=new Map(c.map(e=>[e.id,e]));return(0,G.jsx)(G.Fragment,{children:s.map(n=>{let r=l.get(n.sectionId);if(!r)return null;let a=UQ(e,r),o=HQ(t,Da(r.type));return o.length===0?null:(0,G.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,G.jsx)(GQ,{cmd:e,block:a},e.id))},n.sectionId)})})},qQ=({sections:e,isRuntimeActive:t,editorState:n,onSelectBlock:r})=>{let i=FM(),a=(0,W.useRef)(``);return(0,W.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(`
|
|
171
171
|
`).filter(e=>e.trim().length>0),i=r.slice(0,3).join(`
|
|
172
|
-
`),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,W.useEffect)(()=>{i?.connected||(a.current=``)},[i]),(0,W.useEffect)(()=>{t||(a.current=``)},[t]),(0,W.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},JQ={[J.Duration]:{label:`Timer`,icon:`⏱`,textClass:`text-metric-time`,bgClass:`bg-metric-time/10`,borderClass:`border-metric-time/30`},[J.Rep]:{label:`Reps`,icon:`✕`,textClass:`text-metric-rep`,bgClass:`bg-metric-rep/10`,borderClass:`border-metric-rep/30`},[J.Effort]:{label:`Exercise`,icon:`🏋`,textClass:`text-metric-effort`,bgClass:`bg-metric-effort/10`,borderClass:`border-metric-effort/30`},[J.Rounds]:{label:`Rounds`,icon:`↻`,textClass:`text-metric-rounds`,bgClass:`bg-metric-rounds/10`,borderClass:`border-metric-rounds/30`},[J.Distance]:{label:`Distance`,icon:`📏`,textClass:`text-metric-distance`,bgClass:`bg-metric-distance/10`,borderClass:`border-metric-distance/30`},[J.Resistance]:{label:`Weight`,icon:`⚖`,textClass:`text-metric-resistance`,bgClass:`bg-metric-resistance/10`,borderClass:`border-metric-resistance/30`},[J.Equipment]:{label:`Equipment`,icon:`🧰`,textClass:`text-metric-equipment`,bgClass:`bg-metric-equipment/10`,borderClass:`border-metric-equipment/30`},[J.Action]:{label:`Action`,icon:`⚡`,textClass:`text-metric-action`,bgClass:`bg-metric-action/10`,borderClass:`border-metric-action/30`},[J.Label]:{label:`Label`,icon:`🏷`,textClass:`text-muted-foreground`,bgClass:`bg-muted/30`,borderClass:`border-border/40`}},YQ={[J.Rep]:`reps`,[J.Effort]:`movement`,[J.Resistance]:`weight`},XQ=({metric:e,tooltip:t,isFocused:n,onClick:r})=>{let i=JQ[e.type],a=e.type===J.Hint,o=e.name??e.image??(e.value===void 0?``:String(e.value)),s=i?.label??String(e.type);return(0,G.jsxs)(`span`,{title:t,onClick:r,className:K(`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium whitespace-nowrap`,`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-xs`),children:[(0,G.jsx)(`span`,{children:a?e.icon:i?.icon??`•`}),!a&&(0,G.jsx)(`span`,{className:`sr-only`,children:s}),!a&&(0,G.jsx)(`span`,{className:`font-semibold`,children:o||s})]})};function ZQ(e){let t=da(e.metadata);return{refs:t?.refs??[],diagnostics:t?.diagnostics??[]}}function QQ(e,t){try{let n=e.coordsAtPos(t.lineFrom);if(!n)return null;let r=typeof t.lineTo==`number`?e.coordsAtPos(t.lineTo)??n:n,i=e.dom?.getBoundingClientRect?.()??{top:0,left:0,width:600},a=e.contentDOM?.getBoundingClientRect?.()??{left:0,width:600},o=Math.max(0,a.left-i.left),s=o+Math.max(240,a.width),c=r.left-i.left+12,l=s-c;if(l>=180){let e=typeof r.top==`number`?r.top:r.bottom-20;return{top:Math.max(0,e-i.top-1),left:c,maxWidth:l-4,belowLine:!1}}return{top:r.bottom-i.top+3,left:o,maxWidth:Math.max(220,a.width),belowLine:!0}}catch{return null}}var $Q=({view:e,cursorVersion:t,getCursorFocusState:n})=>{let[r,i]=(0,W.useState)(null),[a,o]=(0,W.useState)(null),[s,c]=(0,W.useState)(null),l=(0,W.useRef)(null),u=(0,W.useCallback)(()=>{if(!e){o(null),i(null);return}let t=(n??zY)(e.state);o(t),i(t?QQ(e,t):null)},[e,n]);(0,W.useEffect)(()=>{u()},[u,t]),(0,W.useEffect)(()=>{if(!e)return;let t=()=>u();return window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t,!0),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t,!0)}},[e,u]);let d=e?.state&&typeof e.state.field==`function`?Br(e.state)===`active`:!1;if(!r||!a?.section||d)return null;let f=a.allStatements?.filter(e=>e.meta?.line===a.cursorLine-a.section.startLine)??(a.statement?[a.statement]:[]),p=f.flatMap(e=>e.metrics.toArray()).filter(e=>{if(e.type===J.Sound||e.type===J.System||e.type===J.Hint&&!e.icon||e.type===J.Custom&&typeof e.value==`string`&&/^#[a-zA-Z0-9][a-zA-Z0-9-]*$/.test(e.value.trim()))return!1;if(e.type===J.Effort||e.type===J.Equipment){let t=ZQ(e);if(t.refs.length>0||t.diagnostics.length>0)return!1}return!0}),m=nK(p,`runtime-badge`),h=f.flatMap(e=>e.metrics.toArray()),g=[],_=[],v=[];for(let e of h){let t=ZQ(e);for(let e of t.refs){let t=`${e.kind}:${e.slug}`;g.includes(t)||(g.push(t),_.push(e))}v.push(...t.diagnostics)}let y=[],b=[];for(let e of h){let t=ba(e.metadata);if(t){y.some(e=>e.slug===t.slug)||y.push(t);continue}if(e.type===J.Custom&&typeof e.value==`string`&&/^#[a-zA-Z0-9][a-zA-Z0-9-]*$/.test(e.value.trim())){let t=e.value.trim().slice(1);b.includes(t)||b.push(t)}}let x=typeof e?.state?.facet==`function`?e.state.facet(lE)?.()??null:null,S=typeof e?.state?.doc?.sliceString==`function`?DY(e.state.doc.sliceString(a.lineFrom,a.lineTo)):null,C=e=>e.reason===`conflict`||e.reason.endsWith(`equipment`)||e.reason===`invalid-explicit`&&e.token&&S?.equipment.includes(e.token)?`equipment`:`effort`,w=e=>typeof e==`string`&&e.trim()?e:null,T=async t=>{if(!e)return;let n=e.state.doc.sliceString(a.lineFrom,a.lineTo),r=KU.getState();if(t===`effort`){let t=await r.open({placeholder:`Change effort…`,sources:[bY(`effort`)]});if(t.dismissed)return;let i=w(t.item.payload);if(!i)return;e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(n,{effort:i})}});return}let i=[...S?.equipment??[]];for(;;){let e=await r.open({placeholder:i.length>0?`Add equipment (Esc to finish)…`:`Set equipment…`,sources:[bY(`equipment`)]});if(e.dismissed)break;let t=w(e.item.payload);t&&!i.includes(t)&&i.push(t)}((S?.jsonFrom??-1)>=0||i.length>0)&&e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(n,{equipment:i})}})},E=async()=>{if(!e)return;let t=e.state.doc.sliceString(a.lineFrom,a.lineTo),n=KU.getState(),r,i=await n.open({placeholder:`Add effort (Esc to skip)…`,sources:[bY(`effort`)]});i.dismissed||(r=w(i.item.payload)??void 0);let o=[];for(;;){let e=await n.open({placeholder:`Add equipment (Esc to finish)…`,sources:[bY(`equipment`)]});if(e.dismissed)break;let t=w(e.item.payload);t&&!o.includes(t)&&o.push(t)}!r&&o.length===0||e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(t,{effort:r,equipment:o})}})},D=()=>{e&&typeof e.dispatch==`function`&&e.dispatch({effects:[jY.of(null)]}),u()},O=async t=>{if(!e||!t.token)return;let n=C(t),r=await KU.getState().open({placeholder:`Replace “${t.token}”…`,sources:[bY(n,t.candidates)]});if(r.dismissed)return;let i=w(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}})},k=async(e,t)=>{t.trim()&&(e===`effort`?await SY(t):await wY(t),D())},A=async e=>{if(!e.trim())return;let t=await KU.getState().open({placeholder:`Link “${e}” as alias to effort…`,sources:[bY(`effort`)]});if(t.dismissed)return;let n=w(t.item.payload);n&&(await CY(n,e),D())},j=async e=>{e.trim()&&(await TY(e),D())},M=t=>{let n=YQ[t.type];if(!n||!e)return;let r=t.type===J.Effort?`effort`:t.type===J.Equipment?`equipment`:null;if(r&&S?.jsonFrom!==void 0&&S.jsonFrom>=0){T(r);return}st(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-uTfwbWmx.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:t})=>{t(a,e,n)})};return(0,G.jsx)(`div`,{ref:l,className:K(`cm-metric-inline-panel`,`absolute z-40 pointer-events-auto`,`inline-flex items-center gap-1 px-1.5 py-0.5 min-h-[22px]`,r.belowLine?`bg-popover/95 backdrop-blur-md border border-border/70 rounded-md shadow-sm`:`bg-transparent`,`transition-opacity duration-100 max-w-full`),style:{top:r.top,left:r.left,maxWidth:r.maxWidth},"aria-live":`polite`,"aria-label":`Metric inline panel`,children:p.length>0||_.length>0||y.length>0||v.length>0||b.length>0?(0,G.jsxs)(`div`,{className:`flex items-center gap-1 flex-wrap`,children:[p.map((e,t)=>(0,G.jsx)(XQ,{metric:e,tooltip:e.type===J.Hint?String(e.value??``):m[t]?.tooltip,isFocused:a.focusedMetric===e,onClick:YQ[e.type]?()=>M(e):void 0},`${e.type}-${t}`)),_.map(e=>{let t=e.kind===`effort`&&a.focusedMetric?.type===J.Effort||e.kind===`equipment`&&a.focusedMetric?.type===J.Equipment;return(0,G.jsxs)(`span`,{title:`${e.kind===`effort`?`Effort`:`Equipment`}: ${e.label} (${e.slug})${e.matchedAlias?` · matched alias "${e.matchedAlias}"`:``} · click to change`,onClick:()=>void T(e.kind),className:K(`pointer-events-auto inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium cursor-pointer hover:opacity-80 whitespace-nowrap`,e.kind===`effort`?`bg-metric-effort/10 text-metric-effort border-metric-effort/30`:`bg-metric-equipment/10 text-metric-equipment border-metric-equipment/30`,t&&`font-bold shadow-xs`),children:[(0,G.jsx)(`span`,{children:e.kind===`effort`?`🏋`:`🧰`}),(0,G.jsx)(`span`,{className:`sr-only`,children:e.kind===`effort`?`Exercise`:`Equipment`}),(0,G.jsx)(`span`,{className:`font-semibold`,children:e.label}),x&&(0,G.jsx)(`a`,{href:x.openHref(e.kind,e.slug),title:`Open ${e.label} page`,"aria-label":`Open ${e.label} page`,className:`opacity-70 hover:opacity-100 ml-0.5`,onClick:e=>e.stopPropagation(),children:`↗`})]},`${e.kind}:${e.slug}`)}),y.map(e=>(0,G.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-0.5 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium bg-primary/10 text-primary border-primary/30 whitespace-nowrap`,children:[(0,G.jsx)(`span`,{children:`#`}),(0,G.jsx)(`span`,{className:`font-semibold font-mono`,children:e.label}),x&&(0,G.jsx)(`a`,{href:x.openHref(`tag`,e.slug),title:`Open the ${e.label} tag`,"aria-label":`Open the ${e.label} tag`,className:`opacity-70 hover:opacity-100 ml-0.5`,onClick:e=>e.stopPropagation(),children:`↗`})]},`tag:${e.slug}`)),S?.malformed&&(0,G.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,G.jsx)(`span`,{children:`⚠`}),(0,G.jsx)(`span`,{children:`Malformed reference JSON`})]}),b.map(e=>(0,G.jsxs)(`span`,{"data-testid":`editor-tag-unknown`,title:`Unknown tag #${e} — click to create`,className:`pointer-events-auto inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border border-dashed text-[10px] leading-none font-medium bg-warning/10 text-warning border-warning/40 whitespace-nowrap`,children:[(0,G.jsxs)(`span`,{className:`font-mono font-semibold`,children:[`#`,e]}),(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-create-tag-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold ml-0.5`,onClick:()=>void j(e),children:`+ Tag`})]},`unresolved-tag:${e}`)),v.map((e,t)=>{let n=C(e),r=e.token?.trim()??``,i=e.reason===`unknown-effort`,a=`${e.reason}-${r||t}`,o=s===a||s===`all`;return(0,G.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:e.message,onClick:()=>{o||c(a)},className:K(`pointer-events-auto inline-flex flex-wrap items-center gap-1.5 px-1.5 py-0.5 rounded-xl border border-dashed text-[10px] leading-tight font-medium bg-warning/10 text-warning border-warning/40 max-w-full`,!o&&`rounded-full whitespace-nowrap cursor-pointer hover:bg-warning/15`),children:[(0,G.jsx)(`span`,{children:`?`}),(0,G.jsx)(`span`,{className:`font-semibold`,children:e.token??e.reason}),o?(0,G.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1.5 pl-1 border-l border-warning/30`,children:[r&&(0,G.jsxs)(`button`,{type:`button`,"data-testid":`editor-create-${n}-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),k(n,r)},children:[`+ `,n===`effort`?`Effort`:`Equipment`]}),r&&i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-link-alias-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),A(r)},children:`+ Alias`}),r&&i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-create-equipment-from-token`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),k(`equipment`,r)},children:`+ Equipment`}),(0,G.jsx)(`button`,{type:`button`,className:`underline cursor-pointer hover:text-foreground`,onClick:t=>{t.stopPropagation(),O(e)},children:`Select existing`}),x&&(0,G.jsx)(`a`,{href:x.createHref(n),className:`underline hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`Create page`})]}):(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-define-token`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),c(a)},children:`Define ▾`})]},a)}),(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-add-metric-line`,title:`Add effort/equipment reference to this line`,onClick:()=>void E(),className:`pointer-events-auto inline-flex items-center px-1.5 py-0.5 rounded-full border border-dashed border-border/60 text-[10px] leading-none text-muted-foreground hover:text-foreground hover:border-primary/50 cursor-pointer whitespace-nowrap`,children:`+ Metric`})]}):(0,G.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60 italic select-none`,children:`No metrics on this line`})})},e$=new ui,t$=new ui,n$=new ui;async function r$(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 i$(e){let t=await r$(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`);return`${window.location.origin}/load?zip=${t}`}async function a$(e){let t=await r$(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`),n=`shared by ${Nx()}`;return`${window.location.origin}/?z=${t}&by=${encodeURIComponent(n)}`}var o$=({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 z=(0,W.useRef)(null),ee=(0,W.useRef)(null),te=(0,W.useRef)(null),ne=(0,W.useRef)(``),re=p===`dark`||p===`vs-dark`,{isDebugMode:ie}=fb(),ae=kY(te,x),[oe,se]=(0,W.useState)(null),[B,ce]=(0,W.useState)([]),[V,le]=(0,W.useState)(1),[ue,de]=(0,W.useState)(0),fe=F??oe,pe=XY(B,fe),[me,H]=(0,W.useState)(null),[he,ge]=(0,W.useState)(null),[_e,ve]=(0,W.useState)(null),[ye,be]=(0,W.useState)(!1),xe=(0,W.useRef)(null),Se=(0,W.useRef)(!1),Ce=(0,W.useRef)(n??0);(0,W.useEffect)(()=>{Ce.current=n??0},[n]);let[we,Te]=(0,W.useState)(null),Ee=(0,W.useRef)(null),De=(0,W.useCallback)(async(t,n=!1)=>{let r=ee.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(wT),c=await uM({noteId:e??tn(),rawContent:s.rawContent,blocks:s.noteBlocks,expectedSourceRevision:Ce.current,...e?{}:{metadata:{title:`Playground workout`},noteType:`playground`}},t,tn(),e?void 0:`playground`,ae);xe.current=c,Ee.current=null,Ce.current=c.note.sourceRevision,r.dispatch({effects:gT.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,ae,i,a]),Oe=(0,W.useCallback)(()=>{ge(null),ve(null),be(!1)},[]),ke=(0,W.useCallback)(e=>{M&&De(e,!0)},[M,De]),Ae=(0,W.useRef)(null),je=(0,W.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&&ee.current){let t=ee.current,n=UD(t.state,e,a);if(n){let e=n.from+n.insert.indexOf("```");t.dispatch({changes:n,effects:[kr.scrollIntoView(e,{y:`start`,yMargin:96})]}),l?.(t.state.doc.toString())}}r||(Ae.current={results:t,resultId:a,runBlock:o});let s;try{s=_M(ae).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,ae]),Me=(0,W.useMemo)(()=>{if(j)return[];if(A&&A.length>0)return A;let e=[];return M?e.push({id:`run`,label:`Run`,icon:(0,G.jsx)(hr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:De}):_&&e.push({id:`run`,label:`Run`,icon:(0,G.jsx)(hr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:_}),e.push({id:`playground`,label:`Playground`,icon:(0,G.jsx)(rt,{className:`h-3 w-3`}),splitIcon:(0,G.jsx)(qn,{className:`h-3 w-3`}),splitSuccessIcon:(0,G.jsx)(Bt,{className:`h-3 w-3`}),onClick:e=>{i$(e.content).then(e=>{let t=window.open(e,`wodwiki-playground`);t&&t.focus()})},onSplitClick:async e=>{let t=await a$(e.content);await navigator.clipboard.writeText(t)}}),b&&e.push({id:`plan`,label:`Plan`,icon:(0,G.jsx)(nr,{className:`h-3 w-3`}),onClick:b}),e},[A,_,b,M,j,De]),Ne=(0,W.useMemo)(()=>mi({codeLanguages:kO}),[]),Pe=(0,W.useMemo)(()=>{let e=Math.max(1,n),r=P?[...P.keys()]:Ma;if(t&&Object.keys(t).length>0)try{return Ba(c,t,e,{registeredWidgets:r}),t}catch{return za(c,{sourceRevision:e,blocks:t,registeredWidgets:r})}return za(c,{sourceRevision:e,registeredWidgets:r})},[c,t,n,P]),Fe=(0,W.useMemo)(()=>[...T?[$r(),Ur()]:[],Gr(),fi(),Mr(),pi(),...w?[kr.lineWrapping]:[],ii.allowMultipleSelections.of(!0),Ar(),wi(),Wr(),vi(),di.highest(Sr.of([{key:`Tab`,run:e=>Br(e.state)!==null&&(Ti(e),!0)},{key:`Enter`,run:e=>{let t=e.state.selection.main,n=u$(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:(wr(e),ti(e))}}])),Sr.of([...aee,...ei,...see,...li,...Ci,...cee,ni,{key:`Mod-s`,run:()=>(o?.(),!0)},{key:`Ctrl-.`,run:e=>{let t=zY(e.state);if(!t?.focusedMetric)return!1;let n=t.focusedMetric.type;return!new Set([`duration`,`rep`,`rounds`,`distance`,`resistance`]).has(n)&&(st(()=>Promise.resolve().then(()=>GU).then(()=>{st(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-uTfwbWmx.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:n})=>{n(t,e)}).catch(()=>{KU.getState().open({placeholder:`Modify metric…`,sources:[]})})}),void 0),!0)}}]),YD,wT,pT.of({blocks:Pe,sourceRevision:Math.max(1,n),rawContent:c}),mT.of(P?[...P.keys()]:Ma),TT,dE.of(D),fE.of(ie),...E||!D?[tD]:[],...E?[tE,iE,sY(),gY(),vD,fD(),kD]:[],...O?[AT]:[],JT,Ww,IT,FT,LT.of(s$),RT.of(c$),...k?[XD]:[],XT,fT,HY,...FD,cT,...P&&P.size>0?[OO(P)]:[],iO({executor:tV,onResultSaved:hM,readOnly:m,noteHref:e=>YL(`blockContentId`in e||`dataType`in e?RL(e):ML(e))}),AY(e,ae),kr.domEventHandlers({blur:()=>(f?.(),!1)}),kr.updateListener.of(e=>{if(e.docChanged){let t=e.state.field(wT);r?.({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:t.sourceRevision}),l(t.rawContent),u?.(e),f$(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){de(e=>e+1),e.transactions.some(e=>e.isUserEvent(`delete.backward`))&&Br(e.startState)!==null&&Br(e.state)===null&&u$(e.state,e.state.selection.main.head)?.value===``&&queueMicrotask(()=>{e.view.state===e.state&&ai(e.view)});let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t);d?.(n.number,t-n.from+1);let r=DT(e.state);se(r?.id??null),le(n.number);let{sections:i}=e.state.field(wT);ce(i)}}),ii.readOnly.of(m),kr.editable.of(!m),...R?[yi(R)]:[],kr.contentAttributes.of({"aria-label":g})],[l,d,f,u,y,r,m,o,s,T,w,E,D,ie,O,k,e,ae,P,R,g]);return(0,W.useEffect)(()=>{let e=z.current;if(!e)return;let t;try{t=ii.create({doc:c,extensions:[...Fe,e$.of(sT(re)),t$.of(Ne),n$.of([]),...N??[]]})}catch(e){console.error(`NoteEditor: Failed to initialize EditorState, recovering with safe fallback`,e),t=ii.create({doc:c,extensions:[e$.of(sT(re)),t$.of(Ne)]})}let n=new kr({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:kr.scrollIntoView(n.state.selection.main.head,{y:`nearest`,yMargin:24})})})};i?.addEventListener(`resize`,o),n.contentDOM.addEventListener(`focus`,o),ee.current=n,H(n),e.__codemirrorView=n,S?.(n);let{sections:s}=n.state.field(wT);ce(s);let l=n.state.doc.lineAt(n.state.selection.main.head).number;le(l);let u=DT(n.state);se(u?.id??null);let d=n.state.field(wT);return r?.({rawContent:d.rawContent,blocks:d.noteBlocks,sourceRevision:d.sourceRevision}),f$(n.state,y,ne),()=>{cancelAnimationFrame(a),i?.removeEventListener(`resize`,o),n.contentDOM.removeEventListener(`focus`,o),delete e.__codemirrorView,H(null),n.destroy()}},[]),(0,W.useEffect)(()=>{let e=ee.current;if(!e)return;let r=e.state.field(wT);if(c!==r.rawContent){let r=Math.max(1,n),i=t?za(c,{sourceRevision:r,blocks:t,registeredWidgets:P?[...P.keys()]:Ma}):void 0,a=i&&t&&Object.keys(i).length===Object.keys(t).length&&Object.entries(t).every(([e,t])=>{let n=i[e];return n&&n.from===t.from&&n.to===t.to&&n.kind===t.kind&&n.dialect===t.dialect&&n.sport===t.sport});e.dispatch({changes:{from:0,to:e.state.doc.length,insert:c},...a?{effects:_T.of({rawContent:c,blocks:t,sourceRevision:r})}:{}})}else t&&n!==r.sourceRevision&&e.dispatch({effects:gT.of({blocks:t,sourceRevision:Math.max(1,n)})})},[c,t,n]),(0,W.useEffect)(()=>{ee.current&&ee.current.dispatch({effects:e$.reconfigure(sT(re))})},[re]),(0,W.useEffect)(()=>{if(ee.current){let e=[];ee.current.dispatch({effects:[Zr.reconfigure.of([...Fe,e$.of(sT(re)),t$.of(Ne),n$.of(e),...N??[]])]})}},[Fe,N,C,re,Ne]),(0,W.useEffect)(()=>{m||ee.current?.focus()},[m]),(0,W.useEffect)(()=>{if(I&&ee.current){let e=ee.current,t=e.state.doc.toString().split(`
|
|
172
|
+
`),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,W.useEffect)(()=>{i?.connected||(a.current=``)},[i]),(0,W.useEffect)(()=>{t||(a.current=``)},[t]),(0,W.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},JQ={[J.Duration]:{label:`Timer`,icon:`⏱`,textClass:`text-metric-time`,bgClass:`bg-metric-time/10`,borderClass:`border-metric-time/30`},[J.Rep]:{label:`Reps`,icon:`✕`,textClass:`text-metric-rep`,bgClass:`bg-metric-rep/10`,borderClass:`border-metric-rep/30`},[J.Effort]:{label:`Exercise`,icon:`🏋`,textClass:`text-metric-effort`,bgClass:`bg-metric-effort/10`,borderClass:`border-metric-effort/30`},[J.Rounds]:{label:`Rounds`,icon:`↻`,textClass:`text-metric-rounds`,bgClass:`bg-metric-rounds/10`,borderClass:`border-metric-rounds/30`},[J.Distance]:{label:`Distance`,icon:`📏`,textClass:`text-metric-distance`,bgClass:`bg-metric-distance/10`,borderClass:`border-metric-distance/30`},[J.Resistance]:{label:`Weight`,icon:`⚖`,textClass:`text-metric-resistance`,bgClass:`bg-metric-resistance/10`,borderClass:`border-metric-resistance/30`},[J.Equipment]:{label:`Equipment`,icon:`🧰`,textClass:`text-metric-equipment`,bgClass:`bg-metric-equipment/10`,borderClass:`border-metric-equipment/30`},[J.Action]:{label:`Action`,icon:`⚡`,textClass:`text-metric-action`,bgClass:`bg-metric-action/10`,borderClass:`border-metric-action/30`},[J.Label]:{label:`Label`,icon:`🏷`,textClass:`text-muted-foreground`,bgClass:`bg-muted/30`,borderClass:`border-border/40`}},YQ={[J.Rep]:`reps`,[J.Effort]:`movement`,[J.Resistance]:`weight`},XQ=({metric:e,tooltip:t,isFocused:n,onClick:r})=>{let i=JQ[e.type],a=e.type===J.Hint,o=e.name??e.image??(e.value===void 0?``:String(e.value)),s=i?.label??String(e.type);return(0,G.jsxs)(`span`,{title:t,onClick:r,className:K(`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium whitespace-nowrap`,`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-xs`),children:[(0,G.jsx)(`span`,{children:a?e.icon:i?.icon??`•`}),!a&&(0,G.jsx)(`span`,{className:`sr-only`,children:s}),!a&&(0,G.jsx)(`span`,{className:`font-semibold`,children:o||s})]})};function ZQ(e){let t=da(e.metadata);return{refs:t?.refs??[],diagnostics:t?.diagnostics??[]}}function QQ(e,t){try{let n=e.coordsAtPos(t.lineFrom);if(!n)return null;let r=typeof t.lineTo==`number`?e.coordsAtPos(t.lineTo)??n:n,i=e.dom?.getBoundingClientRect?.()??{top:0,left:0,width:600},a=e.contentDOM?.getBoundingClientRect?.()??{left:0,width:600},o=Math.max(0,a.left-i.left),s=o+Math.max(240,a.width),c=r.left-i.left+12,l=s-c;if(l>=180){let e=typeof r.top==`number`?r.top:r.bottom-20;return{top:Math.max(0,e-i.top-1),left:c,maxWidth:l-4,belowLine:!1}}return{top:r.bottom-i.top+3,left:o,maxWidth:Math.max(220,a.width),belowLine:!0}}catch{return null}}var $Q=({view:e,cursorVersion:t,getCursorFocusState:n})=>{let[r,i]=(0,W.useState)(null),[a,o]=(0,W.useState)(null),[s,c]=(0,W.useState)(null),l=(0,W.useRef)(null),u=(0,W.useCallback)(()=>{if(!e){o(null),i(null);return}let t=(n??zY)(e.state);o(t),i(t?QQ(e,t):null)},[e,n]);(0,W.useEffect)(()=>{u()},[u,t]),(0,W.useEffect)(()=>{if(!e)return;let t=()=>u();return window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t,!0),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t,!0)}},[e,u]);let d=e?.state&&typeof e.state.field==`function`?Br(e.state)===`active`:!1;if(!r||!a?.section||d)return null;let f=a.allStatements?.filter(e=>e.meta?.line===a.cursorLine-a.section.startLine)??(a.statement?[a.statement]:[]),p=f.flatMap(e=>e.metrics.toArray()).filter(e=>{if(e.type===J.Sound||e.type===J.System||e.type===J.Hint&&!e.icon||e.type===J.Custom&&typeof e.value==`string`&&/^#[a-zA-Z0-9][a-zA-Z0-9-]*$/.test(e.value.trim()))return!1;if(e.type===J.Effort||e.type===J.Equipment){let t=ZQ(e);if(t.refs.length>0||t.diagnostics.length>0)return!1}return!0}),m=nK(p,`runtime-badge`),h=f.flatMap(e=>e.metrics.toArray()),g=[],_=[],v=[];for(let e of h){let t=ZQ(e);for(let e of t.refs){let t=`${e.kind}:${e.slug}`;g.includes(t)||(g.push(t),_.push(e))}v.push(...t.diagnostics)}let y=[],b=[];for(let e of h){let t=ba(e.metadata);if(t){y.some(e=>e.slug===t.slug)||y.push(t);continue}if(e.type===J.Custom&&typeof e.value==`string`&&/^#[a-zA-Z0-9][a-zA-Z0-9-]*$/.test(e.value.trim())){let t=e.value.trim().slice(1);b.includes(t)||b.push(t)}}let x=typeof e?.state?.facet==`function`?e.state.facet(lE)?.()??null:null,S=typeof e?.state?.doc?.sliceString==`function`?DY(e.state.doc.sliceString(a.lineFrom,a.lineTo)):null,C=e=>e.reason===`conflict`||e.reason.endsWith(`equipment`)||e.reason===`invalid-explicit`&&e.token&&S?.equipment.includes(e.token)?`equipment`:`effort`,w=e=>typeof e==`string`&&e.trim()?e:null,T=async t=>{if(!e)return;let n=e.state.doc.sliceString(a.lineFrom,a.lineTo),r=KU.getState();if(t===`effort`){let t=await r.open({placeholder:`Change effort…`,sources:[bY(`effort`)]});if(t.dismissed)return;let i=w(t.item.payload);if(!i)return;e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(n,{effort:i})}});return}let i=[...S?.equipment??[]];for(;;){let e=await r.open({placeholder:i.length>0?`Add equipment (Esc to finish)…`:`Set equipment…`,sources:[bY(`equipment`)]});if(e.dismissed)break;let t=w(e.item.payload);t&&!i.includes(t)&&i.push(t)}((S?.jsonFrom??-1)>=0||i.length>0)&&e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(n,{equipment:i})}})},E=async()=>{if(!e)return;let t=e.state.doc.sliceString(a.lineFrom,a.lineTo),n=KU.getState(),r,i=await n.open({placeholder:`Add effort (Esc to skip)…`,sources:[bY(`effort`)]});i.dismissed||(r=w(i.item.payload)??void 0);let o=[];for(;;){let e=await n.open({placeholder:`Add equipment (Esc to finish)…`,sources:[bY(`equipment`)]});if(e.dismissed)break;let t=w(e.item.payload);t&&!o.includes(t)&&o.push(t)}!r&&o.length===0||e.dispatch({changes:{from:a.lineFrom,to:a.lineTo,insert:OY(t,{effort:r,equipment:o})}})},D=()=>{e&&typeof e.dispatch==`function`&&e.dispatch({effects:[jY.of(null)]}),u()},O=async t=>{if(!e||!t.token)return;let n=C(t),r=await KU.getState().open({placeholder:`Replace “${t.token}”…`,sources:[bY(n,t.candidates)]});if(r.dismissed)return;let i=w(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}})},k=async(e,t)=>{t.trim()&&(e===`effort`?await SY(t):await wY(t),D())},A=async e=>{if(!e.trim())return;let t=await KU.getState().open({placeholder:`Link “${e}” as alias to effort…`,sources:[bY(`effort`)]});if(t.dismissed)return;let n=w(t.item.payload);n&&(await CY(n,e),D())},j=async e=>{e.trim()&&(await TY(e),D())},M=t=>{let n=YQ[t.type];if(!n||!e)return;let r=t.type===J.Effort?`effort`:t.type===J.Equipment?`equipment`:null;if(r&&S?.jsonFrom!==void 0&&S.jsonFrom>=0){T(r);return}st(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-CNz2Wkh9.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:t})=>{t(a,e,n)})};return(0,G.jsx)(`div`,{ref:l,className:K(`cm-metric-inline-panel`,`absolute z-40 pointer-events-auto`,`inline-flex items-center gap-1 px-1.5 py-0.5 min-h-[22px]`,r.belowLine?`bg-popover/95 backdrop-blur-md border border-border/70 rounded-md shadow-sm`:`bg-transparent`,`transition-opacity duration-100 max-w-full`),style:{top:r.top,left:r.left,maxWidth:r.maxWidth},"aria-live":`polite`,"aria-label":`Metric inline panel`,children:p.length>0||_.length>0||y.length>0||v.length>0||b.length>0?(0,G.jsxs)(`div`,{className:`flex items-center gap-1 flex-wrap`,children:[p.map((e,t)=>(0,G.jsx)(XQ,{metric:e,tooltip:e.type===J.Hint?String(e.value??``):m[t]?.tooltip,isFocused:a.focusedMetric===e,onClick:YQ[e.type]?()=>M(e):void 0},`${e.type}-${t}`)),_.map(e=>{let t=e.kind===`effort`&&a.focusedMetric?.type===J.Effort||e.kind===`equipment`&&a.focusedMetric?.type===J.Equipment;return(0,G.jsxs)(`span`,{title:`${e.kind===`effort`?`Effort`:`Equipment`}: ${e.label} (${e.slug})${e.matchedAlias?` · matched alias "${e.matchedAlias}"`:``} · click to change`,onClick:()=>void T(e.kind),className:K(`pointer-events-auto inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium cursor-pointer hover:opacity-80 whitespace-nowrap`,e.kind===`effort`?`bg-metric-effort/10 text-metric-effort border-metric-effort/30`:`bg-metric-equipment/10 text-metric-equipment border-metric-equipment/30`,t&&`font-bold shadow-xs`),children:[(0,G.jsx)(`span`,{children:e.kind===`effort`?`🏋`:`🧰`}),(0,G.jsx)(`span`,{className:`sr-only`,children:e.kind===`effort`?`Exercise`:`Equipment`}),(0,G.jsx)(`span`,{className:`font-semibold`,children:e.label}),x&&(0,G.jsx)(`a`,{href:x.openHref(e.kind,e.slug),title:`Open ${e.label} page`,"aria-label":`Open ${e.label} page`,className:`opacity-70 hover:opacity-100 ml-0.5`,onClick:e=>e.stopPropagation(),children:`↗`})]},`${e.kind}:${e.slug}`)}),y.map(e=>(0,G.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-0.5 px-1.5 py-0.5 rounded-full border text-[10px] leading-none font-medium bg-primary/10 text-primary border-primary/30 whitespace-nowrap`,children:[(0,G.jsx)(`span`,{children:`#`}),(0,G.jsx)(`span`,{className:`font-semibold font-mono`,children:e.label}),x&&(0,G.jsx)(`a`,{href:x.openHref(`tag`,e.slug),title:`Open the ${e.label} tag`,"aria-label":`Open the ${e.label} tag`,className:`opacity-70 hover:opacity-100 ml-0.5`,onClick:e=>e.stopPropagation(),children:`↗`})]},`tag:${e.slug}`)),S?.malformed&&(0,G.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,G.jsx)(`span`,{children:`⚠`}),(0,G.jsx)(`span`,{children:`Malformed reference JSON`})]}),b.map(e=>(0,G.jsxs)(`span`,{"data-testid":`editor-tag-unknown`,title:`Unknown tag #${e} — click to create`,className:`pointer-events-auto inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full border border-dashed text-[10px] leading-none font-medium bg-warning/10 text-warning border-warning/40 whitespace-nowrap`,children:[(0,G.jsxs)(`span`,{className:`font-mono font-semibold`,children:[`#`,e]}),(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-create-tag-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold ml-0.5`,onClick:()=>void j(e),children:`+ Tag`})]},`unresolved-tag:${e}`)),v.map((e,t)=>{let n=C(e),r=e.token?.trim()??``,i=e.reason===`unknown-effort`,a=`${e.reason}-${r||t}`,o=s===a||s===`all`;return(0,G.jsxs)(`span`,{"data-testid":`editor-ref-unknown`,title:e.message,onClick:()=>{o||c(a)},className:K(`pointer-events-auto inline-flex flex-wrap items-center gap-1.5 px-1.5 py-0.5 rounded-xl border border-dashed text-[10px] leading-tight font-medium bg-warning/10 text-warning border-warning/40 max-w-full`,!o&&`rounded-full whitespace-nowrap cursor-pointer hover:bg-warning/15`),children:[(0,G.jsx)(`span`,{children:`?`}),(0,G.jsx)(`span`,{className:`font-semibold`,children:e.token??e.reason}),o?(0,G.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1.5 pl-1 border-l border-warning/30`,children:[r&&(0,G.jsxs)(`button`,{type:`button`,"data-testid":`editor-create-${n}-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),k(n,r)},children:[`+ `,n===`effort`?`Effort`:`Equipment`]}),r&&i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-link-alias-inline`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),A(r)},children:`+ Alias`}),r&&i&&(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-create-equipment-from-token`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),k(`equipment`,r)},children:`+ Equipment`}),(0,G.jsx)(`button`,{type:`button`,className:`underline cursor-pointer hover:text-foreground`,onClick:t=>{t.stopPropagation(),O(e)},children:`Select existing`}),x&&(0,G.jsx)(`a`,{href:x.createHref(n),className:`underline hover:text-foreground`,onClick:e=>e.stopPropagation(),children:`Create page`})]}):(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-define-token`,className:`underline cursor-pointer hover:text-foreground font-semibold`,onClick:e=>{e.stopPropagation(),c(a)},children:`Define ▾`})]},a)}),(0,G.jsx)(`button`,{type:`button`,"data-testid":`editor-add-metric-line`,title:`Add effort/equipment reference to this line`,onClick:()=>void E(),className:`pointer-events-auto inline-flex items-center px-1.5 py-0.5 rounded-full border border-dashed border-border/60 text-[10px] leading-none text-muted-foreground hover:text-foreground hover:border-primary/50 cursor-pointer whitespace-nowrap`,children:`+ Metric`})]}):(0,G.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60 italic select-none`,children:`No metrics on this line`})})},e$=new ui,t$=new ui,n$=new ui;async function r$(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 i$(e){let t=await r$(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`);return`${window.location.origin}/load?zip=${t}`}async function a$(e){let t=await r$(`\`\`\`time\n${e.trimEnd()}\n\`\`\`\n`),n=`shared by ${Nx()}`;return`${window.location.origin}/?z=${t}&by=${encodeURIComponent(n)}`}var o$=({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 z=(0,W.useRef)(null),ee=(0,W.useRef)(null),te=(0,W.useRef)(null),ne=(0,W.useRef)(``),re=p===`dark`||p===`vs-dark`,{isDebugMode:ie}=fb(),ae=kY(te,x),[oe,se]=(0,W.useState)(null),[B,ce]=(0,W.useState)([]),[V,le]=(0,W.useState)(1),[ue,de]=(0,W.useState)(0),fe=F??oe,pe=XY(B,fe),[me,H]=(0,W.useState)(null),[he,ge]=(0,W.useState)(null),[_e,ve]=(0,W.useState)(null),[ye,be]=(0,W.useState)(!1),xe=(0,W.useRef)(null),Se=(0,W.useRef)(!1),Ce=(0,W.useRef)(n??0);(0,W.useEffect)(()=>{Ce.current=n??0},[n]);let[we,Te]=(0,W.useState)(null),Ee=(0,W.useRef)(null),De=(0,W.useCallback)(async(t,n=!1)=>{let r=ee.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(wT),c=await uM({noteId:e??tn(),rawContent:s.rawContent,blocks:s.noteBlocks,expectedSourceRevision:Ce.current,...e?{}:{metadata:{title:`Playground workout`},noteType:`playground`}},t,tn(),e?void 0:`playground`,ae);xe.current=c,Ee.current=null,Ce.current=c.note.sourceRevision,r.dispatch({effects:gT.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,ae,i,a]),Oe=(0,W.useCallback)(()=>{ge(null),ve(null),be(!1)},[]),ke=(0,W.useCallback)(e=>{M&&De(e,!0)},[M,De]),Ae=(0,W.useRef)(null),je=(0,W.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&&ee.current){let t=ee.current,n=UD(t.state,e,a);if(n){let e=n.from+n.insert.indexOf("```");t.dispatch({changes:n,effects:[kr.scrollIntoView(e,{y:`start`,yMargin:96})]}),l?.(t.state.doc.toString())}}r||(Ae.current={results:t,resultId:a,runBlock:o});let s;try{s=_M(ae).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,ae]),Me=(0,W.useMemo)(()=>{if(j)return[];if(A&&A.length>0)return A;let e=[];return M?e.push({id:`run`,label:`Run`,icon:(0,G.jsx)(hr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:De}):_&&e.push({id:`run`,label:`Run`,icon:(0,G.jsx)(hr,{className:`h-3 w-3 fill-current`}),primary:!0,onClick:_}),e.push({id:`playground`,label:`Playground`,icon:(0,G.jsx)(rt,{className:`h-3 w-3`}),splitIcon:(0,G.jsx)(qn,{className:`h-3 w-3`}),splitSuccessIcon:(0,G.jsx)(Bt,{className:`h-3 w-3`}),onClick:e=>{i$(e.content).then(e=>{let t=window.open(e,`wodwiki-playground`);t&&t.focus()})},onSplitClick:async e=>{let t=await a$(e.content);await navigator.clipboard.writeText(t)}}),b&&e.push({id:`plan`,label:`Plan`,icon:(0,G.jsx)(nr,{className:`h-3 w-3`}),onClick:b}),e},[A,_,b,M,j,De]),Ne=(0,W.useMemo)(()=>mi({codeLanguages:kO}),[]),Pe=(0,W.useMemo)(()=>{let e=Math.max(1,n),r=P?[...P.keys()]:Ma;if(t&&Object.keys(t).length>0)try{return Ba(c,t,e,{registeredWidgets:r}),t}catch{return za(c,{sourceRevision:e,blocks:t,registeredWidgets:r})}return za(c,{sourceRevision:e,registeredWidgets:r})},[c,t,n,P]),Fe=(0,W.useMemo)(()=>[...T?[$r(),Ur()]:[],Gr(),fi(),Mr(),pi(),...w?[kr.lineWrapping]:[],ii.allowMultipleSelections.of(!0),Ar(),wi(),Wr(),vi(),di.highest(Sr.of([{key:`Tab`,run:e=>Br(e.state)!==null&&(Ti(e),!0)},{key:`Enter`,run:e=>{let t=e.state.selection.main,n=u$(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:(wr(e),ti(e))}}])),Sr.of([...aee,...ei,...see,...li,...Ci,...cee,ni,{key:`Mod-s`,run:()=>(o?.(),!0)},{key:`Ctrl-.`,run:e=>{let t=zY(e.state);if(!t?.focusedMetric)return!1;let n=t.focusedMetric.type;return!new Set([`duration`,`rep`,`rounds`,`distance`,`resistance`]).has(n)&&(st(()=>Promise.resolve().then(()=>GU).then(()=>{st(async()=>{let{runStatementBuilderFlow:e}=await import(`./statementBuilderFlow-CNz2Wkh9.js`);return{runStatementBuilderFlow:e}},__vite__mapDeps([3,1,0,2])).then(({runStatementBuilderFlow:n})=>{n(t,e)}).catch(()=>{KU.getState().open({placeholder:`Modify metric…`,sources:[]})})}),void 0),!0)}}]),YD,wT,pT.of({blocks:Pe,sourceRevision:Math.max(1,n),rawContent:c}),mT.of(P?[...P.keys()]:Ma),TT,dE.of(D),fE.of(ie),...E||!D?[tD]:[],...E?[tE,iE,sY(),gY(),vD,fD(),kD]:[],...O?[AT]:[],JT,Ww,IT,FT,LT.of(s$),RT.of(c$),...k?[XD]:[],XT,fT,HY,...FD,cT,...P&&P.size>0?[OO(P)]:[],iO({executor:tV,onResultSaved:hM,readOnly:m,noteHref:e=>YL(`blockContentId`in e||`dataType`in e?RL(e):ML(e))}),AY(e,ae),kr.domEventHandlers({blur:()=>(f?.(),!1)}),kr.updateListener.of(e=>{if(e.docChanged){let t=e.state.field(wT);r?.({rawContent:t.rawContent,blocks:t.noteBlocks,sourceRevision:t.sourceRevision}),l(t.rawContent),u?.(e),f$(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){de(e=>e+1),e.transactions.some(e=>e.isUserEvent(`delete.backward`))&&Br(e.startState)!==null&&Br(e.state)===null&&u$(e.state,e.state.selection.main.head)?.value===``&&queueMicrotask(()=>{e.view.state===e.state&&ai(e.view)});let{head:t}=e.state.selection.main,n=e.state.doc.lineAt(t);d?.(n.number,t-n.from+1);let r=DT(e.state);se(r?.id??null),le(n.number);let{sections:i}=e.state.field(wT);ce(i)}}),ii.readOnly.of(m),kr.editable.of(!m),...R?[yi(R)]:[],kr.contentAttributes.of({"aria-label":g})],[l,d,f,u,y,r,m,o,s,T,w,E,D,ie,O,k,e,ae,P,R,g]);return(0,W.useEffect)(()=>{let e=z.current;if(!e)return;let t;try{t=ii.create({doc:c,extensions:[...Fe,e$.of(sT(re)),t$.of(Ne),n$.of([]),...N??[]]})}catch(e){console.error(`NoteEditor: Failed to initialize EditorState, recovering with safe fallback`,e),t=ii.create({doc:c,extensions:[e$.of(sT(re)),t$.of(Ne)]})}let n=new kr({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:kr.scrollIntoView(n.state.selection.main.head,{y:`nearest`,yMargin:24})})})};i?.addEventListener(`resize`,o),n.contentDOM.addEventListener(`focus`,o),ee.current=n,H(n),e.__codemirrorView=n,S?.(n);let{sections:s}=n.state.field(wT);ce(s);let l=n.state.doc.lineAt(n.state.selection.main.head).number;le(l);let u=DT(n.state);se(u?.id??null);let d=n.state.field(wT);return r?.({rawContent:d.rawContent,blocks:d.noteBlocks,sourceRevision:d.sourceRevision}),f$(n.state,y,ne),()=>{cancelAnimationFrame(a),i?.removeEventListener(`resize`,o),n.contentDOM.removeEventListener(`focus`,o),delete e.__codemirrorView,H(null),n.destroy()}},[]),(0,W.useEffect)(()=>{let e=ee.current;if(!e)return;let r=e.state.field(wT);if(c!==r.rawContent){let r=Math.max(1,n),i=t?za(c,{sourceRevision:r,blocks:t,registeredWidgets:P?[...P.keys()]:Ma}):void 0,a=i&&t&&Object.keys(i).length===Object.keys(t).length&&Object.entries(t).every(([e,t])=>{let n=i[e];return n&&n.from===t.from&&n.to===t.to&&n.kind===t.kind&&n.dialect===t.dialect&&n.sport===t.sport});e.dispatch({changes:{from:0,to:e.state.doc.length,insert:c},...a?{effects:_T.of({rawContent:c,blocks:t,sourceRevision:r})}:{}})}else t&&n!==r.sourceRevision&&e.dispatch({effects:gT.of({blocks:t,sourceRevision:Math.max(1,n)})})},[c,t,n]),(0,W.useEffect)(()=>{ee.current&&ee.current.dispatch({effects:e$.reconfigure(sT(re))})},[re]),(0,W.useEffect)(()=>{if(ee.current){let e=[];ee.current.dispatch({effects:[Zr.reconfigure.of([...Fe,e$.of(sT(re)),t$.of(Ne),n$.of(e),...N??[]])]})}},[Fe,N,C,re,Ne]),(0,W.useEffect)(()=>{m||ee.current?.focus()},[m]),(0,W.useEffect)(()=>{if(I&&ee.current){let e=ee.current,t=e.state.doc.toString().split(`
|
|
173
173
|
`),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:[kr.scrollIntoView(t,{y:`start`,yMargin:20})]})}}},[I]),(0,G.jsxs)(`div`,{ref:z,className:`cm-note-editor relative w-full min-w-0 ${h}`,children:[k&&(0,G.jsx)(GY,{view:me??ee.current,widths:pe.widths,activeSectionId:fe,renderSlot:t=>{if(!D&&t.sectionType===`frontmatter`)return null;if(t.sectionType===`time`||t.sectionType===`log`)return(0,G.jsx)(bX,{noteId:e,sectionId:t.sectionId,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,cursorLine:V,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(wT),n=e.find(e=>e.id===t.sectionId);return(0,G.jsx)(eX,{sectionId:t.sectionId,section:n,view:t.view,isActive:t.isActive,widthPercent:t.widthPercent,docVersion:t.docVersion})}return t.sectionType===`widget`&&t.widgetName?(0,G.jsx)(xX,{sectionId:t.sectionId,widgetName:t.widgetName,view:t.view,registry:P??new Map,docVersion:t.docVersion}):(0,G.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,G.jsx)(`div`,{className:`font-medium text-foreground`,children:t.sectionType})})},cursorLine:V}),we&&(0,G.jsxs)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:[`Workout not started. `,we,` Your draft is kept.`]}),!k&&Me.length>0&&(0,G.jsx)(KQ,{view:me??ee.current,commands:Me}),(0,G.jsx)($Q,{view:me??ee.current,cursorVersion:ue}),he&&ee.current&&(0,G.jsx)(zQ,{block:he,view:me??ee.current,onClose:Oe,onCompleteWorkout:je,resultId:_e??void 0,autoStart:ye}),(0,G.jsx)(qQ,{sections:B,isRuntimeActive:he!==null,editorState:(me??ee.current)?.state??null,onSelectBlock:ke})]})},s$=async e=>{if(!l$(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=u$(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)&&l$(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 _Y();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=u$(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=u$(r,n);return/^[\w-]*$/.test(e)&&i?.propertyKey===o&&i.from===t}}},c$=vY();function l$(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 u$(e,t){if(!l$(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 d$(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=kc({tags:iM()}).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(wT).noteBlocks[e.id]?.version??1,createdAt:Date.now(),widgetIds:{}}}function f$(e,t,n){if(!t)return;let r=e.field(wT).sections.filter(e=>e.type===`time`||e.type===`log`).map(t=>d$(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 p$({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,W.useRef)([]),E=(0,W.useCallback)(e=>{T.current=e,a?.(e)},[a]),D=(0,W.useCallback)(()=>{v?.onRun(n,T.current[0]??null)},[v,n]),O=(0,G.jsxs)(G.Fragment,{children:[y,v&&(0,G.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,G.jsx)(hr,{size:11,fill:`currentColor`}),v.label??`Run`]})]});return(0,G.jsx)(oY,{title:e,subtitle:t,onReset:_,headerActions:O,className:S,children:(0,G.jsxs)(`div`,{className:`flex h-full flex-col min-h-0`,children:[b,(0,G.jsxs)(`div`,{ref:w,className:K(`relative flex-1 min-h-0`,C),children:[(0,G.jsx)(o$,{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 m$({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,G.jsx)(`div`,{className:`h-full`,style:{opacity:t,transition:`opacity 180ms ease`},children:(0,G.jsx)(p$,{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,G.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,G.jsx)(`span`,{children:`Try editing this example ↓`}),e===n?null:(0,G.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 h$(e,t){return e>=t?`split`:`stack`}function g$(e,t){let n=(0,W.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:h$(t,n)}},[e]),[r,i]=(0,W.useState)(n);return(0,W.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:h$(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 _$=e=>Math.max(0,Math.min(1,e)),v$=(e,t,n)=>e+(t-e)*n,y$=e=>1-(1-e)**2;function b$(e,t){return e===``||t===e}var x$={id:``,range:[0,1]};function S$(e,t){if(!t||t.length===0)return{index:-1,stage:x$,t:0,ring:null};let n=_$(e),r=t.map(e=>({...e,start:_$(Math.min(e.range[0],e.range[1])),end:_$(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]??x$,o=(a.end??1)-(a.start??0),s=o>0?_$((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 C$(e,t,n){let r=t-n;return{progress:r>0?_$(-e/r):0,reached:e<=0,inView:e<n&&e+t>0}}function w$(e,t){let n=t/2;for(let t of e)if(t.top<=n&&t.bottom>n)return t.id;return null}var T$=(0,W.createContext)(null);function E$(){return(0,W.useContext)(T$)}function D$({children:e}){let t=(0,W.useRef)(new Map),n=(0,W.useRef)(new Map),r=(0,W.useRef)(null),i=(0,W.useRef)(0),[a,o]=(0,W.useState)(null),s=(0,W.useRef)(null),c=(0,W.useCallback)(e=>{r.current?.gateId===e&&(r.current=null,o(null))},[]),l=(0,W.useCallback)((e,t)=>{r.current={gateId:e,segmentId:t},o(e)},[]),u=(0,W.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=w$(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=C$(r.top,r.height,e);t.onMeasure({slice:S$(i.progress,t.getStages()),progress:i.progress,reached:i.reached})})},[]),d=(0,W.useCallback)(()=>{i.current||=requestAnimationFrame(u)},[u]);(0,W.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,W.useCallback)((e,n)=>(t.current.set(e,n),d(),()=>{t.current.delete(e)}),[d]),p=(0,W.useCallback)((e,t)=>(n.current.set(e,t),d(),()=>{n.current.delete(e)}),[d]),m=(0,W.useCallback)(()=>u(),[u]),h=(0,W.useMemo)(()=>({registerAnchor:f,registerDriver:p,resync:m,capturedGateId:a,captureGate:l,releaseGate:c}),[f,p,m,a,l,c]);return(0,G.jsx)(T$.Provider,{value:h,children:e})}function O$(e,t){let n=E$()?.registerAnchor;(0,W.useEffect)(()=>{if(n)return n(e,()=>t.current)},[n,e,t])}function k$({gateId:e,segmentId:t,className:n,children:r}){let i=E$(),a=(0,W.useRef)(null),[o,s]=(0,W.useState)(!1);if((0,W.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,G.jsx)(`div`,{className:n,children:r});let c=i.capturedGateId===e?`captured`:`yield`;return(0,G.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,G.jsx)(`div`,{ref:a,className:`relative min-h-0 flex-1`,children:r}),(o||c===`captured`)&&(0,G.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 A$({trackRef:e,height:t,stages:n,activeIndex:r,pane:i,captions:a,status:o,segmentId:s,testId:c,className:l}){let[u,d]=(0,W.useState)(null),f=g$(104,u).mode===`split`,p={status:o,pips:(0,G.jsx)(`div`,{className:`flex items-center gap-1.5`,"aria-hidden":`true`,children:n.map((e,t)=>{let n=r===t;return(0,G.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,G.jsx)(`section`,{ref:e,"data-testid":c,className:l?`relative ${l}`:`relative`,style:{height:t},children:(0,G.jsx)(iY.Provider,{value:p,children:(0,G.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,G.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,G.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-[3_1_0%]`,children:i}),(0,G.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-[2_1_0%] flex-col`,children:s?(0,G.jsx)(k$,{gateId:`${s}-captions`,segmentId:s,className:`relative min-h-0 flex-1`,children:a}):(0,G.jsx)(`div`,{className:`relative min-h-0 flex-1`,children:a})})]})})})})}function j$(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 M$(e,t,n=`smooth`){let r=j$(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 N$(e,t,n,r){let[i,a]=(0,W.useState)(()=>S$(0,n)),[o,s]=(0,W.useState)(!1),c=(0,W.useRef)(0),l=(0,W.useRef)(i),u=(0,W.useRef)(new Set),d=(0,W.useRef)(0),f=(0,W.useRef)(t);f.current=t;let p=E$(),m=p?.registerDriver,h=(0,W.useRef)(p);h.current=p;let g=(0,W.useId)(),_=r??g,v=(0,W.useRef)(n);v.current=n;let y=(0,W.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,W.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(S$(i,v.current),i)},[e,y]),x=(0,W.useCallback)(()=>{if(h.current){h.current.resync();return}b()},[b]),S=(0,W.useCallback)(()=>{d.current||=requestAnimationFrame(x)},[x]);(0,W.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,W.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,W.useCallback)(e=>(u.current.add(e),e(l.current,c.current),()=>{u.current.delete(e)}),[]),w=(0,W.useCallback)(()=>{x()},[x]);return{slice:i,progress:c.current,runwayReached:o,subscribe:C,resync:w}}var P$={reference:!0},F$={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 I$(e,t){let n=e.filter(e=>!P$[e.id]),r=e.filter(e=>P$[e.id]);if(n.length===0)return{groups:[],tail:r};let i=t?F$[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 L$(e){let t=Math.max(1,e.length);return e.map((e,n)=>({id:e.id,range:[n/t,(n+1)/t]}))}var R$=[{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 z$({slides:e=R$,className:t}){let n=(0,W.useRef)(null),[r,i]=(0,W.useState)(0);(0,W.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,G.jsxs)(`div`,{className:K(`relative w-full`,t),children:[(0,G.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,G.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,G.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,G.jsx)(`img`,{src:t.src,alt:t.alt,loading:n===0?`eager`:`lazy`,className:`h-full w-full object-cover`})}),(0,G.jsxs)(`div`,{className:`flex w-full flex-col gap-2 sm:w-1/2 sm:gap-3`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-black uppercase tracking-[0.24em] text-primary/80`,children:t.eyebrow}),(0,G.jsx)(`h3`,{className:`text-2xl font-black tracking-[-0.04em] text-foreground sm:text-3xl`,children:t.title}),(0,G.jsx)(`p`,{className:`text-sm leading-7 text-muted-foreground sm:text-base`,children:t.caption}),(0,G.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-2 text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground`,children:[(0,G.jsxs)(`span`,{className:`text-primary`,children:[`Step `,n+1]}),(0,G.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),(0,G.jsx)(`span`,{children:e.length})]})]})]},t.src))}),(0,G.jsx)(`div`,{className:`mt-4 flex items-center justify-center gap-2`,children:e.map((e,t)=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>a(t),"aria-label":`Go to slide ${t+1}: ${e.title}`,"aria-current":t===r?`true`:`false`,className:K(`h-2 rounded-full transition-all`,t===r?`w-8 bg-primary`:`w-2 bg-border hover:bg-muted-foreground/40`)},e.src))})]})}var B$=`wodwiki:text-filter-navigation`,V$=({paramName:e=`q`,placeholder:t=`Search…`,autoFocus:n=!1,className:r,navigationScope:i,inputTestId:a})=>{let[o,s]=dn(e,{defaultValue:``}),c=i??e,l=(0,W.useRef)(null);return(0,W.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,G.jsxs)(`div`,{className:K(`flex items-center gap-3 px-6 lg:px-10 pb-3`,r),children:[(0,G.jsx)(ve,{className:`size-5 text-muted-foreground shrink-0`}),(0,G.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(B$,{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,G.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 U$(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 W$(e){return new Date(e).toISOString().slice(0,10)}function G$(e,t){let n=t.trim().toLowerCase();return!n||e.name.toLowerCase().includes(n)||e.content.toLowerCase().includes(n)||e.date!==void 0&&W$(e.date).includes(n)}function K$(e){if(!e)return null;let t=H$(oo(e).split(`
|
|
174
174
|
`)).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&!e.startsWith("```"))[0];return t?U$(t):null}var q$=({category:e,workoutItems:t,onSelect:n,showSearch:r=!0,variant:i=`card`,className:a,navigationScope:o=`q`,getItemActions:s})=>{let[c]=dn(`q`,{defaultValue:``}),[l,u]=(0,W.useState)(0),[d,f]=(0,W.useState)(0),p=(0,W.useRef)([]),m=(0,W.useMemo)(()=>t.filter(t=>t.category===e&&t.name.toLowerCase()!==`readme`).filter(e=>G$(e,c)),[t,e,c]),h=(0,W.useMemo)(()=>m.map(e=>({item:e,preview:K$(e.content),actions:s?.(e)??[{id:`open`,label:`Open`,onSelect:n}]})),[m,s,n]);return(0,W.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,W.useEffect)(()=>{p.current=[]},[h]),(0,W.useEffect)(()=>{u(0),f(0)},[c]),(0,W.useEffect)(()=>{(p.current[l]?.[d])?.scrollIntoView({block:`nearest`,inline:`nearest`})},[d,l]),(0,W.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(B$,e),()=>{window.removeEventListener(B$,e)}},[h,o,d,l]),(0,G.jsxs)(`div`,{className:K(`flex flex-col`,i===`card`&&`rounded-3xl border border-border bg-card overflow-hidden shadow-2xl shadow-black/5`,a),children:[r?(0,G.jsx)(`div`,{className:`border-b border-border/60 bg-background/95 backdrop-blur-md`,children:(0,G.jsx)(V$,{placeholder:`Filter collection workouts…`,className:`pt-3`,navigationScope:o})}):null,h.length===0?(0,G.jsx)(`div`,{className:`px-6 py-10 text-sm font-medium text-muted-foreground`,children:`No workouts found.`}):(0,G.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,G.jsx)(`div`,{role:`option`,"aria-selected":n,className:K(`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,G.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:K(`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,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`flex-shrink-0 size-10 rounded-xl bg-muted flex items-center justify-center transition-colors`,children:(0,G.jsx)(Se,{className:`size-4 text-primary`})}),(0,G.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,G.jsx)(`h3`,{className:`text-sm font-bold text-foreground truncate uppercase tracking-tight`,children:e.item.displayName??e.item.name}),e.preview?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium truncate mt-1`,children:e.preview}):null]}),e.item.date===void 0?null:(0,G.jsx)(`span`,{className:`shrink-0 self-center text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:hb(new Date(e.item.date))}),(0,G.jsx)(On,{className:`size-4 text-muted-foreground shrink-0 transition-opacity`})]}):r.label},r.id)})},e.item.id)})})]})};function J$(){return(0,W.useEffect)(()=>{YB().catch(e=>console.warn(`[queryService] page source population failed`,e))},[]),(0,W.useSyncExternalStore)(QB,ZB)}function Y$(e,t){let n=e.find(e=>e.key===t&&!e.negate);return n&&n.values.length===1?n.values[0].value:null}function X$(e){let t=e.trim();if(!t.startsWith(`:`))return null;let n=OI(t),r=X(n);if(r.error||!Sh(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=Y$(r.filters,`notebook`);if(e){let t=Oa(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=Y$(r.filters,`notebook`);if(e){let t=Oa(e);return t===`journal`?`/journal${i}`:t===`playground`?`/playgrounds${i}`:`/notebook/${encodeURIComponent(t)}${i}`}let t=Y$(r.filters,`source`);return t===`journal`?`/journal${i}`:t===`playground`?`/playgrounds${i}`:t===`feeds`||t===`notebooks`||t===`notebook`||t===`guides`?`/notes${i}`:Y$(r.filters,`type`)===`dashboard`?`/dashboards${i}`:`/notes${i}`}default:return null}}function Z$(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 Q$=[{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}],$$=300;function e1({open:e,...t}){return e?(0,G.jsx)(t1,{...t}):null}function t1({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,W.useState)(n),[_,v]=(0,W.useState)(r?.title??``),[y,b]=(0,W.useState)(r?.question??``),[x,S]=(0,W.useState)(r?.type||`table`),[C,w]=(0,W.useState)({spanCols:r?.spanCols,spanFull:r?.spanFull}),[T,E]=(0,W.useState)(Object.entries(r?.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `)),[D,O]=(0,W.useState)(!1),[k,A]=(0,W.useState)(()=>!X(n).error),[j,M]=(0,W.useState)(null),N=(0,W.useMemo)(()=>X(h.trim()),[h]),P=x===``?`table`:x,F=!N.error&&h.trim()!==``&&(Sh(N)?P===`table`||P===`list`:P!==`list`),[I,L]=(0,W.useState)({status:`idle`}),R=(0,W.useRef)(0);(0,W.useEffect)(()=>{if(!F||!o){L(e=>e.status===`ok`?e:{status:`idle`});return}let e=Hv(h.trim(),u??{});if(e.missing.length>0){L({status:`blocked`,message:Nv(e.missing)});return}let t=++R.current;L({status:`loading`});let n=setTimeout(()=>{new x_(SS(o,{rangeStart:s,rangeEnd:c,preferredUnit:l})).run(e.query).then(n=>{if(R.current!==t)return;let r=n.outputs[0],i=r?.error??n.diagnostics[0];if(!r||i){L({status:`error`,message:i??`widget produced no output`});return}L({status:`ok`,result:wS(X(e.query),r)})}).catch(e=>{R.current===t&&L({status:`error`,message:e instanceof Error?e.message:String(e)})})},$$);return()=>clearTimeout(n)},[h,F,o,s,c,l,u]);let z=!F&&I.status===`ok`,ee=F&&k,te=async()=>{if(!(!ee||!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:Z$(T)}),e()}catch(e){M(e instanceof Error?e.message:String(e))}finally{O(!1)}}};return(0,G.jsx)(QC,{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,G.jsxs)(G.Fragment,{children:[f,(0,G.jsx)(`div`,{className:`flex-1`}),!m&&(0,G.jsxs)(G.Fragment,{children:[(0,G.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,G.jsx)(`button`,{type:`button`,"data-testid":`widget-composer-apply`,disabled:!ee||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,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[i!==void 0&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Dataset — the subset`}),i?(0,G.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,G.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,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,G.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Query & Filter Manipulation`}),!m&&u&&Object.keys(u).length>0&&(0,G.jsx)(`div`,{className:`flex flex-wrap items-center gap-1`,"data-testid":`widget-composer-token-chips`,children:Object.keys(u).map(e=>(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{let t=h.trim();e===`scope`?t.includes(`{}`)?g(t.replace(`{}`,`{$scope}`)):t.includes(`$scope`)||g(`${t} where :note{$scope}`):t.includes(`$${e}`)||g(t.replace(/\{([^}]*)\}/,(t,n)=>n.trim()?`{${n},${e}:$${e}}`:`{${e}:$${e}}`))},className:`rounded border border-primary/30 bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] font-semibold text-primary hover:bg-primary/20 transition-colors`,title:`Bind $${e} token into query`,children:[`+$`,e]},e))})]}),m?(0,G.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,G.jsx)(nT,{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,G.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,G.jsxs)(`div`,{className:`mt-3 flex flex-col gap-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,G.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Visualization`}),(0,G.jsx)(`select`,{value:x,onChange:e=>S(e.target.value),"data-testid":`widget-composer-type`,"aria-label":`Visualization`,className:`rounded-md border border-border bg-card px-2 py-1 text-xs font-mono text-foreground focus:outline-none focus:border-primary`,children:kv.map(e=>(0,G.jsx)(`option`,{value:e,children:e},e))})]}),(0,G.jsx)(`div`,{className:`grid grid-cols-5 gap-1.5`,role:`group`,"aria-label":`Visualization picker`,children:kv.map(e=>{let t=x===e;return(0,G.jsx)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>S(e),className:`rounded-lg border px-2 py-1.5 text-[11px] font-semibold truncate transition-colors ${t?`border-primary bg-primary/10 text-primary`:`border-border/70 bg-card text-muted-foreground hover:text-foreground hover:bg-muted/60`}`,children:e},e)})})]})]}),!m&&(0,G.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,G.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,G.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Title`}),(0,G.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,G.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,G.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Coaching question `,(0,G.jsx)(`span`,{className:`normal-case font-normal`,children:`(optional)`})]}),(0,G.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,G.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,G.jsx)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:`Size`}),(0,G.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border bg-card p-1 self-start`,children:Q$.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,G.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,G.jsxs)(`label`,{className:`flex flex-col gap-1 sm:col-span-2`,children:[(0,G.jsxs)(`span`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground`,children:[`Parameters `,(0,G.jsx)(`span`,{className:`normal-case font-normal`,children:`(goal targets, space-separated)`})]}),(0,G.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,G.jsxs)(`section`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs text-muted-foreground`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Title`}),(0,G.jsx)(`div`,{className:`text-foreground`,children:r?.title||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Question`}),(0,G.jsx)(`div`,{className:`text-foreground`,children:r?.question||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Type`}),(0,G.jsx)(`div`,{className:`font-mono text-foreground`,children:x||`table`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`font-bold uppercase tracking-wider text-[10px]`,children:`Size`}),(0,G.jsx)(`div`,{className:`font-mono text-foreground`,children:r?.spanFull?`full row`:r?.spanCols?`${r.spanCols} cols`:`default`})]})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5 flex items-center gap-2`,children:[`Preview`,z&&(0,G.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,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3 h-56 overflow-hidden`,children:[I.status===`idle`&&(F?(0,G.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Preview runs as you compose…`}):(0,G.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:Sh(N)?`find: queries return things — use a table or list widget instead`:`Compose a calculation to preview.`})),I.status===`loading`&&(0,G.jsx)(`div`,{className:`h-full flex items-center justify-center text-xs text-muted-foreground`,children:`Running preview…`}),I.status===`blocked`&&(0,G.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,G.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,G.jsx)(US,{type:x,result:I.result,label:_.trim()||void 0,unit:l,attributes:Z$(T)})]})]}),j&&(0,G.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})]})})}var n1=`__new__`;function r1(e){return e.open?(0,G.jsx)(i1,{...e},e.subsetQuery??`(whole-store)`):null}function i1({onOpenChange:e,initialQuery:t,subsetQuery:n,rangeStart:r,rangeEnd:i,preferredUnit:a}){let o=fn(),{items:s,loading:c}=IF(),l=s.filter(e=>e.editable),[u,d]=(0,W.useState)(l[0]?.slug??n1),[f,p]=(0,W.useState)(``),[m,h]=(0,W.useState)(null),g=()=>e(!1);return(0,G.jsx)(e1,{open:!0,onClose:g,mode:`add`,initialWql:t,subsetQuery:n,rangeStart:r,rangeEnd:i,preferredUnit:a,onApply:async e=>{h(null);let t={title:e.title,question:e.question,type:e.type,spanCols:e.spanCols,spanFull:e.spanFull,wql:e.wql,attributes:e.attributes};try{if(u===n1){let e=f.trim()||`New Dashboard`,n=await KF.createDashboard(e);await WF.update(n,ny(n.rawContent,t)),g(),o(TF(Jv(e)))}else{let e=await WF.resolve(u);await WF.update(e,ny(e.rawContent,t)),g(),o(TF(u))}}catch(e){let t=e instanceof Error?e.message:String(e);throw h(t),e}},applyLabel:`Add to dashboard`,destination:(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`div`,{className:`text-[11px] font-bold uppercase tracking-wider text-muted-foreground mb-1.5`,children:`Destination`}),c?(0,G.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading dashboards…`}):(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[l.map(e=>(0,G.jsx)(`button`,{type:`button`,"aria-pressed":u===e.slug,onClick:()=>d(e.slug),className:`rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors ${u===e.slug?`border-primary/60 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:e.title},e.slug)),(0,G.jsxs)(`button`,{type:`button`,"data-testid":`dashboard-dest-new`,"aria-pressed":u===n1,onClick:()=>d(n1),className:`flex items-center gap-1 rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors ${u===n1?`border-primary/60 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:[(0,G.jsx)(nr,{className:`size-3`}),` New dashboard`]})]}),u===n1&&(0,G.jsx)(`input`,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`New Dashboard`,"data-testid":`dashboard-new-title`,className:`w-full sm:w-64 rounded-lg border border-border bg-card px-3 py-1.5 text-sm text-foreground focus:outline-none focus:border-primary`})]}),m&&(0,G.jsxs)(`p`,{role:`alert`,"data-testid":`dashboard-save-error`,className:`mt-2 text-xs text-destructive font-mono`,children:[`Could not save: `,m]})]})})}var a1=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 o1(e){let t=e.split(`.`).pop()?.split(`?`)[0]?.toLowerCase()??``;return a1.has(t)}function s1(e){return/^https?:\/\//.test(e)||e.startsWith(`//`)}function c1({queryText:e,widgetType:t,widgetError:n,attributes:r}){let i=J$(),a=En(),[o,s]=(0,W.useState)(!1),c=/^\/dashboards?(?:\/|$)/.test(a.pathname),l=X(e),u=!l.error&&Sh(l)?e:null;return i?(0,G.jsxs)(`div`,{className:`my-5 not-prose`,children:[(0,G.jsx)(iT,{query:e,widgetType:t,widgetError:n,attributes:r,executor:tV,readOnly:!0,onAddToDashboard:c?void 0:()=>s(!0),noteHref:e=>YL(`blockContentId`in e||`dataType`in e?RL(e):ML(e))}),(0,G.jsx)(r1,{open:o,onOpenChange:s,initialQuery:e,subsetQuery:u})]}):(0,G.jsx)(`div`,{className:`my-5 not-prose text-xs text-muted-foreground py-2`,children:`Loading…`})}function l1(e){let{meta:t,body:n}=ro(e);return Object.keys(t).length===0&&n===e?{fields:null,body:e}:{fields:t,body:n.trim()}}var u1={table({children:e}){return(0,G.jsx)(`div`,{className:`my-6 overflow-x-auto rounded-xl border border-border`,children:(0,G.jsx)(`table`,{className:`w-full text-sm border-collapse`,children:e})})},thead({children:e}){return(0,G.jsx)(`thead`,{className:`bg-muted/50 text-left`,children:e})},tbody({children:e}){return(0,G.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e})},tr({children:e}){return(0,G.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e})},th({children:e}){return(0,G.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,G.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,G.jsxs)(`figure`,{className:`my-6`,children:[(0,G.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,G.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=X$(e);if(r)return(0,G.jsx)(sn,{to:r,className:`underline underline-offset-2 transition-colors text-primary hover:text-primary/70`,children:t})}let r=s1(n),i=o1(n);return(0,G.jsxs)(`a`,{href:n,rel:r?`noopener noreferrer`:void 0,target:r||i?`_blank`:void 0,className:K(`underline underline-offset-2 transition-colors`,i?`text-primary font-medium`:`text-primary hover:text-primary/70`),children:[t,r&&(0,G.jsx)(`span`,{className:`ml-0.5 text-[10px] align-super opacity-60`,children:`↗`}),i&&!r&&(0,G.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(`
|
|
175
175
|
`))return(0,G.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 `)||n.startsWith(`widget:`)){let t=(typeof e==`string`?e:Array.isArray(e)?e.join(``):String(e??``)).trim(),r=n.replace(/^(?:query|widget)[:\s]?/,``).trim(),i=r?Fv(r):void 0;return(0,G.jsx)(c1,{queryText:t,widgetType:i?.type,widgetError:i?.error,attributes:i?.attributes})}return(0,G.jsxs)(`div`,{className:`my-5 rounded-xl overflow-hidden border border-border`,children:[n&&(0,G.jsx)(`div`,{className:`flex items-center gap-2 px-4 py-2 bg-muted border-b border-border`,children:(0,G.jsx)(`span`,{className:`text-[10px] font-black tracking-widest uppercase text-muted-foreground`,children:n})}),(0,G.jsx)(`pre`,{className:`overflow-x-auto p-4 bg-muted/30`,children:(0,G.jsx)(`code`,{className:`font-mono text-sm text-foreground`,children:e})})]})},h1({children:e,id:t}){return(0,G.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,G.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,G.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,G.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,G.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,G.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,G.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,G.jsx)(`li`,{className:`leading-relaxed`,children:e})},blockquote({children:e}){return(0,G.jsx)(`blockquote`,{className:`my-5 pl-4 border-l-2 border-primary/40 text-muted-foreground italic text-sm`,children:e})},hr(){return(0,G.jsx)(`hr`,{className:`my-8 border-border/50`})},strong({children:e}){return(0,G.jsx)(`strong`,{className:`font-black text-foreground`,children:e})},em({children:e}){return(0,G.jsx)(`em`,{className:`italic text-foreground/80`,children:e})}},d1={...u1,p({children:e}){return(0,G.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=W.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,G.jsxs)(`span`,{className:`flex flex-col select-none mt-4 w-full gap-5 sm:gap-7`,children:[(0,G.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,G.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Markdown`}),`.`]}),(0,G.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,G.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,G.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,G.jsx)(`span`,{className:`inline-block border-b-4 border-primary/70 pb-1 hover:scale-105 transition-transform duration-200`,children:`Analytics`}),`.`]})]}):(0,G.jsx)(`strong`,{className:`font-black text-foreground`,children:e})}},f1={...u1,p({children:e}){return(0,G.jsx)(`p`,{className:`text-base lg:text-lg font-medium text-foreground/75 leading-relaxed my-4 first:mt-0`,children:e})}},p1=[Wn];function m1(e){return e.startsWith(`:`)?e:Pn(e)}function h1(e){return e.type===`text`&&typeof e.value==`string`?e.value:(e.children??[]).map(h1).join(``)}function g1(e){return e.trim().toLowerCase().replace(/[^\p{L}\p{N} _-]/gu,``).replace(/ /g,`-`).replace(/-+/g,`-`)||`heading`}var _1=()=>e=>{let t=new Map,n=e=>{if(e.tagName&&/^h[1-6]$/.test(e.tagName)){let n=g1(h1(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 v1({fields:e}){let t=Object.entries(e);return t.length===0?null:(0,G.jsxs)(`div`,{className:`my-6 rounded-xl border border-border bg-muted/30 overflow-hidden`,children:[(0,G.jsx)(`div`,{className:`px-4 py-2 border-b border-border bg-muted/50`,children:(0,G.jsx)(`span`,{className:`text-[10px] font-black tracking-[0.2em] uppercase text-muted-foreground`,children:`Metadata`})}),(0,G.jsx)(`dl`,{className:`divide-y divide-border/50`,children:t.map(([e,t])=>(0,G.jsxs)(`div`,{className:`flex items-baseline gap-4 px-4 py-2`,children:[(0,G.jsx)(`dt`,{className:`text-[11px] font-semibold text-muted-foreground uppercase tracking-wide min-w-[100px] shrink-0`,children:e}),(0,G.jsx)(`dd`,{className:`text-sm text-foreground break-words`,children:Array.isArray(t)?t.join(`, `):String(t)})]},e))})]})}var y1={default:u1,heroLead:d1,heroBody:f1};function b1({prose:e,className:t,variant:n=`default`}){if(!e)return null;let{fields:r,body:i}=l1(e);return(0,G.jsxs)(`div`,{className:K(`prose-canvas`,t),children:[r&&(0,G.jsx)(v1,{fields:r}),i&&(0,G.jsx)(hn,{remarkPlugins:p1,rehypePlugins:[_1],urlTransform:m1,components:y1[n],children:i})]})}var x1=({activations:e,fullBleed:t,runState:n,deps:r})=>{if(e.length===0)return null;let i=e[0];if(rR(i)&&n){let a=e.slice(1),o=n.isReconnect?(0,G.jsxs)(`button`,{onClick:n.onReconnect,className:K(`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,G.jsx)(Ye,{className:`size-3.5`}),`View`]}):(0,G.jsxs)(`button`,{type:`button`,onClick:n.onRun,className:K(`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||hr;return(0,G.jsx)(e,{className:`shrink-0 size-4 fill-current sm:size-3`})})(),(0,G.jsx)(`span`,{children:i.label})]});return(0,G.jsxs)(`div`,{className:K(`flex flex-wrap items-center gap-4 mt-8`,t&&`justify-center`),children:[o,a.map((e,t)=>(0,G.jsx)(`button`,{onClick:()=>eR(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,G.jsx)(`div`,{className:K(`flex flex-wrap gap-4 mt-8`,t&&`justify-center`),children:e.map((e,t)=>(0,G.jsx)(`button`,{onClick:()=>eR(e.action,r),className:K(`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))})},S1=({examples:e,activeIndex:t,onSelect:n})=>e.length===0?null:(0,G.jsx)(`div`,{className:`mt-6 rounded-2xl border border-border/70 bg-card/80 backdrop-blur-sm`,children:(0,G.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,G.jsxs)(`button`,{type:`button`,onClick:()=>n(r),"aria-current":i?`true`:void 0,className:K(`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,G.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}`)})})}),C1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`path`,{d:`M35 35 L65 35 L65 45 L45 45 L45 65 L35 65 Z`,fill:`url(#struct-grad)`}),(0,G.jsx)(`path`,{d:`M55 45 L65 45 L65 65 L45 65 L45 55 L55 55 Z`,fill:`url(#struct-grad)`,opacity:`0.7`})]}),w1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`circle`,{cx:`50`,cy:`50`,r:`5`,fill:`url(#proto-grad)`}),(0,G.jsx)(`circle`,{cx:`50`,cy:`50`,r:`15`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`2`,strokeDasharray:`4 2`}),(0,G.jsx)(`circle`,{cx:`50`,cy:`50`,r:`25`,fill:`none`,stroke:`url(#proto-grad)`,strokeWidth:`1`,opacity:`0.5`}),(0,G.jsx)(`line`,{x1:`50`,y1:`50`,x2:`50`,y2:`25`,stroke:`url(#proto-grad)`,strokeWidth:`4`,strokeLinecap:`round`})]}),T1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`complex-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#F50057`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#D500F9`,stopOpacity:1}})]})}),(0,G.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,G.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)`})]}),E1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsxs)(`defs`,{children:[(0,G.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]}),(0,G.jsxs)(`filter`,{id:`glow`,x:`-20%`,y:`-20%`,width:`140%`,height:`140%`,children:[(0,G.jsx)(`feGaussianBlur`,{stdDeviation:`3`,result:`blur`}),(0,G.jsx)(`feComposite`,{in:`SourceGraphic`,in2:`blur`,operator:`over`})]})]}),(0,G.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,G.jsx)(`path`,{d:`M55 20 L30 55 L45 55 L40 85 L70 45 L55 45 Z`,fill:`url(#basics-grad)`,filter:`url(#glow)`})]}),D1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`text`,{x:`50`,y:`65`,fontFamily:`monospace`,fontSize:`40`,fontWeight:`bold`,fill:`url(#basics-grad)`,textAnchor:`middle`,children:`10`})]}),O1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`basics-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00F2FF`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#6200EA`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`rect`,{x:`30`,y:`30`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,G.jsx)(`rect`,{x:`30`,y:`45`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`}),(0,G.jsx)(`rect`,{x:`30`,y:`60`,width:`40`,height:`8`,rx:`2`,fill:`url(#basics-grad)`})]}),k1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,G.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,G.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`})]}),A1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`struct-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E676`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00F2FF`,stopOpacity:1}})]})}),(0,G.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,G.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,G.jsx)(`text`,{x:`50`,y:`30`,fontFamily:`monospace`,fontSize:`12`,fill:`url(#struct-grad)`,textAnchor:`middle`,children:`21-15-9`})]}),j1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`proto-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#FFD600`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#FFAB00`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`path`,{d:`M35 35 H65 V55 L50 70 L35 55 Z`,fill:`url(#proto-grad)`}),(0,G.jsx)(`circle`,{cx:`50`,cy:`45`,r:`4`,fill:`#0b1326`})]}),M1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,G.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,G.jsx)(`rect`,{x:`30`,y:`60`,width:`10`,height:`15`,fill:`url(#metric-grad)`}),(0,G.jsx)(`rect`,{x:`45`,y:`40`,width:`10`,height:`35`,fill:`url(#metric-grad)`}),(0,G.jsx)(`rect`,{x:`60`,y:`25`,width:`10`,height:`50`,fill:`url(#metric-grad)`})]}),N1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`metric-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#00E5FF`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#1DE9B6`,stopOpacity:1}})]})}),(0,G.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,G.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`})]}),P1=e=>(0,G.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,...e,children:[(0,G.jsx)(`defs`,{children:(0,G.jsxs)(`linearGradient`,{id:`dialect-grad`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`100%`,children:[(0,G.jsx)(`stop`,{offset:`0%`,style:{stopColor:`#76FF03`,stopOpacity:1}}),(0,G.jsx)(`stop`,{offset:`100%`,style:{stopColor:`#00E676`,stopOpacity:1}})]})}),(0,G.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,G.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 F1(e){switch(e){case`trophy`:return E1;case`dumbbell`:return Se;case`timer`:return w1;case`play`:return hr;case`blocks`:return C1;case`puzzle`:return T1;case`activity`:return M1;case`file-text`:return P1;default:return oe}}function I1(e){switch(e){case`basics-movement`:return E1;case`basics-reps`:return D1;case`basics-load`:return O1;case`structure-rounds`:case`complex-rounds`:case`protocols-rounds`:return k1;case`structure-repscheme`:return A1;case`protocols-timer`:case`complex-time`:return w1;case`protocols-tag`:return j1;case`metrics-custom`:return M1;case`metrics-calc`:return N1;case`dialects-log`:case`dialects-climb`:return P1;default:return null}}function L1({quest:e,onClick:t,className:n,compact:r=!1,disabled:i=!1}){let a=I1(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:K(`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,G.jsxs)(G.Fragment,{children:[a?(0,G.jsxs)(`span`,{className:K(`relative shrink-0 mt-0.5`,r?`size-5`:`size-6`),children:[(0,G.jsx)(a,{className:`w-full h-full`}),e.isCompleted&&(0,G.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,G.jsx)(Bt,{className:`size-2`,strokeWidth:3})})]}):(0,G.jsx)(`span`,{className:K(`mt-0.5 shrink-0`,e.isCompleted?`text-primary`:`text-muted-foreground/50`),"aria-hidden":`true`,children:e.isCompleted?(0,G.jsx)(ln,{className:r?`size-3.5`:`size-4`}):(0,G.jsx)(Ct,{className:r?`size-3.5`:`size-4`})}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsx)(`p`,{className:K(`font-semibold`,e.isCompleted?`text-foreground line-through decoration-primary/40`:`text-foreground`,r&&`text-xs`),children:e.label}),e.desc&&!r&&(0,G.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:e.desc}),(0,G.jsx)(`p`,{"data-testid":`challenge-hint-${e.id}`,className:K(`mt-1 text-xs`,e.isCompleted||e.result?.pass?`text-primary/80`:`text-muted-foreground`),children:s})]})]});return t?(0,G.jsx)(`button`,{type:`button`,onClick:t,disabled:i,...c,children:l}):(0,G.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 z1=({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=gz[e.theme||`slate`]??gz.slate,E=e.examples??[],D=t===-1,O=W.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,G.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,G.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,G.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,G.jsxs)(`div`,{className:`relative max-w-2xl w-full text-center`,children:[o&&(0,G.jsx)(b1,{prose:o,variant:`heroLead`,className:`mb-5`}),s&&(0,G.jsx)(b1,{prose:s,variant:`heroBody`,className:`mb-2`}),c.map((e,t)=>{if(e.kind===`prose`){let n=e.text.trim();return n?(0,G.jsx)(b1,{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,G.jsx)(`div`,{className:`my-4 flex justify-center`,children:(0,G.jsx)(L1,{quest:n,onClick:()=>b?.(r),compact:!0})},`hero-challenge-${t}`):null}return null}),t.length>0&&(0,G.jsx)(x1,{activations:t.map((e,t)=>nR(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,G.jsxs)(`div`,{id:r,"data-section-id":i==="default"||i===`before-workouts`?e.id:void 0,className:K(`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,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:K(`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,G.jsx)(`div`,{className:K(`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,G.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,G.jsxs)(`div`,{className:K(`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,G.jsx)(`div`,{className:`mb-4 flex items-center gap-2 select-none min-h-[14px]`,children:O.quest.isCompleted?(0,G.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,G.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-emerald-500 dark:bg-emerald-400 animate-pulse`}),`Challenge Complete`]}):(0,G.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,G.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-zinc-400 dark:bg-zinc-500`}),O.chapterTitle,`: Challenge Pending`]})}),a?(0,G.jsx)(`h2`,{className:K(`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,G.jsx)(b1,{prose:n,className:t===0?`mb-6`:`mt-4 mb-6`},`prose-${t}`):null}if(e.kind===`button`)return(0,G.jsx)(x1,{activations:[nR(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,G.jsx)(`div`,{className:`my-6`,children:(0,G.jsx)(z$,{})},`hero-carousel-${t}`);if(e.widget===`workouts-list`&&g&&_&&y)return(0,G.jsx)(`div`,{id:`notebook-workouts`,className:`border-b border-border/50 bg-card my-6`,children:(0,G.jsx)(`div`,{className:`w-full mx-auto`,children:(0,G.jsx)(q$,{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,G.jsx)(`div`,{className:`my-4`,children:(0,G.jsx)(L1,{quest:n,onClick:()=>b?.(r),compact:!0})},`challenge-${t}`):null}return null}),E.length>0?(0,G.jsx)(S1,{examples:E,activeIndex:Math.min(p,E.length-1),onSelect:t=>f(e,t)}):null,s&&A?(0,G.jsx)(x1,{activations:e.buttons.map((e,t)=>nR(e,t)),fullBleed:S,runState:l?u:void 0,deps:d}):null]})]},`${e.id}-${i}`)};function B1({sections:e,activeIndex:t,part:n,args:r}){return(0,G.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,G.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,G.jsx)(z1,{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 V1({sections:e,part:t,partCount:n,title:r,pane:i,cardArgs:a,onActivateSection:o}){let s=(0,W.useRef)(null),c=(0,W.useMemo)(()=>L$(e),[e]),{slice:l,subscribe:u}=N$(s,!1,c),d=(0,W.useRef)(e);d.current=e;let[f,p]=(0,W.useState)(!1);(0,W.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,W.useState)(!1);(0,W.useEffect)(()=>u(()=>{let e=m();g(t=>t===e?t:e)}),[u]);let _=(0,W.useRef)(!1),v=(0,W.useRef)(-1),y=(0,W.useRef)(o);y.current=o,(0,W.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,G.jsxs)(`div`,{children:[(0,G.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,G.jsxs)(`div`,{className:`font-mono text-[11px] uppercase tracking-[0.22em] text-muted-foreground`,children:[`Part `,t,` / `,n]}),(0,G.jsx)(`h2`,{className:`mt-1 text-xl font-black uppercase tracking-tight text-foreground`,children:r})]}),(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(A$,{trackRef:s,height:`${(e.length+1)*100}vh`,stages:c,activeIndex:l.index,pane:f?i:null,captions:(0,G.jsx)(B1,{sections:e,activeIndex:l.index,part:t,args:a}),status:(0,G.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,G.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} + 160px)`}},t.id))]})]})}function H1({sections:e,groupKey:t,title:n,pane:r,cardArgs:i,onActivateSection:a}){let{groups:o,tail:s}=I$(e,t);return(0,G.jsxs)(G.Fragment,{children:[o.map((e,t)=>(0,G.jsx)(V1,{sections:e,part:t+1,partCount:o.length,title:n,pane:r,cardArgs:i,onActivateSection:a},e[0]?.id??t)),s.length>0&&(0,G.jsx)(`div`,{className:`mx-auto w-full max-w-[1500px] px-6 lg:px-12`,"data-testid":`guide-static-tail`,children:(0,G.jsx)(`div`,{className:`lg:max-w-[50%]`,children:s.map((e,t)=>(0,G.jsx)(z1,{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 U1({videoId:e,title:t=`YouTube video`,onClose:n}){return(0,W.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,JC.createPortal)((0,G.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,G.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,G.jsx)(xr,{className:`size-5`})}),(0,G.jsx)(`div`,{className:`aspect-video w-full max-w-5xl overflow-hidden rounded-lg border border-border bg-black shadow-2xl`,children:(0,G.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 W1({index:e,before:t,accentText:n,after:r,accent:i,blurb:a}){return(0,G.jsx)(`header`,{className:`flex items-center px-6 py-14 lg:px-12 xl:py-20 2xl:py-24 xl:px-16`,children:(0,G.jsxs)(`div`,{className:`mx-auto w-full max-w-[1500px] 2xl:max-w-[1720px]`,children:[(0,G.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,G.jsx)(`span`,{className:`font-mono text-xs font-normal tracking-normal text-muted-foreground`,children:e}),(0,G.jsxs)(`span`,{children:[t,n,r]})]}),(0,G.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 G1=`hsl(var(--primary))`,K1={ink:`hsl(var(--foreground))`,editor:G1,timer:G1,analytics:G1,library:G1,rounds:G1},q1={editor:`WOD Editor & Autocomplete`,timer:`Clock`,analytics:`WQL Analytics`,metrics:`Own the Metrics`,result:`Run Results`},J1={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`},Y1=`dQw4w9WgXcQ`,X1=`https://i.ytimg.com/vi/${Y1}/hqdefault.jpg`;function Z1({variant:e=`index`}){let t=Kz(),{pathname:n}=En(),[r,i]=(0,W.useState)(null),a=(0,W.useMemo)(()=>lz(t).flatMap(e=>e.action?.type===`route`?[{id:e.id,label:e.label,to:e.action.to}]:[]),[t]),o=(0,W.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,G.jsx)(U1,{videoId:Y1,title:r.label,onClose:()=>i(null)});return e===`university`?(0,G.jsxs)(`section`,{id:`tour-section-university`,"data-testid":`tour-section-university`,"aria-label":`Wod Wiki University`,children:[(0,G.jsx)(W1,{index:`05`,before:`Wod Wiki `,accentText:`University`,after:``,accent:K1.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,G.jsx)(`nav`,{"aria-label":`Wod Wiki University`,className:`px-6 pb-16 lg:px-12 xl:px-16`,children:(0,G.jsx)(`ul`,{className:`mx-auto flex w-full max-w-5xl flex-col gap-5`,children:a.map((e,t)=>(0,G.jsxs)(`li`,{className:K(`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,G.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,G.jsx)(`img`,{src:X1,alt:``,loading:`lazy`,className:`aspect-video w-full object-cover transition-transform duration-300 group-hover:scale-105`}),(0,G.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center bg-black/25 transition-colors group-hover:bg-black/40`,children:(0,G.jsx)(hr,{className:`size-9 fill-white text-white`})})]}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,G.jsx)(sn,{to:e.to,className:`font-semibold hover:underline`,children:e.label}),(0,G.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:o.get(e.id)??e.to})]})]},e.id))})}),u]}):(0,G.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,G.jsxs)(`div`,{className:`mx-auto flex w-full max-w-3xl flex-col rounded-lg border border-border overflow-hidden`,children:[(0,G.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,G.jsx)(`ul`,{className:`flex flex-col divide-y divide-border`,children:a.map((e,t)=>(0,G.jsxs)(`li`,{className:`flex items-stretch`,children:[(0,G.jsxs)(sn,{to:e.to,"aria-current":t===s?`page`:void 0,className:K(`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,G.jsxs)(`span`,{className:`flex w-full items-baseline justify-between gap-3`,children:[(0,G.jsx)(`span`,{className:`font-medium`,children:e.label}),t===l&&(0,G.jsx)(`span`,{className:`text-xs font-semibold text-primary`,"data-testid":`guide-next-marker`,children:`Next →`})]}),(0,G.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.to})]}),(0,G.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,G.jsx)(hr,{className:`size-3.5`}),`Watch`]})]},e.id))})]}),u]})}var Q1=`22rem`,$1=`42rem`,e0=`20rem`,t0=`calc(100dvh - var(--canvas-sticky-top) - 2rem)`;function n0(e){return{editorWidth:e||`50%`,editorMinWidth:Q1,editorMaxWidth:$1,editorMinHeight:e0,editorMaxHeight:t0}}function r0(e){let t=Math.max(1,e.split(`
|
|
@@ -496,4 +496,4 @@ Fran went unbroken until round three. Throat on fire.
|
|
|
496
496
|
`,k9]})]})}var Nre=`✎`;function Pre({wql:e,setWql:t}){let[n,r]=(0,W.useState)(!1),[i,a]=(0,W.useState)(e);return(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(j9,{wql:e}),!n&&(0,G.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:Nre})]}),n&&(0,G.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,G.jsx)(`div`,{className:`text-[10px] text-sky-400 font-mono`,children:`editing query:table — Apply writes the fence`}),(0,G.jsx)(nT,{query:i,onQueryChange:a,autoFocus:!0,placeholder:`:session…`}),(0,G.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,G.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,G.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 Fre({wql:e,setWql:t}){let[n,r]=(0,W.useState)(!1);return(0,G.jsxs)(`div`,{className:`space-y-3 pb-24`,children:[(0,G.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,G.jsx)(j9,{wql:e})}),(0,G.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,G.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,G.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,G.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-muted-foreground hover:text-foreground`,children:`Done`})]}),n&&(0,G.jsx)(nT,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`})]})]})}function Ire({wql:e,setWql:t}){let[n,r]=(0,W.useState)(!1);return(0,W.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&r(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),n?(0,G.jsxs)(`div`,{className:`rounded-lg border border-sky-500/50 bg-muted/60 shadow-lg shadow-sky-500/5`,children:[(0,G.jsx)(`div`,{className:`px-3 pt-2 text-[10px] font-mono text-muted-foreground select-none`,children:"```query:table"}),(0,G.jsx)(`div`,{className:`px-3 py-2`,children:(0,G.jsx)(nT,{query:e,onQueryChange:t,autoFocus:!0,showDiagnostics:!1,placeholder:`:session…`,className:`bg-transparent border-0 shadow-none`})}),(0,G.jsxs)(`div`,{className:`px-3 pb-2 flex items-center justify-between`,children:[(0,G.jsx)(`span`,{className:`text-[10px] font-mono text-muted-foreground select-none`,children:"```"}),(0,G.jsx)(`button`,{onClick:()=>r(!1),className:`text-[10px] text-sky-400 hover:text-sky-300 font-mono`,children:`Esc / leave fence ↩`})]})]}):(0,G.jsx)(`button`,{onClick:()=>r(!0),className:`block w-full text-left hover:ring-1 hover:ring-border rounded-lg`,children:(0,G.jsx)(j9,{wql:e})})}var N9=[[`inline`,`A · in-flow expansion`],[`dock`,`B · bound dock`],[`fence`,`C · fence-as-composer`]];function Lre(){let[e,t]=Rt(),n=e.get(`v`)??`inline`,[r,i]=(0,W.useState)(kre),a=e=>{let r=N9[(N9.findIndex(([e])=>e===n)+e+N9.length)%N9.length][0];t({v:r})};return(0,W.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,G.jsxs)(`div`,{className:`min-h-screen bg-background text-foreground p-6`,children:[(0,G.jsxs)(`div`,{className:`max-w-5xl mx-auto grid grid-cols-[1fr_320px] gap-6 items-start`,children:[(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-[11px] text-amber-500 mb-1`,children:`PROTOTYPE — throwaway · query:table editing via WqlComposer`}),(0,G.jsx)(`h1`,{className:`text-xl font-bold`,children:`Journal — 2026-09-13`})]}),(0,G.jsx)(M9,{children:O9.split("```time")[0].trim()}),(0,G.jsx)(jre,{}),n===`inline`&&(0,G.jsx)(Pre,{wql:r,setWql:i}),n===`dock`&&(0,G.jsx)(Fre,{wql:r,setWql:i}),n===`fence`&&(0,G.jsx)(Ire,{wql:r,setWql:i}),(0,G.jsx)(M9,{children:k9})]}),(0,G.jsx)(`div`,{className:`sticky top-6`,children:(0,G.jsx)(Mre,{wql:r})})]}),(0,G.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,G.jsx)(`button`,{onClick:()=>a(-1),className:`px-2 text-muted-foreground hover:text-foreground`,children:`←`}),N9.map(([e,r])=>(0,G.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,G.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 Rre(){let e=new Fp;return e.register(P9(`effort`,{met:{dimension:Y,type:`number`},disciplineFactor:{dimension:Y,type:`number`},discipline:{dimension:Y,type:`string`},intensityTier:{dimension:Y,type:`string`},resolvedFrom:{dimension:Y,type:`string`}},`default-row`)),e.register(P9(`rpe-labels`,{rpe:{dimension:Y,type:`number`}})),e.register(P9(`profile`,{vo2max:{dimension:Y,type:`number`}})),e.register(P9(`disciplines`,{disciplineFactor:{dimension:Y,type:`number`}},`default-row`)),e}function zre(e,t){for(let n of t)try{e.register(n)}catch{}}function F9(e,t=`segment`){let n=[],r=[];try{let i=of(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 yp(Rre());zre(i,[...Rp,...Hp]);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=pf(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=xd(a)),r.length===0&&n.push({severity:`warning`,message:`No calc line parsed.`}),{defs:r,diagnostics:n,dim:a,compound:o}}var Bre=[`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:Sd.elapsed.dim,detail:`s (time)`},{name:`reps`,dim:Sd.reps.dim,detail:`count`},{name:`resistance`,dim:Sd.resistance.dim,detail:`kg (mass)`},{name:`distance`,dim:Sd.distance.dim,detail:`m (length)`},{name:`effort`,dim:Cd.effort,detail:`resolved effort slug`},{name:`effortLabel`,dim:Cd.effortLabel,detail:`raw effort label`}],z9=[{name:`sessionRpe`,dim:Cd.sessionRpe,detail:`captured session RPE`},{name:`session.duration`,dim:Cd[`session.duration`],detail:`workout duration`},{name:`profile.vo2max`,dim:Cd[`profile.vo2max`],detail:`user VO₂max (mL/kg/min)`}],B9=Object.keys(Sd),Vre=Object.keys(wd),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(Od),Hre=Object.keys(wd);function Ure(e){return e?H9.filter(t=>{let n=Od[t];return n?n.dim.every((t,n)=>t===e[n]):!1}):H9}var Wre=new Set([...I9,...Bre,`lookup`]),Gre=new Set(L9),Kre=new Set([...R9.map(e=>e.name),...z9.map(e=>e.name),...B9,...V9.map(e=>e.name)]),qre=/^\d*\.?\d+(?:d)?/,Jre=/^[A-Za-z_][\w.]*/,Yre=Dr.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(qre))return`number`;if(e.match(Jre)){let t=e.current();return Wre.has(t)?`keyword`:Gre.has(t)?`function`:(Kre.has(t),`variableName`)}return e.next(),null}}),Xre=Pr.define([{tag:U.keyword,color:`#c084fc`},{tag:U.function(U.variableName),color:`#60a5fa`},{tag:U.variableName,color:`#e4e4e7`},{tag:U.number,color:`#fbbf24`},{tag:U.string,color:`#34d399`},{tag:U.operator,color:`#a1a1aa`},{tag:U.comment,color:`#71717a`,fontStyle:`italic`}]);function Zre(){return new Lr(Yre,[Nr(Xre)])}var Qre=[`effort`,`thruster`,`push-press`,`front-squat`,`wall-ball`,`row`,`run`];function U9(e,t){return`${t?``:`"`}${e}"`}function $re(e={}){let t=e.scope??`segment`,n=()=>{let t=e.effortKeys?.().filter(Boolean)??[];return[`effort`,...t.length?t:Qre.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=Ure(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 Vre)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(...Hre.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 eie(e){return Yr({override:[$re(e)],interactionDelay:0})}function tie({value:e,onChange:t,scope:n=`segment`,placeholder:r,readOnly:i=!1,autoFocus:a=!1,className:o}){let s=(0,W.useRef)(null),c=(0,W.useRef)(null),l=(0,W.useRef)(t);return l.current=t,(0,W.useEffect)(()=>{let t=s.current;if(!t)return;c.current?.destroy();let r=kr.updateListener.of(e=>{e.docChanged&&l.current(e.state.doc.toString())}),o=new kr({state:ii.create({doc:e,extensions:[Zre(),eie({scope:n,effortKeys:()=>LO().list().map(e=>e.slug)}),Ww,$r(),fi(),Sr.of([ni,...ei,...li]),kr.lineWrapping,ii.readOnly.of(i),r,kr.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,W.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,G.jsx)(`div`,{ref:s,className:`calc-line-editor ${o??``}`,"data-testid":`calc-line-editor`})}function nie({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,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 px-3 py-2 text-xs`,"data-testid":`calc-diagnostics`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[t?(0,G.jsxs)(`div`,{className:`text-muted-foreground`,children:[`computes `,(0,G.jsx)(`b`,{className:`text-foreground`,children:rie(t)}),n&&(0,G.jsxs)(`span`,{className:`text-purple-400 dark:text-purple-300`,children:[` → `,n]})]}):!o&&(0,G.jsx)(`div`,{className:`text-muted-foreground`,children:`dimension unknown`}),o&&(0,G.jsx)(`span`,{className:`text-signal-positive`,children:`✓ valid`})]}),i.map((e,t)=>(0,G.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e.message]},`e-${t}`)),a.map((e,t)=>(0,G.jsxs)(`div`,{className:`text-signal-caution`,children:[`⚠ `,e.message]},`w-${t}`)),i.length===0&&a.length===0&&t===void 0&&(0,G.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 rie(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 ga({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 iie(e){return e.output?.emitType??e.output?.key??e.id}function aie(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 $p(e,{userProfile:t.vo2max===void 0?void 0:{vo2max:t.vo2max},calcs:n}).engine}function oie(e){let t=[],n=e.defs[0];if(!n)return{rows:[],errors:[`No calc line to preview.`]};let r=iie(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=aie(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 sie(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 sie(e,t){let n=[],r=e.variants[0]?.nodes[pf(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 cie(r.includes(`windowSum`)||r.includes(` * sum`)?u:d,n),{rows:[],series:n,errors:t}}function cie(e,t){for(let n of e.slice(-7))t.push(Number.isNaN(n)?null:Number(Math.round(n*100)/100))}var lie=[{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 uie(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 die(e,t){let n=[uie(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`}),cj(new ga({outputType:`segment`,timeSpan:{started:t*1e3,ended:t*1e3+e.elapsedMs},sourceBlockKey:`preview-block`,stackLevel:1,metrics:n}))}function fie(){return{id:`preview-block`,dialect:`time`,startLine:0,endLine:10,content:"```time\nFran preview\n```",state:`idle`,widgetIds:{},version:1,createdAt:0}}var pie=lie.map((e,t)=>die(e,t+1)),mie=fie();function hie(e){return e==null?`—`:String(e)}function gie({scope:e,analysis:t,vo2max:n}){let r=(0,W.useMemo)(()=>t.defs.filter(()=>t.diagnostics.length===0),[t]),i=r[0],a=(0,W.useMemo)(()=>{if(i)return oie({logs:pie,block:mie,defs:r,scope:e,vo2max:n})},[i,e,n]);return(0,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60 p-3 text-xs`,"data-testid":`calc-preview`,children:[(0,G.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,G.jsx)(`div`,{className:`text-muted-foreground`,children:`Enter a valid calc line to see live results.`}),i&&a?.rows&&(0,G.jsxs)(`div`,{className:`space-y-1 font-mono`,children:[a.rows.length===0&&(0,G.jsx)(`div`,{className:`text-muted-foreground`,children:`No applicable segments.`}),a.rows.map((e,t)=>(0,G.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:e?e.label:`segment ${t+1}`}),(0,G.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,G.jsx)(`div`,{className:`space-y-1 font-mono`,children:a.series.map((e,t)=>(0,G.jsxs)(`div`,{className:`flex justify-between text-foreground`,children:[(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[`D-`,6-t]}),(0,G.jsx)(`span`,{className:`text-sky-300 dark:text-sky-400`,children:hie(e)})]},t))}),a?.errors?.length?a.errors.map((e,t)=>(0,G.jsxs)(`div`,{className:`text-destructive`,children:[`⚠ `,e]},`e-${t}`)):null]})}var _ie=[`segment`,`workout`,`store`];function vie(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 yie({defaultScope:e=`segment`,initialId:t}){let[n,r]=(0,W.useState)(`# ${e} calc line
|
|
497
497
|
segmentVolume = reps * resistance (library) when has(reps) and has(resistance)
|
|
498
498
|
`),[i,a]=(0,W.useState)(e),[o,s]=(0,W.useState)([]),[c,l]=(0,W.useState)(),u=(0,W.useMemo)(()=>F9(n,i),[n,i]),d=vie(u.defs,n),f=u.diagnostics.every(e=>e.severity!==`error`)&&u.defs.length>0,p=async()=>{s(await o7())};(0,W.useEffect)(()=>{p()},[]),(0,W.useEffect)(()=>{t&&(async()=>{let e=(await o7()).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 s7({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 c7(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,G.jsxs)(`div`,{className:`space-y-3`,"data-testid":`calc-authoring-panel`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`Scope`}),(0,G.jsx)(`div`,{className:`flex gap-1`,children:_ie.map(e=>(0,G.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,G.jsx)(`div`,{className:`ml-auto flex gap-2`,children:(0,G.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,G.jsx)(tie,{value:n,onChange:r,scope:i,autoFocus:!0}),(0,G.jsx)(nie,{analysis:u}),(0,G.jsx)(gie,{scope:i,analysis:u}),c&&(0,G.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:c}),o.length>0&&(0,G.jsxs)(`div`,{className:`mt-2`,children:[(0,G.jsx)(`div`,{className:`mb-1 text-[11px] uppercase tracking-wide text-muted-foreground`,children:`Saved user calcs`}),(0,G.jsx)(`ul`,{className:`divide-y divide-border rounded-lg border border-border`,children:o.map(e=>(0,G.jsxs)(`li`,{className:`flex items-center justify-between px-3 py-2 text-sm`,children:[(0,G.jsx)(`button`,{onClick:()=>g(e),className:`text-left font-mono text-purple-300 dark:text-purple-400 hover:underline`,children:e.id}),(0,G.jsx)(`button`,{onClick:()=>h(e.id),className:`text-xs text-muted-foreground hover:text-destructive`,children:`delete`})]},e.id))})]})]})}function bie(){let e=fn(),[t]=dn(`zip`),[n]=dn(`z`),[r]=(0,W.useState)(()=>{let e=window.location.search;return e.includes(`zip=`)||e.includes(`z=`)});return(0,W.useEffect)(()=>{!t&&!n&&!r&&e(`/`,{replace:!0})},[t,n,e,r]),(0,G.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=fn(),t=En(),{date:n}=Ut(),[r]=dn(`zip`),[i,a]=(0,W.useState)({state:`loading`});return(0,W.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=BF(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=RF();if(i)return;if(zF(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 WF.create({journalDate:n,title:n,rawContent:t});i||(a({state:`success`,content:t,dateKey:n}),e(uF(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 xie=({selectedDate:e,onImportToday:t,onDateSelect:n,entryDates:r,isLoading:i=!1,className:a})=>{let[o,s]=(0,W.useState)(!1),[c,l]=(0,W.useState)(!1),{triggerRef:u,align:d,recompute:f}=k2(`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)}},g=e=>{e&&f(),s(e)},_=e?hb(e):`Date`,v=i||c;return(0,G.jsxs)(`div`,{className:K(`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,G.jsxs)(`button`,{type:`button`,title:`Import to today's journal`,onClick:p,disabled:v,className:K(`flex items-center gap-2 px-3 py-2 transition-colors`,`hover:bg-accent hover:text-accent-foreground`,v&&`opacity-60 cursor-not-allowed`),children:[c?(0,G.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}):(0,G.jsx)(ln,{className:`h-4 w-4 shrink-0`}),(0,G.jsx)(`span`,{children:`Import Today`})]}),(0,G.jsx)(`div`,{className:`w-px bg-border/60 self-stretch`}),(0,G.jsxs)(_H,{open:o,onOpenChange:g,children:[(0,G.jsx)(vH,{asChild:!0,children:(0,G.jsxs)(`button`,{ref:e=>{u.current=e},type:`button`,title:`Select a date to plan for the future`,className:K(`flex items-center gap-1.5 px-2.5 py-2 transition-colors`,`hover:bg-accent hover:text-accent-foreground`,e&&`text-primary`,v&&`opacity-60 cursor-not-allowed`),disabled:v,children:[(0,G.jsx)(h,{className:`h-4 w-4 shrink-0`}),e&&(0,G.jsx)(`span`,{className:`leading-none text-xs`,children:_})]})}),(0,G.jsx)(yH,{align:d,className:`p-0 w-auto`,children:(0,G.jsx)(c2,{selectedDate:e||null,onDateSelect:m,entryDates:r})})]})]})},Sie=({dateKey:e,onConfirm:t,onCancel:n,isLoading:r=!1})=>{let[i,a]=W.useState(!1),o=mb(new Date(`${e}T00:00:00`));return(0,G.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,G.jsx)(`div`,{className:`absolute inset-0 bg-black/50 animate-in fade-in`}),(0,G.jsx)(`div`,{className:`relative z-10 w-full max-w-sm mx-auto px-4 animate-in zoom-in-95 fade-in`,children:(0,G.jsxs)(`div`,{className:`bg-background rounded-lg border border-border shadow-lg`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-border`,children:[(0,G.jsx)(`h2`,{className:`text-base font-semibold`,children:`Backdate Journal Entry`}),(0,G.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,G.jsx)(xr,{className:`h-4 w-4`})})]}),(0,G.jsxs)(`div`,{className:`px-6 py-4 space-y-4`,children:[(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The date you selected is in the past.`}),(0,G.jsxs)(`p`,{className:`text-sm`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`Import to: `}),(0,G.jsx)(`span`,{className:`font-medium text-foreground`,children:o})]}),(0,G.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,G.jsxs)(`div`,{className:`px-6 py-4 border-t border-border flex gap-2 justify-end`,children:[(0,G.jsx)(q,{variant:`outline`,onClick:n,disabled:r||i,children:`Cancel`}),(0,G.jsx)(q,{onClick:async()=>{a(!0);try{await t()}finally{a(!1)}},disabled:r||i,className:K(r||i?`opacity-70`:``),children:i?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`inline-block animate-spin mr-2`,children:`⏳`}),`Importing...`]}):`Confirm & Import`})]})]})})]})},Cie={h1:({children:e})=>(0,G.jsx)(`h1`,{className:`text-3xl font-bold mt-8 mb-4 first:mt-0 text-foreground`,children:e}),h2:({children:e})=>(0,G.jsx)(`h2`,{className:`text-2xl font-bold mt-6 mb-3 text-foreground`,children:e}),h3:({children:e})=>(0,G.jsx)(`h3`,{className:`text-xl font-semibold mt-5 mb-2 text-foreground`,children:e}),h4:({children:e})=>(0,G.jsx)(`h4`,{className:`text-lg font-semibold mt-4 mb-2 text-foreground`,children:e}),h5:({children:e})=>(0,G.jsx)(`h5`,{className:`text-base font-semibold mt-3 mb-1 text-foreground`,children:e}),h6:({children:e})=>(0,G.jsx)(`h6`,{className:`text-sm font-semibold mt-2 mb-1 text-muted-foreground`,children:e}),p:({children:e})=>(0,G.jsx)(`p`,{className:`text-sm leading-relaxed mb-4 text-muted-foreground`,children:e}),strong:({children:e})=>(0,G.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e}),em:({children:e})=>(0,G.jsx)(`em`,{className:`italic text-muted-foreground`,children:e}),ul:({children:e})=>(0,G.jsx)(`ul`,{className:`list-disc list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),ol:({children:e})=>(0,G.jsx)(`ol`,{className:`list-decimal list-inside space-y-1 mb-4 text-sm text-muted-foreground`,children:e}),li:({children:e})=>(0,G.jsx)(`li`,{className:`ml-2`,children:e}),code:({children:e,className:t})=>t?null:(0,G.jsx)(`code`,{className:`px-1.5 py-0.5 rounded bg-muted text-primary font-mono text-xs`,children:e}),pre:({children:e})=>(0,G.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,G.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,G.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary hover:underline font-medium`,children:t}),table:({children:e})=>(0,G.jsx)(`div`,{className:`my-4 overflow-x-auto rounded border border-border`,children:(0,G.jsx)(`table`,{className:`w-full text-xs`,children:e})}),thead:({children:e})=>(0,G.jsx)(`thead`,{className:`bg-muted/50`,children:e}),tbody:({children:e})=>(0,G.jsx)(`tbody`,{className:`divide-y divide-border/50`,children:e}),tr:({children:e})=>(0,G.jsx)(`tr`,{className:`hover:bg-muted/20 transition-colors`,children:e}),th:({children:e})=>(0,G.jsx)(`th`,{className:`px-3 py-2 text-left font-semibold text-foreground text-xs`,children:e}),td:({children:e})=>(0,G.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground`,children:e}),hr:()=>(0,G.jsx)(`hr`,{className:`my-6 border-border/50`})};function Q9(){let e=fn(),t=Z9(),[n,r]=(0,W.useState)(!1),[i,a]=(0,W.useState)(null),{state:o,content:s,dateKey:c,error:l,onConfirmBackdate:u,onRetry:d}=t;return(0,G.jsxs)(`div`,{className:`flex flex-col h-screen bg-background`,children:[(0,G.jsxs)(`div`,{className:`border-b border-border/50 bg-muted/30 px-6 py-4 flex items-center justify-between gap-4`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.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,G.jsx)(en,{className:`h-5 w-5`})}),(0,G.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:`Import Journal Entry`})]}),o===`loading`?(0,G.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`inline-block animate-spin`,children:`⏳`}),`Preparing preview...`]}):o===`error`?(0,G.jsx)(q,{variant:`outline`,size:`sm`,onClick:d,children:`Retry`}):o===`pending-confirmation`||o===`creating`?null:(0,G.jsx)(xie,{selectedDate:i,onImportToday:async()=>{u&&await u()},onDateSelect:async e=>{a(e);let t=new Date;t.setHours(0,0,0,0);let n=new Date(e);n.setHours(0,0,0,0),n<t?r(!0):u&&await u()},isLoading:o===`creating`})]}),(0,G.jsxs)(`div`,{className:`flex-1 overflow-auto px-6 py-6`,children:[o===`loading`&&(0,G.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,G.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Loading preview...`})]}),o===`error`&&(0,G.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,G.jsx)(`div`,{className:`bg-destructive/10 border border-destructive/50 rounded-lg p-4 max-w-md`,children:(0,G.jsxs)(`div`,{className:`flex gap-3 items-start`,children:[(0,G.jsx)(Ot,{className:`h-5 w-5 text-destructive mt-0.5 shrink-0`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`font-semibold text-foreground`,children:`Error Loading Preview`}),(0,G.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:l||`Failed to decode the zip content`})]})]})}),(0,G.jsx)(q,{onClick:d,variant:`outline`,children:`Try Again`})]}),o===`pending-confirmation`&&(0,G.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,G.jsxs)(`div`,{className:`text-center`,children:[(0,G.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`Backdate Confirmation Required`}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`This date is in the past. Please confirm to proceed.`})]})}),o===`creating`&&(0,G.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:[(0,G.jsx)(`div`,{className:`animate-spin`,children:`⏳`}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Creating journal entry...`})]}),o===`success`&&(0,G.jsx)(`div`,{className:`flex flex-col items-center justify-center min-h-96 gap-4`,children:(0,G.jsxs)(`div`,{className:`text-center`,children:[(0,G.jsx)(`h2`,{className:`text-lg font-semibold text-foreground mb-2`,children:`✓ Entry Created`}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Redirecting...`})]})}),o===`loading`||o===`error`||o===`pending-confirmation`||o===`creating`||o===`success`?null:s?(0,G.jsx)(`article`,{className:`prose prose-sm max-w-2xl mx-auto`,children:(0,G.jsx)(hn,{remarkPlugins:[Wn],components:Cie,children:s})}):null]}),n&&c&&(0,G.jsx)(Sie,{dateKey:c,onConfirm:async()=>{u&&(r(!1),await u())},onCancel:()=>r(!1),isLoading:o===`creating`})]})}function wie(){let e=En(),t=fn();return(0,W.useEffect)(()=>{let n=new URLSearchParams(e.search).get(`source`);t(n?`${$.notebooks}?feed=${encodeURIComponent(n)}`:$.notebooks,{replace:!0})},[e.search,t]),(0,G.jsx)(`div`,{className:`p-8 text-center text-xs text-muted-foreground`,"data-testid":`feed-subscription-intake`,children:`Redirecting to Library…`})}async function Tie(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 cA().updateRecord(r.id,{rawContent:o,expectedSourceRevision:r.sourceRevision})}function Eie(){let{runtimeId:e}=Ut(),t=fn(),n=(0,W.useRef)(e?f2.get(e):void 0),r=(0,W.useRef)(null),i=(0,W.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 uM(t.snapshot,t.block,e,t.origin):await dM(t.noteId,t.block,e,t.origin),r.current.block)},[e]);(0,W.useEffect)(()=>{e&&f2.delete(e)},[e]);let a=n.current,o=(0,W.useRef)(!1),s=(0,W.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,vM.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 Tie(a.noteId,a.block.id,e)}catch{}})),[e,a]),c=(0,W.useCallback)(()=>{if(!a){t(`/`);return}if(o.current){t(gF(e),{replace:!0});return}if(a.returnTo){t(a.returnTo,{replace:!0});return}t(B0(yL(a.noteId)),{replace:!0})},[e,a,t]);if(!a)return(0,G.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,G.jsx)(zQ,{block:a.block,noteContent:l,prepareRun:i,onClose:c,onCompleteWorkout:s,resultId:e,autoStart:!0})}var $9=null;async function Die(e){(!$9||$9.attempt!==e)&&($9={attempt:e,promise:FW(JW.content)});try{return await $9.promise}finally{$9?.attempt===e&&($9=null)}}function Oie(){let e=fn(),[t,n]=(0,W.useState)(!1),[r,i]=(0,W.useState)(0);return(0,W.useEffect)(()=>{let t=!1;return(async()=>{try{let n=await Die(r);t||e(sF(n),{replace:!0})}catch{t||n(!0)}})(),()=>{t=!0}},[e,r]),t?(0,G.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-3 text-zinc-300 px-4 text-center`,children:[(0,G.jsx)(`p`,{role:`alert`,children:`Unable to create a new playground note.`}),(0,G.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,G.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`})}function kie(){let e=fn(),t=En(),[n]=dn(`zip`),[r]=dn(`z`),[i]=dn(`by`),[a]=dn(`src`);(0,W.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=e4(e,i??void 0);if(await IW(n,{reuseKey:`home`,title:`Home playground`}),t)return;r4({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 FW(t,{sourcePath:s}):await FW(t);o||e(sF(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 Aie(){let{pathname:e,hash:t}=En(),{scrollToSection:n}=kP();return(0,W.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 jie(){return kie(),Z9(),(0,W.useEffect)(()=>{Wk.current().catch(console.error),pk(),i6(),oM().catch(()=>{})},[]),null}function Mie({settling:e}){let t=n6();if(e){let e=h3(t);return(0,G.jsxs)(`div`,{role:`status`,className:`flex min-h-dvh flex-col items-center justify-center gap-2 text-muted-foreground`,children:[(0,G.jsx)(`span`,{children:t?m3(t):`Loading library…`}),e&&(0,G.jsx)(`span`,{className:`text-xs`,"data-testid":`boot-progress-detail`,children:e})]})}return(0,G.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-3 p-6 text-center`,children:[(0,G.jsx)(`p`,{className:`text-sm font-semibold`,children:`The library's routed content failed to load.`}),(0,G.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,G.jsx)(q,{variant:`outline`,size:`sm`,"data-testid":`root-refeed`,onClick:()=>{RN().then(()=>ck())},children:`Re-import library`})]})}function Nie(){let e=(0,W.useRef)(()=>{}),t=Kz(),n=t6(),r=(0,W.useMemo)(()=>hz(()=>e.current(),t),[t]);return(0,G.jsx)(ki,{defaultTheme:`system`,storageKey:`wod-wiki-playground-theme`,children:(0,G.jsx)(Ree,{children:(0,G.jsx)(eP,{children:(0,G.jsx)(rP,{children:(0,G.jsx)(kte,{children:(0,G.jsx)(xt,{children:(0,G.jsxs)(Bn,{children:[(0,G.jsx)(jie,{}),(0,G.jsx)(wP,{}),(0,G.jsxs)(jP,{tree:r,children:[(0,G.jsx)(Aie,{}),(0,G.jsxs)(Pt,{children:[(0,G.jsx)(Et,{path:$.home,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:`*`,element:t.length===0?(0,G.jsx)(Mie,{settling:n===`preparing`||yN()&&n!==`error`}):(0,G.jsx)(hre,{})}),(0,G.jsx)(Et,{path:`/proto/calc-authoring`,element:(0,G.jsx)(Dre,{})}),(0,G.jsx)(Et,{path:`/proto/query-block-composer`,element:(0,G.jsx)(Lre,{})}),(0,G.jsx)(Et,{path:`/settings`,element:(0,G.jsx)(Xn,{to:`/settings/appearance`,replace:!0})}),(0,G.jsx)(Et,{path:`/settings/appearance`,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.settingsProfile,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.settingsData,element:(0,G.jsx)(Xn,{to:$.settingsStorage,replace:!0})}),(0,G.jsx)(Et,{path:$.settingsDatabase,element:(0,G.jsx)(Xn,{to:$.settingsStorage,replace:!0})}),(0,G.jsx)(Et,{path:$.settingsStorage,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.settingsSync,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:`/settings/system`,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.settingsQueries,element:(0,G.jsx)(Xn,{to:$.journal,replace:!0})}),(0,G.jsx)(Et,{path:$.settingsTags,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.settingsSoundProfiles,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:`/settings/library/calcs`,element:(0,G.jsx)(`div`,{className:`p-6`,children:(0,G.jsx)(yie,{})})}),(0,G.jsx)(Et,{path:`/legacy`,element:(0,G.jsx)(tre,{})}),(0,G.jsx)(Et,{path:`/syntax`,element:(0,G.jsx)(mre,{})}),(0,G.jsx)(Et,{path:$.plan,element:(0,G.jsx)(qne,{})}),(0,G.jsx)(Et,{path:$.feeds,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.feed,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.notebooks,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.notebook,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.notebookTarget,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.notebookItem,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.subscribe,element:(0,G.jsx)(wie,{})}),(0,G.jsx)(Et,{path:$.pages,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.page,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.load,element:(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,G.jsx)(bie,{})})}),(0,G.jsx)(Et,{path:$.loadJournal,element:(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,G.jsx)(Q9,{})})}),(0,G.jsx)(Et,{path:$.loadJournalDate,element:(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,G.jsx)(Q9,{})})}),(0,G.jsx)(Et,{path:$.playgroundRoot,element:(0,G.jsx)(Oie,{})}),(0,G.jsx)(Et,{path:$.playground,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.playgrounds,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.notes,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.note,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.journal,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.day,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.run,element:(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-zinc-400`,children:`Loading…`}),children:(0,G.jsx)(Eie,{})})}),(0,G.jsx)(Et,{path:$.tracker,element:(0,G.jsx)(Kne,{})}),(0,G.jsx)(Et,{path:`/results/segments`,element:(0,G.jsx)(Gne,{})}),(0,G.jsx)(Et,{path:$.sessionDetail,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.sessions,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.sessionDate,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:`/review/:runtimeId`,element:(0,G.jsx)(J7,{})}),(0,G.jsx)(Et,{path:`/note/:noteId/review`,element:(0,G.jsx)(J7,{})}),(0,G.jsx)(Et,{path:`/note/:noteId/review/:sectionId`,element:(0,G.jsx)(J7,{})}),(0,G.jsx)(Et,{path:`/note/:noteId/review/:sectionId/:resultId`,element:(0,G.jsx)(J7,{})}),(0,G.jsx)(Et,{path:$.efforts,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.effort,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.equipment,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.equipmentSlug,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.tags,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.tagCategory,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.tag,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.dashboards,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),(0,G.jsx)(Et,{path:$.dashboardView,element:(0,G.jsx)(q7,{searchHandlerRef:e})}),t.map(({route:t})=>(0,G.jsx)(Et,{path:t,element:(0,G.jsx)(q7,{searchHandlerRef:e})},t))]}),(0,G.jsx)(Jne,{})]})]})})})})})})})}function Pie({error:e,onRetry:t}){let n=e instanceof Error?e.message:String(e),r=Pk();return(0,G.jsxs)(`div`,{role:`alert`,className:`flex min-h-dvh flex-col items-center justify-center gap-4 p-6 text-center`,children:[(0,G.jsx)(`p`,{className:`text-sm font-semibold`,children:`The local database could not be opened.`}),(0,G.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground font-mono break-all`,"data-testid":`boot-recovery-error`,children:n}),(0,G.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,G.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-2`,children:[(0,G.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,G.jsx)(`button`,{type:`button`,onClick:()=>{Bk(),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,G.jsxs)(`details`,{className:`w-full max-w-md rounded-xl border border-border bg-card p-4 text-left`,children:[(0,G.jsx)(`summary`,{className:`cursor-pointer text-xs font-medium`,children:`Fix Turso credentials`}),(0,G.jsx)(`div`,{className:`pt-3`,children:(0,G.jsx)(U7,{saved:r.state===`turso`?{url:r.url,authToken:r.authToken}:void 0})})]})]})}function Fie(){let e=(0,W.useSyncExternalStore)(oS,aS),t=e.phase===`updating`;return(0,G.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,G.jsx)(`p`,{className:`text-sm font-semibold`,children:t?`Updating local database…`:`Checking for storage updates…`}),t&&e.fromVersion!==null&&(0,G.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Schema v`,e.fromVersion,` → v`,e.toVersion]}),e.message&&(0,G.jsx)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:e.message})]})}var Iie=(0,Di.createRoot)(document.getElementById(`root`));function Lie(){let[e,t]=(0,W.useState)(!1),[n,r]=(0,W.useState)(null),[i,a]=(0,W.useState)(0),o=(0,W.useSyncExternalStore)(oS,aS);return(0,W.useEffect)(()=>{let e=!1,n;return Xk().then(()=>wj?kj():void 0).then(()=>ij.ensureNotebooks().catch(e=>fM(`NotebookService`,`ensureNotebooks failed`,e))).then(()=>{e||(n=eA(),t(!0))}).catch(t=>{e||r(t)}),()=>{e=!0,n?.()}},[i]),n?(0,G.jsx)(Pie,{error:n,onRetry:()=>{r(null),a(e=>e+1)}}):o.phase===`checking`||o.phase===`updating`?(0,G.jsx)(Fie,{}):e?(0,G.jsx)(Nie,{}):(0,G.jsx)(`div`,{role:`status`,className:`flex min-h-dvh items-center justify-center text-muted-foreground`,children:`Opening local library…`})}Iie.render((0,G.jsx)(W.StrictMode,{children:(0,G.jsx)(Lie,{})}));export{KU as t};
|
|
499
|
-
//# sourceMappingURL=main-
|
|
499
|
+
//# sourceMappingURL=main-lF0MJ7yl.js.map
|