From c2723fcfde56b2d49a51e944a5efcd2111517c98 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 30 Nov 2022 11:57:28 +0100 Subject: [PATCH] build client dist files --- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- fittrackee/dist/static/css/app.4db9e3f8.css | 1 - fittrackee/dist/static/css/app.7cddaab1.css | 1 + .../dist/static/js/{app.cf4c1e38.js => app.b9bf563e.js} | 4 ++-- .../static/js/{app.cf4c1e38.js.map => app.b9bf563e.js.map} | 2 +- .../dist/static/js/{reset.a8b861ae.js => reset.765db75f.js} | 2 +- .../js/{reset.a8b861ae.js.map => reset.765db75f.js.map} | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 fittrackee/dist/static/css/app.4db9e3f8.css create mode 100644 fittrackee/dist/static/css/app.7cddaab1.css rename fittrackee/dist/static/js/{app.cf4c1e38.js => app.b9bf563e.js} (99%) rename fittrackee/dist/static/js/{app.cf4c1e38.js.map => app.b9bf563e.js.map} (99%) rename fittrackee/dist/static/js/{reset.a8b861ae.js => reset.765db75f.js} (99%) rename fittrackee/dist/static/js/{reset.a8b861ae.js.map => reset.765db75f.js.map} (99%) diff --git a/fittrackee/dist/index.html b/fittrackee/dist/index.html index e61f9366..44c1c754 100644 --- a/fittrackee/dist/index.html +++ b/fittrackee/dist/index.html @@ -1 +1 @@ -FitTrackee
\ No newline at end of file +FitTrackee
\ No newline at end of file diff --git a/fittrackee/dist/service-worker.js b/fittrackee/dist/service-worker.js index 017ecafe..55598bf0 100644 --- a/fittrackee/dist/service-worker.js +++ b/fittrackee/dist/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let s,e={};const i=(i,t)=>(i=new URL(i+".js",t).href,e[i]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()})).then((()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(e[a])return;let n={};const l=s=>i(s,a),c={module:{uri:a},exports:n,require:l};e[a]=Promise.all(t.map((s=>c[s]||l(s)))).then((s=>(r(...s),n)))}}define(["./workbox-db5fc017"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"9b8ccbc8defad30cba91a8001fafaeef"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.4db9e3f8.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.9f83730d.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.9970f29e.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.d3fff3a7.js",revision:null},{url:"/static/js/431.52f71cad.js",revision:null},{url:"/static/js/633.5eb61510.js",revision:null},{url:"/static/js/858.ec3b00a9.js",revision:null},{url:"/static/js/93.611a4415.js",revision:null},{url:"/static/js/admin.c4231dfb.js",revision:null},{url:"/static/js/app.cf4c1e38.js",revision:null},{url:"/static/js/chunk-vendors.0004541e.js",revision:null},{url:"/static/js/profile.984aa6f4.js",revision:null},{url:"/static/js/reset.a8b861ae.js",revision:null},{url:"/static/js/statistics.7cce80c4.js",revision:null},{url:"/static/js/workouts.6988dc66.js",revision:null}],{})})); +if(!self.define){let s,i={};const e=(e,t)=>(e=new URL(e+".js",t).href,i[e]||new Promise((i=>{if("document"in self){const s=document.createElement("script");s.src=e,s.onload=i,document.head.appendChild(s)}else s=e,importScripts(e),i()})).then((()=>{let s=i[e];if(!s)throw new Error(`Module ${e} didn’t register its module`);return s})));self.define=(t,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(i[a])return;let n={};const l=s=>e(s,a),c={module:{uri:a},exports:n,require:l};i[a]=Promise.all(t.map((s=>c[s]||l(s)))).then((s=>(r(...s),n)))}}define(["./workbox-db5fc017"],(function(s){"use strict";s.setCacheNameDetails({prefix:"fittrackee_client"}),self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"/img/bike.svg",revision:"ab4faed007625b209af72b9b8dce84db"},{url:"/img/weather/breeze.svg",revision:"428c6ccb838f8e91dc4826c5b650a98b"},{url:"/img/weather/clear-day.svg",revision:"f3e8628de2e5089f508f03944f8be951"},{url:"/img/weather/clear-night.svg",revision:"6a0d6579a93e89fdf1a2a95b398e0935"},{url:"/img/weather/cloudy.svg",revision:"c52fe62c9d9fea2cdf5ae2813b3df366"},{url:"/img/weather/fog.svg",revision:"9f4d74289594eb83f9c175d13167a0eb"},{url:"/img/weather/partly-cloudy-day.svg",revision:"f730c2e4f4c014e8b49c9d4a0a141b90"},{url:"/img/weather/partly-cloudy-night.svg",revision:"0d9270901c4dffbc05f3998d835171c8"},{url:"/img/weather/pour-rain.svg",revision:"91eb3159ba8781d258d8c384a8ef987c"},{url:"/img/weather/rain.svg",revision:"c52ca88ce0ddf4de0fc29167e578b2be"},{url:"/img/weather/sleet.svg",revision:"97d61d89332f912c1ec27bcbe077b7bd"},{url:"/img/weather/snow.svg",revision:"9e88c89c0d6d14174e9665e98932dd80"},{url:"/img/weather/temperature.svg",revision:"d42b62d0b57d5d326506277d87b70435"},{url:"/img/weather/wind.svg",revision:"d75fbe559220d7b2b9577a98a91f38d0"},{url:"/img/workouts/finish.svg",revision:"375196b7ade7c07c3b64ac4cb8b850a8"},{url:"/img/workouts/mountains.svg",revision:"0b94f1d4a050a86ca5ac89ab3ed60f9c"},{url:"/img/workouts/start.svg",revision:"97f6a197b6c2869e0cb2ff0e7697af86"},{url:"/index.html",revision:"23e35ff30f7a196b2ba5b7fc599bf8e9"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.7cddaab1.css",revision:null},{url:"/static/css/fork-awesome.min.css",revision:"82c1118c918377daaa71a320ab8eea42"},{url:"/static/css/leaflet.css",revision:"5c761a156eea82263d8bacf1718fe04d"},{url:"/static/css/profile.9f83730d.css",revision:null},{url:"/static/css/reset.e2527ec6.css",revision:null},{url:"/static/css/statistics.40e24e75.css",revision:null},{url:"/static/css/workouts.9970f29e.css",revision:null},{url:"/static/fonts/forkawesome-webfont.eot",revision:"e719f9244c69e28e7d00e725ca1e280e"},{url:"/static/fonts/forkawesome-webfont.svg",revision:"d58987a18774d859d98af95281c1dee5"},{url:"/static/fonts/forkawesome-webfont.ttf",revision:"fe45770c6c277da3921355d971045ea5"},{url:"/static/fonts/forkawesome-webfont.woff",revision:"92cd4d8328b2ae614386a01ff935a9f3"},{url:"/static/fonts/forkawesome-webfont.woff2",revision:"12ee76445f0383c58529169d700b6650"},{url:"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot",revision:null},{url:"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2",revision:null},{url:"/static/img/map.5b26d82b.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-700.b8a7047e.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-italic.0b285c83.svg",revision:null},{url:"/static/img/pt-sans-v9-latin-regular.59a385b4.svg",revision:null},{url:"/static/js/243.d3fff3a7.js",revision:null},{url:"/static/js/431.52f71cad.js",revision:null},{url:"/static/js/633.5eb61510.js",revision:null},{url:"/static/js/858.ec3b00a9.js",revision:null},{url:"/static/js/93.611a4415.js",revision:null},{url:"/static/js/admin.c4231dfb.js",revision:null},{url:"/static/js/app.b9bf563e.js",revision:null},{url:"/static/js/chunk-vendors.0004541e.js",revision:null},{url:"/static/js/profile.984aa6f4.js",revision:null},{url:"/static/js/reset.765db75f.js",revision:null},{url:"/static/js/statistics.7cce80c4.js",revision:null},{url:"/static/js/workouts.6988dc66.js",revision:null}],{})})); //# sourceMappingURL=service-worker.js.map diff --git a/fittrackee/dist/service-worker.js.map b/fittrackee/dist/service-worker.js.map index b9a2caf1..96c5c7e7 100644 --- a/fittrackee/dist/service-worker.js.map +++ b/fittrackee/dist/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/78fe9c37da76ce4ad5fc5c3de83ff7f8/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"9b8ccbc8defad30cba91a8001fafaeef\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.4db9e3f8.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.9f83730d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.9970f29e.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.d3fff3a7.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.52f71cad.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.5eb61510.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.ec3b00a9.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.611a4415.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.c4231dfb.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.cf4c1e38.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.0004541e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.984aa6f4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.a8b861ae.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.7cce80c4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.6988dc66.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../../tmp/b4e3d145b43b374401e569d32c0becb5/service-worker.js"],"sourcesContent":["import {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-core/setCacheNameDetails.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"fittrackee_client\"});\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/img/bike.svg\",\n \"revision\": \"ab4faed007625b209af72b9b8dce84db\"\n },\n {\n \"url\": \"/img/weather/breeze.svg\",\n \"revision\": \"428c6ccb838f8e91dc4826c5b650a98b\"\n },\n {\n \"url\": \"/img/weather/clear-day.svg\",\n \"revision\": \"f3e8628de2e5089f508f03944f8be951\"\n },\n {\n \"url\": \"/img/weather/clear-night.svg\",\n \"revision\": \"6a0d6579a93e89fdf1a2a95b398e0935\"\n },\n {\n \"url\": \"/img/weather/cloudy.svg\",\n \"revision\": \"c52fe62c9d9fea2cdf5ae2813b3df366\"\n },\n {\n \"url\": \"/img/weather/fog.svg\",\n \"revision\": \"9f4d74289594eb83f9c175d13167a0eb\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-day.svg\",\n \"revision\": \"f730c2e4f4c014e8b49c9d4a0a141b90\"\n },\n {\n \"url\": \"/img/weather/partly-cloudy-night.svg\",\n \"revision\": \"0d9270901c4dffbc05f3998d835171c8\"\n },\n {\n \"url\": \"/img/weather/pour-rain.svg\",\n \"revision\": \"91eb3159ba8781d258d8c384a8ef987c\"\n },\n {\n \"url\": \"/img/weather/rain.svg\",\n \"revision\": \"c52ca88ce0ddf4de0fc29167e578b2be\"\n },\n {\n \"url\": \"/img/weather/sleet.svg\",\n \"revision\": \"97d61d89332f912c1ec27bcbe077b7bd\"\n },\n {\n \"url\": \"/img/weather/snow.svg\",\n \"revision\": \"9e88c89c0d6d14174e9665e98932dd80\"\n },\n {\n \"url\": \"/img/weather/temperature.svg\",\n \"revision\": \"d42b62d0b57d5d326506277d87b70435\"\n },\n {\n \"url\": \"/img/weather/wind.svg\",\n \"revision\": \"d75fbe559220d7b2b9577a98a91f38d0\"\n },\n {\n \"url\": \"/img/workouts/finish.svg\",\n \"revision\": \"375196b7ade7c07c3b64ac4cb8b850a8\"\n },\n {\n \"url\": \"/img/workouts/mountains.svg\",\n \"revision\": \"0b94f1d4a050a86ca5ac89ab3ed60f9c\"\n },\n {\n \"url\": \"/img/workouts/start.svg\",\n \"revision\": \"97f6a197b6c2869e0cb2ff0e7697af86\"\n },\n {\n \"url\": \"/index.html\",\n \"revision\": \"23e35ff30f7a196b2ba5b7fc599bf8e9\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c61028ca6e9f81bf958e6b66238e2d7c\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"/static/css/admin.73df498d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/app.7cddaab1.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/fork-awesome.min.css\",\n \"revision\": \"82c1118c918377daaa71a320ab8eea42\"\n },\n {\n \"url\": \"/static/css/leaflet.css\",\n \"revision\": \"5c761a156eea82263d8bacf1718fe04d\"\n },\n {\n \"url\": \"/static/css/profile.9f83730d.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/reset.e2527ec6.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/statistics.40e24e75.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/css/workouts.9970f29e.css\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.eot\",\n \"revision\": \"e719f9244c69e28e7d00e725ca1e280e\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.svg\",\n \"revision\": \"d58987a18774d859d98af95281c1dee5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.ttf\",\n \"revision\": \"fe45770c6c277da3921355d971045ea5\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff\",\n \"revision\": \"92cd4d8328b2ae614386a01ff935a9f3\"\n },\n {\n \"url\": \"/static/fonts/forkawesome-webfont.woff2\",\n \"revision\": \"12ee76445f0383c58529169d700b6650\"\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.01a58da9.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-700.6514157e.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.8293436e.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot\",\n \"revision\": null\n },\n {\n \"url\": \"/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/map.5b26d82b.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-700.b8a7047e.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-italic.0b285c83.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/img/pt-sans-v9-latin-regular.59a385b4.svg\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/243.d3fff3a7.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.52f71cad.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.5eb61510.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.ec3b00a9.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.611a4415.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.c4231dfb.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.b9bf563e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.0004541e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.984aa6f4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.765db75f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.7cce80c4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.6988dc66.js\",\n \"revision\": null\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAiBAA,EAAAA,oBAAiC,CAACC,OAAQ,sBAG1CC,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,qDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,uDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,sDACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,mDACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,OAEb,CAAA"} \ No newline at end of file diff --git a/fittrackee/dist/static/css/app.4db9e3f8.css b/fittrackee/dist/static/css/app.4db9e3f8.css deleted file mode 100644 index 9dfd4013..00000000 --- a/fittrackee/dist/static/css/app.4db9e3f8.css +++ /dev/null @@ -1 +0,0 @@ -#footer[data-v-2c73279e]{display:flex;bottom:0;position:fixed;width:100%;background:var(--footer-background-color);color:var(--footer-color);font-size:.9em}#footer a[data-v-2c73279e]{text-decoration:none}#footer .footer-items[data-v-2c73279e]{display:flex;align-content:center;justify-content:center;width:100%}#footer .footer-items .footer-item[data-v-2c73279e]{padding:10px 10px;border-top:solid 1px var(--footer-border-color);text-align:center}@media screen and (max-width:500px){#footer .footer-items[data-v-2c73279e]{font-size:.85em}#footer .footer-items .footer-item[data-v-2c73279e]{padding:5px 5px}#footer .footer-items .bullet[data-v-2c73279e]{padding:5px 0}}.user-picture{display:flex;justify-content:center;align-items:center;min-width:30%;line-height:1.2em}.user-picture img{border-radius:50%;height:90px;width:90px}.user-picture .no-picture{color:var(--app-a-color);font-size:5.5em}[data-v-1db396e7]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#nav[data-v-1db396e7]{background:var(--nav-bar-background-color);display:flex;padding:15px 10px}#nav .nav-container[data-v-1db396e7]{display:flex;margin-left:auto;margin-right:auto;padding:0 15px 15px 15px;max-width:1140px;width:100%;border-bottom:solid 1px var(--nav-border-color)}#nav a.router-link-exact-active[data-v-1db396e7]{color:var(--nav-bar-link-active);font-weight:700}#nav .app-name[data-v-1db396e7]{font-size:1.2em;font-weight:700;margin-right:10px}#nav .app-name[data-v-1db396e7]:hover{cursor:pointer}#nav .fa[data-v-1db396e7]{font-size:1.2em}#nav .close-icon[data-v-1db396e7],#nav .hamburger-icon[data-v-1db396e7],#nav .nav-icon-open[data-v-1db396e7]{display:none}#nav .nav-items[data-v-1db396e7]{display:flex;flex:1;justify-content:space-between;line-height:1.8em;width:100%}#nav .nav-items .nav-items-close[data-v-1db396e7]{display:none}#nav .nav-items .nav-items-app-menu[data-v-1db396e7],#nav .nav-items .nav-items-user-menu[data-v-1db396e7]{display:flex;margin:0;padding:0}#nav .nav-items .nav-items-group[data-v-1db396e7]{display:flex}#nav .nav-items .nav-item[data-v-1db396e7]{padding:0 10px}#nav .nav-items .nav-item[data-v-1db396e7] .dropdown-list{padding-left:10px;padding-right:10px;right:10px}#nav .nav-items .nav-link[data-v-1db396e7]{color:var(--app-a-color);cursor:pointer}#nav .nav-items .nav-profile-img[data-v-1db396e7]{margin-bottom:-10px}#nav .nav-items .nav-profile-img[data-v-1db396e7] .user-picture img{height:32px;width:32px;-o-object-fit:cover;object-fit:cover}#nav .nav-items .nav-profile-img[data-v-1db396e7] .user-picture .no-picture{font-size:1.7em}#nav .nav-items .nav-separator[data-v-1db396e7]{display:none}@media screen and (max-width:1000px){#nav .hamburger-icon[data-v-1db396e7]{display:block}#nav .nav-icon-open[data-v-1db396e7]{display:block;text-align:right;width:100%}#nav .nav-icon-open.menu-open[data-v-1db396e7]{display:none}#nav .close-icon[data-v-1db396e7]{display:block}#nav .close-icon.menu-closed[data-v-1db396e7],#nav .nav-items[data-v-1db396e7]{display:none}#nav .nav-items.menu-open[data-v-1db396e7]{display:flex;flex-direction:column;justify-content:flex-start;z-index:1001;position:absolute;top:0;right:0;bottom:0;left:0;background:var(--nav-bar-background-color)}#nav .nav-items.menu-open .nav-items-app-menu[data-v-1db396e7],#nav .nav-items.menu-open .nav-items-close[data-v-1db396e7],#nav .nav-items.menu-open .nav-items-user-menu[data-v-1db396e7]{display:flex;flex-direction:column}#nav .nav-items.menu-open .nav-items-close[data-v-1db396e7]{align-items:center;display:flex;flex-direction:row;justify-content:space-between}#nav .nav-items.menu-open .nav-items-close .app-name[data-v-1db396e7]{padding:15px 25px}#nav .nav-items.menu-open .nav-items-group[data-v-1db396e7]{display:flex;flex-direction:column}#nav .nav-items.menu-open .nav-item[data-v-1db396e7]{padding:7px 25px}#nav .nav-items.menu-open .nav-item[data-v-1db396e7] .dropdown-list{right:auto;left:45px}#nav .nav-items.menu-open .nav-profile-img[data-v-1db396e7]{display:none}#nav .nav-items.menu-open .nav-separator[data-v-1db396e7]{display:flex;border-top:solid 1px var(--nav-border-color);margin:0 20px;padding:0}}#no-config[data-v-47759238]{display:flex;align-items:center;justify-content:space-around;padding:10px;height:100%}#no-config .error-page[data-v-47759238]{display:flex;flex-direction:column;align-items:center;max-width:100%}#no-config .error-page .error-img[data-v-47759238]{width:150px}#no-config .error-page .error-img svg[data-v-47759238]{stroke:none;fill-rule:nonzero;fill:var(--app-color);filter:var(--svg-filter)}#no-config .error-page .error-message[data-v-47759238]{font-size:1.2em;text-align:center}@media screen and (max-width:1000px){#no-config .error-page .error-message[data-v-47759238]{font-size:1em}}:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#app,body{margin:0}#app{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);min-height:100vh}a{color:var(--app-a-color);text-decoration:none}img{max-width:100%}input,select,textarea{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input:disabled,select:disabled,textarea:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}form.errors :invalid{outline:2px solid var(--input-error-color)}label{font-weight:700}button{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button:hover{background:var(--app-color);color:var(--button-hover-color)}button:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button.confirm:disabled,button:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box{border:solid 1px var(--card-border-color);margin:10px}.box,.info-box{border-radius:4px;padding:10px}.info-box{background-color:var(--info-background-color);color:var(--info-color);font-size:.8em}.container{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items{display:flex;flex-direction:column}.form-box .form-items input{margin:10px;padding:5px}.form-info{color:var(--alert-color);font-size:.8em;margin-top:-2px;padding:0 15px}.success-message{margin:20px 0;background-color:var(--success-background-color);color:var(--success-color)}.upper{text-transform:uppercase}.view{padding-bottom:35px;background-color:var(--app-background-color)}.fa-trophy{color:var(--workout-trophy-color)}.mountains{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map{background-color:var(--workout-no-map-bg-color);background-image:url(/static/img/map.5b26d82b.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl{display:flex;flex-direction:column;width:100%}.description-list dl dt{font-weight:700}.description-list dl dd{margin-bottom:10px}.center-card{margin:0 auto;width:700px}.center-card.with-margin{margin-top:100px}@media screen and (max-width:1000px){.center-card{width:100%;margin:0 auto 50px auto}}.text-center{text-align:center}.text-left{text-align:left}.responsive-table{margin-bottom:15px}.responsive-table table{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody{font-size:.95em}.responsive-table table tbody td{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td{border:none}.responsive-table table .cell-heading{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td{margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td,.responsive-table table td{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading{display:flex}}@media screen and (max-width:500px){.responsive-table table td{width:100%}}.profile-buttons{display:flex;gap:10px}.medium-sport-img{height:35px;width:35px;margin:0 auto}.app-container{height:calc(100vh - 130px)}.app-container.hide-scroll{overflow:hidden}.app-container .app-loading{display:flex;align-items:center;height:100%}.scroll{display:flex;justify-content:flex-end;position:fixed;bottom:42px;right:-15px;padding:0 25px}.scroll .scroll-button{background-color:var(--scroll-button-bg-color);border-radius:4px;box-shadow:1px 1px 3px #d3d3d3;display:none;padding:0 10px}.scroll .scroll-button.display-button{display:block}.user-limit-help[data-v-24ec93e2]{display:flex}.user-limit-help span[data-v-24ec93e2]{font-style:italic}.user-limit-help .fa-info-circle[data-v-24ec93e2]{margin-right:10px}.no-contact[data-v-24ec93e2]{font-style:italic}.stat-card{flex:1;max-width:25%}@media screen and (max-width:700px){.stat-card{flex:1 0 50%;max-width:49%}}.stat-card .stat-content{display:flex;flex-direction:row;justify-content:space-between;padding:10px 20px}.stat-card .stat-content .stat-icon{width:30%;text-align:center;vertical-align:center}@media screen and (max-width:1000px){.stat-card .stat-content .stat-icon{width:50%;text-align:left}}.stat-card .stat-content .stat-icon .fa{font-size:3em}@media screen and (max-width:1000px){.stat-card .stat-content .stat-icon .fa{font-size:2em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-icon .fa{font-size:1.5em}}.stat-card .stat-content .stat-details{width:70%;text-align:right}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details{width:100%}}.stat-card .stat-content .stat-details .stat-huge{font-size:1.7em;font-weight:700}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details .stat-huge{font-size:1.3em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-details .stat-huge{font-size:1em}}.stat-card .stat-content .stat-details .stat{font-size:1em}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details .stat{font-size:.9em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-details .stat{font-size:.8em}}.card{border:solid 1px var(--card-border-color);border-radius:4px;margin:10px}.card .card-title{font-weight:700;border-bottom:solid 1px var(--card-border-color);padding:10px 20px}.card .card-content{padding:10px 20px}#admin-menu[data-v-0dd66f89]{display:flex}#admin-menu.center-card[data-v-0dd66f89]{width:100%}#admin-menu[data-v-0dd66f89] .card{flex-grow:1}#admin-menu[data-v-0dd66f89] .card .admin-menu{padding:0 10px}#admin-menu[data-v-0dd66f89] .card .admin-menu dd{margin-bottom:30px}#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details{display:flex;flex-direction:column}#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details .email-sending-status,#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details .registration-status{font-weight:700}#admin-sports table td[data-v-6d62af67]{font-size:1.1em}#admin-sports .sport-img[data-v-6d62af67]{height:35px;width:35px;margin:0 auto}#admin-sports .has-workouts[data-v-6d62af67]{font-size:.95em;font-style:italic;padding:0 10px}#admin-sports .sport-action[data-v-6d62af67]{padding-left:40px}#admin-sports .action-button[data-v-6d62af67]{display:block}#admin-sports .top-button[data-v-6d62af67]{display:none}@media screen and (max-width:700px){#admin-sports .sport-action[data-v-6d62af67]{padding-left:10px}#admin-sports .has-workouts[data-v-6d62af67]{padding-top:5px}#admin-sports .action-button[data-v-6d62af67]{display:flex;align-items:center;flex-wrap:wrap;flex-direction:column}#admin-sports .top-button[data-v-6d62af67]{display:block;margin-bottom:20px}}.table-selects[data-v-72463173]{display:flex;justify-content:space-between;margin:10px 0}.table-selects label select[data-v-72463173]{margin-left:10px;padding:5px}@media screen and (max-width:700px){.table-selects[data-v-72463173]{flex-wrap:wrap}.table-selects label[data-v-72463173]{margin-bottom:10px}.table-selects label select[data-v-72463173]{margin-left:0}}.pagination-center[data-v-3a9a4a65]{display:flex;justify-content:center;font-size:.9em}.pagination-center .pagination[data-v-3a9a4a65]{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.pagination-center .pagination .page-next[data-v-3a9a4a65],.pagination-center .pagination .page-prev[data-v-3a9a4a65],.pagination-center .pagination .page[data-v-3a9a4a65]{border:solid 1px var(--card-border-color);padding:10px 15px}.pagination-center .pagination .page-next.active[data-v-3a9a4a65],.pagination-center .pagination .page-prev.active[data-v-3a9a4a65],.pagination-center .pagination .page.active[data-v-3a9a4a65]{font-weight:700}.pagination-center .pagination .page-next.disabled[data-v-3a9a4a65],.pagination-center .pagination .page-prev.disabled[data-v-3a9a4a65],.pagination-center .pagination .page.disabled[data-v-3a9a4a65]{cursor:default}.pagination-center .pagination .page-next.disabled a[data-v-3a9a4a65],.pagination-center .pagination .page-prev.disabled a[data-v-3a9a4a65],.pagination-center .pagination .page.disabled a[data-v-3a9a4a65]{cursor:default;pointer-events:none;color:var(--disabled-color)}.pagination-center .pagination .page[data-v-3a9a4a65]{margin-left:-1px}.pagination-center .pagination .page-prev[data-v-3a9a4a65]{border-top-left-radius:5px;border-bottom-left-radius:5px}.pagination-center .pagination .page-next[data-v-3a9a4a65]{border-top-right-radius:5px;border-bottom-right-radius:5px;margin-left:-1px}.pagination-center .pagination .fa[data-v-3a9a4a65]{font-size:.8em;padding:0 5px}@media screen and (max-width:1000px){.pagination-center .pagination .page[data-v-3a9a4a65]{display:none}}.users-filters[data-v-627a8e91]{display:flex;align-items:center;padding:10px 0;gap:10px}.users-filters .fa[data-v-627a8e91]{font-size:1.5em}.users-filters .fa-disabled[data-v-627a8e91]{color:var(--disabled-color)}.users-filters .search-username[data-v-627a8e91]{display:flex;align-items:center;justify-content:space-between;gap:10px;border:solid 1px var(--card-border-color);border-radius:4px;color:var(--info-color);width:45%}.users-filters .search-username input[data-v-627a8e91]{border:none;height:12px;width:90%}.users-filters .search-username input[data-v-627a8e91]:focus{outline:none}.users-filters .search-username .fa-times[data-v-627a8e91]{padding-right:10px}@media screen and (max-width:700px){.users-filters .search-username[data-v-627a8e91]{width:400px}}@media screen and (max-width:500px){.users-filters .search-username[data-v-627a8e91]{width:90%}}#admin-users .top-button[data-v-dc12ff78]{display:none}#admin-users .no-users[data-v-dc12ff78]{display:flex;justify-content:center;padding:20px 0;font-weight:700}#admin-users table td[data-v-dc12ff78]{font-size:1.1em}#admin-users .left-text[data-v-dc12ff78]{text-align:left}#admin-users[data-v-dc12ff78] .user-picture img{height:30px;width:30px}#admin-users[data-v-dc12ff78] .user-picture .no-picture{font-size:2em}@media screen and (max-width:700px){#admin-users .top-button[data-v-dc12ff78]{display:block;margin-bottom:20px}#admin-users .pagination-center[data-v-dc12ff78]{margin-top:-30px}}.user-header[data-v-20291951]{display:flex;align-items:stretch}.user-header .user-details[data-v-20291951]{flex-grow:1;padding:10px;display:flex;flex-direction:column;align-items:center}.user-header .user-details .user-name[data-v-20291951]{font-size:2em;height:60%}.user-header .user-details .user-stats[data-v-20291951]{display:flex;gap:40px}.user-header .user-details .user-stats .user-stat[data-v-20291951]{display:flex;flex-direction:column;align-items:center;padding-top:10px}.user-header .user-details .user-stats .user-stat .stat-label[data-v-20291951],.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951]{padding:0 5px}.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951],.user-header .user-details .user-stats .user-stat[data-v-20291951] .distance{font-weight:700;font-size:1.5em}@media screen and (max-width:500px){.user-header .user-details .user-name[data-v-20291951]{font-size:1.5em}.user-header .user-details .user-stats[data-v-20291951]{gap:20px}.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951],.user-header .user-details .user-stats .user-stat[data-v-20291951] .distance{font-weight:700;font-size:1.2em}.user-header .user-details .user-stats .user-stat.hide-small[data-v-20291951]{display:none}}.profile-tabs-checkboxes{display:flex;justify-content:center;flex-wrap:wrap;gap:5px}#user-profile[data-v-9729cba4]{margin:auto;width:700px}@media screen and (max-width:1000px){#user-profile[data-v-9729cba4]{width:100%;margin:0 auto 50px auto}}#user-infos .user-bio[data-v-217519af]{white-space:pre-wrap}#user-infos .alert-message[data-v-217519af]{margin:0}#user-infos .profile-buttons[data-v-217519af]{display:flex;flex-wrap:wrap}#user-infos .email-form[data-v-217519af]{display:flex}#user-infos .email-form form[data-v-217519af]{width:100%}#user-infos .email-form .form-buttons[data-v-217519af]{display:flex;gap:10px;margin-top:10px}.password-strength[data-v-74e71df5]{cursor:default;display:flex;flex-direction:column}.password-strength .password-slider[data-v-74e71df5]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:8px;height:5px;outline:none;padding:0}.password-strength .strength-0[data-v-74e71df5],.password-strength .strength-1[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-weak) 0,var(--password-color-weak) 100%);background-repeat:no-repeat}.password-strength .strength-2[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-medium) 0,var(--password-color-medium) 100%);background-repeat:no-repeat}.password-strength .strength-3[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-good) 0,var(--password-color-good) 100%);background-repeat:no-repeat}.password-strength .strength-4[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-strong) 0,var(--password-color-strong) 100%);background-repeat:no-repeat}.password-strength .password-slider[data-v-74e71df5]::-moz-range-thumb,.password-strength .password-slider[data-v-74e71df5]::-webkit-slider-thumb{opacity:0}.password-strength .password-slider[data-v-74e71df5]::-webkit-slider-thumb{-webkit-appearance:none}.password-strength .password-slider[data-v-74e71df5]::-moz-range-thumb{-moz-appearance:none;appearance:none}.password-strength .password-strength-details[data-v-74e71df5]{margin-bottom:5px;margin-top:-10px;padding:0 10px}.password-strength .password-strength-details .password-strength-value[data-v-74e71df5]{font-size:.85em}.password-strength .password-strength-details .info-box[data-v-74e71df5]{padding:1px 10px}.password-strength .password-strength-details .info-box .password-feedback[data-v-74e71df5]{padding-left:20px}.password-input[data-v-5a126514]{display:flex;flex-direction:column}.password-input .show-password[data-v-5a126514]{font-style:italic;font-size:.85em;text-align:right;margin-top:-7.5px;padding-right:10px;cursor:pointer}.form-items .password-input[data-v-37b8c4c8] .show-password{font-weight:400;font-size:.8em;margin-top:-4px;padding-left:0}.form-items .password-input[data-v-37b8c4c8] .form-info{font-weight:400;padding-left:10px}.form-items .password-input[data-v-37b8c4c8] .password-strength-details{font-weight:400;margin-top:0}.form-buttons[data-v-37b8c4c8]{flex-direction:row}@media screen and (max-width:500px){.form-buttons[data-v-37b8c4c8]{flex-direction:column}}.form-items .password-input[data-v-5e5a4552] .show-password{font-weight:400;font-size:.8em;margin-top:-4px;padding-left:0}.form-buttons[data-v-5e5a4552]{flex-direction:row}@media screen and (max-width:500px){.form-buttons[data-v-5e5a4552]{flex-direction:column}}#user-picture-edition .user-picture-form[data-v-687e9604]{display:flex;flex-direction:column;margin-top:10px}#user-picture-edition .user-picture-form form[data-v-687e9604]{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}#user-picture-edition .user-picture-form form input[data-v-687e9604]{margin-top:10px;padding:5px}#user-picture-edition .user-picture-form form span[data-v-687e9604]{font-style:italic;font-size:.9em;padding-left:5px}#user-picture-edition .user-picture-form form .picture-help[data-v-687e9604]{display:flex}#user-picture-edition .user-picture-form form .picture-help span[data-v-687e9604]{font-style:italic;padding:10px}#user-picture-edition .user-picture-form form .picture-help .fa-info-circle[data-v-687e9604]{margin-right:10px}#user-picture-edition .user-picture-form .picture-buttons[data-v-687e9604]{display:flex;flex-direction:row;align-items:center;gap:10px}@media screen and (max-width:500px){#user-picture-edition .user-picture-form .picture-buttons[data-v-687e9604],#user-picture-edition .user-picture-form .picture-help[data-v-687e9604]{flex-direction:column;align-items:stretch}}#tz-dropdown[data-v-47ea2903]{display:flex;flex-direction:column;position:relative}#tz-dropdown .tz-dropdown-list[data-v-47ea2903]{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:5px 0;position:absolute;overflow-y:auto;top:20px;left:0;right:0;max-height:200px;width:inherit}#tz-dropdown .tz-dropdown-item[data-v-47ea2903]{cursor:pointer;font-size:.9em;font-weight:400;padding:5px}#tz-dropdown .tz-dropdown-item.focus[data-v-47ea2903]{background-color:var(--dropdown-hover-color)}#user-preferences-edition .form-items[data-v-3b8a9a12]{padding-top:5px}#user-preferences-edition .form-checkboxes .checkboxes-label[data-v-3b8a9a12]{font-weight:700}#user-preferences-edition .form-checkboxes .checkboxes[data-v-3b8a9a12]{display:flex;gap:10px;flex-wrap:wrap}#user-preferences-edition .form-checkboxes .checkboxes .checkbox-label[data-v-3b8a9a12]{padding-left:5px}#user-preferences-edition .form-checkboxes .checkboxes label[data-v-3b8a9a12]{font-weight:400}#user-preferences-edition #date_format[data-v-3b8a9a12],#user-preferences-edition #language[data-v-3b8a9a12]{padding:5px}#new-oauth2-app #new-oauth2-title[data-v-0657ee77]{font-size:1.05em;font-weight:700;padding:0 10px}#new-oauth2-app #apps-form .form-items[data-v-0657ee77]{display:flex;flex-direction:column}#new-oauth2-app #apps-form .form-items input[type=text][data-v-0657ee77]{height:20px}#new-oauth2-app #apps-form .form-items .form-item-scope[data-v-0657ee77]{padding:10px}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-label[data-v-0657ee77]{font-weight:700}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes[data-v-0657ee77]{padding-bottom:10px}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes .scope-label[data-v-0657ee77]{height:inherit}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes .scope-description[data-v-0657ee77]{font-style:italic;margin:0 5px}#new-oauth2-app #apps-form .form-items .form-item[data-v-0657ee77]{display:flex;flex-direction:column;padding:10px}#new-oauth2-app #apps-form .form-buttons[data-v-0657ee77]{display:flex;justify-content:flex-end}#new-oauth2-app #apps-form .form-buttons button[data-v-0657ee77]{margin:5px}#authorize-oauth2-app #authorize-oauth2-title[data-v-3b2fe9ed]{font-size:1.05em;font-weight:700;padding:0 10px}#authorize-oauth2-app .oauth2-access[data-v-3b2fe9ed]{padding:0 10px}#authorize-oauth2-app .authorize-oauth2-buttons[data-v-3b2fe9ed]{display:flex}#authorize-oauth2-app .authorize-oauth2-buttons button[data-v-3b2fe9ed]{margin:5px}#oauth2-app .app-buttons[data-v-3a844fa2]{display:flex;flex-wrap:wrap;gap:10px}#oauth2-app .app-secret[data-v-3a844fa2]{word-break:break-word}#oauth2-app .client-scopes[data-v-3a844fa2]{display:flex;flex-wrap:wrap}#oauth2-app .client-scopes .client-scope[data-v-3a844fa2]{padding-right:15px}#oauth2-app .fa-copy[data-v-3a844fa2]{font-size:.9em}#oauth2-app .no-description[data-v-3a844fa2]{font-style:italic}#oauth2-app .no-app[data-v-3a844fa2]{font-style:italic;padding:10px 0}#oauth2-apps-list ul[data-v-efa45ea0]{list-style:square}#oauth2-apps-list ul li[data-v-efa45ea0]{padding-bottom:10px}#oauth2-apps-list .app-issued-at[data-v-efa45ea0]{font-size:.85em;font-style:italic;padding-left:10px}#oauth2-apps-list .apps-list[data-v-efa45ea0]{font-size:1.05em;font-weight:700}#oauth2-apps-list .app-list-buttons[data-v-efa45ea0]{display:flex;gap:10px}#oauth2-apps-list .no-apps[data-v-efa45ea0]{font-style:italic;padding-bottom:20px}#user-sport-preferences .sport-img[data-v-74e52489]{height:35px;width:35px;margin:0 auto}#user-sport-preferences .sport-color[data-v-74e52489]{border:none;margin:6px 1px 6px 0;padding:0;width:40px}#user-sport-preferences .sport-label[data-v-74e52489]{width:170px}#user-sport-preferences .disabled-sport[data-v-74e52489]{font-style:italic;color:var(--disabled-sport-color)}#user-sport-preferences .disabled-sport .disabled-message[data-v-74e52489]{font-size:.9em}#user-sport-preferences .disabled-sport .cell-heading[data-v-74e52489]{font-style:normal}#user-sport-preferences .action-buttons[data-v-74e52489]{width:70px}#user-sport-preferences .edition-buttons[data-v-74e52489]{display:flex;flex-wrap:wrap;gap:5px;line-height:1.3em}#user-sport-preferences .edition-buttons button[data-v-74e52489]{text-align:center;min-width:80px}#user-sport-preferences .threshold-input[data-v-74e52489]{padding:5px;width:50px}#user-sport-preferences .mobile-display[data-v-74e52489]{display:none}#user-sport-preferences div.error-message[data-v-74e52489]{margin:0}@media screen and (max-width:700px){#user-sport-preferences .action-buttons[data-v-74e52489],#user-sport-preferences .sport-label[data-v-74e52489]{width:45%}#user-sport-preferences .edition-buttons[data-v-74e52489]{justify-content:center}#user-sport-preferences .mobile-display[data-v-74e52489]{display:flex;margin:20px 0 10px}}@media screen and (max-width:500px){#user-sport-preferences .action-buttons[data-v-74e52489],#user-sport-preferences .sport-label[data-v-74e52489]{width:100%}}[data-v-74257266]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}@font-face{font-family:PT Sans;font-style:normal;font-weight:400;src:url(/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot);src:local("PT Sans"),local("PTSans-Regular"),url(/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-regular.59a385b4.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:italic;font-weight:400;src:url(/static/fonts/pt-sans-v9-latin-italic.8293436e.eot);src:local("PT Sans Italic"),local("PTSans-Italic"),url(/static/fonts/pt-sans-v9-latin-italic.8293436e.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-italic.0b285c83.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:normal;font-weight:700;src:url(/static/fonts/pt-sans-v9-latin-700.01a58da9.eot);src:local("PT Sans Bold"),local("PTSans-Bold"),url(/static/fonts/pt-sans-v9-latin-700.01a58da9.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-700.6514157e.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-700.b8a7047e.svg#PTSans) format("svg")}body[data-v-74257266]{margin:0}#app[data-v-74257266]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-74257266]{color:var(--app-a-color);text-decoration:none}img[data-v-74257266]{max-width:100%}input[data-v-74257266],select[data-v-74257266],textarea[data-v-74257266]{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-74257266]:disabled,select[data-v-74257266]:disabled,textarea[data-v-74257266]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}form.errors[data-v-74257266] :invalid{outline:2px solid var(--input-error-color)}label[data-v-74257266]{font-weight:700}button[data-v-74257266]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-74257266]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button.confirm[data-v-74257266]:disabled,button[data-v-74257266]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-74257266]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-74257266]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-74257266]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-74257266]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-74257266]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-74257266]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-74257266]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-74257266]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-74257266]{display:flex;flex-direction:column}.form-box .form-items input[data-v-74257266]{margin:10px;padding:5px}.form-info[data-v-74257266]{color:var(--alert-color);font-size:.8em;margin-top:-2px;padding:0 15px}.success-message[data-v-74257266]{margin:20px 0;background-color:var(--success-background-color);color:var(--success-color)}.upper[data-v-74257266]{text-transform:uppercase}.view[data-v-74257266]{padding-bottom:35px;background-color:var(--app-background-color)}.fa-trophy[data-v-74257266]{color:var(--workout-trophy-color)}.mountains[data-v-74257266]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-74257266]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-74257266]{background-color:var(--workout-no-map-bg-color);background-image:url(/static/img/map.5b26d82b.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-74257266]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-74257266]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-74257266]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-74257266]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-74257266]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-74257266]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-74257266]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-74257266]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-74257266]{font-weight:700}.description-list dl dd[data-v-74257266]{margin-bottom:10px}.center-card[data-v-74257266]{margin:0 auto;width:700px}.center-card.with-margin[data-v-74257266]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-74257266]{width:100%;margin:0 auto 50px auto}}.text-center[data-v-74257266]{text-align:center}.text-left[data-v-74257266]{text-align:left}.responsive-table[data-v-74257266]{margin-bottom:15px}.responsive-table table[data-v-74257266]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-74257266]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-74257266]{font-size:.95em}.responsive-table table tbody td[data-v-74257266]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-74257266]{border:none}.responsive-table table .cell-heading[data-v-74257266]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-74257266]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-74257266]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-74257266]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-74257266]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-74257266]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-74257266]{width:100%}}.profile-buttons[data-v-74257266]{display:flex;gap:10px}.medium-sport-img[data-v-74257266]{height:35px;width:35px;margin:0 auto}.about-text[data-v-74257266]{margin-top:200px}@media screen and (max-width:700px){.about-text[data-v-74257266]{margin-top:0}}.about-text .fa-padding[data-v-74257266]{padding-right:10px}#bike[data-v-795f7f5f]{display:flex;justify-content:center;margin-top:180px;padding:10px}#bike .bike-img[data-v-795f7f5f]{max-width:200px}@media screen and (max-width:700px){#bike[data-v-795f7f5f]{margin-top:10px}#bike .bike-img[data-v-795f7f5f]{max-width:150px}}#about[data-v-bffb50d0]{display:flex;height:100%}#about .container[data-v-bffb50d0]{display:flex;flex-direction:row;justify-content:space-evenly;margin-bottom:20px;width:100%}#about .container .container-sub[data-v-bffb50d0]{min-width:50%;height:100%}#about .container .about-details[data-v-bffb50d0]{width:100%}@media screen and (max-width:1000px){#about[data-v-bffb50d0]{height:auto}#about .container .container-sub[data-v-bffb50d0]{align-items:center}#about .container .container-sub .bike-img[data-v-bffb50d0]{max-width:60%}}@media screen and (max-width:700px){#about .container[data-v-bffb50d0]{flex-direction:column}}.static-map{display:flex;position:relative}.static-map.display-hover{position:absolute;margin-left:20px;margin-top:3px;width:400px;height:225px;z-index:100}.static-map .bg-map-image{background-size:cover;background-position:50%;opacity:.6;height:200px;width:100%}.static-map .map-attribution{top:0;right:0;font-size:11px;position:absolute}.static-map .map-attribution-text{background-color:hsla(0,0%,100%,.7)}.mountains[data-v-96abcc38]{padding-right:5px}.timeline-workout[data-v-96abcc38]{margin-bottom:20px}.timeline-workout .box[data-v-96abcc38]{flex-direction:column;padding:0}.timeline-workout .box .workout-user-date[data-v-96abcc38]{display:flex;justify-content:space-between;align-items:flex-start;padding:5px 10px}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38]{display:flex}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38] .user-picture img{height:25px;width:25px}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38] .user-picture .no-picture{font-size:1.5em}.timeline-workout .box .workout-user-date .workout-user .workout-user-name[data-v-96abcc38]{white-space:nowrap;padding-left:5px}.timeline-workout .box .workout-user-date .workout-date[data-v-96abcc38]{font-size:.85em;font-style:italic;white-space:nowrap}.timeline-workout .box .workout-user-date .workout-title[data-v-96abcc38]{display:block;text-align:center;padding:0 10px}@media screen and (max-width:500px){.timeline-workout .box .workout-user-date .workout-title[data-v-96abcc38]{display:none}}.timeline-workout .box .workout-map[data-v-96abcc38]{background-color:var(--workout-no-map-bg-color);height:150px}.timeline-workout .box .workout-map .no-map[data-v-96abcc38]{line-height:150px}.timeline-workout .box .workout-map[data-v-96abcc38] .bg-map-image{height:150px}.timeline-workout .box .workout-data[data-v-96abcc38]{display:flex;padding:5px;font-size:.9em}.timeline-workout .box .workout-data .sport-img[data-v-96abcc38]{height:25px;width:25px}.timeline-workout .box .workout-data .data[data-v-96abcc38],.timeline-workout .box .workout-data .img[data-v-96abcc38]{display:flex;align-items:center}.timeline-workout .box .workout-data .data .data-values[data-v-96abcc38],.timeline-workout .box .workout-data .img .data-values[data-v-96abcc38]{display:flex;flex-wrap:wrap}.timeline-workout .box .workout-data .img[data-v-96abcc38]{justify-content:flex-end;width:10%}.timeline-workout .box .workout-data .data[data-v-96abcc38]{justify-content:center;width:22%}@media screen and (max-width:500px){.timeline-workout .box .workout-data .img[data-v-96abcc38]{justify-content:center;width:20%}.timeline-workout .box .workout-data .data[data-v-96abcc38]{justify-content:center;width:40%}.timeline-workout .box .workout-data .altitude[data-v-96abcc38],.timeline-workout .box .workout-data .elevation[data-v-96abcc38]{display:none}}.timeline-workout .box .workout-data.without-gpx .data[data-v-96abcc38],.timeline-workout .box .workout-data.without-gpx .img[data-v-96abcc38]{justify-content:center;width:33%}.timeline-workout .box .workout-data[data-v-96abcc38],.timeline-workout .box .workout-map[data-v-96abcc38]{cursor:pointer}.timeline-workout .box .no-cursor[data-v-96abcc38]{cursor:default}.timeline-workout .box .fa[data-v-96abcc38]{padding-right:10px}.no-workouts[data-v-4b4d15fb]{display:flex;justify-content:center}#timeline[data-v-35567bf2]{margin-bottom:20px}#timeline .more-workouts[data-v-35567bf2]{display:flex;justify-content:center}.calendar-workout{display:flex;padding:1px;cursor:pointer}.calendar-workout .sport-img{width:18px;height:18px}.calendar-workout sup{position:relative;top:-8px;left:-3px;width:2px}.calendar-workout sup .custom-fa-small{font-size:.7em}@media screen and (max-width:700px){.calendar-workout .sport-img{padding:3px;width:20px;height:20px}.calendar-workout sup .custom-fa-small{font-size:.6em}}.calendar-workouts-chart[data-v-52d4310a]{display:flex}.calendar-workouts-chart .workouts-chart[data-v-52d4310a]{position:relative}.calendar-workouts-chart .workouts-chart .workouts-count[data-v-52d4310a]{display:flex;justify-content:center;position:absolute;top:4px;left:6px;width:20px;font-size:1.1em;font-weight:700}@media screen and (max-width:700px){.calendar-workouts-chart .workouts-chart .workouts-count[data-v-52d4310a]{top:16px;left:6px}.calendar-workouts-chart .workouts-chart[data-v-52d4310a] .donut-chart{padding-top:12px}.calendar-workouts-chart .workouts-chart[data-v-52d4310a] .donut-chart svg g circle{stroke-width:2;stroke-opacity:.8}}.calendar-workouts-chart .workouts-pane[data-v-52d4310a]{display:flex;padding-left:40px}.calendar-workouts-chart .workouts-pane .more-workouts[data-v-52d4310a]{background:#f5f5f5;border-radius:4px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);position:absolute;top:52px;left:0;min-width:60px;margin-bottom:20px;padding:10px 10px;display:flex;flex-wrap:wrap;z-index:1000}@media screen and (max-width:700px){.calendar-workouts-chart .workouts-pane .more-workouts[data-v-52d4310a]{min-width:70px}}.calendar-workouts-chart .workouts-pane .more-workouts .calendar-more[data-v-52d4310a]{position:absolute;font-size:.9em;top:5px;right:5px}.calendar-workouts .desktop-display{display:flex}.calendar-workouts .mobile-display{display:none}.calendar-workouts .workouts-display{display:flex;flex-wrap:wrap;position:relative;margin:0 10px 0 0}.calendar-workouts .donut-display{display:flex;height:34px;width:34px}@media screen and (max-width:700px){.calendar-workouts .desktop-display{display:none}.calendar-workouts .mobile-display{display:flex}}.calendar-cells{display:flex;flex-direction:column;width:100%}.calendar-cells .calendar-row{display:flex;flex-wrap:wrap;border-top:solid 1px var(--calendar-border-color)}.calendar-cells .calendar-row .calendar-cell{border-right:solid 1px var(--calendar-border-color);height:40px;flex-grow:1;flex-basis:8%;padding:5px 10px 5px 5px;width:8%;position:relative}.calendar-cells .calendar-row .calendar-cell .calendar-cell-day{position:absolute;font-size:.8em;line-height:1;top:.5em;right:.5em;font-weight:700}.calendar-cells .calendar-row .calendar-cell:last-child{border-right:0}@media screen and (max-width:700px){.calendar-cells .calendar-row .calendar-cell:last-child .calendar-workouts .more-workouts{left:-45px}}.calendar-cells .calendar-row .disabled-cell{color:var(--app-color-light)}.calendar-cells .calendar-row .week-end{background:var(--calendar-week-end-color)}.calendar-cells .calendar-row .today{background:var(--calendar-today-color)}@media screen and (max-width:700px){.calendar-cells .calendar-row:last-child .calendar-workouts .more-workouts{top:inherit;bottom:20px}}.calendar-days{display:flex;flex-direction:row;border-top:solid 1px var(--calendar-border-color)}.calendar-days .calendar-day{flex-grow:1;padding:5px;text-align:center;text-transform:uppercase;color:var(--app-color-light)}.calendar-header{display:flex;flex-direction:row}.calendar-header .calendar-arrow,.calendar-header .calendar-month{flex-grow:1;padding:10px}.calendar-header .calendar-arrow-left{text-align:left;cursor:pointer}.calendar-header .calendar-arrow-right{text-align:right;cursor:pointer}.calendar-header .calendar-month{font-weight:700;text-align:center;text-transform:uppercase}#user-calendar .calendar-card,#user-calendar .calendar-card .card-content{padding:0}.start-chart .chart-radio[data-v-d5e9b348]{display:flex;justify-content:space-between;flex-wrap:wrap;padding:10px}.start-chart .chart-radio label[data-v-d5e9b348]{font-size:.85em;font-weight:400}@media screen and (max-width:700px){.start-chart .chart-radio label[data-v-d5e9b348]{padding-bottom:10px}}.user-month-stats[data-v-1bcddc12] .card-content{padding:10px}.records-card[data-v-8d17c606]{width:100%;padding-bottom:3px}.records-card[data-v-8d17c606] .card{font-size:.9em}.records-card[data-v-8d17c606] .card .card-title{display:flex;font-size:.9em}.records-card[data-v-8d17c606] .card .card-title .sport-img{padding-right:10px;height:20px;width:20px}.records-card[data-v-8d17c606] .card .card-content{font-size:.9em;padding:10px}.records-card[data-v-8d17c606] .card .card-content .record{display:flex;align-items:center;justify-content:space-between}.records-card[data-v-8d17c606] .card .card-content .record span{padding:2px}.records-card[data-v-8d17c606] .card .card-content .record .record-type{flex-grow:1}.records-card[data-v-8d17c606] .card .card-content .record .record-value{font-weight:700;white-space:nowrap;padding-right:10px}.records-card[data-v-8d17c606] .card .card-content .record .record-date{white-space:nowrap;min-width:30%;text-align:right}@media screen and (max-width:1000px){.records-card[data-v-8d17c606] .card,.records-card[data-v-8d17c606] .card .card-title{font-size:1em}.records-card[data-v-8d17c606] .card .card-title .sport-img{height:22px;width:22px}}.user-records .no-records[data-v-f0c85cb8]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}#user-stats{display:flex;flex:1 0 25%;justify-content:space-around;flex-wrap:wrap}#dashboard .dashboard-container[data-v-4c0893c1]{display:flex;flex-direction:row}#dashboard .dashboard-container .dashboard-sub-container[data-v-4c0893c1]{display:flex;flex-direction:column}#dashboard .dashboard-container .left-container[data-v-4c0893c1]{width:32%}#dashboard .dashboard-container .right-container[data-v-4c0893c1]{width:68%}#dashboard .mobile-menu[data-v-4c0893c1]{display:none}@media screen and (max-width:1000px){#dashboard[data-v-4c0893c1]{padding-bottom:60px}#dashboard .dashboard-container[data-v-4c0893c1]{display:flex;flex-direction:column}#dashboard .dashboard-container .left-container[data-v-4c0893c1],#dashboard .dashboard-container .right-container[data-v-4c0893c1]{width:100%}#dashboard .mobile-menu[data-v-4c0893c1]{display:flex}#dashboard .mobile-menu .box[data-v-4c0893c1]{display:flex;justify-content:space-between;padding:0;width:100%}#dashboard .mobile-menu .box .mobile-menu-item[data-v-4c0893c1]{display:flex;justify-content:space-around;border:none;border-radius:4px;box-shadow:none;font-size:.95em;padding:10px;width:25%}#dashboard .mobile-menu .box .mobile-menu-item .fa-trophy[data-v-4c0893c1]{color:var(--app-color)}#dashboard .mobile-menu .box .mobile-menu-item.is-selected[data-v-4c0893c1]{color:var(--mobile-menu-selected-color);background-color:var(--mobile-menu-selected-bgcolor)}#dashboard .mobile-menu .box .mobile-menu-item.is-selected .fa-trophy[data-v-4c0893c1]{color:var(--mobile-menu-selected-color)}#dashboard .is-hidden[data-v-4c0893c1]{display:none}}#error[data-v-b60bfa80]{display:flex;align-items:center;justify-content:center;height:75vh;text-align:center}#error .error-content[data-v-b60bfa80]{margin-top:50px}#error .error-content h1[data-v-b60bfa80]{font-size:6em;text-shadow:4px 4px 0 var(--app-shadow-color)}#error .error-content p[data-v-b60bfa80]{font-size:1.2em;margin:30px 0}[data-v-b3c885de]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#user-auth-form[data-v-b3c885de]{display:flex}#user-auth-form #user-form[data-v-b3c885de]{width:60%}#user-auth-form #user-form .account[data-v-b3c885de]{font-size:.9em;padding-left:10px}#user-auth-form #user-form .links[data-v-b3c885de]{font-size:.9em;font-style:italic;padding:0 10px}#user-auth-form #user-form button[data-v-b3c885de]{margin:10px;border:solid 1px var(--app-color)}#user-auth-form #user-form button[data-v-b3c885de]:disabled{border-color:var(--disabled-color)}#user-auth-form #user-form .success-message[data-v-b3c885de]{margin:10px}@media screen and (max-width:1000px){#user-auth-form[data-v-b3c885de]{margin-bottom:50px}#user-auth-form #user-form[data-v-b3c885de]{width:100%}}.user-form[data-v-b3c885de]{margin-top:200px}@media screen and (max-width:700px){.user-form[data-v-b3c885de]{margin-top:10px}}#loginOrRegister[data-v-58043acb]{display:flex}#loginOrRegister .container[data-v-58043acb]{display:flex;flex-direction:row;justify-content:space-evenly;margin-bottom:20px;width:100%}#loginOrRegister .container .container-sub[data-v-58043acb]{min-width:50%;height:100%}@media screen and (max-width:1000px){#loginOrRegister[data-v-58043acb]{height:auto}#loginOrRegister .container .container-sub[data-v-58043acb]{align-items:center}#loginOrRegister .container .container-sub .bike-img[data-v-58043acb]{max-width:60%}}@media screen and (max-width:700px){#loginOrRegister .container[data-v-58043acb]{flex-direction:column}}.alert-message[data-v-69d7e4ff]{background:var(--alert-background-color);color:var(--alert-color);border-radius:4px;margin:10px;padding:10px}.custom-textarea[data-v-8cf5cc64]{display:flex;flex-direction:column}.custom-textarea .remaining-chars[data-v-8cf5cc64]{font-size:.8em;font-style:italic}.strong[data-v-f46ff1d6]{font-weight:700}.dropdown-list[data-v-9590c0e6]{list-style-type:none;background-color:#fff;padding:0!important;margin-top:5px;margin-left:-20px!important;position:absolute;text-align:left;border:1px solid #d3d3d3;box-shadow:2px 2px 5px #d3d3d3;width:auto!important}.dropdown-list li[data-v-9590c0e6]{padding:3px 8px}.dropdown-item[data-v-9590c0e6]{cursor:pointer}.dropdown-item.selected[data-v-9590c0e6]{font-weight:700}.dropdown-item.selected[data-v-9590c0e6]:after{content:" ✔"}.dropdown-item[data-v-9590c0e6]:hover{background-color:var(--dropdown-hover-color)}.error-message[data-v-2659a79a]{background:var(--error-background-color);color:var(--error-color);border-radius:4px;margin:10px;padding:10px}.loader[data-v-4c9921ee]{animation:spin-4c9921ee 2s linear infinite;border:14px solid var(--app-loading-color);border-top:14px solid var(--app-loading-top-color);border-radius:50%;height:60px;margin-left:41%;width:60px}@keyframes spin-4c9921ee{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#modal[data-v-e8fcfaba]{position:fixed;top:0;bottom:0;left:0;right:0;background-color:var(--modal-background-color);padding:10px;z-index:1240}#modal .custom-modal[data-v-e8fcfaba]{background-color:var(--app-background-color);border-radius:4px;max-width:500px;margin:25% auto;z-index:1250}@media screen and (max-width:1000px){#modal .custom-modal[data-v-e8fcfaba]{margin:15% auto;width:100%}}@media screen and (max-width:700px){#modal .custom-modal[data-v-e8fcfaba]{margin:50% 0;width:100%}}#modal .custom-modal[data-v-e8fcfaba] .card{border:0;margin:0}#modal .custom-modal[data-v-e8fcfaba] .card .card-content{display:flex;flex-direction:column}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-message{padding:10px}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-message span{font-weight:700}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-buttons{display:flex;justify-content:flex-end}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-buttons button{margin:5px} \ No newline at end of file diff --git a/fittrackee/dist/static/css/app.7cddaab1.css b/fittrackee/dist/static/css/app.7cddaab1.css new file mode 100644 index 00000000..20e1fa53 --- /dev/null +++ b/fittrackee/dist/static/css/app.7cddaab1.css @@ -0,0 +1 @@ +#footer[data-v-2c73279e]{display:flex;bottom:0;position:fixed;width:100%;background:var(--footer-background-color);color:var(--footer-color);font-size:.9em}#footer a[data-v-2c73279e]{text-decoration:none}#footer .footer-items[data-v-2c73279e]{display:flex;align-content:center;justify-content:center;width:100%}#footer .footer-items .footer-item[data-v-2c73279e]{padding:10px 10px;border-top:solid 1px var(--footer-border-color);text-align:center}@media screen and (max-width:500px){#footer .footer-items[data-v-2c73279e]{font-size:.85em}#footer .footer-items .footer-item[data-v-2c73279e]{padding:5px 5px}#footer .footer-items .bullet[data-v-2c73279e]{padding:5px 0}}.user-picture{display:flex;justify-content:center;align-items:center;min-width:30%;line-height:1.2em}.user-picture img{border-radius:50%;height:90px;width:90px}.user-picture .no-picture{color:var(--app-a-color);font-size:5.5em}[data-v-ab6e62ae]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#nav[data-v-ab6e62ae]{background:var(--nav-bar-background-color);display:flex;padding:15px 10px}#nav .nav-container[data-v-ab6e62ae]{display:flex;margin-left:auto;margin-right:auto;padding:0 15px 15px 15px;max-width:1140px;width:100%;border-bottom:solid 1px var(--nav-border-color)}#nav a.router-link-exact-active[data-v-ab6e62ae]{color:var(--nav-bar-link-active);font-weight:700}#nav .app-name[data-v-ab6e62ae]{font-size:1.2em;font-weight:700;margin-right:10px}#nav .app-name[data-v-ab6e62ae]:hover{cursor:pointer}#nav .fa[data-v-ab6e62ae]{font-size:1.2em}#nav .close-icon[data-v-ab6e62ae],#nav .hamburger-icon[data-v-ab6e62ae],#nav .nav-icon-open[data-v-ab6e62ae]{display:none}#nav .nav-items[data-v-ab6e62ae]{display:flex;flex:1;justify-content:space-between;line-height:1.8em;width:100%}#nav .nav-items .nav-items-close[data-v-ab6e62ae]{display:none}#nav .nav-items .nav-items-app-menu[data-v-ab6e62ae],#nav .nav-items .nav-items-user-menu[data-v-ab6e62ae]{display:flex;margin:0;padding:0}#nav .nav-items .nav-items-group[data-v-ab6e62ae]{display:flex}#nav .nav-items .nav-item[data-v-ab6e62ae]{padding:0 10px}#nav .nav-items .nav-item[data-v-ab6e62ae] .dropdown-list{margin-left:-95px!important;width:115px!important}#nav .nav-items .nav-link[data-v-ab6e62ae]{color:var(--app-a-color);cursor:pointer}#nav .nav-items .nav-profile-img[data-v-ab6e62ae]{margin-bottom:-10px}#nav .nav-items .nav-profile-img[data-v-ab6e62ae] .user-picture img{height:32px;width:32px;-o-object-fit:cover;object-fit:cover}#nav .nav-items .nav-profile-img[data-v-ab6e62ae] .user-picture .no-picture{font-size:1.7em}#nav .nav-items .nav-separator[data-v-ab6e62ae]{display:none}@media screen and (max-width:1000px){#nav .hamburger-icon[data-v-ab6e62ae]{display:block}#nav .nav-icon-open[data-v-ab6e62ae]{display:block;text-align:right;width:100%}#nav .nav-icon-open.menu-open[data-v-ab6e62ae]{display:none}#nav .close-icon[data-v-ab6e62ae]{display:block}#nav .close-icon.menu-closed[data-v-ab6e62ae],#nav .nav-items[data-v-ab6e62ae]{display:none}#nav .nav-items.menu-open[data-v-ab6e62ae]{display:flex;flex-direction:column;justify-content:flex-start;z-index:1001;position:absolute;top:0;right:0;bottom:0;left:0;background:var(--nav-bar-background-color)}#nav .nav-items.menu-open .nav-items-app-menu[data-v-ab6e62ae],#nav .nav-items.menu-open .nav-items-close[data-v-ab6e62ae],#nav .nav-items.menu-open .nav-items-user-menu[data-v-ab6e62ae]{display:flex;flex-direction:column}#nav .nav-items.menu-open .nav-items-close[data-v-ab6e62ae]{align-items:center;display:flex;flex-direction:row;justify-content:space-between}#nav .nav-items.menu-open .nav-items-close .app-name[data-v-ab6e62ae]{padding:15px 25px}#nav .nav-items.menu-open .nav-items-group[data-v-ab6e62ae]{display:flex;flex-direction:column}#nav .nav-items.menu-open .nav-item[data-v-ab6e62ae]{padding:7px 25px}#nav .nav-items.menu-open .nav-item[data-v-ab6e62ae] .dropdown-list{margin-left:0!important;width:auto!important}#nav .nav-items.menu-open .nav-profile-img[data-v-ab6e62ae]{display:none}#nav .nav-items.menu-open .nav-separator[data-v-ab6e62ae]{display:flex;border-top:solid 1px var(--nav-border-color);margin:0 20px;padding:0}}#no-config[data-v-47759238]{display:flex;align-items:center;justify-content:space-around;padding:10px;height:100%}#no-config .error-page[data-v-47759238]{display:flex;flex-direction:column;align-items:center;max-width:100%}#no-config .error-page .error-img[data-v-47759238]{width:150px}#no-config .error-page .error-img svg[data-v-47759238]{stroke:none;fill-rule:nonzero;fill:var(--app-color);filter:var(--svg-filter)}#no-config .error-page .error-message[data-v-47759238]{font-size:1.2em;text-align:center}@media screen and (max-width:1000px){#no-config .error-page .error-message[data-v-47759238]{font-size:1em}}:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#app,body{margin:0}#app{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);min-height:100vh}a{color:var(--app-a-color);text-decoration:none}img{max-width:100%}input,select,textarea{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input:disabled,select:disabled,textarea:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}form.errors :invalid{outline:2px solid var(--input-error-color)}label{font-weight:700}button{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button:hover{background:var(--app-color);color:var(--button-hover-color)}button:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button.confirm:disabled,button:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box{border:solid 1px var(--card-border-color);margin:10px}.box,.info-box{border-radius:4px;padding:10px}.info-box{background-color:var(--info-background-color);color:var(--info-color);font-size:.8em}.container{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items{display:flex;flex-direction:column}.form-box .form-items input{margin:10px;padding:5px}.form-info{color:var(--alert-color);font-size:.8em;margin-top:-2px;padding:0 15px}.success-message{margin:20px 0;background-color:var(--success-background-color);color:var(--success-color)}.upper{text-transform:uppercase}.view{padding-bottom:35px;background-color:var(--app-background-color)}.fa-trophy{color:var(--workout-trophy-color)}.mountains{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map{background-color:var(--workout-no-map-bg-color);background-image:url(/static/img/map.5b26d82b.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl{display:flex;flex-direction:column;width:100%}.description-list dl dt{font-weight:700}.description-list dl dd{margin-bottom:10px}.center-card{margin:0 auto;width:700px}.center-card.with-margin{margin-top:100px}@media screen and (max-width:1000px){.center-card{width:100%;margin:0 auto 50px auto}}.text-center{text-align:center}.text-left{text-align:left}.responsive-table{margin-bottom:15px}.responsive-table table{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody{font-size:.95em}.responsive-table table tbody td{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td{border:none}.responsive-table table .cell-heading{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td{margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td,.responsive-table table td{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading{display:flex}}@media screen and (max-width:500px){.responsive-table table td{width:100%}}.profile-buttons{display:flex;gap:10px}.medium-sport-img{height:35px;width:35px;margin:0 auto}.app-container{height:calc(100vh - 130px)}.app-container.hide-scroll{overflow:hidden}.app-container .app-loading{display:flex;align-items:center;height:100%}.scroll{display:flex;justify-content:flex-end;position:fixed;bottom:42px;right:-15px;padding:0 25px}.scroll .scroll-button{background-color:var(--scroll-button-bg-color);border-radius:4px;box-shadow:1px 1px 3px #d3d3d3;display:none;padding:0 10px}.scroll .scroll-button.display-button{display:block}.user-limit-help[data-v-24ec93e2]{display:flex}.user-limit-help span[data-v-24ec93e2]{font-style:italic}.user-limit-help .fa-info-circle[data-v-24ec93e2]{margin-right:10px}.no-contact[data-v-24ec93e2]{font-style:italic}.stat-card{flex:1;max-width:25%}@media screen and (max-width:700px){.stat-card{flex:1 0 50%;max-width:49%}}.stat-card .stat-content{display:flex;flex-direction:row;justify-content:space-between;padding:10px 20px}.stat-card .stat-content .stat-icon{width:30%;text-align:center;vertical-align:center}@media screen and (max-width:1000px){.stat-card .stat-content .stat-icon{width:50%;text-align:left}}.stat-card .stat-content .stat-icon .fa{font-size:3em}@media screen and (max-width:1000px){.stat-card .stat-content .stat-icon .fa{font-size:2em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-icon .fa{font-size:1.5em}}.stat-card .stat-content .stat-details{width:70%;text-align:right}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details{width:100%}}.stat-card .stat-content .stat-details .stat-huge{font-size:1.7em;font-weight:700}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details .stat-huge{font-size:1.3em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-details .stat-huge{font-size:1em}}.stat-card .stat-content .stat-details .stat{font-size:1em}@media screen and (max-width:1000px){.stat-card .stat-content .stat-details .stat{font-size:.9em}}@media screen and (max-width:500px){.stat-card .stat-content .stat-details .stat{font-size:.8em}}.card{border:solid 1px var(--card-border-color);border-radius:4px;margin:10px}.card .card-title{font-weight:700;border-bottom:solid 1px var(--card-border-color);padding:10px 20px}.card .card-content{padding:10px 20px}#admin-menu[data-v-0dd66f89]{display:flex}#admin-menu.center-card[data-v-0dd66f89]{width:100%}#admin-menu[data-v-0dd66f89] .card{flex-grow:1}#admin-menu[data-v-0dd66f89] .card .admin-menu{padding:0 10px}#admin-menu[data-v-0dd66f89] .card .admin-menu dd{margin-bottom:30px}#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details{display:flex;flex-direction:column}#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details .email-sending-status,#admin-menu[data-v-0dd66f89] .card .admin-menu .application-config-details .registration-status{font-weight:700}#admin-sports table td[data-v-6d62af67]{font-size:1.1em}#admin-sports .sport-img[data-v-6d62af67]{height:35px;width:35px;margin:0 auto}#admin-sports .has-workouts[data-v-6d62af67]{font-size:.95em;font-style:italic;padding:0 10px}#admin-sports .sport-action[data-v-6d62af67]{padding-left:40px}#admin-sports .action-button[data-v-6d62af67]{display:block}#admin-sports .top-button[data-v-6d62af67]{display:none}@media screen and (max-width:700px){#admin-sports .sport-action[data-v-6d62af67]{padding-left:10px}#admin-sports .has-workouts[data-v-6d62af67]{padding-top:5px}#admin-sports .action-button[data-v-6d62af67]{display:flex;align-items:center;flex-wrap:wrap;flex-direction:column}#admin-sports .top-button[data-v-6d62af67]{display:block;margin-bottom:20px}}.table-selects[data-v-72463173]{display:flex;justify-content:space-between;margin:10px 0}.table-selects label select[data-v-72463173]{margin-left:10px;padding:5px}@media screen and (max-width:700px){.table-selects[data-v-72463173]{flex-wrap:wrap}.table-selects label[data-v-72463173]{margin-bottom:10px}.table-selects label select[data-v-72463173]{margin-left:0}}.pagination-center[data-v-3a9a4a65]{display:flex;justify-content:center;font-size:.9em}.pagination-center .pagination[data-v-3a9a4a65]{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.pagination-center .pagination .page-next[data-v-3a9a4a65],.pagination-center .pagination .page-prev[data-v-3a9a4a65],.pagination-center .pagination .page[data-v-3a9a4a65]{border:solid 1px var(--card-border-color);padding:10px 15px}.pagination-center .pagination .page-next.active[data-v-3a9a4a65],.pagination-center .pagination .page-prev.active[data-v-3a9a4a65],.pagination-center .pagination .page.active[data-v-3a9a4a65]{font-weight:700}.pagination-center .pagination .page-next.disabled[data-v-3a9a4a65],.pagination-center .pagination .page-prev.disabled[data-v-3a9a4a65],.pagination-center .pagination .page.disabled[data-v-3a9a4a65]{cursor:default}.pagination-center .pagination .page-next.disabled a[data-v-3a9a4a65],.pagination-center .pagination .page-prev.disabled a[data-v-3a9a4a65],.pagination-center .pagination .page.disabled a[data-v-3a9a4a65]{cursor:default;pointer-events:none;color:var(--disabled-color)}.pagination-center .pagination .page[data-v-3a9a4a65]{margin-left:-1px}.pagination-center .pagination .page-prev[data-v-3a9a4a65]{border-top-left-radius:5px;border-bottom-left-radius:5px}.pagination-center .pagination .page-next[data-v-3a9a4a65]{border-top-right-radius:5px;border-bottom-right-radius:5px;margin-left:-1px}.pagination-center .pagination .fa[data-v-3a9a4a65]{font-size:.8em;padding:0 5px}@media screen and (max-width:1000px){.pagination-center .pagination .page[data-v-3a9a4a65]{display:none}}.users-filters[data-v-627a8e91]{display:flex;align-items:center;padding:10px 0;gap:10px}.users-filters .fa[data-v-627a8e91]{font-size:1.5em}.users-filters .fa-disabled[data-v-627a8e91]{color:var(--disabled-color)}.users-filters .search-username[data-v-627a8e91]{display:flex;align-items:center;justify-content:space-between;gap:10px;border:solid 1px var(--card-border-color);border-radius:4px;color:var(--info-color);width:45%}.users-filters .search-username input[data-v-627a8e91]{border:none;height:12px;width:90%}.users-filters .search-username input[data-v-627a8e91]:focus{outline:none}.users-filters .search-username .fa-times[data-v-627a8e91]{padding-right:10px}@media screen and (max-width:700px){.users-filters .search-username[data-v-627a8e91]{width:400px}}@media screen and (max-width:500px){.users-filters .search-username[data-v-627a8e91]{width:90%}}#admin-users .top-button[data-v-dc12ff78]{display:none}#admin-users .no-users[data-v-dc12ff78]{display:flex;justify-content:center;padding:20px 0;font-weight:700}#admin-users table td[data-v-dc12ff78]{font-size:1.1em}#admin-users .left-text[data-v-dc12ff78]{text-align:left}#admin-users[data-v-dc12ff78] .user-picture img{height:30px;width:30px}#admin-users[data-v-dc12ff78] .user-picture .no-picture{font-size:2em}@media screen and (max-width:700px){#admin-users .top-button[data-v-dc12ff78]{display:block;margin-bottom:20px}#admin-users .pagination-center[data-v-dc12ff78]{margin-top:-30px}}.user-header[data-v-20291951]{display:flex;align-items:stretch}.user-header .user-details[data-v-20291951]{flex-grow:1;padding:10px;display:flex;flex-direction:column;align-items:center}.user-header .user-details .user-name[data-v-20291951]{font-size:2em;height:60%}.user-header .user-details .user-stats[data-v-20291951]{display:flex;gap:40px}.user-header .user-details .user-stats .user-stat[data-v-20291951]{display:flex;flex-direction:column;align-items:center;padding-top:10px}.user-header .user-details .user-stats .user-stat .stat-label[data-v-20291951],.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951]{padding:0 5px}.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951],.user-header .user-details .user-stats .user-stat[data-v-20291951] .distance{font-weight:700;font-size:1.5em}@media screen and (max-width:500px){.user-header .user-details .user-name[data-v-20291951]{font-size:1.5em}.user-header .user-details .user-stats[data-v-20291951]{gap:20px}.user-header .user-details .user-stats .user-stat .stat-number[data-v-20291951],.user-header .user-details .user-stats .user-stat[data-v-20291951] .distance{font-weight:700;font-size:1.2em}.user-header .user-details .user-stats .user-stat.hide-small[data-v-20291951]{display:none}}.profile-tabs-checkboxes{display:flex;justify-content:center;flex-wrap:wrap;gap:5px}#user-profile[data-v-9729cba4]{margin:auto;width:700px}@media screen and (max-width:1000px){#user-profile[data-v-9729cba4]{width:100%;margin:0 auto 50px auto}}#user-infos .user-bio[data-v-217519af]{white-space:pre-wrap}#user-infos .alert-message[data-v-217519af]{margin:0}#user-infos .profile-buttons[data-v-217519af]{display:flex;flex-wrap:wrap}#user-infos .email-form[data-v-217519af]{display:flex}#user-infos .email-form form[data-v-217519af]{width:100%}#user-infos .email-form .form-buttons[data-v-217519af]{display:flex;gap:10px;margin-top:10px}.password-strength[data-v-74e71df5]{cursor:default;display:flex;flex-direction:column}.password-strength .password-slider[data-v-74e71df5]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:8px;height:5px;outline:none;padding:0}.password-strength .strength-0[data-v-74e71df5],.password-strength .strength-1[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-weak) 0,var(--password-color-weak) 100%);background-repeat:no-repeat}.password-strength .strength-2[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-medium) 0,var(--password-color-medium) 100%);background-repeat:no-repeat}.password-strength .strength-3[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-good) 0,var(--password-color-good) 100%);background-repeat:no-repeat}.password-strength .strength-4[data-v-74e71df5]{background:var(--password-bg-color);background-image:linear-gradient(to right,var(--password-color-strong) 0,var(--password-color-strong) 100%);background-repeat:no-repeat}.password-strength .password-slider[data-v-74e71df5]::-moz-range-thumb,.password-strength .password-slider[data-v-74e71df5]::-webkit-slider-thumb{opacity:0}.password-strength .password-slider[data-v-74e71df5]::-webkit-slider-thumb{-webkit-appearance:none}.password-strength .password-slider[data-v-74e71df5]::-moz-range-thumb{-moz-appearance:none;appearance:none}.password-strength .password-strength-details[data-v-74e71df5]{margin-bottom:5px;margin-top:-10px;padding:0 10px}.password-strength .password-strength-details .password-strength-value[data-v-74e71df5]{font-size:.85em}.password-strength .password-strength-details .info-box[data-v-74e71df5]{padding:1px 10px}.password-strength .password-strength-details .info-box .password-feedback[data-v-74e71df5]{padding-left:20px}.password-input[data-v-5a126514]{display:flex;flex-direction:column}.password-input .show-password[data-v-5a126514]{font-style:italic;font-size:.85em;text-align:right;margin-top:-7.5px;padding-right:10px;cursor:pointer}.form-items .password-input[data-v-37b8c4c8] .show-password{font-weight:400;font-size:.8em;margin-top:-4px;padding-left:0}.form-items .password-input[data-v-37b8c4c8] .form-info{font-weight:400;padding-left:10px}.form-items .password-input[data-v-37b8c4c8] .password-strength-details{font-weight:400;margin-top:0}.form-buttons[data-v-37b8c4c8]{flex-direction:row}@media screen and (max-width:500px){.form-buttons[data-v-37b8c4c8]{flex-direction:column}}.form-items .password-input[data-v-5e5a4552] .show-password{font-weight:400;font-size:.8em;margin-top:-4px;padding-left:0}.form-buttons[data-v-5e5a4552]{flex-direction:row}@media screen and (max-width:500px){.form-buttons[data-v-5e5a4552]{flex-direction:column}}#user-picture-edition .user-picture-form[data-v-687e9604]{display:flex;flex-direction:column;margin-top:10px}#user-picture-edition .user-picture-form form[data-v-687e9604]{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}#user-picture-edition .user-picture-form form input[data-v-687e9604]{margin-top:10px;padding:5px}#user-picture-edition .user-picture-form form span[data-v-687e9604]{font-style:italic;font-size:.9em;padding-left:5px}#user-picture-edition .user-picture-form form .picture-help[data-v-687e9604]{display:flex}#user-picture-edition .user-picture-form form .picture-help span[data-v-687e9604]{font-style:italic;padding:10px}#user-picture-edition .user-picture-form form .picture-help .fa-info-circle[data-v-687e9604]{margin-right:10px}#user-picture-edition .user-picture-form .picture-buttons[data-v-687e9604]{display:flex;flex-direction:row;align-items:center;gap:10px}@media screen and (max-width:500px){#user-picture-edition .user-picture-form .picture-buttons[data-v-687e9604],#user-picture-edition .user-picture-form .picture-help[data-v-687e9604]{flex-direction:column;align-items:stretch}}#tz-dropdown[data-v-47ea2903]{display:flex;flex-direction:column;position:relative}#tz-dropdown .tz-dropdown-list[data-v-47ea2903]{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:5px 0;position:absolute;overflow-y:auto;top:20px;left:0;right:0;max-height:200px;width:inherit}#tz-dropdown .tz-dropdown-item[data-v-47ea2903]{cursor:pointer;font-size:.9em;font-weight:400;padding:5px}#tz-dropdown .tz-dropdown-item.focus[data-v-47ea2903]{background-color:var(--dropdown-hover-color)}#user-preferences-edition .form-items[data-v-3b8a9a12]{padding-top:5px}#user-preferences-edition .form-checkboxes .checkboxes-label[data-v-3b8a9a12]{font-weight:700}#user-preferences-edition .form-checkboxes .checkboxes[data-v-3b8a9a12]{display:flex;gap:10px;flex-wrap:wrap}#user-preferences-edition .form-checkboxes .checkboxes .checkbox-label[data-v-3b8a9a12]{padding-left:5px}#user-preferences-edition .form-checkboxes .checkboxes label[data-v-3b8a9a12]{font-weight:400}#user-preferences-edition #date_format[data-v-3b8a9a12],#user-preferences-edition #language[data-v-3b8a9a12]{padding:5px}#new-oauth2-app #new-oauth2-title[data-v-0657ee77]{font-size:1.05em;font-weight:700;padding:0 10px}#new-oauth2-app #apps-form .form-items[data-v-0657ee77]{display:flex;flex-direction:column}#new-oauth2-app #apps-form .form-items input[type=text][data-v-0657ee77]{height:20px}#new-oauth2-app #apps-form .form-items .form-item-scope[data-v-0657ee77]{padding:10px}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-label[data-v-0657ee77]{font-weight:700}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes[data-v-0657ee77]{padding-bottom:10px}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes .scope-label[data-v-0657ee77]{height:inherit}#new-oauth2-app #apps-form .form-items .form-item-scope .form-item-scope-checkboxes .scope-description[data-v-0657ee77]{font-style:italic;margin:0 5px}#new-oauth2-app #apps-form .form-items .form-item[data-v-0657ee77]{display:flex;flex-direction:column;padding:10px}#new-oauth2-app #apps-form .form-buttons[data-v-0657ee77]{display:flex;justify-content:flex-end}#new-oauth2-app #apps-form .form-buttons button[data-v-0657ee77]{margin:5px}#authorize-oauth2-app #authorize-oauth2-title[data-v-3b2fe9ed]{font-size:1.05em;font-weight:700;padding:0 10px}#authorize-oauth2-app .oauth2-access[data-v-3b2fe9ed]{padding:0 10px}#authorize-oauth2-app .authorize-oauth2-buttons[data-v-3b2fe9ed]{display:flex}#authorize-oauth2-app .authorize-oauth2-buttons button[data-v-3b2fe9ed]{margin:5px}#oauth2-app .app-buttons[data-v-3a844fa2]{display:flex;flex-wrap:wrap;gap:10px}#oauth2-app .app-secret[data-v-3a844fa2]{word-break:break-word}#oauth2-app .client-scopes[data-v-3a844fa2]{display:flex;flex-wrap:wrap}#oauth2-app .client-scopes .client-scope[data-v-3a844fa2]{padding-right:15px}#oauth2-app .fa-copy[data-v-3a844fa2]{font-size:.9em}#oauth2-app .no-description[data-v-3a844fa2]{font-style:italic}#oauth2-app .no-app[data-v-3a844fa2]{font-style:italic;padding:10px 0}#oauth2-apps-list ul[data-v-efa45ea0]{list-style:square}#oauth2-apps-list ul li[data-v-efa45ea0]{padding-bottom:10px}#oauth2-apps-list .app-issued-at[data-v-efa45ea0]{font-size:.85em;font-style:italic;padding-left:10px}#oauth2-apps-list .apps-list[data-v-efa45ea0]{font-size:1.05em;font-weight:700}#oauth2-apps-list .app-list-buttons[data-v-efa45ea0]{display:flex;gap:10px}#oauth2-apps-list .no-apps[data-v-efa45ea0]{font-style:italic;padding-bottom:20px}#user-sport-preferences .sport-img[data-v-74e52489]{height:35px;width:35px;margin:0 auto}#user-sport-preferences .sport-color[data-v-74e52489]{border:none;margin:6px 1px 6px 0;padding:0;width:40px}#user-sport-preferences .sport-label[data-v-74e52489]{width:170px}#user-sport-preferences .disabled-sport[data-v-74e52489]{font-style:italic;color:var(--disabled-sport-color)}#user-sport-preferences .disabled-sport .disabled-message[data-v-74e52489]{font-size:.9em}#user-sport-preferences .disabled-sport .cell-heading[data-v-74e52489]{font-style:normal}#user-sport-preferences .action-buttons[data-v-74e52489]{width:70px}#user-sport-preferences .edition-buttons[data-v-74e52489]{display:flex;flex-wrap:wrap;gap:5px;line-height:1.3em}#user-sport-preferences .edition-buttons button[data-v-74e52489]{text-align:center;min-width:80px}#user-sport-preferences .threshold-input[data-v-74e52489]{padding:5px;width:50px}#user-sport-preferences .mobile-display[data-v-74e52489]{display:none}#user-sport-preferences div.error-message[data-v-74e52489]{margin:0}@media screen and (max-width:700px){#user-sport-preferences .action-buttons[data-v-74e52489],#user-sport-preferences .sport-label[data-v-74e52489]{width:45%}#user-sport-preferences .edition-buttons[data-v-74e52489]{justify-content:center}#user-sport-preferences .mobile-display[data-v-74e52489]{display:flex;margin:20px 0 10px}}@media screen and (max-width:500px){#user-sport-preferences .action-buttons[data-v-74e52489],#user-sport-preferences .sport-label[data-v-74e52489]{width:100%}}[data-v-74257266]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}@font-face{font-family:PT Sans;font-style:normal;font-weight:400;src:url(/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot);src:local("PT Sans"),local("PTSans-Regular"),url(/static/fonts/pt-sans-v9-latin-regular.c5a514ae.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-regular.e7867499.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-regular.b5b74f16.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-regular.c43bc0a2.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-regular.59a385b4.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:italic;font-weight:400;src:url(/static/fonts/pt-sans-v9-latin-italic.8293436e.eot);src:local("PT Sans Italic"),local("PTSans-Italic"),url(/static/fonts/pt-sans-v9-latin-italic.8293436e.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-italic.10011d51.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-italic.fe36f54f.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-italic.6206408d.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-italic.0b285c83.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:normal;font-weight:700;src:url(/static/fonts/pt-sans-v9-latin-700.01a58da9.eot);src:local("PT Sans Bold"),local("PTSans-Bold"),url(/static/fonts/pt-sans-v9-latin-700.01a58da9.eot?#iefix) format("embedded-opentype"),url(/static/fonts/pt-sans-v9-latin-700.51b1613b.woff2) format("woff2"),url(/static/fonts/pt-sans-v9-latin-700.5ff2a2d7.woff) format("woff"),url(/static/fonts/pt-sans-v9-latin-700.6514157e.ttf) format("truetype"),url(/static/img/pt-sans-v9-latin-700.b8a7047e.svg#PTSans) format("svg")}body[data-v-74257266]{margin:0}#app[data-v-74257266]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-74257266]{color:var(--app-a-color);text-decoration:none}img[data-v-74257266]{max-width:100%}input[data-v-74257266],select[data-v-74257266],textarea[data-v-74257266]{background-color:var(--input-bg-color);border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-74257266]:disabled,select[data-v-74257266]:disabled,textarea[data-v-74257266]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}form.errors[data-v-74257266] :invalid{outline:2px solid var(--input-error-color)}label[data-v-74257266]{font-weight:700}button[data-v-74257266]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-74257266]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button.confirm[data-v-74257266]:disabled,button[data-v-74257266]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-74257266]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-74257266]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-74257266]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-74257266]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-74257266]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-74257266]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-74257266]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-74257266]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-74257266]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-74257266]{display:flex;flex-direction:column}.form-box .form-items input[data-v-74257266]{margin:10px;padding:5px}.form-info[data-v-74257266]{color:var(--alert-color);font-size:.8em;margin-top:-2px;padding:0 15px}.success-message[data-v-74257266]{margin:20px 0;background-color:var(--success-background-color);color:var(--success-color)}.upper[data-v-74257266]{text-transform:uppercase}.view[data-v-74257266]{padding-bottom:35px;background-color:var(--app-background-color)}.fa-trophy[data-v-74257266]{color:var(--workout-trophy-color)}.mountains[data-v-74257266]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-74257266]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-74257266]{background-color:var(--workout-no-map-bg-color);background-image:url(/static/img/map.5b26d82b.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-74257266]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-74257266]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-74257266]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-74257266]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-74257266]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-74257266]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-74257266]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-74257266]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-74257266]{font-weight:700}.description-list dl dd[data-v-74257266]{margin-bottom:10px}.center-card[data-v-74257266]{margin:0 auto;width:700px}.center-card.with-margin[data-v-74257266]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-74257266]{width:100%;margin:0 auto 50px auto}}.text-center[data-v-74257266]{text-align:center}.text-left[data-v-74257266]{text-align:left}.responsive-table[data-v-74257266]{margin-bottom:15px}.responsive-table table[data-v-74257266]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-74257266]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-74257266]{font-size:.95em}.responsive-table table tbody td[data-v-74257266]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-74257266]{border:none}.responsive-table table .cell-heading[data-v-74257266]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-74257266]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-74257266]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-74257266]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-74257266]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-74257266]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-74257266]{width:100%}}.profile-buttons[data-v-74257266]{display:flex;gap:10px}.medium-sport-img[data-v-74257266]{height:35px;width:35px;margin:0 auto}.about-text[data-v-74257266]{margin-top:200px}@media screen and (max-width:700px){.about-text[data-v-74257266]{margin-top:0}}.about-text .fa-padding[data-v-74257266]{padding-right:10px}#bike[data-v-795f7f5f]{display:flex;justify-content:center;margin-top:180px;padding:10px}#bike .bike-img[data-v-795f7f5f]{max-width:200px}@media screen and (max-width:700px){#bike[data-v-795f7f5f]{margin-top:10px}#bike .bike-img[data-v-795f7f5f]{max-width:150px}}#about[data-v-bffb50d0]{display:flex;height:100%}#about .container[data-v-bffb50d0]{display:flex;flex-direction:row;justify-content:space-evenly;margin-bottom:20px;width:100%}#about .container .container-sub[data-v-bffb50d0]{min-width:50%;height:100%}#about .container .about-details[data-v-bffb50d0]{width:100%}@media screen and (max-width:1000px){#about[data-v-bffb50d0]{height:auto}#about .container .container-sub[data-v-bffb50d0]{align-items:center}#about .container .container-sub .bike-img[data-v-bffb50d0]{max-width:60%}}@media screen and (max-width:700px){#about .container[data-v-bffb50d0]{flex-direction:column}}.static-map{display:flex;position:relative}.static-map.display-hover{position:absolute;margin-left:20px;margin-top:3px;width:400px;height:225px;z-index:100}.static-map .bg-map-image{background-size:cover;background-position:50%;opacity:.6;height:200px;width:100%}.static-map .map-attribution{top:0;right:0;font-size:11px;position:absolute}.static-map .map-attribution-text{background-color:hsla(0,0%,100%,.7)}.mountains[data-v-96abcc38]{padding-right:5px}.timeline-workout[data-v-96abcc38]{margin-bottom:20px}.timeline-workout .box[data-v-96abcc38]{flex-direction:column;padding:0}.timeline-workout .box .workout-user-date[data-v-96abcc38]{display:flex;justify-content:space-between;align-items:flex-start;padding:5px 10px}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38]{display:flex}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38] .user-picture img{height:25px;width:25px}.timeline-workout .box .workout-user-date .workout-user[data-v-96abcc38] .user-picture .no-picture{font-size:1.5em}.timeline-workout .box .workout-user-date .workout-user .workout-user-name[data-v-96abcc38]{white-space:nowrap;padding-left:5px}.timeline-workout .box .workout-user-date .workout-date[data-v-96abcc38]{font-size:.85em;font-style:italic;white-space:nowrap}.timeline-workout .box .workout-user-date .workout-title[data-v-96abcc38]{display:block;text-align:center;padding:0 10px}@media screen and (max-width:500px){.timeline-workout .box .workout-user-date .workout-title[data-v-96abcc38]{display:none}}.timeline-workout .box .workout-map[data-v-96abcc38]{background-color:var(--workout-no-map-bg-color);height:150px}.timeline-workout .box .workout-map .no-map[data-v-96abcc38]{line-height:150px}.timeline-workout .box .workout-map[data-v-96abcc38] .bg-map-image{height:150px}.timeline-workout .box .workout-data[data-v-96abcc38]{display:flex;padding:5px;font-size:.9em}.timeline-workout .box .workout-data .sport-img[data-v-96abcc38]{height:25px;width:25px}.timeline-workout .box .workout-data .data[data-v-96abcc38],.timeline-workout .box .workout-data .img[data-v-96abcc38]{display:flex;align-items:center}.timeline-workout .box .workout-data .data .data-values[data-v-96abcc38],.timeline-workout .box .workout-data .img .data-values[data-v-96abcc38]{display:flex;flex-wrap:wrap}.timeline-workout .box .workout-data .img[data-v-96abcc38]{justify-content:flex-end;width:10%}.timeline-workout .box .workout-data .data[data-v-96abcc38]{justify-content:center;width:22%}@media screen and (max-width:500px){.timeline-workout .box .workout-data .img[data-v-96abcc38]{justify-content:center;width:20%}.timeline-workout .box .workout-data .data[data-v-96abcc38]{justify-content:center;width:40%}.timeline-workout .box .workout-data .altitude[data-v-96abcc38],.timeline-workout .box .workout-data .elevation[data-v-96abcc38]{display:none}}.timeline-workout .box .workout-data.without-gpx .data[data-v-96abcc38],.timeline-workout .box .workout-data.without-gpx .img[data-v-96abcc38]{justify-content:center;width:33%}.timeline-workout .box .workout-data[data-v-96abcc38],.timeline-workout .box .workout-map[data-v-96abcc38]{cursor:pointer}.timeline-workout .box .no-cursor[data-v-96abcc38]{cursor:default}.timeline-workout .box .fa[data-v-96abcc38]{padding-right:10px}.no-workouts[data-v-4b4d15fb]{display:flex;justify-content:center}#timeline[data-v-35567bf2]{margin-bottom:20px}#timeline .more-workouts[data-v-35567bf2]{display:flex;justify-content:center}.calendar-workout{display:flex;padding:1px;cursor:pointer}.calendar-workout .sport-img{width:18px;height:18px}.calendar-workout sup{position:relative;top:-8px;left:-3px;width:2px}.calendar-workout sup .custom-fa-small{font-size:.7em}@media screen and (max-width:700px){.calendar-workout .sport-img{padding:3px;width:20px;height:20px}.calendar-workout sup .custom-fa-small{font-size:.6em}}.calendar-workouts-chart[data-v-52d4310a]{display:flex}.calendar-workouts-chart .workouts-chart[data-v-52d4310a]{position:relative}.calendar-workouts-chart .workouts-chart .workouts-count[data-v-52d4310a]{display:flex;justify-content:center;position:absolute;top:4px;left:6px;width:20px;font-size:1.1em;font-weight:700}@media screen and (max-width:700px){.calendar-workouts-chart .workouts-chart .workouts-count[data-v-52d4310a]{top:16px;left:6px}.calendar-workouts-chart .workouts-chart[data-v-52d4310a] .donut-chart{padding-top:12px}.calendar-workouts-chart .workouts-chart[data-v-52d4310a] .donut-chart svg g circle{stroke-width:2;stroke-opacity:.8}}.calendar-workouts-chart .workouts-pane[data-v-52d4310a]{display:flex;padding-left:40px}.calendar-workouts-chart .workouts-pane .more-workouts[data-v-52d4310a]{background:#f5f5f5;border-radius:4px;box-shadow:0 4px 8px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);position:absolute;top:52px;left:0;min-width:60px;margin-bottom:20px;padding:10px 10px;display:flex;flex-wrap:wrap;z-index:1000}@media screen and (max-width:700px){.calendar-workouts-chart .workouts-pane .more-workouts[data-v-52d4310a]{min-width:70px}}.calendar-workouts-chart .workouts-pane .more-workouts .calendar-more[data-v-52d4310a]{position:absolute;font-size:.9em;top:5px;right:5px}.calendar-workouts .desktop-display{display:flex}.calendar-workouts .mobile-display{display:none}.calendar-workouts .workouts-display{display:flex;flex-wrap:wrap;position:relative;margin:0 10px 0 0}.calendar-workouts .donut-display{display:flex;height:34px;width:34px}@media screen and (max-width:700px){.calendar-workouts .desktop-display{display:none}.calendar-workouts .mobile-display{display:flex}}.calendar-cells{display:flex;flex-direction:column;width:100%}.calendar-cells .calendar-row{display:flex;flex-wrap:wrap;border-top:solid 1px var(--calendar-border-color)}.calendar-cells .calendar-row .calendar-cell{border-right:solid 1px var(--calendar-border-color);height:40px;flex-grow:1;flex-basis:8%;padding:5px 10px 5px 5px;width:8%;position:relative}.calendar-cells .calendar-row .calendar-cell .calendar-cell-day{position:absolute;font-size:.8em;line-height:1;top:.5em;right:.5em;font-weight:700}.calendar-cells .calendar-row .calendar-cell:last-child{border-right:0}@media screen and (max-width:700px){.calendar-cells .calendar-row .calendar-cell:last-child .calendar-workouts .more-workouts{left:-45px}}.calendar-cells .calendar-row .disabled-cell{color:var(--app-color-light)}.calendar-cells .calendar-row .week-end{background:var(--calendar-week-end-color)}.calendar-cells .calendar-row .today{background:var(--calendar-today-color)}@media screen and (max-width:700px){.calendar-cells .calendar-row:last-child .calendar-workouts .more-workouts{top:inherit;bottom:20px}}.calendar-days{display:flex;flex-direction:row;border-top:solid 1px var(--calendar-border-color)}.calendar-days .calendar-day{flex-grow:1;padding:5px;text-align:center;text-transform:uppercase;color:var(--app-color-light)}.calendar-header{display:flex;flex-direction:row}.calendar-header .calendar-arrow,.calendar-header .calendar-month{flex-grow:1;padding:10px}.calendar-header .calendar-arrow-left{text-align:left;cursor:pointer}.calendar-header .calendar-arrow-right{text-align:right;cursor:pointer}.calendar-header .calendar-month{font-weight:700;text-align:center;text-transform:uppercase}#user-calendar .calendar-card,#user-calendar .calendar-card .card-content{padding:0}.start-chart .chart-radio[data-v-d5e9b348]{display:flex;justify-content:space-between;flex-wrap:wrap;padding:10px}.start-chart .chart-radio label[data-v-d5e9b348]{font-size:.85em;font-weight:400}@media screen and (max-width:700px){.start-chart .chart-radio label[data-v-d5e9b348]{padding-bottom:10px}}.user-month-stats[data-v-1bcddc12] .card-content{padding:10px}.records-card[data-v-8d17c606]{width:100%;padding-bottom:3px}.records-card[data-v-8d17c606] .card{font-size:.9em}.records-card[data-v-8d17c606] .card .card-title{display:flex;font-size:.9em}.records-card[data-v-8d17c606] .card .card-title .sport-img{padding-right:10px;height:20px;width:20px}.records-card[data-v-8d17c606] .card .card-content{font-size:.9em;padding:10px}.records-card[data-v-8d17c606] .card .card-content .record{display:flex;align-items:center;justify-content:space-between}.records-card[data-v-8d17c606] .card .card-content .record span{padding:2px}.records-card[data-v-8d17c606] .card .card-content .record .record-type{flex-grow:1}.records-card[data-v-8d17c606] .card .card-content .record .record-value{font-weight:700;white-space:nowrap;padding-right:10px}.records-card[data-v-8d17c606] .card .card-content .record .record-date{white-space:nowrap;min-width:30%;text-align:right}@media screen and (max-width:1000px){.records-card[data-v-8d17c606] .card,.records-card[data-v-8d17c606] .card .card-title{font-size:1em}.records-card[data-v-8d17c606] .card .card-title .sport-img{height:22px;width:22px}}.user-records .no-records[data-v-f0c85cb8]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}#user-stats{display:flex;flex:1 0 25%;justify-content:space-around;flex-wrap:wrap}#dashboard .dashboard-container[data-v-4c0893c1]{display:flex;flex-direction:row}#dashboard .dashboard-container .dashboard-sub-container[data-v-4c0893c1]{display:flex;flex-direction:column}#dashboard .dashboard-container .left-container[data-v-4c0893c1]{width:32%}#dashboard .dashboard-container .right-container[data-v-4c0893c1]{width:68%}#dashboard .mobile-menu[data-v-4c0893c1]{display:none}@media screen and (max-width:1000px){#dashboard[data-v-4c0893c1]{padding-bottom:60px}#dashboard .dashboard-container[data-v-4c0893c1]{display:flex;flex-direction:column}#dashboard .dashboard-container .left-container[data-v-4c0893c1],#dashboard .dashboard-container .right-container[data-v-4c0893c1]{width:100%}#dashboard .mobile-menu[data-v-4c0893c1]{display:flex}#dashboard .mobile-menu .box[data-v-4c0893c1]{display:flex;justify-content:space-between;padding:0;width:100%}#dashboard .mobile-menu .box .mobile-menu-item[data-v-4c0893c1]{display:flex;justify-content:space-around;border:none;border-radius:4px;box-shadow:none;font-size:.95em;padding:10px;width:25%}#dashboard .mobile-menu .box .mobile-menu-item .fa-trophy[data-v-4c0893c1]{color:var(--app-color)}#dashboard .mobile-menu .box .mobile-menu-item.is-selected[data-v-4c0893c1]{color:var(--mobile-menu-selected-color);background-color:var(--mobile-menu-selected-bgcolor)}#dashboard .mobile-menu .box .mobile-menu-item.is-selected .fa-trophy[data-v-4c0893c1]{color:var(--mobile-menu-selected-color)}#dashboard .is-hidden[data-v-4c0893c1]{display:none}}#error[data-v-b60bfa80]{display:flex;align-items:center;justify-content:center;height:75vh;text-align:center}#error .error-content[data-v-b60bfa80]{margin-top:50px}#error .error-content h1[data-v-b60bfa80]{font-size:6em;text-shadow:4px 4px 0 var(--app-shadow-color)}#error .error-content p[data-v-b60bfa80]{font-size:1.2em;margin:30px 0}[data-v-b3c885de]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--input-bg-color:#fff;--input-error-color:#dc3545;--dropdown-hover-color:#eff0f5;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#d6dde3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--success-background-color:#d9ecd9;--success-color:#306430;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--disabled-sport-color:#616161;--scroll-button-bg-color:hsla(0,0%,100%,.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color));--password-bg-color:#d7dadf;--password-color-weak:#e46d6e;--password-color-medium:#f8bc4a;--password-color-good:#acc578;--password-color-strong:#57c255}#user-auth-form[data-v-b3c885de]{display:flex}#user-auth-form #user-form[data-v-b3c885de]{width:60%}#user-auth-form #user-form .account[data-v-b3c885de]{font-size:.9em;padding-left:10px}#user-auth-form #user-form .links[data-v-b3c885de]{font-size:.9em;font-style:italic;padding:0 10px}#user-auth-form #user-form button[data-v-b3c885de]{margin:10px;border:solid 1px var(--app-color)}#user-auth-form #user-form button[data-v-b3c885de]:disabled{border-color:var(--disabled-color)}#user-auth-form #user-form .success-message[data-v-b3c885de]{margin:10px}@media screen and (max-width:1000px){#user-auth-form[data-v-b3c885de]{margin-bottom:50px}#user-auth-form #user-form[data-v-b3c885de]{width:100%}}.user-form[data-v-b3c885de]{margin-top:200px}@media screen and (max-width:700px){.user-form[data-v-b3c885de]{margin-top:10px}}#loginOrRegister[data-v-58043acb]{display:flex}#loginOrRegister .container[data-v-58043acb]{display:flex;flex-direction:row;justify-content:space-evenly;margin-bottom:20px;width:100%}#loginOrRegister .container .container-sub[data-v-58043acb]{min-width:50%;height:100%}@media screen and (max-width:1000px){#loginOrRegister[data-v-58043acb]{height:auto}#loginOrRegister .container .container-sub[data-v-58043acb]{align-items:center}#loginOrRegister .container .container-sub .bike-img[data-v-58043acb]{max-width:60%}}@media screen and (max-width:700px){#loginOrRegister .container[data-v-58043acb]{flex-direction:column}}.alert-message[data-v-69d7e4ff]{background:var(--alert-background-color);color:var(--alert-color);border-radius:4px;margin:10px;padding:10px}.custom-textarea[data-v-8cf5cc64]{display:flex;flex-direction:column}.custom-textarea .remaining-chars[data-v-8cf5cc64]{font-size:.8em;font-style:italic}.strong[data-v-f46ff1d6]{font-weight:700}.dropdown-list[data-v-9590c0e6]{list-style-type:none;background-color:#fff;padding:0!important;margin-top:5px;margin-left:-20px!important;position:absolute;text-align:left;border:1px solid #d3d3d3;box-shadow:2px 2px 5px #d3d3d3;width:auto!important}.dropdown-list li[data-v-9590c0e6]{padding:3px 8px}.dropdown-item[data-v-9590c0e6]{cursor:pointer}.dropdown-item.selected[data-v-9590c0e6]{font-weight:700}.dropdown-item.selected[data-v-9590c0e6]:after{content:" ✔"}.dropdown-item[data-v-9590c0e6]:hover{background-color:var(--dropdown-hover-color)}.error-message[data-v-2659a79a]{background:var(--error-background-color);color:var(--error-color);border-radius:4px;margin:10px;padding:10px}.loader[data-v-4c9921ee]{animation:spin-4c9921ee 2s linear infinite;border:14px solid var(--app-loading-color);border-top:14px solid var(--app-loading-top-color);border-radius:50%;height:60px;margin-left:41%;width:60px}@keyframes spin-4c9921ee{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}#modal[data-v-e8fcfaba]{position:fixed;top:0;bottom:0;left:0;right:0;background-color:var(--modal-background-color);padding:10px;z-index:1240}#modal .custom-modal[data-v-e8fcfaba]{background-color:var(--app-background-color);border-radius:4px;max-width:500px;margin:25% auto;z-index:1250}@media screen and (max-width:1000px){#modal .custom-modal[data-v-e8fcfaba]{margin:15% auto;width:100%}}@media screen and (max-width:700px){#modal .custom-modal[data-v-e8fcfaba]{margin:50% 0;width:100%}}#modal .custom-modal[data-v-e8fcfaba] .card{border:0;margin:0}#modal .custom-modal[data-v-e8fcfaba] .card .card-content{display:flex;flex-direction:column}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-message{padding:10px}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-message span{font-weight:700}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-buttons{display:flex;justify-content:flex-end}#modal .custom-modal[data-v-e8fcfaba] .card .card-content .modal-buttons button{margin:5px} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.cf4c1e38.js b/fittrackee/dist/static/js/app.b9bf563e.js similarity index 99% rename from fittrackee/dist/static/js/app.cf4c1e38.js rename to fittrackee/dist/static/js/app.b9bf563e.js index 88b187e8..de4b6526 100644 --- a/fittrackee/dist/static/js/app.cf4c1e38.js +++ b/fittrackee/dist/static/js/app.b9bf563e.js @@ -1,2 +1,2 @@ -(function(){var e={5167:function(e,t,n){"use strict";var r=n(594),a=n(8566),o=n(2894),i=n(5801),s=n(2024);const l=r.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,a.a)(e);a.j.set(n,t);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const t=`Bearer ${r}`;e.headers&&e.headers.Authorization!==t&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,a.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,a.a)(e.response.config),Promise.reject(e)))),t["Z"]=l},8566:function(e,t,n){"use strict";n.d(t,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:t,url:n,params:r={},data:a={}}=e;return[t,n,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const t=a(e);if(r.has(t)){const e=r.get(t)||{};e?.abort(),r.delete(t)}return t}},2540:function(e,t,n){"use strict";var r=n(9150);const a=["nb"];function o(){const e=n(4612),t={};return e.keys().forEach((n=>{const r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];t[a]=e(n).default}})),t}t["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},9923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["unter ",n(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Quellcode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt-E-Mail des Administrators"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. Anzahl aktiver Nutzer"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. Dateianzahl im zip Archiv"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Neue E-Mail"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Das wasswort wurde zurückgesetzt."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainings existieren"])},IMAGE:e=>{const{normalize:t}=e;return t(["Bild"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:t}=e;return t(["Nutzer"])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Die E-Mail Adresse wurde aktualisiert."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte entfernen"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["Adminstatus"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Accountstatus"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["Trainingsanzahl"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fehler bei der GPX-Verarbeitung."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fehler beim Einlesen der GPX-Datei"])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netzwerkfehler."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:t}=e;return t(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:t}=e;return t(["Keine Datei ausgewählt."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Gebe ein gültiges Authentifizierungstoken an."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sportart existiert nicht."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Registrierung erfolgreich."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Du hast keine Berechtigung."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["Vorhergehende"])},NEXT:e=>{const{normalize:t}=e;return t(["Nächste"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autorisieren"])},BACK:e=>{const{normalize:t}=e;return t(["Zurück"])},CANCEL:e=>{const{normalize:t}=e;return t(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:t}=e;return t(["Deaktivieren"])},EDIT:e=>{const{normalize:t}=e;return t(["Bearbeiten"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aktivieren"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmelden"])},NO:e=>{const{normalize:t}=e;return t(["Nein"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESET:e=>{const{normalize:t}=e;return t(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Speichern"])},YES:e=>{const{normalize:t}=e;return t(["Ja"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["Über"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bestätigung"])},CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["Tag"]),t(["Tage"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["Dokumentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Versteckt"])},HOME:e=>{const{normalize:t}=e;return t(["Startseite"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sortiert nach"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sortieren"])},ASC:e=>{const{normalize:t}=e;return t(["aufsteigend"])},DESC:e=>{const{normalize:t}=e;return t(["absteigend"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["pro Seite"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Dieser Monat"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Etwas lief schief"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["ID"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Erstellt am"])},NAME:e=>{const{normalize:t}=e;return t(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Geltungsbereich"])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf workouts-Endpunkte"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])}},URL:e=>{const{normalize:t}=e;return t(["Anwendungs-URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Die Anwendung ",n(r(0))," fragt an:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2-Anwendungen"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:t}=e;return t(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rudern"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Gehen"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistik"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["Woche"])},month:e=>{const{normalize:t}=e;return t(["Monat"])},year:e=>{const{normalize:t}=e;return t(["Jahr"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:t}=e;return t(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Gebe ein Passwort ein"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte fordere ein neues Passworts an."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LOG_IN:e=>{const{normalize:t}=e;return t(["Anmelden"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmeldung"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Abmelden"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Passwort vergessen?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["schwach"])},AVERAGE:e=>{const{normalize:t}=e;return t(["mittel"])},GOOD:e=>{const{normalize:t}=e;return t(["gut"])},STRONG:e=>{const{normalize:t}=e;return t(["start"])},LABEL:e=>{const{normalize:t}=e;return t(["Passwortstärke"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},allUppercase:e=>{const{normalize:t}=e;return t(["Schreibe einige, aber nicht alle Buchstaben groß."])},capitalization:e=>{const{normalize:t}=e;return t(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:t}=e;return t(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermeide Angabe von letzten Jahreszahlen."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},sequences:e=>{const{normalize:t}=e;return t(["Vermeide gebräuchliche Zeichenfolgen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermeide wiederholungen von Wörtern und Zeichen."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},anotherWord:e=>{const{normalize:t}=e;return t(["Füge weitere weniger gebräuchliche Wörter hinzu."])},useWords:e=>{const{normalize:t}=e;return t(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])},noNeed:e=>{const{normalize:t}=e;return t(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:t}=e;return t(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Dein Passwort wurde aktualisiert. Klicke ",n(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Zurück zum Profil"])},BIO:e=>{const{normalize:t}=e;return t(["Biographie"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:t}=e;return t(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Bitte ",n(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Vorname"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Erster Tag der Woche"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nachname"])},LOCATION:e=>{const{normalize:t}=e;return t(["Ort"])},MONDAY:e=>{const{normalize:t}=e;return t(["Montag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Bildausgabe"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Bild aktualisieren"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Bild entfernen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Einstellungsausgabe"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sportarten-Einstellungsausgabe"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["Konto"])},APPS:e=>{const{normalize:t}=e;return t(["Anwendungen"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen"])},PROFILE:e=>{const{normalize:t}=e;return t(["Profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["Sportarten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},COLOR:e=>{const{normalize:t}=e;return t(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["aktiv"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["Geschwindigkeitsschwellenwert für Stopp"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Einheiten für die Distanz"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperiales System (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisches System (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Zeitzone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["E-Mail zur Kontobestätigung erneut senden"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Entschuldigung, die Registrierung ist deaktiviert."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Dieser Account ist inaktiv."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["Benutzerbild"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["Analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["Aufstieg"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschnittsgeschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["zurück zum Training"])},DATE:e=>{const{normalize:t}=e;return t(["Datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["zeige Filter"])},DISTANCE:e=>{const{normalize:t}=e;return t(["Entfernung"])},DURATION:e=>{const{normalize:t}=e;return t(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:t}=e;return t(["Höhe"])},END:e=>{const{normalize:t}=e;return t(["Ende"])},FROM:e=>{const{normalize:t}=e;return t(["Von"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberge Filter"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Nächstes Training"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Keine Trainings."])},NOTES:e=>{const{normalize:t}=e;return t(["Anmerkungen"])},PAUSES:e=>{const{normalize:t}=e;return t(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorheriges Training"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["Aufzeichnung"]),t(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["Segment"]),t(["Segmente"])])},SPEED:e=>{const{normalize:t}=e;return t(["Geschwindigkeit"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["Sportart"]),t(["Sportarten"])])},START:e=>{const{normalize:t}=e;return t(["Start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:t}=e;return t(["Titel"])},TO:e=>{const{normalize:t}=e;return t(["bis"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Füge erstes Training hinzu!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["Temperatur"])},WIND:e=>{const{normalize:t}=e;return t(["Wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OSO"])},SE:e=>{const{normalize:t}=e;return t(["SO"])},SSE:e=>{const{normalize:t}=e;return t(["SSO"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["klarer Tag"])},"clear-night":e=>{const{normalize:t}=e;return t(["klare Nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["wolkig"])},fog:e=>{const{normalize:t}=e;return t(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:t}=e;return t(["Regen"])},sleet:e=>{const{normalize:t}=e;return t(["Schneeregen"])},snow:e=>{const{normalize:t}=e;return t(["Schnee"])},wind:e=>{const{normalize:t}=e;return t(["Wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["mit .gpx Datei"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["ohne .gpx Datei"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["Training"]),t(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["oder .zip Datei mit .gpx Dateien"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},8757:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["under ",n(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Source code"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activate account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email for contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to reset ",n(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Current email"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["New email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The password has been reset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The email address has been updated."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["At least one file in zip archive exceeds size limit, please check the archive."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Error during gpx processing."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Error during gpx file parsing."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["The number of files in the archive exceeds the limit."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Authorize"])},BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["about"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Displayed"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Hidden"])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Something went wrong"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Application description"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Issue at"])},NAME:e=>{const{normalize:t}=e;return t(["Application name"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:t}=e;return t(["Application URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["The application ",n(r(0))," is requesting:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 applications"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Authorize ",n(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Delete application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Add an application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application not found!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["All existing associated tokens have been revoked."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Current password"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["hide password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOG_IN:e=>{const{normalize:t}=e;return t(["log in"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["New password"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["No users found."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["At least 8 characters required."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["weak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["average"])},GOOD:e=>{const{normalize:t}=e;return t(["good"])},STRONG:e=>{const{normalize:t}=e;return t(["strong"])},LABEL:e=>{const{normalize:t}=e;return t(["password strength"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Avoid predictable letter substitutions like ","@"," for a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Avoid reversed spellings of common words."])},allUppercase:e=>{const{normalize:t}=e;return t(["Capitalize some, but not all letters."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalize more than the first letter."])},dates:e=>{const{normalize:t}=e;return t(["Avoid dates and years that are associated with you."])},recentYears:e=>{const{normalize:t}=e;return t(["Avoid recent years."])},associatedYears:e=>{const{normalize:t}=e;return t(["Avoid years that are associated with you."])},sequences:e=>{const{normalize:t}=e;return t(["Avoid common character sequences."])},repeated:e=>{const{normalize:t}=e;return t(["Avoid repeated words and characters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Use longer keyboard patterns and change typing direction multiple times."])},anotherWord:e=>{const{normalize:t}=e;return t(["Add more words that are less common."])},useWords:e=>{const{normalize:t}=e;return t(["Use multiple words, but avoid common phrases."])},noNeed:e=>{const{normalize:t}=e;return t(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:t}=e;return t(["If you use this password elsewhere, you should change it."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account edition"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Date display format"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Please ",n(r(0))," to change your email address again or contact the administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sports preferences edition"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["active"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["stopped speed threshold"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Units for distance"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperial system (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metric system (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Resend account confirmation email"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["This user account is inactive."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farthest distance"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Highest ascent"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["start elevation axis at zero"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},6625:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["sous licence ",n(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Code source (en)"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activer le compte"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Email de l'administrateur pour contact "])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",n(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",n(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nouvelle adresse email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Le mot de passe a été réinitialisé."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Changer l'email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["L'adresse email a été mise à jour."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les droits d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["statut du compte"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Erreur lors du traitement du fichier gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Erreur lors de l'analyse du fichier."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur réseau."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autoriser"])},BACK:e=>{const{normalize:t}=e;return t(["Retour"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},RESET:e=>{const{normalize:t}=e;return t(["Réinit."])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["à propos"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Affiché"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Masqué"])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois-ci"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Une erreur s'est produite"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Créée le"])},NAME:e=>{const{normalize:t}=e;return t(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:t}=e;return t(["URL de l'application"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["L'application ",n(r(0))," demande les accès suivants :"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["Applications OAuth2"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Autoriser ",n(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application introuvable !"])},NO_APPS:e=>{const{normalize:t}=e;return t(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Tous les jetons associés existants ont été révoqués."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Électrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:t}=e;return t(["Courriel"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisissez un mot de passe"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOG_IN:e=>{const{normalize:t}=e;return t(["connecter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["8 caractères minimum."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["faible"])},AVERAGE:e=>{const{normalize:t}=e;return t(["moyenne"])},GOOD:e=>{const{normalize:t}=e;return t(["bonne"])},STRONG:e=>{const{normalize:t}=e;return t(["forte"])},LABEL:e=>{const{normalize:t}=e;return t(["robustesse du mot de passe"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Évitez les orthographes inversées des mots courants."])},allUppercase:e=>{const{normalize:t}=e;return t(["Mettez quelques lettres en majuscules, mais pas toutes."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:t}=e;return t(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},recentYears:e=>{const{normalize:t}=e;return t(["Évitez les dernières années."])},associatedYears:e=>{const{normalize:t}=e;return t(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},sequences:e=>{const{normalize:t}=e;return t(["Évitez les séquences de caractères courantes."])},repeated:e=>{const{normalize:t}=e;return t(["Évitez les mots et les caractères répétés."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},anotherWord:e=>{const{normalize:t}=e;return t(["Ajoutez des mots moins courants."])},useWords:e=>{const{normalize:t}=e;return t(["Utilisez plusieurs mots, mais évitez les phrases courantes."])},noNeed:e=>{const{normalize:t}=e;return t(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:t}=e;return t(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Veuillez vous ",n(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences des sports"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["compte"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Unités pour les distances"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Système impérial (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Système métrique (m, km)"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actif"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["seuil de vitesse arrêtée"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès."])},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Le compte de cet utilisateur est inactif."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSO"])},SW:e=>{const{normalize:t}=e;return t(["SO"])},WSW:e=>{const{normalize:t}=e;return t(["OSO"])},W:e=>{const{normalize:t}=e;return t(["O"])},WNW:e=>{const{normalize:t}=e;return t(["ONO"])},NW:e=>{const{normalize:t}=e;return t(["NO"])},NNW:e=>{const{normalize:t}=e;return t(["NNO"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},8891:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},701:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Onder ",n(r(0))," licentie "])},CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is zelf-gehoste buitenshuis activiteiten tracker."])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Broncode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activeer account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Ingeschakeld"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:t}=e;return t(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email voor contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. aantal actieve gebruikers"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. aantal bestanden in zip archief"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["geen contact email"])},TITLE:e=>{const{normalize:t}=e;return t(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. grootte van zip archief (in Mb)"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Bij 0, geen limiet op registratie."])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. grootte van bestanden voor upload (in Mb)"])}},ADMIN:e=>{const{normalize:t}=e;return t(["Beheer"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Instellingen"])},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Terug naar beheer"])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Weet u zeker dat u het wachtwoord voor ",n(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Huidige email"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nieuwe email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Het wachtwoord werd gereset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Ingeschakeld"])},IMAGE:e=>{const{normalize:t}=e;return t(["Afbeelding"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainingen aanwezig"])}},TITLE:e=>{const{normalize:t}=e;return t(["Beheer sporten"])}},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["gebruiker"]),t(["gebruikers"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Het emailadres werd bijgewerkt."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Verwijder admin rechten"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["aantal trainingen"])}}}},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Weet u zeker dat u de account ",n(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Verwijder gebruiker"])},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte)."])}},o={ERROR:{"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: een geldige email is vereist."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fout bij verwerken van gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fout bij het verwerken van het gpx bestand."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Bestandsformaat niet toegelaten."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ongeldige token, log opnieuw in."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netwerk fout."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:t}=e;return t(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:t}=e;return t(["Geen bestand geselecteerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Geef een geldig auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Deze sport bestaat niet."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signatuur verlopen. Log opnieuw in."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Succesvol geregistreerd."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["U hebt geen machtigingen."])},UNKNOWN:e=>{const{normalize:t}=e;return t(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Bestandsgrootte is groter dan toegestaan."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["vorige"])},NEXT:e=>{const{normalize:t}=e;return t(["volgende"])}}},i={YES:e=>{const{normalize:t}=e;return t(["Ja"])},"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Toekennen"])},BACK:e=>{const{normalize:t}=e;return t(["Terug"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Verwijder mijn account"])},EDIT:e=>{const{normalize:t}=e;return t(["Bewerken"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aanzetten"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},NO:e=>{const{normalize:t}=e;return t(["Nee"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registreer"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},DISABLE:e=>{const{normalize:t}=e;return t(["Uitzetten"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Aanpassen"])},LOGIN:e=>{const{normalize:t}=e;return t(["Inloggen"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["over"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bevestiging"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentatie"])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Weergegeven"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},CONTACT:e=>{const{normalize:t}=e;return t(["contacteer"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["dag"]),t(["dagen"])])},HOME:e=>{const{normalize:t}=e;return t(["Startscherm"])},SELECTS:{ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sorteer"])},DESC:e=>{const{normalize:t}=e;return t(["aflopend"])},ASC:e=>{const{normalize:t}=e;return t(["oplopend"])}},ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["per pagina"])}}},HIDDEN:e=>{const{normalize:t}=e;return t(["Verborgen"])},TOTAL:e=>{const{normalize:t}=e;return t(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Deze maand"])}},c={NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:t}=e;return t(["Fout. Probeer opnieuw of contacteer de administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])}},u={APP:{CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Geheim"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Probleem bij"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Omvang"])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan users endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan auth endpoints."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan auth endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan workouts endpoints."])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["geeft toestemming tot aanpassen van de applicatie instellingen."])}},NAME:e=>{const{normalize:t}=e;return t(["Naam van de app"])},URL:e=>{const{normalize:t}=e;return t(["App URL"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["App omschrijving"])},CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["De app ",n(r(0))," vraagt:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 apps"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Toegang geven aan ",n(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Verwijder app"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Voeg een app toe"])},NO_APP:e=>{const{normalize:t}=e;return t(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Alle bestaande tokens werden ingetrokken."])},ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Nieuwe OAuth2 app toevoegen"])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Virtueel)"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (Elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Roeien"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Sneeuwschoenen"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandelen"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Trektocht"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistieken"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["maand"])},year:e=>{const{normalize:t}=e;return t(["jaar"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:t}=e;return t(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Al een account aangemaakt?"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Geef een paswoord in"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},LOG_IN:e=>{const{normalize:t}=e;return t(["inloggen"])},LOGIN:e=>{const{normalize:t}=e;return t(["Inloggen"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Uitloggen"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Wachtwoord"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Tenminste 8 karakters vereist."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Wachtwoord vergeten?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Wachtwoord reset"])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["zwak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["gemiddeld"])},GOOD:e=>{const{normalize:t}=e;return t(["goed"])},STRONG:e=>{const{normalize:t}=e;return t(["sterk"])},LABEL:e=>{const{normalize:t}=e;return t(["wachtwoord sterkte"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},capitalization:e=>{const{normalize:t}=e;return t(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:t}=e;return t(["Vermijd persoonlijke gegevens en jaartallen."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermijd recente jaartallen."])},sequences:e=>{const{normalize:t}=e;return t(["Vermijd voorspelbare opeenvolgingen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermijd opeenvolgende woorden en karakters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},anotherWord:e=>{const{normalize:t}=e;return t(["Voeg meer niet gangbare woorden toe."])},pwned:e=>{const{normalize:t}=e;return t(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},allUppercase:e=>{const{normalize:t}=e;return t(["Gebruik enkele hoofdletters."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermijd jaartallen met een persoonlijke betekenis."])},useWords:e=>{const{normalize:t}=e;return t(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])},noNeed:e=>{const{normalize:t}=e;return t(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])}}},PROFILE:{ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Hoogte gerelateerde data (opnames, totaal)"])},ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account aanpassen"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Terug naar profiel"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:t}=e;return t(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Sport voorkeuren wijzigen"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Voornaam"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Eerste dag van de week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Taal"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Achternaam"])},LOCATION:e=>{const{normalize:t}=e;return t(["Locatie"])},MONDAY:e=>{const{normalize:t}=e;return t(["Maandag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Afbeelding aanpassen"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Afbeelding veranderen"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Afbeelding verwijderen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Voorkeuren aanpassen"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Datum registratie"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["afbeelding"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["voorkeuren"])},PROFILE:e=>{const{normalize:t}=e;return t(["profiel"])},SPORTS:e=>{const{normalize:t}=e;return t(["sporten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["actie"])},COLOR:e=>{const{normalize:t}=e;return t(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actief"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["snelheidsgrens voor stilstand"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol bijgewerkt."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Eenheid voor afstand"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperialistisch systeem (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisch systeem (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Tijdzone"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Gelieve ",n(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sport voorkeuren aanpassen"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registreren is uitgeschakeld."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset uw wachtwoord"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Deze account is niet actief."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["gebruikersafbeelding"])},USERNAME:e=>{const{normalize:t}=e;return t(["Gebruikersnaam"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Taal"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Uw wachtwoord werd aangepast. Klik ",n(r(0))," om in te loggen."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Opnieuw zenden van account bevestigingsmail"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])}},_={ASCENT:e=>{const{normalize:t}=e;return t(["geklommen"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["gem. snelheid"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["gemiddelde snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["Terug naar training"])},DATE:e=>{const{normalize:t}=e;return t(["datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["gedaald"])},DISTANCE:e=>{const{normalize:t}=e;return t(["afstand"])},DURATION:e=>{const{normalize:t}=e;return t(["duur"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training aanpassen"])},ELEVATION:e=>{const{normalize:t}=e;return t(["hoogte"])},END:e=>{const{normalize:t}=e;return t(["einde"])},FROM:e=>{const{normalize:t}=e;return t(["van"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberg filters"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["De afstand moet groter zijn dan 0"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. hoogte"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max. grootte"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Volgende training"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Geen vorige training"])},NOTES:e=>{const{normalize:t}=e;return t(["notities"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorige training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Geen records."])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Gem. snelheid"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Langste duur"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["resterende karakters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segmenten"])])},SPEED:e=>{const{normalize:t}=e;return t(["snelheid"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sporten"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titel"])},TO:e=>{const{normalize:t}=e;return t(["aan"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Eén uploaden!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperatuur"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OZO"])},SE:e=>{const{normalize:t}=e;return t(["ZO"])},SSE:e=>{const{normalize:t}=e;return t(["ZZO"])},SSW:e=>{const{normalize:t}=e;return t(["ZZW"])},SW:e=>{const{normalize:t}=e;return t(["ZW"])},WSW:e=>{const{normalize:t}=e;return t(["WZW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},S:e=>{const{normalize:t}=e;return t(["Z"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["heldere dag"])},"clear-night":e=>{const{normalize:t}=e;return t(["heldere nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["bewolkt"])},fog:e=>{const{normalize:t}=e;return t(["mist"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:t}=e;return t(["regen"])},sleet:e=>{const{normalize:t}=e;return t(["natte sneeuw"])},snow:e=>{const{normalize:t}=e;return t(["sneeuw"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["met .gpx bestand"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["zonder .gpx bestand"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["training"]),t(["trainingen"])])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["of .zip archief met .gpx bestanden"])},ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["toon filters"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data vanuit gpx, zonder op te schonen"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["De duur moet langer zijn dan 0 seconden"])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Geen trainingen."])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Langste afstand"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start en aankomst"])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["datum training"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},9342:function(e,t,n){"use strict";var r=n(3148),a=n(7028),o=n(9963),i=n(2343),s=n(5205);(0,s.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=n(6252),c=n(2262),u=n(3577);const d=e=>((0,l.dD)("data-v-2c73279e"),e=e(),(0,l.Cn)(),e),m={id:"footer"},E={class:"footer-items"},_={class:"footer-item"},S=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},I=["href"],R=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),g={class:"footer-item"},U={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"};var z=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const t=e,{adminContact:n,version:r}=(0,c.BK)(t);return(e,t)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",E,[(0,l._)("div",_,[S,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(n)}`},(0,u.zw)(e.$t("common.CONTACT")),9,I)])):(0,l.kq)("",!0),R,(0,l._)("div",g,[(0,l._)("a",U,(0,u.zw)(e.$t("common.DOCUMENTATION")),1)])])])}}}),N=n(3744);const h=(0,N.Z)(z,[["__scopeId","data-v-2c73279e"]]);var w=h,v=(n(7658),n(6595)),C=n(5801),f=n(9917),D=n(6287);const k=e=>((0,l.dD)("data-v-1db396e7"),e=e(),(0,l.Cn)(),e),P={id:"nav"},L={class:"nav-container"},M={class:"nav-app-name"},b={class:"nav-items-close"},y=k((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),G={key:0,class:"nav-items-group"},F=k((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),W={class:"nav-items-user-menu"},K={key:0,class:"nav-items-group"},B={class:"nav-item nav-profile-img"},Y={key:1,class:"nav-items-group"},x=k((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var $=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:t}){const n=(0,f.o)(),r=(0,l.Fl)((()=>n.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>n.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,t("menuInteraction",!0)}function d(){i.value=!1,t("menuInteraction",!1)}function m(e){n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){n.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,t)=>{const n=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",L,[(0,l._)("div",M,[(0,l._)("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=t=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":i.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[y,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:t[2]||(t[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",G,[(0,l.Wm)(n,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(n,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),F])):(0,l.kq)("",!0)]),(0,l._)("div",W,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",K,[(0,l._)("div",B,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(n,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:E},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",Y,[(0,l.Wm)(n,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(_,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[x])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const Z=(0,N.Z)($,[["__scopeId","data-v-1db396e7"]]);var H=Z,V=n(7167);const q={id:"no-config"},j={class:"error-page"},X={class:"error-img"},J=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",q,[(0,l._)("div",j,[(0,l._)("div",X,[(0,l.Wm)(V.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,J)])]))}});const ee=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var te=ee;const ne=(0,l._)("div",{id:"top"},null,-1),re={key:0,class:"app-container"},ae={class:"app-loading"},oe={class:"container scroll"},ie=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),se=[ie];var le=(0,l.aZ)({__name:"App",setup(e){const t=(0,f.o)(),n=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function i(e){a.value=e}function s(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&s(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function E(){let e="en";try{const t=navigator.language.split("-")[0];t in D.v1&&(e=t)}catch(n){e="en"}t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),t.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,t)=>{const s=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)(H,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("div",ae,[(0,l.Wm)(s)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(te,{key:1}))],2)),(0,l._)("div",oe,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},se,2)]),(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(w,{key:2,version:(0,c.SU)(n)?(0,c.SU)(n).version:"",adminContact:(0,c.SU)(n).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const ce=le;var ue=ce,de=n(2540),me=n(7351),Ee=n(2894);const _e={class:"alert-message"},Se=["innerHTML"];var Te=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",_e,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(n))},null,8,Se)]))}});const pe=(0,N.Z)(Te,[["__scopeId","data-v-69d7e4ff"]]);var Ae=pe,Oe=n(2531);const Ie={class:"custom-textarea"},Re=["id","name","maxLenght","disabled"],ge={class:"remaining-chars"};var Ue=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,r=(0,c.iH)("");function a(e){t("updateValue",e.target.value)}return(0,l.YP)((()=>n.input),(e=>{r.value=null===e?"":e})),(t,n)=>((0,l.wg)(),(0,l.iD)("div",Ie,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":n[0]||(n[0]=e=>r.value=e),onInput:a},null,40,Re),[[o.nr,r.value]]),(0,l._)("div",ge,(0,u.zw)(t.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const ze=(0,N.Z)(Ue,[["__scopeId","data-v-8cf5cc64"]]);var Ne=ze,he=n(3649),we=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(t),m=(0,l.Fl)((()=>d.value?he.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,he.sC)(a.value,s.value,m.value,n.value):parseFloat(a.value.toFixed(n.value))));return(e,t)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(E)),3),(0,l.Uk)(" "+(0,u.zw)(" ")+" "),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,N.Z)(we,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,fe=n(2201);const De={class:"dropdown-wrapper"},ke={key:0,class:"dropdown-list"},Pe=["onClick"];var Le=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,r=(0,fe.yj)(),a=(0,c.iH)(!1),o=n.options.map((e=>e));function i(){a.value=!a.value}function s(e){t("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(t,n)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(t.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",ke,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:e=>s(t)},(0,u.zw)(t.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Me=(0,N.Z)(Le,[["__scopeId","data-v-9590c0e6"]]);var be=Me;const ye={class:"error-message"},Ge={key:0},Fe={key:1};var We=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",ye,[Array.isArray((0,c.SU)(n))?((0,l.wg)(),(0,l.iD)("ul",Ge,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(n),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{key:n},(0,u.zw)(e.$t(t)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Fe,(0,u.zw)(e.$t((0,c.SU)(n))),1))]))}});const Ke=(0,N.Z)(We,[["__scopeId","data-v-2659a79a"]]);var Be=Ke;const Ye={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},xe=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),$e=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),Ze=[xe,$e];function He(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Ye,Ze)}var Ve={name:"CyclingSport"};const qe=(0,N.Z)(Ve,[["render",He]]);var je=qe;const Xe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Je=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Qe=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),et=[Je,Qe];function tt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Xe,et)}var nt={name:"CyclingTransport"};const rt=(0,N.Z)(nt,[["render",tt]]);var at=rt;const ot={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},it=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),st=[it];function lt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",ot,st)}var ct={name:"CyclingVirtual"};const ut=(0,N.Z)(ct,[["render",lt]]);var dt=ut;const mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_t=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),St=[Et,_t];function Tt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"Hiking"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const It={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Rt=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),gt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),Ut=[Rt,gt];function zt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",It,Ut)}var Nt={name:"MountainBiking"};const ht=(0,N.Z)(Nt,[["render",zt]]);var wt=ht;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Ct=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),ft=[Ct];function Dt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,ft)}var kt={name:"MountainBikingElectric"};const Pt=(0,N.Z)(kt,[["render",Dt]]);var Lt=Pt;const Mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},bt=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),yt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),Gt=[bt,yt];function Ft(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Mt,Gt)}var Wt={name:"Rowing"};const Kt=(0,N.Z)(Wt,[["render",Ft]]);var Bt=Kt;const Yt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},xt=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),$t=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Zt=[xt,$t];function Ht(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Yt,Zt)}var Vt={name:"Running"};const qt=(0,N.Z)(Vt,[["render",Ht]]);var jt=qt;const Xt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Jt=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Qt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),en=[Jt,Qt];function tn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Xt,en)}var nn={name:"SkiingAlpine"};const rn=(0,N.Z)(nn,[["render",tn]]);var an=rn;const on={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},sn=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),ln=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),cn=[sn,ln];function un(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",on,cn)}var dn={name:"SkiingCrossCountry"};const mn=(0,N.Z)(dn,[["render",un]]);var En=mn;const _n={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Sn=(0,l.uE)('silhouette of a person with snowshoes',6),Tn=[Sn];function pn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",_n,Tn)}var An={name:"Snowshoes"};const On=(0,N.Z)(An,[["render",pn]]);var In=On;const Rn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},gn=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),Un=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),zn=[gn,Un];function Nn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Rn,zn)}var hn={name:"Trail"};const wn=(0,N.Z)(hn,[["render",Nn]]);var vn=wn;const Cn={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},fn=(0,l.uE)('silhouette of a walking person',3),Dn=[fn];function kn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"Walking"};const Ln=(0,N.Z)(Pn,[["render",kn]]);var Mn=Ln;const bn=["title"];var yn=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const t=e,{color:n,sportLabel:r,title:a}=(0,c.BK)(t),o=(0,l.f3)("sportColors");return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(n)?(0,c.SU)(n):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(je,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(at,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(wt,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:5})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Bt,{key:6})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(jt,{key:7})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(an,{key:8})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(En,{key:9})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(In,{key:10})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:11})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Mn,{key:12})):(0,l.kq)("",!0)],12,bn))}});const Gn=yn;var Fn=Gn;const Wn={class:"loader"};function Kn(e,t){return(0,l.wg)(),(0,l.iD)("div",Wn)}const Bn={},Yn=(0,N.Z)(Bn,[["render",Kn],["__scopeId","data-v-4c9921ee"]]);var xn=Yn;const $n={id:"modal"},Zn={class:"custom-modal"},Hn={key:0,class:"modal-message"},Vn={key:1,class:"modal-message"},qn={class:"modal-buttons"};var jn=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,r=(0,f.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(n),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,n)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",$n,[(0,l._)("div",Zn,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(i)?((0,l.wg)(),(0,l.iD)("div",Hn,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(i)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",Vn,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(s)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(s)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",qn,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:n[0]||(n[0]=e=>t("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:n[1]||(n[1]=e=>t("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const Xn=(0,N.Z)(jn,[["__scopeId","data-v-e8fcfaba"]]);var Jn=Xn;const Qn=[{target:Ae,name:"AlertMessage"},{target:Oe.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Be,name:"ErrorMessage"},{target:xn,name:"Loader"},{target:Jn,name:"Modal"},{target:Fn,name:"SportImage"}],er={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var tr=n(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const nr=(0,o.ri)(ue).provide("sportColors",tr.Zo).use(de.Z).use(Ee.Z).use(me.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",er);Qn.forEach((e=>{nr.component(e.name,e.target)})),nr.mount("#app")},7351:function(e,t,n){"use strict";n.d(t,{Z:function(){return wl}});var r=n(2201),a=(n(7658),n(6252)),o=n(3577),i=n(9963),s=n(2262),l=n(5801),c=n(9917),u=n(8966);const d=e=>((0,a.dD)("data-v-24ec93e2"),e=e(),(0,a.Cn)(),e),m={id:"admin-app",class:"admin-card"},E=["onSubmit"],_={for:"admin_contact"},S=["value"],T=["disabled"],p={for:"max_users"},A=["disabled"],O={class:"user-limit-help"},I={class:"info-box"},R=d((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),g={for:"max_single_file_size"},U=["disabled"],z={for:"max_zip_file_size"},N=["disabled"],h={for:"gpx_limit_import"},w=["disabled"],v={key:1,class:"form-buttons"},C={class:"confirm",type:"submit"},f=["onClick"],D={key:2,class:"form-buttons"};var k=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=(0,s.BK)(t),d=(0,c.o)(),k=(0,r.tv)(),P=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),L=(0,a.Fl)((()=>d.getters[l.SY.GETTERS.ERROR_MESSAGES]));function M(e){Object.keys(P).map((t=>{["max_single_file_size","max_zip_file_size"].includes(t)?P[t]=(0,u.j)(e[t]):P[t]=e[t]}))}function b(){M(t.appConfig),d.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),k.push("/admin/application")}function y(){const e=Object.assign({},P);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,d.dispatch(l.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{t.appConfig&&M(t.appConfig)})),(e,t)=>{const r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",m,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,i.iM)(y,["prevent"])},[(0,a._)("label",_,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(n)||P.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":t[0]||(t[0]=e=>P.admin_contact=e),disabled:!(0,s.SU)(n)},null,8,T)),[[i.nr,P.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,S))]),(0,a._)("label",p,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[1]||(t[1]=e=>P.max_users=e),disabled:!(0,s.SU)(n)},null,8,A),[[i.nr,P.max_users]])]),(0,a._)("div",O,[(0,a._)("span",I,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",g,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=e=>P.max_single_file_size=e),disabled:!(0,s.SU)(n)},null,8,U),[[i.nr,P.max_single_file_size]])]),(0,a._)("label",z,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[3]||(t[3]=e=>P.max_zip_file_size=e),disabled:!(0,s.SU)(n)},null,8,N),[[i.nr,P.max_zip_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[4]||(t[4]=e=>P.gpx_limit_import=e),disabled:!(0,s.SU)(n)},null,8,w),[[i.nr,P.gpx_limit_import]])]),(0,s.SU)(L)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,s.SU)(L)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(n)?((0,a.wg)(),(0,a.iD)("div",v,[(0,a._)("button",C,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(b,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,f)])):((0,a.wg)(),(0,a.iD)("div",D,[(0,a._)("button",{class:"confirm",onClick:t[5]||(t[5]=(0,i.iM)((t=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:t[6]||(t[6]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,E)])),_:1})])}}}),P=n(3744);const L=(0,P.Z)(k,[["__scopeId","data-v-24ec93e2"]]);var M=L;const b={class:"stat-card"},y={class:"stat-content box"},G={class:"stat-icon"},F={class:"stat-details"},W={class:"stat-huge"},K={class:"stat"};var B=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const t=e,{icon:n,text:r,value:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",b,[(0,a._)("div",y,[(0,a._)("div",G,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(n)}`])},null,2)]),(0,a._)("div",F,[(0,a._)("div",W,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",K,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const Y=B;var x=Y;const $={id:"user-stats"};var Z=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const t=e,{appStatistics:n}=(0,s.BK)(t),r=(0,a.Fl)((()=>(0,u.Z)(n.value.uploads_dir_size,!1)));return(e,t)=>((0,a.wg)(),(0,a.iD)("div",$,[(0,a.Wm)(x,{icon:"users",value:(0,s.SU)(n).users,text:e.$t("admin.USER",(0,s.SU)(n).users)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"tags",value:(0,s.SU)(n).sports,text:e.$t("workouts.SPORT",(0,s.SU)(n).sports)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"calendar",value:(0,s.SU)(n).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(n).workouts)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const H=Z;var V=H,q=n(2531);const j=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),X={id:"admin-menu",class:"center-card"},J={class:"admin-menu description-list"},Q={class:"application-config-details"},ee=j((()=>(0,a._)("br",null,null,-1))),te={class:"registration-status"},ne={key:0,class:"email-sending-status"},re=j((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var ae=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const t=e,{appConfig:n,appStatistics:r}=(0,s.BK)(t);return(e,t)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(q.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(V,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",J,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",Q,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),ee,(0,a._)("span",te,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(n).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(n).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ne,[re,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const oe=(0,P.Z)(ae,[["__scopeId","data-v-0dd66f89"]]);var ie=oe,se=n(9150),le=n(631);const ce=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),ue={id:"admin-sports",class:"admin-card"},de={class:"responsive-table"},me=ce((()=>(0,a._)("th",null,"#",-1))),Ee={class:"text-left"},_e={class:"text-left sport-action"},Se=ce((()=>(0,a._)("th",null,null,-1))),Te={class:"text-center"},pe=ce((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),Ae={class:"cell-heading"},Oe={class:"sport-label"},Ie={class:"cell-heading"},Re={class:"text-center"},ge={class:"cell-heading"},Ue={class:"sport-action"},ze={class:"cell-heading"},Ne={class:"action-button"},he=["onClick"],we={key:0,class:"has-workouts"},ve=ce((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var Ce=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:t}=(0,se.QT)(),n=(0,c.o)(),r=(0,a.Fl)((()=>(0,le.xH)(n.getters[l.O8.GETTERS.SPORTS],t))),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(e,t){n.dispatch(l.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return(e,t)=>{const n=(0,a.up)("SportImage"),l=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ue,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",de,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[me,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ee,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",_e,(0,o.zw)(e.$t("admin.ACTION")),1),Se])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.id},[(0,a._)("td",Te,[pe,(0,a.Uk)(" "+(0,o.zw)(t.id),1)]),(0,a._)("td",null,[(0,a._)("span",Ae,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(n,{title:t.translatedLabel,"sport-label":t.label,color:t.color},null,8,["title","sport-label","color"])]),(0,a._)("td",Oe,[(0,a._)("span",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(t.translatedLabel),1)]),(0,a._)("td",Re,[(0,a._)("span",ge,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(t.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",Ue,[(0,a._)("span",ze,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",Ne,[(0,a._)("button",{class:(0,o.C_)({danger:t.is_active}),onClick:e=>d(t.id,!t.is_active)},(0,o.zw)(e.$t(`buttons.${t.is_active?"DIS":"EN"}ABLE`)),11,he),t.has_workouts?((0,a.wg)(),(0,a.iD)("span",we,[ve,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const fe=(0,P.Z)(Ce,[["__scopeId","data-v-6d62af67"]]);var De=fe,ke=n(8626),Pe=n(5020),Le=n(6595);const Me={class:"users-filters"},be={class:"search-username"},ye=["onKeyup","placeholder"];var Ge=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=(0,r.yj)(),l=(0,s.iH)(n.query.q?n.query.q:"");function c(){""!==l.value&&t("filterOnUsername",l)}function u(){l.value="",t("filterOnUsername",l.value)}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Me,[(0,a._)("div",be,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":t[0]||(t[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,ye),[[i.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const Fe=(0,P.Z)(Ge,[["__scopeId","data-v-627a8e91"]]);var We=Fe,Ke=n(2766),Be=n(6558);const Ye=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),xe={id:"admin-users",class:"admin-card"},$e={key:0,class:"no-users"},Ze={key:1,class:"responsive-table"},He=Ye((()=>(0,a._)("th",null,"#",-1))),Ve={class:"left-text"},qe={class:"left-text"},je={class:"left-text"},Xe={class:"cell-heading"},Je={class:"cell-heading"},Qe={class:"cell-heading"},et={class:"cell-heading"},tt={class:"text-center"},nt={class:"cell-heading"},rt={class:"text-center"},at={class:"cell-heading"},ot={class:"text-center"},it={class:"cell-heading"},st={class:"text-center"},lt={class:"cell-heading"},ct=["disabled","onClick"];var ut=(0,a.aZ)({__name:"AdminUsers",setup(e){const t=(0,c.o)(),n=(0,r.yj)(),u=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,Ke.pm)(n.query,d,m));const _=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES]));function A(e){t.dispatch(l.RT.ACTIONS.GET_USERS,e)}function O(e){R("q",e.value)}function I(e,n){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,admin:n})}function R(e,t){E[e]=t,"per_page"===e&&(E.page=1),u.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{t.dispatch(l.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>n.query),(e=>{E=(0,Ke.pm)(e,d,m,{query:E}),A(E)})),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",xe,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(We,{onFilterOnUsername:O}),(0,a.Wm)(ke.Z,{sort:(0,s.SU)(Ke.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:R},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",$e,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",Ze,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[He,(0,a._)("th",Ve,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",qe,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",je,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.username},[(0,a._)("td",null,[(0,a._)("span",Xe,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Le.Z,{user:t},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",Je,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(n,{to:`/admin/users/${t.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",Qe,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(t.email),1)]),(0,a._)("td",null,[(0,a._)("span",et,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(Be.p6)(t.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",tt,[(0,a._)("span",nt,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(t.nb_workouts),1)]),(0,a._)("td",rt,[(0,a._)("span",at,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",ot,[(0,a._)("span",it,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",st,[(0,a._)("span",lt,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:t.admin}),disabled:t.username===(0,s.SU)(_).username,onClick:e=>I(t.username,!t.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${t.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,ct)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Pe.Z,{key:0,path:"/admin/users",pagination:(0,s.SU)(T),query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,s.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const dt=(0,P.Z)(ut,[["__scopeId","data-v-dc12ff78"]]);var mt=dt,Et=n(2179);const _t={class:"profile-tabs custom-checkboxes-group"},St={class:"profile-tabs-checkboxes custom-checkboxes"},Tt=["id","name","checked","disabled","onInput"];var pt=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const t=e,{tabs:n,selectedTab:r,disabled:i}=(0,s.BK)(t);function l(e){switch(e){case"ACCOUNT":case"PICTURE":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${t.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(t.edition?"/edit":"")}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",_t,[(0,a._)("div",St,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(n),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:t},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:t,name:t,checked:(0,s.SU)(r).split("/")[0]===t,disabled:(0,s.SU)(i),onInput:n=>e.$router.push(l(t))},null,40,Tt),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${t}`)),1)])])))),128))])]))}});const At=pt;var Ot=At;const It={id:"user-profile"},Rt={class:"box"};var gt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,{user:n,tab:r}=(0,s.BK)(t),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,t)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",It,[(0,a.Wm)(Et.Z,{user:(0,s.SU)(n)},null,8,["user"]),(0,a._)("div",Rt,[(0,a.Wm)(Ot,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(n)},null,8,["user"])])])}}});const Ut=(0,P.Z)(gt,[["__scopeId","data-v-9729cba4"]]);var zt=Ut,Nt=n(1585),ht=n(6287);const wt={id:"user-preferences",class:"description-list"},vt={class:"profile-buttons"};var Ct=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>t.user.language?ht.zK[t.user.language]:ht.zK.en)),u=(0,a.Fl)((()=>t.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>t.user.timezone?t.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>t.user.date_format?t.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>t.user.display_ascent?"DISPLAYED":"HIDDEN"));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",wt,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(Be.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`user.PROFILE.${(0,s.SU)(u)}`)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",vt,[(0,a._)("button",{onClick:n[0]||(n[0]=e=>t.$router.push("/profile/edit/preferences"))},(0,o.zw)(t.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:n[1]||(n[1]=e=>t.$router.push("/"))},(0,o.zw)(t.$t("common.HOME")),1)])]))}});const ft=Ct;var Dt=ft;const kt={id:"user-profile-edition",class:"center-card"};var Pt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,n=(0,c.o)(),{user:r,tab:i}=(0,s.BK)(t),u=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS"],d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING]));return(e,t)=>{const n=(0,a.up)("router-view"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",kt,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,s.SU)(i)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Ot,{tabs:u,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(n,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const Lt=Pt;var Mt=Lt,bt=n(8403);const yt={id:"user-infos-edition"},Gt={class:"profile-form form-box"},Ft={key:1,class:"info-box success-message"},Wt=["onSubmit"],Kt={class:"form-items",for:"email"},Bt=["disabled"],Yt={class:"form-items",for:"password-field"},xt={class:"form-items",for:"new-password-field"},$t={class:"form-buttons"},Zt={class:"confirm",type:"submit"};var Ht=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const t=e,{user:n}=(0,s.BK)(t),r=(0,c.o)(),u=(0,s.qj)({email:"",password:"",new_password:""}),d=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.APP_CONFIG])),E=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.IS_SUCCESS])),_=(0,s.iH)(!1),S=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.ERROR_MESSAGES])),T=(0,s.iH)(!1),p=(0,s.iH)(!1);function A(){T.value=!0}function O(e){u.email=e.email}function I(e){u.password=e}function R(e){u.new_password=e}function g(){const e={email:u.email,password:u.password};u.new_password&&(e.new_password=u.new_password),_.value=u.email!==n.value.email,r.dispatch(l.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function U(e){p.value=e}function z(e){r.dispatch(l.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}return(0,a.bv)((()=>{t.user&&O(t.user)})),(0,a.Ah)((()=>{r.commit(l.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>E.value),(async e=>{e&&(I(""),R(""),O(n.value),T.value=!1)})),(0,a.YP)((()=>n.value.email),(async()=>{O(n.value)})),(e,t)=>{const r=(0,a.up)("Modal"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",yt,[p.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=e=>z((0,s.SU)(n).username)),onCancelAction:t[1]||(t[1]=e=>U(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Gt,[(0,s.SU)(S)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(S)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",Ft,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${_.value&&(0,s.SU)(m).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:T.value}),onSubmit:(0,i.iM)(g,["prevent"])},[(0,a._)("label",Kt,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=e=>u.email=e),disabled:(0,s.SU)(d),required:!0,onInvalid:A},null,40,Bt),[[i.nr,u.email]])]),(0,a._)("label",Yt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(bt.Z,{id:"password-field",disabled:(0,s.SU)(d),password:u.password,required:!0,onUpdatePassword:I,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("label",xt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(bt.Z,{id:"new-password-field",disabled:(0,s.SU)(d),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("div",$t,[(0,a._)("button",Zt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,i.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:t[4]||(t[4]=(0,i.iM)((e=>U(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],42,Wt)])])}}});const Vt=(0,P.Z)(Ht,[["__scopeId","data-v-37b8c4c8"]]);var qt=Vt,jt=n(4850);const Xt={id:"user-infos-edition"},Jt={class:"profile-form form-box"},Qt=["onSubmit"],en={class:"form-items",for:"registrationDate"},tn=["value"],nn={class:"form-items",for:"first_name"},rn=["disabled"],an={class:"form-items",for:"last_name"},on={class:"form-items",for:"birth_date"},sn=["disabled"],ln={class:"form-items",for:"location"},cn=["disabled"],un={class:"form-items"},dn={class:"form-buttons"},mn={class:"confirm",type:"submit"};var En=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),u=(0,a.Fl)((()=>t.user.created_at?(0,Be.p6)(t.user.created_at,t.user.timezone,t.user.date_format):"")),d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,jt.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function _(e){r.bio=e}function S(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{t.user&&E(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage"),l=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Xt,[(0,a._)("div",Jt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(S,["prevent"])},[(0,a._)("label",en,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(u),disabled:""},null,8,tn)]),(0,a._)("label",nn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":t[0]||(t[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,rn),[[i.nr,r.first_name]])]),(0,a._)("label",an,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":t[1]||(t[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",on,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[2]||(t[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,sn),[[i.nr,r.birth_date]])]),(0,a._)("label",ln,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":t[3]||(t[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,cn),[[i.nr,r.location]])]),(0,a._)("label",un,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(l,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",dn,[(0,a._)("button",mn,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,i.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Qt)])])}}});const _n=(0,P.Z)(En,[["__scopeId","data-v-5e5a4552"]]);var Sn=_n;const Tn=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),pn={id:"user-picture-edition"},An={class:"user-picture-form"},On=["onSubmit"],In={class:"picture-help"},Rn={class:"info-box"},gn=Tn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Un={class:"picture-buttons"},zn=["disabled"];var Nn=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,s.BK)(t),d=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,u.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){n.dispatch(l.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&n.dispatch(l.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",pn,[(0,a._)("div",An,[(0,s.SU)(d)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(d)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Le.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",In,[(0,a._)("span",Rn,[gn,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Un,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,zn),(0,s.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:S},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,On)])])}}});const hn=(0,P.Z)(Nn,[["__scopeId","data-v-687e9604"]]);var wn=hn;const vn=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],Cn={id:"tz-dropdown"},fn=["value","disabled","onKeydown"],Dn=["onClick","onMouseover","autofocus"];var kn=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:r,disabled:l}=(0,s.BK)(n),c=(0,s.iH)(n.input),u=(0,s.iH)(!1),d=(0,s.iH)(null),m=(0,s.iH)(0);function E(e){return e.toLowerCase().match(c.value.toLowerCase())}function _(e){m.value=e}function S(e){c.value=e,u.value=!1,t("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&S(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>n.input),(e=>{c.value=e})),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Cn,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[t[0]||(t[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,fn),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(vn).filter((e=>E(e))),((e,t)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:t===m.value}]),onClick:t=>S(e),onMouseover:e=>_(t),autofocus:t===m.value},(0,o.zw)(e),43,Dn)))),128))],512)):(0,a.kq)("",!0)]))}});const Pn=(0,P.Z)(kn,[["__scopeId","data-v-47ea2903"]]);var Ln=Pn;const Mn={id:"user-preferences-edition"},bn={class:"profile-form form-box"},yn=["onSubmit"],Gn={class:"form-items"},Fn=["disabled"],Wn=["value"],Kn={class:"form-items"},Bn={class:"form-items"},Yn=["disabled"],xn=["value"],$n={class:"form-items form-checkboxes"},Zn={class:"checkboxes-label"},Hn={class:"checkboxes"},Vn=["id","name","checked","disabled","onInput"],qn={class:"checkbox-label"},jn={class:"form-items form-checkboxes"},Xn={class:"checkboxes-label"},Jn={class:"checkboxes"},Qn=["id","name","checked","disabled","onInput"],er={class:"checkbox-label"},tr={class:"form-items form-checkboxes"},nr={class:"checkboxes-label"},rr={class:"checkboxes"},ar=["id","name","checked","disabled","onInput"],or={class:"checkbox-label"},ir={class:"form-buttons"},sr={class:"confirm",type:"submit"};var lr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),u=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],E=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,Be.d2)((new Date).toUTCString(),t.user.timezone,r.language)));function T(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.date_format=e.date_format?e.date_format:"dd/MM/yyyy",r.weekm=!!e.weekm&&e.weekm}function p(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function I(e){r.imperial_units=e}function R(e){r.weekm=e}return(0,a.bv)((()=>{t.user&&T(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("div",bn,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(_)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("label",Gn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=e=>r.language=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(ht.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,Wn)))),128))],8,Fn),[[i.bM,r.language]])]),(0,a._)("label",Kn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(Ln,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",Bn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":t[1]||(t[1]=e=>r.date_format=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,xn)))),128))],8,Yn),[[i.bM,r.date_format]])]),(0,a._)("div",$n,[(0,a._)("span",Zn,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",Hn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(u,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>R(t.value)},null,40,Vn),(0,a._)("span",qn,(0,o.zw)(e.$t(`user.PROFILE.${t.label}`)),1)]))),64))])]),(0,a._)("div",jn,[(0,a._)("span",Xn,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Jn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>I(t.value)},null,40,Qn),(0,a._)("span",er,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${t.label}`)),1)]))),64))])]),(0,a._)("div",tr,[(0,a._)("span",nr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",rr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(t.value)},null,40,ar),(0,a._)("span",or,(0,o.zw)(e.$t(`common.${t.label}`)),1)]))),64))])]),(0,a._)("div",ir,[(0,a._)("button",sr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[2]||(t[2]=(0,i.iM)((t=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,yn)])])}}});const cr=(0,P.Z)(lr,[["__scopeId","data-v-3b8a9a12"]]);var ur=cr;const dr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],mr=["application:write"],Er={id:"new-oauth2-app"},_r={id:"new-oauth2-title"},Sr={id:"apps-form"},Tr=["onSubmit"],pr={class:"form-items"},Ar={class:"form-item"},Or={for:"app-name"},Ir={class:"form-item"},Rr={for:"app-description"},gr={class:"form-item"},Ur={for:"app-url"},zr={class:"form-item"},Nr={for:"app-redirect-uri"},hr={class:"form-item-scope"},wr={class:"form-item-scope-label"},vr={class:"scope-label"},Cr=["name","checked","onChange"],fr=["innerHTML"],Dr={class:"form-buttons"},kr=["disabled"];var Pr=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),u=(0,s.qj)([]),d=(0,a.Fl)((()=>S(t.authUser,mr,dr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:u.sort().join(" ")};n.dispatch(l.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const t=u.indexOf(e);t>-1?u.splice(t,1):u.push(e)}function S(e,t,n){const r=[...n];return e.admin&&r.push(...t),r.sort()}return(e,t)=>{const n=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Er,[(0,a._)("h1",_r,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Sr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",pr,[(0,a._)("div",Ar,[(0,a._)("label",Or,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":t[0]||(t[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",Ir,[(0,a._)("label",Rr,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(n,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",gr,[(0,a._)("label",Ur,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":t[1]||(t[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",zr,[(0,a._)("label",Nr,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":t[2]||(t[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",hr,[(0,a._)("div",wr,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:t},[(0,a._)("label",vr,[(0,a._)("input",{type:"checkbox",name:t,checked:u.includes(t),onChange:e=>_(t)},null,40,Cr),(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,fr)])))),128))])]),(0,a._)("div",Dr,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===u.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,kr),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Tr)])])}}});const Lr=(0,P.Z)(Pr,[["__scopeId","data-v-0657ee77"]]);var Mr=Lr;const br={id:"authorize-oauth2-app"},yr={key:0},Gr={id:"authorize-oauth2-title"},Fr={class:"oauth2-access description-list"},Wr={class:"client-scope"},Kr=["innerHTML"],Br={class:"authorize-oauth2-buttons"},Yr={key:1},xr={class:"no-app"};var $r=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const t=(0,r.yj)(),n=(0,c.o)(),i=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENT])),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(){t.query.client_id&&"string"===typeof t.query.client_id&&n.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function m(){n.dispatch(l.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",br,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",yr,[(0,a._)("h1",Gr,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).name),1)])),_:1},8,["to"])])),_:1})]),(0,s.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",Fr,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(i).scope.split(" "),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[(0,a._)("dt",Wr,[(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,Kr)],64)))),128))]),(0,a._)("div",Br,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",Yr,[(0,a._)("p",xr,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Zr=(0,P.Z)($r,[["__scopeId","data-v-3b2fe9ed"]]);var Hr=Zr;const Vr={id:"oauth2-apps"};var qr=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,s.BK)(t);return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.Km.MUTATIONS.SET_CLIENTS,[])})),(e,t)=>{const n=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",Vr,[(0,a.Wm)(n,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const jr=qr;var Xr=jr;const Jr={id:"oauth2-app",class:"description-list"},Qr={key:1},ea={key:0,class:"info-box success-message"},ta=["title"],na={key:0},ra={key:1,class:"app-secret"},aa=["title"],oa={class:"client-scopes"},ia={class:"app-buttons"},sa={key:2},la={class:"no-app"};var ca=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,r.yj)(),i=(0,c.o)(),{afterCreation:u,authUser:d}=(0,s.BK)(t),m=(0,a.Fl)((()=>i.getters[l.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[l.Km.GETTERS.REVOCATION_SUCCESSFUL])),_=(0,s.iH)(!1),S=(0,s.iH)(null),T=(0,s.iH)(!1),p=(0,s.iH)(!1),A=(0,s.iH)(!1);function O(){!u.value&&n.params.id&&"string"===typeof n.params.id&&i.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_ID,+n.params.id)}function I(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",R(!0)}function R(e){_.value=e,e||(S.value=null)}function g(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(l.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(l.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function U(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function z(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{i.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(l.Km.MUTATIONS.EMPTY_CLIENT),i.commit(l.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&R(!1)})),(e,t)=>{const n=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",Jr,[_.value?((0,a.wg)(),(0,a.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:t[0]||(t[0]=e=>g((0,s.SU)(m).id)),onCancelAction:t[1]||(t[1]=e=>R(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,s.SU)(m)&&(0,s.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",Qr,[(0,s.SU)(u)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ea,(0,o.zw)(e.$t((0,s.SU)(u)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_id)+" ",1),(0,s.SU)(u)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:U},null,10,ta)):(0,a.kq)("",!0)]),(0,s.SU)(u)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",na,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(u)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",ra,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:z},null,10,aa)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(Be.p6)((0,s.SU)(m).issued_at,(0,s.SU)(d).timezone,(0,s.SU)(d).date_format)),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,s.SU)(m).client_description})},(0,o.zw)((0,s.SU)(m).client_description?(0,s.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).redirect_uris.length>0?(0,s.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",oa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",ia,[(0,a._)("button",{class:"danger",onClick:t[2]||(t[2]=e=>I(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:t[3]||(t[3]=e=>I(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:t[4]||(t[4]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",sa,[(0,a._)("p",la,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const ua=(0,P.Z)(ca,[["__scopeId","data-v-3a844fa2"]]);var da=ua;const ma={id:"oauth2-apps-list"},Ea={class:"apps-list"},_a={key:0},Sa={class:"app-issued-at"},Ta={key:1,class:"no-apps"},pa={class:"app-list-buttons"};var Aa=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),i=(0,r.yj)(),{authUser:u}=(0,s.BK)(t),d=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const t={};return e.page&&(t.page=(0,Ke.z_)(e.page,Ke.Hf)),t}function S(e){n.dispatch(l.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,t)=>{const n=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",ma,[(0,a._)("p",Ea,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",_a,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("li",{key:t.client_id},[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:t.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.name),1)])),_:2},1032,["to"]),(0,a._)("span",Sa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(Be.p6)(t.issued_at,(0,s.SU)(u).timezone,(0,s.SU)(u).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ta,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Pe.Z,{key:2,pagination:(0,s.SU)(m),path:"/profile/apps",query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",pa,[(0,a._)("button",{onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const Oa=(0,P.Z)(Aa,[["__scopeId","data-v-efa45ea0"]]);var Ia=Oa;const Ra={id:"user-sport-preferences"},ga={key:0,class:"responsive-table"},Ua={class:"mobile-display"},za={key:0,class:"profile-buttons mobile-display"},Na={key:1,class:"profile-buttons"},ha={class:"text-left"},wa={key:0},va={class:"cell-heading"},Ca=["value"],fa={class:"cell-heading"},Da={key:0,class:"disabled-message"},ka={key:1,class:"fa fa-refresh fa-spin fa-fw"},Pa={class:"cell-heading"},La={class:"cell-heading"},Ma=["checked"],ba={class:"cell-heading"},ya=["value"],Ga={key:1},Fa={key:0,class:"action-buttons"},Wa={class:"cell-heading"},Ka=["onClick"],Ba={key:1,class:"edition-buttons"},Ya=["disabled"],xa=["disabled","onClick"],$a=["disabled"],Za={key:0,class:"profile-buttons"},Ha={key:1,class:"profile-buttons"};var Va=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const t=e,n=(0,c.o)(),{t:r}=(0,se.QT)(),{isEdition:u,user:d}=(0,s.BK)(t),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>n.getters[l.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,le.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),A=(0,s.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:E?E[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):z()}function I(e){return A.sport_id===e}function R(e){A.color=e.target.value}function g(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function U(e){A.is_active=e.target.checked}function z(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function N(e){e.preventDefault(),n.dispatch(l.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,t){e.preventDefault(),n.dispatch(l.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,t)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||z()})),(e,t)=>{const n=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Ra,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",ga,[(0,a._)("div",Ua,[(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Na,[(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[2]||(t[2]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",ha,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("th",wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(i=>((0,a.wg)(),(0,a.iD)("tr",{key:i.id},[(0,a._)("td",null,[(0,a._)("span",va,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),I(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:R},null,40,Ca)):((0,a.wg)(),(0,a.j4)(n,{key:1,title:i.translatedLabel,"sport-label":i.label,color:i.color?i.color:(0,s.SU)(E)[i.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!i.is_active}])},[(0,a._)("span",fa,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(i.translatedLabel)+" ",1),i.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",Da," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&I(i.id)?((0,a.wg)(),(0,a.iD)("i",ka)):(0,a.kq)("",!0),(0,s.SU)(p)&&A.sport_id===i.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",Pa,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,s.SU)(d).sports_list.includes(i.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",La,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),I(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:U},null,40,Ma)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(i.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",ba,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),I(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:g},null,40,ya)):((0,a.wg)(),(0,a.iD)("span",Ga,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("td",Fa,[(0,a._)("span",Wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(i)},(0,o.zw)(e.$t("buttons.EDIT")),9,Ka)):(0,a.kq)("",!0),I(i.id)?((0,a.wg)(),(0,a.iD)("div",Ba,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:N},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Ya),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,xa),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:t[3]||(t[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,$a)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("div",Za,[(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,i.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ha,[(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[6]||(t[6]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const qa=(0,P.Z)(Va,[["__scopeId","data-v-74e52489"]]);var ja=qa,Xa=n(2894);const Ja=e=>((0,a.dD)("data-v-74257266"),e=e(),(0,a.Cn)(),e),Qa={class:"about-text"},eo=["innerHTML"],to=Ja((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),no={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},ro=Ja((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),ao={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},oo=Ja((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),io=Ja((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),so={key:0},lo=Ja((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),co=["href"];var uo=(0,a.aZ)({__name:"About",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG]));return(e,t)=>{const r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Qa,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,eo),(0,a._)("p",null,[to,(0,a._)("a",no,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[ro,(0,a._)("a",ao,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[oo,(0,a.Wm)(r,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[io])),_:1})]),(0,s.SU)(n).admin_contact?((0,a.wg)(),(0,a.iD)("div",so,[lo,(0,a._)("a",{href:`mailto:${(0,s.SU)(n).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,co)])):(0,a.kq)("",!0)])])}}});const mo=(0,P.Z)(uo,[["__scopeId","data-v-74257266"]]);var Eo=mo;const _o={id:"bike"},So=["src"];function To(e,t){return(0,a.wg)(),(0,a.iD)("div",_o,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,So)])}const po={},Ao=(0,P.Z)(po,[["render",To],["__scopeId","data-v-795f7f5f"]]);var Oo=Ao;const Io={id:"about",class:"view"},Ro={class:"container"},go={class:"container-sub"},Uo={class:"container-sub about-details"};var zo=(0,a.aZ)({__name:"AboutView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Io,[(0,a._)("div",Ro,[(0,a._)("div",go,[(0,a.Wm)(Oo)]),(0,a._)("div",Uo,[(0,a.Wm)(Eo)])])]))}});const No=(0,P.Z)(zo,[["__scopeId","data-v-bffb50d0"]]);var ho=No,wo=n(1818),vo=n(2056);const Co=e=>((0,a.dD)("data-v-96abcc38"),e=e(),(0,a.Cn)(),e),fo={class:"timeline-workout"},Do={class:"box"},ko={class:"workout-user-date"},Po={class:"workout-user"},Lo=["title"],Mo={key:0},bo={key:1,class:"no-map"},yo={class:"img"},Go={class:"data"},Fo=Co((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),Wo={key:0},Ko={class:"data"},Bo=Co((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Yo={key:0,class:"data elevation"},xo=["alt"],$o={class:"data-values"},Zo={key:1,class:"data altitude"},Ho=Co((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Vo={class:"data-values"};var qo=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const t=e,n=(0,c.o)(),{user:r,workout:i,sport:u,useImperialUnits:d}=(0,s.BK)(t),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));return(e,t)=>{const n=(0,a.up)("router-link"),l=(0,a.up)("SportImage"),c=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("div",Do,[(0,a._)("div",ko,[(0,a._)("div",Po,[(0,a.Wm)(Le.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,s.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,s.SU)(i).workout_date&&(0,s.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,s.SU)(Be.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(wo.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Lo)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:t[0]||(t[0]=t=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("div",Mo,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(vo.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",bo,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,s.SU)(i)&&!(0,s.SU)(i).with_gpx}]),onClick:t[1]||(t[1]=t=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",yo,[(0,s.SU)(u).label?((0,a.wg)(),(0,a.j4)(l,{key:0,"sport-label":(0,s.SU)(u).label,color:(0,s.SU)(u).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Go,[Fo,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",Wo,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ko,[Bo,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).distance,digits:3,unitFrom:"km",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Yo,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,xo),(0,a._)("div",$o,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/ "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,s.SU)(i).max_alt,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Zo,[Ho,(0,a._)("div",Vo,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/- "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,s.SU)(i).descent,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const jo=(0,P.Z)(qo,[["__scopeId","data-v-96abcc38"]]);var Xo=jo,Jo=n(5630),Qo=n(3768);const ei={id:"timeline"},ti={class:"section-title"},ni={key:0},ri={key:1},ai={key:1,class:"more-workouts"};var oi=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:i}=(0,s.BK)(t),u=(0,s.iH)(1),d=5,m=t.user.nb_workouts>=d?d:t.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){n.dispatch(l.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}function T(){u.value+=1,n.dispatch(l.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ei,[(0,a._)("div",ti,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,s.SU)(i).nb_workouts>0&&0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",ni,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,s.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Xo,{user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",ri,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Xo,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((t=>t.id===e.sport_id))[0]:null,user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.j4)(Jo.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",ai,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const ii=(0,P.Z)(oi,[["__scopeId","data-v-35567bf2"]]);var si=ii,li=n(1640),ci=n(4559),ui=n(7349),di=n(1743),mi=n(9160),Ei=n(1085);const _i=["title"];var Si=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const t=e,{displayHARecord:n,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(t);return(e,t)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:t[0]||(t[0]=t=>e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,s.SU)(o),title:(0,s.SU)(r).title,color:(0,s.SU)(i)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,s.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,s.SU)(r).records.filter((e=>!!(0,s.SU)(n)||"HA"!==e.record_type)).map((t=>` ${e.$t(`workouts.RECORD_${t.record_type}`)}`))},null,8,_i)):(0,a.kq)("",!0)])])}}});const Ti=Si;var pi=Ti;const Ai={class:"donut-chart"},Oi={height:"34",width:"34",viewBox:"0 0 34 34"},Ii=["stroke","stroke-dashoffset","transform"];var Ri=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const t=e,{colors:n,datasets:r}=(0,s.BK)(t);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,t){return t-e*t}function m(e,t){const n=`rotate(${o}, ${i}, ${l})`;return o=360*t+o,n}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ai,[((0,a.wg)(),(0,a.iD)("svg",Oi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,t)=>((0,a.wg)(),(0,a.iD)("g",{key:t},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(n)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(t,e[1].percentage)},null,8,Ii)])))),128))]))]))}});const gi=Ri;var Ui=gi;const zi={class:"calendar-workouts-chart"},Ni={class:"workouts-count"},hi={key:0,class:"workouts-pane"},wi={class:"more-workouts"};var vi=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const t=e,{colors:n,datasets:r,sports:i,workouts:l}=(0,s.BK)(t),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,t)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",zi,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",Ni,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(Ui,{datasets:(0,s.SU)(r),colors:(0,s.SU)(n)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",hi,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",wi,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(l),((e,t)=>((0,a.wg)(),(0,a.j4)(pi,{key:t,workout:e,sportLabel:(0,s.SU)(le.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(le.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ci=(0,P.Z)(vi,[["__scopeId","data-v-52d4310a"]]);var fi=Ci;const Di={class:"calendar-workouts"},ki={class:"desktop-display"},Pi={key:0,class:"workouts-display"},Li={key:1,class:"donut-display"},Mi={class:"mobile-display"},bi={key:0,class:"donut-display"};var yi=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const t=e,{displayHARecord:n,workouts:r,sports:o}=(0,s.BK)(t),i=(0,a.Fl)((()=>(0,Qo.BN)(t.workouts))),l=(0,a.Fl)((()=>(0,le.Yx)(t.sports))),c=6;return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Di,[(0,a._)("div",ki,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",Pi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,t)=>((0,a.wg)(),(0,a.j4)(pi,{key:t,displayHARecord:(0,s.SU)(n),workout:e,sportLabel:(0,s.SU)(le.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(le.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Li,[(0,a.Wm)(fi,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",Mi,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bi,[(0,a.Wm)(fi,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Gi=yi;var Fi=Gi;const Wi={class:"calendar-cells"},Ki={class:"calendar-cell-day"};var Bi=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const t=e,{currentDay:n,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(t),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const t=[];for(let n=0;n<7;n++)t.push(e),e=(0,ui.Z)(e,1);E.value.push(t)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,t){return t?t.filter((t=>(0,di.Z)((0,Be.eB)(t.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>t.currentDay),(()=>_())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Wi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:t},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(mi.Z)(e,(0,s.SU)(n)),"week-end":S(t),today:(0,s.SU)(Ei.Z)(e)}]),key:t},[(0,a.Wm)(Fi,{workouts:T(e,(0,s.SU)(m)),sports:(0,s.SU)(l),displayHARecord:(0,s.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Ki,(0,o.zw)((0,s.SU)(jt.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Yi=Bi;var xi=Yi;const $i={class:"calendar-days"};var Zi=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const t=e,n=[];for(let r=0;r<7;r++)n.push((0,ui.Z)(t.startDate,r));return(t,r)=>((0,a.wg)(),(0,a.iD)("div",$i,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(n,((t,n)=>(0,a._)("div",{class:"calendar-day",key:n},(0,o.zw)((0,s.SU)(jt.Z)(t,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Hi=Zi;var Vi=Hi;const qi={class:"calendar-header"},ji=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Xi=[ji],Ji={class:"calendar-month"},Qi=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),es=[Qi];var ts=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:r,localeOptions:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",qi,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:n[0]||(n[0]=e=>t("displayPreviousMonth"))},Xi),(0,a._)("div",Ji,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(jt.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:n[1]||(n[1]=e=>t("displayNextMonth"))},es)]))}});const ns=ts;var rs=ns;const as={id:"user-calendar"},os={class:"calendar-card box"};var is=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:o}=(0,s.BK)(t),i="yyyy-MM-dd",u=(0,s.iH)(new Date),d=(0,s.iH)((0,Be.yx)(u.value,t.user.weekm)),m=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));function _(){d.value=(0,Be.yx)(u.value,t.user.weekm);const e={from:(0,jt.Z)(d.value.start,i),to:(0,jt.Z)(d.value.end,i),page:1,per_page:100,...Qo.eR};n.dispatch(l.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){u.value=(0,li.Z)(u.value,1),_()}function T(){u.value=(0,ci.Z)(u.value,1),_()}return(0,a.wF)((()=>_())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",as,[(0,a._)("div",os,[(0,a.Wm)(rs,{day:u.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(Vi,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(xi,{currentDay:u.value,displayHARecord:(0,s.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,s.SU)(r),"start-date":d.value.start,timezone:(0,s.SU)(o).timezone,workouts:(0,s.SU)(m),weekStartingMonday:(0,s.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const ss=is;var ls=ss,cs=n(3703),us=n(4135),ds=n(436);const ms={class:"user-month-stats"};var Es=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const t=e,{sports:n,user:r}=(0,s.BK)(t),i=new Date,l={duration:"week",start:(0,cs.Z)(i),end:(0,us.Z)(i)},c=t.sports.map((e=>e.id));return(e,t)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ms,[(0,a.Wm)(i,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(ds.Z,{sports:(0,s.SU)(n),user:(0,s.SU)(r),"chart-params":l,"displayed-sport-ids":(0,s.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const _s=(0,P.Z)(Es,[["__scopeId","data-v-1bcddc12"]]);var Ss=_s,Ts=n(2540),ps=n(3649);const{locale:As}=Ts.Z.global,Os=(e,t,n,r)=>{const a="km",o=n?ps.Dl[a].defaultTarget:a,i="m",s=n?ps.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,ps.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,ps.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,ps.sC)(+e.value,i,s,2)} ${s}`;break;case"LD":l=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,Be.p6)(e.workout_date,t,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},Is=(e,t)=>{const n=e.label.toLowerCase(),r=t.label.toLowerCase();return n>r?1:n(o=(0,Be.mh)(o,As.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=t.find((e=>e.id===a.sport_id));return i&&i.label&&(void 0===e[i.translatedLabel]&&(e[i.translatedLabel]={label:i.label,color:i.color,records:[]}),e[i.translatedLabel].records.push(Os(a,n,r,o))),e}),{})),gs={class:"records-card"},Us={class:"record-type"},zs={class:"record-value"},Ns={class:"record-date"};var hs=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const t=e,{records:n,sportTranslatedLabel:r}=(0,s.BK)(t),{t:i}=(0,se.QT)();function l(e){const t=[];return e.map((e=>{t.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),t.sort(Is)}return(e,t)=>{const i=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",gs,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(n).label,color:(0,s.SU)(n).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,s.SU)(n).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",Us,(0,o.zw)(e.label),1),(0,a._)("span",zs,(0,o.zw)(e.value),1),(0,a._)("span",Ns,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const ws=(0,P.Z)(hs,[["__scopeId","data-v-8d17c606"]]);var vs=ws;const Cs=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),fs={class:"user-records-section"},Ds={class:"section-title"},ks=Cs((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),Ps={class:"user-records"},Ls={key:0,class:"no-records"};var Ms=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,{t:n}=(0,se.QT)(),r=(0,a.Fl)((()=>Rs(t.user.records,(0,le.xH)(t.sports,n),t.user.timezone,t.user.imperial_units,t.user.display_ascent,t.user.date_format)));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",fs,[(0,a._)("div",Ds,[ks,(0,a.Uk)(" "+(0,o.zw)(t.$t("workouts.RECORD",2)),1)]),(0,a._)("div",Ps,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Ls,(0,o.zw)(t.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,s.SU)(r)).sort(),(t=>((0,a.wg)(),(0,a.j4)(vs,{sportTranslatedLabel:t,records:(0,s.SU)(r)[t],key:t,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const bs=(0,P.Z)(Ms,[["__scopeId","data-v-f0c85cb8"]]);var ys=bs;const Gs={id:"user-stats"};var Fs=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,{t:n}=(0,se.QT)(),{user:r}=(0,s.BK)(t),o=(0,a.Fl)((()=>t.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?ps.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,ps.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?ps.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,ps.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const t=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?n("common.DAY",2):n("common.DAY",1)}`:`0 ${n("common.DAY",2)},`,duration:`${t.split(":")[0]}h ${t.split(":")[1]}min`}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Gs,[(0,a.Wm)(x,{icon:"calendar",value:(0,s.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"road",value:(0,s.SU)(u),text:"mi"===(0,s.SU)(c)?"miles":(0,s.SU)(c)},null,8,["value","text"]),(0,s.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(x,{key:0,icon:"location-arrow",value:(0,s.SU)(E),text:"ft"===(0,s.SU)(m)?"feet":(0,s.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(x,{icon:"clock-o",value:(0,s.SU)(i).days,text:(0,s.SU)(i).duration},null,8,["value","text"]),(0,s.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(x,{key:1,icon:"tags",value:(0,s.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,s.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const Ws=Fs;var Ks=Ws;const Bs=e=>((0,a.dD)("data-v-4c0893c1"),e=e(),(0,a.Cn)(),e),Ys={key:0,id:"dashboard",class:"view"},xs={class:"container mobile-menu"},$s={class:"box"},Zs=Bs((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Hs=[Zs],Vs=Bs((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),qs=[Vs],js=Bs((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),Xs=[js],Js=Bs((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Qs=[Js],el={class:"container"},tl={class:"container dashboard-container"},nl={class:"left-container dashboard-sub-container"},rl={class:"right-container dashboard-sub-container"},al=Bs((()=>(0,a._)("div",{id:"bottom"},null,-1))),ol={key:1,class:"app-loading"};var il=(0,a.aZ)({__name:"Dashboard",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>t.getters[l.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function u(e){i.value=e}return(0,a.wF)((()=>t.dispatch(l.YN.ACTIONS.GET_USER_PROFILE))),(e,t)=>{const l=(0,a.up)("Loader");return(0,s.SU)(n).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Ys,[(0,a._)("div",xs,[(0,a._)("div",$s,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:t[0]||(t[0]=e=>u("calendar"))},Hs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:t[1]||(t[1]=e=>u("chart"))},qs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:t[2]||(t[2]=e=>u("timeline"))},Xs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:t[3]||(t[3]=e=>u("records"))},Qs,2)])]),(0,a._)("div",el,[(0,a.Wm)(Ks,{user:(0,s.SU)(n)},null,8,["user"])]),(0,a._)("div",tl,[(0,a._)("div",nl,[(0,a.Wm)(Ss,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(ys,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",rl,[(0,a.Wm)(ls,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(si,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),al])):((0,a.wg)(),(0,a.iD)("div",ol,[(0,a.Wm)(l)]))}}});const sl=(0,P.Z)(il,[["__scopeId","data-v-4c0893c1"]]);var ll=sl,cl=n(8273);const ul={class:"not-found view"};var dl=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ul,[(0,a.Wm)(cl.Z)]))}});const ml=dl;var El=ml,_l=n(2411);const Sl={id:"loginOrRegister",class:"view"},Tl={class:"container"},pl={class:"container-sub"},Al={class:"container-sub"};var Ol=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const t=e,{action:n}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Sl,[(0,a._)("div",Tl,[(0,a._)("div",pl,[(0,a.Wm)(Oo)]),(0,a._)("div",Al,[(0,a.Wm)(_l.Z,{action:(0,s.SU)(n)},null,8,["action"])])])]))}});const Il=(0,P.Z)(Ol,[["__scopeId","data-v-58043acb"]]);var Rl=Il;const gl=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Ul=[{path:"/",name:"Dashboard",component:ll},{path:"/login",name:"Login",component:Rl,props:{action:"login"}},{path:"/register",name:"Register",component:Rl,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>n.e(845).then(n.bind(n,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>n.e(845).then(n.bind(n,8160))},{path:"/profile",name:"Profile",component:()=>n.e(845).then(n.bind(n,1133)),children:[{path:"",name:"UserProfile",component:zt,props:e=>({tab:gl(e.path)}),children:[{path:"",name:"UserInfos",component:Nt.Z},{path:"preferences",name:"UserPreferences",component:Dt},{path:"sports",name:"UserSportPreferences",component:ja,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:Xr,children:[{path:"",name:"UserAppsList",component:Ia},{path:":id",name:"UserApp",component:da},{path:":id/created",name:"CreatedUserApp",component:da,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Mr},{path:"authorize",name:"AuthorizeUserApp",component:Hr}]}]},{path:"edit",name:"UserProfileEdition",component:Mt,props:e=>({tab:gl(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Sn},{path:"account",name:"UserAccountEdition",component:qt},{path:"picture",name:"UserPictureEdition",component:wn},{path:"preferences",name:"UserPreferencesEdition",component:ur},{path:"sports",name:"UserSportPreferencesEdition",component:ja,props:{isEdition:!0}}]}]},{path:"/statistics",name:"Statistics",component:()=>n.e(193).then(n.bind(n,7885))},{path:"/users/:username",name:"User",component:()=>n.e(845).then(n.bind(n,9453))},{path:"/workouts",name:"Workouts",component:()=>n.e(401).then(n.bind(n,3372))},{path:"/workouts/:workoutId",name:"Workout",component:()=>n.e(401).then(n.bind(n,3847)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>n.e(401).then(n.bind(n,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>n.e(401).then(n.bind(n,3847)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>n.e(401).then(n.bind(n,4189))},{path:"/admin",name:"Administration",component:()=>n.e(328).then(n.bind(n,6e3)),children:[{path:"",name:"AdministrationMenu",component:ie},{path:"application",name:"ApplicationAdministration",component:M},{path:"application/edit",name:"ApplicationAdministrationEdition",component:M,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:De},{path:"users/:username",name:"UserFromAdmin",component:()=>n.e(845).then(n.bind(n,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:mt}]},{path:"/about",name:"About",component:ho},{path:"/:pathMatch(.*)*",name:"not-found",component:El}],zl=(0,r.p7)({history:(0,r.PO)("/"),routes:Ul}),Nl=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],hl=["/email-update","/about"];zl.beforeEach(((e,t,n)=>{Xa.Z.dispatch(l.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(hl.includes(e.path))return n();if(Xa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]&&Nl.includes(e.path))return n("/");if(Xa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]||Nl.includes(e.path))n();else{const t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((e=>{console.error(e),n()}))}));var wl=zl},5801:function(e,t,n){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,I;n.d(t,{YN:function(){return N},Km:function(){return h},SY:function(){return g},O8:function(){return U},gu:function(){return z},RT:function(){return w},aX:function(){return v}}),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(i||(i={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(s||(s={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(E||(E={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(_||(_={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(S||(S={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(I||(I={}));var R=n(52);const g={ACTIONS:c,GETTERS:u,MUTATIONS:d},U={ACTIONS:m,GETTERS:E,MUTATIONS:_},z={ACTIONS:S,GETTERS:T,MUTATIONS:p},N={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},w={ACTIONS:A,GETTERS:O,MUTATIONS:I},v={ACTIONS:R.tW,GETTERS:R.JP,MUTATIONS:R.CW}},2894:function(e,t,n){"use strict";n.d(t,{Z:function(){return de}});var r=n(3907),a=(n(7658),n(5167)),o=n(594),i=n(8566),s=n(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,i.a)(e);return i.j.set(n,t),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=n(7351),d=n(5801);const m=(e,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${t.username}`).then((n=>{204===n.status?t.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},E={[d.RT.ACTIONS.EMPTY_USER](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USER,{})},[d.RT.ACTIONS.EMPTY_USERS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[d.RT.ACTIONS.GET_USER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${t}`).then((t=>{"success"===t.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0]):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};void 0!==t.admin&&(n.admin=t.admin),t.resetPassword&&(n.reset_password=t.resetPassword),t.activate&&(n.activate=t.activate),void 0!==t.new_email&&(n.new_email=t.new_email),a.Z.patch(`users/${t.username}`,n).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data.users[0]),(t.resetPassword||t.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0])):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,t){m(e,{username:t.username,fromAdmin:!0})}},_=e=>{localStorage.removeItem("authToken"),e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),u.Z.push("/login")},S={[d.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&_(e)},[d.YN.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:t.token}).then((t=>{if("success"===t.data.status){const n=t.data.auth_token;window.localStorage.setItem("authToken",n),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,n),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:t.token}).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile/edit/account"))),u.Z.push("/profile/edit/account")):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((t=>{"canceled"!==t.message&&((0,s.S)(e,t),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${t.actionType}`,t.formData).then((n=>{if("success"===n.data.status)if("login"===t.actionType){const r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((t=>{"success"===t.data.status?_(e):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${t}`).then((t=>{204===t.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",t).then((t=>{"success"===t.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),a.Z.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{"success"===t.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,t){m(e,t)},[d.YN.ACTIONS.DELETE_PICTURE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((t=>{204===t.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",t).then((t=>{"success"===t.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",t).then((t=>{"success"===t.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",t).then((t=>{"success"===t.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[d.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[d.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[d.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[d.YN.GETTERS.USER_LOADING]:e=>e.loading},p={[d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[d.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1},O={state:A,actions:S,getters:T,mutations:p};var I=O;const R=(e,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(t).then((t=>{"success"===t.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,t.data.data.client):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},g={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),a.Z.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then((t=>{200==t.status&&t.data.redirect_url?window.location.href=t.data.redirect_url:(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.CREATE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",t).then((t=>{"created"===t.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,t.data.data.client),u.Z.push(`/profile/apps/${t.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.DELETE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${t}`).then((t=>{204===t.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){R(e,`oauth/apps/${t}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,t){R(e,`oauth/apps/${t}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,t.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${t}/revoke`).then((t=>{"success"===t.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},U={[d.Km.GETTERS.CLIENT]:e=>e.client,[d.Km.GETTERS.CLIENTS]:e=>e.clients,[d.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[d.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},z={[d.Km.MUTATIONS.SET_CLIENT](e,t){e.client=t},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},N={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:N,actions:g,getters:U,mutations:z};var w=h,v=n(2540);const{locale:C}=v.Z.global,f={[d.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((t=>{"success"===t.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[d.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((t=>{"success"===t.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",t).then((t=>{"success"===t.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){document.querySelector("html")?.setAttribute("lang",t),e.commit(d.SY.MUTATIONS.UPDATE_LANG,t),C.value=t}},D={[d.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[d.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[d.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[d.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[d.SY.GETTERS.LANGUAGE]:e=>e.language,[d.SY.GETTERS.LOCALE]:e=>e.locale};var k=n(6287);const P={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[d.SY.MUTATIONS.UPDATE_LANG](e,t){e.language=t,e.locale=k.v1[t]}};var L=n(5826);const M={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},b={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((t=>{"success"===t.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,t.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${t.id}`,{is_active:t.isActive}).then((t=>{"success"===t.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},F={sports:[]},W={state:F,actions:b,getters:y,mutations:G};var K=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${t.username}/${t.filterType}`,{params:t.params}).then((t=>{"success"===t.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},Y={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},x={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},$={statistics:{}},Z={state:$,actions:B,getters:Y,mutations:x};var H=Z;const V={[d.RT.GETTERS.USER]:e=>e.user,[d.RT.GETTERS.USERS]:e=>e.users,[d.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[d.RT.GETTERS.USERS_LOADING]:e=>e.loading,[d.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},q={[d.RT.MUTATIONS.UPDATE_USER](e,t){e.user=t},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map((e=>e.username===t.username?t:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var J=X,Q=n(52);const ee=(e,t,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.aX.MUTATIONS[n],t.data.data.workouts),n===Q.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},te={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,t,Q.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,t){ee(e,t,Q.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){ee(e,t,Q.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){ee(e,t,Q.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";a.Z.get(`workouts/${t.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(d.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${t.workoutId}/chart_data${n}`).then((t=>{"success"===t.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),a.Z.get(`workouts/${t.workoutId}/gpx${n}`).then((t=>{"success"===t.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((t=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${t.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${t.workoutId}`,t.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=t.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",t.file),r.append("data",`{"sport_id": ${t.sport_id}, "notes": "${n}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((t=>{if("created"===t.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];u.Z.push(1===t.data.data.workouts.length?`/workouts/${n.id}`:"/")}})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",t).then((t=>{if("created"===t.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];u.Z.push(`/workouts/${n.id}`)}})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},ne={[d.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[d.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[d.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[d.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[d.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},re={[d.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[d.aX.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},ae={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},oe={state:ae,actions:te,getters:ne,mutations:re};var ie=oe;const se={authUserModule:I,oAuthModule:w,sportsModule:K,statsModule:H,usersModule:J,workoutsModule:ie},le={state:M,actions:f,getters:D,mutations:P,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,t,n){"use strict";var r,a,o;n.d(t,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var r=n(3907);function a(){return(0,r.oR)()}},2766:function(e,t,n){"use strict";n.d(t,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return i}});const r=["asc","desc"],a=1,o=10,i=(e,t)=>e&&"string"===typeof e&&+e>0?+e:t,s=(e,t,n)=>e&&"string"===typeof e&&t.includes(e)?e:n,l=(e,t,n,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=i(e.page,a),d.per_page=i(e.per_page,o),d.order=s(e.order,r,u),d.order_by=s(e.order_by,t,n),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,t=1)=>Array.from({length:e-t+1},((e,n)=>t+n)),d=(e,t)=>{if(e<0)return[];if(e<9)return u(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{switch(e){case"week":return(0,r.Z)(t,{weekStartsOn:n?1:0});case"year":return(0,a.Z)(t);case"month":return(0,o.Z)(t);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,t)=>{switch(e){case"week":return(0,i.Z)(t,7);case"year":return(0,s.Z)(t,1);case"month":return(0,l.Z)(t,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,t)=>(0,m.utcToZonedTime)(new Date(e),t),O=(e,t)=>{const n=(0,o.Z)(e),a=(0,c.Z)(e),i=t?1:0;return{start:(0,r.Z)(n,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},I=(e,t=null,n=null)=>(t||(t="yyyy/MM/dd"),t=U(t,S.value),n||(n="HH:mm"),{workout_date:(0,d.Z)(e,t,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,n)}),R=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],g={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",nl:"d MMM yyyy"},U=(e,t)=>"date_string"===e?g[t]:e,z=(e,t,n,r=!0,a=null)=>(a||(a=S.value),(0,d.Z)(A(e,t),`${U(n,a)}${r?" HH:mm":""}`,{locale:_.v1[a]})),N=(e,t,n=null)=>{const r=n||S.value,a=[];return R.map((n=>{const o=U(n,r);a.push({label:`${o} - ${z(e,t,o,!1,r)}`,value:n})})),a}},8966:function(e,t,n){"use strict";n.d(t,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,t=!0)=>{const n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,n)).toFixed(1),o=r[n];return t?`${a}${o}`:{size:a,suffix:o}},o=e=>{const t=e/1048576;return+t.toFixed(2)}},2024:function(e,t,n){"use strict";n.d(t,{S:function(){return o},k:function(){return a}});var r=n(5801);const a=()=>"/api/",o=(e,t,n="UNKNOWN")=>{if(t&&"canceled"===t.message)return;const a=t?.response&&t.response.data?t.response.data:null;if(401===t?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=t?t.response?413===t.response.status?"file size is greater than the allowed size":a?.message?a.message:n:t.message?t.message:n:n;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${o}`)}},6287:function(e,t,n){"use strict";n.d(t,{mT:function(){return d},v1:function(){return l},zK:function(){return c}});var r=n(879),a=n(5826),o=n(5830),i=n(4638),s=n(2540);const l={de:r.Z,en:a.Z,fr:o.Z,nl:i.Z},c={de:"Deutsch",en:"English",fr:"Français",nl:"Nederlands"},{availableLocales:u}=s.Z.global,d=u.map((e=>({label:c[e],value:e})))},631:function(e,t,n){"use strict";n.d(t,{CM:function(){return l},PA:function(){return s},Yx:function(){return a},Zo:function(){return r},xH:function(){return i}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const t={};return e.map((e=>t[e.id]=e.color?e.color:r[e.label])),t},o=(e,t)=>{const n=e.translatedLabel.toLowerCase(),r=t.translatedLabel.toLowerCase();return n>r?1:ne.filter((e=>"all"===n||(r.includes(e.id)||e[n]))).map((e=>({...e,translatedLabel:t(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.label))[0],l=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,t,n){"use strict";n.d(t,{FN:function(){return f},aZ:function(){return C},v1:function(){return v}});n(7658);var r=n(4850),a=n(8148),o=n(9319),i=n(584),s=n(4559),l=n(3703),c=n(876),u=n(7090),d=n(4135),m=n(1593),E=n(7982),_=n(3500),S=n(1640),T=n(2540),p=n(6558),A=n(6287),O=n(631),I=n(3649);const{locale:R}=T.Z.global,g={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},U=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],z=(e,t)=>{const n=[];for(let r=(0,p.Nh)(e.duration,e.start,t);r<=e.end;r=(0,p.xA)(e.duration,r))n.push(r);return n},N=(e,t,n=!1)=>{const r={label:e,backgroundColor:[t],data:[]};return n&&(r.type="line",r.borderColor=[t],r.spanGaps=!0),r},h=e=>{const t={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const n=e.color?e.color:O.Zo[e.label];t.average_speed.push(N(e.label,n,!0)),t.nb_workouts.push(N(e.label,n)),t.total_distance.push(N(e.label,n)),t.total_duration.push(N(e.label,n)),t.total_ascent.push(N(e.label,n)),t.total_descent.push(N(e.label,n))})),t},w=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,I.f3)(["average_speed","total_distance"].includes(e)?"km":"m",t,n);default:case"nb_workouts":case"total_duration":return t}},v=(e,t,n,a,o,i,s)=>{const l=z(e,t),c=g[e.duration],u=n.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((t=>{const n=(0,r.Z)(t,c.api),a=(0,r.Z)(t,"week"===e.duration?(0,p.mh)(s,R.value):c.chart,{locale:A.v1[R.value]});d.push(a),U.map((e=>{m[e].map((t=>{t.data.push(n in o&&E[t.label]in o[n]?w(e,o[n][E[t.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},C=(e,t,n)=>{const r=n?1:0,m="year"===t?(0,a.Z)((0,o.Z)(e,9)):"week"===t?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===t?(0,c.Z)(e):"week"===t?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:t,end:E,start:m}},f=(e,t,n)=>{const{duration:r,start:T,end:p}=e,A=n?1:0;return{duration:r,end:"year"===r?(0,c.Z)(t?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(t?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(t?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(t?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(t?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(t?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,t,n){"use strict";n.d(t,{Dl:function(){return r},f3:function(){return i},sC:function(){return o}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,t,n,o=3)=>{const i=r[t],s=r[n],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,t,n)=>{const a=n?r[e].defaultTarget:e;return n?o(t,e,a,2):t}},3768:function(e,t,n){"use strict";n.d(t,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});n(7658);var r=n(3649);const a=(e,t,n)=>{const a={speed:{label:t("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],i=[],s=[];return e.map((e=>{o.push(e.distance),i.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,n)),a.elevation.data.push((0,r.f3)("m",e.elevation,n)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const t=e.length;if(0===t)return{};const n={};return e.map((e=>{n[e.sport_id]||(n[e.sport_id]={count:0,percentage:0}),n[e.sport_id].count+=1,n[e.sport_id].percentage=n[e.sport_id].count/t})),n},i={order:"desc",order_by:"workout_date"}},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,t){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",i,[(0,r.WI)(e.$slots,"content")])])}var l=n(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262);const i={class:"table-selects"},s=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var E=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(n),p=[10,25,50,100];function A(e){t("updateSelect",e.target.id,e.target.value)}return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(_).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${t.toUpperCase()}`)),9,l)))),128))],40,s)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(_).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(S),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${t.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(_).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),_=n(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),i=[o];function s(e,t,n,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=n(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var r=n(6252),a=n(2262),o=(n(7658),n(3577));const i={id:"error"},s={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:l,message:c,path:u}=(0,a.BK)(t);return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",s,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:t[0]||(t[0]=t=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(n)),1)):(0,r.kq)("",!0)])]))}}),c=n(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=(0,a.BK)(t),o=(0,a.iH)(),i=(0,a.iH)(!1);function s(){o.value=setTimeout((()=>{i.value=!0}),500)}return(0,r.bv)((()=>s())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,t)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(n)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262),i=n(2766);const s=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=s((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=s((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var E=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const t=e,{pagination:n,path:s,query:E}=(0,o.BK)(t);function _(e,t){const n=Object.assign({},E.value);return n.page=t?e+t:e,n}return(e,t)=>{const E=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(n).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(n).page,-1)},disabled:!(0,o.SU)(n).has_prev},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(i.lM)((0,o.SU)(n).pages,(0,o.SU)(n).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(n).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(E,{key:1,class:"page-link",to:{path:(0,o.SU)(s),query:_(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(n).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(n).page,1)},disabled:!(0,o.SU)(n).has_next},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=n(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(6252),a=n(2262),o=n(9963),i=n(3577),s=n(4366),l=n(5801),c=n(9917);const u=async e=>{const t=await n.e(881).then(n.bind(n,410)),r=await n.e(881).then(n.bind(n,8288)),a=await n.e(881).then(n.bind(n,6947)),o=await n.e(881).then(n.bind(n,8056)),i={de:o,en:r,fr:a,nb:r,nl:r},l=i[e],c={graphs:t.default.adjacencyGraphs,dictionary:{...t.default.dictionary,...l.default.dictionary}};s.Mu.setOptions(c)},d=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},m={class:"password-strength"},E=["value"],_={key:0,class:"password-strength-details"},S={class:"password-strength-value"},T={key:0,class:"info-box"},p={class:"password-feedback"};var A=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const t=e,{password:n}=(0,a.BK)(t),o=(0,c.o)(),A=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),I=(0,a.iH)(0),R=(0,a.iH)(""),g=(0,a.iH)([]),U=(0,a.iH)("0% 100%");function z(e){const t=(0,s.tu)(e);I.value=t.score,R.value=d(I.value),g.value=t.feedback.suggestions,U.value=100*I.value/4+"% 100%"}return(0,r.wF)((async()=>await u(A.value))),(0,r.YP)((()=>A.value),(async e=>{await u(e)})),(0,r.YP)((()=>n.value),(async e=>{O.value?R.value="":z(e)})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${I.value}`]),style:(0,i.j5)({backgroundSize:U.value}),type:"range",value:I.value,min:"0",max:"4",step:"1"},null,14,E),R.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("span",S,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${R.value}`)),1),g.value.length>0?((0,r.wg)(),(0,r.iD)("div",T,[(0,r._)("ul",p,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(g.value,(t=>((0,r.wg)(),(0,r.iD)("li",{key:t},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${t}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),O=n(3744);const I=(0,O.Z)(A,[["__scopeId","data-v-74e71df5"]]);var R=I;const g=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),U={class:"password-input"},z=["id","disabled","placeholder","required","type"],N={key:0,class:"form-info"},h=g((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var w=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(n),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){t("updatePassword",e.target.value)}function p(){t("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",U,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:E.value?"text":"password","onUpdate:modelValue":t[0]||(t[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,z),[[o.YZ,_.value]]),(0,r._)("div",{class:"show-password",onClick:S},[(0,r.Uk)((0,i.zw)(e.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,i.C_)(["fa","fa-eye"+(E.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(s)?((0,r.wg)(),(0,r.iD)("div",N,[h,(0,r.Uk)(" "+(0,i.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(s)?((0,r.wg)(),(0,r.j4)(R,{key:1,password:_.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const v=(0,O.Z)(w,[["__scopeId","data-v-5a126514"]]);var C=v},2056:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577),o=n(2262),i=n(2024);const s=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=(0,o.BK)(t),l=`${(0,i.k)()}workouts/map/${t.workout.map}`;return(e,t)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(n)}])},[(0,o.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),s],2))}});const c=l;var u=c},436:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(6252),a=n(3577);const o={class:"start-chart"},i={key:0},s={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},E=["checked"],_={key:1},S=["checked"],T={key:2},p=["checked"];function A(e,t,n,A,O,I){const R=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",i,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:t[0]||(t[0]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:t[1]||(t[1]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:t[2]||(t[2]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:t[3]||(t[3]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",_,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:t[4]||(t[4]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,S),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:t[5]||(t[5]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(R,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=n(4850),I=n(2262);const R={class:"chart"};function g(e,t,n,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",R,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var U=n(6518),z=n(9150);const N=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return t?`${"0"===n?"":`${n}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=n(3649);const w=(e,t,n,r=!0,a="km")=>{const o=n?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${t.toFixed(2)} ${o}/h`;case"total_duration":return N(t,r);case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${o}`;default:return t.toString()}};var v=(0,r.aZ)({name:"Chart",components:{BarChart:U.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:t}=(0,z.QT)();function n(e){return isNaN(e)?0:+e}function a(e,t){return n(e)+n(t)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const i=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),s=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(t){return w(e.displayedData,+t,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(t){t.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(t){return"average_speed"===e.displayedData&&t.dataset.backgroundColor?t.dataset.backgroundColor[0]:"#666666"},rotation:function(t){return e.fullStats&&t.chart.chartArea.width<580?310:0},display:function(t){return!(e.fullStats&&t.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(t,n){if("average_speed"===e.displayedData)return w(e.displayedData,t,e.useImperialUnits,!1);{const t=n.chart.data.datasets.map((e=>e.data[n.dataIndex])).reduce(((e,t)=>a(e,t)),0);return n.datasetIndex===e.displayedSportIds.length-1&&t>0?w(e.displayedData,t,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(n){let r=t(`sports.${n.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==n.parsed.y&&(r+=w(e.displayedData,n.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(n){if("average_speed"===e.displayedData)return"";let r=0;return n.map((e=>{r+=e.parsed.y})),`${t("common.TOTAL")}: `+w(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,U.xZ)({chartData:i,options:s});return{barChartProps:l}}}),C=n(3744);const f=(0,C.Z)(v,[["render",g]]);var D=f,k=n(5801),P=n(9917),L=n(9318),M=(0,r.aZ)({name:"UserMonthStats",components:{Chart:D},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const t=(0,P.o)(),n=(0,I.iH)("total_distance"),a=(0,r.Fl)((()=>t.getters[k.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units,e.user.date_format)));function i(n){t.dispatch(k.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:n})}function s(e){n.value=e.target.name}function l(e,t){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(t.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async t=>{i(l(t,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[n.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:n,updateDisplayData:s}}});const b=(0,C.Z)(M,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=b},2179:function(e,t,n){"use strict";n.d(t,{Z:function(){return z}});var r=n(6252),a=n(2262),o=n(3577),i=n(6595),s=n(5801),l=n(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},E={class:"user-stat"},_={class:"stat-number"},S={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},I={class:"stat-label"};var R=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const t=e,{user:n}=(0,a.BK)(t),R=(0,l.o)(),g=(0,r.Fl)((()=>R.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(n)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(n).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(n).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(n).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(n).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(g).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(g).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(n).nb_sports),1),(0,r._)("span",I,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(n).nb_sports)),1)])])])])}}}),g=n(3744);const U=(0,g.Z)(R,[["__scopeId","data-v-20291951"]]);var z=U},1585:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});n(7658);var r=n(6252),a=n(2262),o=n(3577),i=n(9963),s=n(4850),l=n(5801),c=n(9917),u=n(6558),d=n(6287);const m={id:"user-infos",class:"description-list"},E={key:1,class:"info-box success-message"},_={key:4,class:"email-form form-box"},S={class:"form-items",for:"email"},T={class:"form-items",for:"email"},p={class:"form-buttons"},A={class:"confirm",type:"submit"},O=["onClick"],I={key:5},R={class:"user-bio"},g={key:0,class:"profile-buttons"},U=["onClick"],z={key:1,class:"profile-buttons"};var N=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,c.o)(),{user:N,fromAdmin:h}=(0,a.BK)(t),w=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.LANGUAGE])),v=(0,r.Fl)((()=>n.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),C=(0,r.Fl)((()=>t.user.created_at?(0,u.p6)(t.user.created_at,v.value.timezone,v.value.date_format):"")),f=(0,r.Fl)((()=>t.user.birth_date?(0,s.Z)(new Date(t.user.birth_date),`${(0,u.mh)(v.value.date_format,w.value)}`,{locale:d.v1[w.value]}):"")),D=(0,r.Fl)((()=>n.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),k=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),P=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),M=(0,a.iH)(!1),b=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){n.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function K(e){G.value="password-reset",n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function Y(){Z(),y.value=N.value.email_to_confirm?N.value.email_to_confirm:"",b.value=!0,G.value="email-update"}function x(){y.value="",b.value=!1}function $(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function Z(){n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>Z())),(0,r.YP)((()=>D.value),(e=>{e&&(F(""),x())})),(e,t)=>{const n=(0,r.up)("Modal"),s=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",m,[L.value?((0,r.wg)(),(0,r.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===L.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(N).username,onConfirmAction:t[0]||(t[0]=e=>"delete"===L.value?W((0,a.SU)(N).username):K((0,a.SU)(N).username)),onCancelAction:t[1]||(t[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(D)?((0,r.wg)(),(0,r.iD)("div",E,(0,o.zw)(e.$t(`admin.${"password-reset"===G.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(N).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(s,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(k)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(k)},null,8,["message"])):(0,r.kq)("",!0),b.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:M.value}),onSubmit:t[4]||(t[4]=(0,i.iM)((e=>$((0,a.SU)(N).username)),["prevent"]))},[(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":t[2]||(t[2]=e=>(0,a.SU)(N).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(N).email]])]),(0,r._)("label",T,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":t[3]||(t[3]=e=>y.value=e)},null,512),[[i.nr,y.value]])]),(0,r._)("div",p,[(0,r._)("button",A,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",I,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(C)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(f)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",R,(0,o.zw)((0,a.SU)(N).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",g,[(0,a.SU)(v).username!==(0,a.SU)(N).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:t[5]||(t[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(N).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:t[6]||(t[6]=(0,i.iM)((e=>B((0,a.SU)(N).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(v).username!==(0,a.SU)(N).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(Y,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,U)):(0,r.kq)("",!0),(0,a.SU)(v).username!==(0,a.SU)(N).username&&(0,a.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:t[7]||(t[7]=(0,i.iM)((e=>F("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:t[8]||(t[8]=t=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("button",{onClick:t[9]||(t[9]=t=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:t[10]||(t[10]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=n(3744);const w=(0,h.Z)(N,[["__scopeId","data-v-217519af"]]);var v=w},2411:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(6252),a=n(3577),o=n(2262),i=n(9963),s=n(2201),l=n(8403),c=n(5801),u=n(9917);const d=e=>((0,r.dD)("data-v-b3c885de"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},E={key:2,class:"info-box success-message"},_={class:"form-items"},S=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},I=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),R=["disabled"],g={key:3},U={key:0},z={key:4},N={class:"account"},h={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const t=e,n=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(t),v=(0,o.qj)({username:"",email:"",password:""}),C=(0,r.Fl)((()=>G(t.action))),f=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),D=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),L=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),M=(0,r.Fl)((()=>"register"===t.action&&!P.value.is_registration_enabled)),b=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!P.value.is_email_sending_enabled)),y=(0,o.iH)(!1);function G(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function F(){y.value=!0}function W(e){v.password=e}function K(e){switch(e){case"reset":return t.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:v.password,token:t.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:v.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:v.email});default:v["language"]=L.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:v,redirectUrl:n.query.from})}}function B(){v.username="",v.email="",v.password=""}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>n.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),y.value=!1,B()})),(e,t)=>{const n=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(M)}])},[(0,o.SU)(M)?((0,r.wg)(),(0,r.j4)(n,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(b)?((0,r.wg)(),(0,r.j4)(n,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(k)||(0,o.SU)(D)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(D)?"REGISTRATION"+((0,o.SU)(P).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:y.value}),onSubmit:t[2]||(t[2]=(0,i.iM)((e=>K((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",_,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(M),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:F,"onUpdate:modelValue":t[0]||(t[0]=e=>v.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,v.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(M)||(0,o.SU)(b),required:"",onInvalid:F,type:"email","onUpdate:modelValue":t[1]||(t[1]=e=>v.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,v.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[I,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(M),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:v.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:W,onPasswordError:F},null,8,["disabled","placeholder","password","checkStrength"]))]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(M)||(0,o.SU)(b)},(0,a.zw)(e.$t((0,o.SU)(C))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",g,[(0,r.Wm)(s,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(s,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("span",N,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(s,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",h,[(0,r.Wm)(s,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(f)?((0,r.wg)(),(0,r.j4)(c,{key:6,message:(0,o.SU)(f)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),v=n(3744);const C=(0,v.Z)(w,[["__scopeId","data-v-b3c885de"]]);var f=C},6595:function(e,t,n){"use strict";n.d(t,{Z:function(){return E}});var r=n(6252),a=n(2262),o=n(2024);const i={class:"user-picture"},s=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const t=e,n=(0,r.Fl)((()=>t.user.picture?`${(0,o.k)()}users/${t.user.username}/picture?${Date.now()}`:""));return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(n)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577);const o={class:"no-workouts box"};function i(e,t){const n=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(n,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=n(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,t,n){var r={"./de/de.ts":9923,"./en/en.ts":8757,"./fr/fr.ts":6625,"./nb/nb.ts":8891,"./nl/nl.ts":701};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},n.d(o,i),o}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"static/js/"+({24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile",881:"password"}[e]||e)+"."+{24:"a8b861ae",93:"611a4415",193:"7cce80c4",243:"d3fff3a7",328:"c4231dfb",401:"6988dc66",431:"52f71cad",633:"5eb61510",845:"984aa6f4",858:"ec3b00a9",881:"cfeb5ed6"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"9970f29e",845:"9f83730d"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="fittrackee_client:";n.l=function(r,a,o,i){if(e[r])e[r].push(a);else{var s,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{const t=new AbortController;e.signal=t.signal;const n=(0,a.a)(e);a.j.set(n,t);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const t=`Bearer ${r}`;e.headers&&e.headers.Authorization!==t&&(e.headers.Authorization=`Bearer ${r}`)}return e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,a.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,a.a)(e.response.config),Promise.reject(e)))),t["Z"]=l},8566:function(e,t,n){"use strict";n.d(t,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:t,url:n,params:r={},data:a={}}=e;return[t,n,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const t=a(e);if(r.has(t)){const e=r.get(t)||{};e?.abort(),r.delete(t)}return t}},2540:function(e,t,n){"use strict";var r=n(9150);const a=["nb"];function o(){const e=n(4612),t={};return e.keys().forEach((n=>{const r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];t[a]=e(n).default}})),t}t["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},9923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["unter ",n(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Quellcode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt-E-Mail des Administrators"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. Anzahl aktiver Nutzer"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. Dateianzahl im zip Archiv"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Möchtest du wirklich das ",n(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Neue E-Mail"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Das wasswort wurde zurückgesetzt."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainings existieren"])},IMAGE:e=>{const{normalize:t}=e;return t(["Bild"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:t}=e;return t(["Nutzer"])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Die E-Mail Adresse wurde aktualisiert."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Administratorrechte entfernen"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["Adminstatus"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Accountstatus"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["Trainingsanzahl"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fehler bei der GPX-Verarbeitung."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fehler beim Einlesen der GPX-Datei"])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte erneut anmelden."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netzwerkfehler."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:t}=e;return t(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:t}=e;return t(["Keine Datei ausgewählt."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Gebe ein gültiges Authentifizierungstoken an."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sportart existiert nicht."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Registrierung erfolgreich."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Du hast keine Berechtigung."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["Vorhergehende"])},NEXT:e=>{const{normalize:t}=e;return t(["Nächste"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autorisieren"])},BACK:e=>{const{normalize:t}=e;return t(["Zurück"])},CANCEL:e=>{const{normalize:t}=e;return t(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:t}=e;return t(["Deaktivieren"])},EDIT:e=>{const{normalize:t}=e;return t(["Bearbeiten"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aktivieren"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmelden"])},NO:e=>{const{normalize:t}=e;return t(["Nein"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESET:e=>{const{normalize:t}=e;return t(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Speichern"])},YES:e=>{const{normalize:t}=e;return t(["Ja"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["Über"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bestätigung"])},CONTACT:e=>{const{normalize:t}=e;return t(["Kontakt"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["Tag"]),t(["Tage"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["Dokumentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Versteckt"])},HOME:e=>{const{normalize:t}=e;return t(["Startseite"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sortiert nach"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sortieren"])},ASC:e=>{const{normalize:t}=e;return t(["aufsteigend"])},DESC:e=>{const{normalize:t}=e;return t(["absteigend"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["pro Seite"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Dieser Monat"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Etwas lief schief"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["ID"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Erstellt am"])},NAME:e=>{const{normalize:t}=e;return t(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Geltungsbereich"])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf workouts-Endpunkte"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])}},URL:e=>{const{normalize:t}=e;return t(["Anwendungs-URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Die Anwendung ",n(r(0))," fragt an:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2-Anwendungen"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:t}=e;return t(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rudern"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Gehen"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistik"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["Woche"])},month:e=>{const{normalize:t}=e;return t(["Monat"])},year:e=>{const{normalize:t}=e;return t(["Jahr"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:t}=e;return t(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Gebe ein Passwort ein"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ungültiges Token, bitte fordere ein neues Passworts an."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LOG_IN:e=>{const{normalize:t}=e;return t(["Anmelden"])},LOGIN:e=>{const{normalize:t}=e;return t(["Anmeldung"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Abmelden"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Passwort vergessen?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["schwach"])},AVERAGE:e=>{const{normalize:t}=e;return t(["mittel"])},GOOD:e=>{const{normalize:t}=e;return t(["gut"])},STRONG:e=>{const{normalize:t}=e;return t(["start"])},LABEL:e=>{const{normalize:t}=e;return t(["Passwortstärke"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},allUppercase:e=>{const{normalize:t}=e;return t(["Schreibe einige, aber nicht alle Buchstaben groß."])},capitalization:e=>{const{normalize:t}=e;return t(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:t}=e;return t(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermeide Angabe von letzten Jahreszahlen."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},sequences:e=>{const{normalize:t}=e;return t(["Vermeide gebräuchliche Zeichenfolgen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermeide wiederholungen von Wörtern und Zeichen."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},anotherWord:e=>{const{normalize:t}=e;return t(["Füge weitere weniger gebräuchliche Wörter hinzu."])},useWords:e=>{const{normalize:t}=e;return t(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])},noNeed:e=>{const{normalize:t}=e;return t(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:t}=e;return t(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Dein Passwort wurde aktualisiert. Klicke ",n(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Zurück zum Profil"])},BIO:e=>{const{normalize:t}=e;return t(["Biographie"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:t}=e;return t(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Bitte ",n(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Vorname"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Erster Tag der Woche"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Sprache"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nachname"])},LOCATION:e=>{const{normalize:t}=e;return t(["Ort"])},MONDAY:e=>{const{normalize:t}=e;return t(["Montag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Bildausgabe"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Bild aktualisieren"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Bild entfernen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Einstellungsausgabe"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registrierungsdatum"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sportarten-Einstellungsausgabe"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["Konto"])},APPS:e=>{const{normalize:t}=e;return t(["Anwendungen"])},PICTURE:e=>{const{normalize:t}=e;return t(["Bild"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["Einstellungen"])},PROFILE:e=>{const{normalize:t}=e;return t(["Profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["Sportarten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["Aktion"])},COLOR:e=>{const{normalize:t}=e;return t(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["aktiv"])},LABEL:e=>{const{normalize:t}=e;return t(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["Geschwindigkeitsschwellenwert für Stopp"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Dein Konto wurde erfolgreich aktualisiert."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Einheiten für die Distanz"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperiales System (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisches System (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Zeitzone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registrieren"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["E-Mail zur Kontobestätigung erneut senden"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Entschuldigung, die Registrierung ist deaktiviert."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort zurücksetzen"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Dieser Account ist inaktiv."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["Benutzerbild"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["Analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["Aufstieg"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["Durchschnittsgeschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["zurück zum Training"])},DATE:e=>{const{normalize:t}=e;return t(["Datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["zeige Filter"])},DISTANCE:e=>{const{normalize:t}=e;return t(["Entfernung"])},DURATION:e=>{const{normalize:t}=e;return t(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:t}=e;return t(["Höhe"])},END:e=>{const{normalize:t}=e;return t(["Ende"])},FROM:e=>{const{normalize:t}=e;return t(["Von"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberge Filter"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Nächstes Training"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Keine Trainings."])},NOTES:e=>{const{normalize:t}=e;return t(["Anmerkungen"])},PAUSES:e=>{const{normalize:t}=e;return t(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorheriges Training"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["Aufzeichnung"]),t(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["Segment"]),t(["Segmente"])])},SPEED:e=>{const{normalize:t}=e;return t(["Geschwindigkeit"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["Sportart"]),t(["Sportarten"])])},START:e=>{const{normalize:t}=e;return t(["Start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:t}=e;return t(["Titel"])},TO:e=>{const{normalize:t}=e;return t(["bis"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Füge erstes Training hinzu!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["Temperatur"])},WIND:e=>{const{normalize:t}=e;return t(["Wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OSO"])},SE:e=>{const{normalize:t}=e;return t(["SO"])},SSE:e=>{const{normalize:t}=e;return t(["SSO"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["klarer Tag"])},"clear-night":e=>{const{normalize:t}=e;return t(["klare Nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["wolkig"])},fog:e=>{const{normalize:t}=e;return t(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:t}=e;return t(["Regen"])},sleet:e=>{const{normalize:t}=e;return t(["Schneeregen"])},snow:e=>{const{normalize:t}=e;return t(["Schnee"])},wind:e=>{const{normalize:t}=e;return t(["Wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["mit .gpx Datei"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["ohne .gpx Datei"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["Training"]),t(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["oder .zip Datei mit .gpx Dateien"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},8757:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["under ",n(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Source code"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activate account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email for contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to reset ",n(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Current email"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["New email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The password has been reset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["The email address has been updated."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["At least one file in zip archive exceeds size limit, please check the archive."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Error during gpx processing."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Error during gpx file parsing."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["The number of files in the archive exceeds the limit."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Authorize"])},BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["about"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Displayed"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Hidden"])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Something went wrong"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Application description"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Issue at"])},NAME:e=>{const{normalize:t}=e;return t(["Application name"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:t}=e;return t(["Application URL"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["The application ",n(r(0))," is requesting:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 applications"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Authorize ",n(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Delete application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Add an application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application not found!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["All existing associated tokens have been revoked."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Current password"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["hide password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOG_IN:e=>{const{normalize:t}=e;return t(["log in"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["New password"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["No users found."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["At least 8 characters required."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["weak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["average"])},GOOD:e=>{const{normalize:t}=e;return t(["good"])},STRONG:e=>{const{normalize:t}=e;return t(["strong"])},LABEL:e=>{const{normalize:t}=e;return t(["password strength"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Avoid predictable letter substitutions like ","@"," for a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Avoid reversed spellings of common words."])},allUppercase:e=>{const{normalize:t}=e;return t(["Capitalize some, but not all letters."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalize more than the first letter."])},dates:e=>{const{normalize:t}=e;return t(["Avoid dates and years that are associated with you."])},recentYears:e=>{const{normalize:t}=e;return t(["Avoid recent years."])},associatedYears:e=>{const{normalize:t}=e;return t(["Avoid years that are associated with you."])},sequences:e=>{const{normalize:t}=e;return t(["Avoid common character sequences."])},repeated:e=>{const{normalize:t}=e;return t(["Avoid repeated words and characters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Use longer keyboard patterns and change typing direction multiple times."])},anotherWord:e=>{const{normalize:t}=e;return t(["Add more words that are less common."])},useWords:e=>{const{normalize:t}=e;return t(["Use multiple words, but avoid common phrases."])},noNeed:e=>{const{normalize:t}=e;return t(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:t}=e;return t(["If you use this password elsewhere, you should change it."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account edition"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Date display format"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Please ",n(r(0))," to change your email address again or contact the administrator"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sports preferences edition"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["active"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["stopped speed threshold"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Your account has been updated successfully."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Units for distance"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperial system (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metric system (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Resend account confirmation email"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["This user account is inactive."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farthest distance"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Highest ascent"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["start elevation axis at zero"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSW"])},SW:e=>{const{normalize:t}=e;return t(["SW"])},WSW:e=>{const{normalize:t}=e;return t(["WSW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},6625:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["sous licence ",n(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Code source (en)"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activer le compte"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Email de l'administrateur pour contact "])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",n(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",n(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nouvelle adresse email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Le mot de passe a été réinitialisé."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Changer l'email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["L'adresse email a été mise à jour."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les droits d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["statut du compte"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Erreur lors du traitement du fichier gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Erreur lors de l'analyse du fichier."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur réseau."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Une adresse électronique doit être fournie pour le contact de l'administrateur"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Autoriser"])},BACK:e=>{const{normalize:t}=e;return t(["Retour"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},RESET:e=>{const{normalize:t}=e;return t(["Réinit."])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["à propos"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},CONTACT:e=>{const{normalize:t}=e;return t(["contact"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Affiché"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentation (en)"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},HIDDEN:e=>{const{normalize:t}=e;return t(["Masqué"])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois-ci"])}},c={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Une erreur s'est produite"])}},u={ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:t}=e;return t(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Secret"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Créée le"])},NAME:e=>{const{normalize:t}=e;return t(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:t}=e;return t(["URL de l'application"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["L'application ",n(r(0))," demande les accès suivants :"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["Applications OAuth2"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Autoriser ",n(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Ajouter une application"])},NO_APP:e=>{const{normalize:t}=e;return t(["Application introuvable !"])},NO_APPS:e=>{const{normalize:t}=e;return t(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Tous les jetons associés existants ont été révoqués."])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Électrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:t}=e;return t(["Courriel"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisissez un mot de passe"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOG_IN:e=>{const{normalize:t}=e;return t(["connecter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["8 caractères minimum."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["faible"])},AVERAGE:e=>{const{normalize:t}=e;return t(["moyenne"])},GOOD:e=>{const{normalize:t}=e;return t(["bonne"])},STRONG:e=>{const{normalize:t}=e;return t(["forte"])},LABEL:e=>{const{normalize:t}=e;return t(["robustesse du mot de passe"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Évitez les orthographes inversées des mots courants."])},allUppercase:e=>{const{normalize:t}=e;return t(["Mettez quelques lettres en majuscules, mais pas toutes."])},capitalization:e=>{const{normalize:t}=e;return t(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:t}=e;return t(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},recentYears:e=>{const{normalize:t}=e;return t(["Évitez les dernières années."])},associatedYears:e=>{const{normalize:t}=e;return t(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},sequences:e=>{const{normalize:t}=e;return t(["Évitez les séquences de caractères courantes."])},repeated:e=>{const{normalize:t}=e;return t(["Évitez les mots et les caractères répétés."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},anotherWord:e=>{const{normalize:t}=e;return t(["Ajoutez des mots moins courants."])},useWords:e=>{const{normalize:t}=e;return t(["Utilisez plusieurs mots, mais évitez les phrases courantes."])},noNeed:e=>{const{normalize:t}=e;return t(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:t}=e;return t(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])}}},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Veuillez vous ",n(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences des sports"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["compte"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])},SPORTS:e=>{const{normalize:t}=e;return t(["sports"])}},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Unités pour les distances"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Système impérial (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Système métrique (m, km)"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["action"])},COLOR:e=>{const{normalize:t}=e;return t(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actif"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["seuil de vitesse arrêtée"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Votre compte a été modifié avec succès."])},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Le compte de cet utilisateur est inactif."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])}},_={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNE"])},NE:e=>{const{normalize:t}=e;return t(["NE"])},ENE:e=>{const{normalize:t}=e;return t(["ENE"])},E:e=>{const{normalize:t}=e;return t(["E"])},ESE:e=>{const{normalize:t}=e;return t(["ESE"])},SE:e=>{const{normalize:t}=e;return t(["SE"])},SSE:e=>{const{normalize:t}=e;return t(["SSE"])},S:e=>{const{normalize:t}=e;return t(["S"])},SSW:e=>{const{normalize:t}=e;return t(["SSO"])},SW:e=>{const{normalize:t}=e;return t(["SO"])},WSW:e=>{const{normalize:t}=e;return t(["OSO"])},W:e=>{const{normalize:t}=e;return t(["O"])},WNW:e=>{const{normalize:t}=e;return t(["ONO"])},NW:e=>{const{normalize:t}=e;return t(["NO"])},NNW:e=>{const{normalize:t}=e;return t(["NNO"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},8891:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},701:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r={FITTRACKEE_LICENSE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Onder ",n(r(0))," licentie "])},CONTACT_ADMIN:e=>{const{normalize:t}=e;return t(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["FitTrackee is zelf-gehoste buitenshuis activiteiten tracker."])},SOURCE_CODE:e=>{const{normalize:t}=e;return t(["Broncode"])}},a={ACTION:e=>{const{normalize:t}=e;return t(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Activeer account"])},ACTIVE:e=>{const{normalize:t}=e;return t(["Ingeschakeld"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:t}=e;return t(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:t}=e;return t(["Administrator email voor contact"])},MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. aantal actieve gebruikers"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. aantal bestanden in zip archief"])},NO_CONTACT_EMAIL:e=>{const{normalize:t}=e;return t(["geen contact email"])},TITLE:e=>{const{normalize:t}=e;return t(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. grootte van zip archief (in Mb)"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Bij 0, geen limiet op registratie."])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. grootte van bestanden voor upload (in Mb)"])}},ADMIN:e=>{const{normalize:t}=e;return t(["Beheer"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Instellingen"])},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Terug naar beheer"])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Weet u zeker dat u het wachtwoord voor ",n(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:t}=e;return t(["Huidige email"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:t}=e;return t(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:t}=e;return t(["Nieuwe email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Het wachtwoord werd gereset."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Ingeschakeld"])},IMAGE:e=>{const{normalize:t}=e;return t(["Afbeelding"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["Trainingen aanwezig"])}},TITLE:e=>{const{normalize:t}=e;return t(["Beheer sporten"])}},UPDATE_USER_EMAIL:e=>{const{normalize:t}=e;return t(["Update email"])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["gebruiker"]),t(["gebruikers"])])},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:t}=e;return t(["Het emailadres werd bijgewerkt."])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Verwijder admin rechten"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["Account status"])},USERNAME:e=>{const{normalize:t}=e;return t(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["aantal trainingen"])}}}},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Weet u zeker dat u de account ",n(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Verwijder gebruiker"])},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte)."])}},o={ERROR:{"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: een geldige email is vereist."])},"error during gpx processing":e=>{const{normalize:t}=e;return t(["Fout bij verwerken van gpx."])},"error during gpx file parsing":e=>{const{normalize:t}=e;return t(["Fout bij het verwerken van het gpx bestand."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Bestandsformaat niet toegelaten."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Ongeldige token, log opnieuw in."])},"Network Error":e=>{const{normalize:t}=e;return t(["Netwerk fout."])},"new email must be different than curent email":e=>{const{normalize:t}=e;return t(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:t}=e;return t(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:t}=e;return t(["Geen bestand geselecteerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:t}=e;return t(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Geef een geldig auth token."])},"sorry, that username is already taken":e=>{const{normalize:t}=e;return t(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Deze sport bestaat niet."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signatuur verlopen. Log opnieuw in."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Succesvol geregistreerd."])},"user does not exist":e=>{const{normalize:t}=e;return t(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:t}=e;return t(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["U hebt geen machtigingen."])},UNKNOWN:e=>{const{normalize:t}=e;return t(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:t}=e;return t(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["Bestandsgrootte is groter dan toegestaan."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["vorige"])},NEXT:e=>{const{normalize:t}=e;return t(["volgende"])}}},i={YES:e=>{const{normalize:t}=e;return t(["Ja"])},"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:t}=e;return t(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:t}=e;return t(["Toekennen"])},BACK:e=>{const{normalize:t}=e;return t(["Terug"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Verwijder mijn account"])},EDIT:e=>{const{normalize:t}=e;return t(["Bewerken"])},ENABLE:e=>{const{normalize:t}=e;return t(["Aanzetten"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},NO:e=>{const{normalize:t}=e;return t(["Nee"])},REGISTER:e=>{const{normalize:t}=e;return t(["Registreer"])},RESET:e=>{const{normalize:t}=e;return t(["Reset"])},DISABLE:e=>{const{normalize:t}=e;return t(["Uitzetten"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Aanpassen"])},LOGIN:e=>{const{normalize:t}=e;return t(["Inloggen"])}},s={ABOUT:e=>{const{normalize:t}=e;return t(["over"])},CONFIRMATION:e=>{const{normalize:t}=e;return t(["Bevestiging"])},DOCUMENTATION:e=>{const{normalize:t}=e;return t(["documentatie"])},DISPLAYED:e=>{const{normalize:t}=e;return t(["Weergegeven"])},HERE:e=>{const{normalize:t}=e;return t(["hier"])},CONTACT:e=>{const{normalize:t}=e;return t(["contacteer"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["dag"]),t(["dagen"])])},HOME:e=>{const{normalize:t}=e;return t(["Startscherm"])},SELECTS:{ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sorteer"])},DESC:e=>{const{normalize:t}=e;return t(["aflopend"])},ASC:e=>{const{normalize:t}=e;return t(["oplopend"])}},ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["per pagina"])}}},HIDDEN:e=>{const{normalize:t}=e;return t(["Verborgen"])},TOTAL:e=>{const{normalize:t}=e;return t(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Deze maand"])}},c={NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:t}=e;return t(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:t}=e;return t(["Fout. Probeer opnieuw of contacteer de administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])}},u={APP:{CLIENT_SECRET:e=>{const{normalize:t}=e;return t(["Geheim"])},ISSUE_AT:e=>{const{normalize:t}=e;return t(["Probleem bij"])},REDIRECT_URL:e=>{const{normalize:t}=e;return t(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:t}=e;return t(["Omvang"])},"users:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan users endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan auth endpoints."])},"profile:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan auth endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["staat schrijftoegang toe aan workouts endpoints."])},"application:write_DESCRIPTION":e=>{const{normalize:t}=e;return t(["geeft toestemming tot aanpassen van de applicatie instellingen."])}},NAME:e=>{const{normalize:t}=e;return t(["Naam van de app"])},URL:e=>{const{normalize:t}=e;return t(["App URL"])},DESCRIPTION:e=>{const{normalize:t}=e;return t(["App omschrijving"])},CLIENT_ID:e=>{const{normalize:t}=e;return t(["Id"])}},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:t}=e;return t(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["De app ",n(r(0))," vraagt:"])},APPS_LIST:e=>{const{normalize:t}=e;return t(["OAuth2 apps"])},AUTHORIZE_APP:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Toegang geven aan ",n(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:t}=e;return t(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:t}=e;return t(["Verwijder app"])},NEW_APP:e=>{const{normalize:t}=e;return t(["Voeg een app toe"])},NO_APP:e=>{const{normalize:t}=e;return t(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:t}=e;return t(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:t}=e;return t(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:t}=e;return t(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:t}=e;return t(["Alle bestaande tokens werden ingetrokken."])},ADD_A_NEW_APP:e=>{const{normalize:t}=e;return t(["Nieuwe OAuth2 app toevoegen"])}},d={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:t}=e;return t(["Fietsen (Virtueel)"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountainbiken (Elektrisch)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Roeien"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:t}=e;return t(["Sneeuwschoenen"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Wandelen"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Trektocht"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}}},m={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistieken"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["maand"])},year:e=>{const{normalize:t}=e;return t(["jaar"])}}},E={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:t}=e;return t(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:t}=e;return t(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:t}=e;return t(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Al een account aangemaakt?"])},CURRENT_PASSWORD:e=>{const{normalize:t}=e;return t(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},EMAIL_INFO:e=>{const{normalize:t}=e;return t(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Geef een paswoord in"])},FILTER_ON_USERNAME:e=>{const{normalize:t}=e;return t(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:t}=e;return t(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},LOG_IN:e=>{const{normalize:t}=e;return t(["inloggen"])},LOGIN:e=>{const{normalize:t}=e;return t(["Inloggen"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Uitloggen"])},NEW_PASSWORD:e=>{const{normalize:t}=e;return t(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:t}=e;return t(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:t}=e;return t(["Wachtwoord"])},PASSWORD_INFO:e=>{const{normalize:t}=e;return t(["Tenminste 8 karakters vereist."])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Wachtwoord vergeten?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Wachtwoord reset"])},PASSWORD_STRENGTH:{WEAK:e=>{const{normalize:t}=e;return t(["zwak"])},AVERAGE:e=>{const{normalize:t}=e;return t(["gemiddeld"])},GOOD:e=>{const{normalize:t}=e;return t(["goed"])},STRONG:e=>{const{normalize:t}=e;return t(["sterk"])},LABEL:e=>{const{normalize:t}=e;return t(["wachtwoord sterkte"])},SUGGESTIONS:{l33t:e=>{const{normalize:t}=e;return t(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},reverseWords:e=>{const{normalize:t}=e;return t(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},capitalization:e=>{const{normalize:t}=e;return t(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:t}=e;return t(["Vermijd persoonlijke gegevens en jaartallen."])},recentYears:e=>{const{normalize:t}=e;return t(["Vermijd recente jaartallen."])},sequences:e=>{const{normalize:t}=e;return t(["Vermijd voorspelbare opeenvolgingen."])},repeated:e=>{const{normalize:t}=e;return t(["Vermijd opeenvolgende woorden en karakters."])},longerKeyboardPattern:e=>{const{normalize:t}=e;return t(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},anotherWord:e=>{const{normalize:t}=e;return t(["Voeg meer niet gangbare woorden toe."])},pwned:e=>{const{normalize:t}=e;return t(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},allUppercase:e=>{const{normalize:t}=e;return t(["Gebruik enkele hoofdletters."])},associatedYears:e=>{const{normalize:t}=e;return t(["Vermijd jaartallen met een persoonlijke betekenis."])},useWords:e=>{const{normalize:t}=e;return t(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])},noNeed:e=>{const{normalize:t}=e;return t(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])}}},PROFILE:{ASCENT_DATA:e=>{const{normalize:t}=e;return t(["Hoogte gerelateerde data (opnames, totaal)"])},ACCOUNT_EDITION:e=>{const{normalize:t}=e;return t(["Account aanpassen"])},BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Terug naar profiel"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:t}=e;return t(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:t}=e;return t(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:t}=e;return t(["Sport voorkeuren wijzigen"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Voornaam"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Eerste dag van de week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Taal"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Achternaam"])},LOCATION:e=>{const{normalize:t}=e;return t(["Locatie"])},MONDAY:e=>{const{normalize:t}=e;return t(["Maandag"])},PICTURE:e=>{const{normalize:t}=e;return t(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Afbeelding aanpassen"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Afbeelding veranderen"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Afbeelding verwijderen"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Voorkeuren aanpassen"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Datum registratie"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:t}=e;return t(["account"])},APPS:e=>{const{normalize:t}=e;return t(["apps"])},PICTURE:e=>{const{normalize:t}=e;return t(["afbeelding"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["voorkeuren"])},PROFILE:e=>{const{normalize:t}=e;return t(["profiel"])},SPORTS:e=>{const{normalize:t}=e;return t(["sporten"])}},SPORT:{ACTION:e=>{const{normalize:t}=e;return t(["actie"])},COLOR:e=>{const{normalize:t}=e;return t(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:t}=e;return t(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:t}=e;return t(["actief"])},LABEL:e=>{const{normalize:t}=e;return t(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:t}=e;return t(["snelheidsgrens voor stilstand"])}},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:t}=e;return t(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:t}=e;return t(["Uw account werd succesvol bijgewerkt."])},UNITS:{LABEL:e=>{const{normalize:t}=e;return t(["Eenheid voor afstand"])},IMPERIAL:e=>{const{normalize:t}=e;return t(["Imperialistisch systeem (ft, mi)"])},METRIC:e=>{const{normalize:t}=e;return t(["Metrisch systeem (m, km)"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Tijdzone"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Gelieve ",n(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},SPORTS_EDITION:e=>{const{normalize:t}=e;return t(["Sport voorkeuren aanpassen"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registreren is uitgeschakeld."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset uw wachtwoord"])},SHOW_PASSWORD:e=>{const{normalize:t}=e;return t(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:t}=e;return t(["Deze account is niet actief."])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["gebruikersafbeelding"])},USERNAME:e=>{const{normalize:t}=e;return t(["Gebruikersnaam"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Taal"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Uw wachtwoord werd aangepast. Klik ",n(r(0))," om in te loggen."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Opnieuw zenden van account bevestigingsmail"])},USERNAME_INFO:e=>{const{normalize:t}=e;return t(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])}},_={ASCENT:e=>{const{normalize:t}=e;return t(["geklommen"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["gem. snelheid"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["gemiddelde snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["Terug naar training"])},DATE:e=>{const{normalize:t}=e;return t(["datum"])},DESCENT:e=>{const{normalize:t}=e;return t(["gedaald"])},DISTANCE:e=>{const{normalize:t}=e;return t(["afstand"])},DURATION:e=>{const{normalize:t}=e;return t(["duur"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Training aanpassen"])},ELEVATION:e=>{const{normalize:t}=e;return t(["hoogte"])},END:e=>{const{normalize:t}=e;return t(["einde"])},FROM:e=>{const{normalize:t}=e;return t(["van"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["verberg filters"])},INVALID_DISTANCE:e=>{const{normalize:t}=e;return t(["De afstand moet groter zijn dan 0"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. hoogte"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max. grootte"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Volgende training"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Geen vorige training"])},NOTES:e=>{const{normalize:t}=e;return t(["notities"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Vorige training"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Geen records."])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Gem. snelheid"])},RECORD_HA:e=>{const{normalize:t}=e;return t(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Langste duur"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["resterende karakters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segmenten"])])},SPEED:e=>{const{normalize:t}=e;return t(["snelheid"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sporten"])])},START:e=>{const{normalize:t}=e;return t(["start"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:t}=e;return t(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:t}=e;return t(["titel"])},TO:e=>{const{normalize:t}=e;return t(["aan"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Eén uploaden!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperatuur"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},WIND_DIRECTIONS:{N:e=>{const{normalize:t}=e;return t(["N"])},NNE:e=>{const{normalize:t}=e;return t(["NNO"])},NE:e=>{const{normalize:t}=e;return t(["NO"])},E:e=>{const{normalize:t}=e;return t(["O"])},ESE:e=>{const{normalize:t}=e;return t(["OZO"])},SE:e=>{const{normalize:t}=e;return t(["ZO"])},SSE:e=>{const{normalize:t}=e;return t(["ZZO"])},SSW:e=>{const{normalize:t}=e;return t(["ZZW"])},SW:e=>{const{normalize:t}=e;return t(["ZW"])},WSW:e=>{const{normalize:t}=e;return t(["WZW"])},W:e=>{const{normalize:t}=e;return t(["W"])},WNW:e=>{const{normalize:t}=e;return t(["WNW"])},NW:e=>{const{normalize:t}=e;return t(["NW"])},NNW:e=>{const{normalize:t}=e;return t(["NNW"])},ENE:e=>{const{normalize:t}=e;return t(["ONO"])},S:e=>{const{normalize:t}=e;return t(["Z"])}},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["heldere dag"])},"clear-night":e=>{const{normalize:t}=e;return t(["heldere nacht"])},cloudy:e=>{const{normalize:t}=e;return t(["bewolkt"])},fog:e=>{const{normalize:t}=e;return t(["mist"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:t}=e;return t(["regen"])},sleet:e=>{const{normalize:t}=e;return t(["natte sneeuw"])},snow:e=>{const{normalize:t}=e;return t(["sneeuw"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["met .gpx bestand"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["zonder .gpx bestand"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["training"]),t(["trainingen"])])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["of .zip archief met .gpx bestanden"])},ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["toon filters"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data vanuit gpx, zonder op te schonen"])},INVALID_DURATION:e=>{const{normalize:t}=e;return t(["De duur moet langer zijn dan 0 seconden"])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Geen trainingen."])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Langste afstand"])},START_AND_FINISH:e=>{const{normalize:t}=e;return t(["Start en aankomst"])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["datum training"])}},S={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,sports:d,statistics:m,user:E,workouts:_}},4380:function(e,t,n){"use strict";var r=n(3148),a=n(7028),o=n(9963),i=n(2343),s=n(5205);(0,s.z)("/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});var l=n(6252),c=n(2262),u=n(3577);const d=e=>((0,l.dD)("data-v-2c73279e"),e=e(),(0,l.Cn)(),e),m={id:"footer"},E={class:"footer-items"},_={class:"footer-item"},S=d((()=>(0,l._)("strong",null,"FitTrackee",-1))),T=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),p={class:"footer-item"},A={key:0,class:"footer-item bullet"},O={key:1,class:"footer-item"},I=["href"],R=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),g={class:"footer-item"},U={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"};var z=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const t=e,{adminContact:n,version:r}=(0,c.BK)(t);return(e,t)=>{const a=(0,l.up)("router-link");return(0,l.wg)(),(0,l.iD)("div",m,[(0,l._)("div",E,[(0,l._)("div",_,[S,(0,l.Uk)(" v"+(0,u.zw)((0,c.SU)(r)),1)]),T,(0,l._)("div",p,[(0,l.Wm)(a,{to:"/about"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("common.ABOUT")),1)])),_:1})]),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(n)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(n)}`},(0,u.zw)(e.$t("common.CONTACT")),9,I)])):(0,l.kq)("",!0),R,(0,l._)("div",g,[(0,l._)("a",U,(0,u.zw)(e.$t("common.DOCUMENTATION")),1)])])])}}}),N=n(3744);const h=(0,N.Z)(z,[["__scopeId","data-v-2c73279e"]]);var w=h,v=(n(7658),n(6595)),C=n(5801),f=n(9917),D=n(6287);const k=e=>((0,l.dD)("data-v-ab6e62ae"),e=e(),(0,l.Cn)(),e),P={id:"nav"},L={class:"nav-container"},M={class:"nav-app-name"},b={class:"nav-items-close"},y=k((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),G={key:0,class:"nav-items-group"},F=k((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),W={class:"nav-items-user-menu"},K={key:0,class:"nav-items-group"},B={class:"nav-item nav-profile-img"},Y={key:1,class:"nav-items-group"},x=k((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var $=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:t}){const n=(0,f.o)(),r=(0,l.Fl)((()=>n.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>n.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,t("menuInteraction",!0)}function d(){i.value=!1,t("menuInteraction",!1)}function m(e){n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){n.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,t)=>{const n=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",L,[(0,l._)("div",M,[(0,l._)("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=t=>e.$router.push("/"))}," FitTrackee ")]),(0,l._)("div",{class:(0,u.C_)(["nav-icon-open",{"menu-open":i.value}])},[(0,l._)("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[y,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:t[2]||(t[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",G,[(0,l.Wm)(n,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,u.kC)(e.$t("workouts.WORKOUT",2))),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/workouts/add"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("workouts.ADD_WORKOUT")),1)])),_:1}),(0,c.SU)(a)&&(0,c.SU)(r).admin?((0,l.wg)(),(0,l.j4)(n,{key:0,class:"nav-item",to:"/admin"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("admin.ADMIN")),1)])),_:1})):(0,l.kq)("",!0),F])):(0,l.kq)("",!0)]),(0,l._)("div",W,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",K,[(0,l._)("div",B,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(n,{class:"nav-item",to:"/profile",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(r).username),1)])),_:1}),(0,l._)("div",{class:"nav-item nav-link",onClick:E},(0,u.zw)(e.$t("user.LOGOUT")),1)])):((0,l.wg)(),(0,l.iD)("div",Y,[(0,l.Wm)(n,{class:"nav-item",to:"/login",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.LOGIN")),1)])),_:1}),(0,l.Wm)(n,{class:"nav-item",to:"/register",onClick:d},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("user.REGISTER")),1)])),_:1})])),(0,c.SU)(D.mT)&&(0,c.SU)(o)?((0,l.wg)(),(0,l.j4)(_,{key:2,class:"nav-item",options:(0,c.SU)(D.mT),selected:(0,c.SU)(o),onSelected:m},{default:(0,l.w5)((()=>[x])),_:1},8,["options","selected"])):(0,l.kq)("",!0)])],2)])])}}});const Z=(0,N.Z)($,[["__scopeId","data-v-ab6e62ae"]]);var H=Z,V=n(7167);const q={id:"no-config"},j={class:"error-page"},X={class:"error-img"},J=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,t)=>((0,l.wg)(),(0,l.iD)("div",q,[(0,l._)("div",j,[(0,l._)("div",X,[(0,l.Wm)(V.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,J)])]))}});const ee=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var te=ee;const ne=(0,l._)("div",{id:"top"},null,-1),re={key:0,class:"app-container"},ae={class:"app-loading"},oe={class:"container scroll"},ie=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),se=[ie];var le=(0,l.aZ)({__name:"App",setup(e){const t=(0,f.o)(),n=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.APP_LOADING])),a=(0,c.iH)(!1),o=(0,c.iH)(!1);function i(e){a.value=e}function s(e){return e.getBoundingClientRect().top=0}function d(){window.onscroll=()=>{const e=document.querySelector("#bottom");o.value=null!==e&&s(e)}}function m(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((()=>{o.value=!1}),300)}function E(){let e="en";try{const t=navigator.language.split("-")[0];t in D.v1&&(e=t)}catch(n){e="en"}t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),t.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,t)=>{const s=(0,l.up)("Loader"),d=(0,l.up)("router-view");return(0,l.wg)(),(0,l.iD)(l.HY,null,[ne,(0,l.Wm)(H,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",re,[(0,l._)("div",ae,[(0,l.Wm)(s)])])):((0,l.wg)(),(0,l.iD)("div",{key:1,class:(0,u.C_)(["app-container",{"hide-scroll":a.value}])},[(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(te,{key:1}))],2)),(0,l._)("div",oe,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},se,2)]),(0,c.SU)(n)?((0,l.wg)(),(0,l.j4)(w,{key:2,version:(0,c.SU)(n)?(0,c.SU)(n).version:"",adminContact:(0,c.SU)(n).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const ce=le;var ue=ce,de=n(2540),me=n(7351),Ee=n(2894);const _e={class:"alert-message"},Se=["innerHTML"];var Te=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",_e,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(n))},null,8,Se)]))}});const pe=(0,N.Z)(Te,[["__scopeId","data-v-69d7e4ff"]]);var Ae=pe,Oe=n(2531);const Ie={class:"custom-textarea"},Re=["id","name","maxLenght","disabled"],ge={class:"remaining-chars"};var Ue=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:t}){const n=e,r=(0,c.iH)("");function a(e){t("updateValue",e.target.value)}return(0,l.YP)((()=>n.input),(e=>{r.value=null===e?"":e})),(t,n)=>((0,l.wg)(),(0,l.iD)("div",Ie,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":n[0]||(n[0]=e=>r.value=e),onInput:a},null,40,Re),[[o.nr,r.value]]),(0,l._)("div",ge,(0,u.zw)(t.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const ze=(0,N.Z)(Ue,[["__scopeId","data-v-8cf5cc64"]]);var Ne=ze,he=n(3649),we=(0,l.aZ)({__name:"Distance",props:{distance:null,unitFrom:null,useImperialUnits:{type:Boolean},digits:{default:2},displayUnit:{type:Boolean,default:!0},speed:{type:Boolean,default:!1},strong:{type:Boolean,default:!1}},setup(e){const t=e,{digits:n,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(t),m=(0,l.Fl)((()=>d.value?he.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,he.sC)(a.value,s.value,m.value,n.value):parseFloat(a.value.toFixed(n.value))));return(e,t)=>((0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("span",{class:(0,u.C_)(["distance",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(E)),3),(0,l.Uk)(" "+(0,u.zw)(" ")+" "),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("span",{key:0,class:(0,u.C_)(["unit",{strong:(0,c.SU)(i)}])},(0,u.zw)((0,c.SU)(m))+(0,u.zw)((0,c.SU)(o)?"/h":""),3)):(0,l.kq)("",!0)],64))}});const ve=(0,N.Z)(we,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,fe=n(2201);const De={class:"dropdown-wrapper"},ke={key:0,class:"dropdown-list"},Pe=["onClick"];var Le=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:t}){const n=e,r=(0,fe.yj)(),a=(0,c.iH)(!1),o=n.options.map((e=>e));function i(){a.value=!a.value}function s(e){t("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(t,n)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(t.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",ke,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:e=>s(t)},(0,u.zw)(t.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Me=(0,N.Z)(Le,[["__scopeId","data-v-9590c0e6"]]);var be=Me;const ye={class:"error-message"},Ge={key:0},Fe={key:1};var We=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const t=e,{message:n}=(0,c.BK)(t);return(e,t)=>((0,l.wg)(),(0,l.iD)("div",ye,[Array.isArray((0,c.SU)(n))?((0,l.wg)(),(0,l.iD)("ul",Ge,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(n),((t,n)=>((0,l.wg)(),(0,l.iD)("li",{key:n},(0,u.zw)(e.$t(t)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Fe,(0,u.zw)(e.$t((0,c.SU)(n))),1))]))}});const Ke=(0,N.Z)(We,[["__scopeId","data-v-2659a79a"]]);var Be=Ke;const Ye={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},xe=(0,l._)("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),$e=(0,l._)("g",null,[(0,l._)("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),(0,l._)("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),Ze=[xe,$e];function He(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Ye,Ze)}var Ve={name:"CyclingSport"};const qe=(0,N.Z)(Ve,[["render",He]]);var je=qe;const Xe={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Je=(0,l._)("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Qe=(0,l._)("g",{id:"g147"},[(0,l._)("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),(0,l._)("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),et=[Je,Qe];function tt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Xe,et)}var nt={name:"CyclingTransport"};const rt=(0,N.Z)(nt,[["render",tt]]);var at=rt;const ot={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},it=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),st=[it];function lt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",ot,st)}var ct={name:"CyclingVirtual"};const ut=(0,N.Z)(ct,[["render",lt]]);var dt=ut;const mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_t=(0,l._)("g",null,[(0,l._)("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),(0,l._)("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),St=[Et,_t];function Tt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"Hiking"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const It={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Rt=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),gt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),(0,l._)("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),(0,l._)("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),Ut=[Rt,gt];function zt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",It,Ut)}var Nt={name:"MountainBiking"};const ht=(0,N.Z)(Nt,[["render",zt]]);var wt=ht;const vt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Ct=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),ft=[Ct];function Dt(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,ft)}var kt={name:"MountainBikingElectric"};const Pt=(0,N.Z)(kt,[["render",Dt]]);var Lt=Pt;const Mt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},bt=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),yt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),(0,l._)("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),Gt=[bt,yt];function Ft(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Mt,Gt)}var Wt={name:"Rowing"};const Kt=(0,N.Z)(Wt,[["render",Ft]]);var Bt=Kt;const Yt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},xt=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),$t=(0,l._)("g",null,[(0,l._)("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),(0,l._)("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),Zt=[xt,$t];function Ht(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Yt,Zt)}var Vt={name:"Running"};const qt=(0,N.Z)(Vt,[["render",Ht]]);var jt=qt;const Xt={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Jt=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Qt=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),(0,l._)("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),en=[Jt,Qt];function tn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Xt,en)}var nn={name:"SkiingAlpine"};const rn=(0,N.Z)(nn,[["render",tn]]);var an=rn;const on={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},sn=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),ln=(0,l._)("g",null,[(0,l._)("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),cn=[sn,ln];function un(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",on,cn)}var dn={name:"SkiingCrossCountry"};const mn=(0,N.Z)(dn,[["render",un]]);var En=mn;const _n={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},Sn=(0,l.uE)('silhouette of a person with snowshoes',6),Tn=[Sn];function pn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",_n,Tn)}var An={name:"Snowshoes"};const On=(0,N.Z)(An,[["render",pn]]);var In=On;const Rn={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},gn=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),Un=(0,l._)("g",null,[(0,l._)("g",null,[(0,l._)("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),(0,l._)("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),zn=[gn,Un];function Nn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Rn,zn)}var hn={name:"Trail"};const wn=(0,N.Z)(hn,[["render",Nn]]);var vn=wn;const Cn={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},fn=(0,l.uE)('silhouette of a walking person',3),Dn=[fn];function kn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"Walking"};const Ln=(0,N.Z)(Pn,[["render",kn]]);var Mn=Ln;const bn=["title"];var yn=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const t=e,{color:n,sportLabel:r,title:a}=(0,c.BK)(t),o=(0,l.f3)("sportColors");return(e,t)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(n)?(0,c.SU)(n):(0,c.SU)(o)[(0,c.SU)(r)]}),title:(0,c.SU)(a)?(0,c.SU)(a):e.$t(`sports.${(0,c.SU)(r)}.LABEL`)},["Cycling (Sport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(je,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(at,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(wt,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:5})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Bt,{key:6})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(jt,{key:7})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(an,{key:8})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(En,{key:9})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(In,{key:10})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:11})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Mn,{key:12})):(0,l.kq)("",!0)],12,bn))}});const Gn=yn;var Fn=Gn;const Wn={class:"loader"};function Kn(e,t){return(0,l.wg)(),(0,l.iD)("div",Wn)}const Bn={},Yn=(0,N.Z)(Bn,[["render",Kn],["__scopeId","data-v-4c9921ee"]]);var xn=Yn;const $n={id:"modal"},Zn={class:"custom-modal"},Hn={key:0,class:"modal-message"},Vn={key:1,class:"modal-message"},qn={class:"modal-buttons"};var jn=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:t}){const n=e,r=(0,f.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(n),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,n)=>{const r=(0,l.up)("i18n-t"),d=(0,l.up)("ErrorMessage"),m=(0,l.up)("Card");return(0,l.wg)(),(0,l.iD)("div",$n,[(0,l._)("div",Zn,[(0,l.Wm)(m,null,{title:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)((0,c.SU)(a)),1)])),content:(0,l.w5)((()=>[(0,c.SU)(i)?((0,l.wg)(),(0,l.iD)("div",Hn,[(0,l.Wm)(r,{keypath:(0,c.SU)(o)},{default:(0,l.w5)((()=>[(0,l._)("span",null,(0,u.zw)((0,c.SU)(i)),1)])),_:1},8,["keypath"])])):((0,l.wg)(),(0,l.iD)("div",Vn,(0,u.zw)((0,c.SU)(o)),1)),(0,c.SU)(s)?((0,l.wg)(),(0,l.j4)(d,{key:2,message:(0,c.SU)(s)},null,8,["message"])):(0,l.kq)("",!0),(0,l._)("div",qn,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:n[0]||(n[0]=e=>t("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:n[1]||(n[1]=e=>t("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const Xn=(0,N.Z)(jn,[["__scopeId","data-v-e8fcfaba"]]);var Jn=Xn;const Qn=[{target:Ae,name:"AlertMessage"},{target:Oe.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Be,name:"ErrorMessage"},{target:xn,name:"Loader"},{target:Jn,name:"Modal"},{target:Fn,name:"SportImage"}],er={mounted:(e,t)=>{e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};var tr=n(631);r.kL.register(r.ZL,r.jn,r.od,r.De,r.Dx,r.u,r.Gu,r.vn,r.uw,r.ST,r.f$,a.Z);const nr=(0,o.ri)(ue).provide("sportColors",tr.Zo).use(de.Z).use(Ee.Z).use(me.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",er);Qn.forEach((e=>{nr.component(e.name,e.target)})),nr.mount("#app")},7351:function(e,t,n){"use strict";n.d(t,{Z:function(){return wl}});var r=n(2201),a=(n(7658),n(6252)),o=n(3577),i=n(9963),s=n(2262),l=n(5801),c=n(9917),u=n(8966);const d=e=>((0,a.dD)("data-v-24ec93e2"),e=e(),(0,a.Cn)(),e),m={id:"admin-app",class:"admin-card"},E=["onSubmit"],_={for:"admin_contact"},S=["value"],T=["disabled"],p={for:"max_users"},A=["disabled"],O={class:"user-limit-help"},I={class:"info-box"},R=d((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),g={for:"max_single_file_size"},U=["disabled"],z={for:"max_zip_file_size"},N=["disabled"],h={for:"gpx_limit_import"},w=["disabled"],v={key:1,class:"form-buttons"},C={class:"confirm",type:"submit"},f=["onClick"],D={key:2,class:"form-buttons"};var k=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const t=e,{edition:n}=(0,s.BK)(t),d=(0,c.o)(),k=(0,r.tv)(),P=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),L=(0,a.Fl)((()=>d.getters[l.SY.GETTERS.ERROR_MESSAGES]));function M(e){Object.keys(P).map((t=>{["max_single_file_size","max_zip_file_size"].includes(t)?P[t]=(0,u.j)(e[t]):P[t]=e[t]}))}function b(){M(t.appConfig),d.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),k.push("/admin/application")}function y(){const e=Object.assign({},P);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,d.dispatch(l.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{t.appConfig&&M(t.appConfig)})),(e,t)=>{const r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",m,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("form",{class:"admin-form",onSubmit:(0,i.iM)(y,["prevent"])},[(0,a._)("label",_,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(n)||P.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":t[0]||(t[0]=e=>P.admin_contact=e),disabled:!(0,s.SU)(n)},null,8,T)),[[i.nr,P.admin_contact]]):((0,a.wg)(),(0,a.iD)("input",{key:0,class:"no-contact",value:e.$t("admin.APP_CONFIG.NO_CONTACT_EMAIL"),disabled:""},null,8,S))]),(0,a._)("label",p,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[1]||(t[1]=e=>P.max_users=e),disabled:!(0,s.SU)(n)},null,8,A),[[i.nr,P.max_users]])]),(0,a._)("div",O,[(0,a._)("span",I,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",g,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=e=>P.max_single_file_size=e),disabled:!(0,s.SU)(n)},null,8,U),[[i.nr,P.max_single_file_size]])]),(0,a._)("label",z,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[3]||(t[3]=e=>P.max_zip_file_size=e),disabled:!(0,s.SU)(n)},null,8,N),[[i.nr,P.max_zip_file_size]])]),(0,a._)("label",h,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),(0,a.wy)((0,a._)("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[4]||(t[4]=e=>P.gpx_limit_import=e),disabled:!(0,s.SU)(n)},null,8,w),[[i.nr,P.gpx_limit_import]])]),(0,s.SU)(L)?((0,a.wg)(),(0,a.j4)(r,{key:0,message:(0,s.SU)(L)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(n)?((0,a.wg)(),(0,a.iD)("div",v,[(0,a._)("button",C,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(b,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,f)])):((0,a.wg)(),(0,a.iD)("div",D,[(0,a._)("button",{class:"confirm",onClick:t[5]||(t[5]=(0,i.iM)((t=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:t[6]||(t[6]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,E)])),_:1})])}}}),P=n(3744);const L=(0,P.Z)(k,[["__scopeId","data-v-24ec93e2"]]);var M=L;const b={class:"stat-card"},y={class:"stat-content box"},G={class:"stat-icon"},F={class:"stat-details"},W={class:"stat-huge"},K={class:"stat"};var B=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const t=e,{icon:n,text:r,value:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",b,[(0,a._)("div",y,[(0,a._)("div",G,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(n)}`])},null,2)]),(0,a._)("div",F,[(0,a._)("div",W,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",K,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const Y=B;var x=Y;const $={id:"user-stats"};var Z=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const t=e,{appStatistics:n}=(0,s.BK)(t),r=(0,a.Fl)((()=>(0,u.Z)(n.value.uploads_dir_size,!1)));return(e,t)=>((0,a.wg)(),(0,a.iD)("div",$,[(0,a.Wm)(x,{icon:"users",value:(0,s.SU)(n).users,text:e.$t("admin.USER",(0,s.SU)(n).users)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"tags",value:(0,s.SU)(n).sports,text:e.$t("workouts.SPORT",(0,s.SU)(n).sports)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"calendar",value:(0,s.SU)(n).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(n).workouts)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const H=Z;var V=H,q=n(2531);const j=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),X={id:"admin-menu",class:"center-card"},J={class:"admin-menu description-list"},Q={class:"application-config-details"},ee=j((()=>(0,a._)("br",null,null,-1))),te={class:"registration-status"},ne={key:0,class:"email-sending-status"},re=j((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var ae=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const t=e,{appConfig:n,appStatistics:r}=(0,s.BK)(t);return(e,t)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(q.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(V,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",J,[(0,a._)("dl",null,[(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/application"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.APPLICATION")),1)])),_:1})]),(0,a._)("dd",Q,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),ee,(0,a._)("span",te,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(n).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(n).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ne,[re,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.EMAIL_SENDING_DISABLED")),1)]))]),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/sports"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("workouts.SPORT",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),(0,a._)("dt",null,[(0,a.Wm)(i,{to:"/admin/users"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),_:1})]),(0,a._)("dd",null,(0,o.zw)(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])])),_:1})])}}});const oe=(0,P.Z)(ae,[["__scopeId","data-v-0dd66f89"]]);var ie=oe,se=n(9150),le=n(631);const ce=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),ue={id:"admin-sports",class:"admin-card"},de={class:"responsive-table"},me=ce((()=>(0,a._)("th",null,"#",-1))),Ee={class:"text-left"},_e={class:"text-left sport-action"},Se=ce((()=>(0,a._)("th",null,null,-1))),Te={class:"text-center"},pe=ce((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),Ae={class:"cell-heading"},Oe={class:"sport-label"},Ie={class:"cell-heading"},Re={class:"text-center"},ge={class:"cell-heading"},Ue={class:"sport-action"},ze={class:"cell-heading"},Ne={class:"action-button"},he=["onClick"],we={key:0,class:"has-workouts"},ve=ce((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var Ce=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:t}=(0,se.QT)(),n=(0,c.o)(),r=(0,a.Fl)((()=>(0,le.xH)(n.getters[l.O8.GETTERS.SPORTS],t))),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(e,t){n.dispatch(l.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return(e,t)=>{const n=(0,a.up)("SportImage"),l=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ue,[(0,a.Wm)(c,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.SPORTS.TITLE")),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",de,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[me,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ee,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("th",_e,(0,o.zw)(e.$t("admin.ACTION")),1),Se])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.id},[(0,a._)("td",Te,[pe,(0,a.Uk)(" "+(0,o.zw)(t.id),1)]),(0,a._)("td",null,[(0,a._)("span",Ae,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(n,{title:t.translatedLabel,"sport-label":t.label,color:t.color},null,8,["title","sport-label","color"])]),(0,a._)("td",Oe,[(0,a._)("span",Ie,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(t.translatedLabel),1)]),(0,a._)("td",Re,[(0,a._)("span",ge,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(t.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",Ue,[(0,a._)("span",ze,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",Ne,[(0,a._)("button",{class:(0,o.C_)({danger:t.is_active}),onClick:e=>d(t.id,!t.is_active)},(0,o.zw)(e.$t(`buttons.${t.is_active?"DIS":"EN"}ABLE`)),11,he),t.has_workouts?((0,a.wg)(),(0,a.iD)("span",we,[ve,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const fe=(0,P.Z)(Ce,[["__scopeId","data-v-6d62af67"]]);var De=fe,ke=n(8626),Pe=n(5020),Le=n(6595);const Me={class:"users-filters"},be={class:"search-username"},ye=["onKeyup","placeholder"];var Ge=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:t}){const n=(0,r.yj)(),l=(0,s.iH)(n.query.q?n.query.q:"");function c(){""!==l.value&&t("filterOnUsername",l)}function u(){l.value="",t("filterOnUsername",l.value)}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Me,[(0,a._)("div",be,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":t[0]||(t[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,ye),[[i.nr,l.value,void 0,{trim:!0}]]),""!==l.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-times","aria-hidden":"true",onClick:u})):(0,a.kq)("",!0)]),(0,a._)("i",{class:(0,o.C_)(["fa fa-search",{"fa-disabled":""===l.value}]),"aria-hidden":"true",onClick:c},null,2)]))}});const Fe=(0,P.Z)(Ge,[["__scopeId","data-v-627a8e91"]]);var We=Fe,Ke=n(2766),Be=n(6558);const Ye=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),xe={id:"admin-users",class:"admin-card"},$e={key:0,class:"no-users"},Ze={key:1,class:"responsive-table"},He=Ye((()=>(0,a._)("th",null,"#",-1))),Ve={class:"left-text"},qe={class:"left-text"},je={class:"left-text"},Xe={class:"cell-heading"},Je={class:"cell-heading"},Qe={class:"cell-heading"},et={class:"cell-heading"},tt={class:"text-center"},nt={class:"cell-heading"},rt={class:"text-center"},at={class:"cell-heading"},ot={class:"text-center"},it={class:"cell-heading"},st={class:"text-center"},lt={class:"cell-heading"},ct=["disabled","onClick"];var ut=(0,a.aZ)({__name:"AdminUsers",setup(e){const t=(0,c.o)(),n=(0,r.yj)(),u=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,Ke.pm)(n.query,d,m));const _=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>t.getters[l.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES]));function A(e){t.dispatch(l.RT.ACTIONS.GET_USERS,e)}function O(e){R("q",e.value)}function I(e,n){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,admin:n})}function R(e,t){E[e]=t,"per_page"===e&&(E.page=1),u.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{t.dispatch(l.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>n.query),(e=>{E=(0,Ke.pm)(e,d,m,{query:E}),A(E)})),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",xe,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,o.kC)(e.$t("admin.USER",0))),1)])),content:(0,a.w5)((()=>[(0,a._)("button",{class:"top-button",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(We,{onFilterOnUsername:O}),(0,a.Wm)(ke.Z,{sort:(0,s.SU)(Ke.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:R},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",$e,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",Ze,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[He,(0,a._)("th",Ve,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",qe,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",je,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a._)("th",null,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("th",null,(0,o.zw)(e.$t("admin.ACTION")),1)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(t=>((0,a.wg)(),(0,a.iD)("tr",{key:t.username},[(0,a._)("td",null,[(0,a._)("span",Xe,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Le.Z,{user:t},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",Je,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(n,{to:`/admin/users/${t.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",Qe,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(t.email),1)]),(0,a._)("td",null,[(0,a._)("span",et,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(Be.p6)(t.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",tt,[(0,a._)("span",nt,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(t.nb_workouts),1)]),(0,a._)("td",rt,[(0,a._)("span",at,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",ot,[(0,a._)("span",it,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${t.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",st,[(0,a._)("span",lt,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:t.admin}),disabled:t.username===(0,s.SU)(_).username,onClick:e=>I(t.username,!t.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${t.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,ct)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Pe.Z,{key:0,path:"/admin/users",pagination:(0,s.SU)(T),query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,s.SU)(p)?((0,a.wg)(),(0,a.j4)(r,{key:1,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:t[1]||(t[1]=(0,i.iM)((t=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const dt=(0,P.Z)(ut,[["__scopeId","data-v-dc12ff78"]]);var mt=dt,Et=n(2179);const _t={class:"profile-tabs custom-checkboxes-group"},St={class:"profile-tabs-checkboxes custom-checkboxes"},Tt=["id","name","checked","disabled","onInput"];var pt=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const t=e,{tabs:n,selectedTab:r,disabled:i}=(0,s.BK)(t);function l(e){switch(e){case"ACCOUNT":case"PICTURE":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${t.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(t.edition?"/edit":"")}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",_t,[(0,a._)("div",St,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(n),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:t},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:t,name:t,checked:(0,s.SU)(r).split("/")[0]===t,disabled:(0,s.SU)(i),onInput:n=>e.$router.push(l(t))},null,40,Tt),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${t}`)),1)])])))),128))])]))}});const At=pt;var Ot=At;const It={id:"user-profile"},Rt={class:"box"};var gt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,{user:n,tab:r}=(0,s.BK)(t),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,t)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",It,[(0,a.Wm)(Et.Z,{user:(0,s.SU)(n)},null,8,["user"]),(0,a._)("div",Rt,[(0,a.Wm)(Ot,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(n)},null,8,["user"])])])}}});const Ut=(0,P.Z)(gt,[["__scopeId","data-v-9729cba4"]]);var zt=Ut,Nt=n(1585),ht=n(6287);const wt={id:"user-preferences",class:"description-list"},vt={class:"profile-buttons"};var Ct=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>t.user.language?ht.zK[t.user.language]:ht.zK.en)),u=(0,a.Fl)((()=>t.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>t.user.timezone?t.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>t.user.date_format?t.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>t.user.display_ascent?"DISPLAYED":"HIDDEN"));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",wt,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(Be.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`user.PROFILE.${(0,s.SU)(u)}`)),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(t.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(t.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",vt,[(0,a._)("button",{onClick:n[0]||(n[0]=e=>t.$router.push("/profile/edit/preferences"))},(0,o.zw)(t.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:n[1]||(n[1]=e=>t.$router.push("/"))},(0,o.zw)(t.$t("common.HOME")),1)])]))}});const ft=Ct;var Dt=ft;const kt={id:"user-profile-edition",class:"center-card"};var Pt=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const t=e,n=(0,c.o)(),{user:r,tab:i}=(0,s.BK)(t),u=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS"],d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING]));return(e,t)=>{const n=(0,a.up)("router-view"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",kt,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t(`user.PROFILE.${(0,s.SU)(i)}_EDITION`)),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Ot,{tabs:u,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(n,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const Lt=Pt;var Mt=Lt,bt=n(8403);const yt={id:"user-infos-edition"},Gt={class:"profile-form form-box"},Ft={key:1,class:"info-box success-message"},Wt=["onSubmit"],Kt={class:"form-items",for:"email"},Bt=["disabled"],Yt={class:"form-items",for:"password-field"},xt={class:"form-items",for:"new-password-field"},$t={class:"form-buttons"},Zt={class:"confirm",type:"submit"};var Ht=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const t=e,{user:n}=(0,s.BK)(t),r=(0,c.o)(),u=(0,s.qj)({email:"",password:"",new_password:""}),d=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.APP_CONFIG])),E=(0,a.Fl)((()=>r.getters[l.YN.GETTERS.IS_SUCCESS])),_=(0,s.iH)(!1),S=(0,a.Fl)((()=>r.getters[l.SY.GETTERS.ERROR_MESSAGES])),T=(0,s.iH)(!1),p=(0,s.iH)(!1);function A(){T.value=!0}function O(e){u.email=e.email}function I(e){u.password=e}function R(e){u.new_password=e}function g(){const e={email:u.email,password:u.password};u.new_password&&(e.new_password=u.new_password),_.value=u.email!==n.value.email,r.dispatch(l.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function U(e){p.value=e}function z(e){r.dispatch(l.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}return(0,a.bv)((()=>{t.user&&O(t.user)})),(0,a.Ah)((()=>{r.commit(l.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>E.value),(async e=>{e&&(I(""),R(""),O(n.value),T.value=!1)})),(0,a.YP)((()=>n.value.email),(async()=>{O(n.value)})),(e,t)=>{const r=(0,a.up)("Modal"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",yt,[p.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=e=>z((0,s.SU)(n).username)),onCancelAction:t[1]||(t[1]=e=>U(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Gt,[(0,s.SU)(S)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(S)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",Ft,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${_.value&&(0,s.SU)(m).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:T.value}),onSubmit:(0,i.iM)(g,["prevent"])},[(0,a._)("label",Kt,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=e=>u.email=e),disabled:(0,s.SU)(d),required:!0,onInvalid:A},null,40,Bt),[[i.nr,u.email]])]),(0,a._)("label",Yt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(bt.Z,{id:"password-field",disabled:(0,s.SU)(d),password:u.password,required:!0,onUpdatePassword:I,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("label",xt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(bt.Z,{id:"new-password-field",disabled:(0,s.SU)(d),checkStrength:!0,password:u.new_password,isSuccess:!1,onUpdatePassword:R,onPasswordError:A},null,8,["disabled","password"])]),(0,a._)("div",$t,[(0,a._)("button",Zt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,i.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:t[4]||(t[4]=(0,i.iM)((e=>U(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],42,Wt)])])}}});const Vt=(0,P.Z)(Ht,[["__scopeId","data-v-37b8c4c8"]]);var qt=Vt,jt=n(4850);const Xt={id:"user-infos-edition"},Jt={class:"profile-form form-box"},Qt=["onSubmit"],en={class:"form-items",for:"registrationDate"},tn=["value"],nn={class:"form-items",for:"first_name"},rn=["disabled"],an={class:"form-items",for:"last_name"},on={class:"form-items",for:"birth_date"},sn=["disabled"],ln={class:"form-items",for:"location"},cn=["disabled"],un={class:"form-items"},dn={class:"form-buttons"},mn={class:"confirm",type:"submit"};var En=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),u=(0,a.Fl)((()=>t.user.created_at?(0,Be.p6)(t.user.created_at,t.user.timezone,t.user.date_format):"")),d=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function E(e){r.first_name=e.first_name?e.first_name:"",r.last_name=e.last_name?e.last_name:"",r.birth_date=e.birth_date?(0,jt.Z)(new Date(e.birth_date),"yyyy-MM-dd"):"",r.location=e.location?e.location:"",r.bio=e.bio?e.bio:""}function _(e){r.bio=e}function S(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{t.user&&E(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage"),l=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Xt,[(0,a._)("div",Jt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(m)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(S,["prevent"])},[(0,a._)("label",en,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(u),disabled:""},null,8,tn)]),(0,a._)("label",nn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":t[0]||(t[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,rn),[[i.nr,r.first_name]])]),(0,a._)("label",an,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":t[1]||(t[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",on,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),(0,a.wy)((0,a._)("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[2]||(t[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,sn),[[i.nr,r.birth_date]])]),(0,a._)("label",ln,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":t[3]||(t[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,cn),[[i.nr,r.location]])]),(0,a._)("label",un,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(l,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",dn,[(0,a._)("button",mn,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,i.iM)((t=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Qt)])])}}});const _n=(0,P.Z)(En,[["__scopeId","data-v-5e5a4552"]]);var Sn=_n;const Tn=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),pn={id:"user-picture-edition"},An={class:"user-picture-form"},On=["onSubmit"],In={class:"picture-help"},Rn={class:"info-box"},gn=Tn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Un={class:"picture-buttons"},zn=["disabled"];var Nn=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,s.BK)(t),d=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,u.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){n.dispatch(l.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&n.dispatch(l.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",pn,[(0,a._)("div",An,[(0,s.SU)(d)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(d)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Le.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:T},null,32),(0,a._)("div",In,[(0,a._)("span",Rn,[gn,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Un,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,zn),(0,s.SU)(r).picture?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"danger",onClick:S},(0,o.zw)(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):(0,a.kq)("",!0),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,On)])])}}});const hn=(0,P.Z)(Nn,[["__scopeId","data-v-687e9604"]]);var wn=hn;const vn=["Africa/Abidjan","Africa/Accra","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fortaleza","America/Fort_Nelson","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"],Cn={id:"tz-dropdown"},fn=["value","disabled","onKeydown"],Dn=["onClick","onMouseover","autofocus"];var kn=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:t}){const n=e,{input:r,disabled:l}=(0,s.BK)(n),c=(0,s.iH)(n.input),u=(0,s.iH)(!1),d=(0,s.iH)(null),m=(0,s.iH)(0);function E(e){return e.toLowerCase().match(c.value.toLowerCase())}function _(e){m.value=e}function S(e){c.value=e,u.value=!1,t("updateTimezone",e)}function T(e){e.preventDefault(),d.value?.firstElementChild?.innerHTML&&S(d.value?.firstElementChild?.innerHTML)}function p(e){e.preventDefault(),u.value=!0,c.value=e.target.value.trim()}return(0,a.YP)((()=>n.input),(e=>{c.value=e})),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Cn,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[t[0]||(t[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,fn),u.value?((0,a.wg)(),(0,a.iD)("ul",{key:0,class:"tz-dropdown-list",ref_key:"tzList",ref:d},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(vn).filter((e=>E(e))),((e,t)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:t===m.value}]),onClick:t=>S(e),onMouseover:e=>_(t),autofocus:t===m.value},(0,o.zw)(e),43,Dn)))),128))],512)):(0,a.kq)("",!0)]))}});const Pn=(0,P.Z)(kn,[["__scopeId","data-v-47ea2903"]]);var Ln=Pn;const Mn={id:"user-preferences-edition"},bn={class:"profile-form form-box"},yn=["onSubmit"],Gn={class:"form-items"},Fn=["disabled"],Wn=["value"],Kn={class:"form-items"},Bn={class:"form-items"},Yn=["disabled"],xn=["value"],$n={class:"form-items form-checkboxes"},Zn={class:"checkboxes-label"},Hn={class:"checkboxes"},Vn=["id","name","checked","disabled","onInput"],qn={class:"checkbox-label"},jn={class:"form-items form-checkboxes"},Xn={class:"checkboxes-label"},Jn={class:"checkboxes"},Qn=["id","name","checked","disabled","onInput"],er={class:"checkbox-label"},tr={class:"form-items form-checkboxes"},nr={class:"checkboxes-label"},rr={class:"checkboxes"},ar=["id","name","checked","disabled","onInput"],or={class:"checkbox-label"},ir={class:"form-buttons"},sr={class:"confirm",type:"submit"};var lr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),u=[{label:"SUNDAY",value:!1},{label:"MONDAY",value:!0}],d=[{label:"METRIC",value:!1},{label:"IMPERIAL",value:!0}],m=[{label:"DISPLAYED",value:!0},{label:"HIDDEN",value:!1}],E=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,Be.d2)((new Date).toUTCString(),t.user.timezone,r.language)));function T(e){r.display_ascent=e.display_ascent,r.imperial_units=!!e.imperial_units&&e.imperial_units,r.language=e.language?e.language:"en",r.timezone=e.timezone?e.timezone:"Europe/Paris",r.date_format=e.date_format?e.date_format:"dd/MM/yyyy",r.weekm=!!e.weekm&&e.weekm}function p(){n.dispatch(l.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function I(e){r.imperial_units=e}function R(e){r.weekm=e}return(0,a.bv)((()=>{t.user&&T(t.user)})),(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,t)=>{const n=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("div",bn,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(n,{key:0,message:(0,s.SU)(_)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("form",{onSubmit:(0,i.iM)(p,["prevent"])},[(0,a._)("label",Gn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=e=>r.language=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(ht.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,Wn)))),128))],8,Fn),[[i.bM,r.language]])]),(0,a._)("label",Kn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(Ln,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",Bn,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":t[1]||(t[1]=e=>r.date_format=e),disabled:(0,s.SU)(E)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,xn)))),128))],8,Yn),[[i.bM,r.date_format]])]),(0,a._)("div",$n,[(0,a._)("span",Zn,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",Hn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(u,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>R(t.value)},null,40,Vn),(0,a._)("span",qn,(0,o.zw)(e.$t(`user.PROFILE.${t.label}`)),1)]))),64))])]),(0,a._)("div",jn,[(0,a._)("span",Xn,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Jn,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>I(t.value)},null,40,Qn),(0,a._)("span",er,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${t.label}`)),1)]))),64))])]),(0,a._)("div",tr,[(0,a._)("span",nr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",rr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(t=>(0,a._)("label",{key:t.label},[(0,a._)("input",{type:"radio",id:t.label,name:t.label,checked:t.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(t.value)},null,40,ar),(0,a._)("span",or,(0,o.zw)(e.$t(`common.${t.label}`)),1)]))),64))])]),(0,a._)("div",ir,[(0,a._)("button",sr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:t[2]||(t[2]=(0,i.iM)((t=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,yn)])])}}});const cr=(0,P.Z)(lr,[["__scopeId","data-v-3b8a9a12"]]);var ur=cr;const dr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],mr=["application:write"],Er={id:"new-oauth2-app"},_r={id:"new-oauth2-title"},Sr={id:"apps-form"},Tr=["onSubmit"],pr={class:"form-items"},Ar={class:"form-item"},Or={for:"app-name"},Ir={class:"form-item"},Rr={for:"app-description"},gr={class:"form-item"},Ur={for:"app-url"},zr={class:"form-item"},Nr={for:"app-redirect-uri"},hr={class:"form-item-scope"},wr={class:"form-item-scope-label"},vr={class:"scope-label"},Cr=["name","checked","onChange"],fr=["innerHTML"],Dr={class:"form-buttons"},kr=["disabled"];var Pr=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),u=(0,s.qj)([]),d=(0,a.Fl)((()=>S(t.authUser,mr,dr)));function m(){const e={client_name:r.client_name,client_description:r.client_description,client_uri:r.client_uri,redirect_uris:[r.redirect_uri],scope:u.sort().join(" ")};n.dispatch(l.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const t=u.indexOf(e);t>-1?u.splice(t,1):u.push(e)}function S(e,t,n){const r=[...n];return e.admin&&r.push(...t),r.sort()}return(e,t)=>{const n=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Er,[(0,a._)("h1",_r,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Sr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",pr,[(0,a._)("div",Ar,[(0,a._)("label",Or,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":t[0]||(t[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",Ir,[(0,a._)("label",Rr,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(n,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",gr,[(0,a._)("label",Ur,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":t[1]||(t[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",zr,[(0,a._)("label",Nr,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"app-redirect-uri",type:"text",required:"","onUpdate:modelValue":t[2]||(t[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",hr,[(0,a._)("div",wr,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+"* ",1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:t},[(0,a._)("label",vr,[(0,a._)("input",{type:"checkbox",name:t,checked:u.includes(t),onChange:e=>_(t)},null,40,Cr),(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,fr)])))),128))])]),(0,a._)("div",Dr,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===u.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,kr),(0,a._)("button",{class:"cancel",onClick:t[3]||(t[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Tr)])])}}});const Lr=(0,P.Z)(Pr,[["__scopeId","data-v-0657ee77"]]);var Mr=Lr;const br={id:"authorize-oauth2-app"},yr={key:0},Gr={id:"authorize-oauth2-title"},Fr={class:"oauth2-access description-list"},Wr={class:"client-scope"},Kr=["innerHTML"],Br={class:"authorize-oauth2-buttons"},Yr={key:1},xr={class:"no-app"};var $r=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const t=(0,r.yj)(),n=(0,c.o)(),i=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENT])),u=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES]));function d(){t.query.client_id&&"string"===typeof t.query.client_id&&n.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,t.query.client_id)}function m(){n.dispatch(l.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${t.query.client_id}`,redirect_uri:`${t.query.redirect_uri}`,response_type:`${t.query.response_type}`,scope:`${t.query.scope}`,state:`${t.query.state?t.query.state:""}`,code_challenge:`${t.query.code_challenge?t.query.code_challenge:""}`,code_challenge_method:`${t.query.code_challenge_method?t.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,t)=>{const n=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),l=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",br,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",yr,[(0,a._)("h1",Gr,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).name),1)])),_:1},8,["to"])])),_:1})]),(0,s.SU)(u)?((0,a.wg)(),(0,a.j4)(l,{key:0,message:(0,s.SU)(u)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",Fr,[(0,a._)("p",null,(0,o.zw)(e.$t("oauth2.APP_REQUESTING_ACCESS")),1),(0,a._)("dl",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(i).scope.split(" "),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[(0,a._)("dt",Wr,[(0,a._)("code",null,(0,o.zw)(t),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${t}_DESCRIPTION`)},null,8,Kr)],64)))),128))]),(0,a._)("div",Br,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",Yr,[(0,a._)("p",xr,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Zr=(0,P.Z)($r,[["__scopeId","data-v-3b2fe9ed"]]);var Hr=Zr;const Vr={id:"oauth2-apps"};var qr=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,n=(0,c.o)(),{user:r}=(0,s.BK)(t);return(0,a.Ah)((()=>{n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.Km.MUTATIONS.SET_CLIENTS,[])})),(e,t)=>{const n=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",Vr,[(0,a.Wm)(n,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const jr=qr;var Xr=jr;const Jr={id:"oauth2-app",class:"description-list"},Qr={key:1},ea={key:0,class:"info-box success-message"},ta=["title"],na={key:0},ra={key:1,class:"app-secret"},aa=["title"],oa={class:"client-scopes"},ia={class:"app-buttons"},sa={key:2},la={class:"no-app"};var ca=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,r.yj)(),i=(0,c.o)(),{afterCreation:u,authUser:d}=(0,s.BK)(t),m=(0,a.Fl)((()=>i.getters[l.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[l.Km.GETTERS.REVOCATION_SUCCESSFUL])),_=(0,s.iH)(!1),S=(0,s.iH)(null),T=(0,s.iH)(!1),p=(0,s.iH)(!1),A=(0,s.iH)(!1);function O(){!u.value&&n.params.id&&"string"===typeof n.params.id&&i.dispatch(l.Km.ACTIONS.GET_CLIENT_BY_ID,+n.params.id)}function I(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",R(!0)}function R(e){_.value=e,e||(S.value=null)}function g(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(l.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(l.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function U(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function z(){m.value.client_secret&&(navigator.clipboard.writeText(m.value.client_secret),p.value=!0,T.value=!1,setTimeout((()=>{p.value=!1}),3e3))}return(0,a.wF)((()=>{O(),navigator.clipboard&&(A.value=!0)})),(0,a.Ah)((()=>{i.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(l.Km.MUTATIONS.EMPTY_CLIENT),i.commit(l.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&R(!1)})),(e,t)=>{const n=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",Jr,[_.value?((0,a.wg)(),(0,a.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:t[0]||(t[0]=e=>g((0,s.SU)(m).id)),onCancelAction:t[1]||(t[1]=e=>R(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,s.SU)(m)&&(0,s.SU)(m).client_id?((0,a.wg)(),(0,a.iD)("div",Qr,[(0,s.SU)(u)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ea,(0,o.zw)(e.$t((0,s.SU)(u)?"oauth2.APP_CREATED_SUCCESSFULLY":"oauth2.TOKENS_REVOKED")),1)):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.CLIENT_ID"))+":",1),(0,a._)("dd",null,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_id)+" ",1),(0,s.SU)(u)&&A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(T.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:U},null,10,ta)):(0,a.kq)("",!0)]),(0,s.SU)(u)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",na,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(u)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",ra,[(0,a.Uk)((0,o.zw)((0,s.SU)(m).client_secret)+" ",1),A.value?((0,a.wg)(),(0,a.iD)("i",{key:0,class:(0,o.C_)("fa fa-"+(p.value?"check":"copy")),"aria-hidden":"true",title:e.$t("oauth2.COPY_TO_CLIPBOARD"),onClick:z},null,10,aa)):(0,a.kq)("",!0)])):(0,a.kq)("",!0),(0,a._)("dt",null,(0,o.zw)((0,o.kC)(e.$t("oauth2.APP.ISSUE_AT")))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(Be.p6)((0,s.SU)(m).issued_at,(0,s.SU)(d).timezone,(0,s.SU)(d).date_format)),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.NAME"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).name),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION"))+":",1),(0,a._)("dd",{class:(0,o.C_)({"no-description":!(0,s.SU)(m).client_description})},(0,o.zw)((0,s.SU)(m).client_description?(0,s.SU)(m).client_description:e.$t("oauth2.NO_DESCRIPTION")),3),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).website),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.REDIRECT_URL"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(m).redirect_uris.length>0?(0,s.SU)(m).redirect_uris[0]:""),1),(0,a._)("dt",null,(0,o.zw)(e.$t("oauth2.APP.SCOPE.LABEL"))+":",1),(0,a._)("dd",oa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(m).scope.split(" "),(e=>((0,a.wg)(),(0,a.iD)("span",{class:"client-scope",key:e},[(0,a._)("code",null,(0,o.zw)(e),1)])))),128))])]),(0,a._)("div",ia,[(0,a._)("button",{class:"danger",onClick:t[2]||(t[2]=e=>I(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:t[3]||(t[3]=e=>I(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:t[4]||(t[4]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",sa,[(0,a._)("p",la,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const ua=(0,P.Z)(ca,[["__scopeId","data-v-3a844fa2"]]);var da=ua;const ma={id:"oauth2-apps-list"},Ea={class:"apps-list"},_a={key:0},Sa={class:"app-issued-at"},Ta={key:1,class:"no-apps"},pa={class:"app-list-buttons"};var Aa=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const t=e,n=(0,c.o)(),i=(0,r.yj)(),{authUser:u}=(0,s.BK)(t),d=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>n.getters[l.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const t={};return e.page&&(t.page=(0,Ke.z_)(e.page,Ke.Hf)),t}function S(e){n.dispatch(l.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,t)=>{const n=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",ma,[(0,a._)("p",Ea,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",_a,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(t=>((0,a.wg)(),(0,a.iD)("li",{key:t.client_id},[(0,a.Wm)(n,{to:{name:"UserApp",params:{id:t.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.name),1)])),_:2},1032,["to"]),(0,a._)("span",Sa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(Be.p6)(t.issued_at,(0,s.SU)(u).timezone,(0,s.SU)(u).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ta,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Pe.Z,{key:2,pagination:(0,s.SU)(m),path:"/profile/apps",query:(0,s.SU)(E)},null,8,["pagination","query"])):(0,a.kq)("",!0),(0,a._)("div",pa,[(0,a._)("button",{onClick:t[0]||(t[0]=t=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const Oa=(0,P.Z)(Aa,[["__scopeId","data-v-efa45ea0"]]);var Ia=Oa;const Ra={id:"user-sport-preferences"},ga={key:0,class:"responsive-table"},Ua={class:"mobile-display"},za={key:0,class:"profile-buttons mobile-display"},Na={key:1,class:"profile-buttons"},ha={class:"text-left"},wa={key:0},va={class:"cell-heading"},Ca=["value"],fa={class:"cell-heading"},Da={key:0,class:"disabled-message"},ka={key:1,class:"fa fa-refresh fa-spin fa-fw"},Pa={class:"cell-heading"},La={class:"cell-heading"},Ma=["checked"],ba={class:"cell-heading"},ya=["value"],Ga={key:1},Fa={key:0,class:"action-buttons"},Wa={class:"cell-heading"},Ka=["onClick"],Ba={key:1,class:"edition-buttons"},Ya=["disabled"],xa=["disabled","onClick"],$a=["disabled"],Za={key:0,class:"profile-buttons"},Ha={key:1,class:"profile-buttons"};var Va=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const t=e,n=(0,c.o)(),{t:r}=(0,se.QT)(),{isEdition:u,user:d}=(0,s.BK)(t),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>n.getters[l.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,le.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>n.getters[l.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),A=(0,s.qj)({sport_id:0,color:null,is_active:!0,stopped_speed_threshold:1});function O(e){null!==e?(A.sport_id=e.id,A.color=e.color?e.color:E?E[e.label]:m,A.is_active=e.is_active_for_user,A.stopped_speed_threshold=e.stopped_speed_threshold):z()}function I(e){return A.sport_id===e}function R(e){A.color=e.target.value}function g(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function U(e){A.is_active=e.target.checked}function z(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function N(e){e.preventDefault(),n.dispatch(l.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,t){e.preventDefault(),n.dispatch(l.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,t)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||z()})),(e,t)=>{const n=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Ra,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",ga,[(0,a._)("div",Ua,[(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("button",{class:"cancel",onClick:t[0]||(t[0]=(0,i.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Na,[(0,a._)("button",{onClick:t[1]||(t[1]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[2]||(t[2]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]),(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),(0,a._)("th",ha,(0,o.zw)(e.$t("workouts.SPORT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),(0,a._)("th",null,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("th",wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1)):(0,a.kq)("",!0)])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(S),(i=>((0,a.wg)(),(0,a.iD)("tr",{key:i.id},[(0,a._)("td",null,[(0,a._)("span",va,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),I(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:R},null,40,Ca)):((0,a.wg)(),(0,a.j4)(n,{key:1,title:i.translatedLabel,"sport-label":i.label,color:i.color?i.color:(0,s.SU)(E)[i.label]},null,8,["title","sport-label","color"]))]),(0,a._)("td",{class:(0,o.C_)(["sport-label",{"disabled-sport":!i.is_active}])},[(0,a._)("span",fa,(0,o.zw)(e.$t("user.PROFILE.SPORT.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(i.translatedLabel)+" ",1),i.is_active?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",Da," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&I(i.id)?((0,a.wg)(),(0,a.iD)("i",ka)):(0,a.kq)("",!0),(0,s.SU)(p)&&A.sport_id===i.id?((0,a.wg)(),(0,a.j4)(r,{key:2,message:(0,s.SU)(p)},null,8,["message"])):(0,a.kq)("",!0)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",Pa,(0,o.zw)(e.$t("workouts.WORKOUT",0)),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+((0,s.SU)(d).sports_list.includes(i.id)?"-check":"")),"aria-hidden":"true"},null,2)],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",La,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),I(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:U},null,40,Ma)):((0,a.wg)(),(0,a.iD)("i",{key:1,class:(0,o.C_)("fa fa"+(i.is_active_for_user?"-check":"")),"aria-hidden":"true"},null,2))],2),(0,a._)("td",{class:(0,o.C_)(["text-center",{"disabled-sport":!i.is_active}])},[(0,a._)("span",ba,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),I(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"threshold-input",type:"number",min:"0",step:"0.1",value:A.stopped_speed_threshold,onInput:g},null,40,ya)):((0,a.wg)(),(0,a.iD)("span",Ga,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("td",Fa,[(0,a._)("span",Wa,(0,o.zw)(e.$t("user.PROFILE.SPORT.ACTION")),1),0===A.sport_id?((0,a.wg)(),(0,a.iD)("button",{key:0,onClick:e=>O(i)},(0,o.zw)(e.$t("buttons.EDIT")),9,Ka)):(0,a.kq)("",!0),I(i.id)?((0,a.wg)(),(0,a.iD)("div",Ba,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:N},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Ya),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,xa),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:t[3]||(t[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,$a)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(u)?((0,a.wg)(),(0,a.iD)("div",Za,[(0,a._)("button",{class:"cancel",onClick:t[4]||(t[4]=(0,i.iM)((t=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",Ha,[(0,a._)("button",{onClick:t[5]||(t[5]=t=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:t[6]||(t[6]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const qa=(0,P.Z)(Va,[["__scopeId","data-v-74e52489"]]);var ja=qa,Xa=n(2894);const Ja=e=>((0,a.dD)("data-v-74257266"),e=e(),(0,a.Cn)(),e),Qa={class:"about-text"},eo=["innerHTML"],to=Ja((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),no={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},ro=Ja((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),ao={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},oo=Ja((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),io=Ja((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),so={key:0},lo=Ja((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),co=["href"];var uo=(0,a.aZ)({__name:"About",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG]));return(e,t)=>{const r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Qa,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,eo),(0,a._)("p",null,[to,(0,a._)("a",no,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[ro,(0,a._)("a",ao,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[oo,(0,a.Wm)(r,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[io])),_:1})]),(0,s.SU)(n).admin_contact?((0,a.wg)(),(0,a.iD)("div",so,[lo,(0,a._)("a",{href:`mailto:${(0,s.SU)(n).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,co)])):(0,a.kq)("",!0)])])}}});const mo=(0,P.Z)(uo,[["__scopeId","data-v-74257266"]]);var Eo=mo;const _o={id:"bike"},So=["src"];function To(e,t){return(0,a.wg)(),(0,a.iD)("div",_o,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,So)])}const po={},Ao=(0,P.Z)(po,[["render",To],["__scopeId","data-v-795f7f5f"]]);var Oo=Ao;const Io={id:"about",class:"view"},Ro={class:"container"},go={class:"container-sub"},Uo={class:"container-sub about-details"};var zo=(0,a.aZ)({__name:"AboutView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Io,[(0,a._)("div",Ro,[(0,a._)("div",go,[(0,a.Wm)(Oo)]),(0,a._)("div",Uo,[(0,a.Wm)(Eo)])])]))}});const No=(0,P.Z)(zo,[["__scopeId","data-v-bffb50d0"]]);var ho=No,wo=n(1818),vo=n(2056);const Co=e=>((0,a.dD)("data-v-96abcc38"),e=e(),(0,a.Cn)(),e),fo={class:"timeline-workout"},Do={class:"box"},ko={class:"workout-user-date"},Po={class:"workout-user"},Lo=["title"],Mo={key:0},bo={key:1,class:"no-map"},yo={class:"img"},Go={class:"data"},Fo=Co((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),Wo={key:0},Ko={class:"data"},Bo=Co((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Yo={key:0,class:"data elevation"},xo=["alt"],$o={class:"data-values"},Zo={key:1,class:"data altitude"},Ho=Co((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Vo={class:"data-values"};var qo=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const t=e,n=(0,c.o)(),{user:r,workout:i,sport:u,useImperialUnits:d}=(0,s.BK)(t),m=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));return(e,t)=>{const n=(0,a.up)("router-link"),l=(0,a.up)("SportImage"),c=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("div",Do,[(0,a._)("div",ko,[(0,a._)("div",Po,[(0,a.Wm)(Le.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-user-name",to:{name:"User",params:{username:(0,s.SU)(r).username}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(r).username),1)])),_:1},8,["to"])):(0,a.kq)("",!0)]),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(n,{key:0,class:"workout-title",to:{name:"Workout",params:{workoutId:(0,s.SU)(i).id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)((0,s.SU)(i).title),1)])),_:1},8,["to"])):(0,a.kq)("",!0),(0,s.SU)(i).workout_date&&(0,s.SU)(r)?((0,a.wg)(),(0,a.iD)("div",{key:1,class:"workout-date",title:(0,s.SU)(Be.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(wo.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Lo)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:t[0]||(t[0]=t=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("div",Mo,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(vo.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",bo,(0,o.zw)(e.$t("workouts.NO_MAP")),1))])):(0,a.kq)("",!0)],2),(0,a._)("div",{class:(0,o.C_)(["workout-data",{"without-gpx":(0,s.SU)(i)&&!(0,s.SU)(i).with_gpx}]),onClick:t[1]||(t[1]=t=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",yo,[(0,s.SU)(u).label?((0,a.wg)(),(0,a.j4)(l,{key:0,"sport-label":(0,s.SU)(u).label,color:(0,s.SU)(u).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Go,[Fo,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",Wo,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ko,[Bo,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).distance,digits:3,unitFrom:"km",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Yo,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,xo),(0,a._)("div",$o,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).min_alt,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/ "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,s.SU)(i).max_alt,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0),(0,s.SU)(i)&&(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.iD)("div",Zo,[Ho,(0,a._)("div",Vo,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:0,distance:(0,s.SU)(i).ascent,unitFrom:"m",displayUnit:!1,useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0),(0,a.Uk)("/- "),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(c,{key:1,distance:(0,s.SU)(i).descent,unitFrom:"m",useImperialUnits:(0,s.SU)(d)},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])):(0,a.kq)("",!0)],2)])])}}});const jo=(0,P.Z)(qo,[["__scopeId","data-v-96abcc38"]]);var Xo=jo,Jo=n(5630),Qo=n(3768);const ei={id:"timeline"},ti={class:"section-title"},ni={key:0},ri={key:1},ai={key:1,class:"more-workouts"};var oi=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:i}=(0,s.BK)(t),u=(0,s.iH)(1),d=5,m=t.user.nb_workouts>=d?d:t.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){n.dispatch(l.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}function T(){u.value+=1,n.dispatch(l.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:u.value,per_page:d,...Qo.eR})}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ei,[(0,a._)("div",ti,(0,o.zw)(e.$t("workouts.LATEST_WORKOUTS")),1),(0,s.SU)(i).nb_workouts>0&&0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.iD)("div",ni,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)([...Array((0,s.SU)(m)).keys()],(e=>((0,a.wg)(),(0,a.j4)(Xo,{user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e},null,8,["user","useImperialUnits"])))),128))])):((0,a.wg)(),(0,a.iD)("div",ri,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Xo,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((t=>t.id===e.sport_id))[0]:null,user:(0,s.SU)(i),useImperialUnits:(0,s.SU)(i).imperial_units,key:e.id},null,8,["workout","sport","user","useImperialUnits"])))),128)),0===(0,s.SU)(E).length?((0,a.wg)(),(0,a.j4)(Jo.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",ai,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const ii=(0,P.Z)(oi,[["__scopeId","data-v-35567bf2"]]);var si=ii,li=n(1640),ci=n(4559),ui=n(7349),di=n(1743),mi=n(9160),Ei=n(1085);const _i=["title"];var Si=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const t=e,{displayHARecord:n,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(t);return(e,t)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:t[0]||(t[0]=t=>e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(r).id}}))},[(0,a.Wm)(l,{"sport-label":(0,s.SU)(o),title:(0,s.SU)(r).title,color:(0,s.SU)(i)},null,8,["sport-label","title","color"]),(0,a._)("sup",null,[(0,s.SU)(r).records.length>0?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-trophy custom-fa-small","aria-hidden":"true",title:(0,s.SU)(r).records.filter((e=>!!(0,s.SU)(n)||"HA"!==e.record_type)).map((t=>` ${e.$t(`workouts.RECORD_${t.record_type}`)}`))},null,8,_i)):(0,a.kq)("",!0)])])}}});const Ti=Si;var pi=Ti;const Ai={class:"donut-chart"},Oi={height:"34",width:"34",viewBox:"0 0 34 34"},Ii=["stroke","stroke-dashoffset","transform"];var Ri=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const t=e,{colors:n,datasets:r}=(0,s.BK)(t);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,t){return t-e*t}function m(e,t){const n=`rotate(${o}, ${i}, ${l})`;return o=360*t+o,n}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ai,[((0,a.wg)(),(0,a.iD)("svg",Oi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,t)=>((0,a.wg)(),(0,a.iD)("g",{key:t},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(n)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(t,e[1].percentage)},null,8,Ii)])))),128))]))]))}});const gi=Ri;var Ui=gi;const zi={class:"calendar-workouts-chart"},Ni={class:"workouts-count"},hi={key:0,class:"workouts-pane"},wi={class:"more-workouts"};var vi=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const t=e,{colors:n,datasets:r,sports:i,workouts:l}=(0,s.BK)(t),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,t)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",zi,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",Ni,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(Ui,{datasets:(0,s.SU)(r),colors:(0,s.SU)(n)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",hi,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",wi,[(0,a._)("i",{class:"fa fa-times calendar-more","aria-hidden":"true",onClick:u}),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(l),((e,t)=>((0,a.wg)(),(0,a.j4)(pi,{key:t,workout:e,sportLabel:(0,s.SU)(le.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(le.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ci=(0,P.Z)(vi,[["__scopeId","data-v-52d4310a"]]);var fi=Ci;const Di={class:"calendar-workouts"},ki={class:"desktop-display"},Pi={key:0,class:"workouts-display"},Li={key:1,class:"donut-display"},Mi={class:"mobile-display"},bi={key:0,class:"donut-display"};var yi=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const t=e,{displayHARecord:n,workouts:r,sports:o}=(0,s.BK)(t),i=(0,a.Fl)((()=>(0,Qo.BN)(t.workouts))),l=(0,a.Fl)((()=>(0,le.Yx)(t.sports))),c=6;return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Di,[(0,a._)("div",ki,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",Pi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,t)=>((0,a.wg)(),(0,a.j4)(pi,{key:t,displayHARecord:(0,s.SU)(n),workout:e,sportLabel:(0,s.SU)(le.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(le.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Li,[(0,a.Wm)(fi,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])]))]),(0,a._)("div",Mi,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bi,[(0,a.Wm)(fi,{workouts:(0,s.SU)(r),sports:(0,s.SU)(o),datasets:(0,s.SU)(i),colors:(0,s.SU)(l)},null,8,["workouts","sports","datasets","colors"])])):(0,a.kq)("",!0)])]))}});const Gi=yi;var Fi=Gi;const Wi={class:"calendar-cells"},Ki={class:"calendar-cell-day"};var Bi=(0,a.aZ)({__name:"CalendarCells",props:{currentDay:null,displayHARecord:{type:Boolean},endDate:null,sports:null,startDate:null,timezone:null,weekStartingMonday:{type:Boolean},workouts:null},setup(e){const t=e,{currentDay:n,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(t),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const t=[];for(let n=0;n<7;n++)t.push(e),e=(0,ui.Z)(e,1);E.value.push(t)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,t){return t?t.filter((t=>(0,di.Z)((0,Be.eB)(t.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>t.currentDay),(()=>_())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",Wi,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:t},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(mi.Z)(e,(0,s.SU)(n)),"week-end":S(t),today:(0,s.SU)(Ei.Z)(e)}]),key:t},[(0,a.Wm)(Fi,{workouts:T(e,(0,s.SU)(m)),sports:(0,s.SU)(l),displayHARecord:(0,s.SU)(r)},null,8,["workouts","sports","displayHARecord"]),(0,a._)("div",Ki,(0,o.zw)((0,s.SU)(jt.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Yi=Bi;var xi=Yi;const $i={class:"calendar-days"};var Zi=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const t=e,n=[];for(let r=0;r<7;r++)n.push((0,ui.Z)(t.startDate,r));return(t,r)=>((0,a.wg)(),(0,a.iD)("div",$i,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(n,((t,n)=>(0,a._)("div",{class:"calendar-day",key:n},(0,o.zw)((0,s.SU)(jt.Z)(t,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Hi=Zi;var Vi=Hi;const qi={class:"calendar-header"},ji=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Xi=[ji],Ji={class:"calendar-month"},Qi=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),es=[Qi];var ts=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:t}){const n=e,{day:r,localeOptions:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",qi,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:n[0]||(n[0]=e=>t("displayPreviousMonth"))},Xi),(0,a._)("div",Ji,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(jt.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:n[1]||(n[1]=e=>t("displayNextMonth"))},es)]))}});const ns=ts;var rs=ns;const as={id:"user-calendar"},os={class:"calendar-card box"};var is=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,n=(0,c.o)(),{sports:r,user:o}=(0,s.BK)(t),i="yyyy-MM-dd",u=(0,s.iH)(new Date),d=(0,s.iH)((0,Be.yx)(u.value,t.user.weekm)),m=(0,a.Fl)((()=>n.getters[l.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>n.getters[l.SY.GETTERS.LOCALE]));function _(){d.value=(0,Be.yx)(u.value,t.user.weekm);const e={from:(0,jt.Z)(d.value.start,i),to:(0,jt.Z)(d.value.end,i),page:1,per_page:100,...Qo.eR};n.dispatch(l.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){u.value=(0,li.Z)(u.value,1),_()}function T(){u.value=(0,ci.Z)(u.value,1),_()}return(0,a.wF)((()=>_())),(e,t)=>((0,a.wg)(),(0,a.iD)("div",as,[(0,a._)("div",os,[(0,a.Wm)(rs,{day:u.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(Vi,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(xi,{currentDay:u.value,displayHARecord:(0,s.SU)(o).display_ascent,"end-date":d.value.end,sports:(0,s.SU)(r),"start-date":d.value.start,timezone:(0,s.SU)(o).timezone,workouts:(0,s.SU)(m),weekStartingMonday:(0,s.SU)(o).weekm},null,8,["currentDay","displayHARecord","end-date","sports","start-date","timezone","workouts","weekStartingMonday"])])]))}});const ss=is;var ls=ss,cs=n(3703),us=n(4135),ds=n(436);const ms={class:"user-month-stats"};var Es=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const t=e,{sports:n,user:r}=(0,s.BK)(t),i=new Date,l={duration:"week",start:(0,cs.Z)(i),end:(0,us.Z)(i)},c=t.sports.map((e=>e.id));return(e,t)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ms,[(0,a.Wm)(i,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("dashboard.THIS_MONTH")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(ds.Z,{sports:(0,s.SU)(n),user:(0,s.SU)(r),"chart-params":l,"displayed-sport-ids":(0,s.SU)(c),"hide-chart-if-no-data":!0},null,8,["sports","user","displayed-sport-ids"])])),_:1})])}}});const _s=(0,P.Z)(Es,[["__scopeId","data-v-1bcddc12"]]);var Ss=_s,Ts=n(2540),ps=n(3649);const{locale:As}=Ts.Z.global,Os=(e,t,n,r)=>{const a="km",o=n?ps.Dl[a].defaultTarget:a,i="m",s=n?ps.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,ps.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,ps.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,ps.sC)(+e.value,i,s,2)} ${s}`;break;case"LD":l=e.value;break;default:throw new Error(`Invalid record type, expected: "AS", "FD", "HA", "LD", "MD", got: "${e.record_type}"`)}return{workout_date:(0,Be.p6)(e.workout_date,t,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},Is=(e,t)=>{const n=e.label.toLowerCase(),r=t.label.toLowerCase();return n>r?1:n(o=(0,Be.mh)(o,As.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=t.find((e=>e.id===a.sport_id));return i&&i.label&&(void 0===e[i.translatedLabel]&&(e[i.translatedLabel]={label:i.label,color:i.color,records:[]}),e[i.translatedLabel].records.push(Os(a,n,r,o))),e}),{})),gs={class:"records-card"},Us={class:"record-type"},zs={class:"record-value"},Ns={class:"record-date"};var hs=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const t=e,{records:n,sportTranslatedLabel:r}=(0,s.BK)(t),{t:i}=(0,se.QT)();function l(e){const t=[];return e.map((e=>{t.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),t.sort(Is)}return(e,t)=>{const i=(0,a.up)("SportImage"),c=(0,a.up)("router-link"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",gs,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(n).label,color:(0,s.SU)(n).color},null,8,["sport-label","color"]),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(r)),1)])),content:(0,a.w5)((()=>[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(l((0,s.SU)(n).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",Us,(0,o.zw)(e.label),1),(0,a._)("span",zs,(0,o.zw)(e.value),1),(0,a._)("span",Ns,[(0,a.Wm)(c,{to:{name:"Workout",params:{workoutId:e.workout_id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.workout_date),1)])),_:2},1032,["to"])])])))),128))])),_:1})])}}});const ws=(0,P.Z)(hs,[["__scopeId","data-v-8d17c606"]]);var vs=ws;const Cs=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),fs={class:"user-records-section"},Ds={class:"section-title"},ks=Cs((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),Ps={class:"user-records"},Ls={key:0,class:"no-records"};var Ms=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const t=e,{t:n}=(0,se.QT)(),r=(0,a.Fl)((()=>Rs(t.user.records,(0,le.xH)(t.sports,n),t.user.timezone,t.user.imperial_units,t.user.display_ascent,t.user.date_format)));return(t,n)=>((0,a.wg)(),(0,a.iD)("div",fs,[(0,a._)("div",Ds,[ks,(0,a.Uk)(" "+(0,o.zw)(t.$t("workouts.RECORD",2)),1)]),(0,a._)("div",Ps,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Ls,(0,o.zw)(t.$t("workouts.NO_RECORDS")),1)):(0,a.kq)("",!0),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.keys((0,s.SU)(r)).sort(),(t=>((0,a.wg)(),(0,a.j4)(vs,{sportTranslatedLabel:t,records:(0,s.SU)(r)[t],key:t,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const bs=(0,P.Z)(Ms,[["__scopeId","data-v-f0c85cb8"]]);var ys=bs;const Gs={id:"user-stats"};var Fs=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const t=e,{t:n}=(0,se.QT)(),{user:r}=(0,s.BK)(t),o=(0,a.Fl)((()=>t.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?ps.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,ps.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?ps.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,ps.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const t=e.value.match(/day/g)?e.value.split(", ")[1]:e.value;return{days:e.value.match(/day/g)?`${e.value.split(" ")[0]} ${e.value.match(/days/g)?n("common.DAY",2):n("common.DAY",1)}`:`0 ${n("common.DAY",2)},`,duration:`${t.split(":")[0]}h ${t.split(":")[1]}min`}}return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Gs,[(0,a.Wm)(x,{icon:"calendar",value:(0,s.SU)(r).nb_workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(r).nb_workouts)},null,8,["value","text"]),(0,a.Wm)(x,{icon:"road",value:(0,s.SU)(u),text:"mi"===(0,s.SU)(c)?"miles":(0,s.SU)(c)},null,8,["value","text"]),(0,s.SU)(r).display_ascent?((0,a.wg)(),(0,a.j4)(x,{key:0,icon:"location-arrow",value:(0,s.SU)(E),text:"ft"===(0,s.SU)(m)?"feet":(0,s.SU)(m)},null,8,["value","text"])):(0,a.kq)("",!0),(0,a.Wm)(x,{icon:"clock-o",value:(0,s.SU)(i).days,text:(0,s.SU)(i).duration},null,8,["value","text"]),(0,s.SU)(r).display_ascent?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(x,{key:1,icon:"tags",value:(0,s.SU)(r).nb_sports,text:e.$t("workouts.SPORT",(0,s.SU)(r).nb_sports)},null,8,["value","text"]))]))}});const Ws=Fs;var Ks=Ws;const Bs=e=>((0,a.dD)("data-v-4c0893c1"),e=e(),(0,a.Cn)(),e),Ys={key:0,id:"dashboard",class:"view"},xs={class:"container mobile-menu"},$s={class:"box"},Zs=Bs((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Hs=[Zs],Vs=Bs((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),qs=[Vs],js=Bs((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),Xs=[js],Js=Bs((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Qs=[Js],el={class:"container"},tl={class:"container dashboard-container"},nl={class:"left-container dashboard-sub-container"},rl={class:"right-container dashboard-sub-container"},al=Bs((()=>(0,a._)("div",{id:"bottom"},null,-1))),ol={key:1,class:"app-loading"};var il=(0,a.aZ)({__name:"Dashboard",setup(e){const t=(0,c.o)(),n=(0,a.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>t.getters[l.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function u(e){i.value=e}return(0,a.wF)((()=>t.dispatch(l.YN.ACTIONS.GET_USER_PROFILE))),(e,t)=>{const l=(0,a.up)("Loader");return(0,s.SU)(n).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Ys,[(0,a._)("div",xs,[(0,a._)("div",$s,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:t[0]||(t[0]=e=>u("calendar"))},Hs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:t[1]||(t[1]=e=>u("chart"))},qs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:t[2]||(t[2]=e=>u("timeline"))},Xs,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:t[3]||(t[3]=e=>u("records"))},Qs,2)])]),(0,a._)("div",el,[(0,a.Wm)(Ks,{user:(0,s.SU)(n)},null,8,["user"])]),(0,a._)("div",tl,[(0,a._)("div",nl,[(0,a.Wm)(Ss,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(ys,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",rl,[(0,a.Wm)(ls,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(si,{sports:(0,s.SU)(r),user:(0,s.SU)(n),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),al])):((0,a.wg)(),(0,a.iD)("div",ol,[(0,a.Wm)(l)]))}}});const sl=(0,P.Z)(il,[["__scopeId","data-v-4c0893c1"]]);var ll=sl,cl=n(8273);const ul={class:"not-found view"};var dl=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,t)=>((0,a.wg)(),(0,a.iD)("div",ul,[(0,a.Wm)(cl.Z)]))}});const ml=dl;var El=ml,_l=n(2411);const Sl={id:"loginOrRegister",class:"view"},Tl={class:"container"},pl={class:"container-sub"},Al={class:"container-sub"};var Ol=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const t=e,{action:n}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Sl,[(0,a._)("div",Tl,[(0,a._)("div",pl,[(0,a.Wm)(Oo)]),(0,a._)("div",Al,[(0,a.Wm)(_l.Z,{action:(0,s.SU)(n)},null,8,["action"])])])]))}});const Il=(0,P.Z)(Ol,[["__scopeId","data-v-58043acb"]]);var Rl=Il;const gl=e=>{const t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Ul=[{path:"/",name:"Dashboard",component:ll},{path:"/login",name:"Login",component:Rl,props:{action:"login"}},{path:"/register",name:"Register",component:Rl,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>n.e(845).then(n.bind(n,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>n.e(24).then(n.bind(n,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>n.e(24).then(n.bind(n,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>n.e(845).then(n.bind(n,8160))},{path:"/profile",name:"Profile",component:()=>n.e(845).then(n.bind(n,1133)),children:[{path:"",name:"UserProfile",component:zt,props:e=>({tab:gl(e.path)}),children:[{path:"",name:"UserInfos",component:Nt.Z},{path:"preferences",name:"UserPreferences",component:Dt},{path:"sports",name:"UserSportPreferences",component:ja,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:Xr,children:[{path:"",name:"UserAppsList",component:Ia},{path:":id",name:"UserApp",component:da},{path:":id/created",name:"CreatedUserApp",component:da,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Mr},{path:"authorize",name:"AuthorizeUserApp",component:Hr}]}]},{path:"edit",name:"UserProfileEdition",component:Mt,props:e=>({tab:gl(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Sn},{path:"account",name:"UserAccountEdition",component:qt},{path:"picture",name:"UserPictureEdition",component:wn},{path:"preferences",name:"UserPreferencesEdition",component:ur},{path:"sports",name:"UserSportPreferencesEdition",component:ja,props:{isEdition:!0}}]}]},{path:"/statistics",name:"Statistics",component:()=>n.e(193).then(n.bind(n,7885))},{path:"/users/:username",name:"User",component:()=>n.e(845).then(n.bind(n,9453))},{path:"/workouts",name:"Workouts",component:()=>n.e(401).then(n.bind(n,3372))},{path:"/workouts/:workoutId",name:"Workout",component:()=>n.e(401).then(n.bind(n,3847)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>n.e(401).then(n.bind(n,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>n.e(401).then(n.bind(n,3847)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>n.e(401).then(n.bind(n,4189))},{path:"/admin",name:"Administration",component:()=>n.e(328).then(n.bind(n,6e3)),children:[{path:"",name:"AdministrationMenu",component:ie},{path:"application",name:"ApplicationAdministration",component:M},{path:"application/edit",name:"ApplicationAdministrationEdition",component:M,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:De},{path:"users/:username",name:"UserFromAdmin",component:()=>n.e(845).then(n.bind(n,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:mt}]},{path:"/about",name:"About",component:ho},{path:"/:pathMatch(.*)*",name:"not-found",component:El}],zl=(0,r.p7)({history:(0,r.PO)("/"),routes:Ul}),Nl=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],hl=["/email-update","/about"];zl.beforeEach(((e,t,n)=>{Xa.Z.dispatch(l.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(hl.includes(e.path))return n();if(Xa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]&&Nl.includes(e.path))return n("/");if(Xa.Z.getters[l.YN.GETTERS.IS_AUTHENTICATED]||Nl.includes(e.path))n();else{const t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((e=>{console.error(e),n()}))}));var wl=zl},5801:function(e,t,n){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,I;n.d(t,{YN:function(){return N},Km:function(){return h},SY:function(){return g},O8:function(){return U},gu:function(){return z},RT:function(){return w},aX:function(){return v}}),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["CONFIRM_ACCOUNT"]="CONFIRM_ACCOUNT",e["CONFIRM_EMAIL"]="CONFIRM_EMAIL",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESEND_ACCOUNT_CONFIRMATION_EMAIL"]="RESEND_ACCOUNT_CONFIRMATION_EMAIL",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["RESET_USER_SPORT_PREFERENCES"]="RESET_USER_SPORT_PREFERENCES",e["UPDATE_USER_ACCOUNT"]="UPDATE_USER_ACCOUNT",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES",e["UPDATE_USER_SPORT_PREFERENCES"]="UPDATE_USER_SPORT_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["IS_SUCCESS"]="IS_SUCCESS",e["IS_REGISTRATION_SUCCESS"]="IS_REGISTRATION_SUCCESS",e["USER_LOADING"]="USER_LOADING"}(a||(a={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_IS_SUCCESS"]="UPDATE_USER_IS_SUCCESS",e["UPDATE_IS_REGISTRATION_SUCCESS"]="UPDATE_IS_REGISTRATION_SUCCESS",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(o||(o={})),function(e){e["AUTHORIZE_CLIENT"]="AUTHORIZE_CLIENT",e["CREATE_CLIENT"]="CREATE_CLIENT",e["DELETE_CLIENT"]="DELETE_CLIENT",e["GET_CLIENTS"]="GET_CLIENTS",e["GET_CLIENT_BY_CLIENT_ID"]="GET_CLIENT_BY_CLIENT_ID",e["GET_CLIENT_BY_ID"]="GET_CLIENT_BY_ID",e["REVOKE_ALL_TOKENS"]="REVOKE_ALL_TOKENS"}(i||(i={})),function(e){e["CLIENT"]="CLIENT",e["CLIENTS"]="CLIENTS",e["CLIENTS_PAGINATION"]="CLIENTS_PAGINATION",e["REVOCATION_SUCCESSFUL"]="REVOCATION_SUCCESSFUL"}(s||(s={})),function(e){e["EMPTY_CLIENT"]="EMPTY_CLIENT",e["SET_CLIENT"]="SET_CLIENT",e["SET_CLIENTS"]="SET_CLIENTS",e["SET_CLIENTS_PAGINATION"]="SET_CLIENTS_PAGINATION",e["SET_REVOCATION_SUCCESSFUL"]="SET_REVOCATION_SUCCESSFUL"}(l||(l={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LANGUAGE"]="UPDATE_APPLICATION_LANGUAGE"}(c||(c={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(u||(u={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(d||(d={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(m||(m={})),function(e){e["SPORTS"]="SPORTS"}(E||(E={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(_||(_={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(S||(S={})),function(e){e["USER_STATS"]="USER_STATS"}(T||(T={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(p||(p={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER",e["DELETE_USER_ACCOUNT"]="DELETE_USER_ACCOUNT"}(A||(A={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_IS_SUCCESS"]="USERS_IS_SUCCESS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(O||(O={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION",e["UPDATE_IS_SUCCESS"]="UPDATE_IS_SUCCESS"}(I||(I={}));var R=n(52);const g={ACTIONS:c,GETTERS:u,MUTATIONS:d},U={ACTIONS:m,GETTERS:E,MUTATIONS:_},z={ACTIONS:S,GETTERS:T,MUTATIONS:p},N={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},w={ACTIONS:A,GETTERS:O,MUTATIONS:I},v={ACTIONS:R.tW,GETTERS:R.JP,MUTATIONS:R.CW}},2894:function(e,t,n){"use strict";n.d(t,{Z:function(){return de}});var r=n(3907),a=(n(7658),n(5167)),o=n(594),i=n(8566),s=n(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const t=new AbortController;e.signal=t.signal;const n=(0,i.a)(e);return i.j.set(n,t),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=n(7351),d=n(5801);const m=(e,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${t.username}`).then((n=>{204===n.status?t.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},E={[d.RT.ACTIONS.EMPTY_USER](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USER,{})},[d.RT.ACTIONS.EMPTY_USERS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,{})},[d.RT.ACTIONS.GET_USER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${t}`).then((t=>{"success"===t.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0]):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const n={};void 0!==t.admin&&(n.admin=t.admin),t.resetPassword&&(n.reset_password=t.resetPassword),t.activate&&(n.activate=t.activate),void 0!==t.new_email&&(n.new_email=t.new_email),a.Z.patch(`users/${t.username}`,n).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,n.data.data.users[0]),(t.resetPassword||t.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(t.activate||t.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0])):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,t){m(e,{username:t.username,fromAdmin:!0})}},_=e=>{localStorage.removeItem("authToken"),e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.gu.MUTATIONS.EMPTY_USER_STATS),e.commit(d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(d.RT.MUTATIONS.UPDATE_USERS,[]),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUTS),e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),u.Z.push("/login")},S={[d.YN.ACTIONS.CHECK_AUTH_USER](e){window.localStorage.authToken&&!e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE)),!window.localStorage.authToken&&e.getters[d.YN.GETTERS.IS_AUTHENTICATED]&&_(e)},[d.YN.ACTIONS.CONFIRM_ACCOUNT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:t.token}).then((t=>{if("success"===t.data.status){const n=t.data.auth_token;window.localStorage.setItem("authToken",n),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,n),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:t.token}).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),t.refreshUser&&e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile/edit/account"))),u.Z.push("/profile/edit/account")):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((t=>{"canceled"!==t.message&&((0,s.S)(e,t),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${t.actionType}`,t.formData).then((n=>{if("success"===n.data.status)if("login"===t.actionType){const r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((t=>{"success"===t.data.status?_(e):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),a.Z.patch("auth/profile/edit/account",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",t).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,t.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${t}`).then((t=>{204===t.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",t).then((t=>{"success"===t.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>{(0,s.S)(e,t),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,t){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");const n=new FormData;n.append("file",t.picture),a.Z.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((t=>{"success"===t.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,t){m(e,t)},[d.YN.ACTIONS.DELETE_PICTURE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"]("auth/picture").then((t=>{204===t.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",t).then((t=>{"success"===t.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",t).then((t=>{"success"===t.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",t).then((t=>{"success"===t.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.IS_AUTHENTICATED]:e=>null!==e.authToken,[d.YN.GETTERS.IS_ADMIN]:e=>e.authUserProfile&&e.authUserProfile.admin,[d.YN.GETTERS.IS_REGISTRATION_SUCCESS]:e=>e.isRegistrationSuccess,[d.YN.GETTERS.IS_SUCCESS]:e=>e.isSuccess,[d.YN.GETTERS.USER_LOADING]:e=>e.loading},p={[d.YN.MUTATIONS.CLEAR_AUTH_USER_TOKEN](e){e.authToken=null,e.authUserProfile={}},[d.YN.MUTATIONS.UPDATE_AUTH_TOKEN](e,t){e.authToken=t},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,t){e.authUserProfile=t},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,t){e.isRegistrationSuccess=t},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,t){e.loading=t}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1},O={state:A,actions:S,getters:T,mutations:p};var I=O;const R=(e,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(t).then((t=>{"success"===t.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,t.data.data.client):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},g={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const n=new FormData;n.set("client_id",t.client_id),n.set("response_type",t.response_type),n.set("scope",t.scope),n.set("confirm","true"),t.state&&n.set("state",t.state),t.code_challenge&&n.set("code_challenge",t.code_challenge),t.code_challenge_method&&n.set("code_challenge_method",t.code_challenge_method),a.Z.post("oauth/authorize",n,{headers:{"Content-Type":"multipart/form-data"}}).then((t=>{200==t.status&&t.data.redirect_url?window.location.href=t.data.redirect_url:(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.CREATE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",t).then((t=>{"created"===t.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,t.data.data.client),u.Z.push(`/profile/apps/${t.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.DELETE_CLIENT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${t}`).then((t=>{204===t.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,t){R(e,`oauth/apps/${t}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,t){R(e,`oauth/apps/${t}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,t.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${t}/revoke`).then((t=>{"success"===t.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},U={[d.Km.GETTERS.CLIENT]:e=>e.client,[d.Km.GETTERS.CLIENTS]:e=>e.clients,[d.Km.GETTERS.CLIENTS_PAGINATION]:e=>e.pagination,[d.Km.GETTERS.REVOCATION_SUCCESSFUL]:e=>e.revocationSuccessful},z={[d.Km.MUTATIONS.SET_CLIENT](e,t){e.client=t},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,t){e.clients=t},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,t){e.pagination=t},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,t){e.revocationSuccessful=t}},N={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:N,actions:g,getters:U,mutations:z};var w=h,v=n(2540);const{locale:C}=v.Z.global,f={[d.SY.ACTIONS.GET_APPLICATION_CONFIG](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!0),a.Z.get("config").then((t=>{"success"===t.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t))).finally((()=>e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING,!1)))},[d.SY.ACTIONS.GET_APPLICATION_STATS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("stats/all").then((t=>{"success"===t.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",t).then((t=>{"success"===t.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,t){document.querySelector("html")?.setAttribute("lang",t),e.commit(d.SY.MUTATIONS.UPDATE_LANG,t),C.value=t}},D={[d.SY.GETTERS.APP_CONFIG]:e=>e.application.config,[d.SY.GETTERS.APP_LOADING]:e=>e.appLoading,[d.SY.GETTERS.APP_STATS]:e=>e.application.statistics,[d.SY.GETTERS.ERROR_MESSAGES]:e=>e.errorMessages,[d.SY.GETTERS.LANGUAGE]:e=>e.language,[d.SY.GETTERS.LOCALE]:e=>e.locale};var k=n(6287);const P={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,t){e.errorMessages=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,t){e.application.config=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,t){e.appLoading=t},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,t){e.application.statistics=t},[d.SY.MUTATIONS.UPDATE_LANG](e,t){e.language=t,e.locale=k.v1[t]}};var L=n(5826);const M={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},b={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((t=>{"success"===t.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,t.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${t.id}`,{is_active:t.isActive}).then((t=>{"success"===t.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,t){e.sports=t}},F={sports:[]},W={state:F,actions:b,getters:y,mutations:G};var K=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${t.username}/${t.filterType}`,{params:t.params}).then((t=>{"success"===t.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))}},Y={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},x={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,t){e.statistics=t},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},$={statistics:{}},Z={state:$,actions:B,getters:Y,mutations:x};var H=Z;const V={[d.RT.GETTERS.USER]:e=>e.user,[d.RT.GETTERS.USERS]:e=>e.users,[d.RT.GETTERS.USERS_IS_SUCCESS]:e=>e.isSuccess,[d.RT.GETTERS.USERS_LOADING]:e=>e.loading,[d.RT.GETTERS.USERS_PAGINATION]:e=>e.pagination},q={[d.RT.MUTATIONS.UPDATE_USER](e,t){e.user=t},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,t){e.users=e.users.map((e=>e.username===t.username?t:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,t){e.users=t},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,t){e.loading=t},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,t){e.pagination=t},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,t){e.isSuccess=t}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var J=X,Q=n(52);const ee=(e,t,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:t}).then((t=>{"success"===t.data.status?(e.commit(d.aX.MUTATIONS[n],t.data.data.workouts),n===Q.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):(0,s.S)(e,null)})).catch((t=>(0,s.S)(e,t)))},te={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,t){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,t,Q.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,t){ee(e,t,Q.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,t){ee(e,t,Q.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,t){ee(e,t,Q.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const n=t.segmentId?`/segment/${t.segmentId}`:"";a.Z.get(`workouts/${t.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(d.aX.MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(a.Z.get(`workouts/${t.workoutId}/chart_data${n}`).then((t=>{"success"===t.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),a.Z.get(`workouts/${t.workoutId}/gpx${n}`).then((t=>{"success"===t.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((t=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${t.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${t.workoutId}`,t.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,t){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");const n=t.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",t.file),r.append("data",`{"sport_id": ${t.sport_id}, "notes": "${n}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((t=>{if("created"===t.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];u.Z.push(1===t.data.data.workouts.length?`/workouts/${n.id}`:"/")}})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,t){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",t).then((t=>{if("created"===t.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const n=t.data.data.workouts[0];u.Z.push(`/workouts/${n.id}`)}})).catch((t=>{(0,s.S)(e,t)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},ne={[d.aX.GETTERS.CALENDAR_WORKOUTS]:e=>e.calendar_workouts,[d.aX.GETTERS.TIMELINE_WORKOUTS]:e=>e.timeline_workouts,[d.aX.GETTERS.USER_WORKOUTS]:e=>e.user_workouts,[d.aX.GETTERS.WORKOUT_DATA]:e=>e.workoutData,[d.aX.GETTERS.WORKOUTS_PAGINATION]:e=>e.pagination},re={[d.aX.MUTATIONS.ADD_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=e.timeline_workouts.concat(t)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,t){e.calendar_workouts=t},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,t){e.timeline_workouts=t},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,t){e.user_workouts=t},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,t){e.pagination=t},[d.aX.MUTATIONS.SET_WORKOUT](e,t){e.workoutData.workout=t},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,t){e.workoutData.chartData=t},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,t){e.workoutData.gpx=t},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,t){e.workoutData.loading=t},[d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](e){e.calendar_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUTS](e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]},[d.aX.MUTATIONS.EMPTY_WORKOUT](e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}}},ae={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},oe={state:ae,actions:te,getters:ne,mutations:re};var ie=oe;const se={authUserModule:I,oAuthModule:w,sportsModule:K,statsModule:H,usersModule:J,workoutsModule:ie},le={state:M,actions:f,getters:D,mutations:P,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,t,n){"use strict";var r,a,o;n.d(t,{CW:function(){return o},JP:function(){return a},tW:function(){return r}}),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(a||(a={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(o||(o={}))},9917:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var r=n(3907);function a(){return(0,r.oR)()}},2766:function(e,t,n){"use strict";n.d(t,{Hf:function(){return a},Ne:function(){return c},fS:function(){return r},lM:function(){return d},pm:function(){return l},z_:function(){return i}});const r=["asc","desc"],a=1,o=10,i=(e,t)=>e&&"string"===typeof e&&+e>0?+e:t,s=(e,t,n)=>e&&"string"===typeof e&&t.includes(e)?e:n,l=(e,t,n,l)=>{const c=l||{},u=c.defaultSort||"asc",d={};return d.page=i(e.page,a),d.per_page=i(e.per_page,o),d.order=s(e.order,r,u),d.order_by=s(e.order_by,t,n),"string"===typeof e.q?d.q=e.q:delete d.q,d},c=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=(e,t=1)=>Array.from({length:e-t+1},((e,n)=>t+n)),d=(e,t)=>{if(e<0)return[];if(e<9)return u(e);let n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{switch(e){case"week":return(0,r.Z)(t,{weekStartsOn:n?1:0});case"year":return(0,a.Z)(t);case"month":return(0,o.Z)(t);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,t)=>{switch(e){case"week":return(0,i.Z)(t,7);case"year":return(0,s.Z)(t,1);case"month":return(0,l.Z)(t,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,t)=>(0,m.utcToZonedTime)(new Date(e),t),O=(e,t)=>{const n=(0,o.Z)(e),a=(0,c.Z)(e),i=t?1:0;return{start:(0,r.Z)(n,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},I=(e,t=null,n=null)=>(t||(t="yyyy/MM/dd"),t=U(t,S.value),n||(n="HH:mm"),{workout_date:(0,d.Z)(e,t,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,n)}),R=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],g={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",nl:"d MMM yyyy"},U=(e,t)=>"date_string"===e?g[t]:e,z=(e,t,n,r=!0,a=null)=>(a||(a=S.value),(0,d.Z)(A(e,t),`${U(n,a)}${r?" HH:mm":""}`,{locale:_.v1[a]})),N=(e,t,n=null)=>{const r=n||S.value,a=[];return R.map((n=>{const o=U(n,r);a.push({label:`${o} - ${z(e,t,o,!1,r)}`,value:n})})),a}},8966:function(e,t,n){"use strict";n.d(t,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,t=!0)=>{const n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,n)).toFixed(1),o=r[n];return t?`${a}${o}`:{size:a,suffix:o}},o=e=>{const t=e/1048576;return+t.toFixed(2)}},2024:function(e,t,n){"use strict";n.d(t,{S:function(){return o},k:function(){return a}});var r=n(5801);const a=()=>"/api/",o=(e,t,n="UNKNOWN")=>{if(t&&"canceled"===t.message)return;const a=t?.response&&t.response.data?t.response.data:null;if(401===t?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=t?t.response?413===t.response.status?"file size is greater than the allowed size":a?.message?a.message:n:t.message?t.message:n:n;e.commit(r.SY.MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((e=>""!==e)).map((e=>`api.ERROR.${e}`)):`api.ERROR.${o}`)}},6287:function(e,t,n){"use strict";n.d(t,{mT:function(){return d},v1:function(){return l},zK:function(){return c}});var r=n(879),a=n(5826),o=n(5830),i=n(4638),s=n(2540);const l={de:r.Z,en:a.Z,fr:o.Z,nl:i.Z},c={de:"Deutsch",en:"English",fr:"Français",nl:"Nederlands"},{availableLocales:u}=s.Z.global,d=u.map((e=>({label:c[e],value:e})))},631:function(e,t,n){"use strict";n.d(t,{CM:function(){return l},PA:function(){return s},Yx:function(){return a},Zo:function(){return r},xH:function(){return i}});const r={"Cycling (Sport)":"#4c9792","Cycling (Transport)":"#88af98","Cycling (Virtual)":"#64a360",Hiking:"#bb757c","Mountain Biking":"#d4b371","Mountain Biking (Electric)":"#fc9d6f",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const t={};return e.map((e=>t[e.id]=e.color?e.color:r[e.label])),t},o=(e,t)=>{const n=e.translatedLabel.toLowerCase(),r=t.translatedLabel.toLowerCase();return n>r?1:ne.filter((e=>"all"===n||(r.includes(e.id)||e[n]))).map((e=>({...e,translatedLabel:t(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.label))[0],l=(e,t)=>t.filter((t=>t.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,t,n){"use strict";n.d(t,{FN:function(){return f},aZ:function(){return C},v1:function(){return v}});n(7658);var r=n(4850),a=n(8148),o=n(9319),i=n(584),s=n(4559),l=n(3703),c=n(876),u=n(7090),d=n(4135),m=n(1593),E=n(7982),_=n(3500),S=n(1640),T=n(2540),p=n(6558),A=n(6287),O=n(631),I=n(3649);const{locale:R}=T.Z.global,g={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},U=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],z=(e,t)=>{const n=[];for(let r=(0,p.Nh)(e.duration,e.start,t);r<=e.end;r=(0,p.xA)(e.duration,r))n.push(r);return n},N=(e,t,n=!1)=>{const r={label:e,backgroundColor:[t],data:[]};return n&&(r.type="line",r.borderColor=[t],r.spanGaps=!0),r},h=e=>{const t={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const n=e.color?e.color:O.Zo[e.label];t.average_speed.push(N(e.label,n,!0)),t.nb_workouts.push(N(e.label,n)),t.total_distance.push(N(e.label,n)),t.total_duration.push(N(e.label,n)),t.total_ascent.push(N(e.label,n)),t.total_descent.push(N(e.label,n))})),t},w=(e,t,n)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,I.f3)(["average_speed","total_distance"].includes(e)?"km":"m",t,n);default:case"nb_workouts":case"total_duration":return t}},v=(e,t,n,a,o,i,s)=>{const l=z(e,t),c=g[e.duration],u=n.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((t=>{const n=(0,r.Z)(t,c.api),a=(0,r.Z)(t,"week"===e.duration?(0,p.mh)(s,R.value):c.chart,{locale:A.v1[R.value]});d.push(a),U.map((e=>{m[e].map((t=>{t.data.push(n in o&&E[t.label]in o[n]?w(e,o[n][E[t.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},C=(e,t,n)=>{const r=n?1:0,m="year"===t?(0,a.Z)((0,o.Z)(e,9)):"week"===t?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===t?(0,c.Z)(e):"week"===t?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:t,end:E,start:m}},f=(e,t,n)=>{const{duration:r,start:T,end:p}=e,A=n?1:0;return{duration:r,end:"year"===r?(0,c.Z)(t?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(t?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(t?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(t?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(t?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(t?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,t,n){"use strict";n.d(t,{Dl:function(){return r},f3:function(){return i},sC:function(){return o}});const r={ft:{unit:"ft",system:"imperial",multiplier:1,defaultTarget:"m"},mi:{unit:"mi",system:"imperial",multiplier:5280,defaultTarget:"km"},m:{unit:"m",system:"metric",multiplier:1,defaultTarget:"ft"},km:{unit:"m",system:"metric",multiplier:1e3,defaultTarget:"mi"}},a={metric:{imperial:3.280839895,metric:1},imperial:{metric:1/3.280839895,imperial:1}},o=(e,t,n,o=3)=>{const i=r[t],s=r[n],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,t,n)=>{const a=n?r[e].defaultTarget:e;return n?o(t,e,a,2):t}},3768:function(e,t,n){"use strict";n.d(t,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});n(7658);var r=n(3649);const a=(e,t,n)=>{const a={speed:{label:t("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:t("workouts.ELEVATION"),backgroundColor:["#e5e5e5"],borderColor:["#cccccc"],borderWidth:1,fill:!0,data:[],yAxisID:"yElevation"}},o=[],i=[],s=[];return e.map((e=>{o.push(e.distance),i.push(e.duration),a.speed.data.push((0,r.f3)("km",e.speed,n)),a.elevation.data.push((0,r.f3)("m",e.elevation,n)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const t=e.length;if(0===t)return{};const n={};return e.map((e=>{n[e.sport_id]||(n[e.sport_id]={count:0,percentage:0}),n[e.sport_id].count+=1,n[e.sport_id].percentage=n[e.sport_id].count/t})),n},i={order:"desc",order_by:"workout_date"}},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,t){return(0,r.wg)(),(0,r.iD)("div",a,[(0,r._)("div",o,[(0,r.WI)(e.$slots,"title")]),(0,r._)("div",i,[(0,r.WI)(e.$slots,"content")])])}var l=n(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262);const i={class:"table-selects"},s=["value"],l=["value"],c=["value"],u=["value"],d=["value"],m=["value"];var E=(0,r.aZ)({__name:"FilterSelects",props:{order_by:null,query:null,sort:null,message:null},emits:["updateSelect"],setup(e,{emit:t}){const n=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(n),p=[10,25,50,100];function A(e){t("updateSelect",e.target.id,e.target.value)}return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),(0,r._)("select",{name:"order_by",id:"order_by",value:(0,o.SU)(_).order_by,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(E),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${t.toUpperCase()}`)),9,l)))),128))],40,s)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),(0,r._)("select",{name:"order",id:"order",value:(0,o.SU)(_).order,onChange:A},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(S),(t=>((0,r.wg)(),(0,r.iD)("option",{value:t,key:t},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${t.toUpperCase()}`)),9,u)))),128))],40,c)]),(0,r._)("label",null,[(0,r.Uk)((0,a.zw)(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),(0,r._)("select",{name:"per_page",id:"per_page",value:(0,o.SU)(_).per_page,onChange:A},[((0,r.wg)(),(0,r.iD)(r.HY,null,(0,r.Ko)(p,(e=>(0,r._)("option",{value:e,key:e},(0,a.zw)(e),9,m))),64))],40,d)])]))}}),_=n(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(6252);const a={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -51 512 512"},o=(0,r.uE)('',1),i=[o];function s(e,t,n,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=n(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var r=n(6252),a=n(2262),o=(n(7658),n(3577));const i={id:"error"},s={class:"error-content"};var l=(0,r.aZ)({__name:"Error",props:{title:null,message:null,buttonText:null,path:{default:"/"}},setup(e){const t=e,{buttonText:n,title:l,message:c,path:u}=(0,a.BK)(t);return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[(0,r._)("div",s,[(0,r._)("h1",null,(0,o.zw)((0,a.SU)(l)),1),(0,r._)("p",null,(0,o.zw)((0,a.SU)(c)),1),(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:t[0]||(t[0]=t=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(n)),1)):(0,r.kq)("",!0)])]))}}),c=n(3744);const u=(0,c.Z)(l,[["__scopeId","data-v-b60bfa80"]]);var d=u,m=(0,r.aZ)({__name:"NotFound",props:{target:{default:"PAGE"}},setup(e){const t=e,{target:n}=(0,a.BK)(t),o=(0,a.iH)(),i=(0,a.iH)(!1);function s(){o.value=setTimeout((()=>{i.value=!0}),500)}return(0,r.bv)((()=>s())),(0,r.Ah)((()=>{o.value&&clearTimeout(o.value)})),(e,t)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(n)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,t,n){"use strict";n.d(t,{Z:function(){return T}});var r=n(6252),a=n(3577),o=n(2262),i=n(2766);const s=e=>((0,r.dD)("data-v-3a9a4a65"),e=e(),(0,r.Cn)(),e),l={class:"pagination-center","aria-label":"navigation"},c={class:"pagination"},u=s((()=>(0,r._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),d={key:0},m=s((()=>(0,r._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)));var E=(0,r.aZ)({__name:"Pagination",props:{pagination:null,path:null,query:null},setup(e){const t=e,{pagination:n,path:s,query:E}=(0,o.BK)(t);function _(e,t){const n=Object.assign({},E.value);return n.page=t?e+t:e,n}return(e,t)=>{const E=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("nav",l,[(0,r._)("ul",c,[(0,r._)("li",{class:(0,a.C_)(["page-prev",{disabled:!(0,o.SU)(n).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(n).page,-1)},disabled:!(0,o.SU)(n).has_prev},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.PREVIOUS"))+" ",1),u]))])),_:3},8,["to","disabled"])],2),((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(i.lM)((0,o.SU)(n).pages,(0,o.SU)(n).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(n).page}])},["..."===e?((0,r.wg)(),(0,r.iD)("span",d," ... ")):((0,r.wg)(),(0,r.j4)(E,{key:1,class:"page-link",to:{path:(0,o.SU)(s),query:_(+e)}},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e),1)])),_:2},1032,["to"]))],2)))),128)),(0,r._)("li",{class:(0,a.C_)(["page-next",{disabled:!(0,o.SU)(n).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(n).page,1)},disabled:!(0,o.SU)(n).has_next},{default:(0,r.w5)((({navigate:t})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(n).has_next?t:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=n(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(6252),a=n(2262),o=n(9963),i=n(3577),s=n(4366),l=n(5801),c=n(9917);const u=async e=>{const t=await n.e(881).then(n.bind(n,410)),r=await n.e(881).then(n.bind(n,8288)),a=await n.e(881).then(n.bind(n,6947)),o=await n.e(881).then(n.bind(n,8056)),i={de:o,en:r,fr:a,nb:r,nl:r},l=i[e],c={graphs:t.default.adjacencyGraphs,dictionary:{...t.default.dictionary,...l.default.dictionary}};s.Mu.setOptions(c)},d=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},m={class:"password-strength"},E=["value"],_={key:0,class:"password-strength-details"},S={class:"password-strength-value"},T={key:0,class:"info-box"},p={class:"password-feedback"};var A=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const t=e,{password:n}=(0,a.BK)(t),o=(0,c.o)(),A=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),I=(0,a.iH)(0),R=(0,a.iH)(""),g=(0,a.iH)([]),U=(0,a.iH)("0% 100%");function z(e){const t=(0,s.tu)(e);I.value=t.score,R.value=d(I.value),g.value=t.feedback.suggestions,U.value=100*I.value/4+"% 100%"}return(0,r.wF)((async()=>await u(A.value))),(0,r.YP)((()=>A.value),(async e=>{await u(e)})),(0,r.YP)((()=>n.value),(async e=>{O.value?R.value="":z(e)})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",m,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${I.value}`]),style:(0,i.j5)({backgroundSize:U.value}),type:"range",value:I.value,min:"0",max:"4",step:"1"},null,14,E),R.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("span",S,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${R.value}`)),1),g.value.length>0?((0,r.wg)(),(0,r.iD)("div",T,[(0,r._)("ul",p,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(g.value,(t=>((0,r.wg)(),(0,r.iD)("li",{key:t},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${t}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),O=n(3744);const I=(0,O.Z)(A,[["__scopeId","data-v-74e71df5"]]);var R=I;const g=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),U={class:"password-input"},z=["id","disabled","placeholder","required","type"],N={key:0,class:"form-info"},h=g((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var w=(0,r.aZ)({__name:"PasswordInput",props:{checkStrength:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{default:"password"},password:{default:""},placeholder:null,required:{type:Boolean,default:!1}},emits:["updatePassword","passwordError"],setup(e,{emit:t}){const n=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(n),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){t("updatePassword",e.target.value)}function p(){t("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,t)=>((0,r.wg)(),(0,r.iD)("div",U,[(0,r.wy)((0,r._)("input",{id:(0,a.SU)(c),disabled:(0,a.SU)(l),placeholder:(0,a.SU)(d),required:(0,a.SU)(m),type:E.value?"text":"password","onUpdate:modelValue":t[0]||(t[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,z),[[o.YZ,_.value]]),(0,r._)("div",{class:"show-password",onClick:S},[(0,r.Uk)((0,i.zw)(e.$t(`user.${E.value?"HIDE":"SHOW"}_PASSWORD`))+" ",1),(0,r._)("i",{class:(0,i.C_)(["fa","fa-eye"+(E.value?"-slash":"")]),"aria-hidden":"true"},null,2)]),(0,a.SU)(s)?((0,r.wg)(),(0,r.iD)("div",N,[h,(0,r.Uk)(" "+(0,i.zw)(e.$t("user.PASSWORD_INFO")),1)])):(0,r.kq)("",!0),(0,a.SU)(s)?((0,r.wg)(),(0,r.j4)(R,{key:1,password:_.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const v=(0,O.Z)(w,[["__scopeId","data-v-5a126514"]]);var C=v},2056:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577),o=n(2262),i=n(2024);const s=(0,r._)("div",{class:"map-attribution"},[(0,r._)("span",{class:"map-attribution-text"},"©"),(0,r._)("a",{class:"map-attribution-text",href:"https://www.openstreetmap.org/copyright",target:"_blank",rel:"noopener noreferrer"}," OpenStreetMap ")],-1);var l=(0,r.aZ)({__name:"StaticMap",props:{workout:null,displayHover:{type:Boolean,default:!1}},setup(e){const t=e,{displayHover:n}=(0,o.BK)(t),l=`${(0,i.k)()}workouts/map/${t.workout.map}`;return(e,t)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(n)}])},[(0,o.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,src:l,alt:""})):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"bg-map-image",style:(0,a.j5)({backgroundImage:`url(${l})`})},null,4)),s],2))}});const c=l;var u=c},436:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(6252),a=n(3577);const o={class:"start-chart"},i={key:0},s={key:1},l={class:"chart-radio"},c=["checked"],u=["checked"],d=["checked"],m={key:0},E=["checked"],_={key:1},S=["checked"],T={key:2},p=["checked"];function A(e,t,n,A,O,I){const R=(0,r.up)("Chart");return(0,r.wg)(),(0,r.iD)("div",o,[e.hideChartIfNoData&&e.emptyStats?((0,r.wg)(),(0,r.iD)("div",i,(0,a.zw)(e.$t("workouts.NO_WORKOUTS")),1)):((0,r.wg)(),(0,r.iD)("div",s,[(0,r._)("div",l,[(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_distance",checked:"total_distance"===e.displayedData,onClick:t[0]||(t[0]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,c),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DISTANCE")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"total_duration",checked:"total_duration"===e.displayedData,onClick:t[1]||(t[1]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,u),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DURATION")),1)]),(0,r._)("label",null,[(0,r._)("input",{type:"radio",name:"nb_workouts",checked:"nb_workouts"===e.displayedData,onClick:t[2]||(t[2]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,d),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.WORKOUT",2)),1)]),e.fullStats?((0,r.wg)(),(0,r.iD)("label",m,[(0,r._)("input",{type:"radio",name:"average_speed",checked:"average_speed"===e.displayedData,onClick:t[3]||(t[3]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,E),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.AVERAGE_SPEED")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",_,[(0,r._)("input",{type:"radio",name:"total_ascent",checked:"total_ascent"===e.displayedData,onClick:t[4]||(t[4]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,S),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.ASCENT")),1)])):(0,r.kq)("",!0),e.fullStats?((0,r.wg)(),(0,r.iD)("label",T,[(0,r._)("input",{type:"radio",name:"total_descent",checked:"total_descent"===e.displayedData,onClick:t[5]||(t[5]=(...t)=>e.updateDisplayData&&e.updateDisplayData(...t))},null,8,p),(0,r.Uk)(" "+(0,a.zw)(e.$t("workouts.DESCENT")),1)])):(0,r.kq)("",!0)]),e.labels.length>0?((0,r.wg)(),(0,r.j4)(R,{key:0,datasets:e.datasets,labels:e.labels,displayedData:e.displayedData,displayedSportIds:e.displayedSportIds,fullStats:e.fullStats,useImperialUnits:e.user.imperial_units},null,8,["datasets","labels","displayedData","displayedSportIds","fullStats","useImperialUnits"])):(0,r.kq)("",!0)]))])}var O=n(4850),I=n(2262);const R={class:"chart"};function g(e,t,n,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",R,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var U=n(6518),z=n(9150);const N=(e,t=!1)=>{let n="0";t&&(n=String(Math.floor(e/86400)),e%=86400);const r=String(Math.floor(e/3600)).padStart(2,"0");e%=3600;const a=String(Math.floor(e/60)).padStart(2,"0"),o=String(e%60).padStart(2,"0");return t?`${"0"===n?"":`${n}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=n(3649);const w=(e,t,n,r=!0,a="km")=>{const o=n?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${t.toFixed(2)} ${o}/h`;case"total_duration":return N(t,r);case"total_distance":case"total_ascent":case"total_descent":return`${t.toFixed(2)} ${o}`;default:return t.toString()}};var v=(0,r.aZ)({name:"Chart",components:{BarChart:U.vz},props:{datasets:{type:Object,required:!0},labels:{type:Object,required:!0},displayedData:{type:String,required:!0},displayedSportIds:{type:Array,required:!0},fullStats:{type:Boolean,required:!0},useImperialUnits:{type:Boolean,required:!0}},setup(e){const{t:t}=(0,z.QT)();function n(e){return isNaN(e)?0:+e}function a(e,t){return n(e)+n(t)}function o(e){return["total_ascent","total_descent"].includes(e)?"m":"km"}const i=(0,r.Fl)((()=>({labels:e.labels,datasets:JSON.parse(JSON.stringify(e.datasets))}))),s=(0,r.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:e.fullStats?40:22}},scales:{x:{stacked:!0,grid:{drawOnChartArea:!1}},y:{stacked:"average_speed"!==e.displayedData,grid:{drawOnChartArea:!1},ticks:{maxTicksLimit:6,callback:function(t){return w(e.displayedData,+t,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(t){t.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(t){return"average_speed"===e.displayedData&&t.dataset.backgroundColor?t.dataset.backgroundColor[0]:"#666666"},rotation:function(t){return e.fullStats&&t.chart.chartArea.width<580?310:0},display:function(t){return!(e.fullStats&&t.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(t,n){if("average_speed"===e.displayedData)return w(e.displayedData,t,e.useImperialUnits,!1);{const t=n.chart.data.datasets.map((e=>e.data[n.dataIndex])).reduce(((e,t)=>a(e,t)),0);return n.datasetIndex===e.displayedSportIds.length-1&&t>0?w(e.displayedData,t,e.useImperialUnits,!1,o(e.displayedData)):null}}},legend:{display:!1},tooltip:{interaction:{intersect:!0,mode:"index",position:"average_speed"===e.displayedData?"nearest":"average"},filter:function(e){return"0"!==e.formattedValue},callbacks:{label:function(n){let r=t(`sports.${n.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==n.parsed.y&&(r+=w(e.displayedData,n.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(n){if("average_speed"===e.displayedData)return"";let r=0;return n.map((e=>{r+=e.parsed.y})),`${t("common.TOTAL")}: `+w(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,U.xZ)({chartData:i,options:s});return{barChartProps:l}}}),C=n(3744);const f=(0,C.Z)(v,[["render",g]]);var D=f,k=n(5801),P=n(9917),L=n(9318),M=(0,r.aZ)({name:"UserMonthStats",components:{Chart:D},props:{sports:{type:Object,required:!0},user:{type:Object,required:!0},chartParams:{type:Object,required:!0},displayedSportIds:{type:Array,default:()=>[]},fullStats:{type:Boolean,default:!1},hideChartIfNoData:{type:Boolean,default:!1}},setup(e){const t=(0,P.o)(),n=(0,I.iH)("total_distance"),a=(0,r.Fl)((()=>t.getters[k.gu.GETTERS.USER_STATS])),o=(0,r.Fl)((()=>(0,L.v1)(e.chartParams,e.user.weekm,e.sports,e.displayedSportIds,a.value,e.user.imperial_units,e.user.date_format)));function i(n){t.dispatch(k.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:n})}function s(e){n.value=e.target.name}function l(e,t){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(t.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async t=>{i(l(t,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[n.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:n,updateDisplayData:s}}});const b=(0,C.Z)(M,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=b},2179:function(e,t,n){"use strict";n.d(t,{Z:function(){return z}});var r=n(6252),a=n(2262),o=n(3577),i=n(6595),s=n(5801),l=n(9917);const c={class:"box user-header"},u={class:"user-details"},d={class:"user-name"},m={class:"user-stats"},E={class:"user-stat"},_={class:"stat-number"},S={class:"stat-label"},T={class:"user-stat"},p={class:"stat-label"},A={class:"user-stat hide-small"},O={class:"stat-number"},I={class:"stat-label"};var R=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const t=e,{user:n}=(0,a.BK)(t),R=(0,l.o)(),g=(0,r.Fl)((()=>R.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(n)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(n).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(n).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(n).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(n).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(g).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(g).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(n).nb_sports),1),(0,r._)("span",I,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(n).nb_sports)),1)])])])])}}}),g=n(3744);const U=(0,g.Z)(R,[["__scopeId","data-v-20291951"]]);var z=U},1585:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});n(7658);var r=n(6252),a=n(2262),o=n(3577),i=n(9963),s=n(4850),l=n(5801),c=n(9917),u=n(6558),d=n(6287);const m={id:"user-infos",class:"description-list"},E={key:1,class:"info-box success-message"},_={key:4,class:"email-form form-box"},S={class:"form-items",for:"email"},T={class:"form-items",for:"email"},p={class:"form-buttons"},A={class:"confirm",type:"submit"},O=["onClick"],I={key:5},R={class:"user-bio"},g={key:0,class:"profile-buttons"},U=["onClick"],z={key:1,class:"profile-buttons"};var N=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const t=e,n=(0,c.o)(),{user:N,fromAdmin:h}=(0,a.BK)(t),w=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.LANGUAGE])),v=(0,r.Fl)((()=>n.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),C=(0,r.Fl)((()=>t.user.created_at?(0,u.p6)(t.user.created_at,v.value.timezone,v.value.date_format):"")),f=(0,r.Fl)((()=>t.user.birth_date?(0,s.Z)(new Date(t.user.birth_date),`${(0,u.mh)(v.value.date_format,w.value)}`,{locale:d.v1[w.value]}):"")),D=(0,r.Fl)((()=>n.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),k=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.ERROR_MESSAGES])),P=(0,r.Fl)((()=>n.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),M=(0,a.iH)(!1),b=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){n.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function K(e){G.value="password-reset",n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function Y(){Z(),y.value=N.value.email_to_confirm?N.value.email_to_confirm:"",b.value=!0,G.value="email-update"}function x(){y.value="",b.value=!1}function $(e){n.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function Z(){n.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),n.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>Z())),(0,r.YP)((()=>D.value),(e=>{e&&(F(""),x())})),(e,t)=>{const n=(0,r.up)("Modal"),s=(0,r.up)("AlertMessage"),l=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",m,[L.value?((0,r.wg)(),(0,r.j4)(n,{key:0,title:e.$t("common.CONFIRMATION"),message:"delete"===L.value?"admin.CONFIRM_USER_ACCOUNT_DELETION":"admin.CONFIRM_USER_PASSWORD_RESET",strongMessage:(0,a.SU)(N).username,onConfirmAction:t[0]||(t[0]=e=>"delete"===L.value?W((0,a.SU)(N).username):K((0,a.SU)(N).username)),onCancelAction:t[1]||(t[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(D)?((0,r.wg)(),(0,r.iD)("div",E,(0,o.zw)(e.$t(`admin.${"password-reset"===G.value?"PASSWORD_RESET":"USER_EMAIL_UPDATE"}_SUCCESSFUL`)),1)):(0,r.kq)("",!0),(0,a.SU)(N).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(s,{key:2,message:"user.THIS_USER_ACCOUNT_IS_INACTIVE"})),(0,a.SU)(k)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(k)},null,8,["message"])):(0,r.kq)("",!0),b.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:M.value}),onSubmit:t[4]||(t[4]=(0,i.iM)((e=>$((0,a.SU)(N).username)),["prevent"]))},[(0,r._)("label",S,[(0,r.Uk)((0,o.zw)(e.$t("admin.CURRENT_EMAIL"))+" ",1),(0,r.wy)((0,r._)("input",{id:"email",type:"email","onUpdate:modelValue":t[2]||(t[2]=e=>(0,a.SU)(N).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(N).email]])]),(0,r._)("label",T,[(0,r.Uk)((0,o.zw)(e.$t("admin.NEW_EMAIL"))+"* ",1),(0,r.wy)((0,r._)("input",{id:"new-email",type:"email",required:"","onUpdate:modelValue":t[3]||(t[3]=e=>y.value=e)},null,512),[[i.nr,y.value]])]),(0,r._)("div",p,[(0,r._)("button",A,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,r._)("button",{class:"cancel",onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",I,[(0,r._)("dl",null,[(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(C)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).first_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).last_name),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(f)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(N).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",R,(0,o.zw)((0,a.SU)(N).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",g,[(0,a.SU)(v).username!==(0,a.SU)(N).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:t[5]||(t[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(N).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:t[6]||(t[6]=(0,i.iM)((e=>B((0,a.SU)(N).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(v).username!==(0,a.SU)(N).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(Y,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,U)):(0,r.kq)("",!0),(0,a.SU)(v).username!==(0,a.SU)(N).username&&(0,a.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:t[7]||(t[7]=(0,i.iM)((e=>F("reset")),["prevent"]))},(0,o.zw)(e.$t("admin.RESET_USER_PASSWORD")),1)):(0,r.kq)("",!0),(0,r._)("button",{onClick:t[8]||(t[8]=t=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("button",{onClick:t[9]||(t[9]=t=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:t[10]||(t[10]=t=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=n(3744);const w=(0,h.Z)(N,[["__scopeId","data-v-217519af"]]);var v=w},2411:function(e,t,n){"use strict";n.d(t,{Z:function(){return f}});var r=n(6252),a=n(3577),o=n(2262),i=n(9963),s=n(2201),l=n(8403),c=n(5801),u=n(9917);const d=e=>((0,r.dD)("data-v-b3c885de"),e=e(),(0,r.Cn)(),e),m={id:"user-form"},E={key:2,class:"info-box success-message"},_={class:"form-items"},S=["disabled","placeholder"],T={key:1,class:"form-info"},p=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),A=["disabled","placeholder"],O={key:3,class:"form-info"},I=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),R=["disabled"],g={key:3},U={key:0},z={key:4},N={class:"account"},h={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const t=e,n=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(t),v=(0,o.qj)({username:"",email:"",password:""}),C=(0,r.Fl)((()=>G(t.action))),f=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),D=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),L=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),M=(0,r.Fl)((()=>"register"===t.action&&!P.value.is_registration_enabled)),b=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(t.action)&&!P.value.is_email_sending_enabled)),y=(0,o.iH)(!1);function G(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${t.action.toUpperCase()}`}}function F(){y.value=!0}function W(e){v.password=e}function K(e){switch(e){case"reset":return t.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:v.password,token:t.token}):d.commit(c.SY.MUTATIONS.SET_ERROR_MESSAGES,"user.INVALID_TOKEN");case"reset-request":return d.dispatch(c.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST,{email:v.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:v.email});default:v["language"]=L.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:v,redirectUrl:n.query.from})}}function B(){v.username="",v.email="",v.password=""}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>n.path),(async()=>{d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),d.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),d.commit(c.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),y.value=!1,B()})),(e,t)=>{const n=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("ErrorMessage");return(0,r.wg)(),(0,r.iD)("div",{id:"user-auth-form",class:(0,a.C_)(`${["reset","reset-request"].includes((0,o.SU)(w))?(0,o.SU)(w):"user-form"}`)},[(0,r._)("div",m,[(0,r._)("div",{class:(0,a.C_)(["form-box",{disabled:(0,o.SU)(M)}])},[(0,o.SU)(M)?((0,r.wg)(),(0,r.j4)(n,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(b)?((0,r.wg)(),(0,r.j4)(n,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(k)||(0,o.SU)(D)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(D)?"REGISTRATION"+((0,o.SU)(P).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:y.value}),onSubmit:t[2]||(t[2]=(0,i.iM)((e=>K((0,o.SU)(w))),["prevent"]))},[(0,r._)("div",_,["register"===(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:0,id:"username",disabled:(0,o.SU)(M),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:F,"onUpdate:modelValue":t[0]||(t[0]=e=>v.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,v.username]]):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",T,[p,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.USERNAME_INFO")),1)])):(0,r.kq)("",!0),"reset"!==(0,o.SU)(w)?(0,r.wy)(((0,r.wg)(),(0,r.iD)("input",{key:2,id:"email",disabled:(0,o.SU)(M)||(0,o.SU)(b),required:"",onInvalid:F,type:"email","onUpdate:modelValue":t[1]||(t[1]=e=>v.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,v.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[I,(0,r.Uk)(" "+(0,a.zw)(e.$t("user.EMAIL_INFO")),1)])):(0,r.kq)("",!0),["account-confirmation-resend","reset-request"].includes((0,o.SU)(w))?(0,r.kq)("",!0):((0,r.wg)(),(0,r.j4)(l.Z,{key:4,disabled:(0,o.SU)(M),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:v.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:W,onPasswordError:F},null,8,["disabled","placeholder","password","checkStrength"]))]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(M)||(0,o.SU)(b)},(0,a.zw)(e.$t((0,o.SU)(C))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",g,[(0,r.Wm)(s,{class:"links",to:"/register"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.REGISTER")),1)])),_:1}),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.j4)(s,{key:1,class:"links",to:"/password-reset/request"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.PASSWORD_FORGOTTEN")),1)])),_:1})):(0,r.kq)("",!0)])):(0,r.kq)("",!0),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",z,[(0,r._)("span",N,(0,a.zw)(e.$t("user.ALREADY_HAVE_ACCOUNT")),1),(0,r.Wm)(s,{class:"links",to:"/login"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.LOGIN")),1)])),_:1})])):(0,r.kq)("",!0),["login","register"].includes((0,o.SU)(w))&&(0,o.SU)(P).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",h,[(0,r.Wm)(s,{class:"links",to:"/account-confirmation/resend"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("user.ACCOUNT_CONFIRMATION_NOT_RECEIVED")),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(f)?((0,r.wg)(),(0,r.j4)(c,{key:6,message:(0,o.SU)(f)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),v=n(3744);const C=(0,v.Z)(w,[["__scopeId","data-v-b3c885de"]]);var f=C},6595:function(e,t,n){"use strict";n.d(t,{Z:function(){return E}});var r=n(6252),a=n(2262),o=n(2024);const i={class:"user-picture"},s=["alt","src"],l={key:1,class:"no-picture"},c=(0,r._)("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),u=[c];var d=(0,r.aZ)({__name:"UserPicture",props:{user:null},setup(e){const t=e,n=(0,r.Fl)((()=>t.user.picture?`${(0,o.k)()}users/${t.user.username}/picture?${Date.now()}`:""));return(e,t)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(n)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(n)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(6252),a=n(3577);const o={class:"no-workouts box"};function i(e,t){const n=(0,r.up)("router-link");return(0,r.wg)(),(0,r.iD)("div",o,[(0,r._)("div",null,[(0,r.Uk)((0,a.zw)(e.$t("workouts.NO_WORKOUTS"))+" ",1),(0,r.Wm)(n,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=n(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,t,n){var r={"./de/de.ts":9923,"./en/en.ts":8757,"./fr/fr.ts":6625,"./nb/nb.ts":8891,"./nl/nl.ts":701};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(s=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},n.d(o,i),o}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))}}(),function(){n.u=function(e){return"static/js/"+({24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile",881:"password"}[e]||e)+"."+{24:"765db75f",93:"611a4415",193:"7cce80c4",243:"d3fff3a7",328:"c4231dfb",401:"6988dc66",431:"52f71cad",633:"5eb61510",845:"984aa6f4",858:"ec3b00a9",881:"cfeb5ed6"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"9970f29e",845:"9f83730d"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="fittrackee_client:";n.l=function(r,a,o,i){if(e[r])e[r].push(a);else{var s,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nconst disabledLanguages = ['nb'] // to update after translations release\n\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (\n matched &&\n matched.length > 1 &&\n !disabledLanguages.includes(matched[1])\n ) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellcode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Anzahl der Dateien im Archiv überschreitet die Begrenzung.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine neue OAuth2-Anwendung hinzufügen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ID\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheimnis\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsbeschreibung\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erstellt am\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsname\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiterleitungs-URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geltungsbereich\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf auth-Endpunkte\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf users-Endpunkte\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf users-Endpunkte\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf workouts-Endpunkte\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf workouts-Endpunkte\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist sicher, dass du diese App löschen willst?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Anwendung \", _interpolate(_list(0)), \" fragt an:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" den Zugriff auf deinen Account erlauben?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Zwischenablage kopieren\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung löschen\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung hinzufügen\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung wurde nicht gefunden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Anwendungen\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Beschreibung\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Tokens zurückrufen\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du alle Tokens zurückrufen möchtest?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle vorhandenen und vergebenen Tokens wurde zurückgerufen.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Virtuell)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datumsanzeigeformat\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least one file in zip archive exceeds size limit, please check the archive.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The number of files in the archive exceeds the limit.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Virtual)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date display format\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The distance must be greater than 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The duration must be greater than 0 seconds\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le nombre de fichiers de l'archive dépasse la limite.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Virtuel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Format d'affichage de la date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km)\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distance doit être supérieure à 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durée doit être supérieure à 0 secondes\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacteer uw administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is zelf-gehoste buitenshuis activiteiten tracker.\"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actie\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activeer account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email voor contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie configureren\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van zip archief (in Mb)\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])}\n },\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u het wachtwoord voor \", _interpolate(_list(0)), \" wilt resetten?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidige email\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emails verzenden is uitgeschakeld.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aan- of uitzetten van sporten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel uitgeschakeld.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel ingeschakeld.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset wachtwoord\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"gebruiker\"]), _normalize([\"gebruikers\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin rechten toevoegen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder admin rechten\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie datum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersnaam\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aantal trainingen\"])}\n }\n }\n },\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u de account \", _interpolate(_list(0)), \" wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte).\"])}\n}","export default {\n \"ERROR\": {\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij ophalen van configuratie.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het updaten van de configuratie\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, probeer opnieuw of contacteer de administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, registratie is uitgeschakeld.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsformaat niet toegelaten.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige inloggegevens.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingegeven data is ongeldig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het nieuwe email adres dient te verschillen van het oude\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand geselecteerd.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het aantal bestanden in het zip archief overschrijdt de limiet.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord: het wachtwoord en de bevestiging komen niet overeen.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, deze gebruikersnaam is al in gebruik.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze sport bestaat niet.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruiker bestaat niet.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een geldige email is vereist voor admin contact informatie\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U hebt geen machtigingen.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])}\n }\n}","export default {\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])},\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Herzend bevestigings email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toekennen\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuleren\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder mijn account\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bewerken\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanzetten\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassen\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contacteer\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"dag\"]), _normalize([\"dagen\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer op\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totaal\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze maand\"])}\n}","export default {\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina niet gevonden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training niet gevonden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er ging iets mis\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator.\"])}\n}","export default {\n \"APP\": {\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Doorverwijs URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Omvang\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan workouts endpoints.\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])}\n },\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze app wilt verwijderen?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"De app \", _interpolate(_list(0)), \" vraagt:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Toegang geven aan \", _interpolate(_list(0)), \" tot uw gebruikersaccount?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kopieer naar klembord\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder app\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg een app toe\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App niet gevonden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen apps\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen beschrijving\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder alle tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u alle tokens wilt intrekken?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle bestaande tokens werden ingetrokken.\"])},\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Virtueel)\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (Elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roeien\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lopen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sneeuwschoenen\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jaar\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen instructies ontvangen?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Al een account aangemaakt?\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidig wachtwoord\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig email adres op.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een paswoord in\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter op gebruikersnaam\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg wachtwoord\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldig token, vraag een nieuwe wachtwoord reset aan.\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuw wachtwoord\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen gebruikers gevonden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik niet enkel voor de eerste letter een hoofdletter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd persoonlijke gegevens en jaartallen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])}\n }\n },\n \"PROFILE\": {\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar profiel\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geboortedatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergaveformaat datum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren wijzigen\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren wijzigen\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Achternaam\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Locatie\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maandag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding aanpassen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum registratie\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zondag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afbeelding\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voorkeuren\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actie\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"uitgeschakeld door admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actief\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheidsgrens voor stilstand\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol aangemaakt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Gelieve \", _interpolate(_list(0)), \" om uw email adres opnieuw te wijzigen of contacteer uw administrator\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registreren is uitgeschakeld.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon wachtwoord\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze account is niet actief.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Uw wachtwoord werd aangepast. Klik \", _interpolate(_list(0)), \" om in te loggen.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \\\"_\\\" zijn toegestaan.\"])}\n}","export default {\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. snelheid\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedaald\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afstand\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duur\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training aanpassen\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hoogte\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"einde\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"van\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx bestand\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg filters\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste trainingen\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toon meer trainingen\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. hoogte\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. aantal bestanden\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. grootte\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. snelheid\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. hoogte\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Volgende training\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen map aanwezig\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen kaart\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgende training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen notities\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorig segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorige training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauzes\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorig segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorige training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogst geklommen\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste duur\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. snelheid\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"resterende karakters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segmenten\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheid\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sporten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zet hoogte-as vast op 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aan\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"totale duur\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eén uploaden!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vochtigheid\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatuur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere dag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bewolkt\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mist\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte dag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"natte sneeuw\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sneeuw\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze training wilt verwijderen?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip bestand\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"of .zip archief met .gpx bestanden\"])},\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c73279e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\nconst _hoisted_12 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n };\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"a\", _hoisted_12, _toDisplayString(_ctx.$t('common.DOCUMENTATION')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=2c73279e&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c73279e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1db396e7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=1db396e7&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1db396e7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8cf5cc64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null };\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLenght: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=8cf5cc64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cf5cc64\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment } from \"vue\"\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean };\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _createTextVNode(\" \" + _toDisplayString(' ') + \" \"),\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9590c0e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n };\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=9590c0e6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9590c0e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingVirtual.vue?vue&type=template&id=ec8f7bb6\"\nimport script from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import CyclingVirtual from '@/components/Common/Images/SportImage/CyclingVirtual.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string };\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Virtual)')\n ? (_openBlock(), _createBlock(CyclingVirtual, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 12 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e8fcfaba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null };\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=e8fcfaba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e8fcfaba\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24ec93e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_18 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nimport {\n ComputedRef,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean };\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", _hoisted_18, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_19)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=24ec93e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24ec93e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n };\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n };\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics };\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dc12ff78\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n user.created_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=dc12ff78&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dc12ff78\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean };\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=01b05f01&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed, ComputedRef } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateFormat } from '@/utils/dates'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const appLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const userLanguage = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const date_format = computed(() =>\n props.user.date_format ? props.user.date_format : 'MM/dd/yyyy'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(userLanguage)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(getDateFormat)(_unref(date_format), _unref(appLanguage))), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-37b8c4c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile, IUserAccountPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 42, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=37b8c4c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37b8c4c8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e5a4552\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n props.user.timezone,\n props.user.date_format\n )\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=5e5a4552&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e5a4552\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean };\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b8a9a12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_12 = { class: \"checkboxes-label\" }\nconst _hoisted_13 = { class: \"checkboxes\" }\nconst _hoisted_14 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_15 = { class: \"checkbox-label\" }\nconst _hoisted_16 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_17 = { class: \"checkboxes-label\" }\nconst _hoisted_18 = { class: \"checkboxes\" }\nconst _hoisted_19 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_20 = { class: \"checkbox-label\" }\nconst _hoisted_21 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_22 = { class: \"checkboxes-label\" }\nconst _hoisted_23 = { class: \"checkboxes\" }\nconst _hoisted_24 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_25 = { class: \"checkbox-label\" }\nconst _hoisted_26 = { class: \"form-buttons\" }\nconst _hoisted_27 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableDateFormatOptions } from '@/utils/dates'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n date_format: 'dd/MM/yyyy',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const dateFormatOptions = computed(() =>\n availableDateFormatOptions(\n new Date().toUTCString(),\n props.user.timezone,\n userForm.language\n )\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.date_format = user.date_format ? user.date_format : 'dd/MM/yyyy'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"date_format\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.date_format) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dateFormatOptions), (dateFormat) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: dateFormat.value,\n key: dateFormat.value\n }, _toDisplayString(dateFormat.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, userForm.date_format]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_14),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_18, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_19),\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_23, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_24),\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", _hoisted_27, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=3b8a9a12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b8a9a12\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a844fa2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean };\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(formatDate)(\n _unref(client).issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=3a844fa2&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a844fa2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efa45ea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(formatDate)(\n client.issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=efa45ea0&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efa45ea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n };\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74257266\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\n\nimport { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=74257266&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74257266\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-96abcc38\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_19 = { class: \"data-values\" }\n\nimport { Locale, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport };\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(formatDate)(_unref(workout).workout_date, _unref(user).timezone, _unref(user).date_format)\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/ \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createTextVNode(\" +\"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/- \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=96abcc38&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-96abcc38\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n };\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n };\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n };\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n };\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n };\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n };\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n };\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import createI18n from '@/i18n'\nimport { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatDate, getDateFormat } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean,\n date_format: string\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatDate(record.workout_date, tz, date_format, false),\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean,\n date_format: string\n): IRecordsBySports => {\n date_format = getDateFormat(date_format, locale.value)\n return records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits, date_format)\n )\n }\n return sportList\n }, {})\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8d17c606\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n };\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=8d17c606&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8d17c606\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0c85cb8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent,\n props.user.date_format\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f0c85cb8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f0c85cb8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c0893c1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"container\" }\nconst _hoisted_13 = { class: \"container dashboard-container\" }\nconst _hoisted_14 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_15 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_17 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_16\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4c0893c1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4c0893c1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58043acb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=58043acb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-58043acb\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string | string[]\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const notes = payload.notes.replace(/\"/g, '\\\\\"')\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nimport createI18n from '@/i18n'\nimport { localeFromLanguage } from '@/utils/locales'\n\nconst { locale } = createI18n.global\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n dateFormat = getDateFormat(dateFormat, locale.value)\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat, {\n locale: localeFromLanguage[locale.value],\n }),\n workout_time: format(dateTime, timeFormat),\n }\n}\n\nconst availableDateFormats = [\n 'MM/dd/yyyy',\n 'dd/MM/yyyy',\n 'yyyy-MM-dd',\n 'date_string',\n]\nconst dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n // nb: 'do MMM yyyy',\n nl: 'd MMM yyyy',\n}\n\nexport const getDateFormat = (dateFormat: string, language: string): string => {\n return dateFormat === 'date_string' ? dateStringFormats[language] : dateFormat\n}\n\nexport const formatDate = (\n dateString: string,\n timezone: string,\n dateFormat: string,\n withTime = true,\n language: string | null = null\n): string => {\n if (!language) {\n language = locale.value\n }\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${withTime ? ' HH:mm' : ''}`,\n { locale: localeFromLanguage[language] }\n )\n}\n\nexport const availableDateFormatOptions = (\n inputDate: string,\n timezone: string,\n language: string | null = null\n) => {\n const l: string = language ? language : locale.value\n const options: Record[] = []\n availableDateFormats.map((df) => {\n const dateFormat = getDateFormat(df, l)\n options.push({\n label: `${dateFormat} - ${formatDate(\n inputDate,\n timezone,\n dateFormat,\n false,\n l\n )}`,\n value: df,\n })\n })\n return options\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IApiErrorMessage } from '@/types/api'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n const errorInfo: IApiErrorMessage | null =\n error?.response && error.response.data ? error.response.data : null\n\n // if stored token is blacklisted, disconnect user\n if (error?.response?.status === 401 && errorInfo?.error === 'invalid_token') {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : errorInfo?.message\n ? errorInfo.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, nl } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n // nb: nb, // disabled for now\n nl: nl,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n // nb: 'Norsk bokmål', // disabled for now\n nl: 'Nederlands',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n 'Cycling (Virtual)': '#64a360',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport createI18n from '@/i18n'\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate, getDateFormat } from '@/utils/dates'\nimport { localeFromLanguage } from '@/utils/locales'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'MM/dd/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean,\n userDateFormat: string\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(\n key,\n params.duration === 'week'\n ? getDateFormat(userDateFormat, locale.value)\n : dateFormat.chart,\n { locale: localeFromLanguage[locale.value] }\n )\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n };\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string };\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string };\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n };\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnEnPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-en'\n )\n const zxcvbnFrPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-fr'\n )\n const zxcvbnDePackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-de'\n )\n const zxcvbnLangPackages: Record = {\n de: zxcvbnDePackage,\n en: zxcvbnEnPackage,\n fr: zxcvbnFrPackage,\n // no package available for norwegian bokmal, fallback on english\n nb: zxcvbnEnPackage,\n // no package available for dutch (Nederlands), fallback on english\n nl: zxcvbnEnPackage,\n }\n const zxcvbnPackage = zxcvbnLangPackages[language]\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnPackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n };\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean };\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean };\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d5e9b348\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartOptions, LayoutItem } from 'chart.js'\n import { PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=1d43a4a8&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units,\n props.user.date_format\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=d5e9b348&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d5e9b348&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5e9b348\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-217519af\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate, getDateFormat } from '@/utils/dates'\n import { localeFromLanguage } from '@/utils/locales'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean };\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n authUser.value.timezone,\n authUser.value.date_format\n )\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(\n new Date(props.user.birth_date),\n `${getDateFormat(authUser.value.date_format, language.value)}`,\n { locale: localeFromLanguage[language.value] }\n )\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=217519af&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-217519af\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b3c885de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { key: 3 }\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { class: \"account\" }\nconst _hoisted_15 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_10)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=b3c885de&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b3c885de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 9923,\n\t\"./en/en.ts\": 8757,\n\t\"./fr/fr.ts\": 6625,\n\t\"./nb/nb.ts\": 8891,\n\t\"./nl/nl.ts\": 701\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\",\"881\":\"password\"}[chunkId] || chunkId) + \".\" + {\"24\":\"a8b861ae\",\"93\":\"611a4415\",\"193\":\"7cce80c4\",\"243\":\"d3fff3a7\",\"328\":\"c4231dfb\",\"401\":\"6988dc66\",\"431\":\"52f71cad\",\"633\":\"5eb61510\",\"845\":\"984aa6f4\",\"858\":\"ec3b00a9\",\"881\":\"cfeb5ed6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"9970f29e\",\"845\":\"9f83730d\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(9342); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","disabledLanguages","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","includes","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","target","rel","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","__exports__","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","watch","_withDirectives","maxLenght","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","CyclingVirtual","Hiking","MountainBiking","MountainBikingElectric","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","formatDate","created_at","timezone","date_format","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","appLanguage","userLanguage","languageLabels","fistDayOfWeek","weekm","display_ascent","getDateFormat","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","invalidateForm","updateUserForm","updatePassword","updateNewPassword","updateProfile","payload","updateDisplayModal","deleteAccount","async","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","first_name","last_name","birth_date","location","bio","registrationDate","format","Date","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","status","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","src","alt","BikePic","About","workout","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","ascent","descent","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","rows","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","getDateWithTZ","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","then","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","finally","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","setAttribute","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","formatWorkoutDate","dateTime","timeFormat","workout_time","availableDateFormats","dateStringFormats","de","en","fr","nl","dateString","withTime","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","availableLocales","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","userDateFormat","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnEnPackage","zxcvbnFrPackage","zxcvbnDePackage","zxcvbnLangPackages","zxcvbnPackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","onLinkComplete","errorType","realHref","err","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/app.b9bf563e.js","mappings":"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CA,4BACA,wBACA,4BACA,0BACA,iBACA,kBACA,kBACA,iBACA,8BACA,8BACA,iBACA,eACA,sBACA,iBACA,kBACA,iBACA,qBACA,oBACA,mBACA,oBACA,iBACA,qBACA,sBACA,mBACA,kBACA,oBACA,qBACA,iBACA,mBACA,kBACA,eACA,kBACA,8BACA,8BACA,iCACA,kBACA,iBACA,sBACA,qBACA,kBACA,yBACA,wBACA,sBACA,sBACA,uBACA,sBACA,uBACA,iBACA,iBACA,mBACA,qBACA,mBACA,mBACA,wBACA,oBACA,uBACA,gBACA,mBACA,wBACA,sBACA,gBACA,sBACA,kBACA,kBACA,oBACA,qBACA,mBACA,kBACA,sBACA,mBACA,mBACA,4BACA,uBACA,oBACA,oBACA,qBACA,mBACA,mBACA,oBACA,cACA,aACA,cACA,aACA,cACA,gBACA,cACA,eACA,YACA,eACA,eACA,cACA,eACA,cACA,aACA,kBACA,eACA,gBACA,aACA,YACA,aACA,gBACA,iBACA,YACA,cACA,mBACA,iBACA,YACA,eACA,eACA,gBACA,iBACA,aACA,iBACA,eACA,iBACA,gBACA,eACA,mBACA,oBACA,eACA,aACA,eACA,gBACA,cACA,eACA,oBACA,mBACA,YACA,YACA,iBACA,iBACA,aACA,gBACA,iBACA,cACA,gBACA,iBACA,aACA,gBACA,iBACA,qBACA,cACA,gBACA,eACA,cACA,eACA,aACA,aACA,mBACA,cACA,gBACA,mBACA,eACA,cACA,qBACA,eACA,kBACA,mBACA,kBACA,sBACA,iBACA,mBACA,qBACA,yBACA,mBACA,qBACA,qBACA,wBACA,mBACA,mBACA,kBACA,mBACA,qBACA,sBACA,sBACA,kBACA,mBACA,mBACA,iBACA,mBACA,gBACA,kBACA,gBACA,kBACA,mBACA,kBACA,kBACA,oBACA,gBACA,mBACA,kBACA,kBACA,qBACA,cACA,eACA,gBACA,gBACA,oBACA,gBACA,eACA,eACA,gBACA,gBACA,cACA,eACA,gBACA,cACA,cACA,gBACA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","sources":["webpack://fittrackee_client/./src/api/authApi.ts","webpack://fittrackee_client/./src/api/pending.ts","webpack://fittrackee_client/./src/i18n.ts","webpack://fittrackee_client/./src/locales/de/about.json","webpack://fittrackee_client/./src/locales/de/administration.json","webpack://fittrackee_client/./src/locales/de/api.json","webpack://fittrackee_client/./src/locales/de/buttons.json","webpack://fittrackee_client/./src/locales/de/common.json","webpack://fittrackee_client/./src/locales/de/dashboard.json","webpack://fittrackee_client/./src/locales/de/error.json","webpack://fittrackee_client/./src/locales/de/oauth2.json","webpack://fittrackee_client/./src/locales/de/sports.json","webpack://fittrackee_client/./src/locales/de/statistics.json","webpack://fittrackee_client/./src/locales/de/user.json","webpack://fittrackee_client/./src/locales/de/workouts.json","webpack://fittrackee_client/./src/locales/de/de.ts","webpack://fittrackee_client/./src/locales/en/about.json","webpack://fittrackee_client/./src/locales/en/administration.json","webpack://fittrackee_client/./src/locales/en/api.json","webpack://fittrackee_client/./src/locales/en/buttons.json","webpack://fittrackee_client/./src/locales/en/common.json","webpack://fittrackee_client/./src/locales/en/dashboard.json","webpack://fittrackee_client/./src/locales/en/error.json","webpack://fittrackee_client/./src/locales/en/oauth2.json","webpack://fittrackee_client/./src/locales/en/sports.json","webpack://fittrackee_client/./src/locales/en/statistics.json","webpack://fittrackee_client/./src/locales/en/user.json","webpack://fittrackee_client/./src/locales/en/workouts.json","webpack://fittrackee_client/./src/locales/en/en.ts","webpack://fittrackee_client/./src/locales/fr/about.json","webpack://fittrackee_client/./src/locales/fr/administration.json","webpack://fittrackee_client/./src/locales/fr/api.json","webpack://fittrackee_client/./src/locales/fr/buttons.json","webpack://fittrackee_client/./src/locales/fr/common.json","webpack://fittrackee_client/./src/locales/fr/dashboard.json","webpack://fittrackee_client/./src/locales/fr/error.json","webpack://fittrackee_client/./src/locales/fr/oauth2.json","webpack://fittrackee_client/./src/locales/fr/sports.json","webpack://fittrackee_client/./src/locales/fr/statistics.json","webpack://fittrackee_client/./src/locales/fr/user.json","webpack://fittrackee_client/./src/locales/fr/workouts.json","webpack://fittrackee_client/./src/locales/fr/fr.ts","webpack://fittrackee_client/./src/locales/nb/about.json","webpack://fittrackee_client/./src/locales/nb/administration.json","webpack://fittrackee_client/./src/locales/nb/api.json","webpack://fittrackee_client/./src/locales/nb/buttons.json","webpack://fittrackee_client/./src/locales/nb/common.json","webpack://fittrackee_client/./src/locales/nb/dashboard.json","webpack://fittrackee_client/./src/locales/nb/error.json","webpack://fittrackee_client/./src/locales/nb/oauth2.json","webpack://fittrackee_client/./src/locales/nb/sports.json","webpack://fittrackee_client/./src/locales/nb/statistics.json","webpack://fittrackee_client/./src/locales/nb/user.json","webpack://fittrackee_client/./src/locales/nb/workouts.json","webpack://fittrackee_client/./src/locales/nb/nb.ts","webpack://fittrackee_client/./src/locales/nl/about.json","webpack://fittrackee_client/./src/locales/nl/administration.json","webpack://fittrackee_client/./src/locales/nl/api.json","webpack://fittrackee_client/./src/locales/nl/buttons.json","webpack://fittrackee_client/./src/locales/nl/common.json","webpack://fittrackee_client/./src/locales/nl/dashboard.json","webpack://fittrackee_client/./src/locales/nl/error.json","webpack://fittrackee_client/./src/locales/nl/oauth2.json","webpack://fittrackee_client/./src/locales/nl/sports.json","webpack://fittrackee_client/./src/locales/nl/statistics.json","webpack://fittrackee_client/./src/locales/nl/user.json","webpack://fittrackee_client/./src/locales/nl/workouts.json","webpack://fittrackee_client/./src/locales/nl/nl.ts","webpack://fittrackee_client/./src/registerServiceWorker.ts","webpack://fittrackee_client/./src/components/Footer.vue?771f","webpack://fittrackee_client/./src/components/Footer.vue","webpack://fittrackee_client/./src/components/NavBar.vue?9bec","webpack://fittrackee_client/./src/components/NavBar.vue","webpack://fittrackee_client/./src/components/NoConfig.vue?541b","webpack://fittrackee_client/./src/components/NoConfig.vue","webpack://fittrackee_client/./src/App.vue?2a5e","webpack://fittrackee_client/./src/App.vue","webpack://fittrackee_client/./src/components/Common/AlertMessage.vue?3150","webpack://fittrackee_client/./src/components/Common/AlertMessage.vue","webpack://fittrackee_client/./src/components/Common/CustomTextArea.vue?8efa","webpack://fittrackee_client/./src/components/Common/CustomTextArea.vue","webpack://fittrackee_client/./src/components/Common/Distance.vue?edec","webpack://fittrackee_client/./src/components/Common/Distance.vue","webpack://fittrackee_client/./src/components/Common/Dropdown.vue?f7d5","webpack://fittrackee_client/./src/components/Common/Dropdown.vue","webpack://fittrackee_client/./src/components/Common/ErrorMessage.vue?c328","webpack://fittrackee_client/./src/components/Common/ErrorMessage.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingSport.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingSport.vue?4f4b","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingTransport.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingTransport.vue?a81c","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingVirtual.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/CyclingVirtual.vue?1bd1","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Hiking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Hiking.vue?cf60","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBiking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBiking.vue?8a30","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBikingElectric.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/MountainBikingElectric.vue?f7ee","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Rowing.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Rowing.vue?c24b","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Running.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Running.vue?2cd2","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingAlpine.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingAlpine.vue?f1ff","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingCrossCountry.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/SkiingCrossCountry.vue?f0db","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Snowshoes.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Snowshoes.vue?cfb7","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Trail.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Trail.vue?5564","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Walking.vue","webpack://fittrackee_client/./src/components/Common/Images/SportImage/Walking.vue?f92f","webpack://fittrackee_client/./src/components/Common/Images/SportImage/index.vue?1cdd","webpack://fittrackee_client/./src/components/Common/Images/SportImage/index.vue","webpack://fittrackee_client/./src/components/Common/Loader.vue","webpack://fittrackee_client/./src/components/Common/Loader.vue?0b74","webpack://fittrackee_client/./src/components/Common/Modal.vue?0d9d","webpack://fittrackee_client/./src/components/Common/Modal.vue","webpack://fittrackee_client/./src/custom-components.ts","webpack://fittrackee_client/./src/directives.ts","webpack://fittrackee_client/./src/main.ts","webpack://fittrackee_client/./src/components/Administration/AdminApplication.vue?dc32","webpack://fittrackee_client/./src/components/Administration/AdminApplication.vue","webpack://fittrackee_client/./src/components/Common/StatCard.vue?3301","webpack://fittrackee_client/./src/components/Common/StatCard.vue","webpack://fittrackee_client/./src/components/Administration/AppStatsCards.vue?60fb","webpack://fittrackee_client/./src/components/Administration/AppStatsCards.vue","webpack://fittrackee_client/./src/components/Administration/AdminMenu.vue?0597","webpack://fittrackee_client/./src/components/Administration/AdminMenu.vue","webpack://fittrackee_client/./src/components/Administration/AdminSports.vue?05cc","webpack://fittrackee_client/./src/components/Administration/AdminSports.vue","webpack://fittrackee_client/./src/components/Users/UsersNameFilter.vue?0a55","webpack://fittrackee_client/./src/components/Users/UsersNameFilter.vue","webpack://fittrackee_client/./src/components/Administration/AdminUsers.vue?5a76","webpack://fittrackee_client/./src/components/Administration/AdminUsers.vue","webpack://fittrackee_client/./src/components/User/UserProfileTabs.vue?63ef","webpack://fittrackee_client/./src/components/User/UserProfileTabs.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/index.vue?c76d","webpack://fittrackee_client/./src/components/User/ProfileDisplay/index.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserPreferences.vue?a91b","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserPreferences.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/index.vue?8616","webpack://fittrackee_client/./src/components/User/ProfileEdition/index.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserAccountEdition.vue?a978","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserAccountEdition.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserInfosEdition.vue?38a2","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserInfosEdition.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPictureEdition.vue?05c1","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPictureEdition.vue","webpack://fittrackee_client/./src/utils/timezone.ts","webpack://fittrackee_client/./src/components/User/ProfileEdition/TimezoneDropdown.vue?5519","webpack://fittrackee_client/./src/components/User/ProfileEdition/TimezoneDropdown.vue","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPreferencesEdition.vue?76a6","webpack://fittrackee_client/./src/components/User/ProfileEdition/UserPreferencesEdition.vue","webpack://fittrackee_client/./src/utils/oauth.ts","webpack://fittrackee_client/./src/components/User/UserApps/AddUserApp.vue?64f1","webpack://fittrackee_client/./src/components/User/UserApps/AddUserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/AuthorizeUserApp.vue?3371","webpack://fittrackee_client/./src/components/User/UserApps/AuthorizeUserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/index.vue?889c","webpack://fittrackee_client/./src/components/User/UserApps/index.vue","webpack://fittrackee_client/./src/components/User/UserApps/UserApp.vue?df25","webpack://fittrackee_client/./src/components/User/UserApps/UserApp.vue","webpack://fittrackee_client/./src/components/User/UserApps/UserAppsList.vue?6c20","webpack://fittrackee_client/./src/components/User/UserApps/UserAppsList.vue","webpack://fittrackee_client/./src/components/User/UserSportPreferences.vue?5e40","webpack://fittrackee_client/./src/components/User/UserSportPreferences.vue","webpack://fittrackee_client/./src/components/About.vue?b879","webpack://fittrackee_client/./src/components/About.vue","webpack://fittrackee_client/./src/components/BikePic.vue","webpack://fittrackee_client/./src/components/BikePic.vue?a9e2","webpack://fittrackee_client/./src/views/AboutView.vue?9f41","webpack://fittrackee_client/./src/views/AboutView.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutCard.vue?56e2","webpack://fittrackee_client/./src/components/Workout/WorkoutCard.vue","webpack://fittrackee_client/./src/components/Dashboard/Timeline.vue?046b","webpack://fittrackee_client/./src/components/Dashboard/Timeline.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkout.vue?609b","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkout.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/DonutChart.vue?08e2","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/DonutChart.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue?1aa0","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkouts.vue?7291","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarWorkouts.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarCells.vue?b7e6","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarCells.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarDays.vue?4138","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarDays.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarHeader.vue?7e24","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/CalendarHeader.vue","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/index.vue?c598","webpack://fittrackee_client/./src/components/Dashboard/UserCalendar/index.vue","webpack://fittrackee_client/./src/components/Dashboard/UserMonthStats.vue?9128","webpack://fittrackee_client/./src/components/Dashboard/UserMonthStats.vue","webpack://fittrackee_client/./src/utils/records.ts","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/RecordsCard.vue?9439","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/RecordsCard.vue","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/index.vue?7d56","webpack://fittrackee_client/./src/components/Dashboard/UserRecords/index.vue","webpack://fittrackee_client/./src/components/Dashboard/UserStatsCards/index.vue?c362","webpack://fittrackee_client/./src/components/Dashboard/UserStatsCards/index.vue","webpack://fittrackee_client/./src/views/Dashboard.vue?95bb","webpack://fittrackee_client/./src/views/Dashboard.vue","webpack://fittrackee_client/./src/views/NotFoundView.vue?8c2c","webpack://fittrackee_client/./src/views/NotFoundView.vue","webpack://fittrackee_client/./src/views/user/LoginOrRegister.vue?46fb","webpack://fittrackee_client/./src/views/user/LoginOrRegister.vue","webpack://fittrackee_client/./src/router/index.ts","webpack://fittrackee_client/./src/store/modules/authUser/enums.ts","webpack://fittrackee_client/./src/store/modules/oauth2/enums.ts","webpack://fittrackee_client/./src/store/modules/root/enums.ts","webpack://fittrackee_client/./src/store/modules/sports/enums.ts","webpack://fittrackee_client/./src/store/modules/statistics/enums.ts","webpack://fittrackee_client/./src/store/modules/users/enums.ts","webpack://fittrackee_client/./src/store/constants.ts","webpack://fittrackee_client/./src/api/defaultApi.ts","webpack://fittrackee_client/./src/store/modules/users/actions.ts","webpack://fittrackee_client/./src/store/modules/authUser/actions.ts","webpack://fittrackee_client/./src/store/modules/authUser/getters.ts","webpack://fittrackee_client/./src/store/modules/authUser/mutations.ts","webpack://fittrackee_client/./src/store/modules/authUser/state.ts","webpack://fittrackee_client/./src/store/modules/authUser/index.ts","webpack://fittrackee_client/./src/store/modules/oauth2/actions.ts","webpack://fittrackee_client/./src/store/modules/oauth2/getters.ts","webpack://fittrackee_client/./src/store/modules/oauth2/mutations.ts","webpack://fittrackee_client/./src/store/modules/oauth2/state.ts","webpack://fittrackee_client/./src/store/modules/oauth2/index.ts","webpack://fittrackee_client/./src/store/modules/root/actions.ts","webpack://fittrackee_client/./src/store/modules/root/getters.ts","webpack://fittrackee_client/./src/store/modules/root/mutations.ts","webpack://fittrackee_client/./src/store/modules/root/state.ts","webpack://fittrackee_client/./src/store/modules/sports/actions.ts","webpack://fittrackee_client/./src/store/modules/sports/getters.ts","webpack://fittrackee_client/./src/store/modules/sports/mutations.ts","webpack://fittrackee_client/./src/store/modules/sports/state.ts","webpack://fittrackee_client/./src/store/modules/sports/index.ts","webpack://fittrackee_client/./src/store/modules/statistics/actions.ts","webpack://fittrackee_client/./src/store/modules/statistics/getters.ts","webpack://fittrackee_client/./src/store/modules/statistics/mutations.ts","webpack://fittrackee_client/./src/store/modules/statistics/state.ts","webpack://fittrackee_client/./src/store/modules/statistics/index.ts","webpack://fittrackee_client/./src/store/modules/users/getters.ts","webpack://fittrackee_client/./src/store/modules/users/mutations.ts","webpack://fittrackee_client/./src/store/modules/users/state.ts","webpack://fittrackee_client/./src/store/modules/users/index.ts","webpack://fittrackee_client/./src/store/modules/workouts/actions.ts","webpack://fittrackee_client/./src/store/modules/workouts/getters.ts","webpack://fittrackee_client/./src/store/modules/workouts/mutations.ts","webpack://fittrackee_client/./src/store/modules/workouts/state.ts","webpack://fittrackee_client/./src/store/modules/workouts/index.ts","webpack://fittrackee_client/./src/store/modules/root/index.ts","webpack://fittrackee_client/./src/store/index.ts","webpack://fittrackee_client/./src/store/modules/workouts/enums.ts","webpack://fittrackee_client/./src/use/useStore.ts","webpack://fittrackee_client/./src/utils/api.ts","webpack://fittrackee_client/./src/utils/dates.ts","webpack://fittrackee_client/./src/utils/files.ts","webpack://fittrackee_client/./src/utils/index.ts","webpack://fittrackee_client/./src/utils/locales.ts","webpack://fittrackee_client/./src/utils/sports.ts","webpack://fittrackee_client/./src/utils/statistics.ts","webpack://fittrackee_client/./src/utils/units.ts","webpack://fittrackee_client/./src/utils/workouts.ts","webpack://fittrackee_client/./src/components/Common/Card.vue","webpack://fittrackee_client/./src/components/Common/Card.vue?88f1","webpack://fittrackee_client/./src/components/Common/FilterSelects.vue?7823","webpack://fittrackee_client/./src/components/Common/FilterSelects.vue","webpack://fittrackee_client/./src/components/Common/Images/ErrorImg.vue","webpack://fittrackee_client/./src/components/Common/Images/ErrorImg.vue?6a2a","webpack://fittrackee_client/./src/components/Common/Error.vue?5a3e","webpack://fittrackee_client/./src/components/Common/Error.vue","webpack://fittrackee_client/./src/components/Common/NotFound.vue?45eb","webpack://fittrackee_client/./src/components/Common/NotFound.vue","webpack://fittrackee_client/./src/components/Common/Pagination.vue?e0b0","webpack://fittrackee_client/./src/components/Common/Pagination.vue","webpack://fittrackee_client/./src/utils/password.ts","webpack://fittrackee_client/./src/components/Common/PasswordStength.vue?1d44","webpack://fittrackee_client/./src/components/Common/PasswordStength.vue","webpack://fittrackee_client/./src/components/Common/PasswordInput.vue?e9ce","webpack://fittrackee_client/./src/components/Common/PasswordInput.vue","webpack://fittrackee_client/./src/components/Common/StaticMap.vue?d223","webpack://fittrackee_client/./src/components/Common/StaticMap.vue","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue?f4b9","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue?51c0","webpack://fittrackee_client/./src/utils/duration.ts","webpack://fittrackee_client/./src/utils/tooltip.ts","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue?960e","webpack://fittrackee_client/./src/components/Common/StatsChart/Chart.vue","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue?279d","webpack://fittrackee_client/./src/components/Common/StatsChart/index.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserHeader.vue?bf09","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserHeader.vue","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserInfos.vue?77c4","webpack://fittrackee_client/./src/components/User/ProfileDisplay/UserInfos.vue","webpack://fittrackee_client/./src/components/User/UserAuthForm.vue?09b2","webpack://fittrackee_client/./src/components/User/UserAuthForm.vue","webpack://fittrackee_client/./src/components/User/UserPicture.vue?4869","webpack://fittrackee_client/./src/components/User/UserPicture.vue","webpack://fittrackee_client/./src/components/Workouts/NoWorkouts.vue","webpack://fittrackee_client/./src/components/Workouts/NoWorkouts.vue?e10e","webpack://fittrackee_client/./src/locales/ sync [A-Za-z0-9-_,\\s]+\\.ts$/","webpack://fittrackee_client/webpack/bootstrap","webpack://fittrackee_client/webpack/runtime/chunk loaded","webpack://fittrackee_client/webpack/runtime/compat get default export","webpack://fittrackee_client/webpack/runtime/create fake namespace object","webpack://fittrackee_client/webpack/runtime/define property getters","webpack://fittrackee_client/webpack/runtime/ensure chunk","webpack://fittrackee_client/webpack/runtime/get javascript chunk filename","webpack://fittrackee_client/webpack/runtime/get mini-css chunk filename","webpack://fittrackee_client/webpack/runtime/global","webpack://fittrackee_client/webpack/runtime/hasOwnProperty shorthand","webpack://fittrackee_client/webpack/runtime/load script","webpack://fittrackee_client/webpack/runtime/make namespace object","webpack://fittrackee_client/webpack/runtime/publicPath","webpack://fittrackee_client/webpack/runtime/css loading","webpack://fittrackee_client/webpack/runtime/jsonp chunk loading","webpack://fittrackee_client/webpack/startup"],"sourcesContent":["import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport { getApiUrl } from '@/utils'\n\nconst authApi = axios.create({\n baseURL: getApiUrl(),\n})\n\nauthApi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nauthApi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default authApi\n","import { AxiosRequestConfig } from 'axios'\n\nexport const pendingRequests = new Map()\n\nconst generateRequestKey = (config: AxiosRequestConfig): string => {\n const { method, url, params = {}, data = {} } = config\n return [method, url, JSON.stringify(params), JSON.stringify(data)].join('')\n}\n\nexport const removeRequestIfPending = (config: AxiosRequestConfig): string => {\n const requestKey = generateRequestKey(config)\n if (pendingRequests.has(requestKey)) {\n const controller = pendingRequests.get(requestKey) || {}\n controller?.abort()\n pendingRequests.delete(requestKey)\n }\n return requestKey\n}\n","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nconst disabledLanguages = ['nb'] // to update after translations release\n\nfunction loadLocaleMessages(): Record> {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: Record> = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (\n matched &&\n matched.length > 1 &&\n !disabledLanguages.includes(matched[1])\n ) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontaktiere den Administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"unter \", _interpolate(_list(0)), \" Lizenz \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quellcode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiviere Konto\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt-E-Mail des Administrators\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Kontakt-E-Mail\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe der hochgeladenen Dateien (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungskonfiguration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Größe des zip Archives (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zu Admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Möchtest du wirklich das \", _interpolate(_list(0)), \" Passwort zurücksetzen?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelle E-Mail\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lösche Nutzer\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail-Versand ist deaktiviert.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren/Deaktivieren von Sportarten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neue E-Mail\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit deaktiviert.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung ist derzeit aktiviert.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktiv\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainings existieren\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten Administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualisiere E-Mail\"])},\n \"USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzer\"])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte hinzufügen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administratorrechte entfernen\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adminstatus\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accountstatus\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsanzahl\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail: Eine gültige E-Mail muss angegeben werden.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Abrufen der Konfiguration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Aktualisieren der Konfiguration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Die Registrierung ist deaktiviert.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dateierweiterung ist nicht erlaubt.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Datei ist größer als erlaubt.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültige Anmeldedaten.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die bereitgestellten Daten sind ungültig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte erneut anmelden.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei ausgewählt.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Anzahl der Dateien im Archiv überschreitet die Begrenzung.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort: Passwort und Passwortbestätigung stimmen nicht überein.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein gültiges Authentifizierungstoken an.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es tut mir leid, der Benutzername ist schon vergeben.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportart existiert nicht.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut an.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Nutzer existiert nicht.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du hast keine Berechtigung.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigungs-E-Mail erneut senden\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorisieren\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter löschen\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mein Konto löschen\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deaktivieren\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bearbeiten\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivieren\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurücksetzen\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speichern\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestätigung\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontakt\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Tag\"]), _normalize([\"Tage\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Angezeigt\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dokumentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versteckt\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startseite\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pro Seite\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insgesamt\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Monat\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.
Bitte versuche es später noch einmal oder kontaktiere den Administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seite nicht gefunden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training nicht gefunden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas lief schief\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine neue OAuth2-Anwendung hinzufügen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ID\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheimnis\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsbeschreibung\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erstellt am\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungsname\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiterleitungs-URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geltungsbereich\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf auth-Endpunkte\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf users-Endpunkte\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf users-Endpunkte\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf workouts-Endpunkte\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf workouts-Endpunkte\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist sicher, dass du diese App löschen willst?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Anwendung \", _interpolate(_list(0)), \" fragt an:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" den Zugriff auf deinen Account erlauben?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Zwischenablage kopieren\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung löschen\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung hinzufügen\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendung wurde nicht gefunden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Anwendungen\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"keine Beschreibung\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Tokens zurückrufen\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du alle Tokens zurückrufen möchtest?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle vorhandenen und vergebenen Tokens wurde zurückgerufen.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Pendeln)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Radfahren (Virtuell)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandern\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rudern\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laufen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skifahren (Langlauf)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeschuhe\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gehen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistik\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jahr\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du keine Anweisungen erhalten?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hast du bereits ein Konto?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Möchtest du dein Konto wirklich löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktuelles Passwort\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe eine gültige E-Mail-Adresse an.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebe ein Passwort ein\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nach Benutzernamen filtern\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort verbergen\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ungültiges Token, bitte fordere ein neues Passworts an.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neues Passwort\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Nutzer gefunden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe mehr als nur den ersten Buchstaben groß.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Dein Passwort wurde aktualisiert. Klicke \", _interpolate(_list(0)), \" um dich anzumelden.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontoausgabe\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstiegs-bezogene Daten (Aufnahmen, gesamt)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zurück zum Profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biographie\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geburtsdatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datumsanzeigeformat\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil bearbeiten\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen ändern\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen für Sportarten ändern\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Bitte \", _interpolate(_list(0)), \" um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nachname\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ort\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildausgabe\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sontag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungen\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungen\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktion\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farbe\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vom Admin deaktiviert\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aktiv\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeitsschwellenwert für Stopp\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich erstellt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dein Konto wurde erfolgreich aktualisiert.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort anzeigen\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dieser Account ist inaktiv.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nutzername\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training hinzufügen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aufstieg\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück zum Training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abstieg\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zeige Filter\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entfernung\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dauer\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training bearbeiten\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhe\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ende\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Von\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx Datei\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberge Filter\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letzte Trainings\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lade mehr Trainings\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maximale Höhe\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximale Dateianzahl\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximalgröße\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minimale Höhe\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächstes Training\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten aus gpx, ohne Bereinigung\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Datei angegeben\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enthält keinen Ordner\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Karte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein nächstes Training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Anmerkungen\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein vorheriges Training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Aufzeichnungen.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Trainings.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pausen\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorheriges Training\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Aufzeichnung\"]), _normalize([\"Aufzeichnungen\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weiteste Entfernung\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höchster Anstieg\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Längste Dauer\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Geschwindigkeit\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verbleibende Zeichen\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Segment\"]), _normalize([\"Segmente\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geschwindigkeit\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Sportart\"]), _normalize([\"Sportarten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start und Ziel\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Höhenachse bei Null starten\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bis\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gesamtdauer\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge erstes Training hinzu!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luftfeuchtigkeit\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temperatur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klarer Tag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"klare Nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wolkig\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nebel\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkter Tag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"teilweise bewölkte Nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schneeregen\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schnee\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .gpx Datei\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"Training\"]), _normalize([\"Trainings\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingsdatum\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bist du sicher, dass du dieses Training löschen möchtest?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip Datei\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oder .zip Datei mit .gpx Dateien\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contact the administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is a self-hosted outdoor activity tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"under \", _interpolate(_list(0)), \" license \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source code\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email for contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to reset \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current email\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email sending is disabled.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least one file in zip archive exceeds size limit, please check the archive.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The new email must be different than curent email\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The number of files in the archive exceeds the limit.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that username is already taken.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A valid email must be provided for administrator contact\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend confirmation email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authorize\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Displayed\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems to have encountered some issues.
Please try again later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a new OAuth2 application\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application description\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application name\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redirect URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to application configuration.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants read access to workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"grants write access to workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application URL\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application created successfully. Make sure to copy the secret now, it won't show up again.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The application \", _interpolate(_list(0)), \" is requesting:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Authorize \", _interpolate(_list(0)), \" to use your account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copy to the clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add an application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application not found!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke all tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to revoke all tokens?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All existing associated tokens have been revoked.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Virtual)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Snowshoes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Didn't received instructions?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. A new confirmation email has been sent to the address provided.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a valid email address.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter on username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No users found.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize more than the first letter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid dates and years that are associated with you.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can create strong passwords without using symbols, numbers, or uppercase letters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you use this password elsewhere, you should change it.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account edition\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ascent-related data (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date display format\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit sports preferences\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Please \", _interpolate(_list(0)), \" to change your email address again or contact the administrator\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"color\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disabled by admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"active\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stopped speed threshold\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully. Please check your email to confirm your new email address.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been created successfully.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A link to activate your account has been emailed to the address provided.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your account has been updated successfully.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"show password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This user account is inactive.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 to 30 characters required, only alphanumeric characters and the underscore character \\\"_\\\" allowed.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The distance must be greater than 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The duration must be greater than 0 seconds\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farthest distance\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highest ascent\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start and finish\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start elevation axis at zero\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacter l'administrateur\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee est un tracker d'activités sportives (en extérieur).\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"sous licence \", _interpolate(_list(0)), \" (en) \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Code source (en)\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer le compte\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email de l'administrateur pour contact \"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"non renseigné\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur \", _interpolate(_list(0)), \" ?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adresse email actuelle\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'envoi d'emails est désactivé.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouvelle adresse email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit. le mot de passe\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changer l'email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les droits d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les droits d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"statut du compte\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel : une adresse électronique valide doit être fournie.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nouvelle addresse électronique doit être differente de l'adresse actuelle\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, ce nom d'utilisateur est déjà utilisé.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le nombre de fichiers de l'archive dépasse la limite.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une adresse électronique doit être fournie pour le contact de l'administrateur\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Renvoyer le message de confirmation\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autoriser\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retour\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinit.\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à propos\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contact\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Affiché\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation (en)\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masqué\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois-ci\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une erreur s'est produite\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une nouvelle application OAuth2\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiant\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Secret\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description de l'application\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Créée le\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom de l'application\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de redirection\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture à la configuration de l'application.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes auth.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes auth.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes users.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes users.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en lecture aux routes workouts.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"donne les droits en écriture aux routes workouts.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL de l'application\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir supprimer cette application ?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'application \", _interpolate(_list(0)), \" demande les accès suivants :\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autoriser \", _interpolate(_list(0)), \" à utiliser votre compte ?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copier dans le presse papier\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'application\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une application\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application introuvable !\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de applications\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de description\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Révoquer tous les jetons\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr de vouloir révoquer tous les jetons ?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tous les jetons associés existants ont été révoqués.\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Virtuel)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Électrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raquettes\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas reçu les instructions ?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe actuel\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Courriel\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez une adresse électronique valide.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisissez un mot de passe\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer sur le nom d'utilisateur\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"connecter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nouveau mot de passe\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucun utilisateur trouvé.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalisez mais pas seulement la première lettre.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.\"])}\n }\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du compte\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données relatives au dénivelé positif (records, total)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Format d'affichage de la date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences des sports\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Veuillez vous \", _interpolate(_list(0)), \" pour changer de nouveau votre adresse électronique ou contacter l'administrateur\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"compte\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km)\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"action\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"couleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"désactivé par l'administrateur\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actif\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuil de vitesse arrêtée\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été créé avec succès.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre compte a été modifié avec succès.\"])},\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envoyer à nouveau le courriel de confirmation de compte\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher le mot de passe\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le compte de cet utilisateur est inactif.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distance doit être supérieure à 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durée doit être supérieure à 0 secondes\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dénivelé positif le + élevé\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Départ et arrivée\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"démarrer l'axe de l'altitude à 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","export default {\n \n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"CONTACT_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contacteer uw administrator\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee is zelf-gehoste buitenshuis activiteiten tracker.\"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actie\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activeer account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrator email voor contact\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicatie configureren\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van zip archief (in Mb)\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])}\n },\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u het wachtwoord voor \", _interpolate(_list(0)), \" wilt resetten?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidige email\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emails verzenden is uitgeschakeld.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aan- of uitzetten van sporten.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel uitgeschakeld.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie is momenteel ingeschakeld.\"])},\n \"RESET_USER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset wachtwoord\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingeschakeld\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"gebruiker\"]), _normalize([\"gebruikers\"])])},\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin rechten toevoegen\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder admin rechten\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registratie datum\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account status\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersnaam\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aantal trainingen\"])}\n }\n }\n },\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Weet u zeker dat u de account \", _interpolate(_list(0)), \" wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte).\"])}\n}","export default {\n \"ERROR\": {\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij ophalen van configuratie.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het updaten van de configuratie\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, probeer opnieuw of contacteer de administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout, registratie is uitgeschakeld.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsformaat niet toegelaten.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige inloggegevens.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingegeven data is ongeldig.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldige token, log opnieuw in.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het nieuwe email adres dient te verschillen van het oude\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand geselecteerd.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het aantal bestanden in het zip archief overschrijdt de limiet.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord: het wachtwoord en de bevestiging komen niet overeen.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig auth token.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, deze gebruikersnaam is al in gebruik.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze sport bestaat niet.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruiker bestaat niet.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een geldige email is vereist voor admin contact informatie\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U hebt geen machtigingen.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])}\n }\n}","export default {\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])},\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Herzend bevestigings email\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toekennen\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuleren\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder mijn account\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bewerken\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanzetten\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassen\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contacteer\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"dag\"]), _normalize([\"dagen\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer op\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totaal\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze maand\"])}\n}","export default {\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina niet gevonden\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training niet gevonden\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er ging iets mis\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout. Probeer opnieuw of contacteer de administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator.\"])}\n}","export default {\n \"APP\": {\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Doorverwijs URL\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Omvang\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan users endpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan workouts endpoints.\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])}\n },\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])}\n },\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze app wilt verwijderen?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"De app \", _interpolate(_list(0)), \" vraagt:\"])},\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Toegang geven aan \", _interpolate(_list(0)), \" tot uw gebruikersaccount?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kopieer naar klembord\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder app\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg een app toe\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App niet gevonden!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen apps\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen beschrijving\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder alle tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u alle tokens wilt intrekken?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle bestaande tokens werden ingetrokken.\"])},\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])}\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Transport)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fietsen (Virtueel)\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountainbiken (Elektrisch)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roeien\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lopen\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiën (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sneeuwschoenen\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jaar\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen instructies ontvangen?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Al een account aangemaakt?\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Huidig wachtwoord\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een geldig email adres op.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geef een paswoord in\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter op gebruikersnaam\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg wachtwoord\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ongeldig token, vraag een nieuwe wachtwoord reset aan.\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuw wachtwoord\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen gebruikers gevonden.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\n \"PASSWORD_STRENGTH\": {\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])},\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"SUGGESTIONS\": {\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik niet enkel voor de eerste letter een hoofdletter.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd persoonlijke gegevens en jaartallen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])}\n }\n },\n \"PROFILE\": {\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar profiel\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geboortedatum\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergaveformaat datum\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren wijzigen\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren wijzigen\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Achternaam\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Locatie\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maandag\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding aanpassen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiel aanpassen\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datum registratie\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zondag\"])},\n \"TABS\": {\n \"ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"account\"])},\n \"APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"apps\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afbeelding\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voorkeuren\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actie\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kleur\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"uitgeschakeld door admin\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"actief\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"label\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheidsgrens voor stilstand\"])}\n },\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol aangemaakt.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw account werd succesvol bijgewerkt.\"])},\n \"UNITS\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi)\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km)\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Gelieve \", _interpolate(_list(0)), \" om uw email adres opnieuw te wijzigen of contacteer uw administrator\"])},\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registreren is uitgeschakeld.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon wachtwoord\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deze account is niet actief.\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Uw wachtwoord werd aangepast. Klik \", _interpolate(_list(0)), \" om in te loggen.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \\\"_\\\" zijn toegestaan.\"])}\n}","export default {\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. snelheid\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar training\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedaald\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afstand\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duur\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training aanpassen\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hoogte\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"einde\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"van\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx bestand\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"verberg filters\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste trainingen\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toon meer trainingen\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. hoogte\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. aantal bestanden\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. grootte\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. snelheid\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. hoogte\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Volgende training\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen bestand opgegeven\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen map aanwezig\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen kaart\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgend segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen volgende training\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen notities\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorig segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen vorige training\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauzes\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorig segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorige training\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogst geklommen\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste duur\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. snelheid\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"resterende karakters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segmenten\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snelheid\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sporten\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zet hoogte-as vast op 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titel\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aan\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"totale duur\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eén uploaden!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vochtigheid\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatuur\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"WIND_DIRECTIONS\": {\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZZW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ZW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])}\n },\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere dag\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"heldere nacht\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bewolkt\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mist\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte dag\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gedeeltelijk bewolkte nacht\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"regen\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"natte sneeuw\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sneeuw\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weet u zeker dat u deze training wilt verwijderen?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip bestand\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"of .zip archief met .gpx bestanden\"])},\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])}\n}","import AboutTranslations from './about.json'\nimport AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport OAuth2Translations from './oauth2.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n about: AboutTranslations,\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n oauth2: OAuth2Translations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c73279e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_6 = { class: \"footer-item\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"footer-item bullet\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"footer-item\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"footer-item bullet\" }, \"•\", -1))\nconst _hoisted_11 = { class: \"footer-item\" }\nconst _hoisted_12 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\n\nimport { toRefs } from 'vue'\n\n interface Props {\n version: string\n adminContact?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n version: null,\n adminContact: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n version: string\n adminContact?: string\n };\n\n \n\n const { adminContact, version } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_unref(version)), 1)\n ]),\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, { to: \"/about\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.ABOUT')), 1)\n ]),\n _: 1\n })\n ]),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"•\"))\n : _createCommentVNode(\"\", true),\n (_unref(adminContact))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(adminContact)}`\n }, _toDisplayString(_ctx.$t('common.CONTACT')), 9, _hoisted_9)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_10,\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"a\", _hoisted_12, _toDisplayString(_ctx.$t('common.DOCUMENTATION')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=2c73279e&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c73279e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ab6e62ae\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nimport { ComputedRef, computed, ref, capitalize } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavBar',\n emits: ['menuInteraction'],\n setup(__props, { emit }) {\n\n \n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n store.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n option.value.toString()\n )\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': isMenuOpen.value }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !isMenuOpen.value }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (closeMenu()))\n }, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_unref(isAuthenticated) && _unref(authUser).admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(isAuthenticated))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(UserPicture, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(authUser).username), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: logout\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n })\n ])),\n (_unref(availableLanguages) && _unref(language))\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _unref(availableLanguages),\n selected: _unref(language),\n onSelected: updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=ab6e62ae&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ab6e62ae\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47759238\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = { class: \"error-img\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NoConfig',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(ErrorImg)\n ]),\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=47759238&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47759238\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1)\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { ComputedRef, computed, ref, onBeforeMount, onMounted } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { localeFromLanguage } from '@/utils/locales'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() => {\n initLanguage()\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n })\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n const bottom = document.querySelector('#bottom')\n displayScrollButton.value = bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n function initLanguage() {\n let language = 'en'\n try {\n const navigatorLanguage = navigator.language.split('-')[0]\n if (navigatorLanguage in localeFromLanguage) {\n language = navigatorLanguage\n }\n } catch (e) {\n language = 'en'\n }\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE, language)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(NavBar, { onMenuInteraction: updateHideScrollBar }),\n (_unref(appLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': hideScrollBar.value }])\n }, [\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': displayScrollButton.value }]),\n onClick: scrollToTop\n }, _hoisted_6, 2)\n ]),\n (_unref(appConfig))\n ? (_openBlock(), _createBlock(Footer, {\n key: 2,\n version: _unref(appConfig) ? _unref(appConfig).version : '',\n adminContact: _unref(appConfig).admin_contact\n }, null, 8, [\"version\", \"adminContact\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2930d5e0&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69d7e4ff\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs } from 'vue'\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlertMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_unref(message))\n }, null, 8, _hoisted_2)\n ]))\n}\n}\n\n})","import script from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=69d7e4ff&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-69d7e4ff\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8cf5cc64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nimport { ref, watch, withDefaults } from 'vue'\n\n interface Props {\n name: string\n charLimit?: number\n disabled?: boolean\n input?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextArea',\n props: {\n name: null,\n charLimit: { default: 500 },\n disabled: { type: Boolean, default: false },\n input: { default: '' }\n },\n emits: ['updateValue'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { name: string, charLimit: number, disabled: boolean, input: string | null };\n\n \n\n \n\n const text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value === null ? '' : value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: __props.name,\n name: __props.name,\n maxLenght: __props.charLimit,\n disabled: __props.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((text).value = $event)),\n onInput: updateText\n }, null, 40, _hoisted_2), [\n [_vModelText, text.value]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(text.value.length) + \"/\" + _toDisplayString(__props.charLimit), 1)\n ]))\n}\n}\n\n})","import script from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=8cf5cc64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8cf5cc64\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, Fragment as _Fragment } from \"vue\"\n\nimport { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import { TUnit } from '@/types/units'\n import { units, convertDistance } from '@/utils/units'\n\n interface Props {\n distance: number\n unitFrom: TUnit\n useImperialUnits: boolean\n digits?: number\n displayUnit?: boolean\n speed?: boolean\n strong?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Distance',\n props: {\n distance: null,\n unitFrom: null,\n useImperialUnits: { type: Boolean },\n digits: { default: 2 },\n displayUnit: { type: Boolean, default: true },\n speed: { type: Boolean, default: false },\n strong: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { distance: number, unitFrom: TUnit, useImperialUnits: boolean, digits: number, displayUnit: boolean, speed: boolean, strong: boolean };\n\n \n\n const {\n digits,\n displayUnit,\n distance,\n speed,\n strong,\n unitFrom,\n useImperialUnits,\n } = toRefs(props)\n const unitTo: ComputedRef = computed(() =>\n useImperialUnits.value\n ? units[unitFrom.value].defaultTarget\n : unitFrom.value\n )\n const convertedDistance = computed(() =>\n useImperialUnits.value\n ? convertDistance(\n distance.value,\n unitFrom.value,\n unitTo.value,\n digits.value\n )\n : parseFloat(distance.value.toFixed(digits.value))\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"distance\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(convertedDistance)), 3),\n _createTextVNode(\" \" + _toDisplayString(' ') + \" \"),\n (_unref(displayUnit))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([\"unit\", { strong: _unref(strong) }])\n }, _toDisplayString(_unref(unitTo)) + _toDisplayString(_unref(speed) ? '/h' : ''), 3))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Distance.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Distance.vue?vue&type=style&index=0&id=f46ff1d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f46ff1d6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9590c0e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nimport { ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n interface Props {\n options: TDropdownOptions\n selected: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dropdown',\n props: {\n options: null,\n selected: null\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n options: TDropdownOptions\n selected: string\n };\n\n \n\n \n\n const route = useRoute()\n const isOpen = ref(false)\n const dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: toggleDropdown\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dropdownOptions), (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === __props.selected }]),\n key: index,\n onClick: ($event: any) => (updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=9590c0e6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9590c0e6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2659a79a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n message: string | string[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n props: {\n message: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n message: string | string[]\n };\n\n \n const { message } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_unref(message)))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(message), (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_unref(message))), 1))\n ]))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=2659a79a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2659a79a\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingVirtual.vue?vue&type=template&id=ec8f7bb6\"\nimport script from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingVirtual.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Snowshoes.vue?vue&type=template&id=67df2761\"\nimport script from \"./Snowshoes.vue?vue&type=script&lang=js\"\nexport * from \"./Snowshoes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { inject, toRefs, withDefaults } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import CyclingVirtual from '@/components/Common/Images/SportImage/CyclingVirtual.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Snowshoes from '@/components/Common/Images/SportImage/Snowshoes.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n interface Props {\n sportLabel: string\n color: string | null\n title?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sportLabel: null,\n color: null,\n title: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { sportLabel: string, color: string | null, title: string };\n\n \n\n const { color, sportLabel, title } = toRefs(props)\n const sportColors = inject('sportColors')\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _unref(color) ? _unref(color) : _unref(sportColors)[_unref(sportLabel)] }),\n title: _unref(title) ? _unref(title) : _ctx.$t(`sports.${_unref(sportLabel)}.LABEL`)\n }, [\n (_unref(sportLabel) === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Cycling (Virtual)')\n ? (_openBlock(), _createBlock(CyclingVirtual, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Hiking')\n ? (_openBlock(), _createBlock(Hiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking')\n ? (_openBlock(), _createBlock(MountainBiking, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(MountainBikingElectric, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 12 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./Loader.vue?vue&type=template&id=4c9921ee&scoped=true\"\nconst script = {}\n\nimport \"./Loader.vue?vue&type=style&index=0&id=4c9921ee&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c9921ee\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e8fcfaba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nimport { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n title: string\n message: string\n strongMessage?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n title: null,\n message: null,\n strongMessage: { default: () => null }\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { title: string, message: string, strongMessage: string | null };\n\n \n\n \n\n const store = useStore()\n\n const { title, message, strongMessage } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(title)), 1)\n ]),\n content: _withCtx(() => [\n (_unref(strongMessage))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _unref(message) }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(strongMessage)), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_unref(message)), 1)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_unref(errorMessages) ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=e8fcfaba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e8fcfaba\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Distance from '@/components/Common/Distance.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n { target: AlertMessage, name: 'AlertMessage' },\n { target: Card, name: 'Card' },\n { target: CustomTextArea, name: 'CustomTextArea' },\n { target: Distance, name: 'Distance' },\n { target: Dropdown, name: 'Dropdown' },\n { target: ErrorMessage, name: 'ErrorMessage' },\n { target: Loader, name: 'Loader' },\n { target: Modal, name: 'Modal' },\n { target: SportImage, name: 'SportImage' },\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\nimport VueFullscreen from 'vue-fullscreen'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .use(VueFullscreen, { name: 'VFullscreen' })\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component.target)\n})\n\napp.mount('#app')\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24ec93e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { for: \"admin_contact\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = { for: \"max_users\" }\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"user-limit-help\" }\nconst _hoisted_9 = { class: \"info-box\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { for: \"max_single_file_size\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { for: \"max_zip_file_size\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { for: \"gpx_limit_import\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_18 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nimport {\n ComputedRef,\n computed,\n reactive,\n withDefaults,\n onBeforeMount,\n toRefs,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n interface Props {\n appConfig: TAppConfig\n edition?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminApplication',\n props: {\n appConfig: null,\n edition: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, edition: boolean };\n\n \n const { edition } = toRefs(props)\n\n const store = useStore()\n const router = useRouter()\n\n const appData: TAppConfigForm = reactive({\n admin_contact: '',\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _withModifiers(onSubmit, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ADMIN_CONTACT')) + \": \", 1),\n (!_unref(edition) && !appData.admin_contact)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"no-contact\",\n value: _ctx.$t('admin.APP_CONFIG.NO_CONTACT_EMAIL'),\n disabled: \"\"\n }, null, 8, _hoisted_4))\n : _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n id: \"admin_contact\",\n name: \"admin_contact\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appData.admin_contact) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_5)), [\n [_vModelText, appData.admin_contact]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appData.max_users) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_7), [\n [_vModelText, appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appData.max_single_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_12), [\n [_vModelText, appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((appData.max_zip_file_size) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_14), [\n [_vModelText, appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((appData.gpx_limit_import) = $event)),\n disabled: !_unref(edition)\n }, null, 8, _hoisted_16), [\n [_vModelText, appData.gpx_limit_import]\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", _hoisted_18, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_19)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 40, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=24ec93e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24ec93e2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nimport { toRefs } from 'vue'\n\n interface Props {\n icon: string\n text: string\n value: string | number\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatCard',\n props: {\n icon: null,\n text: null,\n value: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n icon: string\n text: string\n value: string | number\n };\n\n \n const { icon, text, value } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_unref(icon)}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_unref(value)), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(text)), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=6cbb3351&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { computed, toRefs } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n appStatistics: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppStatsCards',\n props: {\n appStatistics: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n appStatistics: IAppStatistics\n };\n\n \n\n const { appStatistics } = toRefs(props)\n const uploadDirSize = computed(() =>\n getReadableFileSize(appStatistics.value.uploads_dir_size, false)\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"users\",\n value: _unref(appStatistics).users,\n text: _ctx.$t('admin.USER', _unref(appStatistics).users)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"tags\",\n value: _unref(appStatistics).sports,\n text: _ctx.$t('workouts.SPORT', _unref(appStatistics).sports)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(appStatistics).workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(appStatistics).workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"folder-open\",\n value: _unref(uploadDirSize).size,\n text: _unref(uploadDirSize).suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}\n}\n\n})","import script from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=61c5053e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0dd66f89\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = { class: \"application-config-details\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_5 = { class: \"registration-status\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"email-sending-status\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-exclamation-triangle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { capitalize, toRefs, withDefaults } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n interface Props {\n appConfig: TAppConfig\n appStatistics?: IAppStatistics\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminMenu',\n props: {\n appConfig: null,\n appStatistics: { default: () => ({} as IAppStatistics) }\n },\n setup(__props: any) {\n\nconst props = __props as { appConfig: TAppConfig, appStatistics: IAppStatistics };\n\n \n\n const { appConfig, appStatistics } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(AppStatsCards, { appStatistics: _unref(appStatistics) }, null, 8, [\"appStatistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_4,\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _unref(appConfig).is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1),\n (!_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.EMAIL_SENDING_DISABLED')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=0dd66f89&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0dd66f89\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d62af67\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminSports',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"title\", \"sport-label\", \"color\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d62af67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d62af67\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, withKeys as _withKeys, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-627a8e91\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"users-filters\" }\nconst _hoisted_2 = { class: \"search-username\" }\nconst _hoisted_3 = [\"onKeyup\", \"placeholder\"]\n\nimport { ref } from 'vue'\n import { useRoute } from 'vue-router'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UsersNameFilter',\n emits: ['filterOnUsername'],\n setup(__props, { emit }) {\n\n const route = useRoute()\n const username = ref(route.query.q ? route.query.q : '')\n\n \n function searchUsers() {\n if (username.value !== '') {\n emit('filterOnUsername', username)\n }\n }\n function resetFilter() {\n username.value = ''\n emit('filterOnUsername', username.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"username\",\n name: \"username\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((username).value = $event)),\n onKeyup: _withKeys(searchUsers, [\"enter\"]),\n placeholder: _ctx.$t('user.FILTER_ON_USERNAME')\n }, null, 40, _hoisted_3), [\n [\n _vModelText,\n username.value,\n void 0,\n { trim: true }\n ]\n ]),\n (username.value !== '')\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-times\",\n \"aria-hidden\": \"true\",\n onClick: resetFilter\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-search\", { 'fa-disabled': username.value === '' }]),\n \"aria-hidden\": \"true\",\n onClick: searchUsers\n }, null, 2)\n ]))\n}\n}\n\n})","import script from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UsersNameFilter.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./UsersNameFilter.vue?vue&type=style&index=0&id=627a8e91&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-627a8e91\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-dc12ff78\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"no-users\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"responsive-table\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"left-text\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"text-center\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"text-center\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"text-center\" }\nconst _hoisted_17 = { class: \"cell-heading\" }\nconst _hoisted_18 = { class: \"text-center\" }\nconst _hoisted_19 = { class: \"cell-heading\" }\nconst _hoisted_20 = [\"disabled\", \"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import UsersNameFilter from '@/components/Users/UsersNameFilter.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminUsers',\n setup(__props) {\n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'is_active',\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadUsers(query))\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function searchUsers(username: Ref) {\n reloadUsers('q', username.value)\n }\n\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(UsersNameFilter, { onFilterOnUsername: searchUsers }),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: reloadUsers\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(users).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('user.NO_USERS_FOUND')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_4,\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(users), (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/admin/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n user.created_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_18, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _unref(authUser).username,\n onClick: ($event: any) => (updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_20)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_unref(pagination).page)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _unref(pagination),\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=dc12ff78&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dc12ff78\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n tabs: string[]\n selectedTab: string\n edition: boolean\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserProfileTabs',\n props: {\n tabs: null,\n selectedTab: null,\n edition: { type: Boolean },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { tabs: string[], selectedTab: string, edition: boolean, disabled: boolean };\n\n \n\n const { tabs, selectedTab, disabled } = toRefs(props)\n\n function getPath(tab: string) {\n switch (tab) {\n case 'ACCOUNT':\n case 'PICTURE':\n return `/profile/edit/${tab.toLocaleLowerCase()}`\n case 'APPS':\n case 'PREFERENCES':\n case 'SPORTS':\n return `/profile${\n props.edition ? '/edit' : ''\n }/${tab.toLocaleLowerCase()}`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(tabs), (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _unref(selectedTab).split('/')[0] === tab,\n disabled: _unref(disabled),\n onInput: ($event: any) => (_ctx.$router.push(getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=01b05f01&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9729cba4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nimport { toRefs } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'PREFERENCES', 'SPORTS', 'APPS']\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: false\n }, null, 8, [\"selectedTab\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9729cba4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9729cba4\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nimport { computed, ComputedRef } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getDateFormat } from '@/utils/dates'\n import { languageLabels } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferences',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const appLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const userLanguage = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() => (props.user.weekm ? 'MONDAY' : 'SUNDAY'))\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n const date_format = computed(() =>\n props.user.date_format ? props.user.date_format : 'MM/dd/yyyy'\n )\n const display_ascent = computed(() =>\n props.user.display_ascent ? 'DISPLAYED' : 'HIDDEN'\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(userLanguage)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(timezone)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(getDateFormat)(_unref(date_format), _unref(appLanguage))), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_unref(fistDayOfWeek)}`)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(\n `user.PROFILE.UNITS.${__props.user.imperial_units ? 'IMPERIAL' : 'METRIC'}`\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`common.${_unref(display_ascent)}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n tab: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null,\n tab: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n tab: string\n };\n\n \n\n const store = useStore()\n\n const { user, tab } = toRefs(props)\n const tabs = ['PROFILE', 'ACCOUNT', 'PICTURE', 'PREFERENCES', 'SPORTS']\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_unref(tab)}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserProfileTabs, {\n tabs: tabs,\n selectedTab: _unref(tab),\n edition: true,\n disabled: _unref(loading)\n }, null, 8, [\"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _unref(user) }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-37b8c4c8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = [\"disabled\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password-field\"\n}\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"new-password-field\"\n}\nconst _hoisted_9 = { class: \"form-buttons\" }\nconst _hoisted_10 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile, IUserAccountPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAccountEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n const userForm: IUserAccountPayload = reactive({\n email: '',\n password: '',\n new_password: '',\n })\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const emailUpdate = ref(false)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const formErrors = ref(false)\n const displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IUserProfile) {\n userForm.email = user.email\n }\n function updatePassword(password: string) {\n userForm.password = password\n }\n function updateNewPassword(new_password: string) {\n userForm.new_password = new_password\n }\n function updateProfile() {\n const payload: IUserAccountPayload = {\n email: userForm.email,\n password: userForm.password,\n }\n if (userForm.new_password) {\n payload.new_password = userForm.new_password\n }\n emailUpdate.value = userForm.email !== user.value.email\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT, payload)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n onUnmounted(() => {\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\n watch(\n () => isSuccess.value,\n async (isSuccessValue) => {\n if (isSuccessValue) {\n updatePassword('')\n updateNewPassword('')\n updateUserForm(user.value)\n formErrors.value = false\n }\n }\n )\n watch(\n () => user.value.email,\n async () => {\n updateUserForm(user.value)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteAccount(_unref(user).username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n emailUpdate.value && _unref(appConfig).is_email_sending_enabled ? 'EMAIL_' : ''\n }UPDATE`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.email) = $event)),\n disabled: _unref(loading),\n required: true,\n onInvalid: invalidateForm\n }, null, 40, _hoisted_6), [\n [_vModelText, userForm.email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.CURRENT_PASSWORD')) + \"* \", 1),\n _createVNode(PasswordInput, {\n id: \"password-field\",\n disabled: _unref(loading),\n password: userForm.password,\n required: true,\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.NEW_PASSWORD')) + \" \", 1),\n _createVNode(PasswordInput, {\n id: \"new-password-field\",\n disabled: _unref(loading),\n checkStrength: true,\n password: userForm.new_password,\n isSuccess: false,\n onUpdatePassword: updateNewPassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"password\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", _hoisted_10, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 42, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAccountEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAccountEdition.vue?vue&type=style&index=0&id=37b8c4c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-37b8c4c8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e5a4552\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { class: \"form-items\" }\nconst _hoisted_14 = { class: \"form-buttons\" }\nconst _hoisted_15 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { format } from 'date-fns'\n import { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfosEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPayload = reactive({\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n props.user.timezone,\n props.user.date_format\n )\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _unref(registrationDate),\n disabled: \"\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.first_name) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_7), [\n [_vModelText, userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((userForm.birth_date) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_10), [\n [_vModelText, userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((userForm.location) = $event)),\n disabled: _unref(loading)\n }, null, 8, _hoisted_12), [\n [_vModelText, userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: userForm.bio,\n disabled: _unref(loading),\n onUpdateValue: updateBio\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", _hoisted_15, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=5e5a4552&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e5a4552\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-687e9604\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"picture-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"picture-buttons\" }\nconst _hoisted_8 = [\"disabled\"]\n\nimport { ComputedRef, Ref, computed, ref, toRefs, onUnmounted } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPictureEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateUserPicture, [\"prevent\"])\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: updatePictureFile\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !pictureFile.value\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_8),\n (_unref(user).picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: deleteUserPicture\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=687e9604&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-687e9604\"]])\n\nexport default __exports__","export const timeZones = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Algiers',\n 'Africa/Bissau',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/El_Aaiun',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Khartoum',\n 'Africa/Lagos',\n 'Africa/Maputo',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Sao_Tome',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Cayenne',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Fortaleza',\n 'America/Fort_Nelson',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Sitka',\n 'America/St_Johns',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Colombo',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kathmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Riyadh',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ulaanbaatar',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faroe',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/Stanley',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/Perth',\n 'Australia/Sydney',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Helsinki',\n 'Europe/Istanbul',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Reunion',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n]\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withKeys as _withKeys, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-47ea2903\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"tz-dropdown\" }\nconst _hoisted_2 = [\"value\", \"disabled\", \"onKeydown\"]\nconst _hoisted_3 = [\"onClick\", \"onMouseover\", \"autofocus\"]\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import { timeZones } from '@/utils/timezone'\n\n interface Props {\n input: string\n disabled?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimezoneDropdown',\n props: {\n input: null,\n disabled: { type: Boolean, default: false }\n },\n emits: ['updateTimezone'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { input: string, disabled: boolean };\n\n \n\n \n\n const { input, disabled } = toRefs(props)\n const timezone: Ref = ref(props.input)\n const isOpen: Ref = ref(false)\n const tzList: Ref = ref(null)\n const focusItemIndex: Ref = ref(0)\n\n function matchTimezone(t: string): RegExpMatchArray | null {\n return t.toLowerCase().match(timezone.value.toLowerCase())\n }\n function onMouseOver(index: number) {\n focusItemIndex.value = index\n }\n function onUpdateTimezone(value: string) {\n timezone.value = value\n isOpen.value = false\n emit('updateTimezone', value)\n }\n function onEnter(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n if (tzList.value?.firstElementChild?.innerHTML) {\n onUpdateTimezone(tzList.value?.firstElementChild?.innerHTML)\n }\n }\n function openDropdown(event: Event & { target: HTMLInputElement }) {\n event.preventDefault()\n isOpen.value = true\n timezone.value = event.target.value.trim()\n }\n\n watch(\n () => props.input,\n (value) => {\n timezone.value = value\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"tz-dropdown-input\",\n id: \"timezone\",\n name: \"timezone\",\n value: timezone.value,\n disabled: _unref(disabled),\n required: \"\",\n onKeydown: [\n _cache[0] || (_cache[0] = _withKeys(($event: any) => (onUpdateTimezone(_unref(input))), [\"esc\"])),\n _withKeys(onEnter, [\"enter\"])\n ],\n onInput: openDropdown\n }, null, 40, _hoisted_2),\n (isOpen.value)\n ? (_openBlock(), _createElementBlock(\"ul\", {\n key: 0,\n class: \"tz-dropdown-list\",\n ref_key: \"tzList\",\n ref: tzList\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(timeZones).filter((t) => matchTimezone(t)), (tz, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: tz,\n class: _normalizeClass([\"tz-dropdown-item\", { focus: index === focusItemIndex.value }]),\n onClick: ($event: any) => (onUpdateTimezone(tz)),\n onMouseover: ($event: any) => (onMouseOver(index)),\n autofocus: index === focusItemIndex.value\n }, _toDisplayString(tz), 43, _hoisted_3))\n }), 128))\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TimezoneDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./TimezoneDropdown.vue?vue&type=style&index=0&id=47ea2903&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-47ea2903\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, createVNode as _createVNode, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b8a9a12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-items\" }\nconst _hoisted_5 = [\"disabled\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-items\" }\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_12 = { class: \"checkboxes-label\" }\nconst _hoisted_13 = { class: \"checkboxes\" }\nconst _hoisted_14 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_15 = { class: \"checkbox-label\" }\nconst _hoisted_16 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_17 = { class: \"checkboxes-label\" }\nconst _hoisted_18 = { class: \"checkboxes\" }\nconst _hoisted_19 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_20 = { class: \"checkbox-label\" }\nconst _hoisted_21 = { class: \"form-items form-checkboxes\" }\nconst _hoisted_22 = { class: \"checkboxes-label\" }\nconst _hoisted_23 = { class: \"checkboxes\" }\nconst _hoisted_24 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\nconst _hoisted_25 = { class: \"checkbox-label\" }\nconst _hoisted_26 = { class: \"form-buttons\" }\nconst _hoisted_27 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, reactive, onMounted, onUnmounted } from 'vue'\n\n import TimezoneDropdown from '@/components/User/ProfileEdition/TimezoneDropdown.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserPreferencesPayload, IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableDateFormatOptions } from '@/utils/dates'\n import { availableLanguages } from '@/utils/locales'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPreferencesEdition',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const userForm: IUserPreferencesPayload = reactive({\n display_ascent: true,\n imperial_units: false,\n language: '',\n timezone: 'Europe/Paris',\n date_format: 'dd/MM/yyyy',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'SUNDAY',\n value: false,\n },\n {\n label: 'MONDAY',\n value: true,\n },\n ]\n const imperialUnits = [\n {\n label: 'METRIC',\n value: false,\n },\n {\n label: 'IMPERIAL',\n value: true,\n },\n ]\n const ascentData = [\n {\n label: 'DISPLAYED',\n value: true,\n },\n {\n label: 'HIDDEN',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const dateFormatOptions = computed(() =>\n availableDateFormatOptions(\n new Date().toUTCString(),\n props.user.timezone,\n userForm.language\n )\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IAuthUserProfile) {\n userForm.display_ascent = user.display_ascent\n userForm.imperial_units = user.imperial_units ? user.imperial_units : false\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.date_format = user.date_format ? user.date_format : 'dd/MM/yyyy'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES, userForm)\n }\n function updateTZ(value: string) {\n userForm.timezone = value\n }\n function updateAscentDisplay(value: boolean) {\n userForm.display_ascent = value\n }\n function updateImperialUnit(value: boolean) {\n userForm.imperial_units = value\n }\n function updateWeekM(value: boolean) {\n userForm.weekm = value\n }\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(updateProfile, [\"prevent\"])\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((userForm.language) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(availableLanguages), (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_6))\n }), 128))\n ], 8, _hoisted_5), [\n [_vModelSelect, userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _createVNode(TimezoneDropdown, {\n input: userForm.timezone,\n disabled: _unref(loading),\n onUpdateTimezone: updateTZ\n }, null, 8, [\"input\", \"disabled\"])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.DATE_FORMAT')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"date_format\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((userForm.date_format) = $event)),\n disabled: _unref(loading)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(dateFormatOptions), (dateFormat) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: dateFormat.value,\n key: dateFormat.value\n }, _toDisplayString(dateFormat.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, userForm.date_format]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(weekStart, (start) => {\n return _createElementVNode(\"label\", {\n key: start.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: start.label,\n name: start.label,\n checked: start.value === userForm.weekm,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateWeekM(start.value))\n }, null, 40, _hoisted_14),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('user.PROFILE.UNITS.LABEL')), 1),\n _createElementVNode(\"div\", _hoisted_18, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(imperialUnits, (unit) => {\n return _createElementVNode(\"label\", {\n key: unit.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: unit.label,\n name: unit.label,\n checked: unit.value === userForm.imperial_units,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateImperialUnit(unit.value))\n }, null, 40, _hoisted_19),\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t(`user.PROFILE.UNITS.${unit.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('user.PROFILE.ASCENT_DATA')), 1),\n _createElementVNode(\"div\", _hoisted_23, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(ascentData, (status) => {\n return _createElementVNode(\"label\", {\n key: status.label\n }, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: status.label,\n name: status.label,\n checked: status.value === userForm.display_ascent,\n disabled: _unref(loading),\n onInput: ($event: any) => (updateAscentDisplay(status.value))\n }, null, 40, _hoisted_24),\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t(`common.${status.label}`)), 1)\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", _hoisted_27, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPreferencesEdition.vue?vue&type=style&index=0&id=3b8a9a12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b8a9a12\"]])\n\nexport default __exports__","export const oauth2_scopes = [\n 'profile:read',\n 'profile:write',\n 'users:read',\n 'users:write',\n 'workouts:read',\n 'workouts:write',\n]\n\nexport const admin_oauth2_scopes = ['application:write']\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0657ee77\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"new-oauth2-app\" }\nconst _hoisted_2 = { id: \"new-oauth2-title\" }\nconst _hoisted_3 = { id: \"apps-form\" }\nconst _hoisted_4 = [\"onSubmit\"]\nconst _hoisted_5 = { class: \"form-items\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = { for: \"app-name\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = { for: \"app-description\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = { for: \"app-url\" }\nconst _hoisted_12 = { class: \"form-item\" }\nconst _hoisted_13 = { for: \"app-redirect-uri\" }\nconst _hoisted_14 = { class: \"form-item-scope\" }\nconst _hoisted_15 = { class: \"form-item-scope-label\" }\nconst _hoisted_16 = { class: \"scope-label\" }\nconst _hoisted_17 = [\"name\", \"checked\", \"onChange\"]\nconst _hoisted_18 = [\"innerHTML\"]\nconst _hoisted_19 = { class: \"form-buttons\" }\nconst _hoisted_20 = [\"disabled\"]\n\nimport { computed, reactive } from 'vue'\n\n import { OAUTH2_STORE } from '@/store/constants'\n import { IOAuth2ClientPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { admin_oauth2_scopes, oauth2_scopes } from '@/utils/oauth'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddUserApp',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const appForm = reactive({\n client_name: '',\n client_uri: '',\n client_description: '',\n redirect_uri: '',\n })\n const scopes: string[] = reactive([])\n const filtered_scopes = computed(() =>\n getScopes(props.authUser, admin_oauth2_scopes, oauth2_scopes)\n )\n\n function createApp() {\n const payload: IOAuth2ClientPayload = {\n client_name: appForm.client_name,\n client_description: appForm.client_description,\n client_uri: appForm.client_uri,\n redirect_uris: [appForm.redirect_uri],\n scope: scopes.sort().join(' '),\n }\n store.dispatch(OAUTH2_STORE.ACTIONS.CREATE_CLIENT, payload)\n }\n function updateDescription(value: string) {\n appForm.client_description = value\n }\n function updateScopes(scope: string) {\n const index = scopes.indexOf(scope)\n if (index > -1) {\n scopes.splice(index, 1)\n } else {\n scopes.push(scope)\n }\n }\n function getScopes(\n authUser: IAuthUserProfile,\n admin_scopes: string[],\n scopes: string[]\n ) {\n const filtered_scopes = [...scopes]\n if (authUser.admin) {\n filtered_scopes.push(...admin_scopes)\n }\n return filtered_scopes.sort()\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.ADD_A_NEW_APP')), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(createApp, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-name\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((appForm.client_name) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_name]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')), 1),\n _createVNode(_component_CustomTextArea, {\n name: \"app-description\",\n charLimit: 200,\n input: appForm.description,\n onUpdateValue: updateDescription\n }, null, 8, [\"input\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \"*\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-url\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((appForm.client_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.client_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"app-redirect-uri\",\n type: \"text\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((appForm.redirect_uri) = $event))\n }, null, 512), [\n [_vModelText, appForm.redirect_uri]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \"* \", 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filtered_scopes), (scope) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"form-item-scope-checkboxes\",\n key: scope\n }, [\n _createElementVNode(\"label\", _hoisted_16, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n name: scope,\n checked: scopes.includes(scope),\n onChange: ($event: any) => (updateScopes(scope))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"p\", {\n class: \"scope-description\",\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_18)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: scopes.length === 0\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_20),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(() => _ctx.$router.push('/profile/apps'), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 40, _hoisted_4)\n ])\n ]))\n}\n}\n\n})","import script from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AddUserApp.vue?vue&type=style&index=0&id=0657ee77&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0657ee77\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b2fe9ed\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"authorize-oauth2-app\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { id: \"authorize-oauth2-title\" }\nconst _hoisted_4 = { class: \"oauth2-access description-list\" }\nconst _hoisted_5 = { class: \"client-scope\" }\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = { class: \"authorize-oauth2-buttons\" }\nconst _hoisted_8 = { key: 1 }\nconst _hoisted_9 = { class: \"no-app\" }\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AuthorizeUserApp',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => loadApp())\n\n function loadApp() {\n if (route.query.client_id && typeof route.query.client_id === 'string') {\n store.dispatch(\n OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID,\n route.query.client_id\n )\n }\n }\n\n function authorizeApp() {\n store.dispatch(OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT, {\n client_id: `${route.query.client_id}`,\n redirect_uri: `${route.query.redirect_uri}`,\n response_type: `${route.query.response_type}`,\n scope: `${route.query.scope}`,\n state: `${route.query.state ? route.query.state : ''}`,\n code_challenge: `${\n route.query.code_challenge ? route.query.code_challenge : ''\n }`,\n code_challenge_method: `${\n route.query.code_challenge_method\n ? route.query.code_challenge_method\n : ''\n }`,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: \"oauth2.AUTHORIZE_APP\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: _unref(client).id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(client).name), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]),\n _: 1\n })\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('oauth2.APP_REQUESTING_ACCESS')), 1),\n _createElementVNode(\"dl\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: scope }, [\n _createElementVNode(\"dt\", _hoisted_5, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]),\n _createElementVNode(\"dd\", {\n innerHTML: _ctx.$t(`oauth2.APP.SCOPE.${scope}_DESCRIPTION`)\n }, null, 8, _hoisted_6)\n ], 64))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: authorizeApp\n }, _toDisplayString(_ctx.$t('buttons.AUTHORIZE')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"p\", _hoisted_9, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AuthorizeUserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AuthorizeUserApp.vue?vue&type=style&index=0&id=3b2fe9ed&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3b2fe9ed\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"oauth2-apps\" }\n\nimport { onUnmounted, toRefs } from 'vue'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { user } = toRefs(props)\n\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENTS, [])\n })\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { authUser: _unref(user) }, null, 8, [\"authUser\"])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a844fa2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"oauth2-app\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"info-box success-message\"\n}\nconst _hoisted_4 = [\"title\"]\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"app-secret\"\n}\nconst _hoisted_7 = [\"title\"]\nconst _hoisted_8 = { class: \"client-scopes\" }\nconst _hoisted_9 = { class: \"app-buttons\" }\nconst _hoisted_10 = { key: 2 }\nconst _hoisted_11 = { class: \"no-app\" }\n\nimport {\n ComputedRef,\n Ref,\n capitalize,\n computed,\n onBeforeMount,\n toRefs,\n ref,\n onUnmounted,\n withDefaults,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\n import { IOAuth2Client } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n afterCreation?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserApp',\n props: {\n authUser: null,\n afterCreation: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, afterCreation: boolean };\n\n \n const route = useRoute()\n const store = useStore()\n\n const { afterCreation, authUser } = toRefs(props)\n const client: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENT]\n )\n const revocationSuccessful: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]\n )\n const displayModal: Ref = ref(false)\n const messageToDisplay: Ref = ref(null)\n const idCopied: Ref = ref(false)\n const secretCopied: Ref = ref(false)\n const clipboardSupport: Ref = ref(false)\n\n onBeforeMount(() => {\n loadClient()\n if (navigator.clipboard) {\n clipboardSupport.value = true\n }\n })\n\n function loadClient() {\n // after creation, client is already in store\n if (\n !afterCreation.value &&\n route.params.id &&\n typeof route.params.id === 'string'\n ) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID, +route.params.id)\n }\n }\n function updateMessageToDisplay(forDelete: boolean) {\n messageToDisplay.value = forDelete\n ? 'oauth2.APP_DELETION_CONFIRMATION'\n : 'oauth2.TOKENS_REVOCATION_CONFIRMATION'\n updateDisplayModal(true)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (!value) {\n messageToDisplay.value = null\n }\n }\n function confirmAction(clientId: number) {\n if (messageToDisplay.value === 'oauth2.APP_DELETION_CONFIRMATION') {\n store.dispatch(OAUTH2_STORE.ACTIONS.DELETE_CLIENT, clientId)\n } else {\n store.dispatch(OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS, clientId)\n }\n }\n function copyIdToClipboard() {\n navigator.clipboard.writeText(client.value.client_id)\n idCopied.value = true\n secretCopied.value = false\n setTimeout(() => {\n idCopied.value = false\n }, 3000)\n }\n function copySecretToClipboard() {\n if (client.value.client_secret) {\n navigator.clipboard.writeText(client.value.client_secret)\n secretCopied.value = true\n idCopied.value = false\n setTimeout(() => {\n secretCopied.value = false\n }, 3000)\n }\n }\n onUnmounted(() => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT)\n store.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n })\n\n watch(\n () => revocationSuccessful.value,\n (newValue) => {\n if (newValue) {\n updateDisplayModal(false)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t(messageToDisplay.value),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (confirmAction(_unref(client).id))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(client) && _unref(client).client_id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(afterCreation) || _unref(revocationSuccessful))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\n _unref(afterCreation)\n ? 'oauth2.APP_CREATED_SUCCESSFULLY'\n : 'oauth2.TOKENS_REVOKED'\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_ID')) + \":\", 1),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_unref(client).client_id) + \" \", 1),\n (_unref(afterCreation) && clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${idCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copyIdToClipboard\n }, null, 10, _hoisted_4))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dt\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.APP.CLIENT_SECRET')) + \": \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(afterCreation) && _unref(client).client_secret)\n ? (_openBlock(), _createElementBlock(\"dd\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_unref(client).client_secret) + \" \", 1),\n (clipboardSupport.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(`fa fa-${secretCopied.value ? 'check' : 'copy'}`),\n \"aria-hidden\": \"true\",\n title: _ctx.$t('oauth2.COPY_TO_CLIPBOARD'),\n onClick: copySecretToClipboard\n }, null, 10, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dt\", null, _toDisplayString(capitalize(_ctx.$t('oauth2.APP.ISSUE_AT'))) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(formatDate)(\n _unref(client).issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.DESCRIPTION')) + \":\", 1),\n _createElementVNode(\"dd\", {\n class: _normalizeClass({ 'no-description': !_unref(client).client_description })\n }, _toDisplayString(_unref(client).client_description\n ? _unref(client).client_description\n : _ctx.$t('oauth2.NO_DESCRIPTION')), 3),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).website), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.REDIRECT_URL')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(client).redirect_uris.length > 0 ? _unref(client).redirect_uris[0] : ''), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('oauth2.APP.SCOPE.LABEL')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(client).scope.split(' '), (scope) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: \"client-scope\",\n key: scope\n }, [\n _createElementVNode(\"code\", null, _toDisplayString(scope), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateMessageToDisplay(false)))\n }, _toDisplayString(_ctx.$t('oauth2.REVOKE_ALL_TOKENS')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateMessageToDisplay(true)))\n }, _toDisplayString(_ctx.$t('oauth2.DELETE_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('oauth2.NO_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/apps')))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserApp.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserApp.vue?vue&type=style&index=0&id=3a844fa2&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a844fa2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efa45ea0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"oauth2-apps-list\" }\nconst _hoisted_2 = { class: \"apps-list\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"app-issued-at\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"no-apps\"\n}\nconst _hoisted_6 = { class: \"app-list-buttons\" }\n\nimport { ComputedRef, computed, onBeforeMount, toRefs, watch } from 'vue'\n import { LocationQuery, useRoute } from 'vue-router'\n\n import Pagination from '@/components/Common/Pagination.vue'\n import { OAUTH2_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { IOAuth2Client, IOauth2ClientsPayload } from '@/types/oauth'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { defaultPage, getNumberQueryValue } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAppsList',\n props: {\n authUser: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n\n const { authUser } = toRefs(props)\n const clients: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS]\n )\n\n const pagination: ComputedRef = computed(\n () => store.getters[OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]\n )\n let query: IOauth2ClientsPayload = getClientsQuery(route.query)\n\n onBeforeMount(() => {\n loadClients(query)\n })\n\n function getClientsQuery(newQuery: LocationQuery): IOauth2ClientsPayload {\n const clientsQuery: IOauth2ClientsPayload = {}\n if (newQuery.page) {\n clientsQuery.page = getNumberQueryValue(newQuery.page, defaultPage)\n }\n return clientsQuery\n }\n function loadClients(payload: IOauth2ClientsPayload) {\n store.dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS, payload)\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getClientsQuery(newQuery)\n loadClients(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('oauth2.APPS_LIST')), 1),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(clients), (client) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: client.client_id\n }, [\n _createVNode(_component_router_link, {\n to: { name: 'UserApp', params: { id: client.id } }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(client.name), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('oauth2.APP.ISSUE_AT')) + \" \" + _toDisplayString(_unref(formatDate)(\n client.issued_at,\n _unref(authUser).timezone,\n _unref(authUser).date_format\n )), 1)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('oauth2.NO_APPS')), 1)),\n (_unref(clients).length > 0)\n ? (_openBlock(), _createBlock(Pagination, {\n key: 2,\n pagination: _unref(pagination),\n path: \"/profile/apps\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/apps/new')))\n }, _toDisplayString(_ctx.$t('oauth2.NEW_APP')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAppsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAppsList.vue?vue&type=style&index=0&id=efa45ea0&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efa45ea0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e52489\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-sport-preferences\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"responsive-table\"\n}\nconst _hoisted_3 = { class: \"mobile-display\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"profile-buttons mobile-display\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_6 = { class: \"text-left\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"disabled-message\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"fa fa-refresh fa-spin fa-fw\"\n}\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = [\"checked\"]\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = {\n key: 0,\n class: \"action-buttons\"\n}\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = [\"onClick\"]\nconst _hoisted_22 = {\n key: 1,\n class: \"edition-buttons\"\n}\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\", \"onClick\"]\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_27 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { ComputedRef, computed, inject, reactive, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile, IUserSportPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n user: IUserProfile\n isEdition: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserSportPreferences',\n props: {\n user: null,\n isEdition: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n isEdition: boolean\n };\n\n \n\n const store = useStore()\n const { t } = useI18n()\n\n const { isEdition, user } = toRefs(props)\n const defaultColor = '#838383'\n const sportColors: Record | undefined = inject('sportColors')\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t, 'is_active', user.value.sports_list)\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const sportPayload: IUserSportPreferencesPayload = reactive({\n sport_id: 0,\n color: null,\n is_active: true,\n stopped_speed_threshold: 1,\n })\n\n function updateSportInEdition(sport: ISport | null) {\n if (sport !== null) {\n sportPayload.sport_id = sport.id\n sportPayload.color = sport.color\n ? sport.color\n : sportColors\n ? sportColors[sport.label]\n : defaultColor\n sportPayload.is_active = sport.is_active_for_user\n sportPayload.stopped_speed_threshold = sport.stopped_speed_threshold\n } else {\n resetSportPayload()\n }\n }\n function isSportInEdition(sportId: number) {\n return sportPayload.sport_id === sportId\n }\n function updateColor(event: Event & { target: HTMLInputElement }) {\n sportPayload.color = event.target.value\n }\n function updateThreshold(event: Event & { target: HTMLInputElement }) {\n sportPayload.stopped_speed_threshold = parseFloat(event.target.value)\n }\n function updateIsActive(event: Event & { target: HTMLInputElement }) {\n sportPayload.is_active = event.target.checked\n }\n function resetSportPayload() {\n sportPayload.sport_id = 0\n sportPayload.color = null\n sportPayload.is_active = true\n sportPayload.stopped_speed_threshold = 1\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n }\n function updateSport(event: Event) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,\n sportPayload\n )\n }\n function resetSport(event: Event, sportId: number) {\n event.preventDefault()\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES,\n sportId\n )\n }\n\n watch(\n () => loading.value,\n (newIsLoading) => {\n if (!newIsLoading && !errorMessages.value) {\n resetSportPayload()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.SPORT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"th\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.COLOR')), 1),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"sport-color\",\n type: \"color\",\n value: sportPayload.color,\n onInput: updateColor\n }, null, 40, _hoisted_9))\n : (_openBlock(), _createBlock(_component_SportImage, {\n key: 1,\n title: sport.translatedLabel,\n \"sport-label\": sport.label,\n color: sport.color ? sport.color : _unref(sportColors)[sport.label]\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n ]),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"sport-label\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel) + \" \", 1),\n (!sport.is_active)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" (\" + _toDisplayString(_ctx.$t('user.PROFILE.SPORT.DISABLED_BY_ADMIN')) + \") \", 1))\n : _createCommentVNode(\"\", true),\n (_unref(loading) && isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_12))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages) && sportPayload.sport_id === sport.id)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.WORKOUT', 0)), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${\n _unref(user).sports_list.includes(sport.id) ? '-check' : ''\n }`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.IS_ACTIVE')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n type: \"checkbox\",\n checked: sport.is_active_for_user,\n onChange: updateIsActive\n }, null, 40, _hoisted_15))\n : (_openBlock(), _createElementBlock(\"i\", {\n key: 1,\n class: _normalizeClass(`fa fa${sport.is_active_for_user ? '-check' : ''}`),\n \"aria-hidden\": \"true\"\n }, null, 2))\n ], 2),\n _createElementVNode(\"td\", {\n class: _normalizeClass([\"text-center\", { 'disabled-sport': !sport.is_active }])\n }, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD')), 1),\n (isSportInEdition(sport.id) && sport.is_active)\n ? (_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n class: \"threshold-input\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: sportPayload.stopped_speed_threshold,\n onInput: updateThreshold\n }, null, 40, _hoisted_17))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(sport.stopped_speed_threshold), 1))\n ], 2),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('user.PROFILE.SPORT.ACTION')), 1),\n (sportPayload.sport_id === 0)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: ($event: any) => (updateSportInEdition(sport))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 9, _hoisted_21))\n : _createCommentVNode(\"\", true),\n (isSportInEdition(sport.id))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: updateSport\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_23),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: (e) => resetSport(e, sport.id)\n }, _toDisplayString(_ctx.$t('buttons.RESET')), 9, _hoisted_24),\n _createElementVNode(\"button\", {\n disabled: _unref(loading),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateSportInEdition(null)))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_25)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ])\n ]),\n (_unref(isEdition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/sports')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/profile/edit/sports')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_SPORTS_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserSportPreferences.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserSportPreferences.vue?vue&type=style&index=0&id=74e52489&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e52489\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74257266\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"about-text\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-book fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = {\n href: \"https://samr1.github.io/FitTrackee/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-github fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = {\n href: \"https://github.com/SamR1/FitTrackee\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-balance-scale fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://choosealicense.com/licenses/agpl-3.0/\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n}, \" AGPLv3 \", -1))\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-envelope-o fa-padding\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\"href\"]\n\nimport { ComputedRef, computed, capitalize } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'About',\n setup(__props) {\n\n const store = useStore()\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('about.FITTRACKEE_DESCRIPTION')\n }, null, 8, _hoisted_2),\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", _hoisted_4, _toDisplayString(capitalize(_ctx.$t('common.DOCUMENTATION'))), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_5,\n _createElementVNode(\"a\", _hoisted_6, _toDisplayString(_ctx.$t('about.SOURCE_CODE')), 1)\n ]),\n _createElementVNode(\"p\", null, [\n _hoisted_7,\n _createVNode(_component_i18n_t, { keypath: \"about.FITTRACKEE_LICENSE\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n (_unref(appConfig).admin_contact)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"a\", {\n href: `mailto:${_unref(appConfig).admin_contact}`\n }, _toDisplayString(_ctx.$t('about.CONTACT_ADMIN')), 9, _hoisted_11)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./About.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./About.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./About.vue?vue&type=style&index=0&id=74257266&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74257266\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./BikePic.vue?vue&type=template&id=795f7f5f&scoped=true\"\nconst script = {}\n\nimport \"./BikePic.vue?vue&type=style&index=0&id=795f7f5f&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795f7f5f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bffb50d0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"about\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub about-details\" }\n\nimport About from '@/components/About.vue'\n import BikePic from '@/components/BikePic.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AboutView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(About)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AboutView.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AboutView.vue?vue&type=style&index=0&id=bffb50d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bffb50d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-96abcc38\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"timeline-workout\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"workout-user-date\" }\nconst _hoisted_4 = { class: \"workout-user\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"no-map\"\n}\nconst _hoisted_8 = { class: \"img\" }\nconst _hoisted_9 = { class: \"data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = { class: \"data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"data elevation\"\n}\nconst _hoisted_15 = [\"alt\"]\nconst _hoisted_16 = { class: \"data-values\" }\nconst _hoisted_17 = {\n key: 1,\n class: \"data altitude\"\n}\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_19 = { class: \"data-values\" }\n\nimport { Locale, formatDistance } from 'date-fns'\n import { ComputedRef, computed, toRefs, withDefaults } from 'vue'\n\n import StaticMap from '@/components/Common/StaticMap.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n\n interface Props {\n user: IUserProfile\n useImperialUnits: boolean\n workout?: IWorkout\n sport?: ISport\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCard',\n props: {\n user: null,\n useImperialUnits: { type: Boolean },\n workout: { default: () => ({} as IWorkout) },\n sport: { default: () => ({} as ISport) }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, useImperialUnits: boolean, workout: IWorkout, sport: ISport };\n\n \n\n const store = useStore()\n\n const { user, workout, sport, useImperialUnits } = toRefs(props)\n const locale: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n (_unref(user).username)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-user-name\",\n to: {\n name: 'User',\n params: { username: _unref(user).username },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(user).username), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"workout-title\",\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_unref(workout).title), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true),\n (_unref(workout).workout_date && _unref(user))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"workout-date\",\n title: \n _unref(formatDate)(_unref(workout).workout_date, _unref(user).timezone, _unref(user).date_format)\n \n }, _toDisplayString(_unref(formatDistance)(new Date(_unref(workout).workout_date), new Date(), {\n addSuffix: true,\n locale: _unref(locale),\n })), 9, _hoisted_5))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-map\", { 'no-cursor': !_unref(workout) }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_unref(workout).with_gpx)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: _unref(workout)\n }, null, 8, [\"workout\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-data\", { 'without-gpx': _unref(workout) && !_unref(workout).with_gpx }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _unref(workout).id\n ? _ctx.$router.push({\n name: 'Workout',\n params: { workoutId: _unref(workout).id },\n })\n : null\n ))\n }, [\n _createElementVNode(\"div\", _hoisted_8, [\n (_unref(sport).label)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n (_unref(workout))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_unref(workout).moving), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).distance,\n digits: 3,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_15),\n _createElementVNode(\"div\", _hoisted_16, [\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).min_alt,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/ \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).max_alt,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workout) && _unref(workout).with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createTextVNode(\" +\"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: _unref(workout).ascent,\n unitFrom: \"m\",\n displayUnit: false,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\"/- \"),\n (_unref(workout).id)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 1,\n distance: _unref(workout).descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCard.vue?vue&type=style&index=0&id=96abcc38&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-96abcc38\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35567bf2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"timeline\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = {\n key: 1,\n class: \"more-workouts\"\n}\n\nimport { ComputedRef, computed, ref, onBeforeMount, toRefs } from 'vue'\n\n import WorkoutCard from '@/components/Workout/WorkoutCard.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Timeline',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const page = ref(1)\n const per_page = 5\n const initWorkoutsCount =\n props.user.nb_workouts >= per_page ? per_page : props.user.nb_workouts\n onBeforeMount(() => loadWorkouts())\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]\n )\n const moreWorkoutsExist: ComputedRef = computed(() =>\n workouts.value.length > 0\n ? workouts.value[workouts.value.length - 1].previous_workout !== null\n : false\n )\n\n function loadWorkouts() {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n function loadMoreWorkouts() {\n page.value += 1\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS, {\n page: page.value,\n per_page,\n ...defaultOrder,\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.LATEST_WORKOUTS')), 1),\n (_unref(user).nb_workouts > 0 && _unref(workouts).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList([...Array(_unref(initWorkoutsCount)).keys()], (index) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: index\n }, null, 8, [\"user\", \"useImperialUnits\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createBlock(WorkoutCard, {\n workout: workout,\n sport: \n _unref(workouts).length > 0\n ? _unref(sports).filter((s) => s.id === workout.sport_id)[0]\n : null\n ,\n user: _unref(user),\n useImperialUnits: _unref(user).imperial_units,\n key: workout.id\n }, null, 8, [\"workout\", \"sport\", \"user\", \"useImperialUnits\"]))\n }), 128)),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(moreWorkoutsExist))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", { onClick: loadMoreWorkouts }, _toDisplayString(_ctx.$t('workouts.LOAD_MORE_WORKOUT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}\n}\n\n})","import script from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Timeline.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Timeline.vue?vue&type=style&index=0&id=35567bf2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35567bf2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nimport { toRefs } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n interface Props {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkout',\n props: {\n displayHARecord: { type: Boolean },\n workout: null,\n sportLabel: null,\n sportColor: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workout: IWorkout\n sportLabel: string\n sportColor: string | null\n };\n\n \n\n const { displayHARecord, workout, sportLabel, sportColor } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-workout\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.$router.push({ name: 'Workout', params: { workoutId: _unref(workout).id } })\n ))\n }, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sportLabel),\n title: _unref(workout).title,\n color: _unref(sportColor)\n }, null, 8, [\"sport-label\", \"title\", \"color\"]),\n _createElementVNode(\"sup\", null, [\n (_unref(workout).records.length > 0)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\",\n title: \n _unref(workout).records\n .filter((record) =>\n _unref(displayHARecord) ? true : record.record_type !== 'HA'\n )\n .map((record) => ` ${_ctx.$t(`workouts.RECORD_${record.record_type}`)}`)\n \n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkout.vue?vue&type=style&index=0&id=331e1c8b&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"donut-chart\" }\nconst _hoisted_2 = {\n height: \"34\",\n width: \"34\",\n viewBox: \"0 0 34 34\"\n}\nconst _hoisted_3 = [\"stroke\", \"stroke-dashoffset\", \"transform\"]\n\nimport { toRefs } from 'vue'\n\n interface Props {\n colors: Record\n datasets: Record>\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'DonutChart',\n props: {\n colors: null,\n datasets: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n };\n\n \n\n const { colors, datasets } = toRefs(props)\n let angleOffset = -90\n const cx = 16\n const cy = 16\n const radius = 14\n const circumference = 2 * Math.PI * radius\n\n function calculateStrokeDashOffset(\n percentage: number,\n circumference: number\n ): number {\n return circumference - percentage * circumference\n }\n function returnCircleTransformValue(\n index: number,\n percentage: number\n ): string {\n const rotation = `rotate(${angleOffset}, ${cx}, ${cy})`\n angleOffset = percentage * 360 + angleOffset\n return rotation\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries(_unref(datasets)), (data, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n _createElementVNode(\"circle\", {\n cx: cx,\n cy: cy,\n r: radius,\n fill: \"transparent\",\n stroke: _unref(colors)[+data[0]],\n \"stroke-dashoffset\": \n calculateStrokeDashOffset(data[1].percentage, circumference)\n ,\n \"stroke-dasharray\": circumference,\n \"stroke-width\": \"3\",\n \"stroke-opacity\": \"0.8\",\n transform: returnCircleTransformValue(index, data[1].percentage)\n }, null, 8, _hoisted_3)\n ]))\n }), 128))\n ]))\n ]))\n}\n}\n\n})","import script from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DonutChart.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52d4310a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"calendar-workouts-chart\" }\nconst _hoisted_2 = { class: \"workouts-count\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-pane\"\n}\nconst _hoisted_4 = { class: \"more-workouts\" }\n\nimport { ref, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import DonutChart from '@/components/Dashboard/UserCalendar/DonutChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n\n interface Props {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkoutsChart',\n props: {\n colors: null,\n datasets: null,\n sports: null,\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n colors: Record\n datasets: Record>\n sports: ISport[]\n workouts: IWorkout[]\n };\n\n \n\n const { colors, datasets, sports, workouts } = toRefs(props)\n const isHidden = ref(true)\n\n function togglePane(event: Event & { target: HTMLElement }) {\n event.stopPropagation()\n isHidden.value = !isHidden.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"workouts-chart\",\n onClick: togglePane\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(workouts).length), 1),\n _createVNode(DonutChart, {\n datasets: _unref(datasets),\n colors: _unref(colors)\n }, null, 8, [\"datasets\", \"colors\"])\n ]),\n (!isHidden.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"i\", {\n class: \"fa fa-times calendar-more\",\n \"aria-hidden\": \"true\",\n onClick: togglePane\n }),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ])), [\n [_directive_click_outside, togglePane]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkoutsChart.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkoutsChart.vue?vue&type=style&index=0&id=52d4310a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52d4310a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-workouts\" }\nconst _hoisted_2 = { class: \"desktop-display\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workouts-display\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"donut-display\"\n}\nconst _hoisted_5 = { class: \"mobile-display\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"donut-display\"\n}\n\nimport { computed, toRefs } from 'vue'\n\n import CalendarWorkout from '@/components/Dashboard/UserCalendar/CalendarWorkout.vue'\n import CalendarWorkoutsChart from '@/components/Dashboard/UserCalendar/CalendarWorkoutsChart.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getSportColor, getSportLabel, sportIdColors } from '@/utils/sports'\n import { getDonutDatasets } from '@/utils/workouts'\n\n interface Props {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarWorkouts',\n props: {\n displayHARecord: { type: Boolean },\n workouts: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n displayHARecord: boolean\n workouts: IWorkout[]\n sports: ISport[]\n };\n\n \n\n const { displayHARecord, workouts, sports } = toRefs(props)\n const chartDatasets = computed(() => getDonutDatasets(props.workouts))\n const colors = computed(() => sportIdColors(props.sports))\n const displayedWorkoutCount = 6\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workouts).length <= displayedWorkoutCount)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts).slice(0, displayedWorkoutCount), (workout, index) => {\n return (_openBlock(), _createBlock(CalendarWorkout, {\n key: index,\n displayHARecord: _unref(displayHARecord),\n workout: workout,\n sportLabel: _unref(getSportLabel)(workout, _unref(sports)),\n sportColor: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"displayHARecord\", \"workout\", \"sportLabel\", \"sportColor\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(CalendarWorkoutsChart, {\n workouts: _unref(workouts),\n sports: _unref(sports),\n datasets: _unref(chartDatasets),\n colors: _unref(colors)\n }, null, 8, [\"workouts\", \"sports\", \"datasets\", \"colors\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarWorkouts.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarWorkouts.vue?vue&type=style&index=0&id=5aab7455&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-cells\" }\nconst _hoisted_2 = { class: \"calendar-cell-day\" }\n\nimport { addDays, format, isSameDay, isSameMonth, isToday } from 'date-fns'\n import { Ref, ref, toRefs, watch, onMounted } from 'vue'\n\n import CalendarWorkouts from '@/components/Dashboard/UserCalendar/CalendarWorkouts.vue'\n import { ISport } from '@/types/sports'\n import { IWorkout } from '@/types/workouts'\n import { getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarCells',\n props: {\n currentDay: null,\n displayHARecord: { type: Boolean },\n endDate: null,\n sports: null,\n startDate: null,\n timezone: null,\n weekStartingMonday: { type: Boolean },\n workouts: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n currentDay: Date\n displayHARecord: boolean\n endDate: Date\n sports: ISport[]\n startDate: Date\n timezone: string\n weekStartingMonday: boolean\n workouts: IWorkout[]\n };\n\n \n\n const {\n currentDay,\n displayHARecord,\n endDate,\n sports,\n startDate,\n timezone,\n weekStartingMonday,\n workouts,\n } = toRefs(props)\n const rows: Ref = ref([])\n\n onMounted(() => getDays())\n\n function getDays() {\n rows.value = []\n let day = startDate.value\n while (day <= endDate.value) {\n const days: Date[] = []\n for (let i = 0; i < 7; i++) {\n days.push(day)\n day = addDays(day, 1)\n }\n rows.value.push(days)\n }\n }\n function isWeekEnd(day: number): boolean {\n return weekStartingMonday.value\n ? [5, 6].includes(day)\n : [0, 6].includes(day)\n }\n function filterWorkouts(day: Date, workouts: IWorkout[]) {\n if (workouts) {\n return workouts\n .filter((workout) =>\n isSameDay(getDateWithTZ(workout.workout_date, timezone.value), day)\n )\n .reverse()\n }\n return []\n }\n\n watch(\n () => props.currentDay,\n () => getDays()\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rows.value, (row, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"calendar-row\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row, (day, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"calendar-cell\", {\n 'disabled-cell': !_unref(isSameMonth)(day, _unref(currentDay)),\n 'week-end': isWeekEnd(i),\n today: _unref(isToday)(day),\n }]),\n key: i\n }, [\n _createVNode(CalendarWorkouts, {\n workouts: filterWorkouts(day, _unref(workouts)),\n sports: _unref(sports),\n displayHARecord: _unref(displayHARecord)\n }, null, 8, [\"workouts\", \"sports\", \"displayHARecord\"]),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(format)(day, 'd')), 1)\n ], 2))\n }), 128))\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarCells.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarCells.vue?vue&type=style&index=0&id=34b99f0e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-days\" }\n\nimport { Locale, format, addDays } from 'date-fns'\n\n interface Props {\n startDate: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarDays',\n props: {\n startDate: null,\n localeOptions: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n startDate: Date\n localeOptions: Locale\n };\n\n \n\n const days = []\n for (let i = 0; i < 7; i++) {\n days.push(addDays(props.startDate, i))\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(days, (day, index) => {\n return _createElementVNode(\"div\", {\n class: \"calendar-day\",\n key: index\n }, _toDisplayString(_unref(format)(day, 'EEE', { locale: __props.localeOptions })), 1)\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarDays.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarDays.vue?vue&type=style&index=0&id=4f3dc99e&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"calendar-header\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { class: \"calendar-month\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nimport { Locale, format } from 'date-fns'\n import { toRefs } from 'vue'\n\n interface Props {\n day: Date\n localeOptions: Locale\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CalendarHeader',\n props: {\n day: null,\n localeOptions: null\n },\n emits: ['displayNextMonth', 'displayPreviousMonth'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n day: Date\n localeOptions: Locale\n };\n\n \n\n \n\n const { day, localeOptions } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-left\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('displayPreviousMonth')))\n }, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(format)(_unref(day), 'MMM yyyy', { locale: _unref(localeOptions) })), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"calendar-arrow calendar-arrow-right\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('displayNextMonth')))\n }, _hoisted_6)\n ]))\n}\n}\n\n})","import script from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CalendarHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./CalendarHeader.vue?vue&type=style&index=0&id=79a65a70&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-calendar\" }\nconst _hoisted_2 = { class: \"calendar-card box\" }\n\nimport { Locale, addMonths, format, subMonths } from 'date-fns'\n import { ComputedRef, computed, ref, toRefs, onBeforeMount } from 'vue'\n\n import CalendarCells from '@/components/Dashboard/UserCalendar/CalendarCells.vue'\n import CalendarDays from '@/components/Dashboard/UserCalendar/CalendarDays.vue'\n import CalendarHeader from '@/components/Dashboard/UserCalendar/CalendarHeader.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getCalendarStartAndEnd } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const store = useStore()\n\n const { sports, user } = toRefs(props)\n const dateFormat = 'yyyy-MM-dd'\n const day = ref(new Date())\n const calendarDates = ref(getCalendarStartAndEnd(day.value, props.user.weekm))\n const calendarWorkouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]\n )\n const localeOptions: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LOCALE]\n )\n\n onBeforeMount(() => getCalendarWorkouts())\n\n function getCalendarWorkouts() {\n calendarDates.value = getCalendarStartAndEnd(day.value, props.user.weekm)\n const apiParams: TWorkoutsPayload = {\n from: format(calendarDates.value.start, dateFormat),\n to: format(calendarDates.value.end, dateFormat),\n page: 1,\n per_page: 100,\n ...defaultOrder,\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS, apiParams)\n }\n function displayNextMonth() {\n day.value = addMonths(day.value, 1)\n getCalendarWorkouts()\n }\n function displayPreviousMonth() {\n day.value = subMonths(day.value, 1)\n getCalendarWorkouts()\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(CalendarHeader, {\n day: day.value,\n \"locale-options\": _unref(localeOptions),\n onDisplayNextMonth: displayNextMonth,\n onDisplayPreviousMonth: displayPreviousMonth\n }, null, 8, [\"day\", \"locale-options\"]),\n _createVNode(CalendarDays, {\n \"start-date\": calendarDates.value.start,\n \"locale-options\": _unref(localeOptions)\n }, null, 8, [\"start-date\", \"locale-options\"]),\n _createVNode(CalendarCells, {\n currentDay: day.value,\n displayHARecord: _unref(user).display_ascent,\n \"end-date\": calendarDates.value.end,\n sports: _unref(sports),\n \"start-date\": calendarDates.value.start,\n timezone: _unref(user).timezone,\n workouts: _unref(calendarWorkouts),\n weekStartingMonday: _unref(user).weekm\n }, null, 8, [\"currentDay\", \"displayHARecord\", \"end-date\", \"sports\", \"start-date\", \"timezone\", \"workouts\", \"weekStartingMonday\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3e7444d9&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1bcddc12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-month-stats\" }\n\nimport { endOfMonth, startOfMonth } from 'date-fns'\n import { toRefs } from 'vue'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n\n interface Props {\n sports: ISport[]\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserMonthStats',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IUserProfile\n };\n\n \n\n const { sports, user } = toRefs(props)\n const date = new Date()\n const chartParams = {\n duration: 'week',\n start: startOfMonth(date),\n end: endOfMonth(date),\n }\n const selectedSportIds = props.sports.map((sport) => sport.id)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.THIS_MONTH')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n \"chart-params\": chartParams,\n \"displayed-sport-ids\": _unref(selectedSportIds),\n \"hide-chart-if-no-data\": true\n }, null, 8, [\"sports\", \"user\", \"displayed-sport-ids\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserMonthStats.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserMonthStats.vue?vue&type=style&index=0&id=1bcddc12&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1bcddc12\"]])\n\nexport default __exports__","import createI18n from '@/i18n'\nimport { ITranslatedSport } from '@/types/sports'\nimport { TUnit } from '@/types/units'\nimport { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\nimport { formatDate, getDateFormat } from '@/utils/dates'\nimport { convertDistance, units } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nexport const formatRecord = (\n record: IRecord,\n tz: string,\n useImperialUnits: boolean,\n date_format: string\n): Record => {\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = useImperialUnits\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = useImperialUnits\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 2\n )} ${distanceUnitTo}/h`\n break\n case 'FD':\n value = `${convertDistance(\n +record.value,\n distanceUnitFrom,\n distanceUnitTo,\n 3\n )} ${distanceUnitTo}`\n break\n case 'HA':\n value = `${convertDistance(\n +record.value,\n ascentUnitFrom,\n ascentUnitTo,\n 2\n )} ${ascentUnitTo}`\n break\n case 'LD':\n value = record.value\n break\n default:\n throw new Error(\n `Invalid record type, expected: \"AS\", \"FD\", \"HA\", \"LD\", \"MD\", got: \"${record.record_type}\"`\n )\n }\n return {\n workout_date: formatDate(record.workout_date, tz, date_format, false),\n workout_id: record.workout_id,\n id: record.id,\n record_type: record.record_type,\n value: value,\n }\n}\n\nexport const sortRecords = (a: ICardRecord, b: ICardRecord): number => {\n const recordALabel = a.label.toLowerCase()\n const recordBLabel = b.label.toLowerCase()\n return recordALabel > recordBLabel ? 1 : recordALabel < recordBLabel ? -1 : 0\n}\n\nexport const getRecordsBySports = (\n records: IRecord[],\n translatedSports: ITranslatedSport[],\n tz: string,\n useImperialUnits: boolean,\n display_ascent: boolean,\n date_format: string\n): IRecordsBySports => {\n date_format = getDateFormat(date_format, locale.value)\n return records\n .filter((r) => (display_ascent ? true : r.record_type !== 'HA'))\n .reduce((sportList: IRecordsBySports, record) => {\n const sport = translatedSports.find((s) => s.id === record.sport_id)\n if (sport && sport.label) {\n if (sportList[sport.translatedLabel] === void 0) {\n sportList[sport.translatedLabel] = {\n label: sport.label,\n color: sport.color,\n records: [],\n }\n }\n sportList[sport.translatedLabel].records.push(\n formatRecord(record, tz, useImperialUnits, date_format)\n )\n }\n return sportList\n }, {})\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8d17c606\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"records-card\" }\nconst _hoisted_2 = { class: \"record-type\" }\nconst _hoisted_3 = { class: \"record-value\" }\nconst _hoisted_4 = { class: \"record-date\" }\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ICardRecord, IRecord, IRecordsBySports } from '@/types/workouts'\n import { sortRecords } from '@/utils/records'\n\n interface Props {\n records: IRecordsBySports\n sportTranslatedLabel: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'RecordsCard',\n props: {\n records: null,\n sportTranslatedLabel: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n records: IRecordsBySports\n sportTranslatedLabel: string\n };\n\n \n\n const { records, sportTranslatedLabel } = toRefs(props)\n\n const { t } = useI18n()\n\n function getTranslatedRecords(records: IRecord[]): ICardRecord[] {\n const translatedRecords: ICardRecord[] = []\n records.map((record) => {\n translatedRecords.push({\n ...record,\n label: t(`workouts.RECORD_${record.record_type}`),\n })\n })\n return translatedRecords.sort(sortRecords)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(records).label,\n color: _unref(records).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createTextVNode(\" \" + _toDisplayString(_unref(sportTranslatedLabel)), 1)\n ]),\n content: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getTranslatedRecords(_unref(records).records), (record) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"record\",\n key: record.id\n }, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(record.label), 1),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(record.value), 1),\n _createElementVNode(\"span\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: {\n name: 'Workout',\n params: { workoutId: record.workout_id },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(record.workout_date), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]))\n }), 128))\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RecordsCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RecordsCard.vue?vue&type=style&index=0&id=8d17c606&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8d17c606\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0c85cb8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-records-section\" }\nconst _hoisted_2 = { class: \"section-title\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy custom-fa-small\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"user-records\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"no-records\"\n}\n\nimport { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import RecordsCard from '@/components/Dashboard/UserRecords/RecordsCard.vue'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { getRecordsBySports } from '@/utils/records'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n sports: ISport[]\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n sports: null,\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n sports: ISport[]\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const recordsBySport = computed(() =>\n getRecordsBySports(\n props.user.records,\n translateSports(props.sports, t),\n props.user.timezone,\n props.user.imperial_units,\n props.user.display_ascent,\n props.user.date_format\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.RECORD', 2)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (Object.keys(_unref(recordsBySport)).length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_RECORDS')), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_unref(recordsBySport)).sort(), (sportTranslatedLabel) => {\n return (_openBlock(), _createBlock(RecordsCard, {\n sportTranslatedLabel: sportTranslatedLabel,\n records: _unref(recordsBySport)[sportTranslatedLabel],\n key: sportTranslatedLabel,\n useImperialUnits: __props.user.imperial_units\n }, null, 8, [\"sportTranslatedLabel\", \"records\", \"useImperialUnits\"]))\n }), 128))\n ])\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=f0c85cb8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f0c85cb8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nimport { ComputedRef, computed, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import { convertDistance, units } from '@/utils/units'\n interface Props {\n user: IAuthUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n\n const { t } = useI18n()\n\n const { user } = toRefs(props)\n const userTotalDuration: ComputedRef = computed(\n () => props.user.total_duration\n )\n const totalDuration = computed(() => get_duration(userTotalDuration))\n const distanceUnitFrom: TUnit = 'km'\n const distanceUnitTo: TUnit = user.value.imperial_units\n ? units[distanceUnitFrom].defaultTarget\n : distanceUnitFrom\n const totalDistance: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_distance, distanceUnitFrom, distanceUnitTo, 2)\n : parseFloat(user.value.total_distance.toFixed(2)))\n const ascentUnitFrom: TUnit = 'm'\n const ascentUnitTo: TUnit = user.value.imperial_units\n ? units[ascentUnitFrom].defaultTarget\n : ascentUnitFrom\n const totalAscent: ComputedRef = computed(() =>\n user.value.imperial_units\n ? convertDistance(user.value.total_ascent, ascentUnitFrom, ascentUnitTo, 2)\n : parseFloat(user.value.total_ascent.toFixed(2)))\n\n\n function get_duration(total_duration: ComputedRef) {\n const duration = total_duration.value.match(/day/g)\n ? total_duration.value.split(', ')[1]\n : total_duration.value\n return {\n days: total_duration.value.match(/day/g)\n ? `${total_duration.value.split(' ')[0]} ${\n total_duration.value.match(/days/g)\n ? t('common.DAY', 2)\n : t('common.DAY', 1)\n }`\n : `0 ${t('common.DAY', 2)},`,\n duration: `${duration.split(':')[0]}h ${duration.split(':')[1]}min`,\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatCard, {\n icon: \"calendar\",\n value: _unref(user).nb_workouts,\n text: _ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(StatCard, {\n icon: \"road\",\n value: _unref(totalDistance),\n text: _unref(distanceUnitTo) === 'mi' ? 'miles' : _unref(distanceUnitTo)\n }, null, 8, [\"value\", \"text\"]),\n (_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 0,\n icon: \"location-arrow\",\n value: _unref(totalAscent),\n text: _unref(ascentUnitTo) === 'ft' ? 'feet' : _unref(ascentUnitTo)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(StatCard, {\n icon: \"clock-o\",\n value: _unref(totalDuration).days,\n text: _unref(totalDuration).duration\n }, null, 8, [\"value\", \"text\"]),\n (!_unref(user).display_ascent)\n ? (_openBlock(), _createBlock(StatCard, {\n key: 1,\n icon: \"tags\",\n value: _unref(user).nb_sports,\n text: _ctx.$t('workouts.SPORT', _unref(user).nb_sports)\n }, null, 8, [\"value\", \"text\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=22dcb990&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c0893c1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"dashboard\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container mobile-menu\" }\nconst _hoisted_3 = { class: \"box\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-calendar\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-bar-chart\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"container\" }\nconst _hoisted_13 = { class: \"container dashboard-container\" }\nconst _hoisted_14 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_15 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_17 = {\n key: 1,\n class: \"app-loading\"\n}\n\nimport { ComputedRef, Ref, computed, onBeforeMount, ref } from 'vue'\n\n import Timeline from '@/components/Dashboard/Timeline.vue'\n import UserCalendar from '@/components/Dashboard/UserCalendar/index.vue'\n import UserMonthStats from '@/components/Dashboard/UserMonthStats.vue'\n import UserRecords from '@/components/Dashboard/UserRecords/index.vue'\n import UserStatsCards from '@/components/Dashboard/UserStatsCards/index.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Dashboard',\n setup(__props) {\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const isSelected: Ref = ref('calendar')\n\n onBeforeMount(() => store.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE))\n\n function updateDisplayColumn(target: string) {\n isSelected.value = target\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Loader = _resolveComponent(\"Loader\")!\n\n return (_unref(authUser).username && _unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'calendar' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (updateDisplayColumn('calendar')))\n }, _hoisted_5, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'chart' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayColumn('chart')))\n }, _hoisted_7, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'timeline' }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayColumn('timeline')))\n }, _hoisted_9, 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-menu-item\", { 'is-selected': isSelected.value === 'records' }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (updateDisplayColumn('records')))\n }, _hoisted_11, 2)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(UserMonthStats, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'chart') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(UserRecords, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'records') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createVNode(UserCalendar, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'calendar') })\n }, null, 8, [\"sports\", \"user\", \"class\"]),\n _createVNode(Timeline, {\n sports: _unref(sports),\n user: _unref(authUser),\n class: _normalizeClass({ 'is-hidden': !(isSelected.value === 'timeline') })\n }, null, 8, [\"sports\", \"user\", \"class\"])\n ])\n ]),\n _hoisted_16\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_Loader)\n ]))\n}\n}\n\n})","import script from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Dashboard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Dashboard.vue?vue&type=style&index=0&id=4c0893c1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4c0893c1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"not-found view\" }\n\nimport NotFound from '@/components/Common/NotFound.vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFoundView',\n setup(__props) {\n\n \nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(NotFound)\n ]))\n}\n}\n\n})","import script from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFoundView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58043acb\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"loginOrRegister\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"container-sub\" }\nconst _hoisted_4 = { class: \"container-sub\" }\n\nimport { toRefs } from 'vue'\n\n import BikePic from '@/components/BikePic.vue'\n import LoginOrRegisterForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoginOrRegister',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BikePic)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(LoginOrRegisterForm, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoginOrRegister.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./LoginOrRegister.vue?vue&type=style&index=0&id=58043acb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-58043acb\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserAccountEdition from '@/components/User/ProfileEdition/UserAccountEdition.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport AddUserApp from '@/components/User/UserApps/AddUserApp.vue'\nimport AuthorizeUserApp from '@/components/User/UserApps/AuthorizeUserApp.vue'\nimport UserApps from '@/components/User/UserApps/index.vue'\nimport UserApp from '@/components/User/UserApps/UserApp.vue'\nimport UserAppsList from '@/components/User/UserApps/UserAppsList.vue'\nimport UserSportPreferences from '@/components/User/UserSportPreferences.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport AboutView from '@/views/AboutView.vue'\nimport Dashboard from '@/views/Dashboard.vue'\nimport NotFoundView from '@/views/NotFoundView.vue'\nimport LoginOrRegister from '@/views/user/LoginOrRegister.vue'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: Dashboard,\n },\n {\n path: '/login',\n name: 'Login',\n component: LoginOrRegister,\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: LoginOrRegister,\n props: { action: 'register' },\n },\n {\n path: '/account-confirmation',\n name: 'AccountConfirmation',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/AccountConfirmationView.vue'\n ),\n },\n {\n path: '/account-confirmation/resend',\n name: 'AccountConfirmationResend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'account-confirmation-resend' },\n },\n {\n path: '/account-confirmation/email-sent',\n name: 'AccountConfirmationEmailSend',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/AccountConfirmationResendView.vue'\n ),\n props: { action: 'email-sent' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/email-update',\n name: 'EmailUpdate',\n component: () =>\n import(\n /* webpackChunkName: 'profile' */ '@/views/user/EmailUpdateView.vue'\n ),\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n {\n path: 'sports',\n name: 'UserSportPreferences',\n component: UserSportPreferences,\n props: { isEdition: false },\n },\n {\n path: 'apps',\n name: 'UserApps',\n component: UserApps,\n children: [\n {\n path: '',\n name: 'UserAppsList',\n component: UserAppsList,\n },\n {\n path: ':id',\n name: 'UserApp',\n component: UserApp,\n },\n {\n path: ':id/created',\n name: 'CreatedUserApp',\n component: UserApp,\n props: { afterCreation: true },\n },\n {\n path: 'new',\n name: 'AddUserApp',\n component: AddUserApp,\n },\n {\n path: 'authorize',\n name: 'AuthorizeUserApp',\n component: AuthorizeUserApp,\n },\n ],\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'account',\n name: 'UserAccountEdition',\n component: UserAccountEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n {\n path: 'sports',\n name: 'UserSportPreferencesEdition',\n component: UserSportPreferences,\n props: { isEdition: true },\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'statistics' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users/:username',\n name: 'UserFromAdmin',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n props: { fromAdmin: true },\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/about',\n name: 'About',\n component: AboutView,\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: NotFoundView,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n '/account-confirmation',\n '/account-confirmation/resend',\n '/account-confirmation/email-sent',\n]\n\nconst pathsWithoutChecks = ['/email-update', '/about']\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (pathsWithoutChecks.includes(to.path)) {\n return next()\n }\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n }\n if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n CONFIRM_ACCOUNT = 'CONFIRM_ACCOUNT',\n CONFIRM_EMAIL = 'CONFIRM_EMAIL',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESEND_ACCOUNT_CONFIRMATION_EMAIL = 'RESEND_ACCOUNT_CONFIRMATION_EMAIL',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n RESET_USER_SPORT_PREFERENCES = 'RESET_USER_SPORT_PREFERENCES',\n UPDATE_USER_ACCOUNT = 'UPDATE_USER_ACCOUNT',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n UPDATE_USER_SPORT_PREFERENCES = 'UPDATE_USER_SPORT_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n IS_SUCCESS = 'IS_SUCCESS',\n IS_REGISTRATION_SUCCESS = 'IS_REGISTRATION_SUCCESS',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_IS_SUCCESS = 'UPDATE_USER_IS_SUCCESS',\n UPDATE_IS_REGISTRATION_SUCCESS = 'UPDATE_IS_REGISTRATION_SUCCESS',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum OAuth2Actions {\n AUTHORIZE_CLIENT = 'AUTHORIZE_CLIENT',\n CREATE_CLIENT = 'CREATE_CLIENT',\n DELETE_CLIENT = 'DELETE_CLIENT',\n GET_CLIENTS = 'GET_CLIENTS',\n GET_CLIENT_BY_CLIENT_ID = 'GET_CLIENT_BY_CLIENT_ID',\n GET_CLIENT_BY_ID = 'GET_CLIENT_BY_ID',\n REVOKE_ALL_TOKENS = 'REVOKE_ALL_TOKENS',\n}\n\nexport enum OAuth2Getters {\n CLIENT = 'CLIENT',\n CLIENTS = 'CLIENTS',\n CLIENTS_PAGINATION = 'CLIENTS_PAGINATION',\n REVOCATION_SUCCESSFUL = 'REVOCATION_SUCCESSFUL',\n}\n\nexport enum OAuth2Mutations {\n EMPTY_CLIENT = 'EMPTY_CLIENT',\n SET_CLIENT = 'SET_CLIENT',\n SET_CLIENTS = 'SET_CLIENTS',\n SET_CLIENTS_PAGINATION = 'SET_CLIENTS_PAGINATION',\n SET_REVOCATION_SUCCESSFUL = 'SET_REVOCATION_SUCCESSFUL',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LANGUAGE = 'UPDATE_APPLICATION_LANGUAGE',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n DELETE_USER_ACCOUNT = 'DELETE_USER_ACCOUNT',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_IS_SUCCESS = 'USERS_IS_SUCCESS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n UPDATE_IS_SUCCESS = 'UPDATE_IS_SUCCESS',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n OAuth2Actions,\n OAuth2Getters,\n OAuth2Mutations,\n} from '@/store/modules/oauth2/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\nexport const OAUTH2_STORE = {\n ACTIONS: OAuth2Actions,\n GETTERS: OAuth2Getters,\n MUTATIONS: OAuth2Mutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","import axios from 'axios'\n\nimport { pendingRequests, removeRequestIfPending } from '@/api/pending'\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\napi.interceptors.request.use(\n (config) => {\n const controller = new AbortController()\n config.signal = controller.signal\n const requestKey = removeRequestIfPending(config)\n pendingRequests.set(requestKey, controller)\n return config\n },\n (error) => Promise.reject(error)\n)\n\napi.interceptors.response.use(\n (response) => {\n removeRequestIfPending(response.config)\n return response\n },\n (error) => {\n if (error.message !== 'canceled') {\n removeRequestIfPending(error.response.config)\n }\n return Promise.reject(error)\n }\n)\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload, IUserDeletionPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const deleteUserAccount = (\n context:\n | ActionContext\n | ActionContext,\n payload: IUserDeletionPayload\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n if (payload.fromAdmin) {\n router.push('/admin/users')\n } else {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n const data: Record = {}\n if (payload.admin !== undefined) {\n data.admin = payload.admin\n }\n if (payload.resetPassword) {\n data.reset_password = payload.resetPassword\n }\n if (payload.activate) {\n data.activate = payload.activate\n }\n if (payload.new_email !== undefined) {\n data.new_email = payload.new_email\n }\n authApi\n .patch(`users/${payload.username}`, data)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n if (payload.resetPassword || payload.new_email) {\n context.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n }\n if (payload.activate || payload.new_email) {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, {\n username: payload.username,\n fromAdmin: true,\n })\n },\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { deleteUserAccount } from '@/store/modules/users/actions'\nimport {\n ILoginOrRegisterData,\n IUserAccountPayload,\n IUserDeletionPayload,\n IUserAccountUpdatePayload,\n IUserEmailPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n IUserSportPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n // after logout in another tab\n if (\n !window.localStorage.authToken &&\n context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n removeAuthUserData(context)\n }\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/confirm', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL](\n context: ActionContext,\n payload: IUserAccountUpdatePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n api\n .post('/auth/email/update', { token: payload.token })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n if (payload.refreshUser) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => {\n return router.push('/profile/edit/account')\n })\n }\n router.push('/profile/edit/account')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n if (error.message !== 'canceled') {\n handleError(context, error)\n removeAuthUserData(context)\n }\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n if (data.actionType === 'login') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n router\n .push('/login')\n .then(() =>\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n true\n )\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/logout')\n .then((res) => {\n if (res.data.status === 'success') {\n removeAuthUserData(context)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_ACCOUNT](\n context: ActionContext,\n payload: IUserAccountPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n authApi\n .patch('auth/profile/edit/account', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context\n .dispatch(\n ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE,\n res.data.data.language\n )\n .then(() => router.push('/profile/preferences'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_SPORT_PREFERENCES](\n context: ActionContext,\n sportId: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/profile/reset/sports/${sportId}`)\n .then((res) => {\n if (res.status === 204) {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](\n context: ActionContext,\n payload: IUserSportPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/sports', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => {\n handleError(context, error)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n })\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n deleteUserAccount(context, payload)\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](\n context: ActionContext,\n payload: IUserEmailPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/account/resend-confirmation', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/account-confirmation/email-sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]: (\n state: IAuthUserState\n ) => {\n return state.isRegistrationSuccess\n },\n [AUTH_USER_STORE.GETTERS.IS_SUCCESS]: (state: IAuthUserState) => {\n return state.isSuccess\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IAuthUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](\n state: IAuthUserState,\n isRegistrationSuccess: boolean\n ) {\n state.isRegistrationSuccess = isRegistrationSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IAuthUserState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IAuthUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n isSuccess: false,\n isRegistrationSuccess: false,\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { OAUTH2_STORE, ROOT_STORE } from '@/store/constants'\nimport { IOAuth2Actions, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IOauth2ClientsPayload,\n IOAuth2ClientPayload,\n IOAuth2ClientAuthorizePayload,\n} from '@/types/oauth'\nimport { handleError } from '@/utils'\n\nconst get_client = (\n context: ActionContext,\n url: string\n) => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(url)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_CLIENT, res.data.data.client)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree & IOAuth2Actions = {\n [OAUTH2_STORE.ACTIONS.AUTHORIZE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientAuthorizePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n const form = new FormData()\n form.set('client_id', payload.client_id)\n form.set('response_type', payload.response_type)\n form.set('scope', payload.scope)\n form.set('confirm', 'true')\n if (payload.state) {\n form.set('state', payload.state)\n }\n if (payload.code_challenge) {\n form.set('code_challenge', payload.code_challenge)\n }\n if (payload.code_challenge_method) {\n form.set('code_challenge_method', payload.code_challenge_method)\n }\n\n authApi\n .post('oauth/authorize', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.status == 200 && res.data.redirect_url) {\n window.location.href = res.data.redirect_url\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.CREATE_CLIENT](\n context: ActionContext,\n payload: IOAuth2ClientPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('oauth/apps', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENT,\n res.data.data.client\n )\n router.push(`/profile/apps/${res.data.data.client.id}/created`)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.DELETE_CLIENT](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`oauth/apps/${id}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(OAUTH2_STORE.ACTIONS.GET_CLIENTS)\n .then(() => router.push('/profile/apps'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_CLIENT_ID](\n context: ActionContext,\n client_id: string\n ): void {\n get_client(context, `oauth/apps/${client_id}`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENT_BY_ID](\n context: ActionContext,\n id: number\n ): void {\n get_client(context, `oauth/apps/${id}/by_id`)\n },\n [OAUTH2_STORE.ACTIONS.GET_CLIENTS](\n context: ActionContext,\n payload: IOauth2ClientsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('oauth/apps', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS,\n res.data.data.clients\n )\n context.commit(\n OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [OAUTH2_STORE.ACTIONS.REVOKE_ALL_TOKENS](\n context: ActionContext,\n id: number\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, false)\n authApi\n .post(`oauth/apps/${id}/revoke`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL, true)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2Getters, IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IOAuth2Getters = {\n [OAUTH2_STORE.GETTERS.CLIENT]: (state: IOAuth2State) => state.client,\n [OAUTH2_STORE.GETTERS.CLIENTS]: (state: IOAuth2State) => state.clients,\n [OAUTH2_STORE.GETTERS.CLIENTS_PAGINATION]: (state: IOAuth2State) =>\n state.pagination,\n [OAUTH2_STORE.GETTERS.REVOCATION_SUCCESSFUL]: (state: IOAuth2State) =>\n state.revocationSuccessful,\n}\n","import { MutationTree } from 'vuex'\n\nimport { OAUTH2_STORE } from '@/store/constants'\nimport { IOAuth2State, TOAuth2Mutations } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const mutations: MutationTree & TOAuth2Mutations = {\n [OAUTH2_STORE.MUTATIONS.SET_CLIENT](\n state: IOAuth2State,\n client: IOAuth2Client\n ) {\n state.client = client\n },\n [OAUTH2_STORE.MUTATIONS.EMPTY_CLIENT](state: IOAuth2State) {\n state.client = {}\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS](\n state: IOAuth2State,\n clients: IOAuth2Client[]\n ) {\n state.clients = clients\n },\n [OAUTH2_STORE.MUTATIONS.SET_CLIENTS_PAGINATION](\n state: IOAuth2State,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [OAUTH2_STORE.MUTATIONS.SET_REVOCATION_SUCCESSFUL](\n state: IOAuth2State,\n revocationSuccessful: boolean\n ) {\n state.revocationSuccessful = revocationSuccessful\n },\n}\n","import { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IPagination } from '@/types/api'\nimport { IOAuth2Client } from '@/types/oauth'\n\nexport const oAuth2State: IOAuth2State = {\n client: {},\n clients: [],\n pagination: {},\n revocationSuccessful: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/oauth2/actions'\nimport { getters } from '@/store/modules/oauth2/getters'\nimport { mutations } from '@/store/modules/oauth2/mutations'\nimport { oAuth2State } from '@/store/modules/oauth2/state'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst oauth2: Module = {\n state: oAuth2State,\n actions,\n getters,\n mutations,\n}\n\nexport default oauth2\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_LANGUAGE](\n context: ActionContext,\n language: string\n ): void {\n document.querySelector('html')?.setAttribute('lang', language)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, language)\n locale.value = language\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string | string[]\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {\n statistics: {\n sports: 0,\n uploads_dir_size: 0,\n users: 0,\n workouts: 0,\n },\n },\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { AUTH_USER_STORE, ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_IS_SUCCESS]: (state: IUsersState) => {\n return state.isSuccess\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS](\n state: IUsersState,\n isSuccess: boolean\n ) {\n state.isSuccess = isSuccess\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n isSuccess: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const notes = payload.notes.replace(/\"/g, '\\\\\"')\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport oAuthModule from '@/store/modules/oauth2'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n oAuthModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n if (typeof locationQuery.q === 'string') {\n query.q = locationQuery.q\n } else {\n delete query.q\n }\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nimport createI18n from '@/i18n'\nimport { localeFromLanguage } from '@/utils/locales'\n\nconst { locale } = createI18n.global\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n dateFormat = getDateFormat(dateFormat, locale.value)\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat, {\n locale: localeFromLanguage[locale.value],\n }),\n workout_time: format(dateTime, timeFormat),\n }\n}\n\nconst availableDateFormats = [\n 'MM/dd/yyyy',\n 'dd/MM/yyyy',\n 'yyyy-MM-dd',\n 'date_string',\n]\nconst dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n // nb: 'do MMM yyyy',\n nl: 'd MMM yyyy',\n}\n\nexport const getDateFormat = (dateFormat: string, language: string): string => {\n return dateFormat === 'date_string' ? dateStringFormats[language] : dateFormat\n}\n\nexport const formatDate = (\n dateString: string,\n timezone: string,\n dateFormat: string,\n withTime = true,\n language: string | null = null\n): string => {\n if (!language) {\n language = locale.value\n }\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${withTime ? ' HH:mm' : ''}`,\n { locale: localeFromLanguage[language] }\n )\n}\n\nexport const availableDateFormatOptions = (\n inputDate: string,\n timezone: string,\n language: string | null = null\n) => {\n const l: string = language ? language : locale.value\n const options: Record[] = []\n availableDateFormats.map((df) => {\n const dateFormat = getDateFormat(df, l)\n options.push({\n label: `${dateFormat} - ${formatDate(\n inputDate,\n timezone,\n dateFormat,\n false,\n l\n )}`,\n value: df,\n })\n })\n return options\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IOAuth2State } from '@/store/modules/oauth2/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IApiErrorMessage } from '@/types/api'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n // if request is cancelled, no error to display\n if (error && error.message === 'canceled') {\n return\n }\n\n const errorInfo: IApiErrorMessage | null =\n error?.response && error.response.data ? error.response.data : null\n\n // if stored token is blacklisted, disconnect user\n if (error?.response?.status === 401 && errorInfo?.error === 'invalid_token') {\n localStorage.removeItem('authToken')\n context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n return\n }\n\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : errorInfo?.message\n ? errorInfo.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, nl } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n de: de,\n en: enUS,\n fr: fr,\n // nb: nb, // disabled for now\n nl: nl,\n}\n\nexport const languageLabels: Record = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Français',\n // nb: 'Norsk bokmål', // disabled for now\n nl: 'Nederlands',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","import { ISport, ITranslatedSport, TActiveStatus } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n 'Cycling (Virtual)': '#64a360',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Snowshoes: '#5780a8',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map(\n (sport) =>\n (colors[sport.id] = sport.color ? sport.color : sportColors[sport.label])\n )\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n activeStatus: TActiveStatus = 'all',\n sportsToInclude: number[] = []\n): ITranslatedSport[] =>\n sports\n .filter((sport) =>\n activeStatus === 'all'\n ? true\n : sportsToInclude.includes(sport.id) || sport[activeStatus]\n )\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n\nexport const getSportColor = (\n workout: IWorkout,\n sports: ISport[]\n): string | null => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.color)[0]\n}\n","import {\n addMonths,\n addWeeks,\n addYears,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\n\nimport createI18n from '@/i18n'\nimport { IChartDataset } from '@/types/chart'\nimport { ISport } from '@/types/sports'\nimport {\n IStatisticsChartData,\n IStatisticsDateParams,\n TStatisticsDatasetKeys,\n TStatisticsDatasets,\n TStatisticsFromApi,\n} from '@/types/statistics'\nimport { incrementDate, getStartDate, getDateFormat } from '@/utils/dates'\nimport { localeFromLanguage } from '@/utils/locales'\nimport { sportColors } from '@/utils/sports'\nimport { convertStatsDistance } from '@/utils/units'\n\nconst { locale } = createI18n.global\n\nconst dateFormats: Record> = {\n week: {\n api: 'yyyy-MM-dd',\n chart: 'MM/dd/yyyy',\n },\n month: {\n api: 'yyyy-MM',\n chart: 'MM/yyyy',\n },\n year: {\n api: 'yyyy',\n chart: 'yyyy',\n },\n}\n\nexport const datasetKeys: TStatisticsDatasetKeys[] = [\n 'average_speed',\n 'nb_workouts',\n 'total_duration',\n 'total_distance',\n 'total_ascent',\n 'total_descent',\n]\n\nexport const getDateKeys = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean\n): Date[] => {\n const days = []\n for (\n let day = getStartDate(params.duration, params.start, weekStartingMonday);\n day <= params.end;\n day = incrementDate(params.duration, day)\n ) {\n days.push(day)\n }\n return days\n}\n\nconst getStatisticsChartDataset = (\n sportLabel: string,\n color: string,\n isLineChart = false\n): IChartDataset => {\n const dataset: IChartDataset = {\n label: sportLabel,\n backgroundColor: [color],\n data: [],\n }\n if (isLineChart) {\n dataset.type = 'line'\n dataset.borderColor = [color]\n dataset.spanGaps = true\n }\n return dataset\n}\n\nexport const getDatasets = (displayedSports: ISport[]): TStatisticsDatasets => {\n const datasets: TStatisticsDatasets = {\n average_speed: [],\n nb_workouts: [],\n total_distance: [],\n total_duration: [],\n total_ascent: [],\n total_descent: [],\n }\n displayedSports.map((sport) => {\n const color = sport.color ? sport.color : sportColors[sport.label]\n datasets.average_speed.push(\n getStatisticsChartDataset(sport.label, color, true)\n )\n datasets.nb_workouts.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_distance.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_duration.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_ascent.push(getStatisticsChartDataset(sport.label, color))\n datasets.total_descent.push(getStatisticsChartDataset(sport.label, color))\n })\n return datasets\n}\n\nexport const convertStatsValue = (\n datasetKey: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean\n): number => {\n switch (datasetKey) {\n case 'average_speed':\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return convertStatsDistance(\n ['average_speed', 'total_distance'].includes(datasetKey) ? 'km' : 'm',\n value,\n useImperialUnits\n )\n default:\n case 'nb_workouts':\n case 'total_duration':\n return value\n }\n}\n\nexport const formatStats = (\n params: IStatisticsDateParams,\n weekStartingMonday: boolean,\n sports: ISport[],\n displayedSportsId: number[],\n apiStats: TStatisticsFromApi,\n useImperialUnits: boolean,\n userDateFormat: string\n): IStatisticsChartData => {\n const dayKeys = getDateKeys(params, weekStartingMonday)\n const dateFormat = dateFormats[params.duration]\n const displayedSports = sports.filter((sport) =>\n displayedSportsId.includes(sport.id)\n )\n const labels: string[] = []\n const datasets = getDatasets(displayedSports)\n const sportsId: Record = {}\n displayedSports.map(\n (displayedSport) => (sportsId[displayedSport.label] = displayedSport.id)\n )\n\n dayKeys.map((key) => {\n const date: string = format(key, dateFormat.api)\n const label: string = format(\n key,\n params.duration === 'week'\n ? getDateFormat(userDateFormat, locale.value)\n : dateFormat.chart,\n { locale: localeFromLanguage[locale.value] }\n )\n labels.push(label)\n datasetKeys.map((datasetKey) => {\n datasets[datasetKey].map((dataset) => {\n dataset.data.push(\n date in apiStats && sportsId[dataset.label] in apiStats[date]\n ? convertStatsValue(\n datasetKey,\n apiStats[date][sportsId[dataset.label]][datasetKey],\n useImperialUnits\n )\n : datasetKey === 'average_speed'\n ? null\n : 0\n )\n })\n })\n })\n return {\n labels,\n datasets,\n }\n}\n\nexport const getStatsDateParams = (\n date: Date,\n timeFrame: string,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const weekStartsOn = weekStartingMonday ? 1 : 0\n const start =\n timeFrame === 'year'\n ? startOfYear(subYears(date, 9))\n : timeFrame === 'week'\n ? startOfWeek(subMonths(date, 2), { weekStartsOn })\n : startOfMonth(subMonths(date, 11)) // month\n const end =\n timeFrame === 'year'\n ? endOfYear(date)\n : timeFrame === 'week'\n ? endOfWeek(date, { weekStartsOn })\n : endOfMonth(date) // month\n return {\n duration: timeFrame,\n end,\n start,\n }\n}\n\nexport const updateChartParams = (\n chartParams: IStatisticsDateParams,\n backward: boolean,\n weekStartingMonday: boolean\n): IStatisticsDateParams => {\n const { duration, start, end } = chartParams\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n duration,\n end:\n duration === 'year'\n ? endOfYear(backward ? subYears(end, 1) : addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(backward ? subWeeks(end, 1) : addWeeks(end, 1), {\n weekStartsOn,\n })\n : endOfMonth(backward ? subMonths(end, 1) : addMonths(end, 1)),\n start:\n duration === 'year'\n ? startOfYear(backward ? subYears(start, 1) : addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(backward ? subWeeks(start, 1) : addWeeks(start, 1), {\n weekStartsOn,\n })\n : startOfMonth(backward ? subMonths(start, 1) : addMonths(start, 1)),\n }\n}\n","import { IUnit, TFactor, TUnit } from '@/types/units'\n\nexport const units: Record = {\n ft: {\n unit: 'ft',\n system: 'imperial',\n multiplier: 1,\n defaultTarget: 'm',\n },\n mi: {\n unit: 'mi',\n system: 'imperial',\n multiplier: 5280,\n defaultTarget: 'km',\n },\n m: {\n unit: 'm',\n system: 'metric',\n multiplier: 1,\n defaultTarget: 'ft',\n },\n km: {\n unit: 'm',\n system: 'metric',\n multiplier: 1000,\n defaultTarget: 'mi',\n },\n}\n\nconst factors: TFactor = {\n metric: {\n imperial: 3.280839895,\n metric: 1,\n },\n imperial: {\n metric: 1 / 3.280839895,\n imperial: 1,\n },\n}\n\nexport const convertDistance = (\n distance: number,\n from: TUnit,\n to: TUnit,\n digits: number | null = 3\n): number => {\n const unitFrom = units[from]\n const unitTo = units[to]\n const convertedDistance =\n (distance * unitFrom.multiplier * factors[unitFrom.system][unitTo.system]) /\n unitTo.multiplier\n if (digits !== null) {\n return parseFloat(convertedDistance.toFixed(digits))\n }\n return convertedDistance\n}\n\nexport const convertStatsDistance = (\n unitFrom: TUnit,\n value: number,\n useImperialUnits: boolean\n): number => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n return useImperialUnits ? convertDistance(value, unitFrom, unitTo, 2) : value\n}\n","import {\n IWorkout,\n IWorkoutApiChartData,\n IWorkoutChartData,\n TCoordinates,\n TWorkoutDatasets,\n} from '@/types/workouts'\nimport { convertStatsDistance } from '@/utils/units'\n\nexport const getDatasets = (\n chartData: IWorkoutApiChartData[],\n t: CallableFunction,\n useImperialUnits: boolean\n): IWorkoutChartData => {\n const datasets: TWorkoutDatasets = {\n speed: {\n label: t('workouts.SPEED'),\n backgroundColor: ['#FFFFFF'],\n borderColor: ['#8884d8'],\n borderWidth: 2,\n data: [],\n yAxisID: 'ySpeed',\n },\n elevation: {\n label: t('workouts.ELEVATION'),\n backgroundColor: ['#e5e5e5'],\n borderColor: ['#cccccc'],\n borderWidth: 1,\n fill: true,\n data: [],\n yAxisID: 'yElevation',\n },\n }\n const distance_labels: unknown[] = []\n const duration_labels: unknown[] = []\n const coordinates: TCoordinates[] = []\n\n chartData.map((data) => {\n distance_labels.push(data.distance)\n duration_labels.push(data.duration)\n datasets.speed.data.push(\n convertStatsDistance('km', data.speed, useImperialUnits)\n )\n datasets.elevation.data.push(\n convertStatsDistance('m', data.elevation, useImperialUnits)\n )\n coordinates.push({ latitude: data.latitude, longitude: data.longitude })\n })\n\n return { distance_labels, duration_labels, datasets, coordinates }\n}\n\nexport const getDonutDatasets = (\n workouts: IWorkout[]\n): Record> => {\n const total = workouts.length\n if (total === 0) {\n return {}\n }\n\n const datasets: Record> = {}\n workouts.map((workout) => {\n if (!datasets[workout.sport_id]) {\n datasets[workout.sport_id] = {\n count: 0,\n percentage: 0,\n }\n }\n datasets[workout.sport_id].count += 1\n datasets[workout.sport_id].percentage =\n datasets[workout.sport_id].count / total\n })\n\n return datasets\n}\n\nexport const defaultOrder = {\n order: 'desc',\n order_by: 'workout_date',\n}\n","\n\n\n","import { render } from \"./Card.vue?vue&type=template&id=ad374c24\"\nconst script = {}\n\nimport \"./Card.vue?vue&type=style&index=0&id=ad374c24&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72463173\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nimport { toRefs } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n interface Props {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilterSelects',\n props: {\n order_by: null,\n query: null,\n sort: null,\n message: null\n },\n emits: ['updateSelect'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n order_by: string[]\n query: TPaginationPayload\n sort: string[]\n message: string\n };\n\n \n\n \n\n const { order_by, query, sort, message } = toRefs(props)\n const perPage = [10, 25, 50, 100]\n\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _unref(query).order_by,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(order_by), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_unref(message)}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _unref(query).order,\n onChange: onSelectUpdate\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sort), (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _unref(query).per_page,\n onChange: onSelectUpdate\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(perPage, (nb) => {\n return _createElementVNode(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7)\n }), 64))\n ], 40, _hoisted_6)\n ])\n ]))\n}\n}\n\n})","import script from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=72463173&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-72463173\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./ErrorImg.vue?vue&type=template&id=e620aed4\"\nimport script from \"./ErrorImg.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorImg.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b60bfa80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"error\" }\nconst _hoisted_2 = { class: \"error-content\" }\n\nimport { toRefs, withDefaults } from 'vue'\n\n interface Props {\n title: string\n message: string\n buttonText: string\n path?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Error',\n props: {\n title: null,\n message: null,\n buttonText: null,\n path: { default: '/' }\n },\n setup(__props: any) {\n\nconst props = __props as { title: string, message: string, buttonText: string, path: string };\n\n \n const { buttonText, title, message, path } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(title)), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_unref(message)), 1),\n (_unref(buttonText))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push(_unref(path)))),\n class: \"upper\"\n }, _toDisplayString(_unref(buttonText)), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Error.vue?vue&type=style&index=0&id=b60bfa80&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b60bfa80\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { Ref, onMounted, ref, toRefs, withDefaults, onUnmounted } from 'vue'\n\n import Error from '@/components/Common/Error.vue'\n interface Props {\n target?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NotFound',\n props: {\n target: { default: 'PAGE' }\n },\n setup(__props: any) {\n\nconst props = __props as { target: string };\n\n \n const { target } = toRefs(props)\n const timer = ref()\n const errorDisplayed: Ref = ref(false)\n\n onMounted(() => displayError())\n\n function displayError() {\n timer.value = setTimeout(() => {\n errorDisplayed.value = true\n }, 500)\n }\n\n onUnmounted(() => {\n if (timer.value) {\n clearTimeout(timer.value)\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (errorDisplayed.value)\n ? (_openBlock(), _createBlock(Error, {\n key: 0,\n title: \"404\",\n message: _ctx.$t(`error.NOT_FOUND.${_unref(target)}`),\n \"button-text\": _ctx.$t('common.HOME')\n }, null, 8, [\"message\", \"button-text\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3a9a4a65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { toRefs } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IOauth2ClientsPayload } from '@/types/oauth'\n import { TWorkoutsPayload } from '@/types/workouts'\n import { rangePagination } from '@/utils/api'\n\n interface Props {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Pagination',\n props: {\n pagination: null,\n path: null,\n query: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n pagination: IPagination\n path: string\n query: TWorkoutsPayload | TPaginationPayload | IOauth2ClientsPayload\n };\n\n \n\n const { pagination, path, query } = toRefs(props)\n\n function getQuery(\n page: number,\n cursor?: number\n ): TPaginationPayload | IOauth2ClientsPayload {\n const newQuery = Object.assign({}, query.value)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_unref(pagination).has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, -1) },\n disabled: !_unref(pagination).has_prev\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')) + \" \", 1),\n _hoisted_3\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(rangePagination)(_unref(pagination).pages, _unref(pagination).page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _unref(pagination).page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_unref(pagination).has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _unref(path), query: getQuery(_unref(pagination).page, 1) },\n disabled: !_unref(pagination).has_next\n }, {\n default: _withCtx(({ navigate }) => [\n _renderSlot(_ctx.$slots, \"default\", {\n onClick: ($event: any) => (_unref(pagination).has_next ? navigate : null)\n }, () => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ])\n ]),\n _: 3\n }, 8, [\"to\", \"disabled\"])\n ], 2)\n ])\n ]))\n}\n}\n\n})","import script from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=3a9a4a65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3a9a4a65\"]])\n\nexport default __exports__","import { zxcvbnOptions } from '@zxcvbn-ts/core'\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnEnPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-en'\n )\n const zxcvbnFrPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-fr'\n )\n const zxcvbnDePackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-de'\n )\n const zxcvbnLangPackages: Record = {\n de: zxcvbnDePackage,\n en: zxcvbnEnPackage,\n fr: zxcvbnFrPackage,\n // no package available for norwegian bokmal, fallback on english\n nb: zxcvbnEnPackage,\n // no package available for dutch (Nederlands), fallback on english\n nl: zxcvbnEnPackage,\n }\n const zxcvbnPackage = zxcvbnLangPackages[language]\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnPackage.default.dictionary,\n },\n }\n zxcvbnOptions.setOptions(options)\n}\n\nexport const getPasswordStrength = (strength: number): string => {\n switch (strength) {\n case 2:\n return 'AVERAGE'\n case 3:\n return 'GOOD'\n case 4:\n return 'STRONG'\n default:\n return 'WEAK'\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74e71df5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-strength\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"password-strength-details\"\n}\nconst _hoisted_4 = { class: \"password-strength-value\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"info-box\"\n}\nconst _hoisted_6 = { class: \"password-feedback\" }\n\nimport { zxcvbn } from '@zxcvbn-ts/core'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n onBeforeMount,\n toRefs,\n watch,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n import { getPasswordStrength, setZxcvbnOptions } from '@/utils/password'\n\n interface Props {\n password: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordStength',\n props: {\n password: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n password: string\n };\n\n \n const { password } = toRefs(props)\n\n const store = useStore()\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const passwordScore: Ref = ref(0)\n const passwordStrength: Ref = ref('')\n const passwordSuggestions: Ref = ref([])\n const backgroundSize = ref('0% 100%')\n\n onBeforeMount(async () => await setZxcvbnOptions(language.value))\n\n function calculatePasswordStrength(password: string) {\n const zxcvbnResult = zxcvbn(password)\n passwordScore.value = zxcvbnResult.score\n passwordStrength.value = getPasswordStrength(passwordScore.value)\n passwordSuggestions.value = zxcvbnResult.feedback.suggestions\n backgroundSize.value = (passwordScore.value * 100) / 4 + '% 100%'\n }\n\n watch(\n () => language.value,\n async (newLanguageValue) => {\n await setZxcvbnOptions(newLanguageValue)\n }\n )\n watch(\n () => password.value,\n async (newPassword) => {\n if (isSuccess.value) {\n passwordStrength.value = ''\n } else {\n calculatePasswordStrength(newPassword)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: _normalizeClass([\"password-slider\", `strength-${passwordScore.value}`]),\n style: _normalizeStyle({ backgroundSize: backgroundSize.value }),\n type: \"range\",\n value: passwordScore.value,\n min: \"0\",\n max: \"4\",\n step: \"1\"\n }, null, 14, _hoisted_2),\n (passwordStrength.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('user.PASSWORD_STRENGTH.LABEL')) + \": \" + _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.${passwordStrength.value}`)), 1),\n (passwordSuggestions.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"ul\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(passwordSuggestions.value, (suggestion) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: suggestion }, _toDisplayString(_ctx.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${suggestion}`)), 1))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordStength.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordStength.vue?vue&type=style&index=0&id=74e71df5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-74e71df5\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, vModelDynamic as _vModelDynamic, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a126514\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"password-input\" }\nconst _hoisted_2 = [\"id\", \"disabled\", \"placeholder\", \"required\", \"type\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"form-info\"\n}\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { Ref, ref, toRefs, watch, withDefaults } from 'vue'\n\n import PasswordStrength from '@/components/Common/PasswordStength.vue'\n\n interface Props {\n checkStrength?: boolean\n disabled?: boolean\n id?: string\n password?: string\n placeholder?: string\n required?: boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordInput',\n props: {\n checkStrength: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n id: { default: 'password' },\n password: { default: '' },\n placeholder: null,\n required: { type: Boolean, default: false }\n },\n emits: ['updatePassword', 'passwordError'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { checkStrength: boolean, disabled: boolean, id: string, password: string, placeholder?: string, required: boolean };\n\n \n const { checkStrength, disabled, id, password, placeholder, required } =\n toRefs(props)\n\n const showPassword: Ref = ref(false)\n const passwordValue: Ref = ref('')\n\n \n\n function togglePassword() {\n showPassword.value = !showPassword.value\n }\n function updatePassword(event: Event & { target: HTMLInputElement }) {\n emit('updatePassword', event.target.value)\n }\n function invalidPassword() {\n emit('passwordError')\n }\n\n watch(\n () => password.value,\n (newPassword) => {\n if (newPassword === '') {\n passwordValue.value = ''\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"input\", {\n id: _unref(id),\n disabled: _unref(disabled),\n placeholder: _unref(placeholder),\n required: _unref(required),\n type: showPassword.value ? 'text' : 'password',\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((passwordValue).value = $event)),\n minlength: \"8\",\n onInput: updatePassword,\n onInvalid: invalidPassword\n }, null, 40, _hoisted_2), [\n [_vModelDynamic, passwordValue.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"show-password\",\n onClick: togglePassword\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.${showPassword.value ? 'HIDE' : 'SHOW'}_PASSWORD`)) + \" \", 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-eye${showPassword.value ? '-slash' : ''}`]),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n (_unref(checkStrength))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.PASSWORD_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(checkStrength))\n ? (_openBlock(), _createBlock(PasswordStrength, {\n key: 1,\n password: passwordValue.value\n }, null, 8, [\"password\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordInput.vue?vue&type=style&index=0&id=5a126514&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5a126514\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"map-attribution\" }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"map-attribution-text\" }, \"©\"),\n /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"map-attribution-text\",\n href: \"https://www.openstreetmap.org/copyright\",\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, \" OpenStreetMap \")\n], -1)\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { IWorkout } from '@/types/workouts'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workout: IWorkout\n displayHover?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticMap',\n props: {\n workout: null,\n displayHover: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { workout: IWorkout, displayHover: boolean };\n\n \n const { displayHover } = toRefs(props)\n const imageUrl = `${getApiUrl()}workouts/map/${props.workout.map}`\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"static-map\", { 'display-hover': _unref(displayHover) }])\n }, [\n (_unref(displayHover))\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: imageUrl,\n alt: \"\"\n }))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"bg-map-image\",\n style: _normalizeStyle({\n backgroundImage: `url(${imageUrl})`,\n })\n }, null, 4)),\n _hoisted_1\n ], 2))\n}\n}\n\n})","import script from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StaticMap.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StaticMap.vue?vue&type=style&index=0&id=6b7e4baf&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d5e9b348\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"start-chart\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"chart-radio\" }\nconst _hoisted_5 = [\"checked\"]\nconst _hoisted_6 = [\"checked\"]\nconst _hoisted_7 = [\"checked\"]\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = [\"checked\"]\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = [\"checked\"]\nconst _hoisted_12 = { key: 2 }\nconst _hoisted_13 = [\"checked\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.hideChartIfNoData && _ctx.emptyStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t('workouts.NO_WORKOUTS')), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_distance\",\n checked: _ctx.displayedData === 'total_distance',\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_5),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_duration\",\n checked: _ctx.displayedData === 'total_duration',\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_6),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"nb_workouts\",\n checked: _ctx.displayedData === 'nb_workouts',\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_7),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', 2)), 1)\n ]),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_8, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"average_speed\",\n checked: _ctx.displayedData === 'average_speed',\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_ascent\",\n checked: _ctx.displayedData === 'total_ascent',\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.fullStats)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_12, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"total_descent\",\n checked: _ctx.displayedData === 'total_descent',\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayData && _ctx.updateDisplayData(...args)))\n }, null, 8, _hoisted_13),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.labels.length > 0)\n ? (_openBlock(), _createBlock(_component_Chart, {\n key: 0,\n datasets: _ctx.datasets,\n labels: _ctx.labels,\n displayedData: _ctx.displayedData,\n displayedSportIds: _ctx.displayedSportIds,\n fullStats: _ctx.fullStats,\n useImperialUnits: _ctx.user.imperial_units\n }, null, 8, [\"datasets\", \"labels\", \"displayedData\", \"displayedSportIds\", \"fullStats\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n}","import { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"chart\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BarChart = _resolveComponent(\"BarChart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_BarChart, _mergeProps(_ctx.barChartProps, { class: \"bar-chart\" }), null, 16)\n ]))\n}","export const formatDuration = (\n totalSeconds: number,\n formatWithUnits = false\n): string => {\n let days = '0'\n if (formatWithUnits) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithUnits) {\n return `${days === '0' ? '' : `${days}d `}${\n hours === '00' ? '' : `${hours}h `\n }${minutes}m ${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n","import { TStatisticsDatasetKeys } from '@/types/statistics'\nimport { formatDuration } from '@/utils/duration'\nimport { units } from '@/utils/units'\n\nexport const formatTooltipValue = (\n displayedData: TStatisticsDatasetKeys,\n value: number,\n useImperialUnits: boolean,\n formatWithUnits = true,\n unitFrom = 'km'\n): string => {\n const unitTo = useImperialUnits ? units[unitFrom].defaultTarget : unitFrom\n switch (displayedData) {\n case 'average_speed':\n return `${value.toFixed(2)} ${unitTo}/h`\n case 'total_duration':\n return formatDuration(value, formatWithUnits)\n case 'total_distance':\n case 'total_ascent':\n case 'total_descent':\n return `${value.toFixed(2)} ${unitTo}`\n default:\n return value.toString()\n }\n}\n","\n import { ChartOptions, LayoutItem } from 'chart.js'\n import { PropType, computed, defineComponent } from 'vue'\n import { BarChart, useBarChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IChartDataset } from '@/types/chart'\n import { TStatisticsDatasetKeys } from '@/types/statistics'\n import { formatTooltipValue } from '@/utils/tooltip'\n\n export default defineComponent({\n name: 'Chart',\n components: {\n BarChart,\n },\n props: {\n datasets: {\n type: Object as PropType,\n required: true,\n },\n labels: {\n type: Object as PropType,\n required: true,\n },\n displayedData: {\n type: String as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n required: true,\n },\n fullStats: {\n type: Boolean,\n required: true,\n },\n useImperialUnits: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const { t } = useI18n()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getNumber(value: any): number {\n return isNaN(value) ? 0 : +value\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getSum(total: any, value: any): number {\n return getNumber(total) + getNumber(value)\n }\n function getUnit(displayedData: string) {\n return ['total_ascent', 'total_descent'].includes(displayedData)\n ? 'm'\n : 'km'\n }\n const chartData = computed(() => ({\n labels: props.labels,\n // workaround to avoid dataset modification\n datasets: JSON.parse(JSON.stringify(props.datasets)),\n }))\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: props.fullStats ? 40 : 22,\n },\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n drawOnChartArea: false,\n },\n },\n y: {\n stacked: props.displayedData !== 'average_speed',\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n maxTicksLimit: 6,\n callback: function (value) {\n return formatTooltipValue(\n props.displayedData,\n +value,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n },\n },\n afterFit: function (scale: LayoutItem) {\n scale.width = props.fullStats ? 90 : 60\n },\n },\n },\n plugins: {\n datalabels: {\n anchor: 'end',\n align: 'end',\n color: function (context) {\n return props.displayedData === 'average_speed' &&\n context.dataset.backgroundColor\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n context.dataset.backgroundColor[0]\n : '#666666'\n },\n rotation: function (context) {\n return props.fullStats && context.chart.chartArea.width < 580\n ? 310\n : 0\n },\n display: function (context) {\n return props.fullStats && context.chart.chartArea.width < 300\n ? false\n : props.displayedData === 'average_speed'\n ? props.displayedSportIds.length == 1\n ? 'auto'\n : false\n : true\n },\n formatter: function (value, context) {\n if (props.displayedData === 'average_speed') {\n return formatTooltipValue(\n props.displayedData,\n value,\n props.useImperialUnits,\n false\n )\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const total: number = context.chart.data.datasets\n .map((d) => d.data[context.dataIndex])\n .reduce((total, value) => getSum(total, value), 0)\n return context.datasetIndex ===\n props.displayedSportIds.length - 1 && total > 0\n ? formatTooltipValue(\n props.displayedData,\n total,\n props.useImperialUnits,\n false,\n getUnit(props.displayedData)\n )\n : null\n }\n },\n },\n legend: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: true,\n mode: 'index',\n position:\n props.displayedData === 'average_speed' ? 'nearest' : 'average',\n },\n filter: function (tooltipItem) {\n return tooltipItem.formattedValue !== '0'\n },\n callbacks: {\n label: function (context) {\n let label = t(`sports.${context.dataset.label}.LABEL`) || ''\n if (label) {\n label += ': '\n }\n if (context.parsed.y !== null) {\n label += formatTooltipValue(\n props.displayedData,\n context.parsed.y,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n }\n return label\n },\n footer: function (tooltipItems) {\n if (props.displayedData === 'average_speed') {\n return ''\n }\n let sum = 0\n tooltipItems.map((tooltipItem) => {\n sum += tooltipItem.parsed.y\n })\n return (\n `${t('common.TOTAL')}: ` +\n formatTooltipValue(\n props.displayedData,\n sum,\n props.useImperialUnits,\n true,\n getUnit(props.displayedData)\n )\n )\n },\n },\n },\n },\n }))\n const { barChartProps } = useBarChart({\n chartData,\n options,\n })\n return { barChartProps }\n },\n })\n","import { render } from \"./Chart.vue?vue&type=template&id=1d43a4a8&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n } from 'vue'\n\n import Chart from '@/components/Common/StatsChart/Chart.vue'\n import { STATS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import {\n IStatisticsChartData,\n TStatisticsDatasetKeys,\n IStatisticsDateParams,\n TStatisticsFromApi,\n IStatisticsParams,\n } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatStats } from '@/utils/statistics'\n\n export default defineComponent({\n name: 'UserMonthStats',\n components: {\n Chart,\n },\n props: {\n sports: {\n type: Object as PropType,\n required: true,\n },\n user: {\n type: Object as PropType,\n required: true,\n },\n chartParams: {\n type: Object as PropType,\n required: true,\n },\n displayedSportIds: {\n type: Array as PropType,\n default: () => [],\n },\n fullStats: {\n type: Boolean,\n default: false,\n },\n hideChartIfNoData: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n const displayedData: Ref = ref('total_distance')\n const statistics: ComputedRef = computed(\n () => store.getters[STATS_STORE.GETTERS.USER_STATS]\n )\n const formattedStats: ComputedRef = computed(() =>\n formatStats(\n props.chartParams,\n props.user.weekm,\n props.sports,\n props.displayedSportIds,\n statistics.value,\n props.user.imperial_units,\n props.user.date_format\n )\n )\n\n onBeforeMount(() =>\n getStatistics(getApiParams(props.chartParams, props.user))\n )\n\n function getStatistics(apiParams: IStatisticsParams) {\n store.dispatch(STATS_STORE.ACTIONS.GET_USER_STATS, {\n username: props.user.username,\n filterType: 'by_time',\n params: apiParams,\n })\n }\n function updateDisplayData(\n event: Event & {\n target: HTMLInputElement & { name: TStatisticsDatasetKeys }\n }\n ) {\n displayedData.value = event.target.name\n }\n function getApiParams(\n chartParams: IStatisticsDateParams,\n user: IAuthUserProfile\n ): IStatisticsParams {\n return {\n from: format(chartParams.start, 'yyyy-MM-dd'),\n to: format(chartParams.end, 'yyyy-MM-dd'),\n time:\n chartParams.duration === 'week'\n ? `week${user.weekm ? 'm' : ''}`\n : chartParams.duration,\n }\n }\n\n watch(\n () => props.chartParams,\n async (newParams) => {\n getStatistics(getApiParams(newParams, props.user))\n }\n )\n\n return {\n datasets: computed(\n () => formattedStats.value.datasets[displayedData.value]\n ),\n labels: computed(() => formattedStats.value.labels),\n emptyStats: computed(() => Object.keys(statistics.value).length === 0),\n displayedData,\n updateDisplayData,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=d5e9b348&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d5e9b348&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5e9b348\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20291951\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-label\" }\nconst _hoisted_10 = { class: \"user-stat hide-small\" }\nconst _hoisted_11 = { class: \"stat-number\" }\nconst _hoisted_12 = { class: \"stat-label\" }\n\nimport { computed, ComputedRef, toRefs } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserHeader',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const { user } = toRefs(props)\n\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserPicture, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(user).username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(user).nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(user).nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Distance, {\n distance: _unref(user).total_distance,\n unitFrom: \"km\",\n digits: 0,\n displayUnit: false,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(authUser).imperial_units ? 'miles' : 'km'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_unref(user).nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.SPORT', _unref(user).nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=20291951&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-20291951\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-217519af\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = {\n key: 4,\n class: \"email-form form-box\"\n}\nconst _hoisted_4 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_6 = { class: \"form-buttons\" }\nconst _hoisted_7 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { key: 5 }\nconst _hoisted_10 = { class: \"user-bio\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"profile-buttons\"\n}\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"profile-buttons\"\n}\n\nimport { format } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n withDefaults,\n watch,\n onUnmounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile, IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate, getDateFormat } from '@/utils/dates'\n import { localeFromLanguage } from '@/utils/locales'\n\n interface Props {\n user: IUserProfile\n fromAdmin?: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserInfos',\n props: {\n user: null,\n fromAdmin: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props as { user: IUserProfile, fromAdmin: boolean };\n\n \n\n const store = useStore()\n\n const { user, fromAdmin } = toRefs(props)\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? formatDate(\n props.user.created_at,\n authUser.value.timezone,\n authUser.value.date_format\n )\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(\n new Date(props.user.birth_date),\n `${getDateFormat(authUser.value.date_format, language.value)}`,\n { locale: localeFromLanguage[language.value] }\n )\n : ''\n )\n const isSuccess = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_IS_SUCCESS]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const displayModal: Ref = ref('')\n const formErrors = ref(false)\n const displayUserEmailForm: Ref = ref(false)\n const newUserEmail: Ref = ref('')\n const currentAction: Ref = ref('')\n\n function updateDisplayModal(value: string) {\n displayModal.value = value\n if (value !== '') {\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n }\n }\n function deleteUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.DELETE_USER_ACCOUNT, { username })\n }\n function resetUserPassword(username: string) {\n currentAction.value = 'password-reset'\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n resetPassword: true,\n })\n }\n function confirmUserAccount(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n activate: true,\n })\n }\n function displayEmailForm() {\n resetErrorsAndSuccess()\n newUserEmail.value = user.value.email_to_confirm\n ? user.value.email_to_confirm\n : ''\n displayUserEmailForm.value = true\n currentAction.value = 'email-update'\n }\n function hideEmailForm() {\n newUserEmail.value = ''\n displayUserEmailForm.value = false\n }\n function updateUserEmail(username: string) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n new_email: newUserEmail.value,\n })\n }\n function resetErrorsAndSuccess() {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n currentAction.value = ''\n }\n\n onUnmounted(() => resetErrorsAndSuccess())\n\n watch(\n () => isSuccess.value,\n (newIsSuccess) => {\n if (newIsSuccess) {\n updateDisplayModal('')\n hideEmailForm()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \n displayModal.value === 'delete'\n ? 'admin.CONFIRM_USER_ACCOUNT_DELETION'\n : 'admin.CONFIRM_USER_PASSWORD_RESET'\n ,\n strongMessage: _unref(user).username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (\n displayModal.value === 'delete'\n ? deleteUserAccount(_unref(user).username)\n : resetUserPassword(_unref(user).username)\n )),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal('')))\n }, null, 8, [\"title\", \"message\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `admin.${\n currentAction.value === 'password-reset'\n ? 'PASSWORD_RESET'\n : 'USER_EMAIL_UPDATE'\n }_SUCCESSFUL`\n )), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 2,\n message: \"user.THIS_USER_ACCOUNT_IS_INACTIVE\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 3,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (displayUserEmailForm.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (updateUserEmail(_unref(user).username)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.CURRENT_EMAIL')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"email\",\n type: \"email\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_unref(user).email) = $event)),\n disabled: \"\"\n }, null, 512), [\n [_vModelText, _unref(user).email]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.NEW_EMAIL')) + \"* \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"new-email\",\n type: \"email\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((newUserEmail).value = $event))\n }, null, 512), [\n [_vModelText, newUserEmail.value]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", _hoisted_7, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(hideEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_8)\n ])\n ], 34)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(registrationDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(birthDate)), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_unref(user).location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_10, _toDisplayString(_unref(user).bio), 1)\n ]),\n (_unref(fromAdmin))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (updateDisplayModal('delete')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(user).is_active)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (confirmUserAccount(_unref(user).username)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.ACTIVATE_USER_ACCOUNT')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(authUser).username !== _unref(user).username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _withModifiers(displayEmailForm, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('admin.UPDATE_USER_EMAIL')), 9, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (\n _unref(authUser).username !== _unref(user).username &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n onClick: _cache[7] || (_cache[7] = _withModifiers(($event: any) => (updateDisplayModal('reset')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.RESET_USER_PASSWORD')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n ]))\n}\n}\n\n})","import script from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=217519af&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-217519af\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b3c885de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-form\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"info-box success-message\"\n}\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\", \"placeholder\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"form-info\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = [\"disabled\", \"placeholder\"]\nconst _hoisted_8 = {\n key: 3,\n class: \"form-info\"\n}\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { key: 3 }\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { class: \"account\" }\nconst _hoisted_15 = { key: 5 }\n\nimport {\n ComputedRef,\n computed,\n onUnmounted,\n reactive,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import PasswordInput from '@/components/Common/PasswordInput.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ILoginRegisterFormData } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserAuthForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { action } = toRefs(props)\n const formData: ILoginRegisterFormData = reactive({\n username: '',\n email: '',\n password: '',\n })\n const buttonText: ComputedRef = computed(() =>\n getButtonText(props.action)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const isRegistrationSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_REGISTRATION_SUCCESS]\n )\n const isSuccess: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_SUCCESS]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n const registration_disabled: ComputedRef = computed(\n () =>\n props.action === 'register' && !appConfig.value.is_registration_enabled\n )\n const sendingEmailDisabled: ComputedRef = computed(\n () =>\n ['reset-request', 'account-confirmation-resend'].includes(props.action) &&\n !appConfig.value.is_email_sending_enabled\n )\n const formErrors = ref(false)\n\n function getButtonText(action: string): string {\n switch (action) {\n case 'reset-request':\n case 'reset':\n return 'buttons.SUBMIT'\n default:\n return `buttons.${props.action.toUpperCase()}`\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n function updatePassword(password: string) {\n formData.password = password\n }\n function onSubmit(actionType: string) {\n switch (actionType) {\n case 'reset':\n if (!props.token) {\n return store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n 'user.INVALID_TOKEN'\n )\n }\n return store.dispatch(AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD, {\n password: formData.password,\n token: props.token,\n })\n case 'reset-request':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST,\n {\n email: formData.email,\n }\n )\n case 'account-confirmation-resend':\n return store.dispatch(\n AUTH_USER_STORE.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,\n {\n email: formData.email,\n }\n )\n default:\n formData['language'] = language.value\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER, {\n actionType,\n formData,\n redirectUrl: route.query.from,\n })\n }\n }\n function resetFormData() {\n formData.username = ''\n formData.email = ''\n formData.password = ''\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => route.path,\n async () => {\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n store.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)\n store.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,\n false\n )\n formErrors.value = false\n resetFormData()\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_AlertMessage = _resolveComponent(\"AlertMessage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"user-auth-form\",\n class: _normalizeClass(`${\n ['reset', 'reset-request'].includes(_unref(action)) ? _unref(action) : 'user-form'\n }`)\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"form-box\", {\n disabled: _unref(registration_disabled),\n }])\n }, [\n (_unref(registration_disabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 0,\n message: \"user.REGISTER_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(sendingEmailDisabled))\n ? (_openBlock(), _createBlock(_component_AlertMessage, {\n key: 1,\n message: \"admin.EMAIL_SENDING_DISABLED\"\n }))\n : _createCommentVNode(\"\", true),\n (_unref(isSuccess) || _unref(isRegistrationSuccess))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\n `user.PROFILE.SUCCESSFUL_${\n _unref(isRegistrationSuccess)\n ? `REGISTRATION${\n _unref(appConfig).is_email_sending_enabled ? '_WITH_EMAIL' : ''\n }`\n : 'UPDATE'\n }`\n )), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (onSubmit(_unref(action))), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(action) === 'register')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n id: \"username\",\n disabled: _unref(registration_disabled),\n required: \"\",\n pattern: \"[a-zA-Z0-9_]+\",\n minlength: \"3\",\n maxlength: \"30\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData.username) = $event)),\n placeholder: _ctx.$t('user.USERNAME')\n }, null, 40, _hoisted_4)), [\n [_vModelText, formData.username]\n ])\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.USERNAME_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) !== 'reset')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 2,\n id: \"email\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled),\n required: \"\",\n onInvalid: invalidateForm,\n type: \"email\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData.email) = $event)),\n placeholder: _ctx.$t('user.EMAIL')\n }, null, 40, _hoisted_7)), [\n [_vModelText, formData.email]\n ])\n : _createCommentVNode(\"\", true),\n (\n [\n 'reset-request',\n 'register',\n 'account-confirmation-resend',\n ].includes(_unref(action))\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EMAIL_INFO')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (\n !['account-confirmation-resend', 'reset-request'].includes(\n _unref(action)\n )\n )\n ? (_openBlock(), _createBlock(PasswordInput, {\n key: 4,\n disabled: _unref(registration_disabled),\n required: true,\n placeholder: \n _unref(action) === 'reset'\n ? _ctx.$t('user.ENTER_PASSWORD')\n : _ctx.$t('user.PASSWORD')\n ,\n password: formData.password,\n checkStrength: ['reset', 'register'].includes(_unref(action)),\n onUpdatePassword: updatePassword,\n onPasswordError: invalidateForm\n }, null, 8, [\"disabled\", \"placeholder\", \"password\", \"checkStrength\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: _unref(registration_disabled) || _unref(sendingEmailDisabled)\n }, _toDisplayString(_ctx.$t(_unref(buttonText))), 9, _hoisted_10)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/register\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).is_email_sending_enabled)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"links\",\n to: \"/password-reset/request\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_FORGOTTEN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ALREADY_HAVE_ACCOUNT')), 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/login\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (\n ['login', 'register'].includes(_unref(action)) &&\n _unref(appConfig).is_email_sending_enabled\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_NOT_RECEIVED')), 1)\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 6,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ])\n ], 2))\n}\n}\n\n})","import script from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserAuthForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserAuthForm.vue?vue&type=style&index=0&id=b3c885de&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b3c885de\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nimport { computed } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n user: IUserProfile\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserPicture',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IUserProfile\n };\n\n \n\n const authUserPictureUrl = computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture?${Date.now()}`\n : ''\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUserPictureUrl) !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _unref(authUserPictureUrl)\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}\n}\n\n})","import script from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=26bea286&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","\n\n\n","import { render } from \"./NoWorkouts.vue?vue&type=template&id=4b4d15fb&scoped=true\"\nconst script = {}\n\nimport \"./NoWorkouts.vue?vue&type=style&index=0&id=4b4d15fb&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b4d15fb\"]])\n\nexport default __exports__","var map = {\n\t\"./de/de.ts\": 9923,\n\t\"./en/en.ts\": 8757,\n\t\"./fr/fr.ts\": 6625,\n\t\"./nb/nb.ts\": 8891,\n\t\"./nl/nl.ts\": 701\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 4612;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\",\"881\":\"password\"}[chunkId] || chunkId) + \".\" + {\"24\":\"765db75f\",\"93\":\"611a4415\",\"193\":\"7cce80c4\",\"243\":\"d3fff3a7\",\"328\":\"c4231dfb\",\"401\":\"6988dc66\",\"431\":\"52f71cad\",\"633\":\"5eb61510\",\"845\":\"984aa6f4\",\"858\":\"ec3b00a9\",\"881\":\"cfeb5ed6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"24\":\"reset\",\"193\":\"statistics\",\"328\":\"admin\",\"401\":\"workouts\",\"845\":\"profile\"}[chunkId] + \".\" + {\"24\":\"e2527ec6\",\"193\":\"40e24e75\",\"328\":\"73df498d\",\"401\":\"9970f29e\",\"845\":\"9f83730d\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"fittrackee_client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"24\":1,\"193\":1,\"328\":1,\"401\":1,\"845\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfittrackee_client\"] = self[\"webpackChunkfittrackee_client\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(4380); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["authApi","axios","baseURL","getApiUrl","interceptors","request","use","config","controller","AbortController","signal","requestKey","removeRequestIfPending","pendingRequests","authToken","store","AUTH_USER_STORE","auth","headers","Authorization","error","Promise","reject","response","message","Map","generateRequestKey","method","url","params","data","JSON","stringify","join","has","get","abort","delete","disabledLanguages","loadLocaleMessages","locales","require","messages","keys","forEach","key","matched","match","length","includes","locale","default","createI18n","legacy","fallbackLocale","globalInjection","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","about","AboutTranslations","admin","AdministrationTranslations","api","ApiTranslations","buttons","ButtonsTranslations","common","CommonTranslations","dashboard","DashboardTranslations","ErrorTranslations","oauth2","OAuth2Translations","sports","SportsTranslations","statistics","StatisticsTranslations","user","UserTranslations","workouts","WorkoutsTranslations","register","ready","console","log","registered","cached","updatefound","updated","offline","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","_hoisted_2","class","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","href","target","rel","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","__exports__","emits","emit","useStore","authUser","computed","getters","isAuthenticated","language","ROOT_STORE","isMenuOpen","ref","openMenu","value","closeMenu","updateLanguage","option","dispatch","toString","logout","_component_Dropdown","onClick","$event","$router","push","_normalizeClass","capitalize","_createBlock","UserPicture","username","availableLanguages","options","selected","onSelected","ErrorImg","innerHTML","appConfig","appLoading","hideScrollBar","displayScrollButton","updateHideScrollBar","isScrolledToBottom","element","getBoundingClientRect","top","window","innerHeight","bottom","scroll","onscroll","document","querySelector","scrollToTop","scrollTo","behavior","setTimeout","initLanguage","navigatorLanguage","navigator","split","localeFromLanguage","e","onBeforeMount","onMounted","_component_Loader","_component_router_view","_Fragment","NavBar","onMenuInteraction","NoConfig","Footer","admin_contact","name","charLimit","disabled","type","Boolean","input","text","updateText","event","watch","_withDirectives","maxLenght","onInput","_vModelText","distance","unitFrom","useImperialUnits","digits","displayUnit","speed","strong","unitTo","units","defaultTarget","convertedDistance","convertDistance","parseFloat","toFixed","route","useRoute","isOpen","dropdownOptions","map","toggleDropdown","updateSelected","path","_renderSlot","$slots","_renderList","index","label","Array","isArray","subMessage","xmlns","x","y","viewBox","style","d","render","cx","cy","r","sportLabel","color","title","sportColors","inject","_normalizeStyle","fill","CyclingSport","CyclingTransport","CyclingVirtual","Hiking","MountainBiking","MountainBikingElectric","Rowing","Running","SkiingAlpine","SkiingCrossCountry","Snowshoes","Trail","Walking","script","strongMessage","errorMessages","onUnmounted","commit","_component_i18n_t","_component_ErrorMessage","_component_Card","content","keypath","customComponents","AlertMessage","Card","CustomTextArea","Distance","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","undefined","Chart","BarElement","LineElement","PointElement","Legend","Title","Tooltip","Filler","BarController","CategoryScale","LineController","LinearScale","ChartDataLabels","app","createApp","App","provide","i18n","router","VueFullscreen","directive","component","mount","for","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","edition","useRouter","appData","reactive","max_users","max_single_file_size","max_zip_file_size","gpx_limit_import","updateForm","Object","getFileSizeInMB","onCancel","onSubmit","formData","assign","_withModifiers","min","step","icon","appStatistics","uploadDirSize","getReadableFileSize","uploads_dir_size","StatCard","users","size","suffix","AppStatsCards","is_registration_enabled","is_email_sending_enabled","t","useI18n","translatedSports","translateSports","SPORTS_STORE","updateSportStatus","isActive","_component_SportImage","sport","translatedLabel","is_active","danger","has_workouts","query","q","searchUsers","resetFilter","onKeyup","_withKeys","placeholder","trim","orderByList","defaultOrderBy","getQuery","USERS_STORE","pagination","loadUsers","queryParams","reloadUsers","updateUser","queryParam","queryValue","page","newQuery","UsersNameFilter","onFilterOnUsername","FilterSelects","sort","sortList","order_by","onUpdateSelect","email","formatDate","created_at","timezone","date_format","nb_workouts","Pagination","tabs","selectedTab","getPath","tab","toLocaleLowerCase","checked","UserHeader","UserProfileTabs","appLanguage","userLanguage","languageLabels","fistDayOfWeek","weekm","display_ascent","getDateFormat","imperial_units","loading","userForm","password","new_password","isSuccess","emailUpdate","formErrors","displayModal","invalidateForm","updateUserForm","updatePassword","updateNewPassword","updateProfile","payload","updateDisplayModal","deleteAccount","async","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","first_name","last_name","birth_date","location","bio","registrationDate","format","Date","updateBio","_component_CustomTextArea","onUpdateValue","fileSizeLimit","pictureFile","deleteUserPicture","updatePictureFile","files","updateUserPicture","picture","accept","timeZones","tzList","focusItemIndex","matchTimezone","toLowerCase","onMouseOver","onUpdateTimezone","onEnter","preventDefault","firstElementChild","openDropdown","onKeydown","ref_key","filter","tz","focus","onMouseover","autofocus","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","status","oauth2_scopes","admin_oauth2_scopes","appForm","client_name","client_uri","client_description","redirect_uri","scopes","filtered_scopes","getScopes","redirect_uris","scope","OAUTH2_STORE","updateDescription","updateScopes","indexOf","splice","admin_scopes","description","onChange","client","loadApp","client_id","authorizeApp","response_type","state","code_challenge","code_challenge_method","afterCreation","revocationSuccessful","messageToDisplay","idCopied","secretCopied","clipboardSupport","loadClient","updateMessageToDisplay","forDelete","confirmAction","clientId","copyIdToClipboard","clipboard","writeText","copySecretToClipboard","client_secret","newValue","issued_at","website","clients","getClientsQuery","clientsQuery","getNumberQueryValue","defaultPage","loadClients","isEdition","defaultColor","sports_list","sportPayload","sport_id","stopped_speed_threshold","updateSportInEdition","is_active_for_user","resetSportPayload","isSportInEdition","sportId","updateColor","updateThreshold","updateIsActive","updateSport","resetSport","newIsLoading","src","alt","BikePic","About","workout","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","ascent","descent","per_page","initWorkoutsCount","loadWorkouts","WORKOUTS_STORE","moreWorkoutsExist","previous_workout","defaultOrder","loadMoreWorkouts","WorkoutCard","s","NoWorkouts","displayHARecord","sportColor","records","record","record_type","height","width","colors","datasets","angleOffset","radius","circumference","Math","PI","calculateStrokeDashOffset","percentage","returnCircleTransformValue","rotation","entries","stroke","transform","isHidden","togglePane","stopPropagation","_directive_click_outside","_resolveDirective","DonutChart","CalendarWorkout","getSportLabel","getSportColor","chartDatasets","getDonutDatasets","sportIdColors","displayedWorkoutCount","slice","CalendarWorkoutsChart","currentDay","endDate","startDate","weekStartingMonday","rows","getDays","day","days","i","addDays","isWeekEnd","filterWorkouts","isSameDay","getDateWithTZ","reverse","row","isSameMonth","today","isToday","CalendarWorkouts","localeOptions","calendarDates","getCalendarStartAndEnd","calendarWorkouts","getCalendarWorkouts","apiParams","from","end","displayNextMonth","addMonths","displayPreviousMonth","subMonths","CalendarHeader","onDisplayNextMonth","onDisplayPreviousMonth","CalendarDays","CalendarCells","date","chartParams","duration","startOfMonth","endOfMonth","selectedSportIds","StatChart","formatRecord","distanceUnitFrom","distanceUnitTo","ascentUnitFrom","ascentUnitTo","Error","workout_id","sortRecords","a","b","recordALabel","recordBLabel","getRecordsBySports","reduce","sportList","find","sportTranslatedLabel","getTranslatedRecords","translatedRecords","recordsBySport","RecordsCard","userTotalDuration","total_duration","totalDuration","get_duration","totalDistance","total_distance","totalAscent","total_ascent","nb_sports","isSelected","updateDisplayColumn","UserStatsCards","UserMonthStats","UserRecords","UserCalendar","Timeline","NotFound","action","LoginOrRegisterForm","getTabFromPath","regex","tag","replace","toUpperCase","routes","Dashboard","LoginOrRegister","children","Profile","UserInfos","UserPreferences","UserSportPreferences","UserApps","UserAppsList","UserApp","AddUserApp","AuthorizeUserApp","ProfileEdition","UserInfosEdition","UserAccountEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","then","fullPath","catch","AuthUserActions","AuthUserGetters","AuthUserMutations","OAuth2Actions","OAuth2Getters","OAuth2Mutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ACTIONS","GETTERS","MUTATIONS","STATS_STORE","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","deleteUserAccount","context","res","handleError","actions","finally","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","setAttribute","application","root","enUS","sportsState","filterType","statisticsState","updatedUser","usersState","getWorkouts","segmentUrl","segmentId","segments","chart_data","gpx","file","notes","calendar_workouts","timeline_workouts","user_workouts","workoutData","concat","chartData","workoutsState","modules","authUserModule","oAuthModule","sportsModule","statsModule","usersModule","workoutsModule","createStore","VuexStore","defaultPerPage","defaultValue","getStringQueryValue","availableValues","locationQuery","queryOptions","defaultSort","order","workoutsPayloadKeys","getRange","stop","rangePagination","pages","currentPage","getStartDate","startOfWeek","weekStartsOn","startOfYear","incrementDate","addYears","dateInUTC","utcToZonedTime","monthStart","monthEnd","endOfWeek","formatWorkoutDate","dateTime","timeFormat","workout_time","availableDateFormats","dateStringFormats","de","en","fr","nl","dateString","withTime","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","availableLocales","sortSports","sportATranslatedLabel","sportBTranslatedLabel","activeStatus","sportsToInclude","dateFormats","week","chart","month","year","datasetKeys","getDateKeys","getStatisticsChartDataset","isLineChart","dataset","backgroundColor","borderColor","spanGaps","getDatasets","displayedSports","average_speed","total_descent","convertStatsValue","datasetKey","convertStatsDistance","formatStats","displayedSportsId","apiStats","userDateFormat","dayKeys","labels","sportsId","displayedSport","getStatsDateParams","timeFrame","subYears","endOfYear","updateChartParams","backward","subWeeks","addWeeks","ft","system","multiplier","mi","km","factors","metric","imperial","borderWidth","yAxisID","elevation","distance_labels","duration_labels","coordinates","latitude","longitude","total","count","perPage","onSelectUpdate","nb","buttonText","timer","errorDisplayed","displayError","clearTimeout","cursor","has_prev","navigate","has_next","active","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnEnPackage","zxcvbnFrPackage","zxcvbnDePackage","zxcvbnLangPackages","zxcvbnPackage","graphs","adjacencyGraphs","dictionary","zxcvbnOptions","getPasswordStrength","strength","passwordScore","passwordStrength","passwordSuggestions","backgroundSize","calculatePasswordStrength","zxcvbnResult","zxcvbn","score","feedback","suggestions","newLanguageValue","newPassword","max","suggestion","showPassword","passwordValue","togglePassword","invalidPassword","minlength","_vModelDynamic","PasswordStrength","displayHover","imageUrl","backgroundImage","$props","$setup","$data","$options","_component_Chart","hideChartIfNoData","emptyStats","displayedData","args","updateDisplayData","fullStats","displayedSportIds","_component_BarChart","_mergeProps","barChartProps","formatDuration","totalSeconds","formatWithUnits","String","hours","padStart","minutes","seconds","formatTooltipValue","defineComponent","components","BarChart","getNumber","isNaN","getSum","getUnit","parse","responsive","maintainAspectRatio","animation","layout","padding","scales","stacked","grid","drawOnChartArea","ticks","maxTicksLimit","callback","afterFit","scale","plugins","datalabels","anchor","align","chartArea","display","formatter","dataIndex","datasetIndex","legend","tooltip","interaction","intersect","mode","position","tooltipItem","formattedValue","callbacks","parsed","footer","tooltipItems","sum","useBarChart","formattedStats","getStatistics","getApiParams","time","newParams","birthDate","displayUserEmailForm","newUserEmail","currentAction","resetUserPassword","confirmUserAccount","displayEmailForm","resetErrorsAndSuccess","email_to_confirm","hideEmailForm","updateUserEmail","newIsSuccess","_component_AlertMessage","go","getButtonText","registration_disabled","sendingEmailDisabled","resetFormData","pattern","maxlength","authUserPictureUrl","now","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","this","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","onLinkComplete","errorType","realHref","err","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.a8b861ae.js b/fittrackee/dist/static/js/reset.765db75f.js similarity index 99% rename from fittrackee/dist/static/js/reset.a8b861ae.js rename to fittrackee/dist/static/js/reset.765db75f.js index ba062e33..e26745ff 100644 --- a/fittrackee/dist/static/js/reset.a8b861ae.js +++ b/fittrackee/dist/static/js/reset.765db75f.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[24],{3228:function(t,c,n){n.d(c,{Z:function(){return d}});var a=n(6252);const e={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 345.834 345.834",style:{"enable-background":"new 0 0 345.834 345.834"},"xml:space":"preserve"},s=(0,a._)("g",null,[(0,a._)("path",{d:"M339.798,260.429c0.13-0.026,0.257-0.061,0.385-0.094c0.109-0.028,0.219-0.051,0.326-0.084\n\t\tc0.125-0.038,0.247-0.085,0.369-0.129c0.108-0.039,0.217-0.074,0.324-0.119c0.115-0.048,0.226-0.104,0.338-0.157\n\t\tc0.109-0.052,0.22-0.1,0.327-0.158c0.107-0.057,0.208-0.122,0.312-0.184c0.107-0.064,0.215-0.124,0.319-0.194\n\t\tc0.111-0.074,0.214-0.156,0.321-0.236c0.09-0.067,0.182-0.13,0.27-0.202c0.162-0.133,0.316-0.275,0.466-0.421\n\t\tc0.027-0.026,0.056-0.048,0.083-0.075c0.028-0.028,0.052-0.059,0.079-0.088c0.144-0.148,0.284-0.3,0.416-0.46\n\t\tc0.077-0.094,0.144-0.192,0.216-0.289c0.074-0.1,0.152-0.197,0.221-0.301c0.074-0.111,0.139-0.226,0.207-0.34\n\t\tc0.057-0.096,0.118-0.19,0.171-0.289c0.062-0.115,0.114-0.234,0.169-0.351c0.049-0.104,0.101-0.207,0.146-0.314\n\t\tc0.048-0.115,0.086-0.232,0.128-0.349c0.041-0.114,0.085-0.227,0.12-0.343c0.036-0.118,0.062-0.238,0.092-0.358\n\t\tc0.029-0.118,0.063-0.234,0.086-0.353c0.028-0.141,0.045-0.283,0.065-0.425c0.014-0.1,0.033-0.199,0.043-0.3\n\t\tc0.025-0.249,0.038-0.498,0.038-0.748V92.76c0-4.143-3.357-7.5-7.5-7.5h-236.25c-0.066,0-0.13,0.008-0.196,0.01\n\t\tc-0.143,0.004-0.285,0.01-0.427,0.022c-0.113,0.009-0.225,0.022-0.337,0.037c-0.128,0.016-0.255,0.035-0.382,0.058\n\t\tc-0.119,0.021-0.237,0.046-0.354,0.073c-0.119,0.028-0.238,0.058-0.356,0.092c-0.117,0.033-0.232,0.069-0.346,0.107\n\t\tc-0.117,0.04-0.234,0.082-0.349,0.128c-0.109,0.043-0.216,0.087-0.322,0.135c-0.118,0.053-0.235,0.11-0.351,0.169\n\t\tc-0.099,0.051-0.196,0.103-0.292,0.158c-0.116,0.066-0.23,0.136-0.343,0.208c-0.093,0.06-0.184,0.122-0.274,0.185\n\t\tc-0.106,0.075-0.211,0.153-0.314,0.235c-0.094,0.075-0.186,0.152-0.277,0.231c-0.09,0.079-0.179,0.158-0.266,0.242\n\t\tc-0.099,0.095-0.194,0.194-0.288,0.294c-0.047,0.05-0.097,0.094-0.142,0.145c-0.027,0.03-0.048,0.063-0.074,0.093\n\t\tc-0.094,0.109-0.182,0.223-0.27,0.338c-0.064,0.084-0.13,0.168-0.19,0.254c-0.078,0.112-0.15,0.227-0.222,0.343\n\t\tc-0.059,0.095-0.12,0.189-0.174,0.286c-0.063,0.112-0.118,0.227-0.175,0.342c-0.052,0.105-0.106,0.21-0.153,0.317\n\t\tc-0.049,0.113-0.092,0.23-0.135,0.345c-0.043,0.113-0.087,0.225-0.124,0.339c-0.037,0.115-0.067,0.232-0.099,0.349\n\t\tc-0.032,0.12-0.066,0.239-0.093,0.36c-0.025,0.113-0.042,0.228-0.062,0.342c-0.022,0.13-0.044,0.26-0.06,0.39\n\t\tc-0.013,0.108-0.019,0.218-0.027,0.328c-0.01,0.14-0.019,0.28-0.021,0.421c-0.001,0.041-0.006,0.081-0.006,0.122v46.252\n\t\tc0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-29.595l66.681,59.037c-0.348,0.245-0.683,0.516-0.995,0.827l-65.687,65.687v-49.288\n\t\tc0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v9.164h-38.75c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h38.75v43.231\n\t\tc0,4.143,3.357,7.5,7.5,7.5h236.25c0.247,0,0.494-0.013,0.74-0.037c0.115-0.011,0.226-0.033,0.339-0.049\n\t\tC339.542,260.469,339.67,260.454,339.798,260.429z M330.834,234.967l-65.688-65.687c-0.042-0.042-0.087-0.077-0.13-0.117\n\t\tl49.383-41.897c3.158-2.68,3.546-7.412,0.866-10.571c-2.678-3.157-7.41-3.547-10.571-0.866l-84.381,71.59l-98.444-87.158h208.965\n\t\tV234.967z M185.878,179.888c0.535-0.535,0.969-1.131,1.308-1.765l28.051,24.835c1.418,1.255,3.194,1.885,4.972,1.885\n\t\tc1.726,0,3.451-0.593,4.853-1.781l28.587-24.254c0.26,0.38,0.553,0.743,0.89,1.08l65.687,65.687H120.191L185.878,179.888z"}),(0,a._)("path",{d:"M7.5,170.676h126.667c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H7.5c-4.143,0-7.5,3.357-7.5,7.5\n\t\tS3.357,170.676,7.5,170.676z"}),(0,a._)("path",{d:"M20.625,129.345H77.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H20.625c-4.143,0-7.5,3.357-7.5,7.5\n\t\tS16.482,129.345,20.625,129.345z"}),(0,a._)("path",{d:"M62.5,226.51h-55c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h55c4.143,0,7.5-3.357,7.5-7.5S66.643,226.51,62.5,226.51z"})],-1),o=[s];function r(t,c,n,s,r,i){return(0,a.wg)(),(0,a.iD)("svg",e,o)}var i={name:"EmailSent"},l=n(3744);const u=(0,l.Z)(i,[["render",r]]);var d=u},5639:function(t,c,n){n.r(c),n.d(c,{default:function(){return S}});var a=n(6252),e=n(2262),s=n(3577),o=n(3228),r=n(2411);const i={id:"account-confirmation-email",class:"center-card with-margin"},l={key:0,class:"email-sent"},u={class:"email-sent-message"},d={key:1};var v=(0,a.aZ)({__name:"AccountConfirmationEmail",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>{const v=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",i,["email-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.iD)("div",l,[(0,a.Wm)(o.Z),(0,a._)("div",u,(0,s.zw)(t.$t("user.ACCOUNT_CONFIRMATION_SENT")),1)])):((0,a.wg)(),(0,a.iD)("div",d,[(0,a.Wm)(v,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("user.RESENT_ACCOUNT_CONFIRMATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(r.Z,{action:(0,e.SU)(n)},null,8,["action"])])),_:1})]))])}}}),p=n(3744);const w=(0,p.Z)(v,[["__scopeId","data-v-66aca424"]]);var g=w;const _={id:"account-confirmation",class:"view"},h={class:"container"};var m=(0,a.aZ)({__name:"AccountConfirmationResendView",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>((0,a.wg)(),(0,a.iD)("div",_,[(0,a._)("div",h,[(0,a.Wm)(g,{action:(0,e.SU)(n)},null,8,["action"])])]))}});const k=(0,p.Z)(m,[["__scopeId","data-v-35aad344"]]);var S=k},1627:function(t,c,n){n.r(c),n.d(c,{default:function(){return A}});n(7658);var a=n(6252),e=n(2262),s=n(2201),o=n(3577),r=n(3228);const i={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512.001 512.001",style:{"enable-background":"new 0 0 512.001 512.001"},"xml:space":"preserve"},l=(0,a.uE)('',7),u=[l];function d(t,c,n,e,s,o){return(0,a.wg)(),(0,a.iD)("svg",i,u)}var v={name:"Password"},p=n(3744);const w=(0,p.Z)(v,[["render",d]]);var g=w;const _={id:"password-action-done",class:"center-card with-margin"},h={class:"password-message"},m={key:0};var k=(0,a.aZ)({__name:"PasswordActionDone",props:{action:null},setup(t){const c=t,{action:n}=(0,e.BK)(c);return(t,c)=>{const s=(0,a.up)("router-link"),i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",_,["request-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.j4)(r.Z,{key:0})):((0,a.wg)(),(0,a.j4)(g,{key:1})),(0,a._)("div",h,["request-sent"===(0,e.SU)(n)?((0,a.wg)(),(0,a.iD)("span",m,(0,o.zw)(t.$t("user.PASSWORD_SENT_EMAIL_TEXT")),1)):((0,a.wg)(),(0,a.j4)(i,{key:1,keypath:"user.PASSWORD_UPDATED"},{default:(0,a.w5)((()=>[(0,a.Wm)(s,{to:"/login"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.$t("common.HERE")),1)])),_:1})])),_:1}))])])}}});const S=(0,p.Z)(k,[["__scopeId","data-v-eac78356"]]);var C=S,f=n(2411);const x={id:"password-reset-request",class:"center-card with-margin"};var z=(0,a.aZ)({__name:"PasswordResetForm",props:{action:null,token:{default:""}},setup(t){const c=t,{action:n,token:s}=(0,e.BK)(c);return(t,c)=>{const r=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",x,[(0,a.Wm)(r,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(t.$t("user.RESET_PASSWORD")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(f.Z,{action:(0,e.SU)(n),token:(0,e.SU)(s)},null,8,["action","token"])])),_:1})])}}});const U=(0,p.Z)(z,[["__scopeId","data-v-68377e44"]]);var Z=U;const y={id:"password-reset",class:"view"},D={class:"container"};var M=(0,a.aZ)({__name:"PasswordResetView",props:{action:null},setup(t){const c=t,n=(0,s.yj)(),o=(0,s.tv)(),{action:r}=(0,e.BK)(c),i=(0,a.Fl)((()=>n.query.token));return(0,a.wF)((()=>{"reset"!==c.action||i.value||o.push("/")})),(t,c)=>((0,a.wg)(),(0,a.iD)("div",y,[(0,a._)("div",D,[(0,e.SU)(r).startsWith("reset")?((0,a.wg)(),(0,a.j4)(Z,{key:0,action:(0,e.SU)(r),token:(0,e.SU)(i)},null,8,["action","token"])):((0,a.wg)(),(0,a.j4)(C,{key:1,action:(0,e.SU)(r)},null,8,["action"]))])]))}});const E=(0,p.Z)(M,[["__scopeId","data-v-a1cc55c4"]]);var A=E}}]); -//# sourceMappingURL=reset.a8b861ae.js.map \ No newline at end of file +//# sourceMappingURL=reset.765db75f.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.a8b861ae.js.map b/fittrackee/dist/static/js/reset.765db75f.js.map similarity index 99% rename from fittrackee/dist/static/js/reset.a8b861ae.js.map rename to fittrackee/dist/static/js/reset.765db75f.js.map index 69cc732f..3d1edf1f 100644 --- a/fittrackee/dist/static/js/reset.a8b861ae.js.map +++ b/fittrackee/dist/static/js/reset.765db75f.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/reset.a8b861ae.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue","webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue?2d84","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue?37ef","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue?3fd8","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue?2ae3","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue?977e","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue?e08b","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue?1ecf","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue"],"sourcesContent":["\n\n\n","import { render } from \"./EmailSent.vue?vue&type=template&id=3377e6a0\"\nimport script from \"./EmailSent.vue?vue&type=script&lang=js\"\nexport * from \"./EmailSent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-66aca424\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation-email\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"email-sent\"\n}\nconst _hoisted_3 = { class: \"email-sent-message\" }\nconst _hoisted_4 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationEmail',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'email-sent')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(EmailSent),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_SENT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESENT_ACCOUNT_CONFIRMATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, { action: _unref(action) }, null, 8, [\"action\"])\n ]),\n _: 1\n })\n ]))\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationEmail.vue?vue&type=style&index=0&id=66aca424&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66aca424\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35aad344\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { toRefs } from 'vue'\n\n import AccountConfirmationResend from '@/components/User/AccountConfirmationEmail.vue'\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationResendView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AccountConfirmationResend, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationResendView.vue?vue&type=style&index=0&id=35aad344&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35aad344\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Password.vue?vue&type=template&id=356e77a2\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eac78356\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-action-done\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"password-message\" }\nconst _hoisted_3 = { key: 0 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import Password from '@/components/Common/Images/Password.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordActionDone',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createBlock(EmailSent, { key: 0 }))\n : (_openBlock(), _createBlock(Password, { key: 1 })),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('user.PASSWORD_SENT_EMAIL_TEXT')), 1))\n : (_openBlock(), _createBlock(_component_i18n_t, {\n key: 1,\n keypath: \"user.PASSWORD_UPDATED\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.HERE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordActionDone.vue?vue&type=style&index=0&id=eac78356&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eac78356\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68377e44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset-request\",\n class: \"center-card with-margin\"\n}\n\nimport { toRefs, withDefaults } from 'vue'\n\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const { action, token } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESET_PASSWORD')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, {\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetForm.vue?vue&type=style&index=0&id=68377e44&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68377e44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a1cc55c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, toRefs, onBeforeMount } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n import PasswordEmailSent from '@/components/User/PasswordReset/PasswordActionDone.vue'\n import PasswordResetRequest from '@/components/User/PasswordReset/PasswordResetForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const route = useRoute()\n const router = useRouter()\n\n const { action } = toRefs(props)\n const token = computed(() => route.query.token)\n\n onBeforeMount(() => {\n if (props.action === 'reset' && !token.value) {\n router.push('/')\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action).startsWith('reset'))\n ? (_openBlock(), _createBlock(PasswordResetRequest, {\n key: 0,\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"]))\n : (_openBlock(), _createBlock(PasswordEmailSent, {\n key: 1,\n action: _unref(action)\n }, null, 8, [\"action\"]))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetView.vue?vue&type=style&index=0&id=a1cc55c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a1cc55c4\"]])\n\nexport default __exports__"],"names":["version","id","xmlns","x","y","viewBox","style","_createElementVNode","d","_hoisted_2","_createElementBlock","_hoisted_1","name","__exports__","render","class","key","_hoisted_3","_hoisted_4","_defineComponent","__name","props","action","setup","__props","toRefs","_ctx","_cache","_component_Card","_resolveComponent","_openBlock","_unref","_createVNode","EmailSent","_toDisplayString","$t","title","_withCtx","_createTextVNode","content","UserAuthForm","_","AccountConfirmationResend","_component_router_link","_component_i18n_t","_createBlock","Password","keypath","default","to","token","route","useRoute","router","useRouter","computed","query","onBeforeMount","value","push","startsWith","PasswordResetRequest","PasswordEmailSent"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/reset.765db75f.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue","webpack://fittrackee_client/./src/components/Common/Images/EmailSent.vue?2d84","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue?37ef","webpack://fittrackee_client/./src/components/User/AccountConfirmationEmail.vue","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue?3fd8","webpack://fittrackee_client/./src/views/user/AccountConfirmationResendView.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue","webpack://fittrackee_client/./src/components/Common/Images/Password.vue?2ae3","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue?977e","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordActionDone.vue","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue?e08b","webpack://fittrackee_client/./src/components/User/PasswordReset/PasswordResetForm.vue","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue?1ecf","webpack://fittrackee_client/./src/views/user/PasswordResetView.vue"],"sourcesContent":["\n\n\n","import { render } from \"./EmailSent.vue?vue&type=template&id=3377e6a0\"\nimport script from \"./EmailSent.vue?vue&type=script&lang=js\"\nexport * from \"./EmailSent.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-66aca424\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation-email\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"email-sent\"\n}\nconst _hoisted_3 = { class: \"email-sent-message\" }\nconst _hoisted_4 = { key: 1 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationEmail',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'email-sent')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(EmailSent),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('user.ACCOUNT_CONFIRMATION_SENT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESENT_ACCOUNT_CONFIRMATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, { action: _unref(action) }, null, 8, [\"action\"])\n ]),\n _: 1\n })\n ]))\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationEmail.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationEmail.vue?vue&type=style&index=0&id=66aca424&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-66aca424\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35aad344\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"account-confirmation\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { toRefs } from 'vue'\n\n import AccountConfirmationResend from '@/components/User/AccountConfirmationEmail.vue'\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationResendView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(AccountConfirmationResend, { action: _unref(action) }, null, 8, [\"action\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationResendView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationResendView.vue?vue&type=style&index=0&id=35aad344&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35aad344\"]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Password.vue?vue&type=template&id=356e77a2\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eac78356\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-action-done\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"password-message\" }\nconst _hoisted_3 = { key: 0 }\n\nimport { toRefs } from 'vue'\n\n import EmailSent from '@/components/Common/Images/EmailSent.vue'\n import Password from '@/components/Common/Images/Password.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordActionDone',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const { action } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createBlock(EmailSent, { key: 0 }))\n : (_openBlock(), _createBlock(Password, { key: 1 })),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action) === 'request-sent')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('user.PASSWORD_SENT_EMAIL_TEXT')), 1))\n : (_openBlock(), _createBlock(_component_i18n_t, {\n key: 1,\n keypath: \"user.PASSWORD_UPDATED\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('common.HERE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordActionDone.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordActionDone.vue?vue&type=style&index=0&id=eac78356&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-eac78356\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68377e44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset-request\",\n class: \"center-card with-margin\"\n}\n\nimport { toRefs, withDefaults } from 'vue'\n\n import UserAuthForm from '@/components/User/UserAuthForm.vue'\n\n interface Props {\n action: string\n token?: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetForm',\n props: {\n action: null,\n token: { default: '' }\n },\n setup(__props: any) {\n\nconst props = __props as { action: string, token: string };\n\n \n\n const { action, token } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.RESET_PASSWORD')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(UserAuthForm, {\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetForm.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetForm.vue?vue&type=style&index=0&id=68377e44&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68377e44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a1cc55c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"password-reset\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, toRefs, onBeforeMount } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n import PasswordEmailSent from '@/components/User/PasswordReset/PasswordActionDone.vue'\n import PasswordResetRequest from '@/components/User/PasswordReset/PasswordResetForm.vue'\n\n interface Props {\n action: string\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PasswordResetView',\n props: {\n action: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n action: string\n };\n\n \n\n const route = useRoute()\n const router = useRouter()\n\n const { action } = toRefs(props)\n const token = computed(() => route.query.token)\n\n onBeforeMount(() => {\n if (props.action === 'reset' && !token.value) {\n router.push('/')\n }\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(action).startsWith('reset'))\n ? (_openBlock(), _createBlock(PasswordResetRequest, {\n key: 0,\n action: _unref(action),\n token: _unref(token)\n }, null, 8, [\"action\", \"token\"]))\n : (_openBlock(), _createBlock(PasswordEmailSent, {\n key: 1,\n action: _unref(action)\n }, null, 8, [\"action\"]))\n ])\n ]))\n}\n}\n\n})","import script from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PasswordResetView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PasswordResetView.vue?vue&type=style&index=0&id=a1cc55c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a1cc55c4\"]])\n\nexport default __exports__"],"names":["version","id","xmlns","x","y","viewBox","style","_createElementVNode","d","_hoisted_2","_createElementBlock","_hoisted_1","name","__exports__","render","class","key","_hoisted_3","_hoisted_4","_defineComponent","__name","props","action","setup","__props","toRefs","_ctx","_cache","_component_Card","_resolveComponent","_openBlock","_unref","_createVNode","EmailSent","_toDisplayString","$t","title","_withCtx","_createTextVNode","content","UserAuthForm","_","AccountConfirmationResend","_component_router_link","_component_i18n_t","_createBlock","Password","keypath","default","to","token","route","useRoute","router","useRouter","computed","query","onBeforeMount","value","push","startsWith","PasswordResetRequest","PasswordEmailSent"],"sourceRoot":""} \ No newline at end of file