@bitcobblers/wod-wiki-tools 0.50.2186 → 0.50.2188
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-OJUR7URM.mjs → chunk-BJCJ5EKB.mjs} +4 -4
- package/dist/{chunk-OJUR7URM.mjs.map → chunk-BJCJ5EKB.mjs.map} +1 -1
- package/dist/{chunk-5USOYO6L.mjs → chunk-DGVIILUP.mjs} +3 -3
- package/dist/chunk-DGVIILUP.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{scaffoldFeed-EXE5W7TU.mjs → scaffoldFeed-3XWNVDZV.mjs} +3 -3
- package/dist/{scaffoldFeed-EXE5W7TU.mjs.map → scaffoldFeed-3XWNVDZV.mjs.map} +1 -1
- package/dist/web/playground/assets/{feedSync.worker-6iecnGGU.js → feedSync.worker-BSZcrZnS.js} +2 -2
- package/dist/web/playground/assets/main--JBe2rOY.js +494 -0
- package/dist/web/playground/assets/main-BKOWKN1T.css +2 -0
- package/dist/web/playground/assets/{statementBuilderFlow-N67F6aK-.js → statementBuilderFlow-xYDgQNpi.js} +2 -2
- package/dist/web/playground/assets/{vendor-YN8NFm3S.js → vendor-COQA-faA.js} +39 -39
- package/dist/web/playground/assets/{vendor-codemirror-D4vehVtr.js → vendor-codemirror-CWvjmVZZ.js} +6 -6
- package/dist/web/playground/index.html +4 -4
- package/dist/web/playground/seed/core/chunks/canvas.5ef99fca.json +1 -0
- package/dist/web/playground/seed/core/chunks/{dashboards.c6d1629e.json → dashboards.fe16efb9.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{efforts.d5d99070.json → efforts.1e9be048.json} +1 -1
- package/dist/web/playground/seed/core/chunks/{equipment.997165ff.json → equipment.01353167.json} +1 -1
- package/dist/web/playground/seed/core/indexes/notebooks/canvas.json +181 -181
- 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 +29 -29
- 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 +60 -30
- package/dist/web/playground/seed/core/markdown/canvas/guide/start.json +20 -10
- package/dist/web/playground/seed/core/markdown/canvas/guide/structure.json +34 -24
- 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 +19 -9
- 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 +23 -3
- 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 +14 -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 +14 -4
- package/dist/web/playground/seed/core/markdown/canvas/syntax/effort-notes.json +14 -4
- 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 +34 -4
- 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 +15 -5
- 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 +28 -8
- 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 +15 -5
- 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 +13 -3
- 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-6iecnGGU.js → feedSync.worker-BSZcrZnS.js} +2 -2
- package/dist/web/server/assets/main-BKOWKN1T.css +2 -0
- package/dist/web/server/assets/main-D0WMt_zZ.js +494 -0
- package/dist/web/server/assets/{statementBuilderFlow-ZmltvSe6.js → statementBuilderFlow-OSwfSnpF.js} +2 -2
- package/dist/web/server/assets/{vendor-YN8NFm3S.js → vendor-COQA-faA.js} +39 -39
- package/dist/web/server/assets/{vendor-codemirror-D4vehVtr.js → vendor-codemirror-CWvjmVZZ.js} +6 -6
- package/dist/web/server/index.html +4 -4
- package/dist/web/server/seed/core/chunks/canvas.5ef99fca.json +1 -0
- package/dist/web/server/seed/core/chunks/{dashboards.c6d1629e.json → dashboards.fe16efb9.json} +1 -1
- package/dist/web/server/seed/core/chunks/{efforts.d5d99070.json → efforts.1e9be048.json} +1 -1
- package/dist/web/server/seed/core/chunks/{equipment.997165ff.json → equipment.01353167.json} +1 -1
- package/dist/web/server/seed/core/indexes/notebooks/canvas.json +181 -181
- 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 +29 -29
- 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 +60 -30
- package/dist/web/server/seed/core/markdown/canvas/guide/start.json +20 -10
- package/dist/web/server/seed/core/markdown/canvas/guide/structure.json +34 -24
- 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 +19 -9
- 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 +23 -3
- 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 +14 -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 +14 -4
- package/dist/web/server/seed/core/markdown/canvas/syntax/effort-notes.json +14 -4
- 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 +34 -4
- 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 +15 -5
- 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 +28 -8
- 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 +15 -5
- 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 +13 -3
- 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 +14 -14
- package/package.json +6 -6
- package/dist/chunk-5USOYO6L.mjs.map +0 -1
- package/dist/web/playground/assets/main-CqX_xHuC.css +0 -2
- package/dist/web/playground/assets/main-DuRKGIAQ.js +0 -496
- package/dist/web/playground/seed/core/chunks/canvas.9a8d7370.json +0 -1
- package/dist/web/server/assets/main-CqX_xHuC.css +0 -2
- package/dist/web/server/assets/main-lfeHIs-Q.js +0 -496
- package/dist/web/server/seed/core/chunks/canvas.9a8d7370.json +0 -1
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
`&&e.lineWrapping&&(r&&=P.single(r.main.anchor-1,r.main.head-1),n={from:a.from,to:a.to,insert:M.of([` `])}),n)return vs(e,n,r,o);if(r&&!Cs(r,a)){let t=!1,n=`select`;return e.inputState.lastSelectionTime>Date.now()-50&&(e.inputState.lastSelectionOrigin==`select`&&(t=!0),n=e.inputState.lastSelectionOrigin,n==`select.pointer`&&(r=os(i.facet(ro).map(t=>t(e)),r))),e.dispatch({selection:r,scrollIntoView:t,userEvent:n}),!0}return!1}function vs(e,t,n,r=-1){if(V.ios&&e.inputState.flushIOSKey(t))return!0;let i=e.state.selection.main;if(V.android&&(t.to==i.to&&(t.from==i.from||t.from==i.from-1&&e.state.sliceDoc(t.from,i.from)==` `)&&t.insert.length==1&&t.insert.lines==2&&ra(e.contentDOM,`Enter`,13)||(t.from==i.from-1&&t.to==i.to&&t.insert.length==0||r==8&&t.insert.length<t.to-t.from&&t.to>i.head)&&ra(e.contentDOM,`Backspace`,8)||t.from==i.from&&t.to==i.to+1&&t.insert.length==0&&ra(e.contentDOM,`Delete`,46)))return!0;let a=t.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let o,s=()=>o||=ys(e,t,n);return e.state.facet(Ia).some(n=>n(e,t.from,t.to,a,s))||e.dispatch(s()),!0}function ys(e,t,n){let r,i=e.state,a=i.selection.main,o=-1;if(t.from==t.to&&t.from<a.from||t.from>a.to){let n=t.from<a.from?-1:1,r=n<0?a.from:a.to,s=as(i.facet(ro).map(t=>t(e)),r,n);t.from==s&&(o=s)}if(o>-1)r={changes:t,selection:P.cursor(t.from+t.insert.length,-1)};else if(t.from>=a.from&&t.to<=a.to&&t.to-t.from>=(a.to-a.from)/3&&(!n||n.main.empty&&n.main.from==t.from+t.insert.length)&&e.inputState.composing<0){let n=a.from<t.from?i.sliceDoc(a.from,t.from):``,o=a.to>t.to?i.sliceDoc(t.to,a.to):``;r=i.replaceSelection(e.state.toText(n+t.insert.sliceString(0,void 0,e.state.lineBreak)+o))}else{let o=i.changes(t),s=n&&n.main.to<=o.newLength?n.main:void 0;if(i.selection.ranges.length>1&&(e.inputState.composing>=0||e.inputState.compositionPendingChange)&&t.to<=a.to+10&&t.to>=a.to-10){let c=e.state.sliceDoc(t.from,t.to),l,u=n&&Ho(e,n.main.head);if(u){let e=t.insert.length-(t.to-t.from);l={from:u.from,to:u.to-e}}else l=e.state.doc.lineAt(a.head);let d=a.to-t.to;r=i.changeByRange(n=>{if(n.from==a.from&&n.to==a.to)return{changes:o,range:s||n.map(o)};let r=n.to-d,u=r-c.length;if(e.state.sliceDoc(u,r)!=c||r>=l.from&&u<=l.to)return{range:n};let f=i.changes({from:u,to:r,insert:t.insert}),p=n.to-a.to;return{changes:f,range:s?P.range(Math.max(0,s.anchor+p),Math.max(0,s.head+p)):n.map(f)}})}else r={changes:o,selection:s&&i.selection.replaceRange(s)}}let s=`input.type`;return(e.composing||e.inputState.compositionPendingChange&&e.inputState.compositionEndedAt>Date.now()-50)&&(e.inputState.compositionPendingChange=!1,s+=`.compose`,e.inputState.compositionFirstChange&&(s+=`.start`,e.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:s,scrollIntoView:!0})}function bs(e,t,n,r){let i=Math.min(e.length,t.length),a=0;for(;a<i&&e.charCodeAt(a)==t.charCodeAt(a);)a++;if(a==i&&e.length==t.length)return null;let o=e.length,s=t.length;for(;o>0&&s>0&&e.charCodeAt(o-1)==t.charCodeAt(s-1);)o--,s--;if(r==`end`){let e=Math.max(0,a-Math.min(o,s));n-=o+e-a}if(o<a&&e.length<t.length){let e=n<=a&&n>=o?a-n:0;a-=e,s=a+(s-o),o=a}else if(s<a){let e=n<=a&&n>=s?a-n:0;a-=e,o=a+(o-s),s=a}return{from:a,toA:o,toB:s}}function xs(e){let t=[];if(e.root.activeElement!=e.contentDOM)return t;let{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}=e.observer.selectionRange;return n&&(t.push(new ms(n,r)),(i!=n||a!=r)&&t.push(new ms(i,a))),t}function Ss(e,t){if(e.length==0)return null;let n=e[0].pos,r=e.length==2?e[1].pos:n;return n>-1&&r>-1?P.single(n+t,r+t):null}function Cs(e,t){return t.head==e.main.head&&t.anchor==e.main.anchor}var ws=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText=``,this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,V.safari&&e.contentDOM.addEventListener(`input`,()=>null),V.gecko&&ac(e.contentDOM.ownerDocument)}handleEvent(e){!Ls(this.view,e)||this.ignoreDuringComposition(e)||e.type==`keydown`&&this.keydown(e)||(this.view.updateState==0?this.runHandlers(e.type,e):Promise.resolve().then(()=>this.runHandlers(e.type,e)))}runHandlers(e,t){let n=this.handlers[e];if(n){for(let e of n.observers)e(this.view,t);for(let e of n.handlers){if(t.defaultPrevented)break;if(e(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=Ds(e),n=this.handlers,r=this.view.contentDOM;for(let e in t)if(e!=`scroll`){let i=!t[e].handlers.length,a=n[e];a&&i!=!a.handlers.length&&(r.removeEventListener(e,this.handleEvent),a=null),a||r.addEventListener(e,this.handleEvent,{passive:i})}for(let e in n)e!=`scroll`&&!t[e]&&r.removeEventListener(e,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&As.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),V.android&&V.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(V.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(Os.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||ks.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&V.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&Ts(this.view.win)&&(t.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t},setTimeout(()=>this.flushIOSKey(),250),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key==`Enter`&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,ra(this.view.contentDOM,t.key,t.keyCode,t.mods))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:V.safari&&!V.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Ts(e){return e.visualViewport?e.visualViewport.height*e.visualViewport.scale/e.document.documentElement.clientHeight<.85:!1}function Es(e,t){return(n,r)=>{try{return t.call(e,r,n)}catch(e){Ka(n.state,e)}}}function Ds(e){let t=Object.create(null);function n(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(let t of e){let e=t.spec,r=e&&e.plugin.domEventHandlers,i=e&&e.plugin.domEventObservers;if(r)for(let e in r){let i=r[e];i&&n(e).handlers.push(Es(t.value,i))}if(i)for(let e in i){let r=i[e];r&&n(e).observers.push(Es(t.value,r))}}for(let e in Rs)n(e).handlers.push(Rs[e]);for(let e in K)n(e).observers.push(K[e]);return t}let Os=[{key:`Backspace`,keyCode:8,inputType:`deleteContentBackward`},{key:`Enter`,keyCode:13,inputType:`insertParagraph`},{key:`Enter`,keyCode:13,inputType:`insertLineBreak`},{key:`Delete`,keyCode:46,inputType:`deleteContentForward`}],ks=`dthko`,As=[16,17,18,20,91,92,224,225];function js(e){return Math.max(0,e)*.7+8}function Ms(e,t){return Math.max(Math.abs(e.clientX-t.clientX),Math.abs(e.clientY-t.clientY))}var Ns=class{constructor(e,t,n,r){this.view=e,this.startEvent=t,this.style=n,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=Yi(e.contentDOM),this.atoms=e.state.facet(ro).map(t=>t(e));let i=e.contentDOM.ownerDocument;i.addEventListener(`mousemove`,this.move=this.move.bind(this)),i.addEventListener(`mouseup`,this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(L.allowMultipleSelections)&&Ps(e,t),this.dragging=Is(e,t)&&Js(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Ms(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,n=0,r=0,i=0,a=this.view.win.innerWidth,o=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:o}=this.scrollParents.y.getBoundingClientRect());let s=so(this.view);e.clientX-s.left<=r+6?t=-js(r-e.clientX):e.clientX+s.right>=a-6&&(t=js(e.clientX-a)),e.clientY-s.top<=i+6?n=-js(i-e.clientY):e.clientY+s.bottom>=o-6&&(n=js(e.clientY-o)),this.setScrollSpeed(t,n)}up(e){this.dragging??this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener(`mousemove`,this.move),e.removeEventListener(`mouseup`,this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,n=os(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!n.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:n,userEvent:`select.pointer`}),this.mustSelect=!1}update(e){e.transactions.some(e=>e.isUserEvent(`input.type`))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Ps(e,t){let n=e.state.facet(ja);return n.length?n[0](t):V.mac?t.metaKey:t.ctrlKey}function Fs(e,t){let n=e.state.facet(Ma);return n.length?n[0](t):V.mac?!t.altKey:!t.ctrlKey}function Is(e,t){let{main:n}=e.state.selection;if(n.empty)return!1;let r=Ii(e.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let e=0;e<i.length;e++){let n=i[e];if(n.left<=t.clientX&&n.right>=t.clientX&&n.top<=t.clientY&&n.bottom>=t.clientY)return!0}return!1}function Ls(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n=t.target,r;n!=e.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=G.get(n))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(t))return!1;return!0}let Rs=Object.create(null),K=Object.create(null),zs=V.ie&&V.ie_version<15||V.ios&&V.webkit_version<604;function Bs(e){let t=e.dom.parentNode;if(!t)return;let n=t.appendChild(document.createElement(`textarea`));n.style.cssText=`position: fixed; left: -10000px; top: 10px`,n.focus(),setTimeout(()=>{e.focus(),n.remove(),Hs(e,n.value)},50)}function Vs(e,t,n){for(let r of e.facet(t))n=r(n,e);return n}function Hs(e,t){t=Vs(e.state,Ra,t);let{state:n}=e,r,i=1,a=n.toText(t),o=a.lines==n.selection.ranges.length;if(ec!=null&&n.selection.ranges.every(e=>e.empty)&&ec==a.toString()){let e=-1;r=n.changeByRange(r=>{let s=n.doc.lineAt(r.from);if(s.from==e)return{range:r};e=s.from;let c=n.toText((o?a.line(i++).text:t)+n.lineBreak);return{changes:{from:s.from,insert:c},range:P.cursor(r.from+c.length)}})}else r=o?n.changeByRange(e=>{let t=a.line(i++);return{changes:{from:e.from,to:e.to,insert:t.text},range:P.cursor(e.from+t.length)}}):n.replaceSelection(a);e.dispatch(r,{userEvent:`input.paste`,scrollIntoView:!0})}K.scroll=e=>{let t=e.inputState;t.lastScrollTop=e.scrollDOM.scrollTop,t.lastScrollLeft=e.scrollDOM.scrollLeft,V.ios&&!t.touchActive&&(t.lastIOSMomentumScroll=Date.now())},K.wheel=K.mousewheel=e=>{e.inputState.lastWheelEvent=Date.now()},Rs.keydown=(e,t)=>(e.inputState.setSelectionOrigin(`select`),t.keyCode==27&&e.inputState.tabFocusMode!=0&&(e.inputState.tabFocusMode=Date.now()+2e3),!1),K.touchstart=(e,t)=>{let n=e.inputState,r=t.targetTouches[0];n.touchActive=!0,n.lastTouchTime=Date.now(),r&&(n.lastTouchX=r.clientX,n.lastTouchY=r.clientY),n.setSelectionOrigin(`select.pointer`)},K.touchmove=e=>{e.inputState.setSelectionOrigin(`select.pointer`)},K.touchend=(e,t)=>{e.inputState.touchActive=!1},Rs.mousedown=(e,t)=>{if(e.observer.flush(),e.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of e.state.facet(Na))if(n=r(e,t),n)break;if(!n&&t.button==0&&(n=Ys(e,t)),n){let r=!e.hasFocus;e.inputState.startMouseSelection(new Ns(e,t,n,r)),r&&e.observer.ignore(()=>{ea(e.contentDOM);let t=e.root.activeElement;t&&!t.contains(e.contentDOM)&&t.blur()});let i=e.inputState.mouseSelection;if(i)return i.start(t),i.dragging===!1}else e.inputState.setSelectionOrigin(`select.pointer`);return!1};function Us(e,t,n,r){if(r==1)return P.cursor(t,n);if(r==2)return Qo(e.state,t,n);{let r=e.docView.lineAt(t,n),i=e.state.doc.lineAt(r?r.posAtEnd:t),a=r?r.posAtStart:i.from,o=r?r.posAtEnd:i.to;return o<e.state.doc.length&&o==i.to&&o++,P.undirectionalRange(a,o)}}let Ws=V.ie&&V.ie_version<=11,Gs=null,Ks=0,qs=0;function Js(e){if(!Ws)return e.detail;let t=Gs,n=qs;return Gs=e,qs=Date.now(),Ks=!t||n>Date.now()-400&&Math.abs(t.clientX-e.clientX)<2&&Math.abs(t.clientY-e.clientY)<2?(Ks+1)%3:1}function Ys(e,t){let n=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),r=Js(t),i=e.state.selection;return{update(e){e.docChanged&&(n.pos=e.changes.mapPos(n.pos),i=i.map(e.changes))},get(t,a,o){let s=e.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),c,l=Us(e,s.pos,s.assoc,r);if(n.pos!=s.pos&&!a){let t=Us(e,n.pos,n.assoc,r),i=Math.min(t.from,l.from),a=Math.max(t.to,l.to);l=i<l.from?P.range(i,a,l.assoc):P.range(a,i,l.assoc)}return a?i.replaceRange(i.main.extend(l.from,l.to,l.assoc)):o&&r==1&&i.ranges.length>1&&(c=Xs(i,s.pos))?c:o?i.addRange(l):P.create([l])}}}function Xs(e,t){for(let n=0;n<e.ranges.length;n++){let{from:r,to:i}=e.ranges[n];if(r<=t&&i>=t)return P.create(e.ranges.slice(0,n).concat(e.ranges.slice(n+1)),e.mainIndex==n?0:e.mainIndex-+(e.mainIndex>n))}return null}Rs.dragstart=(e,t)=>{let{selection:{main:n}}=e.state;if(t.target.draggable){let r=e.docView.tile.nearest(t.target);if(r&&r.isWidget()){let e=r.posAtStart,t=e+r.length;(e>=n.to||t<=n.from)&&(n=P.undirectionalRange(e,t))}}let{inputState:r}=e;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,t.dataTransfer&&(t.dataTransfer.setData(`Text`,Vs(e.state,za,e.state.sliceDoc(n.from,n.to))),t.dataTransfer.effectAllowed=`copyMove`),!1},Rs.dragend=e=>(e.inputState.draggedContent=null,!1);function Zs(e,t,n,r){if(n=Vs(e.state,Ra,n),!n)return;let i=e.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:a}=e.inputState,o=r&&a&&Fs(e,t)?{from:a.from,to:a.to}:null,s={from:i,insert:n},c=e.state.changes(o?[o,s]:s);e.focus(),e.dispatch({changes:c,selection:{anchor:c.mapPos(i,-1),head:c.mapPos(i,1)},userEvent:o?`move.drop`:`input.drop`}),e.inputState.draggedContent=null}Rs.drop=(e,t)=>{if(!t.dataTransfer)return!1;if(e.state.readOnly)return!0;let n=t.dataTransfer.files;if(n&&n.length){let r=Array(n.length),i=0,a=()=>{++i==n.length&&Zs(e,t,r.filter(e=>e!=null).join(e.state.lineBreak),!1)};for(let e=0;e<n.length;e++){let t=new FileReader;t.onerror=a,t.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(t.result)||(r[e]=t.result),a()},t.readAsText(n[e])}return!0}{let n=t.dataTransfer.getData(`Text`);if(n)return Zs(e,t,n,!0),!0}return!1},Rs.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();let n=zs?null:t.clipboardData;return n?(Hs(e,n.getData(`text/plain`)||n.getData(`text/uri-list`)),!0):(Bs(e),!1)};function Qs(e,t){let n=e.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement(`textarea`));r.style.cssText=`position: fixed; left: -10000px; top: 10px`,r.value=t,r.focus(),r.selectionEnd=t.length,r.selectionStart=0,setTimeout(()=>{r.remove(),e.focus()},50)}function $s(e){let t=[],n=[],r=!1;for(let r of e.selection.ranges)r.empty||(t.push(e.sliceDoc(r.from,r.to)),n.push(r));if(!t.length){let i=-1;for(let{from:r}of e.selection.ranges){let a=e.doc.lineAt(r);a.number>i&&(t.push(a.text),n.push({from:a.from,to:Math.min(e.doc.length,a.to+1)})),i=a.number}r=!0}return{text:Vs(e,za,t.join(e.lineBreak)),ranges:n,linewise:r}}let ec=null;Rs.copy=Rs.cut=(e,t)=>{if(!Ri(e.contentDOM,e.observer.selectionRange))return!1;let{text:n,ranges:r,linewise:i}=$s(e.state);if(!n&&!i)return!1;ec=i?n:null,t.type==`cut`&&!e.state.readOnly&&e.dispatch({changes:r,scrollIntoView:!0,userEvent:`delete.cut`});let a=zs?null:t.clipboardData;return a?(a.clearData(),a.setData(`text/plain`,n),!0):(Qs(e,n),!1)};let tc=xr.define();function nc(e,t){let n=[];for(let r of e.facet(La)){let i=r(e,t);i&&n.push(i)}return n.length?e.update({effects:n,annotations:tc.of(!0)}):null}function rc(e){setTimeout(()=>{let t=e.hasFocus;if(t!=e.inputState.notifiedFocused){let n=nc(e.state,t);n?e.dispatch(n):e.update([])}},10)}K.focus=e=>{e.inputState.lastFocusTime=Date.now(),!e.scrollDOM.scrollTop&&(e.inputState.lastScrollTop||e.inputState.lastScrollLeft)&&(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),rc(e)},K.blur=e=>{e.observer.clearSelectionRange(),rc(e)},K.compositionstart=K.compositionupdate=e=>{e.observer.editContext||(e.inputState.compositionFirstChange??(e.inputState.compositionFirstChange=!0),e.inputState.composing<0&&(e.inputState.composing=0))},K.compositionend=e=>{e.observer.editContext||(e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=e.observer.pendingRecords().length>0,e.inputState.compositionFirstChange=null,V.chrome&&V.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then(()=>e.observer.flush()):setTimeout(()=>{e.inputState.composing<0&&e.docView.hasComposition&&e.update([])},50))},K.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},Rs.beforeinput=(e,t)=>{if((t.inputType==`insertText`||t.inputType==`insertCompositionText`)&&(e.inputState.insertingText=t.data,e.inputState.insertingTextAt=Date.now()),t.inputType==`insertReplacementText`&&e.observer.editContext){let n=t.dataTransfer?.getData(`text/plain`),r=t.getTargetRanges();if(n&&r.length){let t=r[0];return vs(e,{from:e.posAtDOM(t.startContainer,t.startOffset),to:e.posAtDOM(t.endContainer,t.endOffset),insert:e.state.toText(n)},null),!0}}let n;if(V.chrome&&V.android&&(n=Os.find(e=>e.inputType==t.inputType))&&(e.observer.delayAndroidKey(n.key,n.keyCode),n.key==`Backspace`||n.key==`Delete`)){let t=window.visualViewport?.height||0;setTimeout(()=>{(window.visualViewport?.height||0)>t+10&&e.hasFocus&&(e.contentDOM.blur(),e.focus())},100)}return V.ios&&t.inputType==`deleteContentForward`&&e.observer.flushSoon(),V.safari&&t.inputType==`insertText`&&e.inputState.composing>=0&&setTimeout(()=>K.compositionend(e,t),20),!1};let ic=new Set;function ac(e){ic.has(e)||(ic.add(e),e.addEventListener(`copy`,()=>{}),e.addEventListener(`cut`,()=>{}))}let oc=[`pre-wrap`,`normal`,`pre-line`,`break-spaces`],sc=!1;function cc(){sc=!1}var lc=class{constructor(e){this.lineWrapping=e,this.doc=M.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let n=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(n+=Math.max(0,Math.ceil((t-e-n*this.lineLength*.5)/this.lineLength))),this.lineHeight*n}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return oc.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];r<0?n++:this.heightSamples[Math.floor(r*10)]||(t=!0,this.heightSamples[Math.floor(r*10)]=!0)}return t}refresh(e,t,n,r,i,a){let o=oc.indexOf(e)>-1,s=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=t,this.charWidth=n,this.textHeight=r,this.lineLength=i,s){this.heightSamples={};for(let e=0;e<a.length;e++){let t=a[e];t<0?e++:this.heightSamples[Math.floor(t*10)]=!0}}return s}},uc=class{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}},dc=class e{constructor(e,t,n,r,i){this.from=e,this.length=t,this.top=n,this.height=r,this._content=i}get type(){return typeof this._content==`number`?Oi.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof ji?this._content.widget:null}get widgetLineBreaks(){return typeof this._content==`number`?this._content:0}join(t){let n=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(t._content)?t._content:[t]);return new e(this.from,this.length+t.length,this.top,this.height+t.height,n)}},q=(function(e){return e[e.ByPos=0]=`ByPos`,e[e.ByHeight=1]=`ByHeight`,e[e.ByPosNoHeight=2]=`ByPosNoHeight`,e})(q||={});let fc=.001;var pc=class e{constructor(e,t,n=2){this.length=e,this.height=t,this.flags=n}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>fc&&(sc=!0),this.height=e)}replace(t,n,r){return e.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,n,r){let i=this,a=n.doc;for(let o=r.length-1;o>=0;o--){let{fromA:s,toA:c,fromB:l,toB:u}=r[o],d=i.lineAt(s,q.ByPosNoHeight,n.setDoc(t),0,0),f=d.to>=c?d:i.lineAt(c,q.ByPosNoHeight,n,0,0);for(u+=f.to-c,c=f.to;o>0&&d.from<=r[o-1].toA;)s=r[o-1].fromA,l=r[o-1].fromB,o--,s<d.from&&(d=i.lineAt(s,q.ByPosNoHeight,n,0,0));l+=d.from-s,s=d.from;let p=xc.build(n.setDoc(a),e,l,u);i=mc(i,i.replace(s,c,p))}return i.updateHeight(n,0)}static empty(){return new _c(0,0,0)}static of(t){if(t.length==1)return t[0];let n=0,r=t.length,i=0,a=0;for(;;)if(n==r){if(i>a*2){let e=t[n-1];e.break?t.splice(--n,1,e.left,null,e.right):t.splice(--n,1,e.left,e.right),r+=1+e.break,i-=e.size}else if(a>i*2){let e=t[r];e.break?t.splice(r,1,e.left,null,e.right):t.splice(r,1,e.left,e.right),r+=2+e.break,a-=e.size}else break}else if(i<a){let e=t[n++];e&&(i+=e.size)}else{let e=t[--r];e&&(a+=e.size)}let o=0;return t[n-1]==null?(o=1,n--):t[n]??(o=1,r++),new yc(e.of(t.slice(0,n)),o,e.of(t.slice(r)))}};function mc(e,t){return e==t?e:(e.constructor!=t.constructor&&(sc=!0),t)}pc.prototype.size=1;let hc=H.replace({});var gc=class extends pc{constructor(e,t,n){super(e,t),this.deco=n,this.spaceAbove=0}mainBlock(e,t){return new dc(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.deco||0)}blockAt(e,t,n,r){return this.spaceAbove&&e<n+this.spaceAbove?new dc(r,0,n,this.spaceAbove,hc):this.mainBlock(n,r)}lineAt(e,t,n,r,i){let a=this.mainBlock(r,i);return this.spaceAbove?this.blockAt(0,n,r,i).join(a):a}forEachLine(e,t,n,r,i,a){e<=i+this.length&&t>=i&&a(this.lineAt(0,q.ByPos,n,r,i))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}},_c=class e extends gc{constructor(e,t,n){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=n}mainBlock(e,t){return new dc(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,n,r){let i=r[0];return r.length==1&&(i instanceof e||i instanceof vc&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof vc?i=new e(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):pc.of(r)}updateHeight(e,t=0,n=!1,r){return r&&r.from<=t&&r.more?this.setMeasuredHeight(r):(n||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:``}${this.widgetHeight?`:`+this.widgetHeight:``})`}},vc=class e extends pc{constructor(e){super(e,0)}heightMetrics(e,t){let n=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,i=r-n+1,a,o=0;if(e.lineWrapping){let t=Math.min(this.height,e.lineHeight*i);a=t/i,this.length>i+1&&(o=(this.height-t)/(this.length-i-1))}else a=this.height/i;return{firstLine:n,lastLine:r,perLine:a,perChar:o}}blockAt(e,t,n,r){let{firstLine:i,lastLine:a,perLine:o,perChar:s}=this.heightMetrics(t,r);if(t.lineWrapping){let i=r+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-n)/this.height))*this.length)),a=t.doc.lineAt(i),c=o+a.length*s,l=Math.max(n,e-c/2);return new dc(a.from,a.length,l,c,0)}{let r=Math.max(0,Math.min(a-i,Math.floor((e-n)/o))),{from:s,length:c}=t.doc.line(i+r);return new dc(s,c,n+o*r,o,0)}}lineAt(e,t,n,r,i){if(t==q.ByHeight)return this.blockAt(e,n,r,i);if(t==q.ByPosNoHeight){let{from:t,to:r}=n.doc.lineAt(e);return new dc(t,r-t,0,0,0)}let{firstLine:a,perLine:o,perChar:s}=this.heightMetrics(n,i),c=n.doc.lineAt(e),l=o+c.length*s,u=c.number-a,d=r+o*u+s*(c.from-i-u);return new dc(c.from,c.length,Math.max(r,Math.min(d,r+this.height-l)),l,0)}forEachLine(e,t,n,r,i,a){e=Math.max(e,i),t=Math.min(t,i+this.length);let{firstLine:o,perLine:s,perChar:c}=this.heightMetrics(n,i);for(let l=e,u=r;l<=t;){let t=n.doc.lineAt(l);if(l==e){let n=t.number-o;u+=s*n+c*(e-i-n)}let r=s+c*t.length;a(new dc(t.from,t.length,u,r,0)),u+=r,l=t.to+1}}replace(t,n,r){let i=this.length-n;if(i>0){let t=r[r.length-1];t instanceof e?r[r.length-1]=new e(t.length+i):r.push(null,new e(i-1))}if(t>0){let n=r[0];n instanceof e?r[0]=new e(t+n.length):r.unshift(new e(t-1),null)}return pc.of(r)}decomposeLeft(t,n){n.push(new e(t-1),null)}decomposeRight(t,n){n.push(null,new e(this.length-t-1))}updateHeight(t,n=0,r=!1,i){let a=n+this.length;if(i&&i.from<=n+this.length&&i.more){let r=[],o=Math.max(n,i.from),s=-1;for(i.from>n&&r.push(new e(i.from-n-1).updateHeight(t,n));o<=a&&i.more;){let e=t.doc.lineAt(o).length;r.length&&r.push(null);let n=i.heights[i.index++],a=0;n<0&&(a=-n,n=i.heights[i.index++]),s==-1?s=n:Math.abs(n-s)>=fc&&(s=-2);let c=new _c(e,n,a);c.outdated=!1,r.push(c),o+=e+1}o<=a&&r.push(null,new e(a-o).updateHeight(t,o));let c=pc.of(r);return(s<0||Math.abs(c.height-this.height)>=fc||Math.abs(s-this.heightMetrics(t,n).perLine)>=fc)&&(sc=!0),mc(this,c)}return(r||this.outdated)&&(this.setHeight(t.heightForGap(n,n+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}},yc=class extends pc{constructor(e,t,n){super(e.length+t+n.length,e.height+n.height,t|(e.outdated||n.outdated?2:0)),this.left=e,this.right=n,this.size=e.size+n.size}get break(){return this.flags&1}blockAt(e,t,n,r){let i=n+this.left.height;return e<i?this.left.blockAt(e,t,n,r):this.right.blockAt(e,t,i,r+this.left.length+this.break)}lineAt(e,t,n,r,i){let a=r+this.left.height,o=i+this.left.length+this.break,s=t==q.ByHeight?e<a:e<o,c=s?this.left.lineAt(e,t,n,r,i):this.right.lineAt(e,t,n,a,o);if(this.break||(s?c.to<o:c.from>o))return c;let l=t==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return s?c.join(this.right.lineAt(o,l,n,a,o)):this.left.lineAt(o,l,n,r,i).join(c)}forEachLine(e,t,n,r,i,a){let o=r+this.left.height,s=i+this.left.length+this.break;if(this.break)e<s&&this.left.forEachLine(e,t,n,r,i,a),t>=s&&this.right.forEachLine(e,t,n,o,s,a);else{let c=this.lineAt(s,q.ByPos,n,r,i);e<c.from&&this.left.forEachLine(e,c.from-1,n,r,i,a),c.to>=e&&c.from<=t&&a(c),t>c.to&&this.right.forEachLine(c.to+1,t,n,o,s,a)}}replace(e,t,n){let r=this.left.length+this.break;if(t<r)return this.balanced(this.left.replace(e,t,n),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,n));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let e of n)i.push(e);if(e>0&&bc(i,a-1),t<this.length){let e=i.length;this.decomposeRight(t,i),bc(i,e)}return pc.of(i)}decomposeLeft(e,t){let n=this.left.length;if(e<=n)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&(n++,e>=n&&t.push(null)),e>n&&this.right.decomposeLeft(e-n,t)}decomposeRight(e,t){let n=this.left.length,r=n+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e<n&&this.left.decomposeRight(e,t),this.break&&e<r&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?pc.of(this.break?[e,null,t]:[e,t]):(this.left=mc(this.left,e),this.right=mc(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,n=!1,r){let{left:i,right:a}=this,o=t+i.length+this.break,s=null;return r&&r.from<=t+i.length&&r.more?s=i=i.updateHeight(e,t,n,r):i.updateHeight(e,t,n),r&&r.from<=o+a.length&&r.more?s=a=a.updateHeight(e,o,n,r):a.updateHeight(e,o,n),s?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?` `:`-`)+this.right}};function bc(e,t){let n,r;e[t]==null&&(n=e[t-1])instanceof vc&&(r=e[t+1])instanceof vc&&e.splice(t-1,3,new vc(n.length+1+r.length))}var xc=class e{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let e=Math.min(t,this.lineEnd),n=this.nodes[this.nodes.length-1];n instanceof _c?n.length+=e-this.pos:(e>this.pos||!this.isCovered)&&this.nodes.push(new _c(e-this.pos,-1,0)),this.writtenTo=e,t>e&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,n){if(e<t||n.heightRelevant){let r=n.widget?n.widget.estimatedHeight:0,i=n.widget?n.widget.lineBreaks:0;r<0&&(r=this.oracle.lineHeight);let a=t-e;n.block?this.addBlock(new gc(a,r,n)):(a||i||r>=5)&&this.addLineDeco(r,i,a)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new _c(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let n=new vc(t-e);return this.oracle.doc.lineAt(e).to==t&&(n.flags|=4),n}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof _c)return e;let t=new _c(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos+=e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,n){let r=this.ensureLine();r.length+=n,r.collapsed+=n,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos+=n}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof _c)&&!this.isCovered?this.nodes.push(new _c(0,-1,0)):(this.writtenTo<this.pos||t==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let n=e;for(let e of this.nodes)e instanceof _c&&e.updateHeight(this.oracle,n),n+=e?e.length:1;return this.nodes}static build(t,n,r,i){let a=new e(r,t);return R.spans(n,r,i,a,0),a.finish(r)}};function Sc(e,t,n){let r=new Cc;return R.compare(e,t,n,r,0),r.changes}var Cc=class{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,n,r){(e<t||n&&n.heightRelevant||r&&r.heightRelevant)&&Pi(e,t,this.changes,5)}};function wc(e,t){let n=e.getBoundingClientRect(),r=e.ownerDocument,i=r.defaultView||window,a=Math.max(0,n.left),o=Math.min(i.innerWidth,n.right),s=Math.max(0,n.top),c=Math.min(i.innerHeight,n.bottom);for(let t=e.parentNode;t&&t!=r.body;)if(t.nodeType==1){let n=t,r=window.getComputedStyle(n);if((n.scrollHeight>n.clientHeight||n.scrollWidth>n.clientWidth)&&r.overflow!=`visible`){let r=n.getBoundingClientRect();a=Math.max(a,r.left),o=Math.min(o,r.right),s=Math.max(s,r.top),c=Math.min(t==e.parentNode?i.innerHeight:c,r.bottom)}t=r.position==`absolute`||r.position==`fixed`?n.offsetParent:n.parentNode}else if(t.nodeType==11)t=t.host;else break;return{left:a-n.left,right:Math.max(a,o)-n.left,top:s-(n.top+t),bottom:Math.max(s,c)-(n.top+t)}}function Tc(e){let t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||window;return t.left<n.innerWidth&&t.right>0&&t.top<n.innerHeight&&t.bottom>0}function Ec(e,t){let n=e.getBoundingClientRect();return{left:0,right:n.right-n.left,top:t,bottom:n.bottom-(n.top+t)}}var Dc=class{constructor(e,t,n,r){this.from=e,this.to=t,this.size=n,this.displaySize=r}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r.from!=i.from||r.to!=i.to||r.size!=i.size)return!1}return!0}draw(e,t){return H.replace({widget:new Oc(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},Oc=class extends Di{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement(`div`);return this.vertical?e.style.height=this.size+`px`:(e.style.width=this.size+`px`,e.style.height=`2px`,e.style.display=`inline-block`),e}get estimatedHeight(){return this.vertical?this.size:-1}},kc=class{constructor(e,t){this.view=e,this.state=t,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scaleX=1,this.scaleY=1,this.scrollOffset=0,this.scrolledToBottom=!1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=Fc,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=U.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let n=t.facet($a).some(e=>typeof e!=`function`&&e.class==`cm-lineWrapping`);this.heightOracle=new lc(n),this.stateDeco=Ic(t),this.heightMap=pc.empty().applyChanges(this.stateDeco,M.empty,this.heightOracle.setDoc(t.doc),[new lo(0,0,0,t.doc.length)]);for(let e=0;e<2&&(this.viewport=this.getViewport(0,null),this.updateForViewport());e++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=H.set(this.lineGaps.map(e=>e.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let n=0;n<=1;n++){let r=n?t.head:t.anchor;if(!e.some(({from:e,to:t})=>r>=e&&r<=t)){let{from:t,to:n}=this.lineBlockAt(r);e.push(new Ac(t,n))}}return this.viewports=e.sort((e,t)=>e.from-t.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Fc:new Lc(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Rc(e,this.scaler))})}update(e,t=null){this.state=e.state;let n=this.stateDeco;this.stateDeco=Ic(this.state);let r=e.changedRanges,i=lo.extendWithRanges(r,Sc(n,this.stateDeco,e?e.changes:Hn.empty(this.state.doc.length))),a=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);cc(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||sc)&&(e.flags|=2),o?(this.scrollAnchorPos=e.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let s=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head<s.from||t.range.head>s.to)||!this.viewportIsAppropriate(s))&&(s=this.getViewport(0,t));let c=s.from!=this.viewport.from||s.to!=this.viewport.to;this.viewport=s,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Va)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,n=window.getComputedStyle(t),r=this.heightOracle,i=n.whiteSpace;this.defaultTextDirection=n.direction==`rtl`?U.RTL:U.LTR;let a=this.heightOracle.mustRefreshForWrapping(i)||this.mustMeasureContent===`refresh`,o=t.getBoundingClientRect(),s=a||this.mustMeasureContent||this.contentDOMHeight!=o.height;this.contentDOMHeight=o.height,this.mustMeasureContent=!1;let c=0,l=0;if(o.width&&o.height){let{scaleX:e,scaleY:n}=qi(t,o);(e>.005&&Math.abs(this.scaleX-e)>.005||n>.005&&Math.abs(this.scaleY-n)>.005)&&(this.scaleX=e,this.scaleY=n,c|=16,a=s=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,d=(parseInt(n.paddingBottom)||0)*this.scaleY;(this.paddingTop!=u||this.paddingBottom!=d)&&(this.paddingTop=u,this.paddingBottom=d,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(s=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=Yi(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=oa(this.scrollParent||e.win);let m=(this.printing?Ec:wc)(t,this.paddingTop),h=m.top-this.pixelViewport.top,g=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let _=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(_!=this.inView&&(this.inView=_,_&&(s=!0)),!this.inView&&!this.scrollTarget&&!Tc(e.dom))return 0;let v=o.width;if((this.contentDOMWidth!=v||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=o.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),s){let t=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights(t)&&(a=!0),a||r.lineWrapping&&Math.abs(v-this.contentDOMWidth)>r.charWidth){let{lineHeight:n,charWidth:o,textHeight:s}=e.docView.measureTextSize();a=n>0&&r.refresh(i,n,o,s,Math.max(5,v/o),t),a&&(e.docView.minWidth=0,c|=16)}h>0&&g>0?l=Math.max(h,g):h<0&&g<0&&(l=Math.min(h,g)),cc();for(let n of this.viewports){let i=n.from==this.viewport.from?t:e.docView.measureVisibleLineHeights(n);this.heightMap=(a?pc.empty().applyChanges(this.stateDeco,M.empty,this.heightOracle,[new lo(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,a,new uc(n.from,i))}sc&&(c|=2)}let y=!this.viewportIsAppropriate(this.viewport,l)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return y&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(l,this.scrollTarget),c|=this.updateForViewport()),(c&2||y)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let n=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:o}=this,s=new Ac(r.lineAt(a-n*1e3,q.ByHeight,i,0,0).from,r.lineAt(o+(1-n)*1e3,q.ByHeight,i,0,0).to);if(t){let{head:e}=t.range;if(e<s.from||e>s.to){let n=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),a=r.lineAt(e,q.ByPos,i,0,0),o;o=t.y==`center`?(a.top+a.bottom)/2-n/2:t.y==`start`||t.y==`nearest`&&e<s.from?a.top:a.bottom-n,s=new Ac(r.lineAt(o-500,q.ByHeight,i,0,0).from,r.lineAt(o+n+500,q.ByHeight,i,0,0).to)}}return s}mapViewport(e,t){let n=t.mapPos(e.from,-1),r=t.mapPos(e.to,1);return new Ac(this.heightMap.lineAt(n,q.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(r,q.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},n=0){if(!this.inView)return!0;let{top:r}=this.heightMap.lineAt(e,q.ByPos,this.heightOracle,0,0),{bottom:i}=this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),{visibleTop:a,visibleBottom:o}=this;return(e==0||r<=a-Math.max(10,Math.min(-n,250)))&&(t==this.state.doc.length||i>=o+Math.max(10,Math.min(n,250)))&&r>a-2e3&&i<o+2e3}mapLineGaps(e,t){if(!e.length||t.empty)return e;let n=[];for(let r of e)t.touchesRange(r.from,r.to)||n.push(new Dc(t.mapPos(r.from),t.mapPos(r.to),r.size,r.displaySize));return n}ensureLineGaps(e,t){let n=this.heightOracle.lineWrapping,r=n?1e4:2e3,i=r>>1,a=r<<1;if(this.defaultTextDirection!=U.LTR&&!n)return[];let o=[],s=(r,a,c,l)=>{if(a-r<i)return;let u=this.state.selection.main,d=[u.from];u.empty||d.push(u.to);for(let e of d)if(e>r&&e<a){s(r,e-10,c,l),s(e+10,a,c,l);return}let f=Pc(e,e=>e.from>=c.from&&e.to<=c.to&&Math.abs(e.from-r)<i&&Math.abs(e.to-a)<i&&!d.some(t=>e.from<t&&e.to>t));if(!f){if(a<c.to&&t&&n&&t.visibleRanges.some(e=>e.from<=a&&e.to>=a)){let e=t.moveToLineBoundary(P.cursor(a),!1,!0).head;e>r&&(a=e)}let e=this.gapSize(c,r,a,l);f=new Dc(r,a,e,n||e<2e6?e:2e6)}o.push(f)},c=t=>{if(t.length<a||t.type!=Oi.Text)return;let i=jc(t.from,t.to,this.stateDeco);if(i.total<a)return;let o=this.scrollTarget?this.scrollTarget.range.head:null,c,l;if(n){let e=r/this.heightOracle.lineLength*this.heightOracle.lineHeight,n,a;if(o!=null){let r=Nc(i,o),s=((this.visibleBottom-this.visibleTop)/2+e)/t.height;n=r-s,a=r+s}else n=(this.visibleTop-t.top-e)/t.height,a=(this.visibleBottom-t.top+e)/t.height;c=Mc(i,n),l=Mc(i,a)}else{let n=i.total*this.heightOracle.charWidth,a=r*this.heightOracle.charWidth,s=0;if(n>2e6)for(let n of e)n.from>=t.from&&n.from<t.to&&n.size!=n.displaySize&&n.from*this.heightOracle.charWidth+s<this.pixelViewport.left&&(s=n.size-n.displaySize);let u=this.pixelViewport.left+s,d=this.pixelViewport.right+s,f,p;if(o!=null){let e=Nc(i,o),t=((d-u)/2+a)/n;f=e-t,p=e+t}else f=(u-a)/n,p=(d+a)/n;c=Mc(i,f),l=Mc(i,p)}c>t.from&&s(t.from,c,t,i),l<t.to&&s(l,t.to,t,i)};for(let e of this.viewportLines)Array.isArray(e.type)?e.type.forEach(c):c(e);return o}gapSize(e,t,n,r){let i=Nc(r,n)-Nc(r,t);return this.heightOracle.lineWrapping?e.height*i:r.total*this.heightOracle.charWidth*i}updateLineGaps(e){Dc.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=H.set(e.map(e=>e.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let n=[];R.spans(t,this.viewport.from,this.viewport.to,{span(e,t){n.push({from:e,to:t})},point(){}},20);let r=0;if(n.length!=this.visibleRanges.length)r=12;else for(let t=0;t<n.length&&!(r&8);t++){let i=this.visibleRanges[t],a=n[t];(i.from!=a.from||i.to!=a.to)&&(r|=4,e&&e.mapPos(i.from,-1)==a.from&&e.mapPos(i.to,1)==a.to||(r|=8))}return this.visibleRanges=n,r}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Rc(this.heightMap.lineAt(e,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Rc(this.heightMap.lineAt(this.scaler.fromDOM(e),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Rc(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Ac=class{constructor(e,t){this.from=e,this.to=t}};function jc(e,t,n){let r=[],i=e,a=0;return R.spans(n,e,t,{span(){},point(e,t){e>i&&(r.push({from:i,to:e}),a+=e-i),i=t}},20),i<t&&(r.push({from:i,to:t}),a+=t-i),{total:a,ranges:r}}function Mc({total:e,ranges:t},n){if(n<=0)return t[0].from;if(n>=1)return t[t.length-1].to;let r=Math.floor(e*n);for(let e=0;;e++){let{from:n,to:i}=t[e],a=i-n;if(r<=a)return n+r;r-=a}}function Nc(e,t){let n=0;for(let{from:r,to:i}of e.ranges){if(t<=i){n+=t-r;break}n+=i-r}return n/e.total}function Pc(e,t){for(let n of e)if(t(n))return n}let Fc={toDOM(e){return e},fromDOM(e){return e},scale:1,eq(e){return e==this}};function Ic(e){let t=e.facet(eo).filter(e=>typeof e!=`function`),n=e.facet(no).filter(e=>typeof e!=`function`);return n.length&&t.push(R.join(n)),t}var Lc=class e{constructor(e,t,n){let r=0,i=0,a=0;this.viewports=n.map(({from:n,to:i})=>{let a=t.lineAt(n,q.ByPos,e,0,0).top,o=t.lineAt(i,q.ByPos,e,0,0).bottom;return r+=o-a,{from:n,to:i,top:a,bottom:o,domTop:0,domBottom:0}}),this.scale=(7e6-r)/(t.height-r);for(let e of this.viewports)e.domTop=a+(e.top-i)*this.scale,a=e.domBottom=e.domTop+(e.bottom-e.top),i=e.bottom}toDOM(e){for(let t=0,n=0,r=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.top)return r+(e-n)*this.scale;if(e<=i.bottom)return i.domTop+(e-i.top);n=i.bottom,r=i.domBottom}}fromDOM(e){for(let t=0,n=0,r=0;;t++){let i=t<this.viewports.length?this.viewports[t]:null;if(!i||e<i.domTop)return n+(e-r)/this.scale;if(e<=i.domBottom)return i.top+(e-i.domTop);n=i.bottom,r=i.domBottom}}eq(t){return t instanceof e&&this.scale==t.scale&&this.viewports.length==t.viewports.length&&this.viewports.every((e,n)=>e.from==t.viewports[n].from&&e.to==t.viewports[n].to)}};function Rc(e,t){if(t.scale==1)return e;let n=t.toDOM(e.top),r=t.toDOM(e.bottom);return new dc(e.from,e.length,n,r-n,Array.isArray(e._content)?e._content.map(e=>Rc(e,t)):e._content)}let zc=F.define({combine:e=>e.join(` `)}),Bc=F.define({combine:e=>e.indexOf(!0)>-1}),Vc=ai.newName(),Hc=ai.newName(),Uc=ai.newName(),Wc={"&light":`.`+Hc,"&dark":`.`+Uc};function Gc(e,t,n){return new ai(t,{finish(t){return/&/.test(t)?t.replace(/&\w*/,t=>{if(t==`&`)return e;if(!n||!n[t])throw RangeError(`Unsupported selector: ${t}`);return n[t]}):e+` `+t}})}let Kc=Gc(`.`+Vc,{"&":{position:`relative !important`,boxSizing:`border-box`,"&.cm-focused":{outline:`1px dotted #212121`},display:`flex !important`,flexDirection:`column`},".cm-scroller":{display:`flex !important`,alignItems:`flex-start !important`,fontFamily:`monospace`,lineHeight:1.4,height:`100%`,overflowX:`auto`,position:`relative`,zIndex:0,overflowAnchor:`none`},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:`block`,whiteSpace:`pre`,wordWrap:`normal`,boxSizing:`border-box`,minHeight:`100%`,padding:`4px 0`,outline:`none`,"&[contenteditable=true]":{WebkitUserModify:`read-write-plaintext-only`}},".cm-lineWrapping":{whiteSpace_fallback:`pre-wrap`,whiteSpace:`break-spaces`,wordBreak:`break-word`,overflowWrap:`anywhere`,flexShrink:1},"&light .cm-content":{caretColor:`black`},"&dark .cm-content":{caretColor:`white`},".cm-line":{display:`block`,padding:`0 2px 0 6px`},".cm-layer":{userSelect:`none`,position:`absolute`,left:0,top:0,contain:`size style`,"& > *":{position:`absolute`}},"&light .cm-selectionBackground":{background:`#d9d9d9`},"&dark .cm-selectionBackground":{background:`#222`},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#d7d4f0`},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:`#233`},".cm-cursorLayer":{pointerEvents:`none`},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:`steps(1) cm-blink 1.2s infinite`},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:`1.2px solid black`,marginLeft:`-0.6px`,pointerEvents:`none`},".cm-cursor":{display:`none`},"&dark .cm-cursor":{borderLeftColor:`#ddd`},".cm-selectionHandle":{backgroundColor:`currentColor`,width:`1.5px`},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:`""`,backgroundColor:`inherit`,borderRadius:`50%`,width:`8px`,height:`8px`,position:`absolute`,left:`-3.25px`},".cm-selectionHandle-start::before":{top:`-8px`},".cm-selectionHandle-end::before":{bottom:`-8px`},".cm-dropCursor":{position:`absolute`},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:`block`},".cm-iso":{unicodeBidi:`isolate`},".cm-announced":{position:`fixed`,top:`-10000px`},"@media print":{".cm-announced":{display:`none`}},"&light .cm-activeLine":{backgroundColor:`#cceeff44`},"&dark .cm-activeLine":{backgroundColor:`#99eeff33`},"&light .cm-specialChar":{color:`red`},"&dark .cm-specialChar":{color:`#f78`},".cm-gutters":{flexShrink:0,display:`flex`,height:`100%`,boxSizing:`border-box`,zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:`#f5f5f5`,color:`#6c6c6c`,border:`0px solid #ddd`,"&.cm-gutters-before":{borderRightWidth:`1px`},"&.cm-gutters-after":{borderLeftWidth:`1px`}},"&dark .cm-gutters":{backgroundColor:`#333338`,color:`#ccc`},".cm-gutter":{display:`flex !important`,flexDirection:`column`,flexShrink:0,boxSizing:`border-box`,minHeight:`100%`,overflow:`hidden`},".cm-gutterElement":{boxSizing:`border-box`},".cm-lineNumbers .cm-gutterElement":{padding:`0 3px 0 5px`,minWidth:`20px`,textAlign:`right`,whiteSpace:`nowrap`},"&light .cm-activeLineGutter":{backgroundColor:`#e2f2ff`},"&dark .cm-activeLineGutter":{backgroundColor:`#222227`},".cm-panels":{boxSizing:`border-box`,position:`sticky`,left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:`#f5f5f5`,color:`black`},".cm-panels-top":{top:`0`},".cm-panels-bottom":{bottom:`0`},"&light .cm-panels-top":{borderBottom:`1px solid #ddd`},"&light .cm-panels-bottom":{borderTop:`1px solid #ddd`},"&dark .cm-panels":{backgroundColor:`#333338`,color:`white`},".cm-dialog":{padding:`2px 19px 4px 6px`,position:`relative`,"& label":{fontSize:`80%`}},".cm-dialog-close":{position:`absolute`,top:`3px`,right:`4px`,backgroundColor:`inherit`,border:`none`,font:`inherit`,fontSize:`14px`,padding:`0`},".cm-tab":{display:`inline-block`,overflow:`hidden`,verticalAlign:`bottom`},".cm-widgetBuffer":{verticalAlign:`text-top`,height:`1em`,width:0,display:`inline`},".cm-placeholder":{color:`#888`,display:`inline-block`,verticalAlign:`top`,userSelect:`none`},".cm-highlightSpace":{backgroundImage:`radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)`,backgroundPosition:`center`},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:`auto 100%`,backgroundPosition:`right 90%`,backgroundRepeat:`no-repeat`},".cm-trailingSpace":{backgroundColor:`#ff332255`},".cm-button":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,padding:`.2em 1em`,borderRadius:`1px`},"&light .cm-button":{backgroundImage:`linear-gradient(#eff1f5, #d9d9df)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#b4b4b4, #d0d3d6)`}},"&dark .cm-button":{backgroundImage:`linear-gradient(#393939, #111)`,border:`1px solid #888`,"&:active":{backgroundImage:`linear-gradient(#111, #333)`}},".cm-textfield":{verticalAlign:`middle`,color:`inherit`,fontSize:`70%`,border:`1px solid silver`,padding:`.2em .5em`},"&light .cm-textfield":{backgroundColor:`white`},"&dark .cm-textfield":{border:`1px solid #555`,backgroundColor:`inherit`}},Wc),qc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Jc=V.ie&&V.ie_version<=11;var Yc=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Xi,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let e of t)this.queue.push(e);(V.ie&&V.ie_version<=11||V.ios&&e.composing)&&t.some(e=>e.type==`childList`&&e.removedNodes.length||e.type==`characterData`&&e.oldValue.length>e.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&V.android&&e.constructor.EDIT_CONTEXT!==!1&&!(V.chrome&&V.chrome_version<126)&&(this.editContext=new $c(e),e.state.facet(qa)&&(e.contentDOM.editContext=this.editContext.editContext)),Jc&&(this.onCharData=e=>{this.queue.push({target:e.target,type:`characterData`,oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia(`print`)),typeof ResizeObserver==`function`&&(this.resizeScroll=new ResizeObserver(()=>{this.view.docView?.lastUpdate<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver==`function`&&(this.intersection=new IntersectionObserver(e=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent(`Event`)))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent(`Event`))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers(`scroll`,e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type==`change`||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,n)=>t!=e[n]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:n}=this,r=this.selectionRange;if(n.state.facet(qa)?n.root.activeElement!=this.dom:!Ri(this.dom,r))return;let i=r.anchorNode&&n.docView.tile.nearest(r.anchorNode);if(i&&i.isWidget()&&i.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(V.ie&&V.ie_version<=11||V.android&&V.chrome)&&!n.state.selection.main.empty&&r.focusNode&&Bi(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Ii(e.root);if(!t)return!1;let n=V.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Qc(this.view,t)||t;if(!n||this.selectionRange.eq(n))return!1;let r=Ri(this.dom,n);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&aa(this.dom,n)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(n),r&&(this.selectionChanged=!0),!0)}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let n=this.dom;n;)if(n.nodeType==1)!t&&e<this.scrollTargets.length&&this.scrollTargets[e]==n?e++:t||=this.scrollTargets.slice(0,e),t&&t.push(n),n=n.assignedSlot||n.parentNode;else if(n.nodeType==11)n=n.host;else break;if(e<this.scrollTargets.length&&!t&&(t=this.scrollTargets.slice(0,e)),t){for(let e of this.scrollTargets)e.removeEventListener(`scroll`,this.onScroll);for(let e of this.scrollTargets=t)e.addEventListener(`scroll`,this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||=(this.observer.observe(this.dom,qc),Jc&&this.dom.addEventListener(`DOMCharacterDataModified`,this.onCharData),!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),Jc&&this.dom.removeEventListener(`DOMCharacterDataModified`,this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){if(!this.delayedAndroidKey){let e=()=>{let e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&e.force&&ra(this.dom,e.key,e.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(e)}(!this.delayedAndroidKey||e==`Enter`)&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!!this.delayedAndroidKey?.force})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,n=-1,r=!1;for(let i of e){let e=this.readMutation(i);e&&(e.typeOver&&(r=!0),t==-1?{from:t,to:n}=e:(t=Math.min(e.from,t),n=Math.max(e.to,n)))}return{from:t,to:n,typeOver:r}}readChange(){let{from:e,to:t,typeOver:n}=this.processRecords(),r=this.selectionChanged&&Ri(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new hs(this.view,e,t,n);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let n=this.view.state,r=_s(this.view,t);return this.view.state==n&&(t.domChanged||t.newSel&&!Cs(this.view.state.selection,t.newSel.main))&&this.view.update([]),r}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type==`attributes`),e.type==`childList`){let n=Xc(t,e.previousSibling||e.target.previousSibling,-1),r=Xc(t,e.nextSibling||e.target.nextSibling,1);return{from:n?t.posAfter(n):t.posAtStart,to:r?t.posBefore(r):t.posAtEnd,typeOver:!1}}return e.type==`characterData`?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener(`change`,this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener(`beforeprint`,this.onPrint),e.addEventListener(`scroll`,this.onScroll),e.document.addEventListener(`selectionchange`,this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener(`scroll`,this.onScroll),e.removeEventListener(`resize`,this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener(`change`,this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener(`beforeprint`,this.onPrint),e.document.removeEventListener(`selectionchange`,this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(qa)!=e.state.facet(qa)&&(e.view.contentDOM.editContext=e.state.facet(qa)?this.editContext.editContext:null))}destroy(){var e,t,n;this.stop(),(e=this.intersection)==null||e.disconnect(),(t=this.gapIntersection)==null||t.disconnect(),(n=this.resizeScroll)==null||n.disconnect();for(let e of this.scrollTargets)e.removeEventListener(`scroll`,this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Xc(e,t,n){for(;t;){let r=G.get(t);if(r&&r.parent==e)return r;let i=t.parentNode;t=i==e.dom?n>0?t.nextSibling:t.previousSibling:i}return null}function Zc(e,t){let n=t.startContainer,r=t.startOffset,i=t.endContainer,a=t.endOffset,o=e.docView.domAtPos(e.state.selection.main.anchor,1);return Bi(o.node,o.offset,i,a)&&([n,r,i,a]=[i,a,n,r]),{anchorNode:n,anchorOffset:r,focusNode:i,focusOffset:a}}function Qc(e,t){if(t.getComposedRanges){let n=t.getComposedRanges(e.root)[0];if(n)return Zc(e,n)}let n=null;function r(e){e.preventDefault(),e.stopImmediatePropagation(),n=e.getTargetRanges()[0]}return e.contentDOM.addEventListener(`beforeinput`,r,!0),e.dom.ownerDocument.execCommand(`indent`),e.contentDOM.removeEventListener(`beforeinput`,r,!0),n?Zc(e,n):null}var $c=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=n=>{let r=e.state.selection.main,{anchor:i,head:a}=r,o=this.toEditorPos(n.updateRangeStart),s=this.toEditorPos(n.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:n.updateRangeStart,editorBase:o,drifted:!1});let c=s-o>n.text.length;o==this.from&&i<this.from?o=i:s==this.to&&i>this.to&&(s=i);let l=bs(e.state.sliceDoc(o,s),n.text,(c?r.from:r.to)-o,c?`end`:null);if(!l){let t=P.single(this.toEditorPos(n.selectionStart),this.toEditorPos(n.selectionEnd));Cs(t,r)||e.dispatch({selection:t,userEvent:`select`});return}let u={from:l.from+o,to:l.toA+o,insert:M.of(n.text.slice(l.from,l.toB).split(`
|
|
12
12
|
`))};if((V.mac||V.android)&&u.from==a-1&&/^\. ?$/.test(n.text)&&e.contentDOM.getAttribute(`autocorrect`)==`off`&&(u={from:o,to:s,insert:M.of([n.text.replace(`.`,` `)])}),this.pendingContextChange=u,!e.state.readOnly){let t=this.to-this.from+(u.to-u.from+u.insert.length);vs(e,u,P.single(this.toEditorPos(n.selectionStart,t),this.toEditorPos(n.selectionEnd,t)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from<u.to&&!u.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,n.updateRangeStart-1),Math.min(t.text.length,n.updateRangeStart+1)))&&this.handlers.compositionend(n)},this.handlers.characterboundsupdate=n=>{let r=[],i=null;for(let t=this.toEditorPos(n.rangeStart),a=this.toEditorPos(n.rangeEnd);t<a;t++){let n=e.coordsForChar(t);i=n&&new DOMRect(n.left,n.top,n.right-n.left,n.bottom-n.top)||i||new DOMRect,r.push(i)}t.updateCharacterBounds(n.rangeStart,r)},this.handlers.textformatupdate=t=>{let n=[];for(let e of t.getTextFormats()){let t=e.underlineStyle,r=e.underlineThickness;if(!/none/i.test(t)&&!/none/i.test(r)){let i=this.toEditorPos(e.rangeStart),a=this.toEditorPos(e.rangeEnd);if(i<a){let e=`text-decoration: underline ${/^[a-z]/.test(t)?t+` `:t==`Dashed`?`dashed `:t==`Squiggle`?`wavy `:``}${/thin/i.test(r)?1:2}px`;n.push(H.mark({attributes:{style:e}}).range(i,a))}}}e.dispatch({effects:Ga.of(H.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:t}=this.composing;this.composing=null,t&&this.reset(e.state)}};for(let e in this.handlers)t.addEventListener(e,this.handlers[e]);this.measureReq={read:e=>{let t=Ii(e.root);t&&t.rangeCount&&this.editContext.updateSelectionBounds(t.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,n=!1,r=this.pendingContextChange;return e.changes.iterChanges((i,a,o,s,c)=>{if(n)return;let l=c.length-(a-i);if(r&&a>=r.to){if(r.from==i&&r.to==a&&r.insert.eq(c)){r=this.pendingContextChange=null,t+=l,this.to+=l;return}r=null,this.revertPending(e.state)}if(i+=t,a+=t,a<=this.from)this.from+=l,this.to+=l;else if(i<this.to){if(i<this.from||a>this.to||this.to-this.from+c.length>3e4){n=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),c.toString()),this.to+=l}t+=l}),r&&!n&&this.revertPending(e.state),!n}update(e){let t=this.pendingContextChange,n=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(n.from,n.to)&&e.transactions.some(e=>!e.isUserEvent(`input.type`)&&e.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,n=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),r=this.toContextPos(t.head);(this.editContext.selectionStart!=n||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(n,r)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>3e4)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let n=this.composing;return n&&n.drifted?n.editorBase+(e-n.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},J=class e{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement(`div`),this.scrollDOM=document.createElement(`div`),this.scrollDOM.tabIndex=-1,this.scrollDOM.className=`cm-scroller`,this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement(`div`),this.announceDOM.className=`cm-announced`,this.announceDOM.setAttribute(`aria-live`,`polite`),this.dom=document.createElement(`div`),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:t}=e;this.dispatchTransactions=e.dispatchTransactions||t&&(e=>e.forEach(e=>t(e,this)))||(e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||ia(e.parent)||document,this.viewState=new kc(this,e.state||L.create(e)),e.scrollTo&&e.scrollTo.is(Wa)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ya).map(e=>new Za(e));for(let e of this.plugins)e.update(this);this.observer=new Yc(this),this.inputState=new ws(this),this.inputState.ensureHandlers(this.plugins),this.docView=new zo(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),document.fonts?.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent=`refresh`,this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof wr?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(t){if(this.updateState!=0)throw Error(`Calls to EditorView.update are not allowed while an update is in progress`);let n=!1,r=!1,i,a=this.state;for(let e of t){if(e.startState!=a)throw RangeError(`Trying to update state with a transaction that doesn't start from the previous state.`);a=e.state}if(this.destroyed){this.viewState.state=a;return}let o=this.hasFocus,s=0,c=null;t.some(e=>e.annotation(tc))?(this.inputState.notifiedFocused=o,s=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=nc(a,o),c||(s=1));let l=this.observer.delayedAndroidKey,u=null;if(l?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(a.doc)||!this.state.selection.eq(a.selection))&&(u=null)):this.observer.clear(),a.facet(L.phrases)!=this.state.facet(L.phrases))return this.setState(a);i=uo.create(this,a,t),i.flags|=s;let d=this.viewState.scrollTarget;try{this.updateState=2;for(let n of t){if(d&&=d.map(n.changes),n.scrollIntoView){let{main:t}=n.state.selection,{x:r,y:i}=this.state.facet(e.cursorScrollMargin);d=new Ua(t.empty?t:P.cursor(t.head,t.head>t.anchor?-1:1),`nearest`,`nearest`,i,r)}for(let e of n.effects)e.is(Wa)&&(d=e.value.clip(this.state))}this.viewState.update(i,d),this.bidiCache=nl.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),n=this.docView.update(i),this.state.facet(co)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(n,t.some(e=>e.isUserEvent(`select.pointer`)))}finally{this.updateState=0}if(i.startState.facet(zc)!=i.state.facet(zc)&&(this.viewState.mustMeasureContent=!0),(n||r||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!i.empty)for(let e of this.state.facet(Fa))try{e(i)}catch(e){Ka(this.state,e,`update listener`)}(c||u)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),u&&!_s(this,u)&&l.force&&ra(this.contentDOM,l.key,l.keyCode)})}setState(e){if(this.updateState!=0)throw Error(`Calls to EditorView.setState are not allowed while an update is in progress`);if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let e of this.plugins)e.destroy(this);this.viewState=new kc(this,e),this.plugins=e.facet(Ya).map(e=>new Za(e)),this.pluginMap.clear();for(let e of this.plugins)e.update(this);this.docView.destroy(),this.docView=new zo(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Ya),n=e.state.facet(Ya);if(t!=n){let r=[];for(let i of n){let n=t.indexOf(i);if(n<0)r.push(new Za(i));else{let t=this.plugins[n];t.mustUpdate=e,r.push(t)}}for(let t of this.plugins)t.mustUpdate!=e&&t.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let t of this.plugins)t.mustUpdate=e;for(let e=0;e<this.plugins.length;e++)this.plugins[e].update(this);t!=n&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let t=e.value;if(t&&t.docViewUpdate)try{t.docViewUpdate(this)}catch(e){Ka(this.state,e,`doc view update listener`)}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,n=this.viewState.scrollParent,r=this.viewState.getScrollOffset(),{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let e=0;;e++){if(a<0){if(oa(n||this.win))i=-1,a=this.viewState.heightMap.height;else{let e=this.viewState.scrollAnchorAt(r);i=e.from,a=e.top}}this.updateState=1;let o=this.viewState.measure();if(!o&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(e>5){console.warn(this.measureRequests.length?`Measure loop restarted more than 5 times`:`Viewport failed to stabilize`);break}let s=[];o&4||([this.measureRequests,s]=[s,this.measureRequests]);let c=s.map(e=>{try{return e.read(this)}catch(e){return Ka(this.state,e),tl}}),l=uo.create(this,this.state,[]),u=!1;l.flags|=o,t?t.flags|=o:t=l,this.updateState=2,l.empty||(this.updatePlugins(l),this.inputState.update(l),this.updateAttrs(),u=this.docView.update(l),u&&this.docViewUpdate());for(let e=0;e<s.length;e++)if(c[e]!=tl)try{let t=s[e];t.write&&t.write(c[e],this)}catch(e){Ka(this.state,e)}if(u&&this.docView.updateSelection(!0),!l.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight){if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,a=-1;continue}{let e=((i<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(i).top)-a)/this.scaleY;if((e>1||e<-1)&&!(V.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(n==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){r+=e,n?i<0?n.scrollTop=n.scrollHeight:n.scrollTop+=e:this.win.scrollBy(0,e),a=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let e of this.state.facet(Fa))e(t)}get themeClasses(){return Vc+` `+(this.state.facet(Bc)?Uc:Hc)+` `+this.state.facet(zc)}updateAttrs(){let e=rl(this,Qa,{class:`cm-editor`+(this.hasFocus?` cm-focused `:` `)+this.themeClasses}),t={spellcheck:`false`,autocorrect:`off`,autocapitalize:`off`,writingsuggestions:`false`,translate:`no`,contenteditable:this.state.facet(qa)?`true`:`false`,class:`cm-content`,style:`${V.tabSize}: ${this.state.tabSize}`,role:`textbox`,"aria-multiline":`true`};this.state.readOnly&&(t[`aria-readonly`]=`true`),rl(this,$a,t);let n=this.observer.ignore(()=>{let n=Ti(this.contentDOM,this.contentAttrs,t),r=Ti(this.dom,this.editorAttrs,e);return n||r});return this.editorAttrs=e,this.contentAttrs=t,n}showAnnouncements(t){let n=!0;for(let r of t)for(let t of r.effects)if(t.is(e.announce)){n&&(this.announceDOM.textContent=``),n=!1;let e=this.announceDOM.appendChild(document.createElement(`div`));e.textContent=t.value}}mountStyles(){this.styleModules=this.state.facet(co);let t=this.state.facet(e.cspNonce);ai.mount(this.root,this.styleModules.concat(Kc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw Error(`Reading the editor layout isn't allowed during an update`);this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;t<this.measureRequests.length;t++)if(this.measureRequests[t].key===e.key){this.measureRequests[t]=e;return}}this.measureRequests.push(e)}}plugin(e){let t=this.pluginMap.get(e);return(t===void 0||t&&t.plugin!=e)&&this.pluginMap.set(e,t=this.plugins.find(t=>t.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,n){return ss(this,e,ns(this,e,t,n))}moveByGroup(e,t){return ss(this,e,ns(this,e,t,t=>rs(this,e.head,t)))}visualLineSide(e,t){let n=this.bidiSpans(e),r=this.textDirectionAt(e.from),i=n[t?n.length-1:0];return P.cursor(i.side(t,r)+e.from,i.forward(!t,r)?1:-1)}moveToLineBoundary(e,t,n=!0){return ts(this,e,t,n)}moveVertically(e,t,n){return ss(this,e,is(this,e,t,n))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let n=ls(this,e,t);return n&&n.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),ls(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let n=this.state.doc.lineAt(e),r=this.bidiSpans(n),i=r[ya.find(r,e-n.from,-1,t)];return this.docView.coordsAt(e,t,i.dir==U.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Ba)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>el)return Da(e.length);let t=this.textDirectionAt(e.from),n;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||ba(r.isolates,n=ao(this,e))))return r.order;n||=ao(this,e);let r=Ea(e.text,t,n);return this.bidiCache.push(new nl(e.from,e.to,t,n,!0,r)),r}get hasFocus(){return(this.dom.ownerDocument.hasFocus()||V.safari&&this.inputState?.lastContextMenu>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{ea(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return Wa.of(new Ua(typeof e==`number`?P.cursor(e):e,t.y??`nearest`,t.x??`nearest`,t.yMargin??5,t.xMargin??5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,n=this.viewState.scrollAnchorAt(e);return Wa.of(new Ua(P.cursor(n.from),`start`,`start`,n.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e==`boolean`?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Xa.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Xa.define(()=>({}),{eventObservers:e})}static theme(e,t){let n=ai.newName(),r=[zc.of(n),co.of(Gc(`.${n}`,e))];return t&&t.dark&&r.push(Bc.of(!0)),r}static baseTheme(e){return or.lowest(co.of(Gc(`.`+Vc,e,Wc)))}static findFromDOM(e){let t=e.querySelector(`.cm-content`);return(t&&G.get(t)||G.get(e))?.root?.view||null}};J.styleModule=co,J.inputHandler=Ia,J.clipboardInputFilter=Ra,J.clipboardOutputFilter=za,J.scrollHandler=Ha,J.focusChangeEffect=La,J.perLineTextDirection=Ba,J.exceptionSink=Pa,J.updateListener=Fa,J.editable=qa,J.mouseSelectionStyle=Na,J.dragMovesSelection=Ma,J.clickAddsSelectionRange=ja,J.decorations=eo,J.blockWrappers=to,J.outerDecorations=no,J.atomicRanges=ro,J.bidiIsolatedRanges=io,J.cursorScrollMargin=F.define({combine:e=>{let t=5,n=5;for(let r of e)typeof r==`number`?t=n=r:{x:t,y:n}=r;return{x:t,y:n}}}),J.scrollMargins=oo,J.darkTheme=Bc,J.cspNonce=F.define({combine:e=>e.length?e[0]:``}),J.contentAttributes=$a,J.editorAttributes=Qa,J.lineWrapping=J.contentAttributes.of({class:`cm-lineWrapping`}),J.announce=I.define();let el=4096,tl={};var nl=class e{constructor(e,t,n,r,i,a){this.from=e,this.to=t,this.dir=n,this.isolates=r,this.fresh=i,this.order=a}static update(t,n){if(n.empty&&!t.some(e=>e.fresh))return t;let r=[],i=t.length?t[t.length-1].dir:U.LTR;for(let a=Math.max(0,t.length-10);a<t.length;a++){let o=t[a];o.dir==i&&!n.touchesRange(o.from,o.to)&&r.push(new e(n.mapPos(o.from,1),n.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return r}};function rl(e,t,n){for(let r=e.state.facet(t),i=r.length-1;i>=0;i--){let t=r[i],a=typeof t==`function`?t(e):t;a&&xi(a,n)}return n}V.mac||V.windows||V.linux,V.gecko&&V.gecko_version,/x/.unicode;var il=class extends Rr{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};il.prototype.elementClass=``,il.prototype.toDOM=void 0,il.prototype.mapMode=Bn.TrackBefore,il.prototype.startSide=il.prototype.endSide=-1,il.prototype.point=!0;let al=0;var ol=class e{constructor(e,t,n,r){this.name=e,this.set=t,this.base=n,this.modified=r,this.id=al++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(t,n){let r=typeof t==`string`?t:`?`;if(t instanceof e&&(n=t),n?.base)throw Error(`Can not derive from a modified tag`);let i=new e(r,[],null,[]);if(i.set.push(i),n)for(let e of n.set)i.set.push(e);return i}static defineModifier(e){let t=new cl(e);return e=>e.modified.indexOf(t)>-1?e:cl.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}};let sl=0;var cl=class e{constructor(e){this.name=e,this.instances=[],this.id=sl++}static get(t,n){if(!n.length)return t;let r=n[0].instances.find(e=>e.base==t&&ll(n,e.modified));if(r)return r;let i=[],a=new ol(t.name,i,t,n);for(let e of n)e.instances.push(a);let o=ul(n);for(let n of t.set)if(!n.modified.length)for(let t of o)i.push(e.get(n,t));return a}};function ll(e,t){return e.length==t.length&&e.every((e,n)=>e==t[n])}function ul(e){let t=[[]];for(let n=0;n<e.length;n++)for(let r=0,i=t.length;r<i;r++)t.push(t[r].concat(e[n]));return t.sort((e,t)=>t.length-e.length)}function dl(e){let t=Object.create(null);for(let n in e){let r=e[n];Array.isArray(r)||(r=[r]);for(let e of n.split(` `))if(e){let n=[],i=2,a=e;for(let t=0;;){if(a==`...`&&t>0&&t+3==e.length){i=1;break}let r=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!r)throw RangeError(`Invalid path: `+e);if(n.push(r[0]==`*`?``:r[0][0]==`"`?JSON.parse(r[0]):r[0]),t+=r[0].length,t==e.length)break;let o=e[t++];if(t==e.length&&o==`!`){i=0;break}if(o!=`/`)throw RangeError(`Invalid path: `+e);a=e.slice(t)}let o=n.length-1,s=n[o];if(!s)throw RangeError(`Invalid path: `+e);t[s]=new pl(r,i,o>0?n.slice(0,o):null).sort(t[s])}}return fl.add(t)}let fl=new O({combine(e,t){let n,r,i;for(;e||t;){if(!e||t&&e.depth>=t.depth?(i=t,t=t.next):(i=e,e=e.next),n&&n.mode==i.mode&&!i.context&&!n.context)continue;let a=new pl(i.tags,i.mode,i.context);n?n.next=a:r=a,n=a}return r}});var pl=class{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}};pl.empty=new pl([],2,null);function ml(e,t){let n=Object.create(null);for(let t of e)if(!Array.isArray(t.tag))n[t.tag.id]=t.class;else for(let e of t.tag)n[e.id]=t.class;let{scope:r,all:i=null}=t||{};return{style:e=>{let t=i;for(let r of e)for(let e of r.set){let r=n[e.id];if(r){t=t?t+` `+r:r;break}}return t},scope:r}}let Y=ol.define,hl=Y(),gl=Y(),_l=Y(gl),vl=Y(gl),yl=Y(),bl=Y(yl),xl=Y(yl),Sl=Y(),Cl=Y(Sl),wl=Y(),Tl=Y(),El=Y(),Dl=Y(El),Ol=Y(),X={comment:hl,lineComment:Y(hl),blockComment:Y(hl),docComment:Y(hl),name:gl,variableName:Y(gl),typeName:_l,tagName:Y(_l),propertyName:vl,attributeName:Y(vl),className:Y(gl),labelName:Y(gl),namespace:Y(gl),macroName:Y(gl),literal:yl,string:bl,docString:Y(bl),character:Y(bl),attributeValue:Y(bl),number:xl,integer:Y(xl),float:Y(xl),bool:Y(yl),regexp:Y(yl),escape:Y(yl),color:Y(yl),url:Y(yl),keyword:wl,self:Y(wl),null:Y(wl),atom:Y(wl),unit:Y(wl),modifier:Y(wl),operatorKeyword:Y(wl),controlKeyword:Y(wl),definitionKeyword:Y(wl),moduleKeyword:Y(wl),operator:Tl,derefOperator:Y(Tl),arithmeticOperator:Y(Tl),logicOperator:Y(Tl),bitwiseOperator:Y(Tl),compareOperator:Y(Tl),updateOperator:Y(Tl),definitionOperator:Y(Tl),typeOperator:Y(Tl),controlOperator:Y(Tl),punctuation:El,separator:Y(El),bracket:Dl,angleBracket:Y(Dl),squareBracket:Y(Dl),paren:Y(Dl),brace:Y(Dl),content:Sl,heading:Cl,heading1:Y(Cl),heading2:Y(Cl),heading3:Y(Cl),heading4:Y(Cl),heading5:Y(Cl),heading6:Y(Cl),contentSeparator:Y(Sl),list:Y(Sl),quote:Y(Sl),emphasis:Y(Sl),strong:Y(Sl),link:Y(Sl),monospace:Y(Sl),strikethrough:Y(Sl),inserted:Y(),deleted:Y(),changed:Y(),invalid:Y(),meta:Ol,documentMeta:Y(Ol),annotation:Y(Ol),processingInstruction:Y(Ol),definition:ol.defineModifier(`definition`),constant:ol.defineModifier(`constant`),function:ol.defineModifier(`function`),standard:ol.defineModifier(`standard`),local:ol.defineModifier(`local`),special:ol.defineModifier(`special`)};for(let e in X){let t=X[e];t instanceof ol&&(t.name=e)}ml([{tag:X.link,class:`tok-link`},{tag:X.heading,class:`tok-heading`},{tag:X.emphasis,class:`tok-emphasis`},{tag:X.strong,class:`tok-strong`},{tag:X.keyword,class:`tok-keyword`},{tag:X.atom,class:`tok-atom`},{tag:X.bool,class:`tok-bool`},{tag:X.url,class:`tok-url`},{tag:X.labelName,class:`tok-labelName`},{tag:X.inserted,class:`tok-inserted`},{tag:X.deleted,class:`tok-deleted`},{tag:X.literal,class:`tok-literal`},{tag:X.string,class:`tok-string`},{tag:X.number,class:`tok-number`},{tag:[X.regexp,X.escape,X.special(X.string)],class:`tok-string2`},{tag:X.variableName,class:`tok-variableName`},{tag:X.local(X.variableName),class:`tok-variableName tok-local`},{tag:X.definition(X.variableName),class:`tok-variableName tok-definition`},{tag:X.special(X.variableName),class:`tok-variableName2`},{tag:X.definition(X.propertyName),class:`tok-propertyName tok-definition`},{tag:X.typeName,class:`tok-typeName`},{tag:X.namespace,class:`tok-namespace`},{tag:X.className,class:`tok-className`},{tag:X.macroName,class:`tok-macroName`},{tag:X.propertyName,class:`tok-propertyName`},{tag:X.operator,class:`tok-operator`},{tag:X.comment,class:`tok-comment`},{tag:X.meta,class:`tok-meta`},{tag:X.invalid,class:`tok-invalid`},{tag:X.punctuation,class:`tok-punctuation`}]);let kl=new O;function Al(e){return F.define({combine:e?t=>t.concat(e):void 0})}let jl=new O;var Ml=class{constructor(e,t,n=[],r=``){this.data=e,this.name=r,L.prototype.hasOwnProperty(`tree`)||Object.defineProperty(L.prototype,"tree",{get(){return Fl(this)}}),this.parser=t,this.extension=[Wl.of(this),L.languageData.of((e,t,n)=>{let r=Nl(e,t,n),i=r.type.prop(kl);if(!i)return[];let a=e.facet(i),o=r.type.prop(jl);if(o){let i=r.resolve(t-r.from,n);for(let t of o)if(t.test(i,e)){let n=e.facet(t.facet);return t.type==`replace`?n:n.concat(a)}}return a})].concat(n)}isActiveAt(e,t,n=-1){return Nl(e,t,n).type.prop(kl)==this.data}findRegions(e){let t=e.facet(Wl);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],r=(e,t)=>{if(e.prop(kl)==this.data){n.push({from:t,to:t+e.length});return}let i=e.prop(O.mounted);if(i){if(i.tree.prop(kl)==this.data){if(i.overlay)for(let e of i.overlay)n.push({from:e.from+t,to:e.to+t});else n.push({from:t,to:t+e.length});return}if(i.overlay){let e=n.length;if(r(i.tree,i.overlay[0].from+t),n.length>e)return}}for(let n=0;n<e.children.length;n++){let i=e.children[n];i instanceof A&&r(i,e.positions[n]+t)}};return r(Fl(e),0),n}get allowsNesting(){return!0}};Ml.setState=I.define();function Nl(e,t,n){let r=e.facet(Wl),i=Fl(e).topNode;if(!r||r.allowsNesting)for(let e=i;e;e=e.enter(t,n,k.ExcludeBuffers|k.EnterBracketed))e.type.isTop&&(i=e);return i}var Pl=class e extends Ml{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(t){let n=Al(t.languageData);return new e(n,t.parser.configure({props:[kl.add(e=>e.isTop?n:void 0)]}),t.name)}configure(t,n){return new e(this.data,this.parser.configure(t),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function Fl(e){let t=e.field(Ml.state,!1);return t?t.tree:A.empty}var Il=class{constructor(e){this.doc=e,this.cursorPos=0,this.string=``,this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}};let Ll=null;var Rl=class e{constructor(e,t,n=[],r,i,a,o,s){this.parser=e,this.state=t,this.fragments=n,this.tree=r,this.treeLen=i,this.viewport=a,this.skipped=o,this.scheduleOn=s,this.parse=null,this.tempSkipped=[]}static create(t,n,r){return new e(t,n,[],A.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Il(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=A.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{if(typeof e==`number`){let t=Date.now()+e;e=()=>Date.now()>t}for(this.parse||=this.startParse(),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let n=this.parse.advance();if(n){if(this.fragments=this.withoutTempSkipped(Vt.addTree(n,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=this.parse.stoppedAt??this.state.doc.length,this.tree=n,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0}if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Vt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=Ll;Ll=this;try{return e()}finally{Ll=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=zl(e,t.from,t.to);return e}changes(t,n){let{fragments:r,tree:i,treeLen:a,viewport:o,skipped:s}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,n,r,i)=>e.push({fromA:t,toA:n,fromB:r,toB:i})),r=Vt.applyChanges(r,e),i=A.empty,a=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){s=[];for(let e of this.skipped){let n=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);n<r&&s.push({from:n,to:r})}}}return new e(this.parser,n,r,i,a,o,s,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let t=0;t<this.skipped.length;t++){let{from:n,to:r}=this.skipped[t];n<e.to&&r>e.from&&(this.fragments=zl(this.fragments,n,r),this.skipped.splice(t--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&=(this.takeTree(),null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ht{createParse(t,n,r){let i=r[0].from,a=r[r.length-1].to;return{parsedPos:i,advance(){let t=Ll;if(t){for(let e of r)t.tempSkipped.push(e);e&&(t.scheduleOn=t.scheduleOn?Promise.all([t.scheduleOn,e]):e)}return this.parsedPos=a,new A(vt.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return Ll}};function zl(e,t,n){return Vt.applyChanges(e,[{fromA:t,toA:n,fromB:t,toB:n}])}var Bl=class e{constructor(e){this.context=e,this.tree=e.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(t.changes,t.state),r=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new e(n)}static init(t){let n=Math.min(3e3,t.doc.length),r=Rl.create(t.facet(Wl).parser,t,{from:0,to:n});return r.work(20,n)||r.takeTree(),new e(r)}};Ml.state=rr.define({create:Bl.init,update(e,t){for(let e of t.effects)if(e.is(Ml.setState))return e.value;return t.startState.facet(Wl)==t.state.facet(Wl)?e.apply(t):Bl.init(t.state)}});let Vl=e=>{let t=setTimeout(()=>e(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<`u`&&(Vl=e=>{let t=-1,n=setTimeout(()=>{t=requestIdleCallback(e,{timeout:400})},100);return()=>t<0?clearTimeout(n):cancelIdleCallback(t)});let Hl=typeof navigator<`u`&&navigator.scheduling?.isInputPending?()=>navigator.scheduling.isInputPending():null,Ul=Xa.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(Ml.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(Ml.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Vl(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:n,viewport:{to:r}}=this.view,i=n.field(Ml.state);if(i.tree==i.context.tree&&i.context.isDone(r+1e5))return;let a=Date.now()+Math.min(this.chunkBudget,100,e&&!Hl?Math.max(25,e.timeRemaining()-5):1e9),o=i.context.treeLen<r&&n.doc.length>r+1e3,s=i.context.work(()=>Hl&&Hl()||Date.now()>a,r+(o?0:1e5));this.chunkBudget-=Date.now()-t,(s||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Ml.setState.of(new Bl(i.context))})),this.chunkBudget>0&&!(s&&!o)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&=(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Ka(this.view.state,e)).then(()=>this.workScheduled--),null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Wl=F.define({combine(e){return e.length?e[0]:null},enables:e=>[Ml.state,Ul,J.contentAttributes.compute([e],t=>{let n=t.facet(e);return n&&n.name?{"data-language":n.name}:{}})]});var Gl=class e{constructor(e,t){this.specs=e;let n;function r(e){let t=ai.newName();return(n||=Object.create(null))[`.`+t]=e,t}let i=typeof t.all==`string`?t.all:t.all?r(t.all):void 0,a=t.scope;this.scope=a instanceof Ml?e=>e.prop(kl)==a.data:a?e=>e==a:void 0,this.style=ml(e.map(e=>({tag:e.tag,class:e.class||r(Object.assign({},e,{tag:null}))})),{all:i}).style,this.module=n?new ai(n):null,this.themeType=t.themeType}static define(t,n){return new e(t,n||{})}};X.meta,X.link,X.heading,X.emphasis,X.strong,X.strikethrough,X.keyword,X.atom,X.bool,X.url,X.contentSeparator,X.labelName,X.literal,X.inserted,X.string,X.deleted,X.regexp,X.escape,X.string,X.variableName,X.variableName,X.typeName,X.namespace,X.className,X.variableName,X.macroName,X.propertyName,X.comment,X.invalid;let Kl=Object.create(null),ql=[vt.none],Jl=[],Yl=Object.create(null),Xl=Object.create(null);for(let[e,t]of[[`variable`,`variableName`],[`variable-2`,`variableName.special`],[`string-2`,`string.special`],[`def`,`variableName.definition`],[`tag`,`tagName`],[`attribute`,`attributeName`],[`type`,`typeName`],[`builtin`,`variableName.standard`],[`qualifier`,`modifier`],[`error`,`invalid`],[`header`,`heading`],[`property`,`propertyName`]])Xl[e]=Ql(Kl,t);function Zl(e,t){Jl.indexOf(e)>-1||(Jl.push(e),console.warn(t))}function Ql(e,t){let n=[];for(let r of t.split(` `)){let t=[];for(let n of r.split(`.`)){let r=e[n]||X[n];r?typeof r==`function`?t.length?t=t.map(r):Zl(n,`Modifier ${n} used at start of tag`):t.length?Zl(n,`Tag ${n} used as modifier`):t=Array.isArray(r)?r:[r]:Zl(n,`Unknown highlighting tag ${n}`)}for(let e of t)n.push(e)}if(!n.length)return 0;let r=t.replace(/ /g,`_`),i=r+` `+n.map(e=>e.id),a=Yl[i];if(a)return a.id;let o=Yl[i]=vt.define({id:ql.length,name:r,props:[dl({[r]:n})]});return ql.push(o),o.id}U.RTL,U.LTR,Pl.define({parser:hn.configure({props:[dl({"Aggregator/Word":X.keyword,"Metric/Word":X.variableName,"Head/Word":X.keyword,DatasetReference:X.keyword,"DatasetReference/Word":X.keyword,At:X.punctuation,TagKey:X.propertyName,"TagKey/Word":X.propertyName,TagValue:X.string,"TagValue/Value/Word":X.string,"TagValue/Word":X.string,Negate:X.operator,Star:X.operator,Dimension:X.attributeName,"Dimension/Word":X.attributeName,By:X.keyword,RollupDot:X.keyword,Int:X.number,"Rollup/Word":X.unit,braceOpen:X.bracket,braceClose:X.bracket,parenOpen:X.bracket,parenClose:X.bracket,colon:X.punctuation,comma:X.punctuation,pipe:X.punctuation,dot:X.punctuation})]}),languageData:{closeBrackets:{brackets:[`{`,`(`]}}}),[...nt.map(e=>({label:e,detail:`function head`,type:`keyword`})),...tt.map(e=>({label:e,detail:`source head`,type:`keyword`})),...rt.map(e=>({label:e,detail:`chart head`,type:`class`})),...it.map(e=>({label:e,detail:`page dataset`,type:`class`}))],Ye.map(e=>({label:e,type:`keyword`})),[...qe,...Je],at.map(e=>({label:e,detail:`display unit`,type:`constant`})),[...new Set(et.flatMap(e=>[...ft(e,`find`)]))],Gl.define([{tag:X.keyword,color:`hsl(var(--primary))`},{tag:X.variableName,color:`hsl(var(--accent-foreground))`,fontWeight:`600`},{tag:X.propertyName,color:`hsl(var(--secondary-foreground))`},{tag:X.string,color:`hsl(var(--success))`},{tag:X.attributeName,color:`hsl(var(--warning))`},{tag:X.number,color:`hsl(var(--primary))`},{tag:X.unit,color:`hsl(var(--muted-foreground))`},{tag:X.operator,color:`hsl(var(--destructive))`},{tag:[X.bracket,X.punctuation],color:`hsl(var(--muted-foreground))`}]);function $l(e){return e.trim().split(/[^a-zA-Z0-9]+/).filter(Boolean).map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function eu(e,t){let n=e?.[t];return typeof n==`string`&&n.length>0?n:void 0}function tu(e){let t=e?.fieldRef;if(!t||typeof t!=`object`)return;let{path:n,kind:r,dimension:i}=t;if(typeof n==`string`&&n.length!==0&&typeof r==`string`)return{path:n,kind:r,...typeof i==`string`?{dimension:i}:{}}}function nu(e){let t=e?.groupTags;if(!t||typeof t!=`object`)return;let n=Object.entries(t).filter(e=>typeof e[1]==`string`&&e[1].length>0).sort(([e],[t])=>e<t?-1:1);return n.length>0?Object.fromEntries(n):void 0}function ru(e){let t=new Map;for(let n of e){if(n.outputType!==`analytics`)continue;let e=n.metrics.find(e=>e.type===E.Label),r=n.metrics.find(e=>e.type!==E.Label&&typeof e.value==`number`);if(!e||!r)continue;let i=String(e.value??e.image??``);if(!i)continue;let a=tu(r.metadata),o=eu(r.metadata,`canonicalKey`)??a?.path??$l(i),s=eu(r.metadata,`effortSlug`),c=eu(r.metadata,`effortDiscipline`),l=eu(r.metadata,`effortIntensityTier`),u=eu(r.metadata,`grade`),d=nu(r.metadata)??(s?{effort:s}:void 0),f=a?`${Ce(a)}${d?`:`+Object.entries(d).map(([e,t])=>`${e}=${t}`).join(`:`):``}`:d?`${o}:${Object.entries(d).map(([e,t])=>`${e}=${t}`).join(`:`)}`:o;t.set(f,{projectionName:i,metricKey:o,value:r.value,unit:r.unit,effortSlug:s,discipline:c,intensityTier:l,grade:u,groupTags:d,rowKey:f,...a?{fieldRef:a}:{},started:n.timeSpan?.started})}return t}function iu(e){let t=e;for(let e of t){let t=eu(e.metadata,`effortSlug`);if(t)return t;if((e.type===`effort`||e.type===E.Effort)&&typeof e.value==`string`&&e.value)return e.value}}function au(e,t){return e.map((e,n)=>({id:`${t.resultId}:${n}`,resultId:t.resultId,noteId:t.noteId,blockContentId:t.blockContentId,pageId:t.pageId,origin:t.origin,timestamp:e.timeSpan?.started??t.workoutTimestamp??Date.now(),grain:`event`,outputType:e.outputType??`segment`,effortSlug:iu(e.metrics),metrics:e.metrics,timeSpan:e.timeSpan?.started===void 0?void 0:{started:e.timeSpan.started,ended:e.timeSpan.ended},metricTemporal:e.timeSpan?.started===void 0?void 0:e.metrics.map(()=>({temporalKind:`instant`,instant:e.timeSpan.started})),sourceBlockKey:e.sourceBlockKey,stackLevel:e.stackLevel,line:e.line,sourceStatementId:e.sourceStatementId,text:e.text,dialect:e.dialect,completionReason:e.completionReason,blockId:t.blockId,blockVersion:t.blockVersion}))}function ou(e,t){let n=Date.now();return Array.from(ru(e).values(),e=>({id:`${t.resultId}:summary:${e.rowKey}`,resultId:t.resultId,noteId:t.noteId,blockContentId:t.blockContentId,pageId:t.pageId,origin:t.origin,timestamp:t.workoutTimestamp??e.started??n,grain:`summary`,outputType:`analytics`,representationKind:`calculated`,summaryCoverage:{scope:e.effortSlug?`effort`:e.groupTags?`partition`:`workout`,...e.effortSlug?{effortSlug:e.effortSlug}:{},...e.groupTags?{groupTags:e.groupTags}:{}},effortSlug:e.effortSlug,metrics:[{type:e.metricKey,value:e.value,...e.unit?{unit:e.unit}:{},metadata:{canonicalKey:e.metricKey,...e.fieldRef?{fieldRef:e.fieldRef,originalKey:e.projectionName}:{},...e.effortSlug?{effortSlug:e.effortSlug}:{},...e.discipline?{effortDiscipline:e.discipline}:{},...e.intensityTier?{effortIntensityTier:e.intensityTier}:{},...e.groupTags?{groupTags:e.groupTags}:{},...e.grade?{grade:e.grade}:{}}}],blockId:t.blockId,blockVersion:t.blockVersion}))}function su(e){return e.startsWith(`collection.`)?`notebook.${e.slice(11)}`:e.startsWith(`feed.`)?`notebook.${e.slice(5)}`:e}function cu(e){return e.startsWith(`markdown/collections/`)?`markdown/notebooks/${e.slice(21)}`:e.startsWith(`markdown/feeds/`)?`markdown/notebooks/${e.slice(15)}`:e}function lu(e){return e.startsWith(`page:collection:`)?`page:${e.slice(16)}`:e.startsWith(`collection:`)?`notebook:${e.slice(11)}`:e.startsWith(`feed:`)?`notebook:${e.slice(5).replace(/^feeds\//,``)}`:e}function uu(e){return e.startsWith(`feeds/`)?e.slice(6):e}function du(e){let t=e,n=e=>{t={...t,...e}},r=e.sourceId;if(typeof r==`string`){let e=lu(r);e!==r&&n({sourceId:e})}let i=e.sourcePath;if(typeof i==`string`){let e=cu(i);e!==i&&n({sourcePath:e})}let a=e.seedChunkId;if(typeof a==`string`){let e=su(a);e!==a&&n({seedChunkId:e})}let o=e.routeId;if(typeof o==`string`){let e=uu(o);e!==o&&n({routeId:e})}return`catalog`in t&&(t={...t},delete t.catalog),t.type===`feed`&&n({type:`note`}),t}function fu(e){let t=e.sourceId;if(typeof t==`string`&&(/^(collection|feed):/.test(t)||t.startsWith(`page:collection:`)))return!0;let n=e.sourcePath;if(typeof n==`string`&&(n.startsWith(`markdown/collections/`)||n.startsWith(`markdown/feeds/`)))return!0;let r=e.seedChunkId;if(typeof r==`string`&&/^(collection|feed)\./.test(r))return!0;let i=e.routeId;return!!(typeof i==`string`&&i.startsWith(`feeds/`)||`catalog`in e||e.type===`feed`)}new Set($e);let Z=`sync_outbox`,pu=`sync_state`,mu=[{name:Z,keyPath:`seq`,autoIncrement:!0},{name:pu,keyPath:`key`}],hu=w.filter(e=>!e.system).map(e=>e.name),gu={attachments:`data`},_u=[{name:`segments`,keyPath:[`id`,`version`]},{name:`results`,keyPath:`id`}];var vu=class{ops=[];ctx};let yu=new Set;function bu(){for(let e of yu)e()}function xu(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&(`lower`in e||`upper`in e||`lowerOpen`in e||`upperOpen`in e)}function Su(e){if(e.op!==`put`)return 32;let t=32,n=gu[e.store],r=e.value,i=n&&typeof r==`object`&&r&&!Array.isArray(r)&&n in r?Reflect.get(r,n):void 0;return t+=typeof i==`string`?i.length:i instanceof ArrayBuffer?Math.ceil(i.byteLength/3)*4+64:JSON.stringify(e.value)?.length??0,t}let Cu=[`block_revisions`,`notes`,`sessions`,...hu.filter(e=>e!==`block_revisions`&&e!==`notes`&&e!==`sessions`)];async function wu(e){let t=Ge(await e(`notes`)),n=[];for(let r of Cu){let i=w.find(e=>e.name===r);for(let a of await e(r))Ke(r,a,t)&&n.push({op:`put`,store:r,key:se(i,a),value:a})}return n}var Tu=class e{owner;name;tx;mutable;touched;journal;constructor(e,t,n,r=!1,i,a){this.owner=e,this.name=t,this.tx=n,this.mutable=r,this.touched=i,this.journal=a}async get(e){return this.tx?this.tx.objectStore(this.name).get(e):(await this.owner.open()).get(this.name,e)}async getMany(e){return this.tx?Promise.all(e.map(e=>this.tx.objectStore(this.name).get(e))):this.owner.transaction([this.name],`readonly`,t=>t.readonly(this.name).getMany(e))}async getAll(e,t){return this.tx?this.tx.objectStore(this.name).getAll(e,t):(await this.owner.open()).getAll(this.name,e,t)}async getAllFromIndex(e,t,n){return this.tx?this.tx.objectStore(this.name).index(e).getAll(t,n):(await this.owner.open()).getAllFromIndex(this.name,e,t,n)}async getAllFromIndexMany(e,t){return this.tx?Promise.all(t.map(t=>this.tx.objectStore(this.name).index(e).getAll(t))):this.owner.transaction([this.name],`readonly`,n=>n.readonly(this.name).getAllFromIndexMany(e,t))}async count(e){return this.tx?this.tx.objectStore(this.name).count(e):(await this.owner.open()).count(this.name,e)}async countFromIndex(e,t){return this.tx?this.tx.objectStore(this.name).index(e).count(t):(await this.owner.open()).countFromIndex(this.name,e,t)}async put(e,t){if(!this.mutable)throw Error(`read-only store`);if(!this.tx){let t=this.name===`notes`?[this.name,`block_revisions`]:[this.name,`block_revisions`,`notes`];return this.owner.transaction([...t],`readwrite`,t=>t.readwrite(this.name).put(e))}let n=this.owner.stamp(this.name,e);ze(this.name,n);let r=w.find(e=>e.name===this.name),i=se(r,n),a=this.tx.objectStore(this.name),o=await a.get(i);if(this.name===`block_revisions`&&o!==void 0&&!Le(o,n))throw Error(`immutable block revision collision`);if(this.name===`notes`&&Be(o,n),this.name===`sessions`&&Ve(o,n),Le(o,n))return i;let s=await a.put(n);if(!r.system&&this.journal){let e=this.name===`notes`?void 0:await(this.journal.ctx??=this.owner.policyContext(this.tx)),t=o!==void 0&&Ke(this.name,o,e??Ge([]));if(Ke(this.name,n,e??Ge([]))){if(this.name===`notes`&&typeof n==`object`&&n&&`id`in n)for(let e of await this.tx.objectStore(`block_revisions`).index(`by-note`).getAll(String(n.id)))this.journal.ops.push({op:`put`,store:`block_revisions`,key:[e.noteId,e.blockId,e.version],value:e});else if(this.name===`sessions`&&typeof n==`object`&&n&&`noteId`in n&&`blockId`in n&&`blockVersion`in n){let e=[n.noteId,n.blockId,n.blockVersion],t=await this.tx.objectStore(`block_revisions`).get(e);t&&this.journal.ops.push({op:`put`,store:`block_revisions`,key:e,value:t})}this.journal.ops.push({op:`put`,store:this.name,key:i,value:n})}else t&&this.journal.ops.push({op:`delete`,store:this.name,key:i});this.name===`notes`&&(this.journal.ctx=void 0)}return this.name===`notes`&&this.touched?.notes.add(String(i)),this.name===`sessions`&&this.touched?.sessions.add(String(i)),s}async putMany(e,t){if(t&&t.length!==e.length)throw Error(`putMany key count mismatch`);if(!this.tx){let n=this.name===`notes`?[this.name,`block_revisions`]:[this.name,`block_revisions`,`notes`];return this.owner.transaction([...n],`readwrite`,n=>n.readwrite(this.name).putMany(e,t))}let n=[];for(let r=0;r<e.length;r++)n.push(await this.put(e[r],t?.[r]));return n}async delete(t){if(!this.mutable)throw Error(`read-only store`);if(this.name===`block_revisions`)throw Error(`block history requires explicit wipe`);if(!this.tx){let e=this.name===`notes`?[this.name]:[this.name,`notes`];return this.owner.transaction([...e],`readwrite`,e=>e.readwrite(this.name).delete(t))}if(this.name===`notes`)for(let n of await this.tx.objectStore(`notes`).getAll(t))for(let t of[`block_index`,`block_efforts`,`block_equipment`]){let r=this.tx.objectStore(t);for(let i of await r.index(`by-note`).getAllKeys(n.id))await new e(this.owner,t,this.tx,!0,this.touched,this.journal).delete(i)}await this.recordDelete(t),await this.tx.objectStore(this.name).delete(t)}async recordDelete(e){if(!this.journal)return;let t=this.tx.objectStore(this.name),n=xu(e)?await t.getAllKeys(e):[e],r=this.name===`notes`?void 0:await(this.journal.ctx??=this.owner.policyContext(this.tx));for(let e of n){let n=await t.get(e);n!==void 0&&!Ke(this.name,n,r??Ge([]))||this.journal.ops.push({op:`delete`,store:this.name,key:e})}}async clear(){if(!this.mutable)throw Error(`read-only store`);if(this.name===`block_revisions`)throw Error(`block history requires explicit wipe`);if(!this.tx){let e=this.name===`notes`?[`notes`,`block_index`,`block_efforts`]:[this.name,`notes`];return this.owner.transaction([...e],`readwrite`,e=>e.readwrite(this.name).clear())}let e=this.tx.objectStore(this.name),t=await e.getAll(),n=Ge(this.name===`notes`?t:await this.tx.objectStore(`notes`).getAll());for(let r of t){let t=se(w.find(e=>e.name===this.name),r);if(Ke(this.name,r,n)&&!(this.name===`meta`&&typeof t==`string`&&t.startsWith(`user-deleted-seed:`))){if(this.name===`notes`&&typeof t==`string`)for(let e of[`block_index`,`block_efforts`,`block_equipment`]){let n=this.tx.objectStore(e);for(let r of await n.index(`by-note`).getAllKeys(t))this.journal?.ops.push({op:`delete`,store:e,key:r}),await n.delete(r)}await this.recordDelete(t),await e.delete(t)}}}};let Eu={script:`wod`,wod:`wod`};function Du(e){return Oe(e.slice(0,e.indexOf(`
|
|
13
13
|
`)).trim())??{}}var Ou=class{options;opening;constructor(e={}){this.options=e}open(){if(typeof indexedDB>`u`)return Promise.reject(Error(`IndexedDB is unavailable in this environment`));if(!this.opening){let e=!1,t=0,n;this.opening=g(this.options.dbName??`wodwiki-db`,32,{upgrade:async(r,i,a,o)=>{if(o.done.catch(()=>{}),i>32){e=!0,o.abort();return}if(i!==0&&i<20){t=i,o.abort();return}try{Au(r,o),i!==0&&i<32&&this.options.onUpgradeStart?.(i),await ju(r,i,o)}catch(e){n=e instanceof Error?e:Error(String(e));try{o.abort()}catch{}}},blocking:()=>{this.close()}}).catch(r=>{throw this.opening=void 0,n||(t===0?e||r instanceof DOMException&&r.name===`VersionError`?Error(`database schema is newer than this client supports (v32); refusing to downgrade`):r:Error(`local database schema v${t} predates the supported migration chain (v20+). Open this browser profile in an intermediate app version to export your data, or clear site data to start fresh — the old database was left untouched.`))})}return this.opening}stamp(e,t){let n=this.options.getUserId?.();return n?ae(e,t,n):t}async policyContext(e){return Ge(e?await e.objectStore(`notes`).getAll():await(await this.open()).getAll(`notes`))}readonly(e){return new Tu(this,e)}readwrite(e){return new Tu(this,e,void 0,!0)}async transaction(e,t,n){let r=await this.open(),i=t===`readwrite`?new vu:void 0,a=new Set(e);t===`readwrite`&&(a.add(`block_revisions`),a.add(Z),a.add(`notes`),a.has(`notes`)&&(a.add(`block_index`),a.add(`block_efforts`),a.add(`block_equipment`)));let o=r.transaction([...a],t),s=o.done;s.catch(()=>{});let c={notes:new Set,sessions:new Set},l={readonly:e=>{if(!a.has(e))throw Error(`store outside transaction scope`);return new Tu(this,e,o)},readwrite:e=>{if(t!==`readwrite`)throw Error(`read-only transaction`);if(!a.has(e))throw Error(`store outside transaction scope`);return new Tu(this,e,o,!0,c,i)}};try{let e=await n(l);return await He((await Promise.all([...c.notes].map(e=>o.objectStore(`notes`).get(e)))).filter(Boolean),(await Promise.all([...c.sessions].map(e=>o.objectStore(`sessions`).get(e)))).filter(Boolean),e=>Promise.all(e.map(e=>o.objectStore(`block_revisions`).get(e)))),i&&i.ops.length>0&&await o.objectStore(Z).put({id:crypto.randomUUID(),at:Date.now(),ops:i.ops}),await s,i&&i.ops.length>0&&bu(),e}catch(e){try{o.abort()}catch{}throw await s.catch(()=>{}),e}}async wipeUserData(){let e=w.filter(e=>!e.system&&e.name!==`block_revisions`).map(e=>e.name);await this.transaction(e,`readwrite`,async t=>{for(let n of e)await t.readwrite(n).clear()})}async wipe(){let e=await this.open(),t=w.filter(e=>!e.system).map(e=>e.name),n=e.transaction([...t,Z],`readwrite`);await Promise.all(t.map(e=>n.objectStore(e).clear())),await n.objectStore(Z).put({id:crypto.randomUUID(),at:Date.now(),ops:[{op:`wipe`}]}),await n.done,bu()}async readOutbox(e,t){let n=await this.open(),r=IDBKeyRange.lowerBound(e,!0);return await n.getAll(Z,r,Math.min(t,4294967295))}async ackOutbox(e){let t=await this.open(),n=await t.getAllKeys(Z,IDBKeyRange.upperBound(e)),r=t.transaction(Z,`readwrite`);await Promise.all(n.map(e=>r.store.delete(e))),await r.done}async getSyncState(e){return(await(await this.open()).get(pu,e))?.value}async setSyncState(e,t){await(await this.open()).put(pu,{key:e,value:t})}async captureSyncBootstrap(e){let t=(await this.open()).transaction([...hu,Z,pu],`readwrite`),n=t.objectStore(pu),r=await n.get(e);if(r!==void 0&&Array.isArray(r.value))return await t.done,r.value;let i=new Set,a=new Set,o=!1;for(let e of await t.objectStore(Z).getAll())for(let t of e.ops)t.op===`put`||t.op===`delete`?i.add(`${t.store}:${JSON.stringify(t.key)}`):t.op===`clear`?a.add(t.store):o=!0;let s=crypto.randomUUID(),c=[];if(!o){let e=[],n=0,r=()=>{e.length!==0&&(c.push({id:`bootstrap:${s}:${c.length}`,at:Date.now(),ops:e}),e=[],n=0)};for(let o of await wu(e=>t.objectStore(e).getAll())){if(a.has(o.store)||o.store!==`block_revisions`&&i.has(`${o.store}:${JSON.stringify(o.key)}`))continue;let t=Su(o);e.length>0&&(e.length>=500||n+t>1e6)&&r(),e.push(o),n+=t}r()}return await n.put({key:e,value:c}),await t.done,c}async validateSyncState(){let e=(await this.open()).transaction([`notes`,`sessions`,`block_revisions`],`readonly`),t=await e.objectStore(`notes`).getAll(),n=await e.objectStore(`sessions`).getAll(),r=e.objectStore(`block_revisions`);await He(t,n,e=>Promise.all(e.map(e=>r.get(e)))),await e.done}async applySyncMutations(e,t,n=`cursor`){let r=new Map(w.map(e=>[e.name,e]));for(let t of e){if(t.op===`clear`||t.op===`wipe`)continue;let e=r.get(t.store);if(!e)throw Error(`unknown store in sync mutation: ${String(t.store)}`);if(t.op===`put`||t.op===`delete`){let n=Array.isArray(t.key)?t.key:[t.key];if(n.length!==e.keyPath.length||!n.every(e=>typeof e==`string`||typeof e==`number`))throw Error(`sync ${t.op} key arity/shape mismatch for ${t.store}`)}t.op===`put`&&ze(t.store,t.value)}let i=await this.open(),a=hu,o=i.transaction([...a,Z,pu],`readwrite`),s=e=>e===`notes`||e===`efforts`,c=new Map;for(let t of e){if(t.op===`clear`||t.op===`wipe`||!s(t.store))continue;let e=`${t.store}:${JSON.stringify(t.key)}`;if(c.has(e))continue;let n=t.key,r=await o.objectStore(t.store).get(n);c.set(e,{store:t.store,key:n,before:r,beforeExists:r!==void 0})}let l=async(e,t)=>{if(e.op===`wipe`){for(let e of a)await o.objectStore(e).clear();return}if(e.store===`memberships`)return;if(e.op===`clear`){if(e.store===`block_revisions`)return;let n=o.objectStore(e.store),i=Ge(await o.objectStore(`notes`).getAll());for(let a of await n.getAll()){if(!Ke(e.store,a,i))continue;let n=se(r.get(e.store),a);e.store===`meta`&&typeof n==`string`&&n.startsWith(`user-deleted-seed:`)||await l({op:`delete`,store:e.store,key:n},t)}return}if(e.op===`delete`){if(e.store===`notes`){let t=String(Array.isArray(e.key)?e.key[0]:e.key);for(let e of[`block_index`,`block_efforts`,`block_equipment`]){let n=o.objectStore(e);for(let e of await n.index(`by-note`).getAllKeys(t))await n.delete(e)}}e.store!==`block_revisions`&&await o.objectStore(e.store).delete(e.key);return}let n=o.objectStore(e.store);if(e.store===`block_revisions`){let r=await n.get(e.key);if(r!==void 0&&!Le(r,e.value)&&!t){let t=e.value,i=r.version+1;for(;await n.get([t.noteId,t.blockId,i])!==void 0;)i+=1;await n.put({...t,version:i});return}(r===void 0||!Le(r,e.value))&&await n.put(e.value);return}if(e.store===`notes`&&!t){let t=await n.get(e.key);if(t!==void 0){let n=t,r=e.value;if(n.sourceRevision>r.sourceRevision)return}}await n.put(e.value)};for(let t of e)await l(t,!1);let u=(await o.objectStore(Z).getAll()).sort((e,t)=>e.seq-t.seq);for(let e of u)for(let t of e.ops)await l(t,!0);let d=0,f=0;for(let e of c.values()){let t=await o.objectStore(e.store).get(e.key);t!==void 0&&(e.beforeExists?Le(e.before,t)||(f+=1):d+=1)}return t!==null&&await o.objectStore(pu).put({key:n,value:{rev:t}}),await o.done,{added:d,updated:f}}async snapshotRows(){let e=await this.open(),t=w.filter(e=>!e.system),n=e.transaction(t.map(e=>e.name),`readonly`),r=Ge(await n.objectStore(`notes`).getAll()),i=await Promise.all(t.map(async e=>({store:e.name,rows:(await n.objectStore(e.name).getAll()).filter(t=>Ke(e.name,t,r))})));return await n.done,i}async snapshotAllRows(){let e=await this.open(),t=w.filter(e=>!e.system),n=e.transaction(t.map(e=>e.name),`readonly`),r=await Promise.all(t.map(async e=>({store:e.name,rows:await n.objectStore(e.name).getAll()})));return await n.done,r}async close(){let e=this.opening;this.opening=void 0,(await e?.catch(()=>void 0))?.close()}};let ku=[...w.map(e=>({name:e.name,keyPath:e.keyPath})),..._u.map(e=>({name:e.name,keyPath:Array.isArray(e.keyPath)?e.keyPath:[e.keyPath]}))];Object.fromEntries(ku.map(e=>[e.name,e.keyPath]));function Au(e,t){for(let n of w){if(e.objectStoreNames.contains(n.name)){let e=t.objectStore(n.name);for(let t of n.indexes)e.indexNames.contains(t.name)||e.createIndex(t.name,t.keyPath.length===1?t.keyPath[0]:t.keyPath,{unique:t.unique,multiEntry:t.multiEntry});continue}let r=e.createObjectStore(n.name,{keyPath:n.keyPath.length===1?n.keyPath[0]:n.keyPath});for(let e of n.indexes)r.createIndex(e.name,e.keyPath.length===1?e.keyPath[0]:e.keyPath,{unique:e.unique,multiEntry:e.multiEntry})}for(let t of mu)e.objectStoreNames.contains(t.name)||e.createObjectStore(t.name,{keyPath:t.keyPath,autoIncrement:`autoIncrement`in t&&t.autoIncrement})}async function ju(e,t,n){let r=e=>n.objectStore(e);if(t===20&&e.objectStoreNames.contains(`sessions`)){let e=r(`sessions`),t=r(`events`);for await(let n of e){let e=n.value,r=e.data?.logs??[],i=!1;for await(let n of t.index(`by-result-grain`).iterate(IDBKeyRange.bound([e.id,``],[e.id,[]]))){i=!0;break}if(!i&&r.length>0){let n={noteId:e.noteId,resultId:e.id,segmentId:e.segmentId,segmentVersion:e.segmentVersion,blockContentId:e.blockContentId,origin:e.origin,pageId:e.pageId,workoutTimestamp:e.data?.endTime??e.createdAt};for(let e of au(r,n))await t.put(e);for(let e of ou(r,n))await t.put(e)}let a={...e,startTime:e.data?.startTime??e.createdAt,endTime:e.data?.endTime??e.createdAt,duration:e.data?.duration??0,completed:e.data?.completed??!0,roundsCompleted:e.data?.roundsCompleted,totalRounds:e.data?.totalRounds,repsCompleted:e.data?.repsCompleted};delete a.data,await n.update(a)}}if(t===21&&e.objectStoreNames.contains(`meta`)&&await r(`meta`).delete(`seed`),t<25)for(let t of T){if(!e.objectStoreNames.contains(t))continue;let n=r(t);n.indexNames.contains(`by-user`)||n.createIndex(`by-user`,`userId`)}if(e.objectStoreNames.contains(`results`)){let t=r(`sessions`),n=r(`results`),i=r(`events`);for await(let e of n){let{data:n,...r}=e.value,a=n?.logs??[];if(a.length>0){let e={noteId:r.noteId,resultId:r.id,segmentId:r.segmentId,segmentVersion:r.segmentVersion,blockContentId:r.blockContentId,origin:r.origin,pageId:r.pageId,workoutTimestamp:n?.endTime??r.createdAt};for(let t of au(a,e))await i.get(t.id)===void 0&&await i.put(t);for(let t of ou(a,e))await i.get(t.id)===void 0&&await i.put(t)}await t.getKey(r.id)===void 0&&await t.put({...r,startTime:n?.startTime??r.startTime??r.createdAt,endTime:n?.endTime??r.endTime??r.createdAt,duration:n?.duration??r.duration??0,completed:n?.completed??r.completed??!0,roundsCompleted:n?.roundsCompleted??r.roundsCompleted,totalRounds:n?.totalRounds??r.totalRounds,repsCompleted:n?.repsCompleted??r.repsCompleted})}e.deleteObjectStore(`results`)}if(e.objectStoreNames.contains(`block_index`)&&!r(`block_index`).indexNames.contains(`by-source`)&&r(`block_index`).createIndex(`by-source`,`sourceId`),e.objectStoreNames.contains(`notes`)&&!r(`notes`).indexNames.contains(`by-created`)&&r(`notes`).createIndex(`by-created`,`createdAt`),e.objectStoreNames.contains(`efforts`)&&!r(`efforts`).indexNames.contains(`by-source`)&&r(`efforts`).createIndex(`by-source`,`registrySource`),e.objectStoreNames.contains(`note_tags`)&&!r(`note_tags`).indexNames.contains(`by-note-tag`)){let e=r(`note_tags`),t=new Map,n=[];for await(let r of e){let e=r.value,i=`${e.noteId}${e.tagId}`,a=t.get(i);a===void 0||e.id<a?(t.set(i,e.id),a!==void 0&&n.push(a)):n.push(e.id)}for(let t of n)await e.delete(t);e.createIndex(`by-note-tag`,[`noteId`,`tagId`],{unique:!0})}if(e.objectStoreNames.contains(`notes`)&&e.objectStoreNames.contains(`segments`)){let e=r(`segments`),t=r(`notes`),n=new Set;for await(let r of e){let e=r.value;if(e.dataType!==`frontmatter`||n.has(e.noteId)||!/(^|\n)dashboard:\s*["']?true["']?\s*(\n|$)/.test(e.rawContent))continue;n.add(e.noteId);let i=await t.get(e.noteId);!i||i.type===`dashboard`&&i.sourceId===`dashboards`||await t.put({...i,type:`dashboard`,sourceId:i.sourceId??`dashboards`})}}if(e.objectStoreNames.contains(`segments`)&&await Mu(e,n),t>=30&&t<32&&e.objectStoreNames.contains(Z)){let t=r(Z),n=[];for(let e of await t.getAll())for(let t of e.ops)if(t.op===`wipe`)for(let e of hu)e!==`block_revisions`&&n.push({op:`clear`,store:e});else t.op!==`put`&&t.store!==`memberships`&&t.store!==`block_revisions`&&n.push(t);if(n.push(...await wu(e=>r(e).getAll())),await t.clear(),n.length>0&&await t.put({id:crypto.randomUUID(),at:Date.now(),ops:n}),e.objectStoreNames.contains(pu)){let e=r(pu);for(let t of await e.getAllKeys())typeof t==`string`&&t.startsWith(`bootstrap-run:`)&&await e.delete(t)}}}async function Mu(e,t){let n=e=>t.objectStore(e),r=await n(`segments`).getAll(),i=n(`notes`),a=n(`block_revisions`),o=new Map;for(let e of r){let t=o.get(e.noteId);t?t.push(e):o.set(e.noteId,[e])}let s=new Map,c=new Map;for(let[e,t]of o){let n=new Map;for(let e of t){let t=n.get(e.id);(!t||e.version>t.version)&&n.set(e.id,e)}let r=[...n.values()].sort((e,t)=>(e.position??2**53-1)-(t.position??2**53-1)||e.id.localeCompare(t.id)),o=r.map(e=>e.sourceContent??`${e.rawContent}\n`).join(``),l=await i.get(e);if(!l)continue;let u=je(o,{registeredWidgets:De}).filter(e=>Me(e)!==null),d=r.filter(e=>e.dataType in Eu),f={};u.forEach((t,n)=>{let r=Me(t),i=d[n],a=i?.id??`migrated-${n}`;for(;Object.hasOwn(f,a);)a=`${a}-${n}`;let o=r===`wod`&&(t.type===`time`||t.type===`log`)?{dialect:t.type,...t.sport?{sport:t.sport}:{}}:{};f[a]={id:a,kind:r,version:i?.version??1,sourceRevision:1,from:t.from,to:t.to,...o},i&&s.set(`${e}${i.id}`,a),c.set(`${e}${a}`,{noteId:e,from:t.from,to:t.to,version:f[a].version})});let p=l;delete p.segments,delete p.segmentIds,await i.put({...p,rawContent:o,sourceRevision:1,blocks:f});let m=new Set(d.map(e=>e.id));for(let n of t){if(!m.has(n.id))continue;let t=Du(n.rawContent);await a.put({noteId:e,blockId:n.id,version:n.version,kind:`wod`,rawContent:n.rawContent,savedAt:n.createdAt,...t})}}let l=n(`sessions`);for(let e of await l.getAll()){if(e.segmentId===void 0&&e.segmentVersion===void 0&&e.version===void 0)continue;let{segmentId:t,segmentVersion:n,version:r,...i}=e;await l.put({...i,blockId:i.blockId??t??``,blockVersion:i.blockVersion??n??r??1})}let u=n(`events`);for(let e of await u.getAll()){if(e.segmentVersion===void 0&&e.segmentId===void 0)continue;let{segmentVersion:t,segmentId:n,...r}=e;await u.put({...r,...r.blockId===void 0&&n!==void 0?{blockId:n}:{},...r.blockVersion===void 0&&t!==void 0?{blockVersion:t}:{}})}let d=n(`block_index`);for(let e of await d.getAll()){let t=s.get(`${e.noteId}${e.segmentId}`)??e.segmentId,n=c.get(`${e.noteId}${t}`),r={...e,id:`${e.noteId}:${t}`,blockId:t,blockVersion:n?.version??e.segmentVersion??1,sourceRevision:1,...n?{from:n.from,to:n.to}:{},dataType:e.dataType===`script`?`wod`:e.dataType};delete r.segmentId,delete r.segmentVersion,r.id!==e.id&&await d.delete(e.id),await d.put(r)}e.deleteObjectStore(`segments`)}var Nu=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}};let Pu={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(Pu);function Fu(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 Iu(e,t=`dialect`,n){return{type:E.Hint,value:e,image:e,origin:t,...n?{icon:n}:{}}}function Lu(e,t,n=`dialect`){let r=t??D.empty(`dialect`),i=new Set(Ru(r));for(let t of e)i.has(t)||(i.add(t),r.add(Iu(t,n)));return r}function Ru(e){return Fu(e).filter(e=>e.type===E.Hint&&typeof e.value==`string`).map(e=>e.value)}function zu(e,t){return Fu(e).some(e=>e.type===E.Hint&&e.value===t)}let Bu=/^([a-zA-Z]+)([\s\S]*)$/;var Vu=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=Bu.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]}};let Hu=[{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`]}],Uu={standard(){return new Vu(Hu)},of(e){return new Vu(e)}},Wu=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`)}`},Gu=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`)}`},Ku=e=>e==null||!Number.isFinite(e)?`--:--`:Math.floor(Math.abs(e)/1e3)>=3600?Gu(e):Wu(e),qu=new Set([E.Duration,E.Time,E.Elapsed,E.Total]);function Ju(e){return qu.has(e)}function Yu(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 Xu(e,t){if(Ju(e.type)&&typeof e.value==`number`)return Ku(e.value);let n=Yu(e);if(e.type===E.Rounds||e.type===`rounds`){let e=n.trim();if(/^\d+$/.test(e))return`${n} ${Number(e)===1?`Round`:`Rounds`}`}return n}function Zu(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(`
|
|
14
|
-
`)}let Qu={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 $u(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 ed(e){let t=String(e).trim(),n=t.toLowerCase();return Qu[n]??$u(t)}function td(e){return e.type.toLowerCase()===`effort`&&(e.value??e.image??``).trim().toLowerCase()===`rest`}function nd(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 rd(){return{isStructural(e){let t=e.type;if(t===E.Group||t===`group`){let t=e.image??``;return t===`+`||t===`-`}return t===E.Lap||t===`lap`},isHidden(e,t){if(this.isStructural(e))return t!==`debug`;let n=e.type;return!!((n===E.Sound||n===`sound`)&&t!==`debug`||n.startsWith(`tag.`)&&t!==`debug`||t===`review-grid-column`&&(n===E.Elapsed||n===`elapsed`||n===E.Total||n===`total`||n===E.System||n===`system`))},present(e,t){let n=this.isStructural(e),r=this.isHidden(e,t),i=td(e),a=(e.type===E.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:Xu(e,t),tooltip:Zu(e),renderKind:s,tone:nd(e,i),iconKey:i?`rest`:e.type,visible:!r,structural:n,rest:i,comment:a,userEntered:o,columnLabel:ed(e.type)}},presentGroup(e,t){return e.map(e=>this.present(e,t))},columnLabel(e){return ed(e)}}}let id=rd();var ad=class{effort;value;image;origin=`parser`;metadata;constructor(e,t){this.effort=e,this.value=t?.resolvedSlug??e,this.image=e,t?.references&&(this.metadata={references:t.references})}type=E.Effort},od=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=E.Distance},sd=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=E.Resistance},cd=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`:E.Custom}};function ld(e,t,n){switch(n){case`length`:return new od(e,t);case`mass`:return new sd(e,t);default:return new cd(e,t,n)}}var ud=class{alternatives;type=E.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(` | `)}},dd=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=E.Intensity};function fd(e){return e.type===E.Rep&&(typeof e.value==`number`||e.value===void 0)}function pd(e){return e.type===E.Effort&&(typeof e.value==`string`?e.value:e.image)===`/`}function md(e){return e.type===E.Effort&&(typeof e.value==`string`?e.value:e.image)===`|`}function hd(e){return e.type!==E.Effort&&e.type!==E.Text?null:typeof e.value==`string`?e.value:typeof e.image==`string`?e.image:null}function gd(e){if(e.type!==E.Distance&&e.type!==E.Resistance)return!1;let t=e.value;return!!t&&t.amount!==void 0&&(!t.unit||t.unit===``)}function _d(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 vd(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}}let yd=/^([\s\S]*?)([a-zA-Z]+)$/;function bd(e){let t=yd.exec(e.trimEnd());return t?{rest:t[1].trim(),token:t[2]}:null}function xd(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 Sd(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 Cd(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 wd(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(!(pd(i.metric)||md(i.metric))){if(a){let t=hd(i.metric),o=e[r+2]?hd(e[r+2].metric):null;if(t!==null&&md(a.metric)&&o!==null){let t=[i.metric],a=r+1;for(;a+1<e.length&&md(e[a].metric)&&hd(e[a+1].metric)!==null;)t.push(e[a+1].metric),a+=2;n.push({metric:new ud(t),meta:Cd(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=fd(i.metric)||gd(i.metric),l=fd(o.metric)||gd(o.metric);if(c&&md(a.metric)&&l){let e=hd(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=fd(i.metric)?i.metric.value:i.metric.value.amount,t=fd(o.metric)?o.metric.value:o.metric.value.amount,c=ld(e,a.token,a.unit.dimension),l=ld(t,a.token,a.unit.dimension);if(c.type===l.type){let e=_d(i.meta,s.meta,a.token);n.push({metric:new ud([c,l]),meta:e}),a.rest&&n.push({metric:new ad(a.rest),meta:vd(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=fd(i.metric)||gd(i.metric),l=fd(o.metric)||gd(o.metric);if(c&&pd(a.metric)&&l){let e=hd(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=fd(i.metric)?i.metric.value:i.metric.value.amount,t=fd(o.metric)?o.metric.value:o.metric.value.amount;if(e!==void 0&&t!==void 0&&t!==0){let o=ld(e/t,a.token,a.unit.dimension),c=_d(i.meta,s.meta,a.token);n.push({metric:o,meta:c}),a.rest&&n.push({metric:new ad(a.rest),meta:vd(s.meta,a.rest)}),r+=3;continue}}}}if(a&&fd(i.metric)){let e=hd(a.metric);if(e!==null&&e.trim()===`%`){n.push({metric:new dd(i.metric.value),meta:_d(i.meta,a.meta,`%`)}),r++;continue}}if(a&&(fd(i.metric)||gd(i.metric))){let e=hd(a.metric),o=e===null?null:t.consumeLeading(e);if(o){let e=fd(i.metric)?i.metric.value:i.metric.value.amount;n.push({metric:ld(e,o.token,o.unit.dimension),meta:_d(i.meta,a.meta,o.token)}),o.rest&&n.push({metric:new ad(o.rest),meta:vd(a.meta,o.rest)}),r++;continue}}if(!a){let e=hd(i.metric),r=e===null?null:bd(e),a=r?t.get(r.token):void 0;if(r&&r.rest&&a&&a.canonical===`bw`){n.push({metric:new ad(r.rest),meta:xd(i.meta,r.rest)}),n.push({metric:ld(void 0,r.token,a.dimension),meta:Sd(i.meta,r.token)});continue}}n.push(i)}}return n}function Td(e,t){let n=e.metrics.toArray(),r=wd(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 Ed=class{id=`units`;name=`Units Dialect`;units;constructor(e=Uu.standard()){this.units=e}transform(e){Td(e,this.units)}analyze(e){return{}}},Dd=class{id=`crossfit`;name=`CrossFit Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t))}hasChildren(e){return e.children&&e.children.length>0}analyze(e){let t=[],n=D.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===E.Rounds),i=n.some(e=>e.type===E.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:Lu(t)}}},Od=class{id=`wod`;name=`WOD Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}analyze(e){let t=[],n=D.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:Lu(t)}}};let kd=[{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`]}];var Ad=class{id=`cardio`;name=`Cardio Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}hasDistance(e){return e.some(e=>e.type===E.Distance)}analyze(e){let t=[],n=D.from(e.metrics);for(let e of kd)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:Lu(t)}}},jd=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===E.Action||e.type===E.Effort||e.type===E.Text)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=D.from(t.metrics),i=r.some(e=>e.type===E.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:Lu(n)}}},Md=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===E.Action||e.type===E.Effort||e.type===E.Text||e.type===E.Label)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=D.from(t.metrics),i=r.some(e=>e.type===E.Duration),a=r.some(e=>e.type===E.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:Lu(n)}}};let Nd={Discipline:`climb-discipline`,Grade:`climb-grade`,SendType:`climb-send-type`,AttemptCount:`climb-attempt-count`,RouteName:`climb-route-name`,HighPoint:`climb-high-point`},Pd={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`},Fd={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 Id(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 Ld(e){return e.toLowerCase().replace(/[_\s]+/g,`-`).trim()}function Rd(e,t,n,r){e.add({type:t,value:n,origin:`dialect`,unit:r})}function zd(e,t){e.includes(t)||e.push(t)}var Bd=class{id=`climb`;name=`Climb Dialect`;analyze(e){let t=[],n=D.empty(`climb-dialect`),r=D.from(e.metrics).toArray(),i=r.map(Id).filter(Boolean).join(` `),a=this.findRouteName(r);a&&Rd(n,Nd.RouteName,a);let o=this.findGrade(r);o&&Rd(n,Nd.Grade,o);let s=this.findSendType(i);s&&Rd(n,Nd.SendType,s);let c=this.findAttemptCount(r);c!==void 0&&Rd(n,Nd.AttemptCount,c);let l=this.findHighPoint(i);l&&Rd(n,Nd.HighPoint,l);let u=this.findDisciplines(i,o);for(let e of u)Rd(n,Nd.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:Lu(t,n)}}findRouteName(e){let t=e.find(e=>e.type===E.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=Id(n),i=Id(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=Ld(e);if(t in Pd)return Pd[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!==E.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(Fd))r.includes(e)&&zd(n,t);return(t?.system===`v-scale`||t?.system===`font`)&&zd(n,`bouldering`),(t?.system===`yds`||t?.system===`french`)&&zd(n,`sport`),n}};function Vd(e){console.warn(e)}let Hd={climbing:`climb`},Ud=new Set;new class{dialects;registry;constructor(e){e instanceof Nu?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=Hd[e]??e;return t.some(e=>e.id===n)?t.filter(e=>e.id===`units`||e.id===n):(Ud.has(e)||(Ud.add(e),Vd(`[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 Nu([new Ed,new Dd,new Od,new Ad,new jd,new Md,new Bd]));let Wd={rpe:E.SessionRPE,rir:E.RIR,intensity:E.Intensity,load:E.Load,volume:E.Volume,work:E.Work,sound:E.Sound};Uu.standard();let Gd=dn.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}),Kd={defaultMet:5,defaultThreshold:2};[...Object.keys(Wd)],Pl.define({parser:Gd.configure({props:[dl({Identifier:X.variableName,String:X.string,Number:X.number,"schemeNumber schemeSpaced":X.number,Timer:X.keyword,collectibleTimer:X.keyword,textComment:X.lineComment,heading:X.heading,minus:X.operator,plus:X.operator,trend:X.operator,atSign:X.operator,"Slash/slash":X.operator,question:X.keyword,actionOpen:X.bracket,actionClose:X.bracket,groupOpen:X.bracket,groupClose:X.bracket,colon:X.punctuation,Property:X.propertyName,"Block/Lap":X.keyword})]}),languageData:{commentTokens:{line:`//`},closeBrackets:{brackets:[`(`,`[`,`'`,`"`]}}});let qd=[`bodyweight`,`cycling`,`gymnastics`,`kettlebell`,`recovery`,`rowing`,`running`,`strength`,`swimming`,`walking`];function Jd(e){return typeof e==`string`&&qd.includes(e.toLowerCase())}let Q=[];for(let e=0;e<256;++e)Q.push((e+256).toString(16).slice(1));function Yd(e,t=0){return(Q[e[t+0]]+Q[e[t+1]]+Q[e[t+2]]+Q[e[t+3]]+`-`+Q[e[t+4]]+Q[e[t+5]]+`-`+Q[e[t+6]]+Q[e[t+7]]+`-`+Q[e[t+8]]+Q[e[t+9]]+`-`+Q[e[t+10]]+Q[e[t+11]]+Q[e[t+12]]+Q[e[t+13]]+Q[e[t+14]]+Q[e[t+15]]).toLowerCase()}let Xd,Zd=new Uint8Array(16);function Qd(){if(!Xd){if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);Xd=crypto.getRandomValues.bind(crypto)}return Xd(Zd)}let $d={};function ef(e,t,n){let r;if(e)r=nf(e.random??e.rng?.()??Qd(),e.msecs,e.seq,t,n);else{let e=Date.now(),i=Qd();tf($d,e,i),r=nf(i,$d.msecs,$d.seq,t,n)}return t??Yd(r)}function tf(e,t,n){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function nf(e,t,n,r,i=0){if(e.length<16)throw Error(`Random bytes length must be >= 16`);if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),n??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],r[i++]=t/1099511627776&255,r[i++]=t/4294967296&255,r[i++]=t/16777216&255,r[i++]=t/65536&255,r[i++]=t/256&255,r[i++]=t&255,r[i++]=112|n>>>28&15,r[i++]=n>>>20&255,r[i++]=128|n>>>14&63,r[i++]=n>>>6&255,r[i++]=n<<2&255|e[10]&3,r[i++]=e[11],r[i++]=e[12],r[i++]=e[13],r[i++]=e[14],r[i++]=e[15],r}let rf=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/,af=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function of(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\nrt])/g,(e,t)=>t===`n`?`
|
|
14
|
+
`)}let Qu={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 $u(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 ed(e){let t=String(e).trim(),n=t.toLowerCase();return Qu[n]??$u(t)}function td(e){return e.type.toLowerCase()===`effort`&&(e.value??e.image??``).trim().toLowerCase()===`rest`}function nd(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 rd(){return{isStructural(e){let t=e.type;if(t===E.Group||t===`group`){let t=e.image??``;return t===`+`||t===`-`}return t===E.Lap||t===`lap`},isHidden(e,t){if(this.isStructural(e))return t!==`debug`;let n=e.type;return!!((n===E.Sound||n===`sound`)&&t!==`debug`||n.startsWith(`tag.`)&&t!==`debug`||t===`review-grid-column`&&(n===E.Elapsed||n===`elapsed`||n===E.Total||n===`total`||n===E.System||n===`system`))},present(e,t){let n=this.isStructural(e),r=this.isHidden(e,t),i=td(e),a=(e.type===E.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:Xu(e,t),tooltip:Zu(e),renderKind:s,tone:nd(e,i),iconKey:i?`rest`:e.type,visible:!r,structural:n,rest:i,comment:a,userEntered:o,columnLabel:ed(e.type)}},presentGroup(e,t){return e.map(e=>this.present(e,t))},columnLabel(e){return ed(e)}}}let id=rd();var ad=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={references:t.references})}type=E.Effort},od=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=E.Distance},sd=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=E.Resistance},cd=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`:E.Custom}};function ld(e,t,n){switch(n){case`length`:return new od(e,t);case`mass`:return new sd(e,t);default:return new cd(e,t,n)}}var ud=class{alternatives;type=E.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(` | `)}},dd=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=E.Intensity};function fd(e){return e.type===E.Rep&&(typeof e.value==`number`||e.value===void 0)}function pd(e){return e.type===E.Effort&&(typeof e.value==`string`?e.value:e.image)===`/`}function md(e){return e.type===E.Effort&&(typeof e.value==`string`?e.value:e.image)===`|`}function hd(e){return e.type!==E.Effort&&e.type!==E.Text?null:typeof e.value==`string`?e.value:typeof e.image==`string`?e.image:null}function gd(e){if(e.type!==E.Distance&&e.type!==E.Resistance)return!1;let t=e.value;return!!t&&t.amount!==void 0&&(!t.unit||t.unit===``)}function _d(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 vd(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}}let yd=/^([\s\S]*?)([a-zA-Z]+)$/;function bd(e){let t=yd.exec(e.trimEnd());return t?{rest:t[1].trim(),token:t[2]}:null}function xd(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 Sd(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 Cd(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 wd(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(!(pd(i.metric)||md(i.metric))){if(a){let t=hd(i.metric),o=e[r+2]?hd(e[r+2].metric):null;if(t!==null&&md(a.metric)&&o!==null){let t=[i.metric],a=r+1;for(;a+1<e.length&&md(e[a].metric)&&hd(e[a+1].metric)!==null;)t.push(e[a+1].metric),a+=2;n.push({metric:new ud(t),meta:Cd(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=fd(i.metric)||gd(i.metric),l=fd(o.metric)||gd(o.metric);if(c&&md(a.metric)&&l){let e=hd(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=fd(i.metric)?i.metric.value:i.metric.value.amount,t=fd(o.metric)?o.metric.value:o.metric.value.amount,c=ld(e,a.token,a.unit.dimension),l=ld(t,a.token,a.unit.dimension);if(c.type===l.type){let e=_d(i.meta,s.meta,a.token);n.push({metric:new ud([c,l]),meta:e}),a.rest&&n.push({metric:new ad(a.rest),meta:vd(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=fd(i.metric)||gd(i.metric),l=fd(o.metric)||gd(o.metric);if(c&&pd(a.metric)&&l){let e=hd(s.metric),a=e===null?null:t.consumeLeading(e);if(a){let e=fd(i.metric)?i.metric.value:i.metric.value.amount,t=fd(o.metric)?o.metric.value:o.metric.value.amount;if(e!==void 0&&t!==void 0&&t!==0){let o=ld(e/t,a.token,a.unit.dimension),c=_d(i.meta,s.meta,a.token);n.push({metric:o,meta:c}),a.rest&&n.push({metric:new ad(a.rest),meta:vd(s.meta,a.rest)}),r+=3;continue}}}}if(a&&fd(i.metric)){let e=hd(a.metric);if(e!==null&&e.trim()===`%`){n.push({metric:new dd(i.metric.value),meta:_d(i.meta,a.meta,`%`)}),r++;continue}}if(a&&(fd(i.metric)||gd(i.metric))){let e=hd(a.metric),o=e===null?null:t.consumeLeading(e);if(o){let e=fd(i.metric)?i.metric.value:i.metric.value.amount;n.push({metric:ld(e,o.token,o.unit.dimension),meta:_d(i.meta,a.meta,o.token)}),o.rest&&n.push({metric:new ad(o.rest),meta:vd(a.meta,o.rest)}),r++;continue}}if(!a){let e=hd(i.metric),r=e===null?null:bd(e),a=r?t.get(r.token):void 0;if(r&&r.rest&&a&&a.canonical===`bw`){n.push({metric:new ad(r.rest),meta:xd(i.meta,r.rest)}),n.push({metric:ld(void 0,r.token,a.dimension),meta:Sd(i.meta,r.token)});continue}}n.push(i)}}return n}function Td(e,t){let n=e.metrics.toArray(),r=wd(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 Ed=class{id=`units`;name=`Units Dialect`;units;constructor(e=Uu.standard()){this.units=e}transform(e){Td(e,this.units)}analyze(e){return{}}},Dd=class{id=`crossfit`;name=`CrossFit Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t))}hasChildren(e){return e.children&&e.children.length>0}analyze(e){let t=[],n=D.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===E.Rounds),i=n.some(e=>e.type===E.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:Lu(t)}}},Od=class{id=`wod`;name=`WOD Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}analyze(e){let t=[],n=D.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:Lu(t)}}};let kd=[{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`]}];var Ad=class{id=`cardio`;name=`Cardio Dialect`;hasKeyword(e,t){return e.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toUpperCase().includes(t.toUpperCase()))}hasDistance(e){return e.some(e=>e.type===E.Distance)}analyze(e){let t=[],n=D.from(e.metrics);for(let e of kd)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:Lu(t)}}},jd=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===E.Action||e.type===E.Effort||e.type===E.Text)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=D.from(t.metrics),i=r.some(e=>e.type===E.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:Lu(n)}}},Md=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===E.Action||e.type===E.Effort||e.type===E.Text||e.type===E.Label)&&typeof e.value==`string`&&t.some(t=>e.value.toString().toUpperCase().includes(t)))}analyze(t){let n=[],r=D.from(t.metrics),i=r.some(e=>e.type===E.Duration),a=r.some(e=>e.type===E.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:Lu(n)}}};let Nd={Discipline:`climb-discipline`,Grade:`climb-grade`,SendType:`climb-send-type`,AttemptCount:`climb-attempt-count`,RouteName:`climb-route-name`,HighPoint:`climb-high-point`},Pd={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`},Fd={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 Id(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 Ld(e){return e.toLowerCase().replace(/[_\s]+/g,`-`).trim()}function Rd(e,t,n,r){e.add({type:t,value:n,origin:`dialect`,unit:r})}function zd(e,t){e.includes(t)||e.push(t)}var Bd=class{id=`climb`;name=`Climb Dialect`;analyze(e){let t=[],n=D.empty(`climb-dialect`),r=D.from(e.metrics).toArray(),i=r.map(Id).filter(Boolean).join(` `),a=this.findRouteName(r);a&&Rd(n,Nd.RouteName,a);let o=this.findGrade(r);o&&Rd(n,Nd.Grade,o);let s=this.findSendType(i);s&&Rd(n,Nd.SendType,s);let c=this.findAttemptCount(r);c!==void 0&&Rd(n,Nd.AttemptCount,c);let l=this.findHighPoint(i);l&&Rd(n,Nd.HighPoint,l);let u=this.findDisciplines(i,o);for(let e of u)Rd(n,Nd.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:Lu(t,n)}}findRouteName(e){let t=e.find(e=>e.type===E.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=Id(n),i=Id(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=Ld(e);if(t in Pd)return Pd[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!==E.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(Fd))r.includes(e)&&zd(n,t);return(t?.system===`v-scale`||t?.system===`font`)&&zd(n,`bouldering`),(t?.system===`yds`||t?.system===`french`)&&zd(n,`sport`),n}};function Vd(e){console.warn(e)}let Hd={climbing:`climb`},Ud=new Set;new class{dialects;registry;constructor(e){e instanceof Nu?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=Hd[e]??e;return t.some(e=>e.id===n)?t.filter(e=>e.id===`units`||e.id===n):(Ud.has(e)||(Ud.add(e),Vd(`[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 Nu([new Ed,new Dd,new Od,new Ad,new jd,new Md,new Bd]));let Wd={rpe:E.SessionRPE,rir:E.RIR,intensity:E.Intensity,load:E.Load,volume:E.Volume,work:E.Work,sound:E.Sound};Uu.standard();let Gd=dn.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});[...Object.keys(Wd)],Pl.define({parser:Gd.configure({props:[dl({Identifier:X.variableName,String:X.string,Number:X.number,"schemeNumber schemeSpaced":X.number,Timer:X.keyword,collectibleTimer:X.keyword,textComment:X.lineComment,heading:X.heading,minus:X.operator,plus:X.operator,trend:X.operator,atSign:X.operator,"Slash/slash":X.operator,question:X.keyword,actionOpen:X.bracket,actionClose:X.bracket,groupOpen:X.bracket,groupClose:X.bracket,colon:X.punctuation,Property:X.propertyName,"Block/Lap":X.keyword})]}),languageData:{commentTokens:{line:`//`},closeBrackets:{brackets:[`(`,`[`,`'`,`"`]}}});let Kd={defaultMet:5,defaultThreshold:2},qd=[`bodyweight`,`cycling`,`gymnastics`,`kettlebell`,`recovery`,`rowing`,`running`,`strength`,`swimming`,`walking`];function Jd(e){return typeof e==`string`&&qd.includes(e.toLowerCase())}let Q=[];for(let e=0;e<256;++e)Q.push((e+256).toString(16).slice(1));function Yd(e,t=0){return(Q[e[t+0]]+Q[e[t+1]]+Q[e[t+2]]+Q[e[t+3]]+`-`+Q[e[t+4]]+Q[e[t+5]]+`-`+Q[e[t+6]]+Q[e[t+7]]+`-`+Q[e[t+8]]+Q[e[t+9]]+`-`+Q[e[t+10]]+Q[e[t+11]]+Q[e[t+12]]+Q[e[t+13]]+Q[e[t+14]]+Q[e[t+15]]).toLowerCase()}let Xd,Zd=new Uint8Array(16);function Qd(){if(!Xd){if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);Xd=crypto.getRandomValues.bind(crypto)}return Xd(Zd)}let $d={};function ef(e,t,n){let r;if(e)r=nf(e.random??e.rng?.()??Qd(),e.msecs,e.seq,t,n);else{let e=Date.now(),i=Qd();tf($d,e,i),r=nf(i,$d.msecs,$d.seq,t,n)}return t??Yd(r)}function tf(e,t,n){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function nf(e,t,n,r,i=0){if(e.length<16)throw Error(`Random bytes length must be >= 16`);if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),n??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],r[i++]=t/1099511627776&255,r[i++]=t/4294967296&255,r[i++]=t/16777216&255,r[i++]=t/65536&255,r[i++]=t/256&255,r[i++]=t&255,r[i++]=112|n>>>28&15,r[i++]=n>>>20&255,r[i++]=128|n>>>14&63,r[i++]=n>>>6&255,r[i++]=n<<2&255|e[10]&3,r[i++]=e[11],r[i++]=e[12],r[i++]=e[13],r[i++]=e[14],r[i++]=e[15],r}let rf=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/,af=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function of(e){return e.replace(/^(['"])(.*)\1$/,(e,t,n)=>t===`"`?n.replace(/\\(["\\nrt])/g,(e,t)=>t===`n`?`
|
|
15
15
|
`:t===`r`?`\r`:t===`t`?` `:t):n)}function sf(e){let t=e.match(rf);if(!t)return{meta:{},body:e};let n=t[1].split(/\r?\n/),r={};for(let e=0;e<n.length;e++){let t=n[e].match(/^([A-Za-z][\w.-]*)\s*:(.*)$/);if(!t)continue;let i=t[1],a=t[2].trim();if(a===``){let t=[];for(;e+1<n.length;){let r=n[e+1].match(/^\s+-\s+(.+)$/);if(!r)break;t.push(of(r[1].trim())),e++}r[i]=t.length>0?t:``}else{let e=/^(['"])(.*)\1$/.test(a),t=of(a),n=Number(t);r[i]=!e&&t!==``&&!isNaN(n)?n:t}}return{meta:r,body:e.slice(t[0].length)}}function cf(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`?n:void 0}function lf(e,t){let n=e[t];return n===void 0||typeof n==`string`&&n===`[]`?[]:Array.isArray(n)?n:void 0}function uf(e){return e===`true`?!0:e===`false`?!1:e!==``&&!Number.isNaN(Number(e))?Number(e):of(e)}function df(e,t){let n=e.findIndex(e=>RegExp(`^${t}:\\s*$`).test(e));if(n===-1)return;let r={},i=null;for(let t=n+1;t<e.length;t++){let n=e[t];if(/^\S/.test(n))break;let a=n.trim();if(!a||a.startsWith(`#`))continue;let o=n.length-n.trimStart().length,s=a.match(/^([\w.-]+):\s*(.*)$/);if(!s)continue;let[,c,l]=s;o===2?l===``?(i=c,r[c]={}):(i=null,r[c]=uf(l)):o>=4&&i!==null&&(r[i][c]=uf(l))}return Object.keys(r).length>0?r:void 0}function ff(e){if(!e)return;let t=of(e.trim()).toLowerCase();if(Jd(t))return t;console.warn(`[definition-markdown] unknown discipline '${e}' — expected one of the canonical values; treating as unset`)}function pf(e,t){let n=[],r=e===void 0?``:String(e);return r?af.test(r)||n.push(`Invalid slug: must be lowercase letters, numbers, and hyphens only`):n.push(`Missing required field: slug`),(t===void 0||!String(t).trim())&&n.push(`Missing required field: label`),n}function mf(e,t){let n=[];for(let r of e)r.trim()?t===`equipment`&&!af.test(r)&&n.push(`Invalid ${t}: '${r}' must be a canonical slug (lowercase letters, numbers, hyphens)`):n.push(`Invalid ${t}: blank entries are not allowed`);let r=e.find((t,n)=>e.indexOf(t)!==n);return r!==void 0&&n.push(`Invalid ${t}: duplicate entry '${r}'`),n}function hf(e){return e===void 0?`Missing required field: baseAttributes.met`:typeof e!=`number`||!Number.isFinite(e)||e<=0?`Invalid baseAttributes.met: must be a positive number`:null}function gf(e){let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!t)return null;let n=t[1].split(/\r?\n/),{meta:r,body:i}=sf(e),a=cf(r,`type`);if(a!==void 0&&a!==`effort`)return null;let o=cf(r,`id`),s=cf(r,`slug`),c=cf(r,`label`),l=lf(r,`aliases`),u=lf(r,`equipment`);if(l===void 0||u===void 0||pf(s,c).length>0||mf(l,`aliases`).length>0||u.length>0&&mf(u,`equipment`).length>0)return null;let d=df(n,`baseAttributes`)??{},f=df(n,`metrics`)??{},p=r[`metrics.met`]??f.met??d.met;if(hf(p)!==null)return null;let m=Number(p),h=cf(r,`discipline`),g=ff(typeof h==`string`?h:typeof d.discipline==`string`?d.discipline:void 0),_=cf(r,`intensityTier`)??cf(r,`intensity`)??d.intensityTier,v=r[`metrics.disciplineFactor`]??f.disciplineFactor??d.disciplineFactor,y=typeof v==`number`&&Number.isFinite(v)?v:void 0,b=df(n,`hints`),x=df(n,`derivation`),S=i.trim();return{id:String(o??``),slug:String(s),label:String(c),aliases:l,baseAttributes:{met:m,...g?{discipline:g}:{},...y===void 0?{}:{disciplineFactor:y},..._?{intensityTier:_}:{}},registrySource:`bundled`,...u.length>0?{equipment:u}:{},...S?{body:S}:{},...b?{hints:b}:{},...x?{derivation:x}:{}}}function _f(e){let{meta:t,body:n}=sf(e);if(cf(t,`type`)!==`equipment`)return null;let r=cf(t,`id`),i=cf(t,`slug`),a=cf(t,`label`),o=lf(t,`aliases`);if(r===void 0||o===void 0||pf(i,a).length>0||mf(o,`aliases`).length>0)return null;let s=n.trim();return{id:String(r),slug:String(i),label:String(a),aliases:o,registrySource:`bundled`,...s?{body:s}:{}}}let vf=[{id:`fixture-running`,slug:`running-6-mph`,label:`Running (6 mph)`,aliases:[`run`,`jogging`,`treadmill`],baseAttributes:{met:9.8,discipline:`running`,intensityTier:`moderate`},registrySource:`bundled`},{id:`fixture-rowing`,slug:`rowing`,label:`Rowing`,aliases:[`row`,`rower`,`erg`],baseAttributes:{met:7,discipline:`rowing`,intensityTier:`high`},registrySource:`bundled`},{id:`fixture-back-squat`,slug:`back-squat`,label:`Back Squat`,aliases:[`squat`,`barbell squat`,`bs`],baseAttributes:{met:6,discipline:`strength`,intensityTier:`moderate`},registrySource:`bundled`},{id:`fixture-burpee`,slug:`burpee`,label:`Burpee`,aliases:[`burpees`],baseAttributes:{met:10,discipline:`bodyweight`,intensityTier:`high`},registrySource:`bundled`},{id:`fixture-plank`,slug:`plank`,label:`Plank`,aliases:[`planks`],baseAttributes:{met:3.5,discipline:`bodyweight`,intensityTier:`low`},registrySource:`bundled`}];[...vf],vf.length;var yf=class e{started;ended;constructor(e,t){this.started=e,this.ended=t}static fromJSON(t){return new e(t.started,t.ended)}static fromDates(t,n){return new e(t.getTime(),n?.getTime())}get duration(){let e=this.ended??Date.now();return Math.max(0,e-this.started)}get isOpen(){return this.ended===void 0}get startDate(){return new Date(this.started)}get endDate(){return this.ended?new Date(this.ended):void 0}},bf=class e{_underlying;_frozenTime;constructor(e,t){this._underlying=e,this._frozenTime=t}get currentDate(){return this._frozenTime}now(){return this._frozenTime}nowMs(){return this._frozenTime.getTime()}get elapsed(){return this._underlying.elapsed}get isRunning(){return this._underlying.isRunning}get spans(){return this._underlying.spans}start(){return this._underlying.start()}stop(){return this._underlying.stop()}static at(t,n){return new e(t,n)}static now(t){return new e(t,t.currentDate)}};let xf={now:()=>new Date,nowMs:()=>Date.now()};var Sf=class{options;now;type=`next`;constructor(e,t=xf){this.options=e,this.now=t}do(e){if(!this.validateRuntimeState(e))return[];let t=e.stack.current;if(!t)return[];try{let n={...e.clock?{clock:bf.now(e.clock)}:void 0,...this.options};return t.next(e,n)}catch(n){return e.errors&&Array.isArray(e.errors)&&e.errors.push({error:n,source:`NextAction`,timestamp:this.now.now(),blockKey:t.key.toString()}),[]}}validateRuntimeState(e){return!!e.stack}};let Cf=e=>String(e).padStart(2,`0`),wf=e=>String(e).padStart(3,`0`);function Tf(e){return`${Cf(e.getHours())}:${Cf(e.getMinutes())}:${Cf(e.getSeconds())}.${wf(e.getMilliseconds())}`}function Ef(e){return(e+` `).slice(0,5)}function Df(e){return(e+` `.repeat(24)).slice(0,24)}function Of(e){if(!e)return`─`.repeat(52);let t=` ${e} `,n=Math.max(0,Math.floor((52-t.length)/2)),r=Math.max(0,52-t.length-n);return`${`─`.repeat(n)}${t}${`─`.repeat(r)}`}var kf=class{_console=console;_enabled=!1;_history=[];_maxHistory=500;EVENT_STYLES={BOOT:`color: #3b82f6; font-weight: bold`,PUSH:`color: #a855f7; font-weight: bold`,POP:`color: #64748b`,NEXT:`color: #b45309; font-weight: bold`,EVNT:`color: #a855f7; font-weight: bold`,OUT:`color: #16a34a; font-weight: bold`,MEM:`color: #f59e0b`,TIME:`color: #3b82f6; font-weight: bold`,HALT:`color: #ef4444; font-weight: bold`,WARN:`color: #f59e0b; font-weight: bold`,ERR:`color: #ef4444; font-weight: bold`};constructor(){if(typeof window<`u`){let e=window;this._enabled=!!e.__WOD_DEBUG__}}get enabled(){return this._enabled}enable(){this._enabled=!0,this.writeLine(`BOOT`,`runtime:ready`,`logging enabled`)}disable(){this.writeLine(`HALT`,`runtime:logger`,`logging disabled`),this._enabled=!1}getHistory(){return[...this._history]}clearHistory(){this._history=[]}logBoot(e){this._enabled&&this.writeLine(`BOOT`,`runtime:ready`,e)}logPush(e,t,n){if(!this._enabled)return;let r=this.getBehaviorNames(e),i=[`d${n??`?`} ${e.blockType??`block`}`,r.length>0?`behaviors [${r.join(`, `)}]`:void 0,t?`parent ${t.slice(0,8)}`:void 0].filter(Boolean).join(` · `);this.writeLine(`PUSH`,e.label||e.blockType||`Block`,i),this.addToHistory(`info`,`push`,`PUSH ${e.label}`,{key:e.key.toString(),parentKey:t,behaviors:r,sourceIds:e.sourceIds})}logPop(e,t,n){this._enabled&&(this.writeLine(`POP`,e.label||e.blockType||`Block`,`d${n??`?`}${t?` `+t:``}`),this.addToHistory(`info`,`pop`,`POP ${e.label}`,{key:e.key.toString(),reason:t}))}logNext(e,t){if(!this._enabled||t.length===0)return;let n=t.map(e=>e.type||e.constructor?.name||`Action`);this.writeLine(`NEXT`,e.label||`Block`,`${n.length} action(s): [${n.join(`, `)}]`),this.addToHistory(`info`,`next`,`NEXT ${e.label}`,{key:e.key.toString(),actions:n})}logEvent(e,t){if(!this._enabled||t.length===0)return;let n=t.map(e=>e.type||e.constructor?.name||`Action`);this.writeLine(`EVNT`,e.name,`${n.length} action(s): [${n.join(`, `)}]`),this.addToHistory(`info`,`event`,`EVENT ${e.name}`,{eventName:e.name,eventData:e.data,actions:n})}logOutput(e){if(!this._enabled||e.outputType!==`segment`&&e.outputType!==`milestone`)return;let t=e.text||this.outputSubject(e.metrics);t&&(this.writeLine(`OUT`,t,e.outputType),this.addToHistory(`info`,`output`,`OUT ${t}`,{outputType:e.outputType,label:t}))}outputSubject(e){if(e){for(let t of e)if(t.type===`label`)return t.image||(t.value==null?``:String(t.value))||void 0}}logMemoryUpdate(e,t,n){if(!this._enabled)return;let r=typeof n==`object`&&n?this.summarizeObject(n):n;this.writeLine(`MEM`,t,`[${e.slice(0,8)}] ${Af(r)}`),this.addToHistory(`debug`,`memory`,`MEMORY ${t}`,{blockKey:e,memoryType:t,value:r})}logAction(e,t){if(!this._enabled)return;let n=e.type||e.constructor?.name||`Action`;this.writeLine(`EVNT`,n,`d${t}`)}logMessage(e,t,n,r){this._enabled&&(this.writeLine(e===`error`?`ERR`:e===`warn`?`WARN`:`EVNT`,t,n),this.addToHistory(e,t,n,r))}logAlways(e,t,n,r){this.writeLine(e===`error`?`ERR`:e===`warn`?`WARN`:`EVNT`,t,n),this.addToHistory(e,t,n,r)}logRule(e){this._enabled&&this._console.log(`%c${Of(e)}`,`color: #94a3b8`)}writeLine(e,t,n){let r=Tf(new Date);this._console.log(`${r} %c${Ef(e)}%c ${Df(t)}${n?` `+n:``}`,this.EVENT_STYLES[e],`color: inherit`)}getBehaviorNames(e){let t=e.behaviors;return!t||!Array.isArray(t)?[]:t.map(e=>e.constructor?.name||`Behavior`)}summarizeObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?`[${r.length} items]`:typeof r==`object`&&r?`{...}`:r;return t}addToHistory(e,t,n,r){this._history.push({timestamp:new Date,level:e,category:t,message:n,data:r}),this._history.length>this._maxHistory&&(this._history=this._history.slice(-this._maxHistory))}};function Af(e){try{return JSON.stringify(e)??``}catch{return String(e)}}let jf=new kf;typeof window<`u`&&(window.RuntimeLogger=jf);var Mf=class{options;type=`pop-block`;constructor(e={}){this.options=e}do(e){let t=e.stack.current;if(!t)return[];let n=this.options.createdAt??e.clock.currentDate,r={...this.options,createdAt:n};t.executionTiming&&(t.executionTiming.createdAt=n),!t.isComplete&&typeof t.markComplete==`function`&&(t.markComplete(`forced-pop`),jf.logPop(t,`forced-pop (incomplete block popped without next)`,e.stack.blocks.length));let i=t.unmount(e,r)??[],a=e.stack.pop();return a?(a.dispose(e),a.context?.release?.(),a.completionReason!==`forced-pop`&&jf.logPop(a,a.completionReason,e.stack.blocks.length+1),e.stack.current?[...i,new Sf(r,e.nowProvider)]:i):[]}},Nf=class{_memory;ownerId;type;visibility;_logger;id=ef();_subscriptions=[];constructor(e,t,n,r=`private`,i){this._memory=e,this.ownerId=t,this.type=n,this.visibility=r,this._logger=i}value(){return this.get()}get subscriptions(){return this._subscriptions}get(){return this._memory.get(this)}set(e){this._memory.set(this,e)}subscribe(e,t){let n=ef(),r={id:n,callback:e,memoryId:this.id,createdAt:new Date};return this._subscriptions.push(r),t?.immediate&&e(this.get(),void 0),()=>this.unsubscribe(n)}unsubscribe(e){let t=this._subscriptions.findIndex(t=>t.id===e);t>=0&&this._subscriptions.splice(t,1)}hasSubscribers(){return this._subscriptions.length>0}notifySubscribers(e,t){for(let n of this._subscriptions)try{n.callback(e,t)}catch(e){this._logger?.error?.(`Error in memory subscription callback:`,e)}}},Pf=class{_references=[];allocate(e,t,n,r=`private`){let i=new Nf(this,t,e,r);return this._references.push({ref:i,data:n}),i}get(e){return this._references.find(t=>t.ref.id===e.id)?.data??void 0}set(e,t){let n=this._references.find(t=>t.ref.id===e.id);if(!n)throw Error(`Invalid memory reference: ${e.id}`);let r=n.data;n.data=t,e.hasSubscribers()&&e.notifySubscribers(t,r)}search(e){return this._references.map(e=>e.ref).filter(t=>!(e.id!==null&&e.id!==void 0&&e.id!==t.id||e.ownerId!==null&&e.ownerId!==void 0&&e.ownerId!==t.ownerId||e.type!==null&&e.type!==void 0&&e.type!==t.type||e.visibility!==null&&e.visibility!==void 0&&e.visibility!==t.visibility))}release(e){let t=this._references.findIndex(t=>t.ref.id===e.id);if(t>=0){let e=this._references[t],n=e.data,r=e.ref;r instanceof Nf&&r.hasSubscribers()&&r.notifySubscribers(void 0,n),this._references.splice(t,1)}}};let Ff=function(e){return e.DISPLAY_STACK_STATE=`displaystack`,e.ACTION_STACK_STATE=`actions`,e.TIMER_PREFIX=`timer:`,e.HANDLER_PREFIX=`handler:`,e.METRIC_REPS=`metric:reps`,e.ANCHOR=`anchor`,e}({});var If=class{timestamp;constructor(e=xf){this.timestamp=e.now()}},Lf=class extends If{name=`memory:allocate`;data;constructor(e,t,n=xf){super(n),this.data={ref:e,value:t}}},Rf=class extends If{name=`memory:set`;data;constructor(e,t,n,r=xf){super(r),this.data={ref:e,value:t,oldValue:n}}},zf=class extends If{name=`memory:release`;data;constructor(e,t,n=xf){super(n),this.data={ref:e,lastValue:t}}},Bf=class{runtime;ownerId;exerciseId;_references=[];_released=!1;_memory;constructor(e,t,n=``,r=[],i){this.runtime=e,this.ownerId=t,this.exerciseId=n,this._references=[...r],this._memory=i??new Pf}get references(){return[...this._references]}allocate(e,t,n=`private`){if(this._released)throw Error(`Cannot allocate on released context (ownerId: ${this.ownerId})`);let r=e,i=this._memory.allocate(r,this.ownerId,t,n);return this._references.push(i),this.runtime.eventBus.dispatch(new Lf(i,t,this.runtime.nowProvider),this.runtime),i}get(e){let t=e;return this._references.find(e=>e.type===t)}getAll(e){let t=e;return this._references.filter(e=>e.type===t)}set(e,t){if(this._released)throw Error(`Cannot set on released context (ownerId: ${this.ownerId})`);let n=e.get();this._memory.set(e,t),this.runtime.eventBus.dispatch(new Rf(e,t,n,this.runtime.nowProvider),this.runtime)}release(){if(!this._released){for(let e of this._references){let t=e.value();this._memory.release(e),this.runtime.eventBus.dispatch(new zf(e,t,this.runtime.nowProvider),this.runtime)}this._references=[],this._released=!0}}isReleased(){return this._released}getOrCreateAnchor(e){if(this._released)throw Error(`Cannot access anchor on released context (ownerId: ${this.ownerId})`);let t;for(let n of this.runtime.stack.blocks){let r=n.context.references.find(t=>t.id===e&&t.type===Ff.ANCHOR);if(r){t=r;break}}if(t)return this._references.find(e=>e.id===t.id)||this._references.push(t),t;let n=this._memory.allocate(Ff.ANCHOR,this.ownerId,void 0,`public`);return n.id=e,this._references.push(n),n}};let Vf=`time`;function Hf(e){return[new yf(e)]}function Uf(e,t){return e.map((n,r)=>r===e.length-1&&n.ended===void 0?new yf(n.started,t):n)}function Wf(e,t){return[...e,new yf(t)]}function Gf(e){return e.getMemoryByTag(Vf)[0]?.metrics[0]?.value}function Kf(e,t){let n=e.getMemoryByTag(Vf)[0]?.metrics[0],r=n?.value;if(!r||!n)return!1;let i=t(r.spans,e.clock.currentDate.getTime());return e.updateMemory(Vf,[{...n,value:{...r,spans:i}}]),!0}var qf=class{targetBlockKey;type=`clear-children`;constructor(e){this.targetBlockKey=e}do(e){let t=[],n=0;for(;n<20;){let r=e.stack.current;if(!r||r.key.toString()===this.targetBlockKey)break;let i=new Mf().do(e);for(let e of i)e.type!==`next`&&t.push(e);n++}return n>=20&&e.options.logger?.error?.(`[ClearChildrenAction] Max iterations reached, possible infinite loop`,Error(`Exceeded 20 pop iterations for target ${this.targetBlockKey}`)),e.stack.current?.key.toString()===this.targetBlockKey&&t.push(new Sf(void 0,e.nowProvider)),t}};function Jf(e,t){let n=0;for(let r of e.spans){let e=r.ended??t;n+=e-r.started}return n}function Yf(e){let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}var Xf=class{current;total;sourceBlockKey;timestamp;type=E.CurrentRound;origin=`tracked`;value;image;constructor(e,t,n,r,i){this.current=e,this.total=t,this.sourceBlockKey=n,this.timestamp=r,this.value=e,this.image=i??(t===void 0?`Round ${e}`:`Round ${e} of ${t}`)}},Zf=class{config;constructor(e){this.config=e}subscriptions=[];isPaused=!1;onMount(e){let t=e.clock.currentDate.getTime(),n=this.config.label??e.block.label,r=this.config.role===`hidden`?`auto`:this.config.role??`primary`,i=this.config.mode??`complete-block`;return e.pushMemory(`time`,[this.createFragment(e,{spans:Hf(t),direction:`down`,durationMs:this.config.durationMs,label:n,role:r})]),this.config.durationMs<=0?(this.handleExpiry(e,i),[new qf(e.block.key.toString())]):(this.subscriptions.push(e.subscribe(`tick`,(e,t)=>i===`complete-block`&&t.block.isComplete||!this.hasExpired(t)?[]:(this.handleExpiry(t,i),[new qf(t.block.key.toString())]),{scope:`bubble`})),this.subscriptions.push(e.subscribe(`timer:reset`,(e,t)=>(i===`reset-interval`&&Kf(t,(e,t)=>Hf(t)),[]))),this.subscriptions.push(e.subscribe(`timer:pause`,(e,t)=>(this.isPaused||Kf(t,Uf)&&(this.isPaused=!0),[]))),this.subscriptions.push(e.subscribe(`timer:resume`,(e,t)=>(this.isPaused&&Kf(t,Wf)&&(this.isPaused=!1),[]))),[])}onNext(e){if((this.config.mode??`complete-block`)===`complete-block`&&!e.block.isComplete&&this.hasExpired(e))return e.markComplete(`timer-expired`),[new Mf,new qf(e.block.key.toString())];if(this.config.required&&!e.block.isComplete)return e.emitEvent({name:`timer:skip-attempt`,timestamp:e.clock.currentDate,data:{blockKey:e.block.key.toString()}}),[];if(e.hasCapability(`childSelection`)||!this.config.restBlockFactory)return[];let t=Gf(e);if(!t||t.direction!==`down`||!t.durationMs)return[];let n=this.getRemainingCountdownMs(e);return n>1e3?this.config.restBlockFactory(n,`Rest`):[]}onUnmount(e){return Kf(e,Uf),[]}onDispose(e){for(let e of this.subscriptions)try{e()}catch{}this.subscriptions.length=0}handleExpiry(e,t){if(e.emitEvent({name:`timer:complete`,timestamp:e.clock.currentDate,data:{blockKey:e.block.key.toString()}}),t===`complete-block`)e.markComplete(`timer-expired`);else{if(Kf(e,(e,t)=>Hf(t)),e.hasCapability(`childSelection`))return;let t=e.getMemoryByTag(`round`)[0]?.metrics[0];if(t){let n=new Xf(t.current+1,t.total,e.block.key.toString(),e.clock.currentDate);e.updateMemory(`round`,[n])}let n=e.getMemoryByTag(`children:status`)[0],r={childIndex:0,totalChildren:n?.metrics[0]?.value?.totalChildren??0,allExecuted:!1,allCompleted:!1};n?.metrics[0]?e.updateMemory(`children:status`,[{...n.metrics[0],value:r}]):e.pushMemory(`children:status`,[{type:`status`,image:``,origin:`runtime`,value:r}])}}hasExpired(e){let t=Gf(e);return!t||t.direction!==`down`||t.durationMs===void 0?!1:Jf(t,e.nowProvider.nowMs())>=t.durationMs}getRemainingCountdownMs(e){let t=Gf(e);if(!t||t.direction!==`down`||!t.durationMs)return 0;let n=Jf(t,e.clock.currentDate.getTime());return Math.max(0,t.durationMs-n)}createFragment(e,t){return{type:E.Time,image:Qf(t.durationMs),origin:`runtime`,value:t,sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate}}};function Qf(e){if(!e||e===0)return`0:00`;let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}:${r.toString().padStart(2,`0`)}:${i.toString().padStart(2,`0`)}`:`${r}:${i.toString().padStart(2,`0`)}`}var $f=class{config;_repScheme;_lastPromotedRound;constructor(e){this.config=e,this._repScheme=[...e.repScheme??[]]}get repScheme(){return this._repScheme}getRepsForRound(e){if(this._repScheme.length===0)return;let t=(e-1)%this._repScheme.length;return this._repScheme[t]}getRepsForCurrentRound(){return this._lastPromotedRound===void 0?this._repScheme[0]:this.getRepsForRound(this._lastPromotedRound)}getPromotedFragments(e,t){let n=D.empty(t.key.toString());if(this._repScheme.length>0){let r=t.getMemoryByTag(`round`)[0]?.metrics[0]?.current??1,i=this.getRepsForRound(r);i!==void 0&&n.add({type:E.Rep,image:i.toString(),origin:`compiler`,value:i,sourceBlockKey:t.key.toString(),timestamp:e.clock.currentDate})}for(let e of this.config.promotions){let r=this.findSourceFragmentInBlock(t,e);r&&n.add({...r,origin:e.origin??`compiler`})}return n}onMount(e){if(this._repScheme.length>0){let t=e.getMemoryByTag(`round`)[0]?.metrics[0]?.current??1;this.promoteRepScheme(e,t)}return this.promoteFragments(e,this.config.promotions),[]}onNext(e){if(this._repScheme.length>0){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];t&&t.current!==this._lastPromotedRound&&this.promoteRepScheme(e,t.current)}let t=this.config.promotions.filter(e=>e.enableDynamicUpdates);return this.promoteFragments(e,t),[]}onUnmount(e){return[]}onDispose(e){}promoteFragments(e,t){for(let n of t){let t=this.findSourceFragment(e,n);if(!t)continue;let r={...t,origin:n.origin??`runtime`};this.upsertPromotedFragment(e,r)}}promoteRepScheme(e,t){let n=this.getRepsForRound(t);if(n===void 0)return;this._lastPromotedRound=t;let r={type:E.Rep,image:n.toString(),origin:`runtime`,value:n,sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate};e.block.getMemoryByTag(`metric:rep-target`).length>0?e.updateMemory(`metric:rep-target`,[r]):e.pushMemory(`metric:rep-target`,[r])}findSourceFragment(e,t){return this.findSourceFragmentInBlock(e.block,t)}findSourceFragmentInBlock(e,t){let n=e.getAllMemory();for(let e of n){if(e.tag===`metric:promote`||e.tag===`metric:rep-target`||t.sourceTag&&e.tag!==t.sourceTag)continue;let n=e.metrics.find(e=>e.type===t.metricType);if(n)return n}}upsertPromotedFragment(e,t){let n=e.block.getMemoryByTag(`metric:promote`);if(n.length===0){e.pushMemory(`metric:promote`,[t]);return}let r=n[0].metrics.filter(e=>e.type!==t.type);e.updateMemory(`metric:promote`,[...r,t])}},ep=class{config;unsubscribers=[];constructor(e){this.config={mode:e.mode,onNext:e.onNext??e.mode===`immediate`,onEvents:e.onEvents??[]}}onMount(e){if(this.config.mode!==`immediate`)return[];for(let t of this.config.onEvents){let n=e.subscribe(t,(e,t)=>(t.markComplete(`event:${e.name}`),[new Mf]));this.unsubscribers.push(n)}return[]}onNext(e){return this.config.mode===`deferred`?e.block.isComplete?[new Mf]:[]:this.config.onNext?(e.block.isComplete||e.markComplete(`user-advance`),[new Mf]):[]}onUnmount(e){return[]}onDispose(e){for(let e of this.unsubscribers)e();this.unsubscribers=[]}},tp=class{config;constructor(e={}){this.config=e}onMount(e){let t=this.createStaticLabels(e),n=this.createRoundLabel(e),r=t.clone();return n&&r.add(n),r.length>0&&e.pushMemory(`display`,r.toArray()),[]}onNext(e){let t=this.createRoundLabel(e);if(!t)return[];let n=e.block.getMemoryByTag(`display`);if(n.length===0)return e.pushMemory(`display`,[t]),[];let r=n[0].metrics.filter(e=>!this.isRoundRoleFragment(e));return e.updateMemory(`display`,[...r,t]),[]}onUnmount(e){return[]}onDispose(e){}createStaticLabels(e){let t=this.config.label??e.block.label,n=this.config.subtitle,r=this.config.actionDisplay,i=D.empty(e.block.key.toString());return t&&i.add(this.createTextMetric(e,t,`label`)),n&&i.add(this.createTextMetric(e,n,`subtitle`)),r&&i.add(this.createTextMetric(e,r,`action`)),i}createRoundLabel(e){if(this.config.showRoundDisplay===!1)return;let t=e.block.getMemoryByTag(`round`)[0];if(!t||t.metrics.length===0)return;let n=t.metrics[0];if(!n||typeof n.current!=`number`)return;let r=this.formatRound(n.current,n.total);return this.createTextMetric(e,r,`round`)}createTextMetric(e,t,n){return{type:E.Text,image:t,origin:`runtime`,value:{text:t,role:n},sourceBlockKey:e.block.key.toString(),timestamp:e.clock.currentDate}}formatRound(e,t){return this.config.roundFormat?this.config.roundFormat(e,t):typeof t==`number`?`Round ${e} of ${t}`:`Round ${e}`}isRoundRoleFragment(e){return e.value?.role===`round`}};Kd.defaultMet;var np=class{value;sourceBlockKey;timestamp;type=E.Elapsed;origin=`analyzed`;constructor(e,t,n){this.value=e,this.sourceBlockKey=t,this.timestamp=n}get image(){return Yf(this.value)}},rp=class{value;sourceBlockKey;timestamp;type=E.Total;origin=`analyzed`;constructor(e,t,n){this.value=e,this.sourceBlockKey=t,this.timestamp=n}get image(){return Yf(this.value)}},ip=class e{spans;sourceBlockKey;timestamp;type=E.Spans;origin=`tracked`;constructor(e,t,n){this.spans=e,this.sourceBlockKey=t,this.timestamp=n}get value(){return this.spans}get image(){if(this.spans.length===0)return`--:--`;if(this.spans.length===1){let t=this.spans[0];return t.started===t.ended?e.formatTimestamp(t.started):`${e.formatTimestamp(t.started)} – ${e.formatTimestamp(t.ended??Date.now())}`}return`${this.spans.length} spans`}get isOpen(){return this.spans.length!==0&&this.spans[this.spans.length-1].isOpen}static formatTimestamp(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`}},ap=class{value;sourceBlockKey;type=E.SystemTime;origin=`tracked`;constructor(e,t){this.value=e,this.sourceBlockKey=t}get timestamp(){return this.value}get image(){return this.value.toISOString()}},op=class{config;_now;lastEmittedRound;constructor(e={},t=xf){this.config=e,this._now=t}onMount(e){if(this.config.emitSegmentOnMount??!1){let t=this.collectDisplayFragments(e),n=this.collectStateFragments(e),r=this.mergeFragments(t,n);e.emitOutput(`segment`,r.toArray(),{label:this.formatLabel(e)})}let t=e.getMemoryByTag(`round`)[0]?.metrics[0];return(this.config.emitMilestones??!!t)&&t&&(t.total===void 0||t.total>1)&&(this.lastEmittedRound=t.current,e.emitOutput(`milestone`,this.buildMilestoneFragments(e,t).toArray(),{label:this.formatRoundLabel(t)})),[]}onNext(e){let t=e.getMemoryByTag(`round`)[0]?.metrics[0];return!(this.config.emitMilestones??!!t)||!t||t.total!==void 0&&t.total<=1||t.total!==void 0&&t.current>t.total||this.lastEmittedRound!==void 0&&t.current===this.lastEmittedRound?[]:(this.lastEmittedRound=t.current,e.emitOutput(`milestone`,this.buildMilestoneFragments(e,t).toArray(),{label:this.formatRoundLabel(t)}),[])}onUnmount(e){let t=Gf(e),n=e.getMemoryByTag(`round`)[0]?.metrics[0],r=this.config.computeTimeResults??!0,i=this.config.label??`Completed`;if(this.config.label||(e.block.blockType===`SessionRoot`?i=`Session Completed`:n&&n.total!==void 0&&n.total>1?i=`Completed ${n.total} Round(s)`:n&&n.current>1&&(i=`Completed ${n.current} Round(s)`)),r){let n=e.block.getMemoryByTag(`metric:display`);if(n.length>1){let r=this.computeSplitTimeResults(e,t,n.map(e=>e.metrics),i);return this.writeResultGroups(e,r),[]}}let a=r?this.computeTimeResults(e,t,i):D.from([new ap(this._now.now(),e.block.key.toString())],e.block.key.toString());return this.writeResultMemory(e,a),[]}onDispose(e){}collectDisplayFragments(e){let t=D.empty(e.block.key.toString());for(let n of e.block.getMemoryByTag(`metric:display`))t.merge(n.metrics);return t}collectStateFragments(e){let t=D.empty(e.block.key.toString());for(let n of e.block.getMemoryByTag(`round`))t.merge(n.metrics);for(let n of e.block.getMemoryByTag(`time`))t.merge(n.metrics);return t}mergeFragments(e,t){let n=new Set(e.map(e=>`${e.type}:${e.type}`)),r=t.filter(e=>!n.has(`${e.type}:${e.type}`));return e.clone().add(...r)}buildMilestoneFragments(e,t){let n=D.empty(e.block.key.toString()).add(new Xf(t.current,t.total,e.block.key.toString(),e.clock.currentDate)),r=Gf(e);if(r){let t=Jf(r,e.clock.currentDate.getTime());n.add(new np(t,e.block.key.toString(),e.clock.currentDate)),r.spans.length>0&&n.add(new ip([...r.spans],e.block.key.toString(),e.clock.currentDate))}return n}computeTimeResults(e,t,n){let r=e.clock.currentDate,i=r.getTime(),a=e.block.key.toString(),o=e.getMemoryByTag(`round`)[0]?.metrics[0];if(t&&t.spans.length>0){let e=Jf(t,i),s=t.spans[0].started,c=t.spans[t.spans.length-1].ended??i,l=Math.max(0,c-s),u=D.empty(a).add(new np(e,a,r),new rp(l,a,r),new ip([...t.spans],a,r),new ap(this._now.now(),a));return o&&u.add(new Xf(o.current,o.total,a,r,n)),u}let s=new yf(i,i),c=D.empty(a).add(new np(0,a,r),new rp(0,a,r),new ip([s],a,r),new ap(this._now.now(),a));return o&&c.add(new Xf(o.current,o.total,a,r,n)),c}computeSplitTimeResults(e,t,n,r){let i=e.clock.currentDate,a=i.getTime(),o=e.block.key.toString(),s=e.getMemoryByTag(`round`)[0]?.metrics[0];if(!t||t.spans.length===0)return n.map(e=>{let t=e.clone().add(new np(0,o,i),new rp(0,o,i),new ip([new yf(a,a)],o,i),new ap(this._now.now(),o));return s&&t.add(new Xf(s.current,s.total,o,i,r)),t});let c=Jf(t,a),l=t.spans[0].started,u=(t.spans[t.spans.length-1].ended??a)-l,d=n.map(e=>{let t=e.filter(e=>e.type===E.Rep&&typeof e.value==`number`).reduce((e,t)=>e+t.value,0);return t>0?t:1}),f=d.reduce((e,t)=>e+t,0),p=0;return n.map((e,t)=>{let n=d[t]/f,a=Math.round(c*n),m=Math.round(u*n),h=l+p,g=h+m;p+=m;let _=e.clone().add(new np(a,o,i),new rp(m,o,i),new ip([new yf(h,g)],o,i),new ap(this._now.now(),o));return s&&_.add(new Xf(s.current,s.total,o,i,r)),_})}writeResultMemory(e,t){let n=e.block.getMemoryByTag(`metric:result`);if(n.length>0){let r=sp(n);r.length>0&&(t=t.clone().add(...r)),e.updateMemory(`metric:result`,t.toArray());return}e.pushMemory(`metric:result`,t.toArray())}writeResultGroups(e,t){let n=e.block.getMemoryByTag(`metric:result`);if(n.length===0){for(let n of t)e.pushMemory(`metric:result`,n.toArray());return}let r=Math.max(n.length,t.length);for(let i=0;i<r;i++){let r=t[i]?t[i].clone():n[i].metrics.clone(),a=t[i]&&i<n.length?sp([n[i]]):[],o=r.add(...a);i<n.length?n[i].update(o):e.pushMemory(`metric:result`,o.toArray())}}formatLabel(e){return this.config.label??e.block.label}formatRoundLabel(e){return e.total===void 0?`Round ${e.current}`:`Round ${e.current} of ${e.total}`}};function sp(e){let t=[];for(let n of e)for(let e of n.metrics)e.origin===`user`&&t.push(e);return t}var cp=class{sound;trigger;type=E.Sound;origin;value;image;constructor(e,t,n={}){this.sound=e,this.trigger=t,this.origin=n.origin??`tracked`,this.value={sound:e,trigger:t,atSecond:n.atSecond},this.image=n.atSecond===void 0?e:`${e}@${n.atSecond}s`}};function lp(e,t){return e.rules.filter(e=>{let{anchor:n,offsetMs:r}=e.trigger;return n===`start`||r===0||t!==void 0&&r<=t})}let up={id:`default`,name:`Default`,rules:[{trigger:{anchor:`end`,offsetMs:3e3},sound:`countdown-beep`},{trigger:{anchor:`end`,offsetMs:2e3},sound:`countdown-beep`},{trigger:{anchor:`end`,offsetMs:1e3},sound:`countdown-beep`},{trigger:{anchor:`end`,offsetMs:0},sound:`timer-complete`}]};var dp=class{config;rules=[];fired=new Set;durationMs;constructor(e){this.config=e}onMount(e){let t=Gf(e);return this.durationMs=t?.durationMs,this.rules=lp(this.config.profile,this.durationMs),this.fireDue(e,0,this.durationMs),e.subscribe(`tick`,(e,t)=>{let n=this.elapsedMs(t);return n===void 0||this.fireDue(t,n,this.durationMs),[]},{scope:`bubble`}),[]}onNext(e){return[]}onUnmount(e){return this.fireDue(e,this.elapsedMs(e)??0,this.durationMs,!0),[]}onDispose(e){this.fired.clear()}elapsedMs(e){let t=Gf(e);if(t)return Jf(t,e.clock.currentDate.getTime())}fireDue(e,t,n,r=!1){let i=n===void 0?void 0:Math.max(0,n-t);this.rules.forEach((n,a)=>{if(this.fired.has(a))return;let{anchor:o,offsetMs:s}=n.trigger;(o===`start`?t>=s:s===0?r||i!==void 0&&i<=0:i!==void 0&&i<=s)&&(this.fired.add(a),this.play(e,n,o,s))})}play(e,t,n,r){let i=n===`start`?r===0?`mount`:`countdown`:r===0?`complete`:`countdown`;e.emitOutput(`system`,[new cp(t.sound,i,{atSecond:r/1e3})],{label:`Sound: ${t.sound}`}),e.emitEvent({name:`sound:play`,timestamp:e.clock.currentDate,data:{sound:t.sound,volume:1}})}};let fp=E.Sound;function pp(e,t){let n=mp(e);if(n){let e=hp(t?.profiles,n);if(e)return e}if(t?.noteProfileId){let e=hp(t?.profiles,t.noteProfileId);if(e)return e}return up}function mp(e){for(let t of e){let e=t.metrics.find(e=>e.type===fp);if(!e)continue;let n=e.value;if(typeof n==`string`&&n.trim().length>0)return n.trim()}}function hp(e,t){if(e)return e.find(e=>e.id===t)}let gp=(e,t,n)=>({id:e,kind:`expr`,expression:t,unit:n});_p(),_p(),_p(),vp(),vp();function _p(){return{sRPE:gp(`sRPE`,`rpeSource.rpe`),durationMinutes:gp(`durationMinutes`,`convert(session.duration, min)`),load:gp(`load`,`round(rpeSource.rpe * convert(session.duration, min))`)}}function vp(){return{elapsedMin:gp(`elapsedMin`,`convert(sum(elapsed), min)`),avgMets:gp(`avgMets`,`sum(metMinutes) / elapsedMin`),metMax:gp(`metMax`,`sharedMet.metMax`),metScore:gp(`metScore`,`min(100, avgMets / metMax * 100)`),rpeScore:gp(`rpeScore`,`rpeSource.rpe * 10`),durationScore:gp(`durationScore`,`elapsedMin / 60 * metScore`,`pts`),disciplineFactor:gp(`disciplineFactor`,`lookup("effort", effort, "disciplineFactor")`),tis:gp(`tis`,`round(0.30 * metScore + 0.35 * rpeScore + 0.20 * durationScore + 0.15 * disciplineFactor, 1)`)}}new Nu([]),new Nu([]);var yp=class{static build(e,t={}){let{includeMetric:n=!0,includeLogic:r=!0,includeIdentity:i=!0,includeAttributes:a=!0,defaultLabel:o=`Block`,format:s=`logic-first`}=t,c=D.from(e.flatMap(e=>D.from(e.metrics).toArray()).filter(e=>e.origin!==`runtime`&&e.type!==E.Hint));if(c.length===0)return o;let l=c.find(e=>e.type===E.Label);if(l)return l.image||l.value?.toString()||o;let u=n?this.getPrimaryMetric(c):void 0,d=r?this.getLogicKeyword(e,c):void 0,f=i?this.getIdentityText(c):void 0,p=a?this.getAttributesText(c):void 0,m=[];return s===`logic-first`?(d&&m.push(d),u&&m.push(u),f&&m.push(f),p&&m.push(p)):s===`metric-first`?(u&&m.push(u),d&&m.push(d),f&&m.push(f),p&&m.push(p)):(f&&m.push(f),u&&m.push(u),d&&m.push(d),p&&m.push(p)),m.length===0?c.filter(e=>!!e.image&&!id.isStructural(e)).map(e=>e.image).join(` `)||o:m.join(` `).trim().replace(/\s+/g,` `)}static getPrimaryMetric(e){let t=e.find(e=>e.type===E.Rounds);if(t&&t.image)return t.image;let n=e.find(e=>e.type===E.Duration);if(n&&n.image)return n.image}static getLogicKeyword(e,t){if(e.some(e=>zu(e,Pu.LABEL_AMRAP)))return`AMRAP`;if(e.some(e=>zu(e,Pu.LABEL_EMOM)))return`EMOM`;if(e.some(e=>zu(e,Pu.LABEL_TABATA)))return`TABATA`;if(e.some(e=>zu(e,Pu.LABEL_FOR_TIME)))return`FOR TIME`;let n=[`AMRAP`,`EMOM`,`TABATA`,`FOR TIME`];for(let e of t){let t=(e.image||e.value?.toString()||``).toUpperCase();if(n.includes(t))return t}}static getIdentityText(e){let t=[`AMRAP`,`EMOM`,`TABATA`,`FOR TIME`],n=e.filter(e=>{if(e.type===E.Duration||e.type===E.Rounds||e.type===E.Resistance||e.type===E.Distance||e.type===E.Lap||e.type===E.Group)return!1;let n=(e.image||e.value?.toString()||``).toUpperCase();return!t.includes(n)});if(n.length!==0)return n.map(e=>e.image).join(` `).trim()}static getAttributesText(e){let t=e.filter(e=>e.type===E.Resistance||e.type===E.Distance);if(t.length!==0)return t.map(e=>e.image).join(` `).trim()}},bp=class{distribute(e,t){return[e.clone()]}};let xp=e=>e[0];function Sp(e,t){let{statements:n,runtime:r,blockType:i,defaultLabel:a}=t,o=(t.pickStatement??xp)(n),s=t.key??new Te,c=t.context??new Bf(r,s.toString(),o.exerciseId||``),l=yp.build(n,{defaultLabel:a});e.setContext(c).setKey(s).setBlockType(i).setLabel(l).setSourceIds(n.map(e=>e.id));let u=t.metricDistributorType??i,d=new bp,f=t.filterMetrics,p=n.flatMap(e=>{let t=f?D.from(e.metrics.filter(f)):D.from(e.metrics);return d.distribute(t,u)}).filter(e=>e.length>0);if(e.setFragments(p),t.timer){let n=t.timer,r=n.mode===`reset-interval`?{completesBlock:!1}:void 0;e.asTimer({direction:n.direction,durationMs:n.durationMs,label:n.label,role:n.role??`primary`,addCompletion:n.mode!==`reset-interval`,completionConfig:r,injectRest:n.injectRest,required:n.required,...t.countdownTimerConfig??{}})}if(t.repeater){let n=t.repeater;e.asRepeater({totalRounds:n.totalRounds,startRound:n.startRound??1,addCompletion:n.addCompletion})}return l}var Cp=class{priority=90;id=`amrap-logic`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.hasMetric(E.Duration)),r=e.some(e=>e.hasMetric(E.Rounds)),i=e.some(e=>e.metrics.some(e=>(e.type===E.Effort||e.type===E.Action)&&typeof e.value==`string`&&(e.value.toLowerCase()===`rounds`||e.value.toLowerCase()===`amrap`)));return n&&(r||i)}apply(e,t,n){let r=(t.find(e=>e.hasMetric(E.Duration))||t[0]).metrics.find(e=>e.type===E.Duration)?.value||0,i=Sp(e,{blockType:`AMRAP`,defaultLabel:`AMRAP ${Math.round(r/6e4)} min`,statements:t,runtime:n,timer:{direction:`down`,durationMs:r,label:`AMRAP`,role:`primary`,mode:`complete-block`,injectRest:!1},repeater:{totalRounds:void 0,startRound:1,addCompletion:!1},pickStatement:e=>e.find(e=>e.hasMetric(E.Duration))||e[0]});e.addBehavior(new tp({mode:`countdown`,label:i}))}},wp=class{priority=90;id=`interval-logic`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.metrics.some(e=>e.type===E.Duration)),r=e.some(e=>zu(e,Pu.REPEATING_INTERVAL)),i=e.some(e=>e.metrics.some(e=>(e.type===E.Action||e.type===E.Effort)&&typeof e.value==`string`&&e.value.toLowerCase()===`emom`)),a=e.some(e=>zu(e,Pu.LABEL_AMRAP)||e.metrics.some(e=>e.type===E.Rounds&&typeof e.value==`string`&&e.value.toLowerCase()===`amrap`)),o=e.some(e=>zu(e,Pu.LABEL_TABATA)||e.metrics.some(e=>e.type===E.Effort&&typeof e.value==`string`&&e.value.toLowerCase()===`tabata`)),s=i||e.some(e=>e.metrics.some(e=>e.type===E.Rounds));return n&&(r||i)&&!a&&(!o||s)}apply(e,t,n){let r=(t.find(e=>e.metrics.some(e=>e.type===E.Duration))||t[0]).metrics.find(e=>e.type===E.Duration),i=t.flatMap(e=>D.from(e.metrics).toArray()).find(e=>e.type===E.Rounds),a=r?.value||6e4,o=typeof i?.value==`number`?i.value:10,s=Sp(e,{blockType:`EMOM`,defaultLabel:`EMOM ${o}`,statements:t,runtime:n,timer:{direction:`down`,durationMs:a,label:`Interval`,role:`primary`,mode:`reset-interval`,injectRest:!0},repeater:{totalRounds:o,startRound:1,addCompletion:!0},pickStatement:e=>e.find(e=>e.hasMetric(E.Duration))||e[0],metricDistributorType:`EMOM`});e.addBehavior(new tp({mode:`countdown`,label:s}));let c=t.some(e=>e.metrics.some(e=>e.type===E.Resistance)),l=t.some(e=>e.metrics.some(e=>e.type===E.Distance)),u=[...c?[{metricType:E.Resistance,origin:`compiler`}]:[],...l?[{metricType:E.Distance,origin:`compiler`}]:[]];u.length>0&&e.addBehavior(new $f({promotions:u}))}},Tp=class{priority=0;id=`effort-fallback`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.metrics.some(e=>e.type===E.Duration&&e.origin!==`runtime`)),r=e.some(e=>e.metrics.some(e=>e.type===E.Rounds&&e.origin!==`runtime`)),i=e.some(e=>e.children&&e.children.length>0);return!n&&!r&&!i}apply(e,t,n){Sp(e,{blockType:`effort`,defaultLabel:`Effort`,statements:t,runtime:n,timer:{direction:`up`,role:`secondary`,mode:`reset-interval`},filterMetrics:e=>e.origin!==`runtime`}),e.addBehavior(new ep({mode:`immediate`,onNext:!0}))}},Ep=class{priority=50;id=`generic-group`;match(e,t){if(!e||e.length===0)return!1;let n=e.some(e=>e.children&&e.children.length>0),r=e.some(e=>e.metrics.some(e=>e.type===E.Duration&&e.origin!==`runtime`)),i=e.some(e=>e.metrics.some(e=>e.type===E.Rounds&&e.origin!==`runtime`));return n&&!r&&!i}apply(e,t,n){if(e.hasTimerBehavior()||e.hasRoundConfig())return;let r=Sp(e,{blockType:`Group`,defaultLabel:`Group`,statements:t,runtime:n});e.addBehavior(new tp({mode:`clock`,label:r}));let i=t.some(e=>e.metrics.some(e=>e.type===E.Resistance)),a=t.some(e=>e.metrics.some(e=>e.type===E.Distance)),o=[...i?[{metricType:E.Resistance,origin:`compiler`}]:[],...a?[{metricType:E.Distance,origin:`compiler`}]:[]];o.length>0&&e.addBehavior(new $f({promotions:o}))}},Dp=class{priority=50;id=`generic-loop`;match(e,t){return!e||e.length===0?!1:e.some(e=>e.metrics.some(e=>e.type===E.Rounds))}apply(e,t,n){if(e.hasRoundConfig())return;let r=(t.find(e=>e.metrics.some(e=>e.type===E.Rounds))||t[0]).metrics.find(e=>e.type===E.Rounds);if(!r)return;let i=1,a;typeof r.value==`number`&&(i=r.value);let o=t.flatMap(e=>e.metrics.filter(e=>e.type===E.Rep&&typeof e.value==`number`)).map(e=>e.value);o.length>0&&(a=o,i<=1&&(i=a.length));let s=Sp(e,{blockType:`Rounds`,defaultLabel:a?a.join(`-`):`${i} Rounds`,statements:t,runtime:n,repeater:{totalRounds:i,startRound:1,addCompletion:!0},pickStatement:e=>e.find(e=>e.metrics.some(e=>e.type===E.Rounds))||e[0],filterMetrics:e=>e.type!==E.Rep});e.addBehavior(new tp({mode:`clock`,label:s}));let c=t.some(e=>e.metrics.some(e=>e.type===E.Resistance)),l=t.some(e=>e.metrics.some(e=>e.type===E.Distance)),u=[...c?[{metricType:E.Resistance,origin:`compiler`}]:[],...l?[{metricType:E.Distance,origin:`compiler`}]:[]];e.addBehavior(new $f({repScheme:a,promotions:u})),e.declareExit(`immediate`)}},Op=class{priority=50;id=`generic-timer`;match(e,t){return!e||e.length===0?!1:e.some(e=>e.metrics.some(e=>e.type===E.Duration&&e.origin!==`runtime`))}apply(e,t,n){if(e.hasTimerBehavior())return;let r=(t.find(e=>e.metrics.some(e=>e.type===E.Duration&&e.origin!==`runtime`))||t[0]).metrics.find(e=>e.type===E.Duration&&e.origin!==`runtime`),i=r?.direction||`up`,a=r?.value||void 0,o=t.some(e=>zu(e,Pu.REQUIRED_TIMER)),s=t.some(e=>zu(e,Pu.INJECT_REST)),c=!!(a&&i===`down`),l=Sp(e,{blockType:`Timer`,defaultLabel:i===`down`?`Countdown`:`For Time`,statements:t,runtime:n,timer:{direction:i,durationMs:a,label:a?`Countdown`:`For Time`,role:`primary`,mode:`complete-block`,injectRest:s,required:o},pickStatement:e=>e.find(e=>e.metrics.some(e=>e.type===E.Duration&&e.origin!==`runtime`))||e[0]});o&&c?e.addBehavior(new ep({mode:`immediate`,onNext:!1,onEvents:[`timer:complete`]})):e.addBehavior(new ep({mode:`immediate`,onNext:!0})),e.addBehavior(new tp({mode:a?`countdown`:`clock`,label:l}))}},kp=class{priority=50;id=`children`;match(e,t){return e&&e.length>0&&e[0].children&&e[0].children.length>0}apply(e,t,n){let r=t[0].children.filter(e=>e.length>0),i=e.hasRoundConfig(),a=e.getBehavior(Zf),o=!!a;i||(o?e.asRepeater({totalRounds:void 0,startRound:1,addCompletion:!1}):e.asRepeater({totalRounds:1,startRound:1,addCompletion:!0}));let s=o||i,c=i?`rounds-remaining`:`timer-active`,l=o&&a?.config.mode===`reset-interval`;e.asContainer({childGroups:r,addLoop:s,loopConfig:s?{condition:c}:void 0,injectRest:l}),e.declareExit(`deferred`)}},Ap=class{priority=15;id=`report-output`;match(e,t){return e&&e.length>0}apply(e,t,n){e.hasBehavior(op)||e.addBehavior(new op)}},jp=class{priority=20;id=`sound`;match(e,t){return e.length>0}apply(e,t,n){if(e.hasBehavior(dp)||!e.hasTimerBehavior())return;let r=pp(t,n.options?.soundOptions);e.addBehavior(new dp({profile:r}))}};new Nu([new Cp,new wp,new Op,new Dp,new Ep,new jp,new Ap,new kp,new Tp]).list();let Mp=/^---\r?\n([\s\S]*?)\r?\n---/;function Np(e){let t=Mp.exec(e);if(!t)return{};let n={},r=t[1].split(/\r?\n/),i;for(let e of r){let t=e.trimEnd(),r=t.match(/^\s+-\s+(.*)$/);if(r&&i){n[i].push(r[1].trim());continue}let a=t.match(/^([^:]+):\s*(.*)$/);if(!a)continue;let o=a[1].trim().toLowerCase(),s=a[2].trim();s===``?(n[o]=[],i=o):s.startsWith(`[`)&&s.endsWith(`]`)?(n[o]=s.slice(1,-1).split(`,`).map(e=>e.trim().replace(/^['"]|['"]$/g,``)).filter(e=>e.length>0),i=void 0):(n[o]=s,i=void 0)}return n}let Pp=e=>Array.isArray(e)?e:typeof e==`string`?e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0):[];function Fp(e,t=Xe){let n=Np(e),r=Pp(n.tags).map(e=>({label:e})),i=Object.keys(n);for(let e of t){if(e===`tags`)continue;let t=i.find(t=>t===e.toLowerCase());if(t)for(let i of Pp(n[t]))r.push({label:i,type:e})}return r.filter(e=>e.label.length>0)}let Ip=[`sessionId`,`noteId`,`blockId`,`blockVersion`,`blockContentId`,`origin`,`status`,`startTime`,`endTime`,`duration`,`completed`,`sessionCreatedAt`,`sessionExtraJson`],Lp=`eventId.grain.outputType.timestamp.pageId.effortSlug.eventBlockId.eventBlockVersion.eventBlockContentId.eventOrigin.timeSpan.sourceBlockKey.sourceStatementId.line.text.dialect.stackLevel.completionReason.representationKind.metricType.metricValue.metricUnit.metricImage.metricOrigin.metricMetadata.metricTemporal.metricJson.eventExtraJson`.split(`.`);[...Ip,...Lp];let Rp=De,zp={core:0,community:1,imported:2,user:3};function Bp(e,t){if(t)return t;if(!e)return`core`;if(e===`user`)return`user`;let n=e.startsWith(`seed:`)?e.slice(5):e;return n===`core`||n===`efforts`||n===`equipment`?`core`:n===`community`||n.startsWith(`community-`)||n===`common`?`community`:`imported`}function Vp(e,t){return zp[Bp(e,t)]}let Hp=`canvas`;function Up(e){return`seed:${e}`}function Wp(e){return e.startsWith(`seed:`)?e.slice(5):e}function Gp(e){return{key:e,schema:9,seedVersion:0,builtAt:``,importedAt:0,chunks:{},claim:null}}function Kp(e){let t=/^notebook\.(.+)$/.exec(e)?.[1];return t&&t!==`_root`?t:void 0}function qp(e){let t=/^---\r?\n([\s\S]*?)\r?\n---/.exec(e);return t?.[1]&&!/^template:\s*canvas\s*$/m.test(t[1])?null:t?.[1]?.match(/^route:\s*(\S+)\s*$/m)?.[1]?.replace(/^\//,``)||null}function Jp(e,t,n){let r=e.split(`/`),i=(r.at(-1)??``).replace(/\.md$/i,``),a=r.slice(2).map(e=>e.replace(/\.md$/i,``)).join(`/`);if(n===`canvas`)return`guides:${qp(t)??a}`;if(n===`dashboards`)return`dashboards`;if(n===`efforts`)return`efforts`;if(n===`equipment`)return`equipment`;if(n.startsWith(`notebook.`)){let e=Kp(n);return e?i.toLowerCase()===`readme`?`notebook:${e}`:`notebook:${a}`:`notebook:_root`}}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Yp(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function Xp(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Zp(e){if(!$(e)||e.schema!==9)throw Error(`Incompatible seed schema; rebuild seed artifacts`);if(!Xp(e.version)||typeof e.builtAt!=`string`||!Number.isFinite(Date.parse(e.builtAt))||!Array.isArray(e.chunks))throw Error(`seed manifest failed shape validation`);for(let t of[`versionLabel`,`commit`,`name`,`description`])if(e[t]!==void 0&&typeof e[t]!=`string`)throw Error(`invalid seed manifest metadata`);if(e.repositoryUrl!==void 0&&(typeof e.repositoryUrl!=`string`||!/^https:\/\//.test(e.repositoryUrl)||new URL(e.repositoryUrl).username||new URL(e.repositoryUrl).password))throw Error(`invalid seed repository URL`);if(e.dirty!==void 0&&typeof e.dirty!=`boolean`)throw Error(`invalid seed manifest metadata`);let t=new Set,n=new Set;for(let r of e.chunks){if(!$(r)||typeof r.id!=`string`||!r.id||typeof r.path!=`string`||!/^chunks\/[a-zA-Z0-9._-]+\.json$/.test(r.path)||typeof r.sha256!=`string`||!/^[0-9a-f]{64}$/.test(r.sha256)||!Xp(r.bytes)||!Xp(r.count)||r.kind!==void 0&&r.kind!==`notes`||t.has(r.id)||n.has(r.path))throw Error(`seed manifest failed shape validation`);t.add(r.id),n.add(r.path)}if(e.notebooks!==void 0){if(!Array.isArray(e.notebooks))throw Error(`seed manifest failed shape validation`);for(let t of e.notebooks){if(!$(t)||typeof t.notebookId!=`string`||!t.notebookId||typeof t.label!=`string`||!Xp(t.count)||typeof t.indexPath!=`string`||!t.indexPath||!Xp(t.version)||typeof t.commit!=`string`||typeof t.builtAt!=`string`||typeof t.sha256!=`string`||!Xp(t.bytes))throw Error(`seed manifest failed shape validation`);if(`records`in t&&Array.isArray(t.records))throw Error(`seed manifest failed shape validation: manifest.notebooks must not contain inline records`)}}return e}function Qp(e){if(!$(e))throw Error(`notebook index failed shape validation`);if(typeof e.notebookId!=`string`||!e.notebookId||typeof e.label!=`string`||typeof e.indexPath!=`string`||!e.indexPath||!Xp(e.version)||typeof e.commit!=`string`||typeof e.builtAt!=`string`||typeof e.sha256!=`string`||!Xp(e.bytes)||!Xp(e.count)||!Array.isArray(e.records))throw Error(`notebook index failed shape validation: missing required index summary or records`);for(let t of e.records)if(!$(t)||typeof t.uuid!=`string`||typeof t.path!=`string`||typeof t.recordPath!=`string`||typeof t.commit!=`string`||!Xp(t.version)||typeof t.sha256!=`string`)throw Error(`notebook index failed shape validation: invalid record ref`);return e}function $p(e){if(!Array.isArray(e))throw Error(`seed chunk is not an array`);let t=new Set;for(let n of e){if(!$(n)||typeof n.path!=`string`||!n.path||n.path.startsWith(`/`)||n.path.split(`/`).includes(`..`)||t.has(n.path)||typeof n.content!=`string`||!$(n.blocks)||!Array.isArray(n.blockIndex)||!Array.isArray(n.blockEfforts)||!Array.isArray(n.blockEquipment))throw Error(`seed chunk row failed shape validation`);t.add(n.path);for(let[e,t]of Object.entries(n.blocks))if(!$(t)||t.id!==e||!e||t.version!==1||t.sourceRevision!==1||!Xp(t.from)||!Yp(t.to)||t.from>=t.to||t.to>n.content.length||![`wod`,`query`,`widget`,`embed`].includes(String(t.kind))||(t.kind===`wod`?![`time`,`log`].includes(String(t.dialect)):t.dialect!==void 0)||t.sport!==void 0&&typeof t.sport!=`string`)throw Error(`invalid seed block range or revision`);Pe(n.content,n.blocks,1,{registeredWidgets:Rp});let e=new Set,r=je(n.content,{registeredWidgets:Rp});for(let t of n.blockIndex){if(!$(t)||typeof t.blockId!=`string`)throw Error(`invalid seed projection`);let i=n.blocks[t.blockId];if(!$(i)||e.has(t.blockId)||typeof t.id!=`string`||typeof t.noteId!=`string`||t.id!==`${t.noteId}:${t.blockId}`||t.blockVersion!==1||t.sourceRevision!==1||t.from!==i.from||t.to!==i.to||t.dataType!==i.kind||t.rawContent!==n.content.slice(Number(i.from),Number(i.to))||typeof t.noteTitle!=`string`||typeof t.createdAt!=`number`||!Number.isFinite(t.createdAt)||t.sourcePath!==n.path||t.isStatic!==!0)throw Error(`orphan or incompatible seed projection`);if(`segmentId`in t||`segmentVersion`in t)throw Error(`incompatible seed projection`);for(let e of[`sourceId`,`routeId`,`blockContentId`])if(t[e]!==void 0&&typeof t[e]!=`string`)throw Error(`invalid seed projection metadata`);if(t.position!==void 0&&!Xp(t.position))throw Error(`invalid seed projection position`);if(i.kind===`wod`){let e=r.find(e=>e.from===i.from&&e.to===i.to);if(t.blockContentId!==Ee(e?.scriptBlock?.content??n.content.slice(Number(i.from),Number(i.to))))throw Error(`invalid seed workout fingerprint`)}else if(t.blockContentId!==void 0)throw Error(`non-workout seed fingerprint`);e.add(t.blockId)}if(e.size!==Object.keys(n.blocks).length)throw Error(`missing actionable seed projection`);let i=new Set;for(let t of n.blockEfforts){if(!$(t)||typeof t.blockId!=`string`||typeof t.noteId!=`string`||typeof t.effortSlug!=`string`||!t.effortSlug)throw Error(`invalid seed effort identity`);let r=n.blocks[t.blockId];if(t.id!==`${t.noteId}:${t.blockId}:${t.effortSlug}`||i.has(String(t.id))||!$(r)||r.kind!==`wod`||!e.has(t.blockId)||t.sourcePath!==n.path||t.isStatic!==!0||typeof t.createdAt!=`number`)throw Error(`orphan or incompatible seed effort link`);let a=n.blockIndex.find(e=>$(e)&&e.blockId===t.blockId);if(!$(a)||t.noteId!==a.noteId||t.blockContentId!==a.blockContentId||!Number.isFinite(t.createdAt))throw Error(`invalid seed effort metadata`);i.add(String(t.id))}let a=new Set;for(let t of n.blockEquipment){if(!$(t)||typeof t.blockId!=`string`||typeof t.noteId!=`string`||typeof t.equipmentSlug!=`string`||!t.equipmentSlug)throw Error(`invalid seed equipment identity`);let r=n.blocks[t.blockId];if(t.id!==`${t.noteId}:${t.blockId}:${t.equipmentSlug}`||a.has(String(t.id))||!$(r)||r.kind!==`wod`||!e.has(t.blockId)||t.sourcePath!==n.path||t.isStatic!==!0||typeof t.createdAt!=`number`)throw Error(`orphan or incompatible seed equipment link`);let i=n.blockIndex.find(e=>$(e)&&e.blockId===t.blockId);if(!$(i)||t.noteId!==i.noteId||t.blockContentId!==i.blockContentId||!Number.isFinite(t.createdAt))throw Error(`invalid seed equipment metadata`);a.add(String(t.id))}}return e}function em(e){return $p([e])[0]}async function tm(e){let t=await crypto.subtle.digest(`SHA-1`,new TextEncoder().encode(`1b671a64-40d5-491e-99b0-da01ff1f3341:${e}`)),n=new Uint8Array(t.slice(0,16));n[6]=n[6]&15|80,n[8]=n[8]&63|128;let r=Array.from(n,e=>e.toString(16).padStart(2,`0`)).join(``);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function nm(e,t){if(Object.is(e,t))return!0;if(!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;let n=Object.keys(e).filter(t=>Reflect.get(e,t)!==void 0),r=Object.keys(t).filter(e=>Reflect.get(t,e)!==void 0);return n.length===r.length&&n.every(n=>n in t&&nm(Reflect.get(e,n),Reflect.get(t,n)))}function rm(e){return(e.split(`/`).at(-1)??e).replace(/\.md$/,``).replace(/[-_]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function im(e,t,n){let r=e.rawContent,i=0,a=r.length,o=t.length;for(;i<a&&i<o&&r[i]===t[i];)i++;for(;a>i&&o>i&&r[a-1]===t[o-1];)a--,o--;let s=Object.values(e.blocks).filter(e=>i<e.to&&a>e.from),c=Fe(s.length<=1?e.blocks:Object.fromEntries(Object.entries(e.blocks).filter(([,e])=>!s.includes(e))),[{from:i,to:a,insert:t.slice(i,o)}]),l=0;return Ne(t,{sourceRevision:n,blocks:c,registeredWidgets:Rp,createId:()=>`seed:${e.id}:r${n}:${l++}`})}async function am(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=new Set(s),m=e=>{let t=-1;for(let n of o)n.noteIds.has(e)&&n.rank>t&&(t=n.rank);return t},h=[],g=i;for(let[e,t]of c.entries()){if(!u.has(l[e]))continue;let r=n(t.content);r&&h.push({...r,registrySource:`bundled`,ownerNoteId:l[e],sourceId:g,sourcePath:t.path})}let _=await e.getMany(h.map(e=>e.slug)),v=h.filter((e,t)=>{let n=_[t];if(!n)return!0;if(n.registrySource!==`bundled`)return!1;let r;if(n.ownerNoteId===e.ownerNoteId||n.ownerNoteId&&p.has(n.ownerNoteId)&&m(n.ownerNoteId)<a)r=a;else{let e=n.ownerNoteId?m(n.ownerNoteId):-1;r=e>=0?e:Vp(n.sourceId)}return a>=r&&!nm(e,n)});v.length&&await e.putMany(v);let y=new Set(h.map(e=>e.slug)),b=new Map;for(let e of f){let t=d.get(e);if(!t||t.seedOrigin!==`seed`)continue;let r=n(t.rawContent)?.slug;r&&!y.has(r)&&b.set(r,e)}let x=[...b.keys()];if(x.length){let a=await e.getMany(x);for(let[s,c]of a.entries()){let a=x[s];if(!c||c.registrySource!==`bundled`)continue;let l=b.get(a);if(!(c.ownerNoteId===l&&(!c.sourceId||c.sourceId===i||c.sourceId===r)))continue;let u=!1;for(let i of o){let o=i.meta.chunks?.[r]?.noteIds??[];if(!o.length)continue;let s=await t.getMany(o);for(let t of s){if(!t||t.seedOrigin!==`seed`)continue;let r=n(t.rawContent);if(r&&r.slug===a){await e.put({...r,registrySource:`bundled`,ownerNoteId:t.id,sourceId:i.sourceId,sourcePath:t.sourcePath??``}),u=!0;break}}if(u)break}u||await e.delete(a)}}return v.length}async function om(e,t,n){if(!t.length)return;let r=await e.getMany(n),i=t.filter((e,t)=>!nm(e,r[t]));i.length&&await e.putMany(i)}async function sm(e,t){Zp(t.manifest),$p(t.rows);let n={totalNotes:0,totalEfforts:0,totalEquipment:0,totalBlocks:0,skippedUserOwned:0,deleted:0,addedNotes:0,updatedNotes:0},r=await Promise.all(t.rows.map(e=>tm(e.path))),i=new Map,a=new Map,o=new Map;for(let[e,n]of t.rows.entries()){let t=Np(n.content).slug;typeof t==`string`&&t.trim()&&(i.set(t,await tm(`page:${t}`)),a.set(r[e],await tm(`pagenote:${t}:${n.path}`)));for(let{label:e}of Fp(n.content))o.has(e)||o.set(e,await tm(`tag:${e}`))}return e.transaction([`notes`,`block_revisions`,`block_index`,`block_efforts`,`block_equipment`,`page`,`page_notes`,`tags`,`note_tags`,`efforts`,`equipment`,`meta`],`readwrite`,async e=>{let s=e.readwrite(`meta`),c=new Set;for(let e of await s.getAll()){let t=Ue(e?.key);t!==void 0&&c.add(t)}if(!nm(await s.get(t.meta.key),t.expectedMeta))throw Error(`Seed checkpoint changed during import`);if(t.meta.schema!==9||t.manifest.schema!==9)throw Error(`Incompatible seed schema; recreate artifacts`);let l=e.readwrite(`notes`),u=t.chunkId?t.expectedMeta?.chunks[t.chunkId]?.noteIds??[]:[],d=new Set((t.chunkId?t.meta.chunks[t.chunkId]?.noteIds:void 0)??r),f=u.filter(e=>!d.has(e)),p=[...new Set([...r,...f])],m=await l.getMany(p),h=new Map(p.map((e,t)=>[e,m[t]])),g=t.meta.key.startsWith(`seed:`)?t.meta.key.slice(5):t.meta.key,_=Wp(t.meta.key),v=Vp(t.meta.key,t.meta.tier),y=[];for(let e of await s.getAll()){let n=e;if(!n||typeof n.key!=`string`||!n.key.startsWith(`seed:`)||n.key===t.meta.key)continue;let r=new Set;for(let e of Object.values(n.chunks??{}))for(let t of e.noteIds??[])r.add(t);y.push({key:n.key,sourceId:n.key.slice(5),rank:Vp(n.key,n.tier),meta:n,noteIds:r})}y.sort((e,t)=>t.rank-e.rank);let b=e=>{let t=-1;for(let n of y)n.noteIds.has(e)&&n.rank>t&&(t=n.rank);return t},x=p.filter(e=>{if(c.has(e))return!1;let n=h.get(e);if(!n)return d.has(e);if(n.seedOrigin!==`seed`)return!1;let r=b(e);return d.has(e)?v>=r:r<0&&n.seedChunkId===t.chunkId}),S=new Set(x),C=e.readwrite(`block_revisions`),ee=r.filter((e,n)=>S.has(e)&&h.get(e)?.rawContent!==t.rows[n].content),te=await C.getAllFromIndexMany(`by-note`,ee),ne=new Map(ee.map((e,t)=>[e,te[t]])),re=e.readwrite(`block_index`),w=e.readwrite(`block_efforts`),T=e.readwrite(`block_equipment`),ie=e.readwrite(`note_tags`),ae=e.readwrite(`page_notes`),oe=await re.getAllFromIndexMany(`by-note`,x),se=await w.getAllFromIndexMany(`by-note`,x),ce=await T.getAllFromIndexMany(`by-note`,x),le=await ie.getAllFromIndexMany(`by-note`,x),ue=await ae.getAllFromIndexMany(`by-note`,x),E=new Map(x.map((e,t)=>[e,t])),de=e.readwrite(`tags`),fe=[...o.keys()],pe=await de.getAllFromIndexMany(`by-label`,fe),me=new Map(fe.map((e,t)=>[e,pe[t][0]])),he=[],ge=[],_e=[],ve=[],ye=[],be=[],xe=[],Se=[],Ce=[];for(let[e,s]of t.rows.entries()){let c=r[e],l=h.get(c);if(!S.has(c)){l&&l.seedOrigin!==`seed`&&n.skippedUserOwned++;continue}l?l.rawContent!==s.content&&n.updatedNotes++:n.addedNotes++,Pe(s.content,s.blocks,1,{registeredWidgets:Rp});let u=l?l.sourceRevision+(l.rawContent===s.content?0:1):1,d=0,f=ne.get(c)??[],p=l?l.rawContent===s.content?structuredClone(l.blocks):im(l,s.content,u):f.length?Ne(s.content,{sourceRevision:u,registeredWidgets:Rp,createId:()=>`seed:${c}:new${f.length}:${d++}`}):structuredClone(s.blocks);for(let e of Object.values(p)){let n=(ne.get(c)??[]).filter(t=>t.blockId===e.id).sort((e,t)=>t.version-e.version)[0],r=s.content.slice(e.from,e.to);if(l?.rawContent===s.content)continue;let i=n&&n.kind===e.kind&&n.rawContent===r&&n.dialect===e.dialect&&n.sport===e.sport;e.version=l?i?n.version:(n?.version??0)+1:1,(!l||!i)&&_e.push({noteId:c,blockId:e.id,version:e.version,kind:e.kind,rawContent:r,savedAt:t.meta.importedAt,...e.dialect?{dialect:e.dialect}:{},...e.sport?{sport:e.sport}:{}})}Pe(s.content,p,u,{registeredWidgets:Rp});let m=Np(s.content),g=typeof m.title==`string`&&m.title.trim()?m.title.trim():rm(s.path),v=t.chunkId?Jp(s.path,s.content,t.chunkId):void 0;if(!v)throw Error(`Unknown seed source family ${t.chunkId}`);let y=typeof m.date==`string`?m.date.match(/^(\d{4})-(\d{2})-(\d{2})$/):null,b;if(y){let e=Date.parse(`${m.date}T12:00:00Z`);if(!(Number.isFinite(e)&&new Date(e).getUTCMonth()===Number(y[2])-1&&new Date(e).getUTCDate()===Number(y[3])))throw Error(`invalid frontmatter date '${m.date}' in '${s.path}' — expected a real calendar day (YYYY-MM-DD)`);b=e}let x=s.commit??t.manifest.commit,C={...l,id:c,title:g,rawContent:s.content,sourceRevision:u,blocks:p,createdAt:t.manifest.version,...b===void 0?{}:{date:b},type:t.chunkId===`dashboards`?`dashboard`:`note`,sourceId:v,seedOrigin:`seed`,seedVersion:t.manifest.version,seedChunkId:t.chunkId??void 0,feedOrigin:`feed`,feedSourceId:_,sourcePath:s.path,...x?{seedCommit:x}:{}};b===void 0&&delete C.date,nm(C,l)||ge.push(C);let ee=new Map(Object.values(p).map(e=>[`${e.from}:${e.to}`,e])),te=new Map(s.blockIndex.map(e=>[e.blockId,e])),re=new Map;for(let e of s.blockIndex){let t=ee.get(`${e.from}:${e.to}`);if(!t||t.kind!==e.dataType)throw Error(`Orphan seed projection`);re.set(e.blockId,t.id);let n={...e,id:`${c}:${t.id}`,noteId:c,blockId:t.id,blockVersion:t.version,sourceRevision:u,noteTitle:g,sourceId:v,sourcePath:s.path,rawContent:s.content.slice(t.from,t.to)},r=oe[E.get(c)].find(e=>e.id===n.id);(!r||r.isStatic===!0)&&xe.push(n)}for(let e of s.blockEfforts){let t=re.get(e.blockId);if(!t||te.get(e.blockId)?.dataType!==`wod`)throw Error(`Orphan seed effort link`);let n={...e,id:`${c}:${t}:${e.effortSlug}`,noteId:c,blockId:t,sourcePath:s.path},r=se[E.get(c)].find(e=>e.id===n.id);(!r||r.isStatic===!0)&&Se.push(r?{...n,createdAt:r.createdAt}:n)}for(let e of s.blockEquipment){let t=re.get(e.blockId);if(!t||te.get(e.blockId)?.dataType!==`wod`)throw Error(`Orphan seed equipment link`);let n={...e,id:`${c}:${t}:${e.equipmentSlug}`,noteId:c,blockId:t,sourcePath:s.path},r=ce[E.get(c)].find(e=>e.id===n.id);(!r||r.isStatic===!0)&&Ce.push(r?{...n,createdAt:r.createdAt}:n)}let w=E.get(c),T=new Set;for(let e of Fp(s.content)){let n=me.get(e.label);n?e.type&&!n.type&&(n={...n,type:e.type},he.push(n),me.set(e.label,n)):(n={id:o.get(e.label),label:e.label,type:e.type,createdAt:t.meta.importedAt},he.push(n),me.set(e.label,n)),!T.has(n.id)&&(T.add(n.id),le[w].find(e=>e.tagId===n.id)||be.push({id:`${c}:${n.id}`,noteId:c,tagId:n.id}))}for(let e of le[w])T.has(e.tagId)||await ie.delete(e.id);let ae=m.slug;if(typeof ae==`string`&&i.has(ae)){let e=i.get(ae);ve.push({id:e,slug:ae,title:rm(s.path),createdAt:t.manifest.version}),ye.push({id:a.get(c),pageId:e,noteId:c,createdAt:t.manifest.version})}n.totalNotes++,n.totalBlocks+=Object.keys(p).length}let we=new Set(xe.map(e=>e.id)),D=new Set(Se.map(e=>e.id)),Te=new Set(Ce.map(e=>e.id));for(let e of oe)for(let t of e)t.isStatic===!0&&!we.has(t.id)&&await re.delete(t.id);for(let e of se)for(let t of e)t.isStatic===!0&&!D.has(t.id)&&await w.delete(t.id);for(let e of ce)for(let t of e)t.isStatic===!0&&!Te.has(t.id)&&await T.delete(t.id);for(let e of f){if(!S.has(e)||!h.get(e))continue;let t=E.get(e);await l.delete(e);for(let e of le[t])await ie.delete(e.id);for(let e of ue[t])await ae.delete(e.id);n.deleted++}return t.chunkId===`efforts`&&(n.totalEfforts=await am(e.readwrite(`efforts`),l,gf,`efforts`,g,v,y,u,t.rows,r,S,h,p)),t.chunkId===`equipment`&&(n.totalEquipment=await am(e.readwrite(`equipment`),l,_f,`equipment`,g,v,y,u,t.rows,r,S,h,p)),ge.length&&await l.putMany(ge),_e.length&&await C.putMany(_e),await om(re,xe,xe.map(e=>e.id)),await om(w,Se,Se.map(e=>e.id)),await om(T,Ce,Ce.map(e=>e.id)),he.length&&await de.putMany([...new Map(he.map(e=>[e.id,e])).values()]),be.length&&await ie.putMany(be),await om(e.readwrite(`page`),ve,ve.map(e=>e.id)),await om(ae,ye,ye.map(e=>e.id)),await s.put(t.meta),n})}function cm(e,t){let n=t.seedChunkId?e.filter(e=>e.chunkId===t.seedChunkId):[];return[...n.length>0?n:e].sort((e,t)=>t.rank-e.rank||(e.key<t.key?-1:+(e.key>t.key)))[0]}async function lm(e){return await e.transaction([`meta`,`notes`,`block_index`],`readwrite`,async e=>{let t=e.readwrite(`meta`),n=new Map;for(let e of await t.getAll()){let t=e;if(!t||typeof t.key!=`string`||!t.key.startsWith(`seed:`))continue;let r=t.key.slice(5),i=Vp(t.key,t.tier);for(let[e,a]of Object.entries(t.chunks??{}))for(let o of a.noteIds??[]){let a=n.get(o)??[];a.push({sourceId:r,chunkId:e,rank:i,key:t.key}),n.set(o,a)}}if(n.size===0)return 0;let r=e.readwrite(`notes`),i=e.readwrite(`block_index`),a=[...n.keys()],o=await r.getMany(a),s=[];for(let e=0;e<a.length;e++){let t=a[e],i=o[e];if(!i||i.seedOrigin!==`seed`||i.feedSourceId)continue;let c=cm(n.get(t),i),l=i.sourceRevision+1,u=Object.fromEntries(Object.entries(i.blocks).map(([e,t])=>[e,{...t,sourceRevision:l}]));await r.put({...i,blocks:u,sourceRevision:l,feedOrigin:`feed`,feedSourceId:c.sourceId}),s.push({id:t,sourceRevision:l})}if(s.length>0){let e=new Map(s.map(e=>[e.id,e.sourceRevision])),t=(await i.getAllFromIndexMany(`by-note`,s.map(e=>e.id))).flatMap(t=>t.flatMap(t=>{let n=e.get(t.noteId);return n!==void 0&&t.sourceRevision!==n?[{...t,sourceRevision:n}]:[]}));t.length>0&&await i.putMany(t)}return s.length})}async function um(e){return await e.transaction([`meta`,`notes`,`block_index`,`block_efforts`,`block_equipment`],`readwrite`,async e=>{let t=0,n=e.readwrite(`meta`);for(let e of await n.getAll()){let r=e;if(!r||typeof r.key!=`string`||!r.key.startsWith(`seed:`))continue;let i=r.chunks??{},a=!1,o={};for(let[e,t]of Object.entries(i)){let n=su(e);n!==e&&(a=!0),o[n]=o[n]&&o[n]!==t?{...o[n],noteIds:[...new Set([...o[n].noteIds??[],...t.noteIds??[]])]}:t}a&&(await n.put({...r,chunks:o}),t++)}for(let n of[`notes`,`block_index`,`block_efforts`,`block_equipment`]){let r=e.readwrite(n);for(let e of await r.getAll()){let n=e;fu(n)&&(await r.put(du(n)),t++)}}return t})}var dm=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`FeedSourceError`}},fm=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 dm(`feed manifest fetch failed: HTTP ${e.status}`,e.status);return Zp(await e.json())}async fetchChunk(e){let t=await this.fetchImpl(`${this.baseUrl}${e}`);if(!t.ok)throw new dm(`feed chunk fetch failed: HTTP ${t.status} for ${e}`,t.status);return await t.json()}},pm=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 sm(this.storageInstance,e)}backfillFeedProvenance(){return lm(this.storageInstance)}migrateNotebookVocabulary(){return um(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:Vp(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:gf},{storeName:`equipment`,familyPathPrefix:`markdown/equipment/`,parse:_f}];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})}},mm=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=Zp(e.manifest??await this.source.fetchManifest()),n=Up(this.sourceId),r=e.stored===void 0?await this.storage.getSeedMeta(n):e.stored,i=r?.schema===9?r:void 0,a=i??Gp(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===Hp)-Number(e.id===Hp));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=Qp(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=$p(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)?$p(a):[em(a)];e.push(...o),t++}r=e}}else if(d(`fetching`,n.id),r=$p(await this.source.fetchChunk(n.path)),r.length!==n.count)throw Error(`Seed chunk count mismatch`)}else if(d(`fetching`,n.id),r=$p(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=>tm(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}};function hm(e,t){return e===void 0||e<=0||t>e?`import`:t===e?`current`:`server-stale`}function gm(e,t){return e?.schema!==void 0&&e.schema!==9?!1:e?.seedVersion!=null&&e.seedVersion>0&&e.seedVersion===t}function _m(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 vm(e,t,n){let r=e?.claim;return!!r&&r.owner!==t&&n-r.at<45e3}async function ym(e,t,n={}){let{storage:r,owner:i}=t,a=t.now,o=Up(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&&gm(c,e.embeddedVersion))return s.outcome=`current`,s;if(vm(c,i,a()))return s.outcome=`busy`,s;let l=Zp(await e.source.fetchManifest());s.manifestChecked=!0;let u=t.force?`import`:hm(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??Gp(o),...e.tier?{tier:e.tier}:{},claim:{owner:i,at:a()}};await r.putSeedMeta(d,c??null);try{let i=await new mm(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=_m(t),s}}let bm=self;bm.onmessage=e=>{if(e.data.type!==`run`)return;let t=e.data;(async()=>{let e=new pm(new Ou({dbName:t.dbName,...t.userId?{getUserId:()=>t.userId}:{}})),n=[];for(let r of t.sources){let i=await ym({id:r.id,label:r.label,source:new fm(r.url),embeddedVersion:r.embeddedVersion,autoSyncOn:r.autoSyncOn,...r.tier?{tier:r.tier}:{},notebookIds:r.notebookIds,granularRecords:r.granularRecords??!0},{storage:e,owner:t.owner,now:Date.now,force:t.force,probeManifests:t.probeManifests,background:t.background},{onProgress:e=>bm.postMessage({type:`progress`,sourceId:r.id,progress:e}),onFirstPaint:()=>bm.postMessage({type:`first-paint`,sourceId:r.id})});bm.postMessage({type:`source-result`,sourceId:r.id,result:i}),n.push(i.outcome)}bm.postMessage({type:`done`,outcomes:n})})()}})();
|
|
16
|
-
//# sourceMappingURL=feedSync.worker-
|
|
16
|
+
//# sourceMappingURL=feedSync.worker-BSZcrZnS.js.map
|