| -rw-r--r-- | .editorconfig | 19L |
| -rw-r--r-- | .github/workflows/node.js.yml | 29L |
| -rw-r--r-- | .gitignore | 27L |
| -rw-r--r-- | 404.html | 28L |
| -rw-r--r-- | CHANGELOG.md | 134L |
| -rw-r--r-- | README.md | 55L |
| -rw-r--r-- | eslint.config.js | 37L |
| -rw-r--r-- | index.html | 78L |
| -rw-r--r-- | package-lock.json | 11220L |
| -rw-r--r-- | package.json | 51L |
| -rw-r--r-- | playwright.config.js | 63L |
| -rw-r--r-- | public/img/icons/android-chrome-192x192.png | 5297B |
| -rw-r--r-- | public/img/icons/android-chrome-512x512.png | 15585B |
| -rw-r--r-- | public/img/icons/android-chrome-maskable-192x192.png | 3973B |
| -rw-r--r-- | public/img/icons/android-chrome-maskable-512x512.png | 11447B |
| -rw-r--r-- | public/img/icons/apple-splash-1125x2436.png | 40492B |
| -rw-r--r-- | public/img/icons/apple-splash-1136x640.png | 15541B |
| -rw-r--r-- | public/img/icons/apple-splash-1170x2532.png | 42397B |
| -rw-r--r-- | public/img/icons/apple-splash-1179x2556.png | 44259B |
| -rw-r--r-- | public/img/icons/apple-splash-1242x2208.png | 42465B |
| -rw-r--r-- | public/img/icons/apple-splash-1242x2688.png | 46198B |
| -rw-r--r-- | public/img/icons/apple-splash-1284x2778.png | 48106B |
| -rw-r--r-- | public/img/icons/apple-splash-1290x2796.png | 47161B |
| -rw-r--r-- | public/img/icons/apple-splash-1334x750.png | 18968B |
| -rw-r--r-- | public/img/icons/apple-splash-1488x2266.png | 50448B |
| -rw-r--r-- | public/img/icons/apple-splash-1536x2048.png | 50359B |
| -rw-r--r-- | public/img/icons/apple-splash-1620x2160.png | 53228B |
| -rw-r--r-- | public/img/icons/apple-splash-1640x2360.png | 55832B |
| -rw-r--r-- | public/img/icons/apple-splash-1668x2224.png | 55545B |
| -rw-r--r-- | public/img/icons/apple-splash-1668x2388.png | 57051B |
| -rw-r--r-- | public/img/icons/apple-splash-1792x828.png | 20677B |
| -rw-r--r-- | public/img/icons/apple-splash-2048x1536.png | 47305B |
| -rw-r--r-- | public/img/icons/apple-splash-2048x2732.png | 72805B |
| -rw-r--r-- | public/img/icons/apple-splash-2160x1620.png | 50043B |
| -rw-r--r-- | public/img/icons/apple-splash-2208x1242.png | 35837B |
| -rw-r--r-- | public/img/icons/apple-splash-2224x1668.png | 51942B |
| -rw-r--r-- | public/img/icons/apple-splash-2266x1488.png | 45697B |
| -rw-r--r-- | public/img/icons/apple-splash-2360x1640.png | 51065B |
| -rw-r--r-- | public/img/icons/apple-splash-2388x1668.png | 51863B |
| -rw-r--r-- | public/img/icons/apple-splash-2436x1125.png | 32210B |
| -rw-r--r-- | public/img/icons/apple-splash-2532x1170.png | 33016B |
| -rw-r--r-- | public/img/icons/apple-splash-2556x1179.png | 34172B |
| -rw-r--r-- | public/img/icons/apple-splash-2688x1242.png | 35419B |
| -rw-r--r-- | public/img/icons/apple-splash-2732x2048.png | 67160B |
| -rw-r--r-- | public/img/icons/apple-splash-2778x1284.png | 37028B |
| -rw-r--r-- | public/img/icons/apple-splash-2796x1290.png | 38151B |
| -rw-r--r-- | public/img/icons/apple-splash-640x1136.png | 18908B |
| -rw-r--r-- | public/img/icons/apple-splash-750x1334.png | 23439B |
| -rw-r--r-- | public/img/icons/apple-splash-828x1792.png | 27576B |
| -rw-r--r-- | public/img/icons/apple-touch-icon-180x180.png | 4948B |
| -rw-r--r-- | public/img/icons/favicon-16x16.png | 505B |
| -rw-r--r-- | public/img/icons/favicon-32x32.png | 929B |
| -rw-r--r-- | public/img/icons/mstile-icon-128x128.png | 2256B |
| -rw-r--r-- | public/img/icons/mstile-icon-270x270.png | 6284B |
| -rw-r--r-- | public/img/icons/mstile-icon-558x270.png | 5565B |
| -rw-r--r-- | public/img/icons/mstile-icon-558x558.png | 14242B |
| -rw-r--r-- | public/img/icons/open-graph-1280x640.png | 27498B |
| -rw-r--r-- | public/robots.txt | 2L |
| -rw-r--r-- | src/App.vue | 45L |
| -rw-r--r-- | src/assets/chrome-install.png | 2629B |
| -rw-r--r-- | src/assets/global.css | 224L |
| -rw-r--r-- | src/assets/icon.svg | 17L |
| -rw-r--r-- | src/assets/target-calculator.css | 47L |
| -rw-r--r-- | src/components/AdvancedOptionsInput.vue | 111L |
| -rw-r--r-- | src/components/DecimalInput.vue | 100L |
| -rw-r--r-- | src/components/DoubleOutputTable.vue | 99L |
| -rw-r--r-- | src/components/IntegerInput.vue | 88L |
| -rw-r--r-- | src/components/PaceInput.vue | 55L |
| -rw-r--r-- | src/components/SingleOutputTable.vue | 88L |
| -rw-r--r-- | src/components/SplitOutputTable.vue | 135L |
| -rw-r--r-- | src/components/TargetEditor.vue | 221L |
| -rw-r--r-- | src/components/TargetSetSelector.vue | 170L |
| -rw-r--r-- | src/components/TimeInput.vue | 151L |
| -rw-r--r-- | src/composables/useObjectModel.ts | 35L |
| -rw-r--r-- | src/composables/useStorage.ts | 32L |
| -rw-r--r-- | src/core/calculators.ts | 263L |
| -rw-r--r-- | src/core/migrations.ts | 182L |
| -rw-r--r-- | src/core/racePrediction.ts | 505L |
| -rw-r--r-- | src/core/targets.ts | 211L |
| -rw-r--r-- | src/core/units.ts | 396L |
| -rw-r--r-- | src/core/utils.ts | 55L |
| -rw-r--r-- | src/main.ts | 13L |
| -rw-r--r-- | src/router/index.ts | 120L |
| -rw-r--r-- | src/views/AboutPage.vue | 197L |
| -rw-r--r-- | src/views/BatchCalculator.vue | 221L |
| -rw-r--r-- | src/views/ChangeLog.vue | 10L |
| -rw-r--r-- | src/views/HomePage.vue | 78L |
| -rw-r--r-- | src/views/NotFoundPage.vue | 18L |
| -rw-r--r-- | src/views/PaceCalculator.vue | 56L |
| -rw-r--r-- | src/views/RaceCalculator.vue | 82L |
| -rw-r--r-- | src/views/SplitCalculator.vue | 72L |
| -rw-r--r-- | src/views/UnitCalculator.vue | 287L |
| -rw-r--r-- | src/views/WorkoutCalculator.vue | 57L |
| -rw-r--r-- | tests/e2e/batch-calculator.spec.js | 182L |
| -rw-r--r-- | tests/e2e/cross-calculator.spec.js | 1101L |
| -rw-r--r-- | tests/e2e/pace-calculator.spec.js | 134L |
| -rw-r--r-- | tests/e2e/race-calculator.spec.js | 154L |
| -rw-r--r-- | tests/e2e/split-calculator.spec.js | 200L |
| -rw-r--r-- | tests/e2e/unit-calculator.spec.js | 72L |
| -rw-r--r-- | tests/e2e/workout-calculator.spec.js | 165L |
| -rw-r--r-- | tests/unit/components/AdvancedOptionsInput.spec.js | 556L |
| -rw-r--r-- | tests/unit/components/DecimalInput.spec.js | 53L |
| -rw-r--r-- | tests/unit/components/DoubleOutputTable.spec.js | 98L |
| -rw-r--r-- | tests/unit/components/IntegerInput.spec.js | 53L |
| -rw-r--r-- | tests/unit/components/PaceInput.spec.js | 98L |
| -rw-r--r-- | tests/unit/components/SingleOutputTable.spec.js | 103L |
| -rw-r--r-- | tests/unit/components/SplitOutputTable.spec.js | 164L |
| -rw-r--r-- | tests/unit/components/TargetEditor.spec.js | 705L |
| -rw-r--r-- | tests/unit/components/TargetSetSelector.spec.js | 417L |
| -rw-r--r-- | tests/unit/components/TimeInput.spec.js | 189L |
| -rw-r--r-- | tests/unit/core/calculators.spec.js | 257L |
| -rw-r--r-- | tests/unit/core/migration.spec.js | 150L |
| -rw-r--r-- | tests/unit/core/racePrediction.spec.js | 250L |
| -rw-r--r-- | tests/unit/core/targets.spec.js | 59L |
| -rw-r--r-- | tests/unit/core/units.spec.js | 439L |
| -rw-r--r-- | tests/unit/core/utils.spec.js | 206L |
| -rw-r--r-- | tests/unit/views/BatchCalculator.spec.js | 801L |
| -rw-r--r-- | tests/unit/views/PaceCalculator.spec.js | 300L |
| -rw-r--r-- | tests/unit/views/RaceCalculator.spec.js | 377L |
| -rw-r--r-- | tests/unit/views/SplitCalculator.spec.js | 218L |
| -rw-r--r-- | tests/unit/views/UnitCalculator.spec.js | 180L |
| -rw-r--r-- | tests/unit/views/WorkoutCalculator.spec.js | 382L |
| -rw-r--r-- | tsconfig.app.json | 14L |
| -rw-r--r-- | tsconfig.json | 11L |
| -rw-r--r-- | tsconfig.node.json | 12L |
| -rw-r--r-- | vite-env.d.ts | 1L |
| -rw-r--r-- | vite.config.ts | 80L |