From 4307cb79709c920bc95cf03a42190bceee3f45ab Mon Sep 17 00:00:00 2001 From: bjornclauw Date: Mon, 6 Mar 2023 20:48:42 +0000 Subject: [PATCH 1/7] Translated using Weblate (Dutch) Currently translated at 100.0% (110 of 110 strings) Translation: FitTrackee/FitTrackee Client - User Translate-URL: https://hosted.weblate.org/projects/fittrackee/fittrackee-client-user/nl/ --- fittrackee_client/src/locales/nl/user.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fittrackee_client/src/locales/nl/user.json b/fittrackee_client/src/locales/nl/user.json index dcee7530..1f12a234 100644 --- a/fittrackee_client/src/locales/nl/user.json +++ b/fittrackee_client/src/locales/nl/user.json @@ -118,7 +118,7 @@ "REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.", "RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail", "RESET_PASSWORD": "Reset uw wachtwoord", - "REVIEW": "beoordeling", + "REVIEW": "beoordeel", "SHOW_PASSWORD": "toon wachtwoord", "THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.", "USERNAME": "Gebruikersnaam", From 1a62a968a5853d94aa448c6a111b176f2acbed6f Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 10:32:34 +0100 Subject: [PATCH 2/7] API - delete uploaded file on gpx processing error --- .../workouts/test_workouts_api_1_post.py | 91 +++++++++++++++++++ fittrackee/workouts/utils/workouts.py | 19 +++- 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/fittrackee/tests/workouts/test_workouts_api_1_post.py b/fittrackee/tests/workouts/test_workouts_api_1_post.py index e149bec2..103549e5 100644 --- a/fittrackee/tests/workouts/test_workouts_api_1_post.py +++ b/fittrackee/tests/workouts/test_workouts_api_1_post.py @@ -217,6 +217,22 @@ def assert_workout_data_wo_gpx(data: Dict) -> None: assert records[3]['value'] == 10.0 +def assert_files_are_deleted(app: Flask, user: User) -> None: + upload_directory = os.path.join( + app.config["UPLOAD_FOLDER"], f"workouts/{user.id}" + ) + assert ( + len( + [ + name + for name in os.listdir(upload_directory) + if os.path.isfile(os.path.join(upload_directory, name)) + ] + ) + == 0 + ) + + class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): def test_it_returns_error_if_user_is_not_authenticated( self, app: Flask, sport_1_cycling: Sport, gpx_file: str @@ -800,6 +816,56 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): ) assert 'data' not in data + def test_it_cleans_uploaded_file_on_gpx_processing_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + with patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + + def test_it_cleans_uploaded_file_and_static_map_on_segments_creation_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + + with patch( + 'fittrackee.workouts.utils.workouts.create_segment', + side_effect=ValueError(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + @pytest.mark.parametrize( 'client_scope, can_access', [ @@ -1399,6 +1465,31 @@ class TestPostWorkoutWithZipArchive(ApiTestCaseMixin): ) assert 'data' not in data + def test_it_cleans_uploaded_file_on_error( + self, app: Flask, user_1: User, sport_1_cycling: Sport + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + file_path = os.path.join(app.root_path, 'tests/files/gpx_test.zip') + # 'gpx_test.zip' contains 3 gpx files (same data) and 1 non-gpx file + with open(file_path, 'rb') as zip_file, patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(zip_file, 'gpx_test.zip'), data='{"sport_id": 1}' + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1) + class TestPostAndGetWorkoutWithGpx(ApiTestCaseMixin): def workout_assertion( diff --git a/fittrackee/workouts/utils/workouts.py b/fittrackee/workouts/utils/workouts.py index f033177a..5872af11 100644 --- a/fittrackee/workouts/utils/workouts.py +++ b/fittrackee/workouts/utils/workouts.py @@ -12,7 +12,7 @@ from sqlalchemy import exc from werkzeug.datastructures import FileStorage from werkzeug.utils import secure_filename -from fittrackee import db +from fittrackee import appLog, db from fittrackee.files import get_absolute_file_path from fittrackee.users.models import User, UserSportPreference @@ -279,12 +279,26 @@ def get_new_file_path( return file_path +def delete_files( + absolute_gpx_filepath: Optional[str], absolute_map_filepath: Optional[str] +) -> None: + try: + if absolute_gpx_filepath and os.path.exists(absolute_gpx_filepath): + os.remove(absolute_gpx_filepath) + if absolute_map_filepath and os.path.exists(absolute_map_filepath): + os.remove(absolute_map_filepath) + except Exception: + appLog.error('Unable to delete files after processing error.') + + def process_one_gpx_file( params: Dict, filename: str, stopped_speed_threshold: float ) -> Workout: """ Get all data from a gpx file to create a workout with map image """ + absolute_gpx_filepath = None + absolute_map_filepath = None try: gpx_data, map_data, weather_data = get_gpx_info( params['file_path'], stopped_speed_threshold @@ -314,8 +328,10 @@ def process_one_gpx_file( absolute_map_filepath = get_absolute_file_path(map_filepath) generate_map(absolute_map_filepath, map_data) except (gpxpy.gpx.GPXXMLSyntaxException, TypeError) as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('error', 'error during gpx file parsing', e) except Exception as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('error', 'error during gpx processing', e) try: @@ -337,6 +353,7 @@ def process_one_gpx_file( db.session.commit() return new_workout except (exc.IntegrityError, ValueError) as e: + delete_files(absolute_gpx_filepath, absolute_map_filepath) raise WorkoutException('fail', 'Error during workout save.', e) From ac6605c5c9d4efd3bc5f4a20acdbe0740b2bb5b9 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 10:57:04 +0100 Subject: [PATCH 3/7] API & Client - update error message on workout save error --- fittrackee/workouts/utils/workouts.py | 5 ++--- fittrackee_client/src/locales/en/api.json | 1 + fittrackee_client/src/locales/fr/api.json | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fittrackee/workouts/utils/workouts.py b/fittrackee/workouts/utils/workouts.py index 5872af11..65d0f3b3 100644 --- a/fittrackee/workouts/utils/workouts.py +++ b/fittrackee/workouts/utils/workouts.py @@ -8,7 +8,6 @@ from uuid import UUID import gpxpy.gpx import pytz from flask import current_app -from sqlalchemy import exc from werkzeug.datastructures import FileStorage from werkzeug.utils import secure_filename @@ -352,9 +351,9 @@ def process_one_gpx_file( db.session.add(new_segment) db.session.commit() return new_workout - except (exc.IntegrityError, ValueError) as e: + except Exception as e: delete_files(absolute_gpx_filepath, absolute_map_filepath) - raise WorkoutException('fail', 'Error during workout save.', e) + raise WorkoutException('error', 'error when saving workout', e) def is_gpx_file(filename: str) -> bool: diff --git a/fittrackee_client/src/locales/en/api.json b/fittrackee_client/src/locales/en/api.json index aaf23a63..96a6d551 100644 --- a/fittrackee_client/src/locales/en/api.json +++ b/fittrackee_client/src/locales/en/api.json @@ -8,6 +8,7 @@ "error during gpx file parsing": "Error during gpx file parsing.", "error during gpx processing": "Error during gpx processing.", "error on getting configuration": "Error on getting configuration.", + "error when saving workout": "Error when saving workout.", "error when updating configuration": "Error when updating configuration", "error, please try again or contact the administrator": "Error, please try again or contact the administrator.", "error, registration is disabled": "Error, registration is disabled.", diff --git a/fittrackee_client/src/locales/fr/api.json b/fittrackee_client/src/locales/fr/api.json index 31b14ccd..bf5676c3 100644 --- a/fittrackee_client/src/locales/fr/api.json +++ b/fittrackee_client/src/locales/fr/api.json @@ -8,6 +8,7 @@ "error during gpx file parsing": "Erreur lors de l'analyse du fichier.", "error during gpx processing": "Erreur lors du traitement du fichier gpx.", "error on getting configuration": "Erreur lors de la récupération de la configuration.", + "error when saving workout": "Erreur lors de l'enregistrement de la séance.", "error when updating configuration": "Erreur lors de la mise à jour de la configuration", "error, please try again or contact the administrator": "Erreur, veuillez réessayer ou contacter l'administrateur.", "error, registration is disabled": "Erreur, les inscriptions sont désactivées.", From 51fe110a6f9782442c01175bcdb1ab919fe53516 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 11:17:19 +0100 Subject: [PATCH 4/7] build client dist files --- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- .../dist/static/js/{admin.4313b7d9.js => admin.3f508723.js} | 2 +- .../static/js/{admin.4313b7d9.js.map => admin.3f508723.js.map} | 2 +- fittrackee/dist/static/js/app.0e84b321.js | 2 ++ fittrackee/dist/static/js/app.0e84b321.js.map | 1 + fittrackee/dist/static/js/app.4a1985d7.js | 2 -- fittrackee/dist/static/js/app.4a1985d7.js.map | 1 - .../dist/static/js/{profile.98e985f4.js => profile.9d91816f.js} | 2 +- .../js/{profile.98e985f4.js.map => profile.9d91816f.js.map} | 2 +- .../dist/static/js/{reset.572eac46.js => reset.685c3c25.js} | 2 +- .../static/js/{reset.572eac46.js.map => reset.685c3c25.js.map} | 2 +- .../js/{statistics.d3c3c7bd.js => statistics.f4227d0e.js} | 2 +- .../{statistics.d3c3c7bd.js.map => statistics.f4227d0e.js.map} | 2 +- .../static/js/{workouts.0fd5b207.js => workouts.a06ab85f.js} | 2 +- .../js/{workouts.0fd5b207.js.map => workouts.a06ab85f.js.map} | 2 +- 17 files changed, 16 insertions(+), 16 deletions(-) rename fittrackee/dist/static/js/{admin.4313b7d9.js => admin.3f508723.js} (96%) rename fittrackee/dist/static/js/{admin.4313b7d9.js.map => admin.3f508723.js.map} (98%) create mode 100644 fittrackee/dist/static/js/app.0e84b321.js create mode 100644 fittrackee/dist/static/js/app.0e84b321.js.map delete mode 100644 fittrackee/dist/static/js/app.4a1985d7.js delete mode 100644 fittrackee/dist/static/js/app.4a1985d7.js.map rename fittrackee/dist/static/js/{profile.98e985f4.js => profile.9d91816f.js} (98%) rename fittrackee/dist/static/js/{profile.98e985f4.js.map => profile.9d91816f.js.map} (99%) rename fittrackee/dist/static/js/{reset.572eac46.js => reset.685c3c25.js} (99%) rename fittrackee/dist/static/js/{reset.572eac46.js.map => reset.685c3c25.js.map} (99%) rename fittrackee/dist/static/js/{statistics.d3c3c7bd.js => statistics.f4227d0e.js} (98%) rename fittrackee/dist/static/js/{statistics.d3c3c7bd.js.map => statistics.f4227d0e.js.map} (99%) rename fittrackee/dist/static/js/{workouts.0fd5b207.js => workouts.a06ab85f.js} (99%) rename fittrackee/dist/static/js/{workouts.0fd5b207.js.map => workouts.a06ab85f.js.map} (99%) diff --git a/fittrackee/dist/index.html b/fittrackee/dist/index.html index 8369cf5a..6a2f7b22 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 ad59d68d..5d289367 100644 --- a/fittrackee/dist/service-worker.js +++ b/fittrackee/dist/service-worker.js @@ -1,2 +1,2 @@ -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 l={};const n=s=>e(s,a),o={module:{uri:a},exports:l,require:n};i[a]=Promise.all(t.map((s=>o[s]||n(s)))).then((s=>(r(...s),l)))}}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:"06af823d4f4f780da39dedddaaa49bd7"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.e504ceb2.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.c2966dd5.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.d72fe9e5.js",revision:null},{url:"/static/js/431.386df171.js",revision:null},{url:"/static/js/633.23ee7aff.js",revision:null},{url:"/static/js/858.922b6a43.js",revision:null},{url:"/static/js/93.37abd50d.js",revision:null},{url:"/static/js/admin.4313b7d9.js",revision:null},{url:"/static/js/app.4a1985d7.js",revision:null},{url:"/static/js/chunk-vendors.504d6d07.js",revision:null},{url:"/static/js/password.c0f2f8e4.js",revision:null},{url:"/static/js/password.de.b81f881f.js",revision:null},{url:"/static/js/password.en.b4ea7085.js",revision:null},{url:"/static/js/password.fr.1d179591.js",revision:null},{url:"/static/js/password.it.be465eec.js",revision:null},{url:"/static/js/profile.98e985f4.js",revision:null},{url:"/static/js/reset.572eac46.js",revision:null},{url:"/static/js/statistics.d3c3c7bd.js",revision:null},{url:"/static/js/workouts.0fd5b207.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 l={};const n=s=>e(s,a),o={module:{uri:a},exports:l,require:n};i[a]=Promise.all(t.map((s=>o[s]||n(s)))).then((s=>(r(...s),l)))}}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:"4a22e7ebcadb1a7830a7f42995dd8bb9"},{url:"/manifest.json",revision:"c61028ca6e9f81bf958e6b66238e2d7c"},{url:"/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"/static/css/admin.73df498d.css",revision:null},{url:"/static/css/app.e504ceb2.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.c2966dd5.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.d72fe9e5.js",revision:null},{url:"/static/js/431.386df171.js",revision:null},{url:"/static/js/633.23ee7aff.js",revision:null},{url:"/static/js/858.922b6a43.js",revision:null},{url:"/static/js/93.37abd50d.js",revision:null},{url:"/static/js/admin.3f508723.js",revision:null},{url:"/static/js/app.0e84b321.js",revision:null},{url:"/static/js/chunk-vendors.504d6d07.js",revision:null},{url:"/static/js/password.c0f2f8e4.js",revision:null},{url:"/static/js/password.de.b81f881f.js",revision:null},{url:"/static/js/password.en.b4ea7085.js",revision:null},{url:"/static/js/password.fr.1d179591.js",revision:null},{url:"/static/js/password.it.be465eec.js",revision:null},{url:"/static/js/profile.9d91816f.js",revision:null},{url:"/static/js/reset.685c3c25.js",revision:null},{url:"/static/js/statistics.f4227d0e.js",revision:null},{url:"/static/js/workouts.a06ab85f.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 94b94622..d168501b 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/db25ef0d317eefce6c68dc0b4aa9d64f/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\": \"06af823d4f4f780da39dedddaaa49bd7\"\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.e504ceb2.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.c2966dd5.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.d72fe9e5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.386df171.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.23ee7aff.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.922b6a43.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.37abd50d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.4313b7d9.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.4a1985d7.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.504d6d07.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.c0f2f8e4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.de.b81f881f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.en.b4ea7085.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.fr.1d179591.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.it.be465eec.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.98e985f4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.572eac46.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.d3c3c7bd.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.0fd5b207.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,kCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,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/a82cfb9750c46e3a4b728a6c805ebd88/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\": \"4a22e7ebcadb1a7830a7f42995dd8bb9\"\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.e504ceb2.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.c2966dd5.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.d72fe9e5.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/431.386df171.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/633.23ee7aff.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/858.922b6a43.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/93.37abd50d.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/admin.3f508723.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/app.0e84b321.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/chunk-vendors.504d6d07.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.c0f2f8e4.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.de.b81f881f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.en.b4ea7085.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.fr.1d179591.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/password.it.be465eec.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/profile.9d91816f.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/reset.685c3c25.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/statistics.f4227d0e.js\",\n \"revision\": null\n },\n {\n \"url\": \"/static/js/workouts.a06ab85f.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,kCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,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/js/admin.4313b7d9.js b/fittrackee/dist/static/js/admin.3f508723.js similarity index 96% rename from fittrackee/dist/static/js/admin.4313b7d9.js rename to fittrackee/dist/static/js/admin.3f508723.js index 912a86ee..0556ccf8 100644 --- a/fittrackee/dist/static/js/admin.4313b7d9.js +++ b/fittrackee/dist/static/js/admin.3f508723.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[328],{6e3:function(t,e,i){i.r(e),i.d(e,{default:function(){return _}});var a=i(6252),n=i(2262),s=i(8273),c=i(5801),r=i(9917);const S=t=>((0,a.dD)("data-v-64629971"),t=t(),(0,a.Cn)(),t),l={id:"admin",class:"view"},p={key:0,class:"container"},u=S((()=>(0,a._)("div",{id:"bottom"},null,-1)));var T=(0,a.aZ)({__name:"AdminView",setup(t){const e=(0,r.o)(),i=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_CONFIG])),S=(0,a.Fl)((()=>e.getters[c.SY.GETTERS.APP_STATS])),T=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.IS_ADMIN])),d=(0,a.Fl)((()=>e.getters[c.YN.GETTERS.USER_LOADING]));return(0,a.wF)((()=>e.dispatch(c.SY.ACTIONS.GET_APPLICATION_STATS))),(t,e)=>{const c=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",l,[(0,n.SU)(d)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",p,[(0,n.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,appConfig:(0,n.SU)(i),appStatistics:(0,n.SU)(S)},null,8,["appConfig","appStatistics"])):((0,a.wg)(),(0,a.j4)(s.Z,{key:1})),u]))])}}}),d=i(3744);const o=(0,d.Z)(T,[["__scopeId","data-v-64629971"]]);var _=o}}]); -//# sourceMappingURL=admin.4313b7d9.js.map \ No newline at end of file +//# sourceMappingURL=admin.3f508723.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/admin.4313b7d9.js.map b/fittrackee/dist/static/js/admin.3f508723.js.map similarity index 98% rename from fittrackee/dist/static/js/admin.4313b7d9.js.map rename to fittrackee/dist/static/js/admin.3f508723.js.map index cfa24ad4..866345e7 100644 --- a/fittrackee/dist/static/js/admin.4313b7d9.js.map +++ b/fittrackee/dist/static/js/admin.3f508723.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/admin.4313b7d9.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, 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-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig, IAppStatistics } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminView',\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 appStatistics: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n )\n const isAuthUserAmin: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n )\n const userLoading: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\n onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_unref(userLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(isAuthUserAmin))\n ? (_openBlock(), _createBlock(_component_router_view, {\n key: 0,\n appConfig: _unref(appConfig),\n appStatistics: _unref(appStatistics)\n }, null, 8, [\"appConfig\", \"appStatistics\"]))\n : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n _hoisted_3\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&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-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/admin.3f508723.js","mappings":"mOAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CACjBC,GAAI,QACJC,MAAO,QAEHC,EAAa,CACjBC,IAAK,EACLF,MAAO,aAEHG,EAA2BT,GAAa,KAAmBU,EAAAA,EAAAA,GAAoB,MAAO,CAAEL,GAAI,UAAY,MAAO,KAUrH,OAA4BM,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,KAERC,GAAqCC,EAAAA,EAAAA,KACzC,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,cAEhBC,GAA6CH,EAAAA,EAAAA,KACjD,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,aAEhBE,GAAuCJ,EAAAA,EAAAA,KAC3C,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,YAEhBC,GAAoCN,EAAAA,EAAAA,KACxC,IAAMH,EAAMI,QAAQI,EAAAA,GAAAA,QAAAA,gBAKxB,OAFEE,EAAAA,EAAAA,KAAc,IAAMV,EAAMW,SAASN,EAAAA,GAAAA,QAAAA,yBAE9B,CAACO,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO5B,EAAY,EACzD6B,EAAAA,EAAAA,IAAOT,IAWLU,EAAAA,EAAAA,IAAoB,IAAI,KAVvBH,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOzB,EAAY,EACnD0B,EAAAA,EAAAA,IAAOX,KACHS,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaN,EAAwB,CAClDrB,IAAK,EACLS,WAAWgB,EAAAA,EAAAA,IAAOhB,GAClBI,eAAeY,EAAAA,EAAAA,IAAOZ,IACrB,KAAM,EAAG,CAAC,YAAa,qBACzBU,EAAAA,EAAAA,OAAcI,EAAAA,EAAAA,IAAaC,EAAAA,EAAU,CAAE5B,IAAK,KACjDC,MAGN,CAEJ,I,UCvDA,MAAM4B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/AdminView.vue?67de","webpack://fittrackee_client/./src/views/AdminView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, 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-64629971\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { computed, ComputedRef, onBeforeMount } from 'vue'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig, IAppStatistics } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdminView',\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 appStatistics: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_STATS]\n )\n const isAuthUserAmin: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_ADMIN]\n )\n const userLoading: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n\n onBeforeMount(() => store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_STATS))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_unref(userLoading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(isAuthUserAmin))\n ? (_openBlock(), _createBlock(_component_router_view, {\n key: 0,\n appConfig: _unref(appConfig),\n appStatistics: _unref(appStatistics)\n }, null, 8, [\"appConfig\", \"appStatistics\"]))\n : (_openBlock(), _createBlock(NotFound, { key: 1 })),\n _hoisted_3\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AdminView.vue?vue&type=style&index=0&id=64629971&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-64629971\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","id","class","_hoisted_2","key","_hoisted_3","_createElementVNode","_defineComponent","__name","setup","__props","store","useStore","appConfig","computed","getters","ROOT_STORE","appStatistics","isAuthUserAmin","AUTH_USER_STORE","userLoading","onBeforeMount","dispatch","_ctx","_cache","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_unref","_createCommentVNode","_createBlock","NotFound","__exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.0e84b321.js b/fittrackee/dist/static/js/app.0e84b321.js new file mode 100644 index 00000000..15df15c9 --- /dev/null +++ b/fittrackee/dist/static/js/app.0e84b321.js @@ -0,0 +1,2 @@ +(function(){var e={5167:function(e,n,t){"use strict";var r=t(6154),a=t(8566),o=t(2894),i=t(5801),s=t(2024);const l=r.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,a.a)(e);a.j.set(t,n);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const n=`Bearer ${r}`;e.headers&&e.headers.Authorization!==n&&(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&&e.response&&(0,a.a)(e.response.config),Promise.reject(e)))),n["Z"]=l},8566:function(e,n,t){"use strict";t.d(n,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:n,url:t,params:r={},data:a={}}=e;return[n,t,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const n=a(e);if(r.has(n)){const e=r.get(n)||{};e?.abort(),r.delete(n)}return n}},2540:function(e,n,t){"use strict";var r=t(9150);const a=["nb"];function o(){const e=t(4612),n={};return e.keys().forEach((t=>{const r=t.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];n[a]=e(t).default}})),n}n["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},3010:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Über diese Instanz"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["unter ",t(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Quellcode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Wetterdaten von:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt."])},TEXT:e=>{const{normalize:n}=e;return n(["Detaillierte Instanz-Informationen"])}},ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt-E-Mail des Administrators"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. Dateianzahl im zip Archiv"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. Anzahl aktiver Nutzer"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(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:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Neue E-Mail"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Kein Text eingegeben"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Das wasswort wurde zurückgesetzt."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainings existieren"])},IMAGE:e=>{const{normalize:n}=e;return n(["Bild"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aktualisiere Anwemdungskonfiguration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:n}=e;return n(["Nutzer"])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["Adminstatus"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Accountstatus"])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["Trainingsanzahl"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte entfernen"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Die E-Mail Adresse wurde aktualisiert."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netzwerkfehler."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum vollständigen Export existiert bereits."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fehler beim Einlesen der GPX-Datei"])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fehler bei der GPX-Verarbeitung."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:n}=e;return n(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:n}=e;return n(["Keine Datei ausgewählt."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum Datenexport existiert bereits."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Gebe ein gültiges Authentifizierungstoken an."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sportart existiert nicht."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrierung erfolgreich."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Du hast keine Berechtigung."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["Nächste"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["Vorhergehende"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorisieren"])},BACK:e=>{const{normalize:n}=e;return n(["Zurück"])},CANCEL:e=>{const{normalize:n}=e;return n(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:n}=e;return n(["Deaktivieren"])},EDIT:e=>{const{normalize:n}=e;return n(["Bearbeiten"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aktivieren"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NO:e=>{const{normalize:n}=e;return n(["Nein"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Daten-Export anfragen"])},RESET:e=>{const{normalize:n}=e;return n(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Speichern"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["Über"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bestätigung"])},CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["Tag"]),n(["Tage"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["Dokumentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Versteckt"])},HOME:e=>{const{normalize:n}=e;return n(["Startseite"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["aufsteigend"])},DESC:e=>{const{normalize:n}=e;return n(["absteigend"])},LABEL:e=>{const{normalize:n}=e;return n(["sortieren"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sortiert nach"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["pro Seite"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Dieser Monat"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Etwas lief schief"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["ID"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Erstellt am"])},NAME:e=>{const{normalize:n}=e;return n(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Geltungsbereich"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf auth-Endpunkte"])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf workouts-Endpunkte"])}},URL:e=>{const{normalize:n}=e;return n(["Anwendungs-URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2-Anwendungen"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Anwendung ",t(r(0))," fragt an:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n([t(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:n}=e;return n(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(["Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst."])},TITLE:e=>{const{normalize:n}=e;return n(["Account löschen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\n\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Änderungen unserer Datenschutzrichtlinie"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Die folgenden Informationen werden gesammelt:\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\n- Technische Informationen (Browser und Betriebssystem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welche Informationen sammeln wir?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\n\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\n\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\n\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen."])},TITLE:e=>{const{normalize:n}=e;return n(["Geben wir Informationen an Außenstehende weiter?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst."])},TITLE:e=>{const{normalize:n}=e;return n(["Wie schützen wir deinen Informationen?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken."])},TITLE:e=>{const{normalize:n}=e;return n(["Für was verwenden wir deine Informationen?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\n\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\n\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein."])},TITLE:e=>{const{normalize:n}=e;return n(["Seitennutzung durch Kinder"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu."])},TITLE:e=>{const{normalize:n}=e;return n(["Deine Zustimmung"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Letztes Update"])},TITLE:e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergsteigen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rudern"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Gehen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistik"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["Monat"])},week:e=>{const{normalize:n}=e;return n(["Woche"])},year:e=>{const{normalize:n}=e;return n(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:n}=e;return n(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Gebe ein Passwort ein"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Datenexport"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archiv herunterladen"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generiere Link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Du kannst alle 24 Stunden ein Archiv anfragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fehlgeschlagen (bitte frage einen anderen Export an)"])},in_progress:e=>{const{normalize:n}=e;return n(["in Arbeit..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte fordere ein neues Passworts an."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ich möchte meinen Account löschen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Datenschutzrichtlinie wurde aktualisiert, bitte ",t(r(0))," sie vor dem Fortfahren."])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmeldung"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Abmelden"])},LOG_IN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Passwort vergessen?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["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:{AVERAGE:e=>{const{normalize:n}=e;return n(["mittel"])},GOOD:e=>{const{normalize:n}=e;return n(["gut"])},LABEL:e=>{const{normalize:n}=e;return n(["Passwortstärke"])},STRONG:e=>{const{normalize:n}=e;return n(["start"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Schreibe einige, aber nicht alle Buchstaben groß."])},anotherWord:e=>{const{normalize:n}=e;return n(["Füge weitere weniger gebräuchliche Wörter hinzu."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},capitalization:e=>{const{normalize:n}=e;return n(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:n}=e;return n(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},l33t:e=>{const{normalize:n}=e;return n(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},noNeed:e=>{const{normalize:n}=e;return n(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:n}=e;return n(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermeide Angabe von letzten Jahreszahlen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermeide wiederholungen von Wörtern und Zeichen."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},sequences:e=>{const{normalize:n}=e;return n(["Vermeide gebräuchliche Zeichenfolgen."])},useWords:e=>{const{normalize:n}=e;return n(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])}},WEAK:e=>{const{normalize:n}=e;return n(["schwach"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Dein Passwort wurde aktualisiert. Klicke ",t(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Zurück zum Profil"])},BIO:e=>{const{normalize:n}=e;return n(["Biographie"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:n}=e;return n(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Bitte ",t(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Erster Tag der Woche"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Vorname"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nachname"])},LOCATION:e=>{const{normalize:n}=e;return n(["Ort"])},MONDAY:e=>{const{normalize:n}=e;return n(["Montag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Bildausgabe"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Bild entfernen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Bild aktualisieren"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Einstellungsausgabe"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},COLOR:e=>{const{normalize:n}=e;return n(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["aktiv"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Geschwindigkeitsschwellenwert für Stopp"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sportarten-Einstellungsausgabe"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["Konto"])},APPS:e=>{const{normalize:n}=e;return n(["Anwendungen"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE:e=>{const{normalize:n}=e;return n(["Profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["Sportarten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Zeitzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperiales System (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Einheiten für die Distanz"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisches System (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ich habe die ",t(r(0))," gelesen und stimme ihr zu."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Entschuldigung, die Registrierung ist deaktiviert."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["E-Mail zur Kontobestätigung erneut senden"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},REVIEW:e=>{const{normalize:n}=e;return n(["überprüfen"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Dieser Account ist inaktiv."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["Benutzerbild"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Du hast die ",t(r(0))," akzeptiert."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["Analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["Aufstieg"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschnittsgeschwindigkeit"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["zurück zum Training"])},DATE:e=>{const{normalize:n}=e;return n(["Datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["zeige Filter"])},DISTANCE:e=>{const{normalize:n}=e;return n(["Entfernung"])},DURATION:e=>{const{normalize:n}=e;return n(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:n}=e;return n(["Höhe"])},END:e=>{const{normalize:n}=e;return n(["Ende"])},FROM:e=>{const{normalize:n}=e;return n(["Von"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberge Filter"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["Die Distanz muss größer als 0 sein"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["Die Dauer muss größer als 0 Sekunden sein"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nächstes Training"])},NOTES:e=>{const{normalize:n}=e;return n(["Anmerkungen"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Keine Trainings."])},PAUSES:e=>{const{normalize:n}=e;return n(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorheriges Training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["Aufzeichnung"]),n(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["Segment"]),n(["Segmente"])])},SPEED:e=>{const{normalize:n}=e;return n(["Geschwindigkeit"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["Sportart"]),n(["Sportarten"])])},START:e=>{const{normalize:n}=e;return n(["Start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:n}=e;return n(["Titel"])},TO:e=>{const{normalize:n}=e;return n(["bis"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Füge erstes Training hinzu!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["klarer Tag"])},"clear-night":e=>{const{normalize:n}=e;return n(["klare Nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["wolkig"])},fog:e=>{const{normalize:n}=e;return n(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:n}=e;return n(["Regen"])},sleet:e=>{const{normalize:n}=e;return n(["Schneeregen"])},snow:e=>{const{normalize:n}=e;return n(["Schnee"])},wind:e=>{const{normalize:n}=e;return n(["Wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["Temperatur"])},WIND:e=>{const{normalize:n}=e;return n(["Wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OSO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SO"])},SSE:e=>{const{normalize:n}=e;return n(["SSO"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["ohne .gpx Datei"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["mit .gpx Datei"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["Training"]),n(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["oder .zip Datei mit .gpx Dateien"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},2709:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["About this instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["under ",t(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Source code"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weather data from:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Any additional information that may be useful to your users. Markdown syntax can be used."])},TEXT:e=>{const{normalize:n}=e;return n(["Detailed instance information"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activate account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Add/remove admin rights, delete user account."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email for contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. files of zip archive"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["If 0, no limitation on registration."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. number of active users"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to delete ",t(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to reset ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Current email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["New email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["No text entered"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The password has been reset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workouts exist"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Update application configuration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["user"]),n(["users"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["registration date"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["username"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["workout count"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Remove admin rights"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The email address has been updated."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Network Error."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["At least one file in zip archive exceeds size limit, please check the archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["A completed export request already exists."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: valid email must be provided."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Error during gpx file parsing."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Error during gpx processing."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Error on getting configuration."])},"error when saving workout":e=>{const{normalize:n}=e;return n(["Error when saving workout."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Invalid credentials."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:n}=e;return n(["No file provided."])},"no selected file":e=>{const{normalize:n}=e;return n(["No selected file."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["A data export request already exists."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Provide a valid auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expired. Please log in again."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sport does not exist."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Successfully registered."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["The number of files in the archive exceeds the limit."])},"user does not exist":e=>{const{normalize:n}=e;return n(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["You do not have permissions."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["next"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["previous"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Authorize"])},BACK:e=>{const{normalize:n}=e;return n(["Back"])},CANCEL:e=>{const{normalize:n}=e;return n(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Delete my account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disable"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit"])},ENABLE:e=>{const{normalize:n}=e;return n(["Enable"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Request data export"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Submit"])},YES:e=>{const{normalize:n}=e;return n(["Yes"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["day"]),n(["days"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Displayed"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation"])},HERE:e=>{const{normalize:n}=e;return n(["here"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Hidden"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascending"])},DESC:e=>{const{normalize:n}=e;return n(["descending"])},LABEL:e=>{const{normalize:n}=e;return n(["sort"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["order by"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["This month"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page not found"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Something went wrong"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Application description"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Application name"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["Application URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 applications"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The application ",t(r(0))," is requesting:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Authorize ",t(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Delete application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Add an application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application not found!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["All existing associated tokens have been revoked."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['You can request the deletion of your account at any time by going to this address (after logging in) and clicking on "Delete My Account" button in your account edition.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account deletion"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["If we decide to change our privacy policy, we will post those changes on this page.\n\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Changes to our Privacy Policy"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["The following information are collected:\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\n- Technical information (browser name and operating system)."])},TITLE:e=>{const{normalize:n}=e;return n(["What information do we collect?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\n\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \n\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\n\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password."])},TITLE:e=>{const{normalize:n}=e;return n(["Do we disclose any information to outside parties?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information."])},TITLE:e=>{const{normalize:n}=e;return n(["How do we protect your information?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\n- The email address you provide may be used to send you information or confirm your account modifications."])},TITLE:e=>{const{normalize:n}=e;return n(["What do we use your information for?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\n\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\n\nLaw requirements can be different if this server is in another jurisdiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Site usage by children"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["By using our site, you consent to our web site privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Your Consent"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Last update"])},TITLE:e=>{const{normalize:n}=e;return n(["privacy policy"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Electric)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Mountaineering"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rowing"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Walking"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistics"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["month"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Current password"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Enter a password"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Download archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generating link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["You can request an archive by 24 hours"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["errored (please request another export)"])},in_progress:e=>{const{normalize:n}=e;return n(["in progres..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["hide password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Invalid token, please request a new password reset."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["I want to delete my account"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The privacy policy has been updated, please ",t(r(0))," it before proceeding."])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["New password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["No users found."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Forgot password?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["At least 8 characters required."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["average"])},GOOD:e=>{const{normalize:n}=e;return n(["good"])},LABEL:e=>{const{normalize:n}=e;return n(["password strength"])},STRONG:e=>{const{normalize:n}=e;return n(["strong"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Capitalize some, but not all letters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Add more words that are less common."])},associatedYears:e=>{const{normalize:n}=e;return n(["Avoid years that are associated with you."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalize more than the first letter."])},dates:e=>{const{normalize:n}=e;return n(["Avoid dates and years that are associated with you."])},l33t:e=>{const{normalize:n}=e;return n(["Avoid predictable letter substitutions like ","@"," for a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Use longer keyboard patterns and change typing direction multiple times."])},noNeed:e=>{const{normalize:n}=e;return n(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:n}=e;return n(["If you use this password elsewhere, you should change it."])},recentYears:e=>{const{normalize:n}=e;return n(["Avoid recent years."])},repeated:e=>{const{normalize:n}=e;return n(["Avoid repeated words and characters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Avoid reversed spellings of common words."])},sequences:e=>{const{normalize:n}=e;return n(["Avoid common character sequences."])},useWords:e=>{const{normalize:n}=e;return n(["Use multiple words, but avoid common phrases."])}},WEAK:e=>{const{normalize:n}=e;return n(["weak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Your password have been updated. Click ",t(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account edition"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Back to profile"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Birth date"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Date display format"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Please ",t(r(0))," to change your email address again or contact the administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["First day of week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["First name"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Last name"])},LOCATION:e=>{const{normalize:n}=e;return n(["Location"])},MONDAY:e=>{const{normalize:n}=e;return n(["Monday"])},PICTURE:e=>{const{normalize:n}=e;return n(["Picture"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Picture edition"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Remove picture"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Update picture"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferences edition"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacy policy"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registration date"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["active"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["stopped speed threshold"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sports preferences edition"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["picture"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["privacy policy"])},PROFILE:e=>{const{normalize:n}=e;return n(["profile"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperial system (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Units for distance"])},METRIC:e=>{const{normalize:n}=e;return n(["Metric system (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["I have read and agree to the ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registration is disabled."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Resend account confirmation email"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset your password"])},REVIEW:e=>{const{normalize:n}=e;return n(["review"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["This user account is inactive."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["user picture"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["You have accepted the ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Add a workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analysis"])},ASCENT:e=>{const{normalize:n}=e;return n(["ascent"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["average speed"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["ave. speed"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["back to workout"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["display filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["duration"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Edit the workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevation"])},END:e=>{const{normalize:n}=e;return n(["end"])},FROM:e=>{const{normalize:n}=e;return n(["from"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["hide filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Both elevation values must be provided and be greater than or equal to 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. altitude"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max files"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max size"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Next workout"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["No file provided"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["no folder inside"])},NO_MAP:e=>{const{normalize:n}=e;return n(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["No next workout"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["No previous workout"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["No records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["No workouts."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Previous workout"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Ave. speed"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Farthest distance"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Highest ascent"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Longest duration"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["remaining characters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["speed"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["start elevation axis at zero"])},TITLE:e=>{const{normalize:n}=e;return n(["title"])},TO:e=>{const{normalize:n}=e;return n(["to"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Upload one!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["clear day"])},"clear-night":e=>{const{normalize:n}=e;return n(["clear night"])},cloudy:e=>{const{normalize:n}=e;return n(["cloudy"])},fog:e=>{const{normalize:n}=e;return n(["fog"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["partly cloudy night"])},rain:e=>{const{normalize:n}=e;return n(["rain"])},sleet:e=>{const{normalize:n}=e;return n(["sleet"])},snow:e=>{const{normalize:n}=e;return n(["snow"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidity"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperature"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["without .gpx file"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["with .gpx file"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["or .zip file containing .gpx files"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},5479:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["A propos de cette instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["sous licence ",t(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Code source (en)"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Source des données météo :"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée."])},TEXT:e=>{const{normalize:n}=e;return n(["Information détaillée de l'instance"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activer le compte"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email de l'administrateur pour contact "])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Nombre max. de fichiers dans une archive zip "])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Si égal à 0, pas limite d'inscription"])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Nombre maximum d'utilisateurs actifs "])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:n}=e;return n(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",t(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",t(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nouvelle adresse email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["pas de texte saisi"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Le mot de passe a été réinitialisé."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["des séances existent"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Configurer l'application."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Changer l'email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utilisateur"]),n(["utilisateurs"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["status administrateur"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["statut du compte"])},USERNAME:e=>{const{normalize:n}=e;return n(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["nombre de séances"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Retirer les droits d'admin"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'adresse email a été mise à jour."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Erreur réseau."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Une demande d'export terminée existe déjà."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Erreur lors de l'analyse du fichier."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Erreur lors du traitement du fichier gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la récupération de la configuration."])},"error when saving workout":e=>{const{normalize:n}=e;return n(["Erreur lors de l'enregistrement de la séance."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Jeton de connexion, merci de vous reconnecter."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"no file part":e=>{const{normalize:n}=e;return n(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:n}=e;return n(["Pas de fichier sélectionné."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Une demande d'export de données est en cours"])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Merci de fournir un jeton de connexion valide."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Ce sport n'existe pas."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["suivant"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["précédent"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autoriser"])},BACK:e=>{const{normalize:n}=e;return n(["Retour"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:n}=e;return n(["Désactiver"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier"])},ENABLE:e=>{const{normalize:n}=e;return n(["Activer"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtrer"])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},NO:e=>{const{normalize:n}=e;return n(["Non"])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Demander un export de données"])},RESET:e=>{const{normalize:n}=e;return n(["Réinit."])},SUBMIT:e=>{const{normalize:n}=e;return n(["Valider"])},YES:e=>{const{normalize:n}=e;return n(["Oui"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["à propos"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["jour"]),n(["jours"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Affiché"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["ici"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Masqué"])},HOME:e=>{const{normalize:n}=e;return n(["Accueil"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascendant"])},DESC:e=>{const{normalize:n}=e;return n(["descendant"])},LABEL:e=>{const{normalize:n}=e;return n(["tri"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["trier par "])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Ce mois-ci"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page introuvable"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Une erreur s'est produite"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Créée le"])},NAME:e=>{const{normalize:n}=e;return n(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:n}=e;return n(["URL de l'application"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applications OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'application ",t(r(0))," demande les accès suivants :"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autoriser ",t(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application introuvable !"])},NO_APPS:e=>{const{normalize:n}=e;return n(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tous les jetons associés existants ont été révoqués."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous "Supprimer mon compte" dans l\'espace de mise à jour de votre compte.'])},TITLE:e=>{const{normalize:n}=e;return n(["Suppression du compte"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\n\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Modifications de notre politique de confidentialité"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Les informations suivantes sont collectées :\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\n- Données techniques (nom du navigateur et du système d'exploitation)."])},TITLE:e=>{const{normalize:n}=e;return n(["Quelles sont les informations que nous recueillons ?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\n\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\n\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\n\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe."])},TITLE:e=>{const{normalize:n}=e;return n(["Divulguons-nous des informations à des tiers ?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment protégeons-nous vos informations ?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment utilisons-nous vos informations ?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\n\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\n\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Protection des mineurs"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["En utilisant notre site, vous acceptez la politique de confidentialité de notre site web."])},TITLE:e=>{const{normalize:n}=e;return n(["Votre consentement"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Dernière mise à jour"])},TITLE:e=>{const{normalize:n}=e;return n(["politique de confidentialité"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["VTT (Électrique)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinisme"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Aviron"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Marche"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiques"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mois"])},week:e=>{const{normalize:n}=e;return n(["semaine"])},year:e=>{const{normalize:n}=e;return n(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:n}=e;return n(["Courriel"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Saisissez un mot de passe"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Export des données"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Télécharger l'archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["lien en cours de génération..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Vous pouvez demander un export par 24h"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["en erreur (veuillez demander une nouvelle archive)"])},in_progress:e=>{const{normalize:n}=e;return n(["en cours..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Je souhaite supprimer mon compte"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La politique de confidentialité a été mise à jour. Veuillez l'",t(r(0))," avant de poursuivre."])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Se déconnecter"])},LOG_IN:e=>{const{normalize:n}=e;return n(["connecter"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Mot de passe oublié ?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["8 caractères minimum."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["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:{AVERAGE:e=>{const{normalize:n}=e;return n(["moyenne"])},GOOD:e=>{const{normalize:n}=e;return n(["bonne"])},LABEL:e=>{const{normalize:n}=e;return n(["robustesse du mot de passe"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Mettez quelques lettres en majuscules, mais pas toutes."])},anotherWord:e=>{const{normalize:n}=e;return n(["Ajoutez des mots moins courants."])},associatedYears:e=>{const{normalize:n}=e;return n(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:n}=e;return n(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},l33t:e=>{const{normalize:n}=e;return n(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},noNeed:e=>{const{normalize:n}=e;return n(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:n}=e;return n(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])},recentYears:e=>{const{normalize:n}=e;return n(["Évitez les dernières années."])},repeated:e=>{const{normalize:n}=e;return n(["Évitez les mots et les caractères répétés."])},reverseWords:e=>{const{normalize:n}=e;return n(["Évitez les orthographes inversées des mots courants."])},sequences:e=>{const{normalize:n}=e;return n(["Évitez les séquences de caractères courantes."])},useWords:e=>{const{normalize:n}=e;return n(["Utilisez plusieurs mots, mais évitez les phrases courantes."])}},WEAK:e=>{const{normalize:n}=e;return n(["faible"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Votre mot de passe a été mis à jour. Cliquez ",t(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Revenir au profil"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Veuillez vous ",t(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Prénom"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nom"])},LOCATION:e=>{const{normalize:n}=e;return n(["Lieu"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lundi"])},PICTURE:e=>{const{normalize:n}=e;return n(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour de l'image de profil"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Supprimer"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Mettre à jour l'image"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Politique de confidentialité"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Date d'inscription"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actif"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["seuil de vitesse arrêtée"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences des sports"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["compte"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["image"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["préférences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["politique de confidentialité"])},PROFILE:e=>{const{normalize:n}=e;return n(["profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Fuseau horaire"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Système impérial (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unités pour les distances"])},METRIC:e=>{const{normalize:n}=e;return n(["Système métrique (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["J'ai lu et accepte la ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinitialiser votre mot de passe"])},REVIEW:e=>{const{normalize:n}=e;return n(["accepter"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Le compte de cet utilisateur est inactif."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["photo de l'utilisateur"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Vous avez accepté la ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["revenir à la séance"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["afficher les filtres"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["durée"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifier la séance"])},ELEVATION:e=>{const{normalize:n}=e;return n(["altitude"])},END:e=>{const{normalize:n}=e;return n(["fin"])},FROM:e=>{const{normalize:n}=e;return n(["à partir de"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["masquer les filtres"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude max"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["taille max. "])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance suivante"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["pas de répertoire"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Pas de séances."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance précédente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["vitesse"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["début"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titre"])},TO:e=>{const{normalize:n}=e;return n(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajoutez votre première séance !"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["ensoleillé"])},"clear-night":e=>{const{normalize:n}=e;return n(["nuit claire"])},cloudy:e=>{const{normalize:n}=e;return n(["nuageux"])},fog:e=>{const{normalize:n}=e;return n(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:n}=e;return n(["pluie"])},sleet:e=>{const{normalize:n}=e;return n(["neige fondue"])},snow:e=>{const{normalize:n}=e;return n(["neige"])},wind:e=>{const{normalize:n}=e;return n(["venteux"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidité"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["température"])},WIND:e=>{const{normalize:n}=e;return n(["vent"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNO"])},NW:e=>{const{normalize:n}=e;return n(["NO"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSO"])},SW:e=>{const{normalize:n}=e;return n(["SO"])},W:e=>{const{normalize:n}=e;return n(["O"])},WNW:e=>{const{normalize:n}=e;return n(["ONO"])},WSW:e=>{const{normalize:n}=e;return n(["OSO"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["sans fichier .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["avec un fichier .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["séance"]),n(["séances"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["ou une archive .zip contenant des fichiers .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},6013:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contatta l'amministratore"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee è un tracker self-hosted per attività outdoor."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sotto licenza ",t(r(0))," "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Codice sorgente"])}},a={ACTION:e=>{const{normalize:n}=e;return n(["Azione"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Attiva account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Amministrazione"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aggiungi/rimuovi permessi, elimina account utente."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicazione"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email di contatto dell'amministratore"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di files zip"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Se settato a 0, non ci sono limiti per le registrazioni."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di utenti attivi"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["nessuna mail di contatto"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dei file caricabili (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Configurazione applicazione"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dell'archivio zip (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Ritorna ad amministrazione"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler eliminare ",t(r(0))," account? Tutti i dati verranno persi, quest'azione non può essere annullata."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler resettare ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Email corrente"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Elimina utente"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'invio di email è disabilitato."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Attiva/Disattiva sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nuova email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["La password è stata reimpostata."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento disabilitata."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento abilitata."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workout esistono"])},IMAGE:e=>{const{normalize:n}=e;return n(["Immagine"])},LABEL:e=>{const{normalize:n}=e;return n(["Etichetta"])}},TITLE:e=>{const{normalize:n}=e;return n(["Amministrazione sport"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aggiorna configurazione applicazione."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aggiorna email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utente"]),n(["utenti"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["stato admin"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["data di registrazione"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["stato account"])},USERNAME:e=>{const{normalize:n}=e;return n(["nome utente"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["numero di workout"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Aggiungi permessi di amministratore"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Rimuovi permessi di amministratore"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'indirizzo email è stato aggiornato."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Errore di rete."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amminstratore."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: dev'essere inserita un'email valida."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Errore nella lettura del file gpx."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Errore nell'elaborazione del file gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Errore nella lettura della configurazione."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Errore nell'aggiornamento della configurazione"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Errore, per favore riprova o contatta l'amministratore."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Errore, la registrazione è disabilitata."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File con estensione non permessa."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La dimensione del file è maggiore di quella massima permessa."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Credenziali errate."])},"invalid payload":e=>{const{normalize:n}=e;return n(["I dati inseriti non sono validi."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nuova email dev'essere diversa dalla vecchia mail"])},"no file part":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"no selected file":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: la password inserita e la conferma non combaciano."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Insersci un token di autenticazione valido."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto. Per favore ripeti il log in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Mi dispiace, quell'username è già esistente."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Questo sport non esiste."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrato con successo."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Il numero di files nell'archivio supera il limite massimo permesso."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utente non esiste."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Dev'essere inserita un'email valida"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Non hai i permessi necessari."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["avanti"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["precedente"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Re-invia email di conferma"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorizza"])},BACK:e=>{const{normalize:n}=e;return n(["Indietro"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annulla"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Resetta filtri"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Elimina il mio account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disattiva"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica"])},ENABLE:e=>{const{normalize:n}=e;return n(["Attiva"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtra"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Invia"])},YES:e=>{const{normalize:n}=e;return n(["Si"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Conferma"])},CONTACT:e=>{const{normalize:n}=e;return n(["contatto"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["giorno"]),n(["giorni"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Mostrato"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentazione"])},HERE:e=>{const{normalize:n}=e;return n(["qui"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Nascosto"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["Dal più basso al più alto"])},DESC:e=>{const{normalize:n}=e;return n(["Dal più alto al più basso"])},LABEL:e=>{const{normalize:n}=e;return n(["ordina"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["ordina per"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totale"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Questo mese"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina non trovata"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout non trovato"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Qualcosa è andato storto"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amministratore."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi una nuova applicazione OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Descrizione applicazione"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Nome applicazione"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL redirect"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura alla configurazioen dell'applicazione."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a usersendpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["URL applicazione"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applicazioni OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare quest'app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'applicazione ",t(r(0))," sta chiedendo:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autorizzi ",t(r(0))," ad utilizzare il tuo account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copia nella clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Elimina applicazione"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi applicazione"])},NO_APP:e=>{const{normalize:n}=e;return n(["Applicazione non trovata!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["nessuna applicazione"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["nessuna descrizione"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Rimuovi tutti i tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler rimuovere tutti i token?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tutti i token esistenti associati sono stati rimossi."])}},d={},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Trasporto)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cicliscmo (Virtuale)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Escursioni"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Elettrica)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinismo"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Canottaggio"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Corsa"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Alpino)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Racchette da neve"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Sentieri"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Camminata"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiche"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mese"])},week:e=>{const{normalize:n}=e;return n(["settimana"])},year:e=>{const{normalize:n}=e;return n(["anno"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Non hai ricevuto istruzioni?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hai già un account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata"])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Password corrente"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Inserisci un indirizzo email valido."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Inserisci una password"])},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtra per username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["nascondi password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Token invalido, per favore richiedi un nuovo reset della password."])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nuova password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Nessun utente trovato."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Password dimenticata?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Inserisci almeno 8 caratteri."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Reset password"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["media"])},GOOD:e=>{const{normalize:n}=e;return n(["buona"])},LABEL:e=>{const{normalize:n}=e;return n(["sicurezza password"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Inserisci qualche maiuscola."])},anotherWord:e=>{const{normalize:n}=e;return n(["Aggiungi più parole che sono meno comuni."])},associatedYears:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},capitalization:e=>{const{normalize:n}=e;return n(["Inserisci maiuscole oltre alla prima lettera."])},dates:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},l33t:e=>{const{normalize:n}=e;return n(["Evita sostituzioni prevedibili, per esempio, ","@"," per la a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Usa patterns più lunghi e cambia direzione di scrittura più volte."])},noNeed:e=>{const{normalize:n}=e;return n(["Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole."])},pwned:e=>{const{normalize:n}=e;return n(["È consigliabile cambiare questa password se è utilizzata per altro."])},recentYears:e=>{const{normalize:n}=e;return n(["Evita date recenti."])},repeated:e=>{const{normalize:n}=e;return n(["Evita di ripetere lettere e parole."])},reverseWords:e=>{const{normalize:n}=e;return n(["Evita di scrivere parole al contrario."])},sequences:e=>{const{normalize:n}=e;return n(["Evita sequenze di caratteri comuni."])},useWords:e=>{const{normalize:n}=e;return n(["Usa più parole, ma evita frasi comuni."])}},WEAK:e=>{const{normalize:n}=e;return n(["bassa"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La tua password è stata aggiornata. Clicca ",t(r(0))," per effettuare il login."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Tipo di account"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Dati relativi alle salite (singoli, totale)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Ritorna al profilo"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Data di nascita"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Formato data"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica profilo"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze sport"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Per favore ",t(r(0))," per cambiare di nuovo la tua mail o contatta l'amministratore"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Primo giorno della settimana"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Nome"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Cognome"])},LOCATION:e=>{const{normalize:n}=e;return n(["Posizione"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lunedì"])},PICTURE:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Rimuovi foto"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Aggiorna foto"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profilo"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Data di registrazione"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["azione"])},COLOR:e=>{const{normalize:n}=e;return n(["colore"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disattivato dall'amministratore"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["attivo"])},LABEL:e=>{const{normalize:n}=e;return n(["etichetta"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Limite minimo di velocità"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze sport"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Il tuo account è stato creato con successo."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un link per attivare il tuo account è stato inviato all'indirizzo specificato."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Domenica"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["foto"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferenze"])},PROFILE:e=>{const{normalize:n}=e;return n(["profilo"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Sistema imperiale (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unità per la distanza"])},METRIC:e=>{const{normalize:n}=e;return n(["Sistema metrico (m, km, m/s, °C)"])}}},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Mi dispiace, la registrazione è disabilitata."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Re-invia email di conferma dell'account"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Resetta password"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["mostra password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Questo account è inattivo."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo "_".'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["foto profilo"])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Aggiungi un workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analisi"])},ASCENT:e=>{const{normalize:n}=e;return n(["salita"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["velocità media"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vel. media"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["ritorna al workout"])},DATE:e=>{const{normalize:n}=e;return n(["data"])},DESCENT:e=>{const{normalize:n}=e;return n(["discesa"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["mostra filtri"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distanza"])},DURATION:e=>{const{normalize:n}=e;return n(["durata"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifica il workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevazione"])},END:e=>{const{normalize:n}=e;return n(["fine"])},FROM:e=>{const{normalize:n}=e;return n(["da"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["file .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["nascondi filtri"])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distanza dev'essere maggiore di 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durata dev'essere maggiore di 0"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Ultimi workout"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica più workout"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine massima"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["file massimi"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["dimensione massima"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["velocità massima"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine minima"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Prossimo workout"])},NOTES:e=>{const{normalize:n}=e;return n(["note"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(['data dal file gpx, senza "pulizia"'])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Nessun file scelto"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["nessuna cartella all'interno"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Nessuna mappa"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout successivo"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Nessuna nota"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento precedente"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout precedente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Nessun record."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Nessun workout."])},PAUSES:e=>{const{normalize:n}=e;return n(["pause"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segmento precedente"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Workout precedente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vel. media"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distanza più lunga"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Salita più alta"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durata più lunga"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vel. massima"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["caratteri rimanenti"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segmento"]),n(["segmenti"])])},SPEED:e=>{const{normalize:n}=e;return n(["velocità"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["inizio"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Inizio e fine"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["partenza asse elevazione a 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titolo"])},TO:e=>{const{normalize:n}=e;return n(["a"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durata totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica file!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["cielo chiaro"])},"clear-night":e=>{const{normalize:n}=e;return n(["notte chiara"])},cloudy:e=>{const{normalize:n}=e;return n(["nuvoloso"])},fog:e=>{const{normalize:n}=e;return n(["nebbia"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["parzialmente nuvoloso"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["notte parzialmente nuvolosa"])},rain:e=>{const{normalize:n}=e;return n(["pioggia"])},sleet:e=>{const{normalize:n}=e;return n(["nevischio"])},snow:e=>{const{normalize:n}=e;return n(["neve"])},wind:e=>{const{normalize:n}=e;return n(["vento"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["umidità"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatura"])},WIND:e=>{const{normalize:n}=e;return n(["vento"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["senza file .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["con file .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["data workout"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare questo workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["file .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["o file .zip contenente files .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},1901:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},3726:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Over deze instantie"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is zelf-gehoste activiteiten tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Onder ",t(r(0))," licentie "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Broncode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weer gegevens van:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden."])},TEXT:e=>{const{normalize:n}=e;return n(["Gedetailleerde informatie over deze instantie"])}},ACTION:e=>{const{normalize:n}=e;return n(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activeer account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Instellingen"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email voor contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal bestanden in zip archief"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Bij 0, geen limiet op registratie."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal actieve gebruikers"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["geen contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van bestanden voor upload (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van zip archief (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Terug naar beheer"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u de account ",t(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u het wachtwoord voor ",t(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Huidige email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Verwijder gebruiker"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nieuwe email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Geen tekst ingegeven"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het wachtwoord werd gereset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainingen aanwezig"])},IMAGE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Beheer sporten"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["De applicatie configureren."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["gebruiker"]),n(["gebruikers"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["aantal trainingen"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Verwijder admin rechten"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het emailadres werd bijgewerkt."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netwerk fout."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een voltooide export aanvraag."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: een geldige email is vereist."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fout bij het verwerken van het gpx bestand."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fout bij verwerken van gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Bestandsformaat niet toegelaten."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Bestandsgrootte is groter dan toegestaan."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:n}=e;return n(["Geen bestand geselecteerd."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een export aanvraag."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Geef een geldig auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signatuur verlopen. Log opnieuw in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Deze sport bestaat niet."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Succesvol geregistreerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["U hebt geen machtigingen."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["volgende"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["vorige"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Toekennen"])},BACK:e=>{const{normalize:n}=e;return n(["Terug"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Verwijder mijn account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Uitzetten"])},EDIT:e=>{const{normalize:n}=e;return n(["Bewerken"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aanzetten"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},NO:e=>{const{normalize:n}=e;return n(["Nee"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreer"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export aanvragen"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Opslaan"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["over"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bevestiging"])},CONTACT:e=>{const{normalize:n}=e;return n(["contacteer"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["dag"]),n(["dagen"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Weergegeven"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentatie"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Verborgen"])},HOME:e=>{const{normalize:n}=e;return n(["Startscherm"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["oplopend"])},DESC:e=>{const{normalize:n}=e;return n(["aflopend"])},LABEL:e=>{const{normalize:n}=e;return n(["sorteer"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Deze maand"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Nieuwe OAuth2 app toevoegen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheim"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["App omschrijving"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Probleem bij"])},NAME:e=>{const{normalize:n}=e;return n(["Naam van de app"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Omvang"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["geeft toestemming tot aanpassen van de applicatie instellingen."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["App URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 apps"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["De app ",t(r(0))," vraagt:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Toegang geven aan ",t(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Verwijder app"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Voeg een app toe"])},NO_APP:e=>{const{normalize:n}=e;return n(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle bestaande tokens werden ingetrokken."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop "Verwijder mijn account" te klikken in uw instellingen.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account verwijderen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\n\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Aanpassingen aan ons Privacybeleid"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["De volgende informatie wordt verzameld:\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\n- Technische informatie (de browsernaam en naam van het besturingssysteem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welke informatie wordt er door ons verzameld?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\n\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\n\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\n\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen."])},TITLE:e=>{const{normalize:n}=e;return n(["Wordt er informatie met derden gedeeld?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie."])},TITLE:e=>{const{normalize:n}=e;return n(["Hoe beschermen we uw informatie?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden."])},TITLE:e=>{const{normalize:n}=e;return n(["Waarvoor wordt de opgegeven informatie gebruikt?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\n\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\n\nWetgeving kan verschillen als de server zich op een andere plaats bevindt."])},TITLE:e=>{const{normalize:n}=e;return n(["Gebruik door minderjarigen"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Door deze site te gebruiken, gaat u akkoord met ons privacybeleid."])},TITLE:e=>{const{normalize:n}=e;return n(["Uw toestemming"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Laatste aanpassing"])},TITLE:e=>{const{normalize:n}=e;return n(["privacybeleid"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Virtueel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Trektocht"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (Elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergbeklimmen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Roeien"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Sneeuwschoenen"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandelen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistieken"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["maand"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["jaar"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Al een account aangemaakt?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Geef een paswoord in"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data exporteren"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archief downloaden"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["link aanmaken..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Je kan 1 keer per 24h een archief aanvragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fout (gelieve een nieuw archief aan te vragen)"])},in_progress:e=>{const{normalize:n}=e;return n(["Bezig met verwerken..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ik wil mijn account verwijderen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Het privacybeleid werd aangepast, gelieve te ",t(r(0))," voor verdergaan."])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Uitloggen"])},LOG_IN:e=>{const{normalize:n}=e;return n(["inloggen"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Wachtwoord"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Wachtwoord vergeten?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Tenminste 8 karakters vereist."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Wachtwoord reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["gemiddeld"])},GOOD:e=>{const{normalize:n}=e;return n(["goed"])},LABEL:e=>{const{normalize:n}=e;return n(["wachtwoord sterkte"])},STRONG:e=>{const{normalize:n}=e;return n(["sterk"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Gebruik enkele hoofdletters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Voeg meer niet gangbare woorden toe."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermijd jaartallen met een persoonlijke betekenis."])},capitalization:e=>{const{normalize:n}=e;return n(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:n}=e;return n(["Vermijd persoonlijke gegevens en jaartallen."])},l33t:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},noNeed:e=>{const{normalize:n}=e;return n(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])},pwned:e=>{const{normalize:n}=e;return n(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermijd recente jaartallen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermijd opeenvolgende woorden en karakters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},sequences:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare opeenvolgingen."])},useWords:e=>{const{normalize:n}=e;return n(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])}},WEAK:e=>{const{normalize:n}=e;return n(["zwak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Uw wachtwoord werd aangepast. Klik ",t(r(0))," om in te loggen."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account aanpassen"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Hoogte gerelateerde data (opnames, totaal)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Terug naar profiel"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Sport voorkeuren wijzigen"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Gelieve ",t(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Eerste dag van de week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Voornaam"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Achternaam"])},LOCATION:e=>{const{normalize:n}=e;return n(["Locatie"])},MONDAY:e=>{const{normalize:n}=e;return n(["Maandag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Afbeelding aanpassen"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Afbeelding verwijderen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Afbeelding veranderen"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Voorkeuren aanpassen"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Datum registratie"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["actie"])},COLOR:e=>{const{normalize:n}=e;return n(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actief"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["snelheidsgrens voor stilstand"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sport voorkeuren aanpassen"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["afbeelding"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["voorkeuren"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE:e=>{const{normalize:n}=e;return n(["profiel"])},SPORTS:e=>{const{normalize:n}=e;return n(["sporten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Tijdzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperialistisch systeem (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Eenheid voor afstand"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisch systeem (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ik heb het ",t(r(0))," gelezen en goedgekeurd."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registreren is uitgeschakeld."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Opnieuw zenden van account bevestigingsmail"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset uw wachtwoord"])},REVIEW:e=>{const{normalize:n}=e;return n(["beoordeel"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Deze account is niet actief."])},USERNAME:e=>{const{normalize:n}=e;return n(["Gebruikersnaam"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["gebruikersafbeelding"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["U hebt het ",t(r(0))," aanvaard."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["geklommen"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["gemiddelde snelheid"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["gem. snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["Terug naar training"])},DATE:e=>{const{normalize:n}=e;return n(["datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["gedaald"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["toon filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["afstand"])},DURATION:e=>{const{normalize:n}=e;return n(["duur"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training aanpassen"])},ELEVATION:e=>{const{normalize:n}=e;return n(["hoogte"])},END:e=>{const{normalize:n}=e;return n(["einde"])},FROM:e=>{const{normalize:n}=e;return n(["van"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberg filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["De afstand moet groter zijn dan 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["De duur moet langer zijn dan 0 seconden"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. hoogte"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max. grootte"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Volgende training"])},NOTES:e=>{const{normalize:n}=e;return n(["notities"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data vanuit gpx, zonder op te schonen"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen vorige training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Geen records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Geen trainingen."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorige training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Gem. snelheid"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Langste afstand"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Langste duur"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["resterende karakters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segmenten"])])},SPEED:e=>{const{normalize:n}=e;return n(["snelheid"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sporten"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start en aankomst"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titel"])},TO:e=>{const{normalize:n}=e;return n(["aan"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Eén uploaden!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["heldere dag"])},"clear-night":e=>{const{normalize:n}=e;return n(["heldere nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["bewolkt"])},fog:e=>{const{normalize:n}=e;return n(["mist"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:n}=e;return n(["regen"])},sleet:e=>{const{normalize:n}=e;return n(["natte sneeuw"])},snow:e=>{const{normalize:n}=e;return n(["sneeuw"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatuur"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OZO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["Z"])},SE:e=>{const{normalize:n}=e;return n(["ZO"])},SSE:e=>{const{normalize:n}=e;return n(["ZZO"])},SSW:e=>{const{normalize:n}=e;return n(["ZZW"])},SW:e=>{const{normalize:n}=e;return n(["ZW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WZW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["zonder .gpx bestand"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["met .gpx bestand"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["training"]),n(["trainingen"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["datum training"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["of .zip archief met .gpx bestanden"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},136:function(e,n,t){"use strict";var r=t(3148),a=t(7028),o=t(9963),i=t(2343),s=t(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=t(6252),c=t(2262),u=t(3577);const d=e=>((0,l.dD)("data-v-97e20d3a"),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"},z=["href"],I=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),g={class:"footer-item"};var R=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const n=e,{adminContact:t,version:r}=(0,c.BK)(n);return(e,n)=>{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)(t)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(t)}`},(0,u.zw)(e.$t("common.CONTACT")),9,z)])):(0,l.kq)("",!0),I,(0,l._)("div",g,[(0,l.Wm)(a,{to:"/privacy-policy"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])])])}}}),N=t(3744);const U=(0,N.Z)(R,[["__scopeId","data-v-97e20d3a"]]);var h=U,v=(t(7658),t(6595)),C=t(5801),w=t(9917),D=t(6287);const f=e=>((0,l.dD)("data-v-ab6e62ae"),e=e(),(0,l.Cn)(),e),P={id:"nav"},k={class:"nav-container"},L={class:"nav-app-name"},b={class:"nav-items-close"},M=f((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),y={key:0,class:"nav-items-group"},G=f((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),F={class:"nav-items-user-menu"},W={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},B={key:1,class:"nav-items-group"},x=f((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var K=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:n}){const t=(0,w.o)(),r=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,n("menuInteraction",!0)}function d(){i.value=!1,n("menuInteraction",!1)}function m(e){t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){t.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,n)=>{const t=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",k,[(0,l._)("div",L,[(0,l._)("div",{class:"nav-item app-name",onClick:n[0]||(n[0]=n=>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:n[1]||(n[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[M,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:n[2]||(n[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:n[3]||(n[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",y,[(0,l.Wm)(t,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(t,{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)(t,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(t,{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)(t,{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),G])):(0,l.kq)("",!0)]),(0,l._)("div",F,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",W,[(0,l._)("div",Y,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(t,{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",B,[(0,l.Wm)(t,{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)(t,{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 H=(0,N.Z)(K,[["__scopeId","data-v-ab6e62ae"]]);var $=H,Z=t(7167);const V={id:"no-config"},q={class:"error-page"},j={class:"error-img"},X=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,n)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",q,[(0,l._)("div",j,[(0,l.Wm)(Z.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,X)])]))}});const J=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var ee=J;const ne=(0,l._)("div",{id:"top"},null,-1),te={key:0,class:"app-container"},re={class:"app-loading"},ae={class:"container scroll"},oe=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[oe];var se=(0,l.aZ)({__name:"App",setup(e){const n=(0,w.o)(),t=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>n.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 n=navigator.language.split("-")[0];n in D.v1&&(e=n)}catch(t){e="en"}n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),n.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,n)=>{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)($,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",te,[(0,l._)("div",re,[(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)(t)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(ee,{key:1}))],2)),(0,l._)("div",ae,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(h,{key:2,version:(0,c.SU)(t)?(0,c.SU)(t).version:"",adminContact:(0,c.SU)(t).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const le=se;var ce=le,ue=t(2540),de=t(1020),me=t(2894);const Ee={class:"alert-message"},_e=["innerHTML"];var Se=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Ee,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(t))},null,8,_e)]))}});const Te=(0,N.Z)(Se,[["__scopeId","data-v-69d7e4ff"]]);var pe=Te,Ae=t(2531);const Oe={class:"custom-textarea"},ze=["id","name","maxLength","disabled"],Ie={class:"remaining-chars"};var ge=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:n}){const t=e,r=(0,c.iH)("");function a(e){n("updateValue",e.target.value)}return(0,l.YP)((()=>t.input),(e=>{r.value=null===e?"":e})),(n,t)=>((0,l.wg)(),(0,l.iD)("div",Oe,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLength:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value=e),onInput:a},null,40,ze),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(n.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const Re=(0,N.Z)(ge,[["__scopeId","data-v-eb7fa534"]]);var Ne=Re,Ue=t(3649),he=(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 n=e,{digits:t,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(n),m=(0,l.Fl)((()=>d.value?Ue.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,Ue.sC)(a.value,s.value,m.value,t.value):parseFloat(a.value.toFixed(t.value))));return(e,n)=>((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)(he,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,we=t(2201);const De={class:"dropdown-wrapper"},fe={key:0,class:"dropdown-list"},Pe=["onClick"];var ke=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:n}){const t=e,r=(0,we.yj)(),a=(0,c.iH)(!1),o=t.options.map((e=>e));function i(){a.value=!a.value}function s(e){n("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(n,t)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(n.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:n.value===e.selected}]),key:t,onClick:e=>s(n)},(0,u.zw)(n.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Le=(0,N.Z)(ke,[["__scopeId","data-v-9590c0e6"]]);var be=Le;const Me={class:"error-message"},ye={key:0},Ge={key:1};var Fe=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Me,[Array.isArray((0,c.SU)(t))?((0,l.wg)(),(0,l.iD)("ul",ye,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(t),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},(0,u.zw)(e.$t(n)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Ge,(0,u.zw)(e.$t((0,c.SU)(t))),1))]))}});const We=(0,N.Z)(Fe,[["__scopeId","data-v-2659a79a"]]);var Ye=We;const Be={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),Ke=(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),He=[xe,Ke];function $e(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ze={name:"CyclingSport"};const Ve=(0,N.Z)(Ze,[["render",$e]]);var qe=Ve;const je={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"},Xe=(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),Je=[Xe,Qe];function en(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",je,Je)}var nn={name:"CyclingTransport"};const tn=(0,N.Z)(nn,[["render",en]]);var rn=tn;const an={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"},on=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),sn=[on];function ln(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",an,sn)}var cn={name:"CyclingVirtual"};const un=(0,N.Z)(cn,[["render",ln]]);var dn=un;const mn={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"},En=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_n=(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),Sn=[En,_n];function Tn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mn,Sn)}var pn={name:"Hiking"};const An=(0,N.Z)(pn,[["render",Tn]]);var On=An;const zn={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"},In=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),gn=(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),Rn=[In,gn];function Nn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zn,Rn)}var Un={name:"MountainBiking"};const hn=(0,N.Z)(Un,[["render",Nn]]);var vn=hn;const Cn={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"},wn=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Dn=[wn];function fn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"MountainBikingElectric"};const kn=(0,N.Z)(Pn,[["render",fn]]);var Ln=kn;const bn={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 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"},Mn=(0,l.uE)(' silhouette of a person doing mountaineering ',2),yn=[Mn];function Gn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bn,yn)}var Fn={name:"Mountaineering"};const Wn=(0,N.Z)(Fn,[["render",Gn]]);var Yn=Wn;const Bn={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"},xn=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Kn=(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),Hn=[xn,Kn];function $n(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Bn,Hn)}var Zn={name:"Rowing"};const Vn=(0,N.Z)(Zn,[["render",$n]]);var qn=Vn;const jn={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"},Xn=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Qn=(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),Jn=[Xn,Qn];function et(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",jn,Jn)}var nt={name:"Running"};const tt=(0,N.Z)(nt,[["render",et]]);var rt=tt;const at={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"},ot=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),it=(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),st=[ot,it];function lt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",at,st)}var ct={name:"SkiingAlpine"};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 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),_t=(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),St=[Et,_t];function Tt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"SkiingCrossCountry"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const zt={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"},It=(0,l.uE)('silhouette of a person with snowshoes',6),gt=[It];function Rt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zt,gt)}var Nt={name:"Snowshoes"};const Ut=(0,N.Z)(Nt,[["render",Rt]]);var ht=Ut;const vt={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"},Ct=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),wt=(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),Dt=[Ct,wt];function ft(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,Dt)}var Pt={name:"Trail"};const kt=(0,N.Z)(Pt,[["render",ft]]);var Lt=kt;const bt={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"},Mt=(0,l.uE)('silhouette of a walking person',3),yt=[Mt];function Gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bt,yt)}var Ft={name:"Walking"};const Wt=(0,N.Z)(Ft,[["render",Gt]]);var Yt=Wt;const Bt=["title"];var xt=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const n=e,{color:t,sportLabel:r,title:a}=(0,c.BK)(n),o=(0,l.f3)("sportColors");return(e,n)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(t)?(0,c.SU)(t):(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)(qe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rn,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dn,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(On,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ln,{key:5})):(0,l.kq)("",!0),"Mountaineering"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yn,{key:6})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qn,{key:7})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rt,{key:8})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:9})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:10})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ht,{key:11})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:12})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yt,{key:13})):(0,l.kq)("",!0)],12,Bt))}});const Kt=xt;var Ht=Kt;const $t={class:"loader"};function Zt(e,n){return(0,l.wg)(),(0,l.iD)("div",$t)}const Vt={},qt=(0,N.Z)(Vt,[["render",Zt],["__scopeId","data-v-4c9921ee"]]);var jt=qt;const Xt={id:"modal"},Qt={class:"custom-modal"},Jt={key:0,class:"modal-message"},er={key:1,class:"modal-message"},nr={class:"modal-buttons"};var tr=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:n}){const t=e,r=(0,w.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(t),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{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",Xt,[(0,l._)("div",Qt,[(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",Jt,[(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",er,(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",nr,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=e=>n("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:t[1]||(t[1]=e=>n("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const rr=(0,N.Z)(tr,[["__scopeId","data-v-5aa8db48"]]);var ar=rr;const or=[{target:pe,name:"AlertMessage"},{target:Ae.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Ye,name:"ErrorMessage"},{target:jt,name:"Loader"},{target:ar,name:"Modal"},{target:Ht,name:"SportImage"}],ir={mounted:(e,n)=>{e.clickOutsideEvent=function(t){e===t.target||e.contains(t.target)||n.value(t)},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 sr=t(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 lr=(0,o.ri)(ce).provide("sportColors",sr.Zo).use(ue.Z).use(me.Z).use(de.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",ir);or.forEach((e=>{lr.component(e.name,e.target)})),lr.mount("#app")},1020:function(e,n,t){"use strict";t.d(n,{Z:function(){return hc}});var r=t(2201),a=(t(7658),t(6252)),o=t(3577),i=t(9963),s=t(2262),l=t(9252),c=t(5801),u=t(9917),d=t(8966),m=t(2335);const E=e=>((0,a.dD)("data-v-80b4a9e6"),e=e(),(0,a.Cn)(),e),_={id:"admin-app",class:"admin-card"},S=["onSubmit"],T={for:"admin_contact"},p=["value"],A=["disabled"],O={for:"max_users"},z=["disabled"],I={class:"user-limit-help"},g={class:"info-box"},R=E((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),N={for:"max_single_file_size"},U=["disabled"],h={for:"max_zip_file_size"},v=["disabled"],C={for:"gpx_limit_import"},w=["disabled"],D={class:"about-label",for:"about"},f={class:"textarea-description"},P=["innerHTML"],k={class:"privacy-policy-label",for:"privacy_policy"},L={class:"textarea-description"},b=["innerHTML"],M={key:5,class:"form-buttons"},y={class:"confirm",type:"submit"},G=["onClick"],F={key:6,class:"form-buttons"};var W=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const n=e,{edition:t}=(0,s.BK)(n),E=(0,u.o)(),W=(0,r.tv)(),Y=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:""}),B=(0,a.Fl)((()=>E.getters[c.SY.GETTERS.ERROR_MESSAGES]));function x(e){Object.keys(Y).map((n=>{["max_single_file_size","max_zip_file_size"].includes(n)?Y[n]=(0,d.j)(e[n]):["about","privacy_policy"].includes(n)?Y[n]=null!==e[n]?e[n]:"":Y[n]=e[n]}))}function K(){x(n.appConfig),E.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),W.push("/admin/application")}function H(){const e=Object.assign({},Y);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,E.dispatch(c.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{n.appConfig&&x(n.appConfig)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",_,[(0,a.Wm)(c,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)(H,["prevent"])},[(0,a._)("label",T,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(t)||Y.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":n[0]||(n[0]=e=>Y.admin_contact=e),disabled:!(0,s.SU)(t)},null,8,A)),[[i.nr,Y.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,p))]),(0,a._)("label",O,[(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":n[1]||(n[1]=e=>Y.max_users=e),disabled:!(0,s.SU)(t)},null,8,z),[[i.nr,Y.max_users]])]),(0,a._)("div",I,[(0,a._)("span",g,[R,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",N,[(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":n[2]||(n[2]=e=>Y.max_single_file_size=e),disabled:!(0,s.SU)(t)},null,8,U),[[i.nr,Y.max_single_file_size]])]),(0,a._)("label",h,[(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":n[3]||(n[3]=e=>Y.max_zip_file_size=e),disabled:!(0,s.SU)(t)},null,8,v),[[i.nr,Y.max_zip_file_size]])]),(0,a._)("label",C,[(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":n[4]||(n[4]=e=>Y.gpx_limit_import=e),disabled:!(0,s.SU)(t)},null,8,w),[[i.nr,Y.gpx_limit_import]])]),(0,a._)("label",D,(0,o.zw)(e.$t("admin.ABOUT.TEXT"))+": ",1),(0,a._)("span",f,(0,o.zw)(e.$t("admin.ABOUT.DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":n[5]||(n[5]=e=>Y.about=e)},null,512)),[[i.nr,Y.about]]):((0,a.wg)(),(0,a.iD)("div",{key:1,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.about?Y.about:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,P)),(0,a._)("label",k,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE")))+": ",1),(0,a._)("span",L,(0,o.zw)(e.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":n[6]||(n[6]=e=>Y.privacy_policy=e)},null,512)),[[i.nr,Y.privacy_policy]]):((0,a.wg)(),(0,a.iD)("div",{key:3,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.privacy_policy?Y.privacy_policy:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,b)),(0,s.SU)(B)?((0,a.wg)(),(0,a.j4)(r,{key:4,message:(0,s.SU)(B)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t)?((0,a.wg)(),(0,a.iD)("div",M,[(0,a._)("button",y,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,G)])):((0,a.wg)(),(0,a.iD)("div",F,[(0,a._)("button",{class:"confirm",onClick:n[7]||(n[7]=(0,i.iM)((n=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:n[8]||(n[8]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,S)])),_:1})])}}}),Y=t(3744);const B=(0,Y.Z)(W,[["__scopeId","data-v-80b4a9e6"]]);var x=B;const K={class:"stat-card"},H={class:"stat-content box"},$={class:"stat-icon"},Z={class:"stat-details"},V={class:"stat-huge"},q={class:"stat"};var j=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const n=e,{icon:t,text:r,value:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("div",H,[(0,a._)("div",$,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(t)}`])},null,2)]),(0,a._)("div",Z,[(0,a._)("div",V,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",q,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const X=j;var Q=X;const J={id:"user-stats"};var ee=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const n=e,{appStatistics:t}=(0,s.BK)(n),r=(0,a.Fl)((()=>(0,d.Z)(t.value.uploads_dir_size,!1)));return(e,n)=>((0,a.wg)(),(0,a.iD)("div",J,[(0,a.Wm)(Q,{icon:"users",value:(0,s.SU)(t).users,text:e.$t("admin.USER",(0,s.SU)(t).users)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"tags",value:(0,s.SU)(t).sports,text:e.$t("workouts.SPORT",(0,s.SU)(t).sports)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(t).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(t).workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const ne=ee;var te=ne,re=t(2531);const ae=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),oe={id:"admin-menu",class:"center-card"},ie={class:"admin-menu description-list"},se={class:"application-config-details"},le=ae((()=>(0,a._)("br",null,null,-1))),ce={class:"registration-status"},ue={key:0,class:"email-sending-status"},de=ae((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var me=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const n=e,{appConfig:t,appStatistics:r}=(0,s.BK)(n);return(e,n)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",oe,[(0,a.Wm)(re.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(te,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",ie,[(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",se,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),le,(0,a._)("span",ce,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(t).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(t).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ue,[de,(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 Ee=(0,Y.Z)(me,[["__scopeId","data-v-0dd66f89"]]);var _e=Ee,Se=t(9150),Te=t(631);const pe=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),Ae={id:"admin-sports",class:"admin-card"},Oe={class:"responsive-table"},ze=pe((()=>(0,a._)("th",null,"#",-1))),Ie={class:"text-left"},ge={class:"text-left sport-action"},Re=pe((()=>(0,a._)("th",null,null,-1))),Ne={class:"text-center"},Ue=pe((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),he={class:"cell-heading"},ve={class:"sport-label"},Ce={class:"cell-heading"},we={class:"text-center"},De={class:"cell-heading"},fe={class:"sport-action"},Pe={class:"cell-heading"},ke={class:"action-button"},Le=["onClick"],be={key:0,class:"has-workouts"},Me=pe((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ye=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:n}=(0,Se.QT)(),t=(0,u.o)(),r=(0,a.Fl)((()=>(0,Te.xH)(t.getters[c.O8.GETTERS.SPORTS],n))),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(e,n){t.dispatch(c.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:n})}return(e,n)=>{const t=(0,a.up)("SportImage"),c=(0,a.up)("ErrorMessage"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ae,[(0,a.Wm)(u,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:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",Oe,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[ze,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ie,(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",ge,(0,o.zw)(e.$t("admin.ACTION")),1),Re])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.id},[(0,a._)("td",Ne,[Ue,(0,a.Uk)(" "+(0,o.zw)(n.id),1)]),(0,a._)("td",null,[(0,a._)("span",he,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(t,{title:n.translatedLabel,"sport-label":n.label,color:n.color},null,8,["title","sport-label","color"])]),(0,a._)("td",ve,[(0,a._)("span",Ce,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(n.translatedLabel),1)]),(0,a._)("td",we,[(0,a._)("span",De,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(n.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",fe,[(0,a._)("span",Pe,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ke,[(0,a._)("button",{class:(0,o.C_)({danger:n.is_active}),onClick:e=>d(n.id,!n.is_active)},(0,o.zw)(e.$t(`buttons.${n.is_active?"DIS":"EN"}ABLE`)),11,Le),n.has_workouts?((0,a.wg)(),(0,a.iD)("span",be,[Me,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ge=(0,Y.Z)(ye,[["__scopeId","data-v-6d62af67"]]);var Fe=Ge,We=t(8626),Ye=t(5020),Be=t(6595);const xe={class:"users-filters"},Ke={class:"search-username"},He=["onKeyup","placeholder"];var $e=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:n}){const t=(0,r.yj)(),l=(0,s.iH)(t.query.q?t.query.q:"");function c(){""!==l.value&&n("filterOnUsername",l)}function u(){l.value="",n("filterOnUsername",l.value)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",xe,[(0,a._)("div",Ke,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":n[0]||(n[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,He),[[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 Ze=(0,Y.Z)($e,[["__scopeId","data-v-627a8e91"]]);var Ve=Ze,qe=t(2766),je=t(6558);const Xe=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),Qe={id:"admin-users",class:"admin-card"},Je={key:0,class:"no-users"},en={key:1,class:"responsive-table"},nn=Xe((()=>(0,a._)("th",null,"#",-1))),tn={class:"left-text"},rn={class:"left-text"},an={class:"left-text"},on={class:"cell-heading"},sn={class:"cell-heading"},ln={class:"cell-heading"},cn={class:"cell-heading"},un={class:"text-center"},dn={class:"cell-heading"},mn={class:"text-center"},En={class:"cell-heading"},_n={class:"text-center"},Sn={class:"cell-heading"},Tn={class:"text-center"},pn={class:"cell-heading"},An=["disabled","onClick"];var On=(0,a.aZ)({__name:"AdminUsers",setup(e){const n=(0,u.o)(),t=(0,r.yj)(),l=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,qe.pm)(t.query,d,m));const _=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.ERROR_MESSAGES]));function A(e){n.dispatch(c.RT.ACTIONS.GET_USERS,e)}function O(e){I("q",e.value)}function z(e,t){n.dispatch(c.RT.ACTIONS.UPDATE_USER,{username:e,admin:t})}function I(e,n){E[e]=n,"per_page"===e&&(E.page=1),l.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{n.dispatch(c.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>t.query),(e=>{E=(0,qe.pm)(e,d,m,{query:E}),A(E)})),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Qe,[(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:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ve,{onFilterOnUsername:O}),(0,a.Wm)(We.Z,{sort:(0,s.SU)(qe.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:I},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",Je,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",en,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[nn,(0,a._)("th",tn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",rn,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",an,(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),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.username},[(0,a._)("td",null,[(0,a._)("span",on,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Be.Z,{user:n},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",sn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(t,{to:`/admin/users/${n.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",ln,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(n.email),1)]),(0,a._)("td",null,[(0,a._)("span",cn,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(je.p6)(n.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",un,[(0,a._)("span",dn,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(n.nb_workouts),1)]),(0,a._)("td",mn,[(0,a._)("span",En,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",_n,[(0,a._)("span",Sn,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",Tn,[(0,a._)("span",pn,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:n.admin}),disabled:n.username===(0,s.SU)(_).username,onClick:e=>z(n.username,!n.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${n.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,An)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Ye.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:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const zn=(0,Y.Z)(On,[["__scopeId","data-v-dc12ff78"]]);var In=zn,gn=t(2179);const Rn={class:"profile-tabs custom-checkboxes-group"},Nn={class:"profile-tabs-checkboxes custom-checkboxes"},Un=["id","name","checked","disabled","onInput"];var hn=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const n=e,{tabs:t,selectedTab:r,disabled:i}=(0,s.BK)(n);function l(e){switch(e){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${n.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(n.edition?"/edit":"")}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Rn,[(0,a._)("div",Nn,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(t),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:n},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:n,name:n,checked:(0,s.SU)(r).split("/")[0]===n,disabled:(0,s.SU)(i),onInput:t=>e.$router.push(l(n))},null,40,Un),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${n}`)),1)])])))),128))])]))}});const vn=hn;var Cn=vn;const wn={id:"user-profile"},Dn={class:"box"};var fn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,{user:t,tab:r}=(0,s.BK)(n),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,n)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",wn,[(0,a.Wm)(gn.Z,{user:(0,s.SU)(t)},null,8,["user"]),(0,a._)("div",Dn,[(0,a.Wm)(Cn,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(t)},null,8,["user"])])])}}});const Pn=(0,Y.Z)(fn,[["__scopeId","data-v-9729cba4"]]);var kn=Pn,Ln=t(1585),bn=t(6287);const Mn={id:"user-preferences",class:"description-list"},yn={class:"profile-buttons"};var Gn=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>n.user.language?bn.zK[n.user.language]:bn.zK.en)),l=(0,a.Fl)((()=>n.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>n.user.timezone?n.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>n.user.date_format?n.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>n.user.display_ascent?"DISPLAYED":"HIDDEN"));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`user.PROFILE.${(0,s.SU)(l)}`)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",yn,[(0,a._)("button",{onClick:t[0]||(t[0]=e=>n.$router.push("/profile/edit/preferences"))},(0,o.zw)(n.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:t[1]||(t[1]=e=>n.$router.push("/"))},(0,o.zw)(n.$t("common.HOME")),1)])]))}});const Fn=Gn;var Wn=Fn;const Yn={id:"user-profile-edition",class:"center-card"};var Bn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,t=(0,u.o)(),{user:r,tab:i}=(0,s.BK)(n),l=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","PRIVACY-POLICY"],d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING]));return(e,n)=>{const t=(0,a.up)("router-view"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Yn,[(0,a.Wm)(c,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)(Cn,{tabs:l,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(t,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const xn=Bn;var Kn=xn,Hn=t(313),$n=t(7069),Zn=t(5167),Vn=t(8403);const qn=e=>((0,a.dD)("data-v-6e11106c"),e=e(),(0,a.Cn)(),e),jn={id:"user-infos-edition"},Xn={class:"profile-form form-box"},Qn={key:1,class:"info-box success-message"},Jn=["onSubmit"],et={class:"form-items",for:"email"},nt=["disabled"],tt={class:"form-items",for:"password-field"},rt={class:"form-items",for:"new-password-field"},at={class:"form-buttons"},ot={class:"confirm",type:"submit"},it=["onClick"],st={class:"data-export"},lt={class:"info-box"},ct=qn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),ut={key:0,class:"data-export-archive"},dt=qn((()=>(0,a._)("i",{class:"fa fa-download","aria-hidden":"true"},null,-1))),mt={key:1},Et={key:2},_t=qn((()=>(0,a._)("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1)));var St=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,s.qj)({email:"",password:"",new_password:""}),m=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.USER_LOADING])),E=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.IS_SUCCESS])),S=(0,s.iH)(!1),T=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,s.iH)(!1),A=(0,s.iH)(!1),O=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.EXPORT_REQUEST])),z=(0,a.Fl)((()=>h())),I=(0,s.iH)(!1);function g(){p.value=!0}function R(e){l.email=e.email}function N(e){l.password=e}function U(e){l.new_password=e}function h(){return O.value?(0,je.p6)(O.value.created_at,t.value.timezone,t.value.date_format,!0,null,!0):null}function v(){return!z.value||(0,Hn.Z)(new Date(z.value),(0,$n.Z)(new Date,1))}function C(){const e={email:l.email,password:l.password};l.new_password&&(e.new_password=l.new_password),S.value=l.email!==t.value.email,r.dispatch(c.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function w(e){A.value=e}function D(e){r.dispatch(c.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}function f(){r.dispatch(c.YN.ACTIONS.REQUEST_DATA_EXPORT)}async function P(e){I.value=!0,await Zn.Z.get(`/auth/account/export/${e}`,{responseType:"blob"}).then((n=>{const t=window.URL.createObjectURL(new Blob([n.data],{type:"application/zip"})),r=document.createElement("a");r.href=t,r.setAttribute("download",e),document.body.appendChild(r),r.click()})).finally((()=>I.value=!1))}return(0,a.bv)((()=>{n.user&&(r.dispatch(c.YN.ACTIONS.GET_REQUEST_DATA_EXPORT),R(n.user))})),(0,a.Ah)((()=>{r.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(N(""),U(""),R(t.value),p.value=!1)})),(0,a.YP)((()=>t.value.email),(async()=>{R(t.value)})),(e,n)=>{const r=(0,a.up)("Modal"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",jn,[A.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:n[0]||(n[0]=e=>D((0,s.SU)(t).username)),onCancelAction:n[1]||(n[1]=e=>w(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Xn,[(0,s.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(T)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Qn,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,s.SU)(E).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:p.value}),onSubmit:(0,i.iM)(C,["prevent"])},[(0,a._)("label",et,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":n[2]||(n[2]=e=>l.email=e),disabled:(0,s.SU)(m),required:!0,onInvalid:g},null,40,nt),[[i.nr,l.email]])]),(0,a._)("label",tt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(Vn.Z,{id:"password-field",disabled:(0,s.SU)(m),password:l.password,required:!0,onUpdatePassword:N,onPasswordError:g},null,8,["disabled","password"])]),(0,a._)("label",rt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(Vn.Z,{id:"new-password-field",disabled:(0,s.SU)(m),checkStrength:!0,password:l.new_password,isSuccess:!1,onUpdatePassword:U,onPasswordError:g},null,8,["disabled","password"])]),(0,a._)("div",at,[(0,a._)("button",ot,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:n[4]||(n[4]=(0,i.iM)((e=>w(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1),v()?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"confirm",onClick:(0,i.iM)(f,["prevent"])},(0,o.zw)(e.$t("buttons.REQUEST_DATA_EXPORT")),9,it)):(0,a.kq)("",!0)])],42,Jn),(0,a._)("div",st,[(0,a._)("span",lt,[ct,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),(0,s.SU)(O)?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+(0,o.zw)((0,s.SU)(z))+"): ",1),"successful"===(0,s.SU)(O).status?((0,a.wg)(),(0,a.iD)("span",{key:0,class:"archive-link",onClick:n[5]||(n[5]=(0,i.iM)((e=>P((0,s.SU)(O).file_name)),["prevent"]))},[dt,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+(0,o.zw)((0,s.SU)(d.Z)((0,s.SU)(O).file_size))+") ",1)])):((0,a.wg)(),(0,a.iD)("span",mt,(0,o.zw)(e.$t(`user.EXPORT_REQUEST.STATUS.${(0,s.SU)(O).status}`)),1)),I.value?((0,a.wg)(),(0,a.iD)("span",Et,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),_t])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])])])}}});const Tt=(0,Y.Z)(St,[["__scopeId","data-v-6e11106c"]]);var pt=Tt,At=t(6761);const Ot={id:"user-infos-edition"},zt={class:"profile-form form-box"},It=["onSubmit"],gt={class:"form-items",for:"registrationDate"},Rt=["value"],Nt={class:"form-items",for:"first_name"},Ut=["disabled"],ht={class:"form-items",for:"last_name"},vt={class:"form-items",for:"birth_date"},Ct=["disabled"],wt={class:"form-items",for:"location"},Dt=["disabled"],ft={class:"form-items"},Pt={class:"form-buttons"},kt={class:"confirm",type:"submit"};var Lt=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),l=(0,a.Fl)((()=>n.user.created_at?(0,je.p6)(n.user.created_at,n.user.timezone,n.user.date_format):"")),d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>t.getters[c.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,At.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(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{n.user&&E(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage"),c=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Ot,[(0,a._)("div",zt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(t,{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",gt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(l),disabled:""},null,8,Rt)]),(0,a._)("label",Nt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":n[0]||(n[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,Ut),[[i.nr,r.first_name]])]),(0,a._)("label",ht,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":n[1]||(n[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",vt,[(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":n[2]||(n[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,Ct),[[i.nr,r.birth_date]])]),(0,a._)("label",wt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":n[3]||(n[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,Dt),[[i.nr,r.location]])]),(0,a._)("label",ft,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(c,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",Pt,[(0,a._)("button",kt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,It)])])}}});const bt=(0,Y.Z)(Lt,[["__scopeId","data-v-5e5a4552"]]);var Mt=bt;const yt=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),Gt={id:"user-picture-edition"},Ft={class:"user-picture-form"},Wt=["onSubmit"],Yt={class:"picture-help"},Bt={class:"info-box"},xt=yt((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Kt={class:"picture-buttons"},Ht=["disabled"];var $t=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,d.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){t.dispatch(c.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&t.dispatch(c.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[(0,a._)("div",Ft,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Be.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",Yt,[(0,a._)("span",Bt,[xt,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Kt,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Ht),(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:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,Wt)])])}}});const Zt=(0,Y.Z)($t,[["__scopeId","data-v-687e9604"]]);var Vt=Zt;const qt=["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"],jt={id:"tz-dropdown"},Xt=["value","disabled","onKeydown"],Qt=["onClick","onMouseover","autofocus"];var Jt=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:n}){const t=e,{input:r,disabled:l}=(0,s.BK)(t),c=(0,s.iH)(t.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,n("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)((()=>t.input),(e=>{c.value=e})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",jt,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[n[0]||(n[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,Xt),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)(qt).filter((e=>E(e))),((e,n)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:n===m.value}]),onClick:n=>S(e),onMouseover:e=>_(n),autofocus:n===m.value},(0,o.zw)(e),43,Qt)))),128))],512)):(0,a.kq)("",!0)]))}});const er=(0,Y.Z)(Jt,[["__scopeId","data-v-47ea2903"]]);var nr=er;const tr={id:"user-preferences-edition"},rr={class:"profile-form form-box"},ar=["onSubmit"],or={class:"form-items"},ir=["disabled"],sr=["value"],lr={class:"form-items"},cr={class:"form-items"},ur=["disabled"],dr=["value"],mr={class:"form-items form-checkboxes"},Er={class:"checkboxes-label"},_r={class:"checkboxes"},Sr=["id","name","checked","disabled","onInput"],Tr={class:"checkbox-label"},pr={class:"form-items form-checkboxes"},Ar={class:"checkboxes-label"},Or={class:"checkboxes"},zr=["id","name","checked","disabled","onInput"],Ir={class:"checkbox-label"},gr={class:"form-items form-checkboxes"},Rr={class:"checkboxes-label"},Nr={class:"checkboxes"},Ur=["id","name","checked","disabled","onInput"],hr={class:"checkbox-label"},vr={class:"form-buttons"},Cr={class:"confirm",type:"submit"};var wr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),l=[{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)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,je.d2)((new Date).toUTCString(),n.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(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function z(e){r.imperial_units=e}function I(e){r.weekm=e}return(0,a.bv)((()=>{n.user&&T(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",tr,[(0,a._)("div",rr,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(t,{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",or,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":n[0]||(n[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)(bn.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,sr)))),128))],8,ir),[[i.bM,r.language]])]),(0,a._)("label",lr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(nr,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",cr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":n[1]||(n[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,dr)))),128))],8,ur),[[i.bM,r.date_format]])]),(0,a._)("div",mr,[(0,a._)("span",Er,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",_r,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(l,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>I(n.value)},null,40,Sr),(0,a._)("span",Tr,(0,o.zw)(e.$t(`user.PROFILE.${n.label}`)),1)]))),64))])]),(0,a._)("div",pr,[(0,a._)("span",Ar,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Or,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>z(n.value)},null,40,zr),(0,a._)("span",Ir,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${n.label}`)),1)]))),64))])]),(0,a._)("div",gr,[(0,a._)("span",Rr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",Nr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(n.value)},null,40,Ur),(0,a._)("span",hr,(0,o.zw)(e.$t(`common.${n.label}`)),1)]))),64))])]),(0,a._)("div",vr,[(0,a._)("button",Cr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=(0,i.iM)((n=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,ar)])])}}});const Dr=(0,Y.Z)(wr,[["__scopeId","data-v-3b8a9a12"]]);var fr=Dr;const Pr={class:"privacy-policy-text"},kr={class:"last-update"},Lr=["innerHTML"],br=["innerHTML"];var Mr=(0,a.aZ)({__name:"PrivacyPolicy",setup(e){const n=(0,u.o)(),t="Sun, 26 Feb 2023 17:00:00 GMT",r=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),i=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.LANGUAGE])),d=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>A())),_=(0,a.Fl)((()=>p())),S=(0,a.Fl)((()=>O())),T=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"];function p(){return d.value.timezone?d.value.timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris"}function A(){return je.KD[i.value]}function O(){return(0,je.p6)(r.value.privacy_policy&&r.value.privacy_policy_date?`${r.value.privacy_policy_date}`:t,_.value,E.value,!1)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Pr,[(0,a._)("h1",null,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE"))),1),(0,a._)("p",kr,(0,o.zw)(e.$t("privacy_policy.LAST_UPDATE"))+": "+(0,o.zw)((0,s.SU)(S)),1),(0,s.SU)(r).privacy_policy?((0,a.wg)(),(0,a.iD)("div",{key:0,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(r).privacy_policy))},null,8,Lr)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},(0,a.Ko)(T,(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("h2",null,(0,o.zw)(e.$t(`privacy_policy.CONTENT.${n}.TITLE`)),1),(0,a._)("p",{innerHTML:(0,s.SU)(l.Z)(e.$t(`privacy_policy.CONTENT.${n}.CONTENT`))},null,8,br)],64)))),64))]))}});const yr=(0,Y.Z)(Mr,[["__scopeId","data-v-0c1693aa"]]);var Gr=yr;const Fr={id:"user-privacy-policy"},Wr={key:1},Yr={class:"policy-content"},Br={for:"accepted_policy",class:"accepted_policy"},xr={class:"form-buttons"},Kr={class:"confirm",type:"submit"};var Hr=(0,a.aZ)({__name:"UserPrivacyPolicyValidation",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),d=(0,s.iH)(!1);function m(){r.dispatch(c.YN.ACTIONS.ACCEPT_PRIVACY_POLICY,d.value)}return(0,a.Ah)((()=>{r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("router-link"),u=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Fr,[(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)(t).accepted_privacy_policy?((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",null,[(0,a.Wm)(u,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Wm)(c,{to:"/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})]),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):((0,a.wg)(),(0,a.iD)("form",{key:2,onSubmit:n[3]||(n[3]=(0,i.iM)((e=>m()),["prevent"]))},[(0,a._)("div",Yr,[(0,a.Wm)(Gr)]),(0,a._)("label",Br,[(0,a.wy)((0,a._)("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e)},null,512),[[i.e8,d.value]]),(0,a._)("span",null,[(0,a.Wm)(u,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])]),(0,a.Wm)(c,{to:"/profile/edit/account"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)])),_:1}),(0,a._)("div",xr,[(0,a._)("button",Kr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32))])}}});const $r=(0,Y.Z)(Hr,[["__scopeId","data-v-c77e04be"]]);var Zr=$r;const Vr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],qr=["application:write"],jr={id:"new-oauth2-app"},Xr={id:"new-oauth2-title"},Qr={id:"apps-form"},Jr=["onSubmit"],ea={class:"form-items"},na={class:"form-item"},ta={for:"app-name"},ra={class:"form-item"},aa={for:"app-description"},oa={class:"form-item"},ia={for:"app-url"},sa={class:"form-item"},la={for:"app-redirect-uri"},ca={class:"form-item-scope"},ua={class:"form-item-scope-label"},da={class:"scope-label"},ma=["name","checked","onChange"],Ea=["innerHTML"],_a={class:"form-buttons"},Sa=["disabled"];var Ta=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),l=(0,s.qj)([]),d=(0,a.Fl)((()=>S(n.authUser,qr,Vr)));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:l.sort().join(" ")};t.dispatch(c.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const n=l.indexOf(e);n>-1?l.splice(n,1):l.push(e)}function S(e,n,t){const r=[...t];return e.admin&&r.push(...n),r.sort()}return(e,n)=>{const t=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",jr,[(0,a._)("h1",Xr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Qr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",ea,[(0,a._)("div",na,[(0,a._)("label",ta,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":n[0]||(n[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",ra,[(0,a._)("label",aa,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(t,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",oa,[(0,a._)("label",ia,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",sa,[(0,a._)("label",la,(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":n[2]||(n[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",ca,[(0,a._)("div",ua,(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),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:n},[(0,a._)("label",da,[(0,a._)("input",{type:"checkbox",name:n,checked:l.includes(n),onChange:e=>_(n)},null,40,ma),(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Ea)])))),128))])]),(0,a._)("div",_a,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===l.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Sa),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Jr)])])}}});const pa=(0,Y.Z)(Ta,[["__scopeId","data-v-0657ee77"]]);var Aa=pa;const Oa={id:"authorize-oauth2-app"},za={key:0},Ia={id:"authorize-oauth2-title"},ga={class:"oauth2-access description-list"},Ra={class:"client-scope"},Na=["innerHTML"],Ua={class:"authorize-oauth2-buttons"},ha={key:1},va={class:"no-app"};var Ca=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const n=(0,r.yj)(),t=(0,u.o)(),i=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENT])),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(){n.query.client_id&&"string"===typeof n.query.client_id&&t.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,n.query.client_id)}function m(){t.dispatch(c.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${n.query.client_id}`,redirect_uri:`${n.query.redirect_uri}`,response_type:`${n.query.response_type}`,scope:`${n.query.scope}`,state:`${n.query.state?n.query.state:""}`,code_challenge:`${n.query.code_challenge?n.query.code_challenge:""}`,code_challenge_method:`${n.query.code_challenge_method?n.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Oa,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("h1",Ia,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{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)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",ga,[(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(" "),(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("dt",Ra,[(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Na)],64)))),128))]),(0,a._)("div",Ua,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",ha,[(0,a._)("p",va,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const wa=(0,Y.Z)(Ca,[["__scopeId","data-v-3b2fe9ed"]]);var Da=wa;const fa={id:"oauth2-apps"};var Pa=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n);return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(c.Km.MUTATIONS.SET_CLIENTS,[])})),(e,n)=>{const t=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",fa,[(0,a.Wm)(t,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const ka=Pa;var La=ka;const ba={id:"oauth2-app",class:"description-list"},Ma={key:1},ya={key:0,class:"info-box success-message"},Ga=["title"],Fa={key:0},Wa={key:1,class:"app-secret"},Ya=["title"],Ba={class:"client-scopes"},xa={class:"app-buttons"},Ka={key:2},Ha={class:"no-app"};var $a=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,r.yj)(),i=(0,u.o)(),{afterCreation:l,authUser:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[c.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(){!l.value&&t.params.id&&"string"===typeof t.params.id&&i.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_ID,+t.params.id)}function z(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",I(!0)}function I(e){_.value=e,e||(S.value=null)}function g(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(c.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(c.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function R(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){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(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(c.Km.MUTATIONS.EMPTY_CLIENT),i.commit(c.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&I(!1)})),(e,n)=>{const t=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",ba,[_.value?((0,a.wg)(),(0,a.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:n[0]||(n[0]=e=>g((0,s.SU)(m).id)),onCancelAction:n[1]||(n[1]=e=>I(!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",Ma,[(0,s.SU)(l)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ya,(0,o.zw)(e.$t((0,s.SU)(l)?"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)(l)&&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:R},null,10,Ga)):(0,a.kq)("",!0)]),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Fa,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",Wa,[(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:N},null,10,Ya)):(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)(je.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",Ba,[((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",xa,[(0,a._)("button",{class:"danger",onClick:n[2]||(n[2]=e=>z(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:n[3]||(n[3]=e=>z(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:n[4]||(n[4]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",Ka,[(0,a._)("p",Ha,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Za=(0,Y.Z)($a,[["__scopeId","data-v-3a844fa2"]]);var Va=Za;const qa={id:"oauth2-apps-list"},ja={class:"apps-list"},Xa={key:0},Qa={class:"app-issued-at"},Ja={key:1,class:"no-apps"},eo={class:"app-list-buttons"};var no=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),i=(0,r.yj)(),{authUser:l}=(0,s.BK)(n),d=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const n={};return e.page&&(n.page=(0,qe.z_)(e.page,qe.Hf)),n}function S(e){t.dispatch(c.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,n)=>{const t=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",qa,[(0,a._)("p",ja,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",Xa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("li",{key:n.client_id},[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:n.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.name),1)])),_:2},1032,["to"]),(0,a._)("span",Qa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(je.p6)(n.issued_at,(0,s.SU)(l).timezone,(0,s.SU)(l).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ja,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Ye.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",eo,[(0,a._)("button",{onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const to=(0,Y.Z)(no,[["__scopeId","data-v-efa45ea0"]]);var ro=to;const ao={id:"user-sport-preferences"},oo={key:0,class:"responsive-table"},io={class:"mobile-display"},so={key:0,class:"profile-buttons mobile-display"},lo={key:1,class:"profile-buttons"},co={class:"text-left"},uo={key:0},mo={class:"cell-heading"},Eo=["value"],_o={class:"cell-heading"},So={key:0,class:"disabled-message"},To={key:1,class:"fa fa-refresh fa-spin fa-fw"},po={class:"cell-heading"},Ao={class:"cell-heading"},Oo=["checked"],zo={class:"cell-heading"},Io=["value"],go={key:1},Ro={key:0,class:"action-buttons"},No={class:"cell-heading"},Uo=["onClick"],ho={key:1,class:"edition-buttons"},vo=["disabled"],Co=["disabled","onClick"],wo=["disabled"],Do={key:0,class:"profile-buttons"},fo={key:1,class:"profile-buttons"};var Po=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const n=e,t=(0,u.o)(),{t:r}=(0,Se.QT)(),{isEdition:l,user:d}=(0,s.BK)(n),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>t.getters[c.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,Te.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>t.getters[c.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):N()}function z(e){return A.sport_id===e}function I(e){A.color=e.target.value}function g(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function R(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function U(e){e.preventDefault(),t.dispatch(c.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,n){e.preventDefault(),t.dispatch(c.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,n)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,n)=>{const t=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",ao,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",oo,[(0,a._)("div",io,[(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",so,[(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",lo,[(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[2]||(n[2]=n=>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",co,(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)(l)?((0,a.wg)(),(0,a.iD)("th",uo,(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",mo,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),z(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:I},null,40,Eo)):((0,a.wg)(),(0,a.j4)(t,{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",_o,(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",So," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&z(i.id)?((0,a.wg)(),(0,a.iD)("i",To)):(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",po,(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",Ao,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:R},null,40,Oo)):((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",zo,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),z(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,Io)):((0,a.wg)(),(0,a.iD)("span",go,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("td",Ro,[(0,a._)("span",No,(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,Uo)):(0,a.kq)("",!0),z(i.id)?((0,a.wg)(),(0,a.iD)("div",ho,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:U},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vo),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Co),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:n[3]||(n[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,wo)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",Do,[(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[6]||(n[6]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const ko=(0,Y.Z)(Po,[["__scopeId","data-v-74e52489"]]);var Lo=ko,bo=t(2894);const Mo=e=>((0,a.dD)("data-v-64eb8494"),e=e(),(0,a.Cn)(),e),yo={class:"about-text"},Go=["innerHTML"],Fo=Mo((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Wo={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},Yo=Mo((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),Bo={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},xo=Mo((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),Ko=Mo((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),Ho={key:0},$o=Mo((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),Zo=["href"],Vo={key:1},qo=["href"],jo={class:"about-instance"},Xo=["innerHTML"];var Qo=(0,a.aZ)({__name:"About",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),r=(0,a.Fl)((()=>i()));function i(){const e={};return"darksky"===t.value.weather_provider&&(e["name"]="Dark Sky",e["url"]="https://darksky.net"),"visualcrossing"===t.value.weather_provider&&(e["name"]="Visual Crossing",e["url"]="https://www.visualcrossing.com"),e}return(e,n)=>{const i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",yo,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Go),(0,a._)("p",null,[Fo,(0,a._)("a",Wo,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[Yo,(0,a._)("a",Bo,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[xo,(0,a.Wm)(i,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[Ko])),_:1})]),(0,s.SU)(t).admin_contact?((0,a.wg)(),(0,a.iD)("div",Ho,[$o,(0,a._)("a",{href:`mailto:${(0,s.SU)(t).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,Zo)])):(0,a.kq)("",!0),(0,s.SU)(r)&&(0,s.SU)(r).name?((0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Uk)((0,o.zw)(e.$t("about.WEATHER_DATA_FROM"))+" ",1),(0,a._)("a",{href:(0,s.SU)(r).url,target:"_blank",rel:"nofollow noopener"},(0,o.zw)((0,s.SU)(r).name),9,qo)])):(0,a.kq)("",!0),(0,s.SU)(t).about?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[(0,a._)("p",jo,(0,o.zw)(e.$t("about.ABOUT_THIS_INSTANCE")),1),(0,a._)("div",{innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(t).about))},null,8,Xo)],64)):(0,a.kq)("",!0)])])}}});const Jo=(0,Y.Z)(Qo,[["__scopeId","data-v-64eb8494"]]);var ei=Jo;const ni={id:"bike"},ti=["src"];function ri(e,n){return(0,a.wg)(),(0,a.iD)("div",ni,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,ti)])}const ai={},oi=(0,Y.Z)(ai,[["render",ri],["__scopeId","data-v-795f7f5f"]]);var ii=oi;const si={id:"about",class:"view"},li={class:"container"},ci={class:"container-sub"},ui={class:"container-sub about-details"};var di=(0,a.aZ)({__name:"AboutView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",si,[(0,a._)("div",li,[(0,a._)("div",ci,[(0,a.Wm)(ii)]),(0,a._)("div",ui,[(0,a.Wm)(ei)])])]))}});const mi=(0,Y.Z)(di,[["__scopeId","data-v-bffb50d0"]]);var Ei=mi,_i=t(1818),Si=t(2056);const Ti=e=>((0,a.dD)("data-v-645a9e33"),e=e(),(0,a.Cn)(),e),pi={class:"timeline-workout"},Ai={class:"box"},Oi={class:"workout-user-date"},zi={class:"workout-user"},Ii=["title"],gi={key:0},Ri={key:1,class:"no-map"},Ni={class:"img"},Ui={class:"data"},hi=Ti((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),vi={key:0},Ci={class:"data"},wi=Ti((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Di={key:0,class:"data elevation"},fi=["alt"],Pi={class:"data-values"},ki={key:1,class:"data altitude"},Li=Ti((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),bi={class:"data-values"};var Mi=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const n=e,t=(0,u.o)(),{user:r,workout:i,sport:l,useImperialUnits:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function E(e){return e&&null!==e.ascent&&null!==e.descent}return(e,n)=>{const t=(0,a.up)("router-link"),c=(0,a.up)("SportImage"),u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",pi,[(0,a._)("div",Ai,[(0,a._)("div",Oi,[(0,a._)("div",zi,[(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(t,{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)(t,{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)(je.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(_i.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Ii)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:n[0]||(n[0]=n=>(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",gi,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(Si.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",Ri,(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:n[1]||(n[1]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",Ni,[(0,s.SU)(l).label?((0,a.wg)(),(0,a.j4)(c,{key:0,"sport-label":(0,s.SU)(l).label,color:(0,s.SU)(l).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Ui,[hi,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",vi,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ci,[wi,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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",Di,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,fi),(0,a._)("div",Pi,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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)(u,{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),E((0,s.SU)(i))?((0,a.wg)(),(0,a.iD)("div",ki,[Li,(0,a._)("div",bi,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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)(u,{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 yi=(0,Y.Z)(Mi,[["__scopeId","data-v-645a9e33"]]);var Gi=yi,Fi=t(5630),Wi=t(3768);const Yi={id:"timeline"},Bi={class:"section-title"},xi={key:0},Ki={key:1},Hi={key:1,class:"more-workouts"};var $i=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:i}=(0,s.BK)(n),l=(0,s.iH)(1),d=5,m=n.user.nb_workouts>=d?d:n.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){t.dispatch(c.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}function T(){l.value+=1,t.dispatch(c.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Yi,[(0,a._)("div",Bi,(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",xi,[((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)(Gi,{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",Ki,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Gi,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((n=>n.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)(Fi.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Hi,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const Zi=(0,Y.Z)($i,[["__scopeId","data-v-35567bf2"]]);var Vi=Zi,qi=t(1640),ji=t(4559),Xi=t(7349),Qi=t(1743),Ji=t(9160),es=t(1085);const ns=["title"];var ts=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const n=e,{displayHARecord:t,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(n);return(e,n)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:n[0]||(n[0]=n=>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)(t)||"HA"!==e.record_type)).map((n=>` ${e.$t(`workouts.RECORD_${n.record_type}`)}`))},null,8,ns)):(0,a.kq)("",!0)])])}}});const rs=ts;var as=rs;const os={class:"donut-chart"},is={height:"34",width:"34",viewBox:"0 0 34 34"},ss=["stroke","stroke-dashoffset","transform"];var ls=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const n=e,{colors:t,datasets:r}=(0,s.BK)(n);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,n){return n-e*n}function m(e,n){const t=`rotate(${o}, ${i}, ${l})`;return o=360*n+o,t}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",os,[((0,a.wg)(),(0,a.iD)("svg",is,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,n)=>((0,a.wg)(),(0,a.iD)("g",{key:n},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(t)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(n,e[1].percentage)},null,8,ss)])))),128))]))]))}});const cs=ls;var us=cs;const ds={class:"calendar-workouts-chart"},ms={class:"workouts-count"},Es={key:0,class:"workouts-pane"},_s={class:"more-workouts"};var Ss=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const n=e,{colors:t,datasets:r,sports:i,workouts:l}=(0,s.BK)(n),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,n)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",ds,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",ms,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(us,{datasets:(0,s.SU)(r),colors:(0,s.SU)(t)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",Es,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",_s,[(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,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ts=(0,Y.Z)(Ss,[["__scopeId","data-v-52d4310a"]]);var ps=Ts;const As={class:"calendar-workouts"},Os={class:"desktop-display"},zs={key:0,class:"workouts-display"},Is={key:1,class:"donut-display"},gs={class:"mobile-display"},Rs={key:0,class:"donut-display"};var Ns=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const n=e,{displayHARecord:t,workouts:r,sports:o}=(0,s.BK)(n),i=(0,a.Fl)((()=>(0,Wi.BN)(n.workouts))),l=(0,a.Fl)((()=>(0,Te.Yx)(n.sports))),c=6;return(e,n)=>((0,a.wg)(),(0,a.iD)("div",As,[(0,a._)("div",Os,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",zs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,displayHARecord:(0,s.SU)(t),workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Is,[(0,a.Wm)(ps,{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",gs,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",Rs,[(0,a.Wm)(ps,{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 Us=Ns;var hs=Us;const vs={class:"calendar-cells"},Cs={class:"calendar-cell-day"};var ws=(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 n=e,{currentDay:t,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(n),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const n=[];for(let t=0;t<7;t++)n.push(e),e=(0,Xi.Z)(e,1);E.value.push(n)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,n){return n?n.filter((n=>(0,Qi.Z)((0,je.eB)(n.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>n.currentDay),(()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",vs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:n},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(Ji.Z)(e,(0,s.SU)(t)),"week-end":S(n),today:(0,s.SU)(es.Z)(e)}]),key:n},[(0,a.Wm)(hs,{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",Cs,(0,o.zw)((0,s.SU)(At.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Ds=ws;var fs=Ds;const Ps={class:"calendar-days"};var ks=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const n=e,t=[];for(let r=0;r<7;r++)t.push((0,Xi.Z)(n.startDate,r));return(n,r)=>((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(t,((n,t)=>(0,a._)("div",{class:"calendar-day",key:t},(0,o.zw)((0,s.SU)(At.Z)(n,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Ls=ks;var bs=Ls;const Ms={class:"calendar-header"},ys=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Gs=[ys],Fs={class:"calendar-month"},Ws=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),Ys=[Ws];var Bs=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:n}){const t=e,{day:r,localeOptions:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ms,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:t[0]||(t[0]=e=>n("displayPreviousMonth"))},Gs),(0,a._)("div",Fs,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(At.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:t[1]||(t[1]=e=>n("displayNextMonth"))},Ys)]))}});const xs=Bs;var Ks=xs;const Hs={id:"user-calendar"},$s={class:"calendar-card box"};var Zs=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:o}=(0,s.BK)(n),i="yyyy-MM-dd",l=(0,s.iH)(new Date),d=(0,s.iH)((0,je.yx)(l.value,n.user.weekm)),m=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function _(){d.value=(0,je.yx)(l.value,n.user.weekm);const e={from:(0,At.Z)(d.value.start,i),to:(0,At.Z)(d.value.end,i),page:1,per_page:100,...Wi.eR};t.dispatch(c.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){l.value=(0,qi.Z)(l.value,1),_()}function T(){l.value=(0,ji.Z)(l.value,1),_()}return(0,a.wF)((()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",Hs,[(0,a._)("div",$s,[(0,a.Wm)(Ks,{day:l.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(bs,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(fs,{currentDay:l.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 Vs=Zs;var qs=Vs,js=t(3703),Xs=t(4135),Qs=t(436);const Js={class:"user-month-stats"};var el=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const n=e,{sports:t,user:r}=(0,s.BK)(n),i=new Date,l={duration:"week",start:(0,js.Z)(i),end:(0,Xs.Z)(i)},c=n.sports.map((e=>e.id));return(e,n)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Js,[(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)(Qs.Z,{sports:(0,s.SU)(t),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 nl=(0,Y.Z)(el,[["__scopeId","data-v-1bcddc12"]]);var tl=nl,rl=t(2540),al=t(3649);const{locale:ol}=rl.Z.global,il=(e,n,t,r)=>{const a="km",o=t?al.Dl[a].defaultTarget:a,i="m",s=t?al.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,al.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,al.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,al.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,je.p6)(e.workout_date,n,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},sl=(e,n)=>{const t=e.label.toLowerCase(),r=n.label.toLowerCase();return t>r?1:t(o=(0,je.mh)(o,ol.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=n.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(il(a,t,r,o))),e}),{})),cl={class:"records-card"},ul={class:"record-type"},dl={class:"record-value"},ml={class:"record-date"};var El=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const n=e,{records:t,sportTranslatedLabel:r}=(0,s.BK)(n),{t:i}=(0,Se.QT)();function l(e){const n=[];return e.map((e=>{n.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),n.sort(sl)}return(e,n)=>{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",cl,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(t).label,color:(0,s.SU)(t).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)(t).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",ul,(0,o.zw)(e.label),1),(0,a._)("span",dl,(0,o.zw)(e.value),1),(0,a._)("span",ml,[(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 _l=(0,Y.Z)(El,[["__scopeId","data-v-8d17c606"]]);var Sl=_l;const Tl=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),pl={class:"user-records-section"},Al={class:"section-title"},Ol=Tl((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),zl={class:"user-records"},Il={key:0,class:"no-records"};var gl=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),r=(0,a.Fl)((()=>ll(n.user.records,(0,Te.xH)(n.sports,t),n.user.timezone,n.user.imperial_units,n.user.display_ascent,n.user.date_format)));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",pl,[(0,a._)("div",Al,[Ol,(0,a.Uk)(" "+(0,o.zw)(n.$t("workouts.RECORD",2)),1)]),(0,a._)("div",zl,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Il,(0,o.zw)(n.$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(),(n=>((0,a.wg)(),(0,a.j4)(Sl,{sportTranslatedLabel:n,records:(0,s.SU)(r)[n],key:n,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const Rl=(0,Y.Z)(gl,[["__scopeId","data-v-f0c85cb8"]]);var Nl=Rl;const Ul={id:"user-stats"};var hl=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),{user:r}=(0,s.BK)(n),o=(0,a.Fl)((()=>n.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?al.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?al.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const n=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)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Ul,[(0,a.Wm)(Q,{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)(Q,{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)(Q,{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)(Q,{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)(Q,{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 vl=hl;var Cl=vl;const wl={class:"privacy-policy-message"};function Dl(e,n){const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",wl,[(0,a._)("span",null,[(0,a.Wm)(r,{keypath:"user.LAST_PRIVACY_POLICY_TO_VALIDATE"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:"/profile/edit/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.REVIEW")),1)])),_:1})])),_:1})])])}const fl={},Pl=(0,Y.Z)(fl,[["render",Dl],["__scopeId","data-v-05532ad6"]]);var kl=Pl;const Ll=e=>((0,a.dD)("data-v-4056e776"),e=e(),(0,a.Cn)(),e),bl={key:0,id:"dashboard",class:"view"},Ml={class:"container mobile-menu"},yl={class:"box"},Gl=Ll((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Fl=[Gl],Wl=Ll((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Yl=[Wl],Bl=Ll((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),xl=[Bl],Kl=Ll((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Hl=[Kl],$l={key:0,class:"container privacy-policy-message"},Zl={class:"container"},Vl={class:"container dashboard-container"},ql={class:"left-container dashboard-sub-container"},jl={class:"right-container dashboard-sub-container"},Xl=Ll((()=>(0,a._)("div",{id:"bottom"},null,-1))),Ql={key:1,class:"app-loading"};var Jl=(0,a.aZ)({__name:"Dashboard",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>n.getters[c.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function l(e){i.value=e}return(0,a.wF)((()=>n.dispatch(c.YN.ACTIONS.GET_USER_PROFILE))),(e,n)=>{const c=(0,a.up)("Loader");return(0,s.SU)(t).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bl,[(0,a._)("div",Ml,[(0,a._)("div",yl,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:n[0]||(n[0]=e=>l("calendar"))},Fl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:n[1]||(n[1]=e=>l("chart"))},Yl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:n[2]||(n[2]=e=>l("timeline"))},xl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:n[3]||(n[3]=e=>l("records"))},Hl,2)])]),(0,s.SU)(t).accepted_privacy_policy?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$l,[(0,a.Wm)(kl)])),(0,a._)("div",Zl,[(0,a.Wm)(Cl,{user:(0,s.SU)(t)},null,8,["user"])]),(0,a._)("div",Vl,[(0,a._)("div",ql,[(0,a.Wm)(tl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Nl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",jl,[(0,a.Wm)(qs,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Vi,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),Xl])):((0,a.wg)(),(0,a.iD)("div",Ql,[(0,a.Wm)(c)]))}}});const ec=(0,Y.Z)(Jl,[["__scopeId","data-v-4056e776"]]);var nc=ec,tc=t(8273);const rc={class:"not-found view"};var ac=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",rc,[(0,a.Wm)(tc.Z)]))}});const oc=ac;var ic=oc;const sc={id:"privacy-policy",class:"view"},lc={class:"container"},cc=(0,a._)("div",{id:"bottom"},null,-1);var uc=(0,a.aZ)({__name:"PrivacyPolicyView",setup(e){const n=(0,u.o)();return(0,a.wF)((()=>{n.dispatch(c.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",sc,[(0,a._)("div",lc,[(0,a.Wm)(Gr)]),cc]))}});const dc=uc;var mc=dc,Ec=t(776);const _c={id:"loginOrRegister",class:"view"},Sc={class:"container"},Tc={class:"container-sub"},pc={class:"container-sub"};var Ac=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const n=e,{action:t}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",_c,[(0,a._)("div",Sc,[(0,a._)("div",Tc,[(0,a.Wm)(ii)]),(0,a._)("div",pc,[(0,a.Wm)(Ec.Z,{action:(0,s.SU)(t)},null,8,["action"])])])]))}});const Oc=(0,Y.Z)(Ac,[["__scopeId","data-v-58043acb"]]);var zc=Oc;const Ic=e=>{const n=/(\/profile)(\/edit)*(\/*)/,t=e.replace(n,"").toUpperCase();return""===t?"PROFILE":t.toUpperCase()},gc=[{path:"/",name:"Dashboard",component:nc},{path:"/login",name:"Login",component:zc,props:{action:"login"}},{path:"/register",name:"Register",component:zc,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>t.e(845).then(t.bind(t,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>t.e(845).then(t.bind(t,8793))},{path:"/profile",name:"Profile",component:()=>t.e(845).then(t.bind(t,1133)),children:[{path:"",name:"UserProfile",component:kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfos",component:Ln.Z},{path:"preferences",name:"UserPreferences",component:Wn},{path:"sports",name:"UserSportPreferences",component:Lo,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:La,children:[{path:"",name:"UserAppsList",component:ro},{path:":id",name:"UserApp",component:Va},{path:":id/created",name:"CreatedUserApp",component:Va,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Aa},{path:"authorize",name:"AuthorizeUserApp",component:Da}]}]},{path:"edit",name:"UserProfileEdition",component:Kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Mt},{path:"account",name:"UserAccountEdition",component:pt},{path:"picture",name:"UserPictureEdition",component:Vt},{path:"preferences",name:"UserPreferencesEdition",component:fr},{path:"sports",name:"UserSportPreferencesEdition",component:Lo,props:{isEdition:!0}},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Zr}]}]},{path:"/statistics",name:"Statistics",component:()=>t.e(193).then(t.bind(t,7885))},{path:"/users/:username",name:"User",component:()=>t.e(845).then(t.bind(t,9453))},{path:"/workouts",name:"Workouts",component:()=>t.e(401).then(t.bind(t,9628))},{path:"/workouts/:workoutId",name:"Workout",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>t.e(401).then(t.bind(t,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>t.e(401).then(t.bind(t,4189))},{path:"/admin",name:"Administration",component:()=>t.e(328).then(t.bind(t,6e3)),children:[{path:"",name:"AdministrationMenu",component:_e},{path:"application",name:"ApplicationAdministration",component:x},{path:"application/edit",name:"ApplicationAdministrationEdition",component:x,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:Fe},{path:"users/:username",name:"UserFromAdmin",component:()=>t.e(845).then(t.bind(t,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:In}]},{path:"/about",name:"About",component:Ei},{path:"/privacy-policy",name:"PrivacyPolicy",component:mc},{path:"/:pathMatch(.*)*",name:"not-found",component:ic}],Rc=(0,r.p7)({history:(0,r.PO)("/"),routes:gc}),Nc=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Uc=["/email-update","/about","/privacy-policy"];Rc.beforeEach(((e,n,t)=>{bo.Z.dispatch(c.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Uc.includes(e.path))return t();if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]&&Nc.includes(e.path))return t("/");if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]||Nc.includes(e.path))t();else{const n="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};t(n)}})).catch((e=>{console.error(e),t()}))}));var hc=Rc},5801:function(e,n,t){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,z;t.d(n,{YN:function(){return U},Km:function(){return h},SY:function(){return g},O8:function(){return R},gu:function(){return N},RT:function(){return v},aX:function(){return C}}),function(e){e["ACCEPT_PRIVACY_POLICY"]="ACCEPT_PRIVACY_POLICY",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_REQUEST_DATA_EXPORT"]="GET_REQUEST_DATA_EXPORT",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["REQUEST_DATA_EXPORT"]="REQUEST_DATA_EXPORT",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["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",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",e["EXPORT_REQUEST"]="EXPORT_REQUEST"}(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",e["SET_EXPORT_REQUEST"]="SET_EXPORT_REQUEST"}(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_PRIVACY_POLICY"]="GET_APPLICATION_PRIVACY_POLICY",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_PRIVACY_POLICY"]="UPDATE_APPLICATION_PRIVACY_POLICY",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"}(z||(z={}));var I=t(52);const g={ACTIONS:c,GETTERS:u,MUTATIONS:d},R={ACTIONS:m,GETTERS:E,MUTATIONS:_},N={ACTIONS:S,GETTERS:T,MUTATIONS:p},U={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},v={ACTIONS:A,GETTERS:O,MUTATIONS:z},C={ACTIONS:I.tW,GETTERS:I.JP,MUTATIONS:I.CW}},2894:function(e,n,t){"use strict";t.d(n,{Z:function(){return de}});var r=t(3907),a=(t(7658),t(5167)),o=t(6154),i=t(8566),s=t(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,i.a)(e);return i.j.set(t,n),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=t(1020),d=t(5801);const m=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${n.username}`).then((t=>{204===t.status?n.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},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,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${n}`).then((n=>{"success"===n.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0]):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,n.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const t={};void 0!==n.admin&&(t.admin=n.admin),n.resetPassword&&(t.reset_password=n.resetPassword),n.activate&&(t.activate=n.activate),void 0!==n.new_email&&(t.new_email=n.new_email),a.Z.patch(`users/${n.username}`,t).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]),(n.resetPassword||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(n.activate||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0])):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,n){m(e,{username:n.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,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:n.token}).then((n=>{if("success"===n.data.status){const t=n.data.auth_token;window.localStorage.setItem("authToken",t),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,t),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:n.token}).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),n.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((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),n.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((n=>{"canceled"!==n.message&&((0,s.S)(e,n),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${n.actionType}`,n.formData).then((t=>{if("success"===t.data.status)if("login"===n.actionType){const r=t.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 n.redirectUrl?n.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((n=>{"success"===n.data.status?_(e):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,n){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",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${n}`).then((n=>{204===n.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",n).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!n.picture)throw new Error("No file part");const t=new FormData;t.append("file",n.picture),a.Z.post("auth/picture",t,{headers:{"content-type":"multipart/form-data"}}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,n){m(e,n)},[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((n=>{204===n.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",n).then((n=>{"success"===n.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.ACCEPT_PRIVACY_POLICY](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/privacy-policy",{accepted_policy:n}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/export/request").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/account/export").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[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,n){e.authToken=n},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,n){e.authUserProfile=n},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,n){e.isRegistrationSuccess=n},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,n){e.loading=n},[d.YN.MUTATIONS.SET_EXPORT_REQUEST](e,n){e.exportRequest=n}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null},O={state:A,actions:S,getters:T,mutations:p};var z=O;const I=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(n).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},g={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const t=new FormData;t.set("client_id",n.client_id),t.set("response_type",n.response_type),t.set("scope",n.scope),t.set("confirm","true"),n.state&&t.set("state",n.state),n.code_challenge&&t.set("code_challenge",n.code_challenge),n.code_challenge_method&&t.set("code_challenge_method",n.code_challenge_method),a.Z.post("oauth/authorize",t,{headers:{"Content-Type":"multipart/form-data"}}).then((n=>{200==n.status&&n.data.redirect_url?window.location.href=n.data.redirect_url:(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.CREATE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",n).then((n=>{"created"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client),u.Z.push(`/profile/apps/${n.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.DELETE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${n}`).then((n=>{204===n.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,n){I(e,`oauth/apps/${n}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,n){I(e,`oauth/apps/${n}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${n}/revoke`).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},R={[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},N={[d.Km.MUTATIONS.SET_CLIENT](e,n){e.client=n},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,n){e.clients=n},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,n){e.pagination=n},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,n){e.revocationSuccessful=n}},U={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:U,actions:g,getters:R,mutations:N};var v=h,C=t(2540);const{locale:w}=C.Z.global,D={[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((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).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((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",n).then((n=>{"success"===n.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,n){document.querySelector("html")?.setAttribute("lang",n),e.commit(d.SY.MUTATIONS.UPDATE_LANG,n),w.value=n}},f={[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 P=t(6287);const k={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,n){e.errorMessages=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,n){e.application.config=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,n){e.appLoading=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,n){e.application.config.privacy_policy=n.privacy_policy,e.application.config.privacy_policy_date=n.privacy_policy_date},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,n){e.application.statistics=n},[d.SY.MUTATIONS.UPDATE_LANG](e,n){e.language=n,e.locale=P.v1[n]}};var L=t(5826);const b={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},M={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((n=>{"success"===n.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${n.id}`,{is_active:n.isActive}).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,n){e.sports=n}},F={sports:[]},W={state:F,actions:M,getters:y,mutations:G};var Y=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${n.username}/${n.filterType}`,{params:n.params}).then((n=>{"success"===n.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},x={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},K={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,n){e.statistics=n},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},H={statistics:{}},$={state:H,actions:B,getters:x,mutations:K};var 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,n){e.user=n},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,n){e.users=e.users.map((e=>e.username===n.username?n:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,n){e.users=n},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,n){e.loading=n},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,n){e.pagination=n},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var Q=X,J=t(52);const ee=(e,n,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.aX.MUTATIONS[t],n.data.data.workouts),t===J.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},ne={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,n){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,n,J.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,n){ee(e,n,J.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const t=n.segmentId?`/segment/${n.segmentId}`:"";a.Z.get(`workouts/${n.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(n.segmentId&&(0===o.segments.length||!o.segments[+n.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/${n.workoutId}/chart_data${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,n.data.data.chart_data)})),a.Z.get(`workouts/${n.workoutId}/gpx${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,n.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((n=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${n.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${n.workoutId}`,n.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:n.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:n.workoutId}})}))})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!n.file)throw new Error("No file part");const t=n.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",n.file),r.append("data",`{"sport_id": ${n.sport_id}, "notes": "${t}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(1===n.data.data.workouts.length?`/workouts/${t.id}`:"/")}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",n).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(`/workouts/${t.id}`)}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},te={[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,n){e.timeline_workouts=e.timeline_workouts.concat(n)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,n){e.calendar_workouts=n},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=n},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,n){e.user_workouts=n},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,n){e.pagination=n},[d.aX.MUTATIONS.SET_WORKOUT](e,n){e.workoutData.workout=n},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,n){e.workoutData.chartData=n},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,n){e.workoutData.gpx=n},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,n){e.workoutData.loading=n},[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:ne,getters:te,mutations:re};var ie=oe;const se={authUserModule:z,oAuthModule:v,sportsModule:Y,statsModule:Z,usersModule:Q,workoutsModule:ie},le={state:b,actions:D,getters:f,mutations:k,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,n,t){"use strict";var r,a,o;t.d(n,{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,n,t){"use strict";t.d(n,{o:function(){return a}});var r=t(3907);function a(){return(0,r.oR)()}},2766:function(e,n,t){"use strict";t.d(n,{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,n)=>e&&"string"===typeof e&&+e>0?+e:n,s=(e,n,t)=>e&&"string"===typeof e&&n.includes(e)?e:t,l=(e,n,t,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,n,t),"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,n=1)=>Array.from({length:e-n+1},((e,t)=>n+t)),d=(e,n)=>{if(e<0)return[];if(e<9)return u(e);let t=[1,2];return n<4?t=t.concat([3,4,5]):n<6?t=t.concat(u(n+2,3)):(t=t.concat(["..."]),n=e-2&&t[t.length-1]{switch(e){case"week":return(0,r.Z)(n,{weekStartsOn:t?1:0});case"year":return(0,a.Z)(n);case"month":return(0,o.Z)(n);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,n)=>{switch(e){case"week":return(0,i.Z)(n,7);case"year":return(0,s.Z)(n,1);case"month":return(0,l.Z)(n,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,n)=>(0,m.Z)(new Date(e),n),O=(e,n)=>{const t=(0,o.Z)(e),a=(0,c.Z)(e),i=n?1:0;return{start:(0,r.Z)(t,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},z=(e,n=null,t=null)=>(n||(n="yyyy/MM/dd"),n=R(n,S.value),t||(t="HH:mm"),{workout_date:(0,d.Z)(e,n,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,t)}),I=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],g={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",it:"d MMM yyyy",nl:"d MMM yyyy"},R=(e,n)=>"date_string"===e?g[n]:e,N=(e,n,t,r=!0,a=null,o=!1)=>{a||(a=S.value);const i=r?o?" HH:mm:ss":" HH:mm":"";return(0,d.Z)(A(e,n),`${R(t,a)}${i}`,{locale:_.v1[a]})},U=(e,n,t=null)=>{const r=t||S.value,a=[];return I.map((t=>{const o=R(t,r);a.push({label:`${o} - ${N(e,n,o,!1,r)}`,value:t})})),a}},8966:function(e,n,t){"use strict";t.d(n,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,n=!0)=>{const t=Math.floor(Math.log(e)/Math.log(1024));if(!e)return n?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,t)).toFixed(1),o=r[t];return n?`${a}${o}`:{size:a,suffix:o}},o=e=>{const n=e/1048576;return+n.toFixed(2)}},2024:function(e,n,t){"use strict";t.d(n,{S:function(){return o},k:function(){return a}});var r=t(5801);const a=()=>"/api/",o=(e,n,t="UNKNOWN")=>{if(n&&"canceled"===n.message)return;const a=n?.response&&n.response.data?n.response.data:null;if(401===n?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=n?n.response?413===n.response.status?"file size is greater than the allowed size":a?.message?a.message:t:n.message?n.message:t:t;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}`)}},2335:function(e,n,t){"use strict";t.d(n,{O:function(){return i}});var r=t(9597),a=t(1036),o=t.n(a);const i=e=>o()((0,r.Z)(e,{target:"_blank"}),{allowedTags:["a"],disallowedTagsMode:"escape"})},6287:function(e,n,t){"use strict";t.d(n,{mT:function(){return m},v1:function(){return c},zK:function(){return u}});var r=t(879),a=t(5826),o=t(5830),i=t(8160),s=t(4638),l=t(2540);const c={de:r.Z,en:a.Z,fr:o.Z,it:i.Z,nl:s.Z},u={de:"Deutsch",en:"English",fr:"Français",it:"Italiano",nl:"Nederlands"},{availableLocales:d}=l.Z.global,m=d.map((e=>({label:u[e],value:e})))},631:function(e,n,t){"use strict";t.d(n,{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",Mountaineering:"#48b3b7",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const n={};return e.map((e=>n[e.id]=e.color?e.color:r[e.label])),n},o=(e,n)=>{const t=e.translatedLabel.toLowerCase(),r=n.translatedLabel.toLowerCase();return t>r?1:te.filter((e=>"all"===t||(r.includes(e.id)||e[t]))).map((e=>({...e,translatedLabel:n(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.label))[0],l=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,n,t){"use strict";t.d(n,{FN:function(){return D},aZ:function(){return w},v1:function(){return C}});t(7658);var r=t(6761),a=t(8148),o=t(9319),i=t(584),s=t(4559),l=t(3703),c=t(876),u=t(7090),d=t(4135),m=t(1593),E=t(7982),_=t(3500),S=t(1640),T=t(2540),p=t(6558),A=t(6287),O=t(631),z=t(3649);const{locale:I}=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"}},R=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],N=(e,n)=>{const t=[];for(let r=(0,p.Nh)(e.duration,e.start,n);r<=e.end;r=(0,p.xA)(e.duration,r))t.push(r);return t},U=(e,n,t=!1)=>{const r={label:e,backgroundColor:[n],data:[]};return t&&(r.type="line",r.borderColor=[n],r.spanGaps=!0),r},h=e=>{const n={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const t=e.color?e.color:O.Zo[e.label];n.average_speed.push(U(e.label,t,!0)),n.nb_workouts.push(U(e.label,t)),n.total_distance.push(U(e.label,t)),n.total_duration.push(U(e.label,t)),n.total_ascent.push(U(e.label,t)),n.total_descent.push(U(e.label,t))})),n},v=(e,n,t)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,z.f3)(["average_speed","total_distance"].includes(e)?"km":"m",n,t);default:case"nb_workouts":case"total_duration":return n}},C=(e,n,t,a,o,i,s)=>{const l=N(e,n),c=g[e.duration],u=t.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((n=>{const t=(0,r.Z)(n,c.api),a=(0,r.Z)(n,"week"===e.duration?(0,p.mh)(s,I.value):c.chart,{locale:A.v1[I.value]});d.push(a),R.map((e=>{m[e].map((n=>{n.data.push(t in o&&E[n.label]in o[t]?v(e,o[t][E[n.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},w=(e,n,t)=>{const r=t?1:0,m="year"===n?(0,a.Z)((0,o.Z)(e,9)):"week"===n?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===n?(0,c.Z)(e):"week"===n?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:n,end:E,start:m}},D=(e,n,t)=>{const{duration:r,start:T,end:p}=e,A=t?1:0;return{duration:r,end:"year"===r?(0,c.Z)(n?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(n?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(n?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(n?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(n?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(n?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,n,t){"use strict";t.d(n,{Dl:function(){return r},Y2:function(){return l},f3:function(){return i},sC:function(){return o},x$:function(){return s}});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,n,t,o=3)=>{const i=r[n],s=r[t],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,n,t)=>{const a=t?r[e].defaultTarget:e;return t?o(n,e,a,2):n},s=(e,n)=>{const t=n?1.8*e+32:e,r=n?" °F":"°C";return`${0===t?0:Number(t).toFixed(1)}${r}`},l=(e,n)=>{const t=n?2.2369363*e:e,r=n?" mph":"m/s";return`${0===t?0:Number(t).toFixed(1)}${r}`}},3768:function(e,n,t){"use strict";t.d(n,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});t(7658);var r=t(3649);const a=(e,n,t)=>{const a={speed:{label:n("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:n("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,t)),a.elevation.data.push((0,r.f3)("m",e.elevation,t)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const n=e.length;if(0===n)return{};const t={};return e.map((e=>{t[e.sport_id]||(t[e.sport_id]={count:0,percentage:0}),t[e.sport_id].count+=1,t[e.sport_id].percentage=t[e.sport_id].count/n})),t},i={order:"desc",order_by:"workout_date"}},2531:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,n){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=t(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(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:n}){const t=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(t),p=[10,25,50,100];function A(e){n("updateSelect",e.target.id,e.target.value)}return(e,n)=>((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),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${n.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),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${n.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)])]))}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(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,n,t,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=t(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,n,t){"use strict";t.d(n,{Z:function(){return _}});var r=t(6252),a=t(2262),o=(t(7658),t(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 n=e,{buttonText:t,title:l,message:c,path:u}=(0,a.BK)(n);return(e,n)=>((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)(t)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:n[0]||(n[0]=n=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(t)),1)):(0,r.kq)("",!0)])]))}}),c=t(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 n=e,{target:t}=(0,a.BK)(n),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,n)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(t)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262),i=t(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 n=e,{pagination:t,path:s,query:E}=(0,o.BK)(n);function _(e,n){const t=Object.assign({},E.value);return t.page=n?e+n:e,t}return(e,n)=>{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)(t).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,-1)},disabled:!(0,o.SU)(t).has_prev},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n: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)(t).pages,(0,o.SU)(t).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(t).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)(t).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,1)},disabled:!(0,o.SU)(t).has_next},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,n,t){"use strict";t.d(n,{Z:function(){return D}});var r=t(6252),a=t(2262),o=t(9963),i=t(3577),s=t(1423),l=t(5801),c=t(9917);const u=async e=>{switch(e){case"fr":return await t.e(222).then(t.bind(t,6947));case"de":return await t.e(940).then(t.bind(t,8056));case"it":return await t.e(802).then(t.bind(t,3140));default:return await t.e(261).then(t.bind(t,8288))}},d=async e=>{const n=await t.e(881).then(t.bind(t,410)),r=await u(e),a={graphs:n.default.adjacencyGraphs,dictionary:{...n.default.dictionary,...r.default.dictionary}};s.Mu.setOptions(a)},m=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},E={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},T={class:"password-strength-value"},p={key:0,class:"info-box"},A={class:"password-feedback"};var O=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const n=e,{password:t}=(0,a.BK)(n),o=(0,c.o)(),u=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),z=(0,a.iH)(0),I=(0,a.iH)(""),g=(0,a.iH)([]),R=(0,a.iH)("0% 100%");function N(e){const n=(0,s.tu)(e);z.value=n.score,I.value=m(z.value),g.value=n.feedback.suggestions,R.value=100*z.value/4+"% 100%"}return(0,r.wF)((async()=>await d(u.value))),(0,r.YP)((()=>u.value),(async e=>{await d(e)})),(0,r.YP)((()=>t.value),(async e=>{O.value?I.value="":N(e)})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",E,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${z.value}`]),style:(0,i.j5)({backgroundSize:R.value}),type:"range",value:z.value,min:"0",max:"4",step:"1"},null,14,_),I.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",T,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${I.value}`)),1),g.value.length>0?((0,r.wg)(),(0,r.iD)("div",p,[(0,r._)("ul",A,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(g.value,(n=>((0,r.wg)(),(0,r.iD)("li",{key:n},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${n}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),z=t(3744);const I=(0,z.Z)(O,[["__scopeId","data-v-74e71df5"]]);var g=I;const R=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),N={class:"password-input"},U=["id","disabled","placeholder","required","type"],h={key:0,class:"form-info"},v=R((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var C=(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:n}){const t=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(t),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){n("updatePassword",e.target.value)}function p(){n("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",N,[(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":n[0]||(n[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,U),[[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",h,[v,(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)(g,{key:1,password:_.value},null,8,["password"])):(0,r.kq)("",!0)]))}});const w=(0,z.Z)(C,[["__scopeId","data-v-5a126514"]]);var D=w},2056:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577),o=t(2262),i=t(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 n=e,{displayHover:t}=(0,o.BK)(n),l=`${(0,i.k)()}workouts/map/${n.workout.map}`;return(e,n)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(t)}])},[(0,o.SU)(t)?((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,n,t){"use strict";t.d(n,{Z:function(){return y}});var r=t(6252),a=t(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,n,t,A,O,z){const I=(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:n[0]||(n[0]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[1]||(n[1]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[2]||(n[2]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[3]||(n[3]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[4]||(n[4]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[5]||(n[5]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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)(I,{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=t(6761),z=t(2262);const I={class:"chart"};function g(e,n,t,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var R=t(6518),N=t(9150);const U=(e,n=!1)=>{let t="0";n&&(t=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 n?`${"0"===t?"":`${t}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=t(3649);const v=(e,n,t,r=!0,a="km")=>{const o=t?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${n.toFixed(2)} ${o}/h`;case"total_duration":return U(n,r);case"total_distance":case"total_ascent":case"total_descent":return`${n.toFixed(2)} ${o}`;default:return n.toString()}};var C=(0,r.aZ)({name:"Chart",components:{BarChart:R.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:n}=(0,N.QT)();function t(e){return isNaN(e)?0:+e}function a(e,n){return t(e)+t(n)}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(n){return v(e.displayedData,+n,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(n){n.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(n){return"average_speed"===e.displayedData&&n.dataset.backgroundColor?n.dataset.backgroundColor[0]:"#666666"},rotation:function(n){return e.fullStats&&n.chart.chartArea.width<580?310:0},display:function(n){return!(e.fullStats&&n.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(n,t){if("average_speed"===e.displayedData)return v(e.displayedData,n,e.useImperialUnits,!1);{const n=t.chart.data.datasets.map((e=>e.data[t.dataIndex])).reduce(((e,n)=>a(e,n)),0);return t.datasetIndex===e.displayedSportIds.length-1&&n>0?v(e.displayedData,n,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(t){let r=n(`sports.${t.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==t.parsed.y&&(r+=v(e.displayedData,t.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(t){if("average_speed"===e.displayedData)return"";let r=0;return t.map((e=>{r+=e.parsed.y})),`${n("common.TOTAL")}: `+v(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,R.xZ)({chartData:i,options:s});return{barChartProps:l}}}),w=t(3744);const D=(0,w.Z)(C,[["render",g]]);var f=D,P=t(5801),k=t(9917),L=t(9318),b=(0,r.aZ)({name:"UserMonthStats",components:{Chart:f},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 n=(0,k.o)(),t=(0,z.iH)("total_distance"),a=(0,r.Fl)((()=>n.getters[P.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(t){n.dispatch(P.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:t})}function s(e){t.value=e.target.name}function l(e,n){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(n.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async n=>{i(l(n,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[t.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:t,updateDisplayData:s}}});const M=(0,w.Z)(b,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=M},2179:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var r=t(6252),a=t(2262),o=t(3577),i=t(6595),s=t(5801),l=t(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"},z={class:"stat-label"};var I=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const n=e,{user:t}=(0,a.BK)(n),I=(0,l.o)(),g=(0,r.Fl)((()=>I.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,n)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(t)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(t).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(t).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(t).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(t).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)(t).nb_sports),1),(0,r._)("span",z,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(t).nb_sports)),1)])])])])}}}),g=t(3744);const R=(0,g.Z)(I,[["__scopeId","data-v-20291951"]]);var N=R},1585:function(e,n,t){"use strict";t.d(n,{Z:function(){return C}});t(7658);var r=t(6252),a=t(2262),o=t(3577),i=t(9963),s=t(6761),l=t(5801),c=t(9917),u=t(6558),d=t(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"],z={key:5},I={class:"user-bio"},g={key:0,class:"profile-buttons"},R=["onClick"],N={key:1,class:"profile-buttons"};var U=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,c.o)(),{user:U,fromAdmin:h}=(0,a.BK)(n),v=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.LANGUAGE])),C=(0,r.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),w=(0,r.Fl)((()=>n.user.created_at?(0,u.p6)(n.user.created_at,C.value.timezone,C.value.date_format):"")),D=(0,r.Fl)((()=>n.user.birth_date?(0,s.Z)(new Date(n.user.birth_date),`${(0,u.mh)(C.value.date_format,v.value)}`,{locale:d.v1[v.value]}):"")),f=(0,r.Fl)((()=>t.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),P=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),b=(0,a.iH)(!1),M=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){t.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function Y(e){G.value="password-reset",t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function x(){$(),y.value=U.value.email_to_confirm?U.value.email_to_confirm:"",M.value=!0,G.value="email-update"}function K(){y.value="",M.value=!1}function H(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function $(){t.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>$())),(0,r.YP)((()=>f.value),(e=>{e&&(F(""),K())})),(e,n)=>{const t=(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)(t,{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)(U).username,onConfirmAction:n[0]||(n[0]=e=>"delete"===L.value?W((0,a.SU)(U).username):Y((0,a.SU)(U).username)),onCancelAction:n[1]||(n[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((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)(U).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)(P)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(P)},null,8,["message"])):(0,r.kq)("",!0),M.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:b.value}),onSubmit:n[4]||(n[4]=(0,i.iM)((e=>H((0,a.SU)(U).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":n[2]||(n[2]=e=>(0,a.SU)(U).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(U).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":n[3]||(n[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)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",z,[(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)(w)),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)(U).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)(U).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)(D)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",I,(0,o.zw)((0,a.SU)(U).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",g,[(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:n[5]||(n[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:n[6]||(n[6]=(0,i.iM)((e=>B((0,a.SU)(U).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,R)):(0,r.kq)("",!0),(0,a.SU)(C).username!==(0,a.SU)(U).username&&(0,a.SU)(k).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:n[7]||(n[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:n[8]||(n[8]=n=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("button",{onClick:n[9]||(n[9]=n=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:n[10]||(n[10]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=t(3744);const v=(0,h.Z)(U,[["__scopeId","data-v-217519af"]]);var C=v},776:function(e,n,t){"use strict";t.d(n,{Z:function(){return P}});var r=t(6252),a=t(3577),o=t(2262),i=t(9963),s=t(2201),l=t(8403),c=t(5801),u=t(9917);const d=e=>((0,r.dD)("data-v-4f112f24"),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"},z=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={key:5,for:"accepted_policy",class:"accepted_policy"},g=["disabled"],R=["disabled"],N={key:3},U={key:0},h={key:4},v={class:"account"},C={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const n=e,t=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(n),D=(0,o.qj)({username:"",email:"",password:"",accepted_policy:!1}),f=(0,r.Fl)((()=>W(n.action))),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),L=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),b=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),M=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),y=(0,r.Fl)((()=>"register"===n.action&&!b.value.is_registration_enabled)),G=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(n.action)&&!b.value.is_email_sending_enabled)),F=(0,o.iH)(!1);function W(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${n.action.toUpperCase()}`}}function Y(){F.value=!0}function B(e){D.password=e}function x(e){switch(e){case"reset":return n.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:D.password,token:n.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:D.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:D.email});default:D["language"]=M.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:D,redirectUrl:t.query.from})}}function K(){D.username="",D.email="",D.password="",D.accepted_policy=!1}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>t.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),F.value=!1,K()})),(e,n)=>{const t=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("i18n-t"),u=(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)(y)}])},[(0,o.SU)(y)?((0,r.wg)(),(0,r.j4)(t,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(G)?((0,r.wg)(),(0,r.j4)(t,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(L)||(0,o.SU)(k)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(k)?"REGISTRATION"+((0,o.SU)(b).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:F.value}),onSubmit:n[3]||(n[3]=(0,i.iM)((e=>x((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)(y),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:Y,"onUpdate:modelValue":n[0]||(n[0]=e=>D.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,D.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)(y)||(0,o.SU)(G),required:"",onInvalid:Y,type:"email","onUpdate:modelValue":n[1]||(n[1]=e=>D.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,D.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[z,(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)(y),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:D.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:B,onPasswordError:Y},null,8,["disabled","placeholder","password","checkStrength"])),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("label",I,[(0,r.wy)((0,r._)("input",{type:"checkbox",id:"accepted_policy",disabled:(0,o.SU)(y),required:"",onInvalid:Y,"onUpdate:modelValue":n[2]||(n[2]=e=>D.accepted_policy=e)},null,40,g),[[i.e8,D.accepted_policy]]),(0,r._)("span",null,[(0,r.Wm)(c,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,r.w5)((()=>[(0,r.Wm)(s,{to:"/privacy-policy",target:"_blank"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})])])):(0,r.kq)("",!0)]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(y)||(0,o.SU)(G)},(0,a.zw)(e.$t((0,o.SU)(f))),9,R)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(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)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(b).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",h,[(0,r._)("span",v,(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)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",C,[(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)(P)?((0,r.wg)(),(0,r.j4)(u,{key:6,message:(0,o.SU)(P)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),D=t(3744);const f=(0,D.Z)(w,[["__scopeId","data-v-4f112f24"]]);var P=f},6595:function(e,n,t){"use strict";t.d(n,{Z:function(){return E}});var r=t(6252),a=t(2262),o=t(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 n=e,t=(0,r.Fl)((()=>n.user.picture?`${(0,o.k)()}users/${n.user.username}/picture?${Date.now()}`:""));return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(t)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577);const o={class:"no-workouts box"};function i(e,n){const t=(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)(t,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=t(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,n,t){var r={"./de/de.ts":3010,"./en/en.ts":2709,"./fr/fr.ts":5479,"./it/it.ts":6013,"./nb/nb.ts":1901,"./nl/nl.ts":3726};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612},2868:function(){},4777:function(){},9830:function(){},209:function(){},7414:function(){}},n={};function t(r){var a=n[r];if(void 0!==a)return a.exports;var o=n[r]={exports:{}};return e[r].call(o.exports,o,o.exports,t),o.exports}t.m=e,function(){var e=[];t.O=function(n,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(t.O).every((function(e){return t.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(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){var e,n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};t.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);t.r(o);var i={};e=e||[null,n({}),n([]),n(n)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},t.d(o,i),o}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"static/js/"+({24:"reset",193:"statistics",222:"password.fr",261:"password.en",328:"admin",401:"workouts",802:"password.it",845:"profile",881:"password",940:"password.de"}[e]||e)+"."+{24:"685c3c25",93:"37abd50d",193:"f4227d0e",222:"1d179591",243:"d72fe9e5",261:"b4ea7085",328:"3f508723",401:"a06ab85f",431:"386df171",633:"23ee7aff",802:"be465eec",845:"9d91816f",858:"922b6a43",881:"c0f2f8e4",940:"b81f881f"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"c2966dd5",845:"9f83730d"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="fittrackee_client:";t.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' && error.response) {\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 \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über diese Instanz\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wetterdaten von:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detaillierte Instanz-Informationen\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein Text eingegeben\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum vollständigen Export existiert bereits.\"])},\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 file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum Datenexport existiert bereits.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut 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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\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 \"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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten-Export anfragen\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])}\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 \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff 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 },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account löschen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\\n\\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Änderungen unserer Datenschutzrichtlinie\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden gesammelt:\\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\\n- Technische Informationen (Browser und Betriebssystem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welche Informationen sammeln wir?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\\n\\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\\n\\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\\n\\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geben wir Informationen an Außenstehende weiter?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wie schützen wir deinen Informationen?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Für was verwenden wir deine Informationen?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\\n\\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\\n\\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seitennutzung durch Kinder\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deine Zustimmung\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letztes Update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergsteigen\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenexport\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archiv herunterladen\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generiere Link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst alle 24 Stunden ein Archiv anfragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fehlgeschlagen (bitte frage einen anderen Export an)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Arbeit...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ich möchte meinen Account löschen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Datenschutzrichtlinie wurde aktualisiert, bitte \", _interpolate(_list(0)), \" sie vor dem Fortfahren.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])}\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_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ich habe die \", _interpolate(_list(0)), \" gelesen und stimme ihr zu.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"überprüfen\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Du hast die \", _interpolate(_list(0)), \" akzeptiert.\"])}\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 \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\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 \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Distanz muss größer als 0 sein\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Dauer muss größer als 0 Sekunden sein\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About this instance\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weather data from:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any additional information that may be useful to your users. Markdown syntax can be used.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed instance information\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No text entered\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network 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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A completed export request already exists.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when saving workout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when saving workout.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A data export request already exists.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\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 \"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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request data export\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])}\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 \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request the deletion of your account at any time by going to this address (after logging in) and clicking on \\\"Delete My Account\\\" button in your account edition.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account deletion\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If we decide to change our privacy policy, we will post those changes on this page.\\n\\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changes to our Privacy Policy\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information are collected:\\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\\n- Technical information (browser name and operating system).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What information do we collect?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\\n\\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \\n\\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\\n\\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do we disclose any information to outside parties?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"How do we protect your information?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\\n- The email address you provide may be used to send you information or confirm your account modifications.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What do we use your information for?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\\n\\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\\n\\nLaw requirements can be different if this server is in another jurisdiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Site usage by children\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"By using our site, you consent to our web site privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your Consent\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountaineering\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generating link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request an archive by 24 hours\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"errored (please request another export)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in progres...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I want to delete my account\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The privacy policy has been updated, please \", _interpolate(_list(0)), \" it before proceeding.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])}\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_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy policy\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"I have read and agree to the \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"review\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"You have accepted the \", _interpolate(_list(0)), \".\"])}\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 \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. 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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Both elevation values must be provided and be greater than or equal to 0.\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A propos de cette instance\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source des données météo :\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information détaillée de l'instance\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de texte saisi\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export terminée existe déjà.\"])},\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 file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\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 saving workout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'enregistrement de la séance.\"])},\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 \"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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export de données est en cours\"])},\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 \"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 \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Demander un export de données\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])}\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 \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous \\\"Supprimer mon compte\\\" dans l'espace de mise à jour de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Suppression du compte\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\\n\\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifications de notre politique de confidentialité\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les informations suivantes sont collectées :\\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\\n- Données techniques (nom du navigateur et du système d'exploitation).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quelles sont les informations que nous recueillons ?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\\n\\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\\n\\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\\n\\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Divulguons-nous des informations à des tiers ?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment protégeons-nous vos informations ?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment utilisons-nous vos informations ?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\\n\\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\\n\\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Protection des mineurs\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En utilisant notre site, vous acceptez la politique de confidentialité de notre site web.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre consentement\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dernière mise à jour\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinisme\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\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ées.\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export des données\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Télécharger l'archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lien en cours de génération...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander un export par 24h\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en erreur (veuillez demander une nouvelle archive)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en cours...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je souhaite supprimer mon compte\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La politique de confidentialité a été mise à jour. Veuillez l'\", _interpolate(_list(0)), \" avant de poursuivre.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\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 \"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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])}\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politique de confidentialité\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"J'ai lu et accepte la \", _interpolate(_list(0)), \".\"])},\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 \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"accepter\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Vous avez accepté la \", _interpolate(_list(0)), \".\"])}\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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0.\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un 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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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([\"Contatta l'amministratore\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee è un tracker self-hosted per attività outdoor.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sotto licenza \", _interpolate(_list(0)), \" \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Codice sorgente\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Azione\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi/rimuovi permessi, elimina account utente.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email di contatto dell'amministratore\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di files zip\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se settato a 0, non ci sono limiti per le registrazioni.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di utenti attivi\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna mail di contatto\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dei file caricabili (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurazione applicazione\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dell'archivio zip (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna ad amministrazione\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler eliminare \", _interpolate(_list(0)), \" account? Tutti i dati verranno persi, quest'azione non può essere annullata.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler resettare \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email corrente\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina utente\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'invio di email è disabilitato.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva/Disattiva sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La password è stata reimpostata.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento disabilitata.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento abilitata.\"])},\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([\"Attivo\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout esistono\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Immagine\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etichetta\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione sport\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna configurazione applicazione.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utente\"]), _normalize([\"utenti\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato admin\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data di registrazione\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato account\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nome utente\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"numero di workout\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi permessi di amministratore\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi permessi di amministratore\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'indirizzo email è stato aggiornato.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore di rete.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amminstratore.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: dev'essere inserita un'email valida.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura del file gpx.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'elaborazione del file gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura della configurazione.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'aggiornamento della configurazione\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, per favore riprova o contatta l'amministratore.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, la registrazione è disabilitata.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File con estensione non permessa.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dimensione del file è maggiore di quella massima permessa.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Credenziali errate.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I dati inseriti non sono validi.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nuova email dev'essere diversa dalla vecchia mail\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: la password inserita e la conferma non combaciano.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insersci un token di autenticazione valido.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto. Per favore ripeti il log in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, quell'username è già esistente.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo sport non esiste.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrato con successo.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il numero di files nell'archivio supera il limite massimo permesso.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utente non esiste.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dev'essere inserita un'email valida\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai i permessi necessari.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avanti\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"precedente\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorizza\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Indietro\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annulla\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta filtri\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina il mio account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disattiva\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra\"])},\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([\"Registra\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invia\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conferma\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contatto\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"giorno\"]), _normalize([\"giorni\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mostrato\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentazione\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"qui\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nascosto\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più basso al più alto\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più alto al più basso\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina per\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totale\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo mese\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina non trovata\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout non trovato\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Qualcosa è andato storto\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amministratore.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi una nuova applicazione OAuth2\"])},\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([\"Descrizione applicazione\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome applicazione\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL redirect\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura alla configurazioen dell'applicazione.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a usersendpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL applicazione\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazioni OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare quest'app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'applicazione \", _interpolate(_list(0)), \" sta chiedendo:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autorizzi \", _interpolate(_list(0)), \" ad utilizzare il tuo account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copia nella clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina applicazione\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi applicazione\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione non trovata!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna applicazione\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna descrizione\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi tutti i tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler rimuovere tutti i token?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutti i token esistenti associati sono stati rimossi.\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Trasporto)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cicliscmo (Virtuale)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Escursioni\"])}\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 (Elettrica)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinismo\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Canottaggio\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Corsa\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Alpino)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Racchette da neve\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sentieri\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Camminata\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiche\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mese\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"settimana\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"anno\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai ricevuto istruzioni?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hai già un account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password corrente\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci un indirizzo email valido.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci una password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra per username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token invalido, per favore richiedi un nuovo reset della password.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun utente trovato.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password dimenticata?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci almeno 8 caratteri.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"media\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"buona\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sicurezza password\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci qualche maiuscola.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi più parole che sono meno comuni.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci maiuscole oltre alla prima lettera.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sostituzioni prevedibili, per esempio, \", \"@\", \" per la a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa patterns più lunghi e cambia direzione di scrittura più volte.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"È consigliabile cambiare questa password se è utilizzata per altro.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date recenti.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di ripetere lettere e parole.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di scrivere parole al contrario.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sequenze di caratteri comuni.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa più parole, ma evita frasi comuni.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bassa\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La tua password è stata aggiornata. Clicca \", _interpolate(_list(0)), \" per effettuare il login.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tipo di account\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dati relativi alle salite (singoli, totale)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna al profilo\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di nascita\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Formato data\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica profilo\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze sport\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Per favore \", _interpolate(_list(0)), \" per cambiare di nuovo la tua mail o contatta l'amministratore\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primo giorno della settimana\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cognome\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posizione\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lunedì\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi foto\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna foto\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di registrazione\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"azione\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"colore\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disattivato dall'amministratore\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"attivo\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"etichetta\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limite minimo di velocità\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze sport\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato creato con successo.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un link per attivare il tuo account è stato inviato all'indirizzo specificato.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domenica\"])},\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([\"foto\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferenze\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profilo\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema imperiale (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unità per la distanza\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema metrico (m, km, m/s, °C)\"])}\n }\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, la registrazione è disabilitata.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma dell'account\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo account è inattivo.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo \\\"_\\\".\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto profilo\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi un workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analisi\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"salita\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità media\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vel. media\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ritorna al workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"discesa\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra filtri\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distanza\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica il workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevazione\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fine\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi filtri\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distanza dev'essere maggiore di 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durata dev'essere maggiore di 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ultimi workout\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica più workout\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine massima\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file massimi\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dimensione massima\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità massima\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine minima\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prossimo workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"note\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data dal file gpx, senza \\\"pulizia\\\"\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna cartella all'interno\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna mappa\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout successivo\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna nota\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento precedente\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout precedente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun record.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pause\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segmento precedente\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout precedente\"])},\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([\"Vel. media\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distanza più lunga\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salita più alta\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durata più lunga\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. massima\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"caratteri rimanenti\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segmento\"]), _normalize([\"segmenti\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inizio\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inizio e fine\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partenza asse elevazione a 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titolo\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica file!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cielo chiaro\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte chiara\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuvoloso\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nebbia\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"parzialmente nuvoloso\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte parzialmente nuvolosa\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pioggia\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nevischio\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neve\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"umidità\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatura\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"senza file .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"con file .gpx\"])},\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([\"data workout\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare questo workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"o file .zip contenente files .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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}","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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Over deze instantie\"])},\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 activiteiten tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weer gegevens van:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gedetailleerde informatie over deze instantie\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])},\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 },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\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 \"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 \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen tekst ingegeven\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden.\"])},\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 \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een voltooide export aanvraag.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\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 \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een export aanvraag.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\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 \"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 },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])}\n }\n}","export default {\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 \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\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 \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export aanvragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opslaan\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\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 \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])}\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 \"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 \"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 \"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}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\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 \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users 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 },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\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 \"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}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop \\\"Verwijder mijn account\\\" te klikken in uw instellingen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account verwijderen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\\n\\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassingen aan ons Privacybeleid\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De volgende informatie wordt verzameld:\\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\\n- Technische informatie (de browsernaam en naam van het besturingssysteem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welke informatie wordt er door ons verzameld?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\\n\\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\\n\\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\\n\\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordt er informatie met derden gedeeld?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoe beschermen we uw informatie?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waarvoor wordt de opgegeven informatie gebruikt?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\\n\\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\\n\\nWetgeving kan verschillen als de server zich op een andere plaats bevindt.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik door minderjarigen\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Door deze site te gebruiken, gaat u akkoord met ons privacybeleid.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw toestemming\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste aanpassing\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacybeleid\"])}\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 \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergbeklimmen\"])}\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 \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\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 \"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 \"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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data exporteren\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archief downloaden\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"link aanmaken...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je kan 1 keer per 24h een archief aanvragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fout (gelieve een nieuw archief aan te vragen)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bezig met verwerken...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ik wil mijn account verwijderen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Het privacybeleid werd aangepast, gelieve te \", _interpolate(_list(0)), \" voor verdergaan.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\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_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])}\n },\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 \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\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 \"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 \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ik heb het \", _interpolate(_list(0)), \" gelezen en goedgekeurd.\"])},\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 \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"beoordeel\"])},\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 \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"U hebt het \", _interpolate(_list(0)), \" aanvaard.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. 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 \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\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 \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\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 \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\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_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])},\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 \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])},\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}","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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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-97e20d3a\"),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\" }\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 _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\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=97e20d3a&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-97e20d3a\"]])\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-eb7fa534\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLength\", \"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 maxLength: __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=eb7fa534&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-eb7fa534\"]])\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 \"./Mountaineering.vue?vue&type=template&id=15731a2a\"\nimport script from \"./Mountaineering.vue?vue&type=script&lang=js\"\nexport * from \"./Mountaineering.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 Mountaineering from '@/components/Common/Images/SportImage/Mountaineering.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) === 'Mountaineering')\n ? (_openBlock(), _createBlock(Mountaineering, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 12 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 13 }))\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-5aa8db48\"),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=5aa8db48&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-5aa8db48\"]])\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-80b4a9e6\"),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 class: \"about-label\",\n for: \"about\"\n}\nconst _hoisted_18 = { class: \"textarea-description\" }\nconst _hoisted_19 = [\"innerHTML\"]\nconst _hoisted_20 = {\n class: \"privacy-policy-label\",\n for: \"privacy_policy\"\n}\nconst _hoisted_21 = { class: \"textarea-description\" }\nconst _hoisted_22 = [\"innerHTML\"]\nconst _hoisted_23 = {\n key: 5,\n class: \"form-buttons\"\n}\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = {\n key: 6,\n class: \"form-buttons\"\n}\n\nimport snarkdown from 'snarkdown'\n import {\n ComputedRef,\n capitalize,\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 import { linkifyAndClean } from '@/utils/inputs'\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 about: '',\n privacy_policy: '',\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 : ['about', 'privacy_policy'].includes(key)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ? appData[key] = appConfig[key]!== null\n ? appConfig[key]\n : ''\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 _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('admin.ABOUT.TEXT')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('admin.ABOUT.DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 0,\n id: \"about\",\n name: \"about\",\n rows: \"10\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((appData.about) = $event))\n }, null, 512)), [\n [_vModelText, appData.about]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.about ? appData.about : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_19)),\n _createElementVNode(\"label\", _hoisted_20, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('admin.PRIVACY_POLICY_DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 2,\n id: \"privacy_policy\",\n name: \"privacy_policy\",\n rows: \"20\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((appData.privacy_policy) = $event))\n }, null, 512)), [\n [_vModelText, appData.privacy_policy]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.privacy_policy ? appData.privacy_policy : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_22)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 4,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _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_25)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[7] || (_cache[7] = _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[8] || (_cache[8] = _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=80b4a9e6&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-80b4a9e6\"]])\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 case 'PRIVACY-POLICY':\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=205359d6&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', 'PRIVACY-POLICY']\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-6e11106c\"),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}\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"data-export\" }\nconst _hoisted_13 = { class: \"info-box\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = {\n key: 0,\n class: \"data-export-archive\"\n}\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-spinner fa-pulse\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { isBefore, subDays } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import authApi from \"@/api/authApi\";\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 {IAuthUserProfile, IUserAccountPayload, IExportRequest} from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IAuthUserProfile\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: IAuthUserProfile\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 const exportRequest: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]\n )\n const exportRequestDate: ComputedRef = computed(\n () => getExportRequestDate()\n )\n const generatingLink: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT)\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IAuthUserProfile) {\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 getExportRequestDate() {\n return exportRequest.value ? formatDate(\n exportRequest.value.created_at,\n user.value.timezone,\n user.value.date_format,\n true,\n null, true\n ) : null\n }\n\n function canRequestExport() {\n return exportRequestDate.value\n ? isBefore(new Date(exportRequestDate.value), subDays(new Date(), 1))\n : true\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 function requestExport() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT)\n }\n async function downloadArchive(filename: string) {\n generatingLink.value = true\n await authApi\n .get(`/auth/account/export/${filename}`, {\n responseType: 'blob',\n })\n .then((response) => {\n const archiveFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/zip' })\n )\n const archive_link = document.createElement('a')\n archive_link.href = archiveFileUrl\n archive_link.setAttribute('download', filename)\n document.body.appendChild(archive_link)\n archive_link.click()\n })\n .finally(() => generatingLink.value = false)\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 (canRequestExport())\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _withModifiers(requestExport, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.REQUEST_DATA_EXPORT')), 9, _hoisted_11))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY')), 1)\n ]),\n (_unref(exportRequest))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EXPORT_REQUEST.DATA_EXPORT')) + \" (\" + _toDisplayString(_unref(exportRequestDate)) + \"): \", 1),\n (_unref(exportRequest).status=== 'successful')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"archive-link\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (downloadArchive(_unref(exportRequest).file_name)), [\"prevent\"]))\n }, [\n _hoisted_16,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE\")) + \" (\" + _toDisplayString(_unref(getReadableFileSize)(_unref(exportRequest).file_size)) + \") \", 1)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.STATUS.${_unref(exportRequest).status}`)), 1)),\n (generatingLink.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.GENERATING_LINK`)) + \" \", 1),\n _hoisted_19\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\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=6e11106c&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-6e11106c\"]])\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__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c1693aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"privacy-policy-text\" }\nconst _hoisted_2 = { class: \"last-update\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, capitalize, computed } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { dateStringFormats, formatDate } from '@/utils/dates'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicy',\n setup(__props) {\n\n const store = useStore()\n const fittrackee_private_policy_date = 'Sun, 26 Feb 2023 17:00:00 GMT'\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 authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const dateFormat = computed(() => getDateFormat())\n const timezone = computed(() => getTimezone())\n const private_policy_date = computed(() => getPolicyDate())\n const paragraphs = [\n 'DATA_COLLECTED', 'INFORMATION_USAGE', 'INFORMATION_PROTECTION',\n 'INFORMATION_DISCLOSURE', 'SITE_USAGE_BY_CHILDREN', 'YOUR_CONSENT',\n 'ACCOUNT_DELETION', 'CHANGES_TO_OUR_PRIVACY_POLICY'\n ]\n\n function getTimezone() {\n return authUser.value.timezone\n ? authUser.value.timezone\n : Intl.DateTimeFormat().resolvedOptions().timeZone\n ? Intl.DateTimeFormat().resolvedOptions().timeZone\n : 'Europe/Paris'\n }\n function getDateFormat() {\n return dateStringFormats[language.value]\n }\n function getPolicyDate() {\n return formatDate(\n appConfig.value.privacy_policy && appConfig.value.privacy_policy_date\n ? `${appConfig.value.privacy_policy_date}`\n : fittrackee_private_policy_date,\n timezone.value,\n dateFormat.value,\n false,\n )\n }\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", null, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('privacy_policy.LAST_UPDATE')) + \": \" + _toDisplayString(_unref(private_policy_date)), 1),\n (_unref(appConfig).privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).privacy_policy))\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, _renderList(paragraphs, (paragraph) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: paragraph }, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.TITLE`)), 1),\n _createElementVNode(\"p\", {\n innerHTML: _unref(snarkdown)(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.CONTENT`))\n }, null, 8, _hoisted_4)\n ], 64))\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PrivacyPolicy.vue?vue&type=style&index=0&id=0c1693aa&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-0c1693aa\"]])\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, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77e04be\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-privacy-policy\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = { class: \"policy-content\" }\nconst _hoisted_4 = {\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_5 = { class: \"form-buttons\" }\nconst _hoisted_6 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, ref, onUnmounted, toRefs } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import {AUTH_USER_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: 'UserPrivacyPolicyValidation',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const acceptedPolicy= ref(false)\n\n function onSubmit() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY, acceptedPolicy.value\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 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(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(user).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\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 : (_openBlock(), _createElementBlock(\"form\", {\n key: 2,\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit()), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PrivacyPolicy)\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((acceptedPolicy).value = $event))\n }, null, 512), [\n [_vModelCheckbox, acceptedPolicy.value]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ]),\n _createVNode(_component_router_link, { to: \"/profile/edit/account\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.I_WANT_TO_DELETE_MY_ACCOUNT')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", _hoisted_6, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32))\n ]))\n}\n}\n\n})","import script from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPrivacyPolicyValidation.vue?vue&type=style&index=0&id=c77e04be&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-c77e04be\"]])\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, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64eb8494\"),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\"]\nconst _hoisted_12 = { key: 1 }\nconst _hoisted_13 = [\"href\"]\nconst _hoisted_14 = { class: \"about-instance\" }\nconst _hoisted_15 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { 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 import { linkifyAndClean } from '@/utils/inputs'\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 const weather_provider: ComputedRef> = computed(() =>\n get_weather_provider()\n )\n\n function get_weather_provider() {\n const weather_provider: Record = {}\n if (appConfig.value.weather_provider === 'darksky') {\n weather_provider['name'] = 'Dark Sky'\n weather_provider['url'] = 'https://darksky.net'\n }\n if (appConfig.value.weather_provider === 'visualcrossing') {\n weather_provider['name'] = 'Visual Crossing'\n weather_provider['url'] = 'https://www.visualcrossing.com'\n }\n return weather_provider\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 (_unref(weather_provider) && _unref(weather_provider).name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('about.WEATHER_DATA_FROM')) + \" \", 1),\n _createElementVNode(\"a\", {\n href: _unref(weather_provider).url,\n target: \"_blank\",\n rel: \"nofollow noopener\"\n }, _toDisplayString(_unref(weather_provider).name), 9, _hoisted_13)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).about)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"p\", _hoisted_14, _toDisplayString(_ctx.$t('about.ABOUT_THIS_INSTANCE')), 1),\n _createElementVNode(\"div\", {\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).about))\n }, null, 8, _hoisted_15)\n ], 64))\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=64eb8494&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-64eb8494\"]])\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-645a9e33\"),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\n function hasElevation(workout: IWorkout): boolean {\n return workout && workout.ascent !== null && workout.descent !== null\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 (hasElevation(_unref(workout)))\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=645a9e33&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-645a9e33\"]])\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__","\n\n\n\n\n","import { render } from \"./PrivacyPolicyToAccept.vue?vue&type=template&id=05532ad6&scoped=true\"\nconst script = {}\n\nimport \"./PrivacyPolicyToAccept.vue?vue&type=style&index=0&id=05532ad6&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-05532ad6\"]])\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-4056e776\"),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 = {\n key: 0,\n class: \"container privacy-policy-message\"\n}\nconst _hoisted_13 = { class: \"container\" }\nconst _hoisted_14 = { class: \"container dashboard-container\" }\nconst _hoisted_15 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_16 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_18 = {\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 PrivacyPolicyToAccept from '@/components/PrivacyPolicyToAccept.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 (!_unref(authUser).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(PrivacyPolicyToAccept)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\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_16, [\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_17\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\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=4056e776&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-4056e776\"]])\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, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"privacy-policy\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1)\n\nimport { onBeforeMount } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicyView',\n setup(__props) {\n\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(PrivacyPolicy)\n ]),\n _hoisted_3\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\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 UserPrivacyPolicyValidation from '@/components/User/ProfileEdition/UserPrivacyPolicyValidation.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 PrivacyPolicyView from '@/views/PrivacyPolicyView.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 path: 'privacy-policy',\n name: 'UserPrivacyPolicy',\n component: UserPrivacyPolicyValidation,\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: '/privacy-policy',\n name: 'PrivacyPolicy',\n component: PrivacyPolicyView,\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', '/privacy-policy']\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 ACCEPT_PRIVACY_POLICY = 'ACCEPT_PRIVACY_POLICY',\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_REQUEST_DATA_EXPORT = 'GET_REQUEST_DATA_EXPORT',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n REQUEST_DATA_EXPORT = 'REQUEST_DATA_EXPORT',\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 SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\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 EXPORT_REQUEST = 'EXPORT_REQUEST',\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 SET_EXPORT_REQUEST = 'SET_EXPORT_REQUEST',\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_PRIVACY_POLICY = 'GET_APPLICATION_PRIVACY_POLICY',\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_PRIVACY_POLICY = 'UPDATE_APPLICATION_PRIVACY_POLICY',\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' && error.response) {\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.accepted_privacy_policy) {\n // refresh privacy policy\n context.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\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 [AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY](\n context: ActionContext,\n acceptedPolicy: boolean\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/privacy-policy', {\n accepted_policy: acceptedPolicy,\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 },\n [AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/export/request')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/account/export')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\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.EXPORT_REQUEST]: (state: IAuthUserState) => {\n return state.exportRequest\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, IExportRequest } 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 [AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST](\n state: IAuthUserState,\n exportRequest: IExportRequest\n ) {\n state.exportRequest = exportRequest\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 exportRequest: null,\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.GET_APPLICATION_PRIVACY_POLICY](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,\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_PRIVACY_POLICY](\n state: IRootState,\n appConfig: TAppConfig\n ) {\n state.application.config.privacy_policy = appConfig.privacy_policy\n state.application.config.privacy_policy_date = appConfig.privacy_policy_date\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]\nexport const dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n it: '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 withSeconds = false\n): string => {\n if (!language) {\n language = locale.value\n }\n const timeFormat = withTime ? (withSeconds ? ' HH:mm:ss' : ' HH:mm') : ''\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${timeFormat}`,\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","import linkifyHtml from 'linkify-html'\nimport sanitizeHtml from 'sanitize-html'\n\nexport const linkifyAndClean = (input: string): string => {\n return sanitizeHtml(linkifyHtml(input, { target: '_blank' }), {\n allowedTags: ['a'],\n disallowedTagsMode: 'escape',\n })\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, it, 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 it: it,\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 it: 'Italiano',\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 Mountaineering: '#48b3b7',\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\nexport const getTemperature = (\n temperatureInCelsius: number,\n useImperialUnits: boolean\n): string => {\n const temperature = useImperialUnits\n ? temperatureInCelsius * 1.8 + 32\n : temperatureInCelsius\n const unit = useImperialUnits ? ' °F' : '°C'\n return `${temperature === 0 ? 0 : Number(temperature).toFixed(1)}${unit}`\n}\n\nexport const getWindSpeed = (\n windSpeedInMS: number,\n useImperialUnits: boolean\n): string => {\n const windSpeed = useImperialUnits ? windSpeedInMS * 2.2369363 : windSpeedInMS\n const unit = useImperialUnits ? ' mph' : 'm/s'\n return `${windSpeed === 0 ? 0 : Number(windSpeed).toFixed(1)}${unit}`\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 loadLanguagePackage = async (language: string) => {\n // no package available for norwegian bokmal and dutch (Nederlands)\n // fallback to english\n switch (language) {\n case 'fr':\n return await import(\n /* webpackChunkName: \"password.fr\" */ '@zxcvbn-ts/language-fr'\n )\n case 'de':\n return await import(\n /* webpackChunkName: \"password.de\" */ '@zxcvbn-ts/language-de'\n )\n case 'it':\n return await import(\n /* webpackChunkName: \"password.it\" */ '@zxcvbn-ts/language-it'\n )\n default:\n return await import(\n /* webpackChunkName: \"password.en\" */ '@zxcvbn-ts/language-en'\n )\n }\n}\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnLanguagePackage = await loadLanguagePackage(language)\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnLanguagePackage.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, vModelCheckbox as _vModelCheckbox, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f112f24\"),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 = {\n key: 5,\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_11 = [\"disabled\"]\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 3 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = { key: 4 }\nconst _hoisted_16 = { class: \"account\" }\nconst _hoisted_17 = { 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 accepted_policy: false\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 formData.accepted_policy = false\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_i18n_t = _resolveComponent(\"i18n-t\")!\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[3] || (_cache[3] = _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 (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n disabled: _unref(registration_disabled),\n required: \"\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((formData.accepted_policy) = $event))\n }, null, 40, _hoisted_11), [\n [_vModelCheckbox, formData.accepted_policy]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: \"/privacy-policy\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ]))\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_12)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\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_14, \"-\"))\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_15, [\n _createElementVNode(\"span\", _hoisted_16, _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_17, [\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=4f112f24&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-4f112f24\"]])\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\": 3010,\n\t\"./en/en.ts\": 2709,\n\t\"./fr/fr.ts\": 5479,\n\t\"./it/it.ts\": 6013,\n\t\"./nb/nb.ts\": 1901,\n\t\"./nl/nl.ts\": 3726\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\",\"222\":\"password.fr\",\"261\":\"password.en\",\"328\":\"admin\",\"401\":\"workouts\",\"802\":\"password.it\",\"845\":\"profile\",\"881\":\"password\",\"940\":\"password.de\"}[chunkId] || chunkId) + \".\" + {\"24\":\"685c3c25\",\"93\":\"37abd50d\",\"193\":\"f4227d0e\",\"222\":\"1d179591\",\"243\":\"d72fe9e5\",\"261\":\"b4ea7085\",\"328\":\"3f508723\",\"401\":\"a06ab85f\",\"431\":\"386df171\",\"633\":\"23ee7aff\",\"802\":\"be465eec\",\"845\":\"9d91816f\",\"858\":\"922b6a43\",\"881\":\"c0f2f8e4\",\"940\":\"b81f881f\"}[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\":\"c2966dd5\",\"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 = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, 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\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\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, null, 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__(136); })\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","privacy_policy","PrivacyPolicyTranslations","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","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","href","__exports__","_hoisted_12","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","target","watch","_withDirectives","maxLength","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","Mountaineering","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","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","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","rows","snarkdown","linkifyAndClean","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","exportRequest","exportRequestDate","getExportRequestDate","generatingLink","invalidateForm","updateUserForm","updatePassword","updateNewPassword","canRequestExport","isBefore","Date","subDays","updateProfile","payload","updateDisplayModal","deleteAccount","requestExport","async","downloadArchive","filename","responseType","then","archiveFileUrl","URL","createObjectURL","Blob","archive_link","createElement","setAttribute","appendChild","click","finally","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","status","file_name","file_size","first_name","last_name","birth_date","location","bio","registrationDate","format","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_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","fittrackee_private_policy_date","getTimezone","private_policy_date","getPolicyDate","paragraphs","Intl","DateTimeFormat","resolvedOptions","timeZone","dateStringFormats","privacy_policy_date","paragraph","acceptedPolicy","accepted_privacy_policy","PrivacyPolicy","_vModelCheckbox","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","rel","weather_provider","get_weather_provider","src","alt","BikePic","About","workout","hasElevation","ascent","descent","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","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","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","PrivacyPolicyToAccept","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","UserPrivacyPolicyValidation","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","PrivacyPolicyView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","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","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","accepted_policy","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","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","de","en","fr","it","nl","dateString","withTime","withSeconds","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","sanitizeHtml","linkifyHtml","allowedTags","disallowedTagsMode","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","getTemperature","temperatureInCelsius","temperature","Number","getWindSpeed","windSpeedInMS","windSpeed","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","loadLanguagePackage","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnLanguagePackage","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","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","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/app.4a1985d7.js b/fittrackee/dist/static/js/app.4a1985d7.js deleted file mode 100644 index f5ed32cb..00000000 --- a/fittrackee/dist/static/js/app.4a1985d7.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){var e={5167:function(e,n,t){"use strict";var r=t(6154),a=t(8566),o=t(2894),i=t(5801),s=t(2024);const l=r.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,a.a)(e);a.j.set(t,n);const r=o.Z.getters[i.YN.GETTERS.AUTH_TOKEN];if(r){const n=`Bearer ${r}`;e.headers&&e.headers.Authorization!==n&&(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&&e.response&&(0,a.a)(e.response.config),Promise.reject(e)))),n["Z"]=l},8566:function(e,n,t){"use strict";t.d(n,{a:function(){return o},j:function(){return r}});const r=new Map,a=e=>{const{method:n,url:t,params:r={},data:a={}}=e;return[n,t,JSON.stringify(r),JSON.stringify(a)].join("")},o=e=>{const n=a(e);if(r.has(n)){const e=r.get(n)||{};e?.abort(),r.delete(n)}return n}},2540:function(e,n,t){"use strict";var r=t(9150);const a=["nb"];function o(){const e=t(4612),n={};return e.keys().forEach((t=>{const r=t.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1&&!a.includes(r[1])){const a=r[1];n[a]=e(t).default}})),n}n["Z"]=(0,r.o)({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:o()})},3010:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Über diese Instanz"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Kontaktiere den Administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["unter ",t(r(0))," Lizenz "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Quellcode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Wetterdaten von:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt."])},TEXT:e=>{const{normalize:n}=e;return n(["Detaillierte Instanz-Informationen"])}},ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aktiviere Konto"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Anwendung"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt-E-Mail des Administrators"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. Dateianzahl im zip Archiv"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Wenn 0, gibt es keine Registrierungslimitierung.."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. Anzahl aktiver Nutzer"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["keine Kontakt-E-Mail"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe der hochgeladenen Dateien (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Anwendungskonfiguration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. Größe des zip Archives (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Zurück zu Admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(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:n,interpolate:t,list:r}=e;return n(["Möchtest du wirklich das ",t(r(0))," Passwort zurücksetzen?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Aktuelle E-Mail"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Lösche Nutzer"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["E-Mail-Versand ist deaktiviert."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aktivieren/Deaktivieren von Sportarten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Neue E-Mail"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Kein Text eingegeben"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Das wasswort wurde zurückgesetzt."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit deaktiviert."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registrierung ist derzeit aktiviert."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Aktiv"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainings existieren"])},IMAGE:e=>{const{normalize:n}=e;return n(["Bild"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sportarten Administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aktualisiere Anwemdungskonfiguration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aktualisiere E-Mail"])},USER:e=>{const{normalize:n}=e;return n(["Nutzer"])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["Adminstatus"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Accountstatus"])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["Trainingsanzahl"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte hinzufügen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Administratorrechte entfernen"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Die E-Mail Adresse wurde aktualisiert."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netzwerkfehler."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum vollständigen Export existiert bereits."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["E-Mail: Eine gültige E-Mail muss angegeben werden."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fehler beim Einlesen der GPX-Datei"])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fehler bei der GPX-Verarbeitung."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Abrufen der Konfiguration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fehler beim Aktualisieren der Konfiguration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fehler. Die Registrierung ist deaktiviert."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Dateierweiterung ist nicht erlaubt."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Die Datei ist größer als erlaubt."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ungültige Anmeldedaten."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Die bereitgestellten Daten sind ungültig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte erneut anmelden."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden"])},"no file part":e=>{const{normalize:n}=e;return n(["Keine Datei angegeben."])},"no selected file":e=>{const{normalize:n}=e;return n(["Keine Datei ausgewählt."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Eine Anfrage zum Datenexport existiert bereits."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Passwort: Passwort und Passwortbestätigung stimmen nicht überein."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Gebe ein gültiges Authentifizierungstoken an."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Die Signatur ist abgelaufen. Bitte melde dich erneut an."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Es tut mir leid, der Benutzername ist schon vergeben."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sportart existiert nicht."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrierung erfolgreich."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Die Anzahl der Dateien im Archiv überschreitet die Begrenzung."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Der Nutzer existiert nicht."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Du hast keine Berechtigung."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["Nächste"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["Vorhergehende"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Bestätigungs-E-Mail erneut senden"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorisieren"])},BACK:e=>{const{normalize:n}=e;return n(["Zurück"])},CANCEL:e=>{const{normalize:n}=e;return n(["Abbrechen"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Filter löschen"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Mein Konto löschen"])},DISABLE:e=>{const{normalize:n}=e;return n(["Deaktivieren"])},EDIT:e=>{const{normalize:n}=e;return n(["Bearbeiten"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aktivieren"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NO:e=>{const{normalize:n}=e;return n(["Nein"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Daten-Export anfragen"])},RESET:e=>{const{normalize:n}=e;return n(["Zurücksetzen"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Speichern"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["Über"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bestätigung"])},CONTACT:e=>{const{normalize:n}=e;return n(["Kontakt"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["Tag"]),n(["Tage"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Angezeigt"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["Dokumentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Versteckt"])},HOME:e=>{const{normalize:n}=e;return n(["Startseite"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["aufsteigend"])},DESC:e=>{const{normalize:n}=e;return n(["absteigend"])},LABEL:e=>{const{normalize:n}=e;return n(["sortieren"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sortiert nach"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["pro Seite"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Insgesamt"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Dieser Monat"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Seite nicht gefunden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training nicht gefunden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Etwas lief schief"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Eine neue OAuth2-Anwendung hinzufügen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["ID"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheimnis"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Anwendungsbeschreibung"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Erstellt am"])},NAME:e=>{const{normalize:n}=e;return n(["Anwendungsname"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Weiterleitungs-URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Geltungsbereich"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf die Anwendungskonfiguration"])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf auth-Endpunkte"])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf auth-Endpunkte"])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf users-Endpunkte"])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf users-Endpunkte"])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Lesezugriff auf workouts-Endpunkte"])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["erlaubt Schreibzugriff auf workouts-Endpunkte"])}},URL:e=>{const{normalize:n}=e;return n(["Anwendungs-URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2-Anwendungen"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist sicher, dass du diese App löschen willst?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Anwendung ",t(r(0))," fragt an:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n([t(r(0))," den Zugriff auf deinen Account erlauben?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["in Zwischenablage kopieren"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Anwendung löschen"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Anwendung hinzufügen"])},NO_APP:e=>{const{normalize:n}=e;return n(["Anwendung wurde nicht gefunden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["keine Anwendungen"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["keine Beschreibung"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Alle Tokens zurückrufen"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du alle Tokens zurückrufen möchtest?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle vorhandenen und vergebenen Tokens wurde zurückgerufen."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(["Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst."])},TITLE:e=>{const{normalize:n}=e;return n(["Account löschen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\n\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Änderungen unserer Datenschutzrichtlinie"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Die folgenden Informationen werden gesammelt:\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\n- Technische Informationen (Browser und Betriebssystem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welche Informationen sammeln wir?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\n\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\n\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\n\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen."])},TITLE:e=>{const{normalize:n}=e;return n(["Geben wir Informationen an Außenstehende weiter?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst."])},TITLE:e=>{const{normalize:n}=e;return n(["Wie schützen wir deinen Informationen?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken."])},TITLE:e=>{const{normalize:n}=e;return n(["Für was verwenden wir deine Informationen?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\n\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\n\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein."])},TITLE:e=>{const{normalize:n}=e;return n(["Seitennutzung durch Kinder"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu."])},TITLE:e=>{const{normalize:n}=e;return n(["Deine Zustimmung"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Letztes Update"])},TITLE:e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Pendeln)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Radfahren (Virtuell)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandern"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergsteigen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rudern"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Laufen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skifahren (Langlauf)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Schneeschuhe"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Gehen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistik"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["Monat"])},week:e=>{const{normalize:n}=e;return n(["Woche"])},year:e=>{const{normalize:n}=e;return n(["Jahr"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Hast du keine Anweisungen erhalten?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Prüfe deine E-Mail. Eine neue Bestätigungs-E-Mail wurde an die angegebene Adresse geschickt."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hast du bereits ein Konto?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Aktuelles Passwort"])},EMAIL:e=>{const{normalize:n}=e;return n(["E-Mail"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Gebe eine gültige E-Mail-Adresse an."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Gebe ein Passwort ein"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Datenexport"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archiv herunterladen"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generiere Link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Du kannst alle 24 Stunden ein Archiv anfragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fehlgeschlagen (bitte frage einen anderen Export an)"])},in_progress:e=>{const{normalize:n}=e;return n(["in Arbeit..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Nach Benutzernamen filtern"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort verbergen"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ungültiges Token, bitte fordere ein neues Passworts an."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ich möchte meinen Account löschen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Die Datenschutzrichtlinie wurde aktualisiert, bitte ",t(r(0))," sie vor dem Fortfahren."])},LOGIN:e=>{const{normalize:n}=e;return n(["Anmeldung"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Abmelden"])},LOG_IN:e=>{const{normalize:n}=e;return n(["Anmelden"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Neues Passwort"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Keine Nutzer gefunden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Passwort vergessen?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Mindestens 8 Zeichen sind erforderlich."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["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:{AVERAGE:e=>{const{normalize:n}=e;return n(["mittel"])},GOOD:e=>{const{normalize:n}=e;return n(["gut"])},LABEL:e=>{const{normalize:n}=e;return n(["Passwortstärke"])},STRONG:e=>{const{normalize:n}=e;return n(["start"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Schreibe einige, aber nicht alle Buchstaben groß."])},anotherWord:e=>{const{normalize:n}=e;return n(["Füge weitere weniger gebräuchliche Wörter hinzu."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},capitalization:e=>{const{normalize:n}=e;return n(["Schreibe mehr als nur den ersten Buchstaben groß."])},dates:e=>{const{normalize:n}=e;return n(["Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden."])},l33t:e=>{const{normalize:n}=e;return n(["Vermeide vorhersehbare Buchstabenersetzungen wie ","@"," für a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung."])},noNeed:e=>{const{normalize:n}=e;return n(["Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden."])},pwned:e=>{const{normalize:n}=e;return n(["Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermeide Angabe von letzten Jahreszahlen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermeide wiederholungen von Wörtern und Zeichen."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter."])},sequences:e=>{const{normalize:n}=e;return n(["Vermeide gebräuchliche Zeichenfolgen."])},useWords:e=>{const{normalize:n}=e;return n(["Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."])}},WEAK:e=>{const{normalize:n}=e;return n(["schwach"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Dein Passwort wurde aktualisiert. Klicke ",t(r(0))," um dich anzumelden."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Kontoausgabe"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Anstiegs-bezogene Daten (Aufnahmen, gesamt)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Zurück zum Profil"])},BIO:e=>{const{normalize:n}=e;return n(["Biographie"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geburtsdatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Datumsanzeigeformat"])},EDIT:e=>{const{normalize:n}=e;return n(["Profil bearbeiten"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen ändern"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen für Sportarten ändern"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Bitte ",t(r(0))," um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Erster Tag der Woche"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Vorname"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Sprache"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nachname"])},LOCATION:e=>{const{normalize:n}=e;return n(["Ort"])},MONDAY:e=>{const{normalize:n}=e;return n(["Montag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Bildausgabe"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Bild entfernen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Bild aktualisieren"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Einstellungsausgabe"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profil-Ausgabe"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registrierungsdatum"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["Aktion"])},COLOR:e=>{const{normalize:n}=e;return n(["Farbe"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["vom Admin deaktiviert"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["aktiv"])},LABEL:e=>{const{normalize:n}=e;return n(["Titel"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Geschwindigkeitsschwellenwert für Stopp"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sportarten-Einstellungsausgabe"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Dein Konto wurde erfolgreich erstellt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Dein Konto wurde erfolgreich aktualisiert."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sontag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["Konto"])},APPS:e=>{const{normalize:n}=e;return n(["Anwendungen"])},PICTURE:e=>{const{normalize:n}=e;return n(["Bild"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["Einstellungen"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Datenschutzrichtlinie"])},PROFILE:e=>{const{normalize:n}=e;return n(["Profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["Sportarten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Zeitzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperiales System (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Einheiten für die Distanz"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisches System (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ich habe die ",t(r(0))," gelesen und stimme ihr zu."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registrieren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Entschuldigung, die Registrierung ist deaktiviert."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["E-Mail zur Kontobestätigung erneut senden"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort zurücksetzen"])},REVIEW:e=>{const{normalize:n}=e;return n(["überprüfen"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["Passwort anzeigen"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Dieser Account ist inaktiv."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nutzername"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["Benutzerbild"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Du hast die ",t(r(0))," akzeptiert."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training hinzufügen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["Analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["Aufstieg"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschnittsgeschwindigkeit"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["zurück zum Training"])},DATE:e=>{const{normalize:n}=e;return n(["Datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["Abstieg"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["zeige Filter"])},DISTANCE:e=>{const{normalize:n}=e;return n(["Entfernung"])},DURATION:e=>{const{normalize:n}=e;return n(["Dauer"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training bearbeiten"])},ELEVATION:e=>{const{normalize:n}=e;return n(["Höhe"])},END:e=>{const{normalize:n}=e;return n(["Ende"])},FROM:e=>{const{normalize:n}=e;return n(["Von"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx Datei"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberge Filter"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["Die Distanz muss größer als 0 sein"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["Die Dauer muss größer als 0 Sekunden sein"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Letzte Trainings"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Lade mehr Trainings"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["maximale Höhe"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["Maximale Dateianzahl"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["Maximalgröße"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["minimale Höhe"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nächstes Segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nächstes Training"])},NOTES:e=>{const{normalize:n}=e;return n(["Anmerkungen"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["Daten aus gpx, ohne Bereinigung"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Keine Datei angegeben"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["enthält keinen Ordner"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Keine Karte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein nächstes Segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein nächstes Training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Keine Anmerkungen"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Kein vorheriges Training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Keine Aufzeichnungen."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Keine Trainings."])},PAUSES:e=>{const{normalize:n}=e;return n(["Pausen"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorheriges Segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorheriges Training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["Aufzeichnung"]),n(["Aufzeichnungen"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Durchschn. Geschwindigkeit"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Weiteste Entfernung"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Höchster Anstieg"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Längste Dauer"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. Geschwindigkeit"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["verbleibende Zeichen"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["Segment"]),n(["Segmente"])])},SPEED:e=>{const{normalize:n}=e;return n(["Geschwindigkeit"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["Sportart"]),n(["Sportarten"])])},START:e=>{const{normalize:n}=e;return n(["Start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start und Ziel"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Höhenachse bei Null starten"])},TITLE:e=>{const{normalize:n}=e;return n(["Titel"])},TO:e=>{const{normalize:n}=e;return n(["bis"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["Gesamtdauer"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Füge erstes Training hinzu!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["klarer Tag"])},"clear-night":e=>{const{normalize:n}=e;return n(["klare Nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["wolkig"])},fog:e=>{const{normalize:n}=e;return n(["Nebel"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["teilweise bewölkter Tag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["teilweise bewölkte Nacht"])},rain:e=>{const{normalize:n}=e;return n(["Regen"])},sleet:e=>{const{normalize:n}=e;return n(["Schneeregen"])},snow:e=>{const{normalize:n}=e;return n(["Schnee"])},wind:e=>{const{normalize:n}=e;return n(["Wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["Luftfeuchtigkeit"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["Temperatur"])},WIND:e=>{const{normalize:n}=e;return n(["Wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OSO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SO"])},SSE:e=>{const{normalize:n}=e;return n(["SSO"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["ohne .gpx Datei"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["mit .gpx Datei"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["Training"]),n(["Trainings"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["Trainingsdatum"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bist du sicher, dass du dieses Training löschen möchtest?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip Datei"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["oder .zip Datei mit .gpx Dateien"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},2709:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["About this instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contact the administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is a self-hosted outdoor activity tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["under ",t(r(0))," license "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Source code"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weather data from:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Any additional information that may be useful to your users. Markdown syntax can be used."])},TEXT:e=>{const{normalize:n}=e;return n(["Detailed instance information"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activate account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Add/remove admin rights, delete user account."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email for contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. files of zip archive"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["If 0, no limitation on registration."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. number of active users"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["no contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to delete ",t(r(0))," account? All data will be deleted, this cannot be undone."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Are you sure you want to reset ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Current email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Delete user"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Email sending is disabled."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Enable/disable sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["New email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["No text entered"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The password has been reset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registration is currently enabled."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Active"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workouts exist"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Update application configuration."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["user"]),n(["users"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["registration date"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["username"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["workout count"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Remove admin rights"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["The email address has been updated."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Network Error."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["At least one file in zip archive exceeds size limit, please check the archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["A completed export request already exists."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: valid email must be provided."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Error during gpx file parsing."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Error during gpx processing."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Invalid credentials."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Invalid token, please log in again."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["The new email must be different than curent email"])},"no file part":e=>{const{normalize:n}=e;return n(["No file provided."])},"no selected file":e=>{const{normalize:n}=e;return n(["No selected file."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["A data export request already exists."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Provide a valid auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expired. Please log in again."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, that username is already taken."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Sport does not exist."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Successfully registered."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["The number of files in the archive exceeds the limit."])},"user does not exist":e=>{const{normalize:n}=e;return n(["User does not exist."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["A valid email must be provided for administrator contact"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["You do not have permissions."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["next"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["previous"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Resend confirmation email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Authorize"])},BACK:e=>{const{normalize:n}=e;return n(["Back"])},CANCEL:e=>{const{normalize:n}=e;return n(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Delete my account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disable"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit"])},ENABLE:e=>{const{normalize:n}=e;return n(["Enable"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Request data export"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Submit"])},YES:e=>{const{normalize:n}=e;return n(["Yes"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["day"]),n(["days"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Displayed"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation"])},HERE:e=>{const{normalize:n}=e;return n(["here"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Hidden"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascending"])},DESC:e=>{const{normalize:n}=e;return n(["descending"])},LABEL:e=>{const{normalize:n}=e;return n(["sort"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["order by"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["This month"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["The application seems to have encountered some issues.
Please try again later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page not found"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout not found"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Something went wrong"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Error. Please try again or contact the administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Add a new OAuth2 application"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Application description"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Application name"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Redirect URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to application configuration."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants read access to workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["grants write access to workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["Application URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 applications"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application created successfully. Make sure to copy the secret now, it won't show up again."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The application ",t(r(0))," is requesting:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Authorize ",t(r(0))," to use your account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copy to the clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Delete application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Add an application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application not found!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["no applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["no description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Revoke all tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to revoke all tokens?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["All existing associated tokens have been revoked."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['You can request the deletion of your account at any time by going to this address (after logging in) and clicking on "Delete My Account" button in your account edition.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account deletion"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["If we decide to change our privacy policy, we will post those changes on this page.\n\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Changes to our Privacy Policy"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["The following information are collected:\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\n- Technical information (browser name and operating system)."])},TITLE:e=>{const{normalize:n}=e;return n(["What information do we collect?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\n\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \n\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\n\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password."])},TITLE:e=>{const{normalize:n}=e;return n(["Do we disclose any information to outside parties?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information."])},TITLE:e=>{const{normalize:n}=e;return n(["How do we protect your information?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\n- The email address you provide may be used to send you information or confirm your account modifications."])},TITLE:e=>{const{normalize:n}=e;return n(["What do we use your information for?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\n\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\n\nLaw requirements can be different if this server is in another jurisdiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Site usage by children"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["By using our site, you consent to our web site privacy policy."])},TITLE:e=>{const{normalize:n}=e;return n(["Your Consent"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Last update"])},TITLE:e=>{const{normalize:n}=e;return n(["privacy policy"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cycling (Virtual)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Electric)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Mountaineering"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Rowing"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiing (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Snowshoes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Walking"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistics"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["month"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["year"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Didn't received instructions?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Check your email. A new confirmation email has been sent to the address provided."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Current password"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Enter a valid email address."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Enter a password"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Download archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["generating link..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["You can request an archive by 24 hours"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["errored (please request another export)"])},in_progress:e=>{const{normalize:n}=e;return n(["in progres..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter on username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["hide password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Invalid token, please request a new password reset."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["I want to delete my account"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["The privacy policy has been updated, please ",t(r(0))," it before proceeding."])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["New password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["No users found."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Forgot password?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["At least 8 characters required."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["average"])},GOOD:e=>{const{normalize:n}=e;return n(["good"])},LABEL:e=>{const{normalize:n}=e;return n(["password strength"])},STRONG:e=>{const{normalize:n}=e;return n(["strong"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Capitalize some, but not all letters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Add more words that are less common."])},associatedYears:e=>{const{normalize:n}=e;return n(["Avoid years that are associated with you."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalize more than the first letter."])},dates:e=>{const{normalize:n}=e;return n(["Avoid dates and years that are associated with you."])},l33t:e=>{const{normalize:n}=e;return n(["Avoid predictable letter substitutions like ","@"," for a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Use longer keyboard patterns and change typing direction multiple times."])},noNeed:e=>{const{normalize:n}=e;return n(["You can create strong passwords without using symbols, numbers, or uppercase letters."])},pwned:e=>{const{normalize:n}=e;return n(["If you use this password elsewhere, you should change it."])},recentYears:e=>{const{normalize:n}=e;return n(["Avoid recent years."])},repeated:e=>{const{normalize:n}=e;return n(["Avoid repeated words and characters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Avoid reversed spellings of common words."])},sequences:e=>{const{normalize:n}=e;return n(["Avoid common character sequences."])},useWords:e=>{const{normalize:n}=e;return n(["Use multiple words, but avoid common phrases."])}},WEAK:e=>{const{normalize:n}=e;return n(["weak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Your password have been updated. Click ",t(r(0))," to log in."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account edition"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Ascent-related data (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Back to profile"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Birth date"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Date display format"])},EDIT:e=>{const{normalize:n}=e;return n(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit preferences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Edit sports preferences"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Please ",t(r(0))," to change your email address again or contact the administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["First day of week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["First name"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Language"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Last name"])},LOCATION:e=>{const{normalize:n}=e;return n(["Location"])},MONDAY:e=>{const{normalize:n}=e;return n(["Monday"])},PICTURE:e=>{const{normalize:n}=e;return n(["Picture"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Picture edition"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Remove picture"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Update picture"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferences edition"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacy policy"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Registration date"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["color"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disabled by admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["active"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["stopped speed threshold"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sports preferences edition"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully. Please check your email to confirm your new email address."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Your account has been created successfully."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["A link to activate your account has been emailed to the address provided."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Your account has been updated successfully."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Sunday"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["picture"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["privacy policy"])},PROFILE:e=>{const{normalize:n}=e;return n(["profile"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperial system (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Units for distance"])},METRIC:e=>{const{normalize:n}=e;return n(["Metric system (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["I have read and agree to the ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["Register"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registration is disabled."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Resend account confirmation email"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset your password"])},REVIEW:e=>{const{normalize:n}=e;return n(["review"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["show password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["This user account is inactive."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 to 30 characters required, only alphanumeric characters and the underscore character "_" allowed.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["user picture"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["You have accepted the ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Add a workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analysis"])},ASCENT:e=>{const{normalize:n}=e;return n(["ascent"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["average speed"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["ave. speed"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["back to workout"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["display filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["duration"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Edit the workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevation"])},END:e=>{const{normalize:n}=e;return n(["end"])},FROM:e=>{const{normalize:n}=e;return n(["from"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["hide filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Both elevation values must be provided and be greater than or equal to 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["The distance must be greater than 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["The duration must be greater than 0 seconds"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. altitude"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max files"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max size"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Next workout"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["No file provided"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["no folder inside"])},NO_MAP:e=>{const{normalize:n}=e;return n(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["No next workout"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["No previous workout"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["No records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["No workouts."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Previous workout"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Ave. speed"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Farthest distance"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Highest ascent"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Longest duration"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["remaining characters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["speed"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start and finish"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["start elevation axis at zero"])},TITLE:e=>{const{normalize:n}=e;return n(["title"])},TO:e=>{const{normalize:n}=e;return n(["to"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Upload one!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["clear day"])},"clear-night":e=>{const{normalize:n}=e;return n(["clear night"])},cloudy:e=>{const{normalize:n}=e;return n(["cloudy"])},fog:e=>{const{normalize:n}=e;return n(["fog"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["partly cloudy night"])},rain:e=>{const{normalize:n}=e;return n(["rain"])},sleet:e=>{const{normalize:n}=e;return n(["sleet"])},snow:e=>{const{normalize:n}=e;return n(["snow"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidity"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperature"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["without .gpx file"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["with .gpx file"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["or .zip file containing .gpx files"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},5479:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["A propos de cette instance"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacter l'administrateur"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee est un tracker d'activités sportives (en extérieur)."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["sous licence ",t(r(0))," (en) "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Code source (en)"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Source des données météo :"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée."])},TEXT:e=>{const{normalize:n}=e;return n(["Information détaillée de l'instance"])}},ACTION:e=>{const{normalize:n}=e;return n(["Action"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activer le compte"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Administration"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Application"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email de l'administrateur pour contact "])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Nombre max. de fichiers dans une archive zip "])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Si égal à 0, pas limite d'inscription"])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Nombre maximum d'utilisateurs actifs "])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["non renseigné"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:n}=e;return n(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Taille max. des archives zip (en Mo) "])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur ",t(r(0))," ? Toutes les données seront définitivement."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur ",t(r(0))," ?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Adresse email actuelle"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Supprimer l'utilisateur"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'envoi d'emails est désactivé."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Activer/désactiver des sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nouvelle adresse email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["pas de texte saisi"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Le mot de passe a été réinitialisé."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Les inscriptions sont actuellement activées."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinit. le mot de passe"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["des séances existent"])},IMAGE:e=>{const{normalize:n}=e;return n(["Image"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Configurer l'application."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Changer l'email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utilisateur"]),n(["utilisateurs"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["status administrateur"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["date d'inscription"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["statut du compte"])},USERNAME:e=>{const{normalize:n}=e;return n(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["nombre de séances"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Ajouter les droits d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Retirer les droits d'admin"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'adresse email a été mise à jour."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Erreur réseau."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Une demande d'export terminée existe déjà."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Courriel : une adresse électronique valide doit être fournie."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Erreur lors de l'analyse du fichier."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Erreur lors du traitement du fichier gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Jeton de connexion, merci de vous reconnecter."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nouvelle addresse électronique doit être differente de l'adresse actuelle"])},"no file part":e=>{const{normalize:n}=e;return n(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:n}=e;return n(["Pas de fichier sélectionné."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Une demande d'export de données est en cours"])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Merci de fournir un jeton de connexion valide."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signature expirée. Merci de vous reconnecter."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Désolé, ce nom d'utilisateur est déjà utilisé."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Ce sport n'existe pas."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Inscription validée."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Le nombre de fichiers de l'archive dépasse la limite."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utilisateur n'existe pas."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["suivant"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["précédent"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Renvoyer le message de confirmation"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autoriser"])},BACK:e=>{const{normalize:n}=e;return n(["Retour"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:n}=e;return n(["Désactiver"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier"])},ENABLE:e=>{const{normalize:n}=e;return n(["Activer"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtrer"])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},NO:e=>{const{normalize:n}=e;return n(["Non"])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Demander un export de données"])},RESET:e=>{const{normalize:n}=e;return n(["Réinit."])},SUBMIT:e=>{const{normalize:n}=e;return n(["Valider"])},YES:e=>{const{normalize:n}=e;return n(["Oui"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["à propos"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Confirmation"])},CONTACT:e=>{const{normalize:n}=e;return n(["contact"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["jour"]),n(["jours"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Affiché"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentation (en)"])},HERE:e=>{const{normalize:n}=e;return n(["ici"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Masqué"])},HOME:e=>{const{normalize:n}=e;return n(["Accueil"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["ascendant"])},DESC:e=>{const{normalize:n}=e;return n(["descendant"])},LABEL:e=>{const{normalize:n}=e;return n(["tri"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["trier par "])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["par page"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Total"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Tableau de bord"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Ce mois-ci"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Page introuvable"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Séance introuvable"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Une erreur s'est produite"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Erreur. Veuillez réessayer ou contacter l'administrateur."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une nouvelle application OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Identifiant"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Description de l'application"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Créée le"])},NAME:e=>{const{normalize:n}=e;return n(["Nom de l'application"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL de redirection"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture à la configuration de l'application."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes auth."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes auth."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes users."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes users."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en lecture aux routes workouts."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["donne les droits en écriture aux routes workouts."])}},URL:e=>{const{normalize:n}=e;return n(["URL de l'application"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applications OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir supprimer cette application ?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'application ",t(r(0))," demande les accès suivants :"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autoriser ",t(r(0))," à utiliser votre compte ?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copier dans le presse papier"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Supprimer l'application"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Ajouter une application"])},NO_APP:e=>{const{normalize:n}=e;return n(["Application introuvable !"])},NO_APPS:e=>{const{normalize:n}=e;return n(["pas de applications"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["pas de description"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Révoquer tous les jetons"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr de vouloir révoquer tous les jetons ?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tous les jetons associés existants ont été révoqués."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous "Supprimer mon compte" dans l\'espace de mise à jour de votre compte.'])},TITLE:e=>{const{normalize:n}=e;return n(["Suppression du compte"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\n\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Modifications de notre politique de confidentialité"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["Les informations suivantes sont collectées :\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\n- Données techniques (nom du navigateur et du système d'exploitation)."])},TITLE:e=>{const{normalize:n}=e;return n(["Quelles sont les informations que nous recueillons ?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\n\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\n\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\n\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe."])},TITLE:e=>{const{normalize:n}=e;return n(["Divulguons-nous des informations à des tiers ?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment protégeons-nous vos informations ?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte."])},TITLE:e=>{const{normalize:n}=e;return n(["Comment utilisons-nous vos informations ?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\n\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\n\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction."])},TITLE:e=>{const{normalize:n}=e;return n(["Protection des mineurs"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["En utilisant notre site, vous acceptez la politique de confidentialité de notre site web."])},TITLE:e=>{const{normalize:n}=e;return n(["Votre consentement"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Dernière mise à jour"])},TITLE:e=>{const{normalize:n}=e;return n(["politique de confidentialité"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Vélo (Virtuel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["VTT (Électrique)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinisme"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Aviron"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Ski (Randonnée)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Raquettes"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Marche"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiques"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mois"])},week:e=>{const{normalize:n}=e;return n(["semaine"])},year:e=>{const{normalize:n}=e;return n(["année"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Vous n'avez pas reçu les instructions ?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Vérifiez vos courriels. Un nouveau courriel de confirmation a été envoyé à l'adresse électronique fournie."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Êtes-vous sûr·e de vouloir supprimer votre compte ? Toutes les données seront définitivement effacées."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe actuel"])},EMAIL:e=>{const{normalize:n}=e;return n(["Courriel"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Saisissez une adresse électronique valide."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Saisissez un mot de passe"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Export des données"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Télécharger l'archive"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["lien en cours de génération..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Vous pouvez demander un export par 24h"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["en erreur (veuillez demander une nouvelle archive)"])},in_progress:e=>{const{normalize:n}=e;return n(["en cours..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtrer sur le nom d'utilisateur"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["masquer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Je souhaite supprimer mon compte"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La politique de confidentialité a été mise à jour. Veuillez l'",t(r(0))," avant de poursuivre."])},LOGIN:e=>{const{normalize:n}=e;return n(["Se connecter"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Se déconnecter"])},LOG_IN:e=>{const{normalize:n}=e;return n(["connecter"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nouveau mot de passe"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Aucun utilisateur trouvé."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Mot de passe oublié ?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["8 caractères minimum."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["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:{AVERAGE:e=>{const{normalize:n}=e;return n(["moyenne"])},GOOD:e=>{const{normalize:n}=e;return n(["bonne"])},LABEL:e=>{const{normalize:n}=e;return n(["robustesse du mot de passe"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Mettez quelques lettres en majuscules, mais pas toutes."])},anotherWord:e=>{const{normalize:n}=e;return n(["Ajoutez des mots moins courants."])},associatedYears:e=>{const{normalize:n}=e;return n(["Évitez les années qui vous sont associées. (ex : date de naissance)."])},capitalization:e=>{const{normalize:n}=e;return n(["Capitalisez mais pas seulement la première lettre."])},dates:e=>{const{normalize:n}=e;return n(["Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance)."])},l33t:e=>{const{normalize:n}=e;return n(["Évitez les substitutions de lettres prévisibles comme ","@"," pour a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois."])},noNeed:e=>{const{normalize:n}=e;return n(["Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules."])},pwned:e=>{const{normalize:n}=e;return n(["Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."])},recentYears:e=>{const{normalize:n}=e;return n(["Évitez les dernières années."])},repeated:e=>{const{normalize:n}=e;return n(["Évitez les mots et les caractères répétés."])},reverseWords:e=>{const{normalize:n}=e;return n(["Évitez les orthographes inversées des mots courants."])},sequences:e=>{const{normalize:n}=e;return n(["Évitez les séquences de caractères courantes."])},useWords:e=>{const{normalize:n}=e;return n(["Utilisez plusieurs mots, mais évitez les phrases courantes."])}},WEAK:e=>{const{normalize:n}=e;return n(["faible"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Votre mot de passe a été mis à jour. Cliquez ",t(r(0))," pour vous connecter."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du compte"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Données relatives au dénivelé positif (records, total)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Revenir au profil"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Date de naissance"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Format d'affichage de la date"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifier les préférences des sports"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Veuillez vous ",t(r(0))," pour changer de nouveau votre adresse électronique ou contacter l'administrateur"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Prénom"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Langue"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Nom"])},LOCATION:e=>{const{normalize:n}=e;return n(["Lieu"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lundi"])},PICTURE:e=>{const{normalize:n}=e;return n(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour de l'image de profil"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Supprimer"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Mettre à jour l'image"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Politique de confidentialité"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Date d'inscription"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["action"])},COLOR:e=>{const{normalize:n}=e;return n(["couleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["désactivé par l'administrateur"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actif"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["seuil de vitesse arrêtée"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Mise à jour des préférences des sports"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["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:n}=e;return n(["Votre compte a été créé avec succès."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Votre compte a été modifié avec succès."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Dimanche"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["compte"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["image"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["préférences"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["politique de confidentialité"])},PROFILE:e=>{const{normalize:n}=e;return n(["profil"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Fuseau horaire"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Système impérial (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unités pour les distances"])},METRIC:e=>{const{normalize:n}=e;return n(["Système métrique (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["J'ai lu et accepte la ",t(r(0)),"."])},REGISTER:e=>{const{normalize:n}=e;return n(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Désolé, les inscriptions sont désactivées."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Envoyer à nouveau le courriel de confirmation de compte"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Réinitialiser votre mot de passe"])},REVIEW:e=>{const{normalize:n}=e;return n(["accepter"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["afficher le mot de passe"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Le compte de cet utilisateur est inactif."])},USERNAME:e=>{const{normalize:n}=e;return n(["Nom d'utilisateur"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(["3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["photo de l'utilisateur"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Vous avez accepté la ",t(r(0)),"."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["revenir à la séance"])},DATE:e=>{const{normalize:n}=e;return n(["date"])},DESCENT:e=>{const{normalize:n}=e;return n(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["afficher les filtres"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distance"])},DURATION:e=>{const{normalize:n}=e;return n(["durée"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifier la séance"])},ELEVATION:e=>{const{normalize:n}=e;return n(["altitude"])},END:e=>{const{normalize:n}=e;return n(["fin"])},FROM:e=>{const{normalize:n}=e;return n(["à partir de"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["masquer les filtres"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distance doit être supérieure à 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durée doit être supérieure à 0 secondes"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude max"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["taille max. "])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance suivante"])},NOTES:e=>{const{normalize:n}=e;return n(["notes"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["pas de répertoire"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Pas de séances."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Séance précédente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distance la + longue"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Dénivelé positif le + élevé"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segments"])])},SPEED:e=>{const{normalize:n}=e;return n(["vitesse"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["début"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Départ et arrivée"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["démarrer l'axe de l'altitude à 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titre"])},TO:e=>{const{normalize:n}=e;return n(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Ajoutez votre première séance !"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["ensoleillé"])},"clear-night":e=>{const{normalize:n}=e;return n(["nuit claire"])},cloudy:e=>{const{normalize:n}=e;return n(["nuageux"])},fog:e=>{const{normalize:n}=e;return n(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:n}=e;return n(["pluie"])},sleet:e=>{const{normalize:n}=e;return n(["neige fondue"])},snow:e=>{const{normalize:n}=e;return n(["neige"])},wind:e=>{const{normalize:n}=e;return n(["venteux"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["humidité"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["température"])},WIND:e=>{const{normalize:n}=e;return n(["vent"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNO"])},NW:e=>{const{normalize:n}=e;return n(["NO"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSO"])},SW:e=>{const{normalize:n}=e;return n(["SO"])},W:e=>{const{normalize:n}=e;return n(["O"])},WNW:e=>{const{normalize:n}=e;return n(["ONO"])},WSW:e=>{const{normalize:n}=e;return n(["OSO"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["sans fichier .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["avec un fichier .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["séance"]),n(["séances"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["ou une archive .zip contenant des fichiers .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},6013:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contatta l'amministratore"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee è un tracker self-hosted per attività outdoor."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sotto licenza ",t(r(0))," "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Codice sorgente"])}},a={ACTION:e=>{const{normalize:n}=e;return n(["Azione"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Attiva account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Amministrazione"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Aggiungi/rimuovi permessi, elimina account utente."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicazione"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Email di contatto dell'amministratore"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di files zip"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Se settato a 0, non ci sono limiti per le registrazioni."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Numero massimo di utenti attivi"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["nessuna mail di contatto"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dei file caricabili (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Configurazione applicazione"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Dimensione massima dell'archivio zip (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Ritorna ad amministrazione"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler eliminare ",t(r(0))," account? Tutti i dati verranno persi, quest'azione non può essere annullata."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Sei sicuro di voler resettare ",t(r(0))," password?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Email corrente"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Elimina utente"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["L'invio di email è disabilitato."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Attiva/Disattiva sports."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nuova email"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["La password è stata reimpostata."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento disabilitata."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["La registrazione è al momento abilitata."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset password"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Attivo"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["workout esistono"])},IMAGE:e=>{const{normalize:n}=e;return n(["Immagine"])},LABEL:e=>{const{normalize:n}=e;return n(["Etichetta"])}},TITLE:e=>{const{normalize:n}=e;return n(["Amministrazione sport"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Aggiorna configurazione applicazione."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Aggiorna email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["utente"]),n(["utenti"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["stato admin"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["data di registrazione"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["stato account"])},USERNAME:e=>{const{normalize:n}=e;return n(["nome utente"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["numero di workout"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Aggiungi permessi di amministratore"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Rimuovi permessi di amministratore"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["L'indirizzo email è stato aggiornato."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Errore di rete."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amminstratore."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: dev'essere inserita un'email valida."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Errore nella lettura del file gpx."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Errore nell'elaborazione del file gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Errore nella lettura della configurazione."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Errore nell'aggiornamento della configurazione"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Errore, per favore riprova o contatta l'amministratore."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Errore, la registrazione è disabilitata."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["File con estensione non permessa."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["La dimensione del file è maggiore di quella massima permessa."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Credenziali errate."])},"invalid payload":e=>{const{normalize:n}=e;return n(["I dati inseriti non sono validi."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Token scaduto, per favore ripeti il log in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["La nuova email dev'essere diversa dalla vecchia mail"])},"no file part":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"no selected file":e=>{const{normalize:n}=e;return n(["Nessun file scelto."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Password: la password inserita e la conferma non combaciano."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Insersci un token di autenticazione valido."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Token scaduto. Per favore ripeti il log in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Mi dispiace, quell'username è già esistente."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Questo sport non esiste."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Registrato con successo."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Il numero di files nell'archivio supera il limite massimo permesso."])},"user does not exist":e=>{const{normalize:n}=e;return n(["L'utente non esiste."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Dev'essere inserita un'email valida"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["Non hai i permessi necessari."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["avanti"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["precedente"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Re-invia email di conferma"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Autorizza"])},BACK:e=>{const{normalize:n}=e;return n(["Indietro"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annulla"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Resetta filtri"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Elimina il mio account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Disattiva"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica"])},ENABLE:e=>{const{normalize:n}=e;return n(["Attiva"])},FILTER:e=>{const{normalize:n}=e;return n(["Filtra"])},LOGIN:e=>{const{normalize:n}=e;return n(["Log in"])},NO:e=>{const{normalize:n}=e;return n(["No"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Invia"])},YES:e=>{const{normalize:n}=e;return n(["Si"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["about"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Conferma"])},CONTACT:e=>{const{normalize:n}=e;return n(["contatto"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["giorno"]),n(["giorni"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Mostrato"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentazione"])},HERE:e=>{const{normalize:n}=e;return n(["qui"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Nascosto"])},HOME:e=>{const{normalize:n}=e;return n(["Home"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["Dal più basso al più alto"])},DESC:e=>{const{normalize:n}=e;return n(["Dal più alto al più basso"])},LABEL:e=>{const{normalize:n}=e;return n(["ordina"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["ordina per"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totale"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Questo mese"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina non trovata"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Workout non trovato"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Qualcosa è andato storto"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Errore. Per favore riprova o contatta l'amministratore."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi una nuova applicazione OAuth2"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Secret"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["Descrizione applicazione"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Issue at"])},NAME:e=>{const{normalize:n}=e;return n(["Nome applicazione"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["URL redirect"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Scope"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura alla configurazioen dell'applicazione."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a usersendpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di lettura a workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["da permessi di scrittura a workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["URL applicazione"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["Applicazioni OAuth2"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare quest'app?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["L'applicazione ",t(r(0))," sta chiedendo:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Autorizzi ",t(r(0))," ad utilizzare il tuo account?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["copia nella clipboard"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Elimina applicazione"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Aggiungi applicazione"])},NO_APP:e=>{const{normalize:n}=e;return n(["Applicazione non trovata!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["nessuna applicazione"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["nessuna descrizione"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Rimuovi tutti i tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler rimuovere tutti i token?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Tutti i token esistenti associati sono stati rimossi."])}},d={},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Ciclismo (Trasporto)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Cicliscmo (Virtuale)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Escursioni"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountain Biking (Elettrica)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Alpinismo"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Canottaggio"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Corsa"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Alpino)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Sci (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Racchette da neve"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Sentieri"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Camminata"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistiche"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["mese"])},week:e=>{const{normalize:n}=e;return n(["settimana"])},year:e=>{const{normalize:n}=e;return n(["anno"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Non hai ricevuto istruzioni?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato."])},ADMIN:e=>{const{normalize:n}=e;return n(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Hai già un account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata"])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Password corrente"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Inserisci un indirizzo email valido."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Inserisci una password"])},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filtra per username"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["nascondi password"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Token invalido, per favore richiedi un nuovo reset della password."])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LOGIN:e=>{const{normalize:n}=e;return n(["Login"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Logout"])},LOG_IN:e=>{const{normalize:n}=e;return n(["log in"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nuova password"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Nessun utente trovato."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Password"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Password dimenticata?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Inserisci almeno 8 caratteri."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Reset password"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["media"])},GOOD:e=>{const{normalize:n}=e;return n(["buona"])},LABEL:e=>{const{normalize:n}=e;return n(["sicurezza password"])},STRONG:e=>{const{normalize:n}=e;return n(["forte"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Inserisci qualche maiuscola."])},anotherWord:e=>{const{normalize:n}=e;return n(["Aggiungi più parole che sono meno comuni."])},associatedYears:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},capitalization:e=>{const{normalize:n}=e;return n(["Inserisci maiuscole oltre alla prima lettera."])},dates:e=>{const{normalize:n}=e;return n(["Evita date che possono essere associate a te."])},l33t:e=>{const{normalize:n}=e;return n(["Evita sostituzioni prevedibili, per esempio, ","@"," per la a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Usa patterns più lunghi e cambia direzione di scrittura più volte."])},noNeed:e=>{const{normalize:n}=e;return n(["Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole."])},pwned:e=>{const{normalize:n}=e;return n(["È consigliabile cambiare questa password se è utilizzata per altro."])},recentYears:e=>{const{normalize:n}=e;return n(["Evita date recenti."])},repeated:e=>{const{normalize:n}=e;return n(["Evita di ripetere lettere e parole."])},reverseWords:e=>{const{normalize:n}=e;return n(["Evita di scrivere parole al contrario."])},sequences:e=>{const{normalize:n}=e;return n(["Evita sequenze di caratteri comuni."])},useWords:e=>{const{normalize:n}=e;return n(["Usa più parole, ma evita frasi comuni."])}},WEAK:e=>{const{normalize:n}=e;return n(["bassa"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["La tua password è stata aggiornata. Clicca ",t(r(0))," per effettuare il login."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Tipo di account"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Dati relativi alle salite (singoli, totale)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Ritorna al profilo"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Data di nascita"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Formato data"])},EDIT:e=>{const{normalize:n}=e;return n(["Modifica profilo"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Modifica preferenze sport"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Per favore ",t(r(0))," per cambiare di nuovo la tua mail o contatta l'amministratore"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Primo giorno della settimana"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Nome"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Lingua"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Cognome"])},LOCATION:e=>{const{normalize:n}=e;return n(["Posizione"])},MONDAY:e=>{const{normalize:n}=e;return n(["Lunedì"])},PICTURE:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Foto"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Rimuovi foto"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Aggiorna foto"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profilo"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Data di registrazione"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["azione"])},COLOR:e=>{const{normalize:n}=e;return n(["colore"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["disattivato dall'amministratore"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["attivo"])},LABEL:e=>{const{normalize:n}=e;return n(["etichetta"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["Limite minimo di velocità"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Preferenze sport"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Il tuo account è stato creato con successo."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Un link per attivare il tuo account è stato inviato all'indirizzo specificato."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Il tuo account è stato aggiornato con successo."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Domenica"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["foto"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["preferenze"])},PROFILE:e=>{const{normalize:n}=e;return n(["profilo"])},SPORTS:e=>{const{normalize:n}=e;return n(["sports"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Timezone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Sistema imperiale (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Unità per la distanza"])},METRIC:e=>{const{normalize:n}=e;return n(["Sistema metrico (m, km, m/s, °C)"])}}},REGISTER:e=>{const{normalize:n}=e;return n(["Registra"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Mi dispiace, la registrazione è disabilitata."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Re-invia email di conferma dell'account"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Resetta password"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["mostra password"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Questo account è inattivo."])},USERNAME:e=>{const{normalize:n}=e;return n(["Username"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo "_".'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["foto profilo"])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Aggiungi un workout"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analisi"])},ASCENT:e=>{const{normalize:n}=e;return n(["salita"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["velocità media"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["vel. media"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["ritorna al workout"])},DATE:e=>{const{normalize:n}=e;return n(["data"])},DESCENT:e=>{const{normalize:n}=e;return n(["discesa"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["mostra filtri"])},DISTANCE:e=>{const{normalize:n}=e;return n(["distanza"])},DURATION:e=>{const{normalize:n}=e;return n(["durata"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Modifica il workout"])},ELEVATION:e=>{const{normalize:n}=e;return n(["elevazione"])},END:e=>{const{normalize:n}=e;return n(["fine"])},FROM:e=>{const{normalize:n}=e;return n(["da"])},GPX_FILE:e=>{const{normalize:n}=e;return n(["file .gpx"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["nascondi filtri"])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["La distanza dev'essere maggiore di 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["La durata dev'essere maggiore di 0"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Ultimi workout"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica più workout"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine massima"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["file massimi"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["dimensione massima"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["velocità massima"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["altitudine minima"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Prossimo workout"])},NOTES:e=>{const{normalize:n}=e;return n(["note"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(['data dal file gpx, senza "pulizia"'])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Nessun file scelto"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["nessuna cartella all'interno"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Nessuna mappa"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento successivo"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout successivo"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Nessuna nota"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Nessun segmento precedente"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Nessun workout precedente"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Nessun record."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Nessun workout."])},PAUSES:e=>{const{normalize:n}=e;return n(["pause"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Segmento precedente"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Workout precedente"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Vel. media"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Distanza più lunga"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Salita più alta"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Durata più lunga"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Vel. massima"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["caratteri rimanenti"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segmento"]),n(["segmenti"])])},SPEED:e=>{const{normalize:n}=e;return n(["velocità"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sports"])])},START:e=>{const{normalize:n}=e;return n(["inizio"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Inizio e fine"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["partenza asse elevazione a 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titolo"])},TO:e=>{const{normalize:n}=e;return n(["a"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["durata totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Carica file!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["cielo chiaro"])},"clear-night":e=>{const{normalize:n}=e;return n(["notte chiara"])},cloudy:e=>{const{normalize:n}=e;return n(["nuvoloso"])},fog:e=>{const{normalize:n}=e;return n(["nebbia"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["parzialmente nuvoloso"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["notte parzialmente nuvolosa"])},rain:e=>{const{normalize:n}=e;return n(["pioggia"])},sleet:e=>{const{normalize:n}=e;return n(["nevischio"])},snow:e=>{const{normalize:n}=e;return n(["neve"])},wind:e=>{const{normalize:n}=e;return n(["vento"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["umidità"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatura"])},WIND:e=>{const{normalize:n}=e;return n(["vento"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["E"])},ENE:e=>{const{normalize:n}=e;return n(["ENE"])},ESE:e=>{const{normalize:n}=e;return n(["ESE"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NE"])},NNE:e=>{const{normalize:n}=e;return n(["NNE"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["S"])},SE:e=>{const{normalize:n}=e;return n(["SE"])},SSE:e=>{const{normalize:n}=e;return n(["SSE"])},SSW:e=>{const{normalize:n}=e;return n(["SSW"])},SW:e=>{const{normalize:n}=e;return n(["SW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WSW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["senza file .gpx"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["con file .gpx"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["workout"]),n(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["data workout"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Sei sicuro di voler eliminare questo workout?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n(["file .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["o file .zip contenente files .gpx"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},1901:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={},a={},o={},i={},s={},l={},c={},u={},d={},m={},E={},_={},S={},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},3726:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return T}});var r={ABOUT_THIS_INSTANCE:e=>{const{normalize:n}=e;return n(["Over deze instantie"])},CONTACT_ADMIN:e=>{const{normalize:n}=e;return n(["Contacteer uw administrator"])},FITTRACKEE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["FitTrackee is zelf-gehoste activiteiten tracker."])},FITTRACKEE_LICENSE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Onder ",t(r(0))," licentie "])},SOURCE_CODE:e=>{const{normalize:n}=e;return n(["Broncode"])},WEATHER_DATA_FROM:e=>{const{normalize:n}=e;return n(["Weer gegevens van:"])}},a={ABOUT:{DESCRIPTION:e=>{const{normalize:n}=e;return n(["Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden."])},TEXT:e=>{const{normalize:n}=e;return n(["Gedetailleerde informatie over deze instantie"])}},ACTION:e=>{const{normalize:n}=e;return n(["Actie"])},ACTIVATE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Activeer account"])},ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ADMINISTRATION:e=>{const{normalize:n}=e;return n(["Instellingen"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:n}=e;return n(["Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount."])},APPLICATION:e=>{const{normalize:n}=e;return n(["Applicatie"])},APP_CONFIG:{ADMIN_CONTACT:e=>{const{normalize:n}=e;return n(["Administrator email voor contact"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal bestanden in zip archief"])},MAX_USERS_HELP:e=>{const{normalize:n}=e;return n(["Bij 0, geen limiet op registratie."])},MAX_USERS_LABEL:e=>{const{normalize:n}=e;return n(["Max. aantal actieve gebruikers"])},NO_CONTACT_EMAIL:e=>{const{normalize:n}=e;return n(["geen contact email"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van bestanden voor upload (in Mb)"])},TITLE:e=>{const{normalize:n}=e;return n(["Applicatie configureren"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:n}=e;return n(["Max. grootte van zip archief (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:n}=e;return n(["Terug naar beheer"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u de account ",t(r(0))," wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden."])},CONFIRM_USER_PASSWORD_RESET:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Weet u zeker dat u het wachtwoord voor ",t(r(0))," wilt resetten?"])},CURRENT_EMAIL:e=>{const{normalize:n}=e;return n(["Huidige email"])},DELETE_USER:e=>{const{normalize:n}=e;return n(["Verwijder gebruiker"])},EMAIL_SENDING_DISABLED:e=>{const{normalize:n}=e;return n(["Emails verzenden is uitgeschakeld."])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:n}=e;return n(["Aan- of uitzetten van sporten."])},NEW_EMAIL:e=>{const{normalize:n}=e;return n(["Nieuwe email"])},NO_TEXT_ENTERED:e=>{const{normalize:n}=e;return n(["Geen tekst ingegeven"])},PASSWORD_RESET_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het wachtwoord werd gereset."])},PRIVACY_POLICY_DESCRIPTION:e=>{const{normalize:n}=e;return n(["Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden."])},REGISTRATION_DISABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel uitgeschakeld."])},REGISTRATION_ENABLED:e=>{const{normalize:n}=e;return n(["Registratie is momenteel ingeschakeld."])},RESET_USER_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset wachtwoord"])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:n}=e;return n(["Ingeschakeld"])},HAS_WORKOUTS:e=>{const{normalize:n}=e;return n(["Trainingen aanwezig"])},IMAGE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},LABEL:e=>{const{normalize:n}=e;return n(["Label"])}},TITLE:e=>{const{normalize:n}=e;return n(["Beheer sporten"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:n}=e;return n(["De applicatie configureren."])},UPDATE_USER_EMAIL:e=>{const{normalize:n}=e;return n(["Update email"])},USER:e=>{const{normalize:n,plural:t}=e;return t([n(["gebruiker"]),n(["gebruikers"])])},USERS:{SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:n}=e;return n(["admin status"])},CREATED_AT:e=>{const{normalize:n}=e;return n(["Registratie datum"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["Account status"])},USERNAME:e=>{const{normalize:n}=e;return n(["gebruikersnaam"])},WORKOUTS_COUNT:e=>{const{normalize:n}=e;return n(["aantal trainingen"])}}},TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Admin rechten toevoegen"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:n}=e;return n(["Verwijder admin rechten"])}}},USER_EMAIL_UPDATE_SUCCESSFUL:e=>{const{normalize:n}=e;return n(["Het emailadres werd bijgewerkt."])}},o={ERROR:{"Network Error":e=>{const{normalize:n}=e;return n(["Netwerk fout."])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])},"at least one file in zip archive exceeds size limit, please check the archive":e=>{const{normalize:n}=e;return n(["Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren."])},"completed request already exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een voltooide export aanvraag."])},"email: valid email must be provided":e=>{const{normalize:n}=e;return n(["Email: een geldige email is vereist."])},"error during gpx file parsing":e=>{const{normalize:n}=e;return n(["Fout bij het verwerken van het gpx bestand."])},"error during gpx processing":e=>{const{normalize:n}=e;return n(["Fout bij verwerken van gpx."])},"error on getting configuration":e=>{const{normalize:n}=e;return n(["Fout bij ophalen van configuratie."])},"error when updating configuration":e=>{const{normalize:n}=e;return n(["Fout bij het updaten van de configuratie"])},"error, please try again or contact the administrator":e=>{const{normalize:n}=e;return n(["Fout, probeer opnieuw of contacteer de administrator."])},"error, registration is disabled":e=>{const{normalize:n}=e;return n(["Fout, registratie is uitgeschakeld."])},"file extension not allowed":e=>{const{normalize:n}=e;return n(["Bestandsformaat niet toegelaten."])},"file size is greater than the allowed size":e=>{const{normalize:n}=e;return n(["Bestandsgrootte is groter dan toegestaan."])},"invalid credentials":e=>{const{normalize:n}=e;return n(["Ongeldige inloggegevens."])},"invalid payload":e=>{const{normalize:n}=e;return n(["Ingegeven data is ongeldig."])},"invalid token, please log in again":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"invalid token, please request a new token":e=>{const{normalize:n}=e;return n(["Ongeldige token, log opnieuw in."])},"new email must be different than curent email":e=>{const{normalize:n}=e;return n(["Het nieuwe email adres dient te verschillen van het oude"])},"no file part":e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven."])},"no selected file":e=>{const{normalize:n}=e;return n(["Geen bestand geselecteerd."])},"ongoing request exists":e=>{const{normalize:n}=e;return n(["Er bestaat al een export aanvraag."])},"password: password and password confirmation do not match":e=>{const{normalize:n}=e;return n(["Wachtwoord: het wachtwoord en de bevestiging komen niet overeen."])},"provide a valid auth token":e=>{const{normalize:n}=e;return n(["Geef een geldig auth token."])},"signature expired, please log in again":e=>{const{normalize:n}=e;return n(["Signatuur verlopen. Log opnieuw in."])},"sorry, that username is already taken":e=>{const{normalize:n}=e;return n(["Sorry, deze gebruikersnaam is al in gebruik."])},"sport does not exist":e=>{const{normalize:n}=e;return n(["Deze sport bestaat niet."])},"successfully registered":e=>{const{normalize:n}=e;return n(["Succesvol geregistreerd."])},"the number of files in the archive exceeds the limit":e=>{const{normalize:n}=e;return n(["Het aantal bestanden in het zip archief overschrijdt de limiet."])},"user does not exist":e=>{const{normalize:n}=e;return n(["Gebruiker bestaat niet."])},"valid email must be provided for admin contact":e=>{const{normalize:n}=e;return n(["Een geldige email is vereist voor admin contact informatie"])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:n}=e;return n(["U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten."])},"you do not have permissions":e=>{const{normalize:n}=e;return n(["U hebt geen machtigingen."])}},PAGINATION:{NEXT:e=>{const{normalize:n}=e;return n(["volgende"])},PREVIOUS:e=>{const{normalize:n}=e;return n(["vorige"])}}},i={"ACCOUNT-CONFIRMATION-RESEND":e=>{const{normalize:n}=e;return n(["Herzend bevestigings email"])},AUTHORIZE:e=>{const{normalize:n}=e;return n(["Toekennen"])},BACK:e=>{const{normalize:n}=e;return n(["Terug"])},CANCEL:e=>{const{normalize:n}=e;return n(["Annuleren"])},CLEAR_FILTER:e=>{const{normalize:n}=e;return n(["Verwijder filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Verwijder mijn account"])},DISABLE:e=>{const{normalize:n}=e;return n(["Uitzetten"])},EDIT:e=>{const{normalize:n}=e;return n(["Bewerken"])},ENABLE:e=>{const{normalize:n}=e;return n(["Aanzetten"])},FILTER:e=>{const{normalize:n}=e;return n(["Filter"])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},NO:e=>{const{normalize:n}=e;return n(["Nee"])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreer"])},REQUEST_DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data export aanvragen"])},RESET:e=>{const{normalize:n}=e;return n(["Reset"])},SUBMIT:e=>{const{normalize:n}=e;return n(["Opslaan"])},YES:e=>{const{normalize:n}=e;return n(["Ja"])}},s={ABOUT:e=>{const{normalize:n}=e;return n(["over"])},CONFIRMATION:e=>{const{normalize:n}=e;return n(["Bevestiging"])},CONTACT:e=>{const{normalize:n}=e;return n(["contacteer"])},DAY:e=>{const{normalize:n,plural:t}=e;return t([n(["dag"]),n(["dagen"])])},DISPLAYED:e=>{const{normalize:n}=e;return n(["Weergegeven"])},DOCUMENTATION:e=>{const{normalize:n}=e;return n(["documentatie"])},HERE:e=>{const{normalize:n}=e;return n(["hier"])},HIDDEN:e=>{const{normalize:n}=e;return n(["Verborgen"])},HOME:e=>{const{normalize:n}=e;return n(["Startscherm"])},SELECTS:{ORDER:{ASC:e=>{const{normalize:n}=e;return n(["oplopend"])},DESC:e=>{const{normalize:n}=e;return n(["aflopend"])},LABEL:e=>{const{normalize:n}=e;return n(["sorteer"])}},ORDER_BY:{LABEL:e=>{const{normalize:n}=e;return n(["sorteer op"])}},PER_PAGE:{LABEL:e=>{const{normalize:n}=e;return n(["per pagina"])}}},TOTAL:e=>{const{normalize:n}=e;return n(["Totaal"])}},l={DASHBOARD:e=>{const{normalize:n}=e;return n(["Dashboard"])},THIS_MONTH:e=>{const{normalize:n}=e;return n(["Deze maand"])}},c={APP_ERROR:e=>{const{normalize:n}=e;return n(["Er heeft zich een onbekende fout voorgedaan.
Probeer aub later opnieuw of contacteer de administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:n}=e;return n(["Pagina niet gevonden"])},WORKOUT:e=>{const{normalize:n}=e;return n(["Training niet gevonden"])}},SOMETHING_WRONG:e=>{const{normalize:n}=e;return n(["Er ging iets mis"])},UNKNOWN:e=>{const{normalize:n}=e;return n(["Fout. Probeer opnieuw of contacteer de administrator."])}},u={ADD_A_NEW_APP:e=>{const{normalize:n}=e;return n(["Nieuwe OAuth2 app toevoegen"])},APP:{CLIENT_ID:e=>{const{normalize:n}=e;return n(["Id"])},CLIENT_SECRET:e=>{const{normalize:n}=e;return n(["Geheim"])},DESCRIPTION:e=>{const{normalize:n}=e;return n(["App omschrijving"])},ISSUE_AT:e=>{const{normalize:n}=e;return n(["Probleem bij"])},NAME:e=>{const{normalize:n}=e;return n(["Naam van de app"])},REDIRECT_URL:e=>{const{normalize:n}=e;return n(["Doorverwijs URL"])},SCOPE:{LABEL:e=>{const{normalize:n}=e;return n(["Omvang"])},"application:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["geeft toestemming tot aanpassen van de applicatie instellingen."])},"profile:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan auth endpoints."])},"profile:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan auth endpoints."])},"users:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan users endpoints."])},"users:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan users endpoints."])},"workouts:read_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat leestoegang toe aan workouts endpoints."])},"workouts:write_DESCRIPTION":e=>{const{normalize:n}=e;return n(["staat schrijftoegang toe aan workouts endpoints."])}},URL:e=>{const{normalize:n}=e;return n(["App URL"])}},APPS_LIST:e=>{const{normalize:n}=e;return n(["OAuth2 apps"])},APP_CREATED_SUCCESSFULLY:e=>{const{normalize:n}=e;return n(["App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen."])},APP_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze app wilt verwijderen?"])},APP_REQUESTING_ACCESS:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["De app ",t(r(0))," vraagt:"])},AUTHORIZE_APP:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Toegang geven aan ",t(r(0))," tot uw gebruikersaccount?"])},COPY_TO_CLIPBOARD:e=>{const{normalize:n}=e;return n(["kopieer naar klembord"])},DELETE_APP:e=>{const{normalize:n}=e;return n(["Verwijder app"])},NEW_APP:e=>{const{normalize:n}=e;return n(["Voeg een app toe"])},NO_APP:e=>{const{normalize:n}=e;return n(["App niet gevonden!"])},NO_APPS:e=>{const{normalize:n}=e;return n(["geen apps"])},NO_DESCRIPTION:e=>{const{normalize:n}=e;return n(["geen beschrijving"])},REVOKE_ALL_TOKENS:e=>{const{normalize:n}=e;return n(["Verwijder alle tokens"])},TOKENS_REVOCATION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u alle tokens wilt intrekken?"])},TOKENS_REVOKED:e=>{const{normalize:n}=e;return n(["Alle bestaande tokens werden ingetrokken."])}},d={CONTENT:{ACCOUNT_DELETION:{CONTENT:e=>{const{normalize:n}=e;return n(['U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop "Verwijder mijn account" te klikken in uw instellingen.'])},TITLE:e=>{const{normalize:n}=e;return n(["Account verwijderen"])}},CHANGES_TO_OUR_PRIVACY_POLICY:{CONTENT:e=>{const{normalize:n}=e;return n(["Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\n\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse)."])},TITLE:e=>{const{normalize:n}=e;return n(["Aanpassingen aan ons Privacybeleid"])}},DATA_COLLECTED:{CONTENT:e=>{const{normalize:n}=e;return n(["De volgende informatie wordt verzameld:\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\n- Technische informatie (de browsernaam en naam van het besturingssysteem)."])},TITLE:e=>{const{normalize:n}=e;return n(["Welke informatie wordt er door ons verzameld?"])}},INFORMATION_DISCLOSURE:{CONTENT:e=>{const{normalize:n}=e;return n(["Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\n\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\n\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\n\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen."])},TITLE:e=>{const{normalize:n}=e;return n(["Wordt er informatie met derden gedeeld?"])}},INFORMATION_PROTECTION:{CONTENT:e=>{const{normalize:n}=e;return n(["Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie."])},TITLE:e=>{const{normalize:n}=e;return n(["Hoe beschermen we uw informatie?"])}},INFORMATION_USAGE:{CONTENT:e=>{const{normalize:n}=e;return n(["De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden."])},TITLE:e=>{const{normalize:n}=e;return n(["Waarvoor wordt de opgegeven informatie gebruikt?"])}},SITE_USAGE_BY_CHILDREN:{CONTENT:e=>{const{normalize:n}=e;return n(["Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\n\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\n\nWetgeving kan verschillen als de server zich op een andere plaats bevindt."])},TITLE:e=>{const{normalize:n}=e;return n(["Gebruik door minderjarigen"])}},YOUR_CONSENT:{CONTENT:e=>{const{normalize:n}=e;return n(["Door deze site te gebruiken, gaat u akkoord met ons privacybeleid."])},TITLE:e=>{const{normalize:n}=e;return n(["Uw toestemming"])}}},LAST_UPDATE:e=>{const{normalize:n}=e;return n(["Laatste aanpassing"])},TITLE:e=>{const{normalize:n}=e;return n(["privacybeleid"])}},m={"Cycling (Sport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Transport)"])}},"Cycling (Virtual)":{LABEL:e=>{const{normalize:n}=e;return n(["Fietsen (Virtueel)"])}},Hiking:{LABEL:e=>{const{normalize:n}=e;return n(["Trektocht"])}},"Mountain Biking":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:n}=e;return n(["Mountainbiken (Elektrisch)"])}},Mountaineering:{LABEL:e=>{const{normalize:n}=e;return n(["Bergbeklimmen"])}},Rowing:{LABEL:e=>{const{normalize:n}=e;return n(["Roeien"])}},Running:{LABEL:e=>{const{normalize:n}=e;return n(["Lopen"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:n}=e;return n(["Skiën (Cross Country)"])}},Snowshoes:{LABEL:e=>{const{normalize:n}=e;return n(["Sneeuwschoenen"])}},Trail:{LABEL:e=>{const{normalize:n}=e;return n(["Trail"])}},Walking:{LABEL:e=>{const{normalize:n}=e;return n(["Wandelen"])}}},E={STATISTICS:e=>{const{normalize:n}=e;return n(["Statistieken"])},TIME_FRAMES:{month:e=>{const{normalize:n}=e;return n(["maand"])},week:e=>{const{normalize:n}=e;return n(["week"])},year:e=>{const{normalize:n}=e;return n(["jaar"])}}},_={ACCOUNT_CONFIRMATION_NOT_RECEIVED:e=>{const{normalize:n}=e;return n(["Geen instructies ontvangen?"])},ACCOUNT_CONFIRMATION_SENT:e=>{const{normalize:n}=e;return n(["Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres."])},ADMIN:e=>{const{normalize:n}=e;return n(["Beheer"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:n}=e;return n(["Al een account aangemaakt?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden."])},CURRENT_PASSWORD:e=>{const{normalize:n}=e;return n(["Huidig wachtwoord"])},EMAIL:e=>{const{normalize:n}=e;return n(["Email"])},EMAIL_INFO:e=>{const{normalize:n}=e;return n(["Geef een geldig email adres op."])},ENTER_PASSWORD:e=>{const{normalize:n}=e;return n(["Geef een paswoord in"])},EXPORT_REQUEST:{DATA_EXPORT:e=>{const{normalize:n}=e;return n(["Data exporteren"])},DOWNLOAD_ARCHIVE:e=>{const{normalize:n}=e;return n(["Archief downloaden"])},GENERATING_LINK:e=>{const{normalize:n}=e;return n(["link aanmaken..."])},ONLY_ONE_EXPORT_PER_DAY:e=>{const{normalize:n}=e;return n(["Je kan 1 keer per 24h een archief aanvragen"])},STATUS:{errored:e=>{const{normalize:n}=e;return n(["fout (gelieve een nieuw archief aan te vragen)"])},in_progress:e=>{const{normalize:n}=e;return n(["Bezig met verwerken..."])}}},FILTER_ON_USERNAME:e=>{const{normalize:n}=e;return n(["Filter op gebruikersnaam"])},HIDE_PASSWORD:e=>{const{normalize:n}=e;return n(["verberg wachtwoord"])},INVALID_TOKEN:e=>{const{normalize:n}=e;return n(["Ongeldig token, vraag een nieuwe wachtwoord reset aan."])},I_WANT_TO_DELETE_MY_ACCOUNT:e=>{const{normalize:n}=e;return n(["Ik wil mijn account verwijderen"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_PRIVACY_POLICY_TO_VALIDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Het privacybeleid werd aangepast, gelieve te ",t(r(0))," voor verdergaan."])},LOGIN:e=>{const{normalize:n}=e;return n(["Inloggen"])},LOGOUT:e=>{const{normalize:n}=e;return n(["Uitloggen"])},LOG_IN:e=>{const{normalize:n}=e;return n(["inloggen"])},NEW_PASSWORD:e=>{const{normalize:n}=e;return n(["Nieuw wachtwoord"])},NO_USERS_FOUND:e=>{const{normalize:n}=e;return n(["Geen gebruikers gevonden."])},PASSWORD:e=>{const{normalize:n}=e;return n(["Wachtwoord"])},PASSWORD_FORGOTTEN:e=>{const{normalize:n}=e;return n(["Wachtwoord vergeten?"])},PASSWORD_INFO:e=>{const{normalize:n}=e;return n(["Tenminste 8 karakters vereist."])},PASSWORD_RESET:e=>{const{normalize:n}=e;return n(["Wachtwoord reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:n}=e;return n(["Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten."])},PASSWORD_STRENGTH:{AVERAGE:e=>{const{normalize:n}=e;return n(["gemiddeld"])},GOOD:e=>{const{normalize:n}=e;return n(["goed"])},LABEL:e=>{const{normalize:n}=e;return n(["wachtwoord sterkte"])},STRONG:e=>{const{normalize:n}=e;return n(["sterk"])},SUGGESTIONS:{allUppercase:e=>{const{normalize:n}=e;return n(["Gebruik enkele hoofdletters."])},anotherWord:e=>{const{normalize:n}=e;return n(["Voeg meer niet gangbare woorden toe."])},associatedYears:e=>{const{normalize:n}=e;return n(["Vermijd jaartallen met een persoonlijke betekenis."])},capitalization:e=>{const{normalize:n}=e;return n(["Gebruik niet enkel voor de eerste letter een hoofdletter."])},dates:e=>{const{normalize:n}=e;return n(["Vermijd persoonlijke gegevens en jaartallen."])},l33t:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare vervangingen, zoals ","@"," voor de letter a."])},longerKeyboardPattern:e=>{const{normalize:n}=e;return n(["Gebruik langere patronen en verander de richting van typen meerdere malen."])},noNeed:e=>{const{normalize:n}=e;return n(["U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."])},pwned:e=>{const{normalize:n}=e;return n(["Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen."])},recentYears:e=>{const{normalize:n}=e;return n(["Vermijd recente jaartallen."])},repeated:e=>{const{normalize:n}=e;return n(["Vermijd opeenvolgende woorden en karakters."])},reverseWords:e=>{const{normalize:n}=e;return n(["Vermijd gangbare woorden die achterstevoren geschreven zijn."])},sequences:e=>{const{normalize:n}=e;return n(["Vermijd voorspelbare opeenvolgingen."])},useWords:e=>{const{normalize:n}=e;return n(["Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."])}},WEAK:e=>{const{normalize:n}=e;return n(["zwak"])}},PASSWORD_UPDATED:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Uw wachtwoord werd aangepast. Klik ",t(r(0))," om in te loggen."])},PROFILE:{ACCOUNT_EDITION:e=>{const{normalize:n}=e;return n(["Account aanpassen"])},ASCENT_DATA:e=>{const{normalize:n}=e;return n(["Hoogte gerelateerde data (opnames, totaal)"])},BACK_TO_PROFILE:e=>{const{normalize:n}=e;return n(["Terug naar profiel"])},BIO:e=>{const{normalize:n}=e;return n(["Bio"])},BIRTH_DATE:e=>{const{normalize:n}=e;return n(["Geboortedatum"])},DATE_FORMAT:e=>{const{normalize:n}=e;return n(["Weergaveformaat datum"])},EDIT:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},EDIT_PREFERENCES:e=>{const{normalize:n}=e;return n(["Voorkeuren wijzigen"])},EDIT_SPORTS_PREFERENCES:e=>{const{normalize:n}=e;return n(["Sport voorkeuren wijzigen"])},ERRORED_EMAIL_UPDATE:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Gelieve ",t(r(0))," om uw email adres opnieuw te wijzigen of contacteer uw administrator"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:n}=e;return n(["Eerste dag van de week"])},FIRST_NAME:e=>{const{normalize:n}=e;return n(["Voornaam"])},LANGUAGE:e=>{const{normalize:n}=e;return n(["Taal"])},LAST_NAME:e=>{const{normalize:n}=e;return n(["Achternaam"])},LOCATION:e=>{const{normalize:n}=e;return n(["Locatie"])},MONDAY:e=>{const{normalize:n}=e;return n(["Maandag"])},PICTURE:e=>{const{normalize:n}=e;return n(["Afbeelding"])},PICTURE_EDITION:e=>{const{normalize:n}=e;return n(["Afbeelding aanpassen"])},PICTURE_REMOVE:e=>{const{normalize:n}=e;return n(["Afbeelding verwijderen"])},PICTURE_UPDATE:e=>{const{normalize:n}=e;return n(["Afbeelding veranderen"])},PREFERENCES_EDITION:e=>{const{normalize:n}=e;return n(["Voorkeuren aanpassen"])},"PRIVACY-POLICY_EDITION":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE_EDITION:e=>{const{normalize:n}=e;return n(["Profiel aanpassen"])},REGISTRATION_DATE:e=>{const{normalize:n}=e;return n(["Datum registratie"])},SPORT:{ACTION:e=>{const{normalize:n}=e;return n(["actie"])},COLOR:e=>{const{normalize:n}=e;return n(["kleur"])},DISABLED_BY_ADMIN:e=>{const{normalize:n}=e;return n(["uitgeschakeld door admin"])},IS_ACTIVE:e=>{const{normalize:n}=e;return n(["actief"])},LABEL:e=>{const{normalize:n}=e;return n(["label"])},STOPPED_SPEED_THRESHOLD:e=>{const{normalize:n}=e;return n(["snelheidsgrens voor stilstand"])}},SPORTS_EDITION:e=>{const{normalize:n}=e;return n(["Sport voorkeuren aanpassen"])},SUCCESSFUL_EMAIL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen."])},SUCCESSFUL_REGISTRATION:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol aangemaakt."])},SUCCESSFUL_REGISTRATION_WITH_EMAIL:e=>{const{normalize:n}=e;return n(["Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres."])},SUCCESSFUL_UPDATE:e=>{const{normalize:n}=e;return n(["Uw account werd succesvol bijgewerkt."])},SUNDAY:e=>{const{normalize:n}=e;return n(["Zondag"])},TABS:{ACCOUNT:e=>{const{normalize:n}=e;return n(["account"])},APPS:e=>{const{normalize:n}=e;return n(["apps"])},PICTURE:e=>{const{normalize:n}=e;return n(["afbeelding"])},PREFERENCES:e=>{const{normalize:n}=e;return n(["voorkeuren"])},"PRIVACY-POLICY":e=>{const{normalize:n}=e;return n(["Privacybeleid"])},PROFILE:e=>{const{normalize:n}=e;return n(["profiel"])},SPORTS:e=>{const{normalize:n}=e;return n(["sporten"])}},TIMEZONE:e=>{const{normalize:n}=e;return n(["Tijdzone"])},UNITS:{IMPERIAL:e=>{const{normalize:n}=e;return n(["Imperialistisch systeem (ft, mi, mph, °F)"])},LABEL:e=>{const{normalize:n}=e;return n(["Eenheid voor afstand"])},METRIC:e=>{const{normalize:n}=e;return n(["Metrisch systeem (m, km, m/s, °C)"])}}},READ_AND_ACCEPT_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["Ik heb het ",t(r(0))," gelezen en goedgekeurd."])},REGISTER:e=>{const{normalize:n}=e;return n(["Registreren"])},REGISTER_DISABLED:e=>{const{normalize:n}=e;return n(["Sorry, registreren is uitgeschakeld."])},RESENT_ACCOUNT_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Opnieuw zenden van account bevestigingsmail"])},RESET_PASSWORD:e=>{const{normalize:n}=e;return n(["Reset uw wachtwoord"])},REVIEW:e=>{const{normalize:n}=e;return n(["beoordeling"])},SHOW_PASSWORD:e=>{const{normalize:n}=e;return n(["toon wachtwoord"])},THIS_USER_ACCOUNT_IS_INACTIVE:e=>{const{normalize:n}=e;return n(["Deze account is niet actief."])},USERNAME:e=>{const{normalize:n}=e;return n(["Gebruikersnaam"])},USERNAME_INFO:e=>{const{normalize:n}=e;return n(['3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter "_" zijn toegestaan.'])},USER_PICTURE:e=>{const{normalize:n}=e;return n(["gebruikersafbeelding"])},YOU_HAVE_ACCEPTED_PRIVACY_POLICY:e=>{const{normalize:n,interpolate:t,list:r}=e;return n(["U hebt het ",t(r(0))," aanvaard."])}},S={ADD_WORKOUT:e=>{const{normalize:n}=e;return n(["Training toevoegen"])},ANALYSIS:e=>{const{normalize:n}=e;return n(["analyse"])},ASCENT:e=>{const{normalize:n}=e;return n(["geklommen"])},AVERAGE_SPEED:e=>{const{normalize:n}=e;return n(["gemiddelde snelheid"])},AVE_SPEED:e=>{const{normalize:n}=e;return n(["gem. snelheid"])},BACK_TO_WORKOUT:e=>{const{normalize:n}=e;return n(["Terug naar training"])},DATE:e=>{const{normalize:n}=e;return n(["datum"])},DESCENT:e=>{const{normalize:n}=e;return n(["gedaald"])},DISPLAY_FILTERS:e=>{const{normalize:n}=e;return n(["toon filters"])},DISTANCE:e=>{const{normalize:n}=e;return n(["afstand"])},DURATION:e=>{const{normalize:n}=e;return n(["duur"])},EDIT_WORKOUT:e=>{const{normalize:n}=e;return n(["Training aanpassen"])},ELEVATION:e=>{const{normalize:n}=e;return n(["hoogte"])},END:e=>{const{normalize:n}=e;return n(["einde"])},FROM:e=>{const{normalize:n}=e;return n(["van"])},GPX_FILE:e=>{const{normalize:n}=e;return n([".gpx bestand"])},HIDE_FILTERS:e=>{const{normalize:n}=e;return n(["verberg filters"])},INVALID_ASCENT_OR_DESCENT:e=>{const{normalize:n}=e;return n(["Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn."])},INVALID_DISTANCE:e=>{const{normalize:n}=e;return n(["De afstand moet groter zijn dan 0"])},INVALID_DURATION:e=>{const{normalize:n}=e;return n(["De duur moet langer zijn dan 0 seconden"])},LATEST_WORKOUTS:e=>{const{normalize:n}=e;return n(["Laatste trainingen"])},LOAD_MORE_WORKOUT:e=>{const{normalize:n}=e;return n(["Toon meer trainingen"])},MAX_ALTITUDE:e=>{const{normalize:n}=e;return n(["max. hoogte"])},MAX_FILES:e=>{const{normalize:n}=e;return n(["max. aantal bestanden"])},MAX_SIZE:e=>{const{normalize:n}=e;return n(["max. grootte"])},MAX_SPEED:e=>{const{normalize:n}=e;return n(["max. snelheid"])},MIN_ALTITUDE:e=>{const{normalize:n}=e;return n(["min. hoogte"])},NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Volgende training"])},NOTES:e=>{const{normalize:n}=e;return n(["notities"])},NO_DATA_CLEANING:e=>{const{normalize:n}=e;return n(["data vanuit gpx, zonder op te schonen"])},NO_FILE_PROVIDED:e=>{const{normalize:n}=e;return n(["Geen bestand opgegeven"])},NO_FOLDER:e=>{const{normalize:n}=e;return n(["geen map aanwezig"])},NO_MAP:e=>{const{normalize:n}=e;return n(["Geen kaart"])},NO_NEXT_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen volgend segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen volgende training"])},NO_NOTES:e=>{const{normalize:n}=e;return n(["Geen notities"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Geen vorig segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Geen vorige training"])},NO_RECORDS:e=>{const{normalize:n}=e;return n(["Geen records."])},NO_WORKOUTS:e=>{const{normalize:n}=e;return n(["Geen trainingen."])},PAUSES:e=>{const{normalize:n}=e;return n(["pauzes"])},PREVIOUS_SEGMENT:e=>{const{normalize:n}=e;return n(["Vorig segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:n}=e;return n(["Vorige training"])},RECORD:e=>{const{normalize:n,plural:t}=e;return t([n(["record"]),n(["records"])])},RECORD_AS:e=>{const{normalize:n}=e;return n(["Gem. snelheid"])},RECORD_FD:e=>{const{normalize:n}=e;return n(["Langste afstand"])},RECORD_HA:e=>{const{normalize:n}=e;return n(["Hoogst geklommen"])},RECORD_LD:e=>{const{normalize:n}=e;return n(["Langste duur"])},RECORD_MS:e=>{const{normalize:n}=e;return n(["Max. snelheid"])},REMAINING_CHARS:e=>{const{normalize:n}=e;return n(["resterende karakters"])},SEGMENT:e=>{const{normalize:n,plural:t}=e;return t([n(["segment"]),n(["segmenten"])])},SPEED:e=>{const{normalize:n}=e;return n(["snelheid"])},SPORT:e=>{const{normalize:n,plural:t}=e;return t([n(["sport"]),n(["sporten"])])},START:e=>{const{normalize:n}=e;return n(["start"])},START_AND_FINISH:e=>{const{normalize:n}=e;return n(["Start en aankomst"])},START_ELEVATION_AT_ZERO:e=>{const{normalize:n}=e;return n(["Zet hoogte-as vast op 0"])},TITLE:e=>{const{normalize:n}=e;return n(["titel"])},TO:e=>{const{normalize:n}=e;return n(["aan"])},TOTAL_DURATION:e=>{const{normalize:n}=e;return n(["totale duur"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:n}=e;return n(["Eén uploaden!"])},WEATHER:{DARK_SKY:{"clear-day":e=>{const{normalize:n}=e;return n(["heldere dag"])},"clear-night":e=>{const{normalize:n}=e;return n(["heldere nacht"])},cloudy:e=>{const{normalize:n}=e;return n(["bewolkt"])},fog:e=>{const{normalize:n}=e;return n(["mist"])},"partly-cloudy-day":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte dag"])},"partly-cloudy-night":e=>{const{normalize:n}=e;return n(["gedeeltelijk bewolkte nacht"])},rain:e=>{const{normalize:n}=e;return n(["regen"])},sleet:e=>{const{normalize:n}=e;return n(["natte sneeuw"])},snow:e=>{const{normalize:n}=e;return n(["sneeuw"])},wind:e=>{const{normalize:n}=e;return n(["wind"])}},HUMIDITY:e=>{const{normalize:n}=e;return n(["vochtigheid"])},TEMPERATURE:e=>{const{normalize:n}=e;return n(["temperatuur"])},WIND:e=>{const{normalize:n}=e;return n(["wind"])},WIND_DIRECTIONS:{E:e=>{const{normalize:n}=e;return n(["O"])},ENE:e=>{const{normalize:n}=e;return n(["ONO"])},ESE:e=>{const{normalize:n}=e;return n(["OZO"])},N:e=>{const{normalize:n}=e;return n(["N"])},NE:e=>{const{normalize:n}=e;return n(["NO"])},NNE:e=>{const{normalize:n}=e;return n(["NNO"])},NNW:e=>{const{normalize:n}=e;return n(["NNW"])},NW:e=>{const{normalize:n}=e;return n(["NW"])},S:e=>{const{normalize:n}=e;return n(["Z"])},SE:e=>{const{normalize:n}=e;return n(["ZO"])},SSE:e=>{const{normalize:n}=e;return n(["ZZO"])},SSW:e=>{const{normalize:n}=e;return n(["ZZW"])},SW:e=>{const{normalize:n}=e;return n(["ZW"])},W:e=>{const{normalize:n}=e;return n(["W"])},WNW:e=>{const{normalize:n}=e;return n(["WNW"])},WSW:e=>{const{normalize:n}=e;return n(["WZW"])}}},WITHOUT_GPX:e=>{const{normalize:n}=e;return n(["zonder .gpx bestand"])},WITH_GPX:e=>{const{normalize:n}=e;return n(["met .gpx bestand"])},WORKOUT:e=>{const{normalize:n,plural:t}=e;return t([n(["training"]),n(["trainingen"])])},WORKOUT_DATE:e=>{const{normalize:n}=e;return n(["datum training"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:n}=e;return n(["Weet u zeker dat u deze training wilt verwijderen?"])},ZIP_ARCHIVE:e=>{const{normalize:n}=e;return n([".zip bestand"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:n}=e;return n(["of .zip archief met .gpx bestanden"])}},T={about:r,admin:a,api:o,buttons:i,common:s,dashboard:l,error:c,oauth2:u,privacy_policy:d,sports:m,statistics:E,user:_,workouts:S}},136:function(e,n,t){"use strict";var r=t(3148),a=t(7028),o=t(9963),i=t(2343),s=t(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=t(6252),c=t(2262),u=t(3577);const d=e=>((0,l.dD)("data-v-97e20d3a"),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"},z=["href"],I=d((()=>(0,l._)("div",{class:"footer-item bullet"},"•",-1))),R={class:"footer-item"};var g=(0,l.aZ)({__name:"Footer",props:{version:null,adminContact:null},setup(e){const n=e,{adminContact:t,version:r}=(0,c.BK)(n);return(e,n)=>{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)(t)?((0,l.wg)(),(0,l.iD)("div",A,"•")):(0,l.kq)("",!0),(0,c.SU)(t)?((0,l.wg)(),(0,l.iD)("div",O,[(0,l._)("a",{href:`mailto:${(0,c.SU)(t)}`},(0,u.zw)(e.$t("common.CONTACT")),9,z)])):(0,l.kq)("",!0),I,(0,l._)("div",R,[(0,l.Wm)(a,{to:"/privacy-policy"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])])])}}}),N=t(3744);const U=(0,N.Z)(g,[["__scopeId","data-v-97e20d3a"]]);var h=U,v=(t(7658),t(6595)),C=t(5801),w=t(9917),D=t(6287);const f=e=>((0,l.dD)("data-v-ab6e62ae"),e=e(),(0,l.Cn)(),e),P={id:"nav"},k={class:"nav-container"},L={class:"nav-app-name"},b={class:"nav-items-close"},M=f((()=>(0,l._)("div",{class:"app-name"},"FitTrackee",-1))),y={key:0,class:"nav-items-group"},G=f((()=>(0,l._)("div",{class:"nav-item nav-separator"},null,-1))),F={class:"nav-items-user-menu"},W={key:0,class:"nav-items-group"},Y={class:"nav-item nav-profile-img"},B={key:1,class:"nav-items-group"},x=f((()=>(0,l._)("i",{class:"fa fa-language"},null,-1)));var K=(0,l.aZ)({__name:"NavBar",emits:["menuInteraction"],setup(e,{emit:n}){const t=(0,w.o)(),r=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.AUTH_USER_PROFILE])),a=(0,l.Fl)((()=>t.getters[C.YN.GETTERS.IS_AUTHENTICATED])),o=(0,l.Fl)((()=>t.getters[C.SY.GETTERS.LANGUAGE])),i=(0,c.iH)(!1);function s(){i.value=!0,n("menuInteraction",!0)}function d(){i.value=!1,n("menuInteraction",!1)}function m(e){t.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e.value.toString())}function E(){t.dispatch(C.YN.ACTIONS.LOGOUT)}return(e,n)=>{const t=(0,l.up)("router-link"),_=(0,l.up)("Dropdown");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("div",k,[(0,l._)("div",L,[(0,l._)("div",{class:"nav-item app-name",onClick:n[0]||(n[0]=n=>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:n[1]||(n[1]=e=>s())})],2),(0,l._)("div",{class:(0,u.C_)(["nav-items",{"menu-open":i.value}])},[(0,l._)("div",b,[M,(0,l._)("i",{class:(0,u.C_)(["fa fa-close close-icon nav-item",{"menu-closed":!i.value}]),onClick:n[2]||(n[2]=e=>d())},null,2)]),(0,l._)("div",{class:"nav-items-app-menu",onClick:n[3]||(n[3]=e=>d())},[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",y,[(0,l.Wm)(t,{class:"nav-item",to:"/"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("dashboard.DASHBOARD")),1)])),_:1}),(0,l.Wm)(t,{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)(t,{class:"nav-item",to:"/statistics"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,u.zw)(e.$t("statistics.STATISTICS")),1)])),_:1}),(0,l.Wm)(t,{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)(t,{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),G])):(0,l.kq)("",!0)]),(0,l._)("div",F,[(0,c.SU)(a)?((0,l.wg)(),(0,l.iD)("div",W,[(0,l._)("div",Y,[(0,l.Wm)(v.Z,{user:(0,c.SU)(r)},null,8,["user"])]),(0,l.Wm)(t,{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",B,[(0,l.Wm)(t,{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)(t,{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 H=(0,N.Z)(K,[["__scopeId","data-v-ab6e62ae"]]);var $=H,Z=t(7167);const V={id:"no-config"},q={class:"error-page"},j={class:"error-img"},X=["innerHTML"];var Q=(0,l.aZ)({__name:"NoConfig",setup(e){return(e,n)=>((0,l.wg)(),(0,l.iD)("div",V,[(0,l._)("div",q,[(0,l._)("div",j,[(0,l.Wm)(Z.Z)]),(0,l._)("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,X)])]))}});const J=(0,N.Z)(Q,[["__scopeId","data-v-47759238"]]);var ee=J;const ne=(0,l._)("div",{id:"top"},null,-1),te={key:0,class:"app-container"},re={class:"app-loading"},ae={class:"container scroll"},oe=(0,l._)("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1),ie=[oe];var se=(0,l.aZ)({__name:"App",setup(e){const n=(0,w.o)(),t=(0,l.Fl)((()=>n.getters[C.SY.GETTERS.APP_CONFIG])),r=(0,l.Fl)((()=>n.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 n=navigator.language.split("-")[0];n in D.v1&&(e=n)}catch(t){e="en"}n.dispatch(C.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,e)}return(0,l.wF)((()=>{E(),n.dispatch(C.SY.ACTIONS.GET_APPLICATION_CONFIG)})),(0,l.bv)((()=>d())),(e,n)=>{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)($,{onMenuInteraction:i}),(0,c.SU)(r)?((0,l.wg)(),(0,l.iD)("div",te,[(0,l._)("div",re,[(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)(t)?((0,l.wg)(),(0,l.j4)(d,{key:0})):((0,l.wg)(),(0,l.j4)(ee,{key:1}))],2)),(0,l._)("div",ae,[(0,l._)("div",{class:(0,u.C_)(["scroll-button",{"display-button":o.value}]),onClick:m},ie,2)]),(0,c.SU)(t)?((0,l.wg)(),(0,l.j4)(h,{key:2,version:(0,c.SU)(t)?(0,c.SU)(t).version:"",adminContact:(0,c.SU)(t).admin_contact},null,8,["version","adminContact"])):(0,l.kq)("",!0)],64)}}});const le=se;var ce=le,ue=t(2540),de=t(1020),me=t(2894);const Ee={class:"alert-message"},_e=["innerHTML"];var Se=(0,l.aZ)({__name:"AlertMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Ee,[(0,l._)("div",{innerHTML:e.$t((0,c.SU)(t))},null,8,_e)]))}});const Te=(0,N.Z)(Se,[["__scopeId","data-v-69d7e4ff"]]);var pe=Te,Ae=t(2531);const Oe={class:"custom-textarea"},ze=["id","name","maxLength","disabled"],Ie={class:"remaining-chars"};var Re=(0,l.aZ)({__name:"CustomTextArea",props:{name:null,charLimit:{default:500},disabled:{type:Boolean,default:!1},input:{default:""}},emits:["updateValue"],setup(e,{emit:n}){const t=e,r=(0,c.iH)("");function a(e){n("updateValue",e.target.value)}return(0,l.YP)((()=>t.input),(e=>{r.value=null===e?"":e})),(n,t)=>((0,l.wg)(),(0,l.iD)("div",Oe,[(0,l.wy)((0,l._)("textarea",{id:e.name,name:e.name,maxLength:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value=e),onInput:a},null,40,ze),[[o.nr,r.value]]),(0,l._)("div",Ie,(0,u.zw)(n.$t("workouts.REMAINING_CHARS"))+": "+(0,u.zw)(r.value.length)+"/"+(0,u.zw)(e.charLimit),1)]))}});const ge=(0,N.Z)(Re,[["__scopeId","data-v-eb7fa534"]]);var Ne=ge,Ue=t(3649),he=(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 n=e,{digits:t,displayUnit:r,distance:a,speed:o,strong:i,unitFrom:s,useImperialUnits:d}=(0,c.BK)(n),m=(0,l.Fl)((()=>d.value?Ue.Dl[s.value].defaultTarget:s.value)),E=(0,l.Fl)((()=>d.value?(0,Ue.sC)(a.value,s.value,m.value,t.value):parseFloat(a.value.toFixed(t.value))));return(e,n)=>((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)(he,[["__scopeId","data-v-f46ff1d6"]]);var Ce=ve,we=t(2201);const De={class:"dropdown-wrapper"},fe={key:0,class:"dropdown-list"},Pe=["onClick"];var ke=(0,l.aZ)({__name:"Dropdown",props:{options:null,selected:null},emits:{selected:e=>e},setup(e,{emit:n}){const t=e,r=(0,we.yj)(),a=(0,c.iH)(!1),o=t.options.map((e=>e));function i(){a.value=!a.value}function s(e){n("selected",e),a.value=!1}return(0,l.YP)((()=>r.path),(()=>a.value=!1)),(n,t)=>((0,l.wg)(),(0,l.iD)("div",De,[(0,l._)("div",{class:"dropdown-selected",onClick:i},[(0,l.WI)(n.$slots,"default")]),a.value?((0,l.wg)(),(0,l.iD)("ul",fe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(o),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{class:(0,u.C_)(["dropdown-item",{selected:n.value===e.selected}]),key:t,onClick:e=>s(n)},(0,u.zw)(n.label),11,Pe)))),128))])):(0,l.kq)("",!0)]))}});const Le=(0,N.Z)(ke,[["__scopeId","data-v-9590c0e6"]]);var be=Le;const Me={class:"error-message"},ye={key:0},Ge={key:1};var Fe=(0,l.aZ)({__name:"ErrorMessage",props:{message:null},setup(e){const n=e,{message:t}=(0,c.BK)(n);return(e,n)=>((0,l.wg)(),(0,l.iD)("div",Me,[Array.isArray((0,c.SU)(t))?((0,l.wg)(),(0,l.iD)("ul",ye,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)((0,c.SU)(t),((n,t)=>((0,l.wg)(),(0,l.iD)("li",{key:t},(0,u.zw)(e.$t(n)),1)))),128))])):((0,l.wg)(),(0,l.iD)("div",Ge,(0,u.zw)(e.$t((0,c.SU)(t))),1))]))}});const We=(0,N.Z)(Fe,[["__scopeId","data-v-2659a79a"]]);var Ye=We;const Be={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),Ke=(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),He=[xe,Ke];function $e(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Be,He)}var Ze={name:"CyclingSport"};const Ve=(0,N.Z)(Ze,[["render",$e]]);var qe=Ve;const je={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"},Xe=(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),Je=[Xe,Qe];function en(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",je,Je)}var nn={name:"CyclingTransport"};const tn=(0,N.Z)(nn,[["render",en]]);var rn=tn;const an={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"},on=(0,l.uE)(' silhouette of a person riding a bicycle with virtual indicator ',4),sn=[on];function ln(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",an,sn)}var cn={name:"CyclingVirtual"};const un=(0,N.Z)(cn,[["render",ln]]);var dn=un;const mn={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"},En=(0,l._)("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),_n=(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),Sn=[En,_n];function Tn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mn,Sn)}var pn={name:"Hiking"};const An=(0,N.Z)(pn,[["render",Tn]]);var On=An;const zn={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"},In=(0,l._)("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),Rn=(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),gn=[In,Rn];function Nn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zn,gn)}var Un={name:"MountainBiking"};const hn=(0,N.Z)(Un,[["render",Nn]]);var vn=hn;const Cn={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"},wn=(0,l.uE)(' silhouette of a person riding an electric mountain bike ',18),Dn=[wn];function fn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Cn,Dn)}var Pn={name:"MountainBikingElectric"};const kn=(0,N.Z)(Pn,[["render",fn]]);var Ln=kn;const bn={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 495.017 495.017",style:{"enable-background":"new 0 0 495.017 495.017"},"xml:space":"preserve"},Mn=(0,l.uE)(' silhouette of a person doing mountaineering ',2),yn=[Mn];function Gn(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bn,yn)}var Fn={name:"Mountaineering"};const Wn=(0,N.Z)(Fn,[["render",Gn]]);var Yn=Wn;const Bn={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"},xn=(0,l._)("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),Kn=(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),Hn=[xn,Kn];function $n(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",Bn,Hn)}var Zn={name:"Rowing"};const Vn=(0,N.Z)(Zn,[["render",$n]]);var qn=Vn;const jn={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"},Xn=(0,l._)("desc",{id:"runningDescription"},"silhouette of a running person",-1),Qn=(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),Jn=[Xn,Qn];function et(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",jn,Jn)}var nt={name:"Running"};const tt=(0,N.Z)(nt,[["render",et]]);var rt=tt;const at={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"},ot=(0,l._)("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),it=(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),st=[ot,it];function lt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",at,st)}var ct={name:"SkiingAlpine"};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 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Et=(0,l._)("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),_t=(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),St=[Et,_t];function Tt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",mt,St)}var pt={name:"SkiingCrossCountry"};const At=(0,N.Z)(pt,[["render",Tt]]);var Ot=At;const zt={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"},It=(0,l.uE)('silhouette of a person with snowshoes',6),Rt=[It];function gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",zt,Rt)}var Nt={name:"Snowshoes"};const Ut=(0,N.Z)(Nt,[["render",gt]]);var ht=Ut;const vt={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"},Ct=(0,l._)("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),wt=(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),Dt=[Ct,wt];function ft(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",vt,Dt)}var Pt={name:"Trail"};const kt=(0,N.Z)(Pt,[["render",ft]]);var Lt=kt;const bt={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"},Mt=(0,l.uE)('silhouette of a walking person',3),yt=[Mt];function Gt(e,n,t,r,a,o){return(0,l.wg)(),(0,l.iD)("svg",bt,yt)}var Ft={name:"Walking"};const Wt=(0,N.Z)(Ft,[["render",Gt]]);var Yt=Wt;const Bt=["title"];var xt=(0,l.aZ)({__name:"index",props:{sportLabel:null,color:null,title:{default:""}},setup(e){const n=e,{color:t,sportLabel:r,title:a}=(0,c.BK)(n),o=(0,l.f3)("sportColors");return(e,n)=>((0,l.wg)(),(0,l.iD)("div",{class:"sport-img",style:(0,u.j5)({fill:(0,c.SU)(t)?(0,c.SU)(t):(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)(qe,{key:0})):(0,l.kq)("",!0),"Cycling (Transport)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rn,{key:1})):(0,l.kq)("",!0),"Cycling (Virtual)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dn,{key:2})):(0,l.kq)("",!0),"Hiking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(On,{key:3})):(0,l.kq)("",!0),"Mountain Biking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(vn,{key:4})):(0,l.kq)("",!0),"Mountain Biking (Electric)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ln,{key:5})):(0,l.kq)("",!0),"Mountaineering"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yn,{key:6})):(0,l.kq)("",!0),"Rowing"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(qn,{key:7})):(0,l.kq)("",!0),"Running"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(rt,{key:8})):(0,l.kq)("",!0),"Skiing (Alpine)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(dt,{key:9})):(0,l.kq)("",!0),"Skiing (Cross Country)"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Ot,{key:10})):(0,l.kq)("",!0),"Snowshoes"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(ht,{key:11})):(0,l.kq)("",!0),"Trail"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Lt,{key:12})):(0,l.kq)("",!0),"Walking"===(0,c.SU)(r)?((0,l.wg)(),(0,l.j4)(Yt,{key:13})):(0,l.kq)("",!0)],12,Bt))}});const Kt=xt;var Ht=Kt;const $t={class:"loader"};function Zt(e,n){return(0,l.wg)(),(0,l.iD)("div",$t)}const Vt={},qt=(0,N.Z)(Vt,[["render",Zt],["__scopeId","data-v-4c9921ee"]]);var jt=qt;const Xt={id:"modal"},Qt={class:"custom-modal"},Jt={key:0,class:"modal-message"},er={key:1,class:"modal-message"},nr={class:"modal-buttons"};var tr=(0,l.aZ)({__name:"Modal",props:{title:null,message:null,strongMessage:{default:()=>null}},emits:["cancelAction","confirmAction"],setup(e,{emit:n}){const t=e,r=(0,w.o)(),{title:a,message:o,strongMessage:i}=(0,c.BK)(t),s=(0,l.Fl)((()=>r.getters[C.SY.GETTERS.ERROR_MESSAGES]));return(0,l.Ah)((()=>r.commit(C.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{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",Xt,[(0,l._)("div",Qt,[(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",Jt,[(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",er,(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",nr,[(0,c.SU)(s)?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=e=>n("confirmAction"))},(0,u.zw)(e.$t("buttons.YES")),1)),(0,l._)("button",{class:"cancel",onClick:t[1]||(t[1]=e=>n("cancelAction"))},(0,u.zw)(e.$t("buttons."+((0,c.SU)(s)?"CANCEL":"NO"))),1)])])),_:1})])])}}});const rr=(0,N.Z)(tr,[["__scopeId","data-v-5aa8db48"]]);var ar=rr;const or=[{target:pe,name:"AlertMessage"},{target:Ae.Z,name:"Card"},{target:Ne,name:"CustomTextArea"},{target:Ce,name:"Distance"},{target:be,name:"Dropdown"},{target:Ye,name:"ErrorMessage"},{target:jt,name:"Loader"},{target:ar,name:"Modal"},{target:Ht,name:"SportImage"}],ir={mounted:(e,n)=>{e.clickOutsideEvent=function(t){e===t.target||e.contains(t.target)||n.value(t)},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 sr=t(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 lr=(0,o.ri)(ce).provide("sportColors",sr.Zo).use(ue.Z).use(me.Z).use(de.Z).use(i.ZP,{name:"VFullscreen"}).directive("click-outside",ir);or.forEach((e=>{lr.component(e.name,e.target)})),lr.mount("#app")},1020:function(e,n,t){"use strict";t.d(n,{Z:function(){return hc}});var r=t(2201),a=(t(7658),t(6252)),o=t(3577),i=t(9963),s=t(2262),l=t(9252),c=t(5801),u=t(9917),d=t(8966),m=t(2335);const E=e=>((0,a.dD)("data-v-80b4a9e6"),e=e(),(0,a.Cn)(),e),_={id:"admin-app",class:"admin-card"},S=["onSubmit"],T={for:"admin_contact"},p=["value"],A=["disabled"],O={for:"max_users"},z=["disabled"],I={class:"user-limit-help"},R={class:"info-box"},g=E((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),N={for:"max_single_file_size"},U=["disabled"],h={for:"max_zip_file_size"},v=["disabled"],C={for:"gpx_limit_import"},w=["disabled"],D={class:"about-label",for:"about"},f={class:"textarea-description"},P=["innerHTML"],k={class:"privacy-policy-label",for:"privacy_policy"},L={class:"textarea-description"},b=["innerHTML"],M={key:5,class:"form-buttons"},y={class:"confirm",type:"submit"},G=["onClick"],F={key:6,class:"form-buttons"};var W=(0,a.aZ)({__name:"AdminApplication",props:{appConfig:null,edition:{type:Boolean,default:!1}},setup(e){const n=e,{edition:t}=(0,s.BK)(n),E=(0,u.o)(),W=(0,r.tv)(),Y=(0,s.qj)({admin_contact:"",max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0,about:"",privacy_policy:""}),B=(0,a.Fl)((()=>E.getters[c.SY.GETTERS.ERROR_MESSAGES]));function x(e){Object.keys(Y).map((n=>{["max_single_file_size","max_zip_file_size"].includes(n)?Y[n]=(0,d.j)(e[n]):["about","privacy_policy"].includes(n)?Y[n]=null!==e[n]?e[n]:"":Y[n]=e[n]}))}function K(){x(n.appConfig),E.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),W.push("/admin/application")}function H(){const e=Object.assign({},Y);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,E.dispatch(c.SY.ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return(0,a.wF)((()=>{n.appConfig&&x(n.appConfig)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",_,[(0,a.Wm)(c,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)(H,["prevent"])},[(0,a._)("label",T,[(0,a.Uk)((0,o.zw)(e.$t("admin.APP_CONFIG.ADMIN_CONTACT"))+": ",1),(0,s.SU)(t)||Y.admin_contact?(0,a.wy)(((0,a.wg)(),(0,a.iD)("input",{key:1,id:"admin_contact",name:"admin_contact",type:"email","onUpdate:modelValue":n[0]||(n[0]=e=>Y.admin_contact=e),disabled:!(0,s.SU)(t)},null,8,A)),[[i.nr,Y.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,p))]),(0,a._)("label",O,[(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":n[1]||(n[1]=e=>Y.max_users=e),disabled:!(0,s.SU)(t)},null,8,z),[[i.nr,Y.max_users]])]),(0,a._)("div",I,[(0,a._)("span",R,[g,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),(0,a._)("label",N,[(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":n[2]||(n[2]=e=>Y.max_single_file_size=e),disabled:!(0,s.SU)(t)},null,8,U),[[i.nr,Y.max_single_file_size]])]),(0,a._)("label",h,[(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":n[3]||(n[3]=e=>Y.max_zip_file_size=e),disabled:!(0,s.SU)(t)},null,8,v),[[i.nr,Y.max_zip_file_size]])]),(0,a._)("label",C,[(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":n[4]||(n[4]=e=>Y.gpx_limit_import=e),disabled:!(0,s.SU)(t)},null,8,w),[[i.nr,Y.gpx_limit_import]])]),(0,a._)("label",D,(0,o.zw)(e.$t("admin.ABOUT.TEXT"))+": ",1),(0,a._)("span",f,(0,o.zw)(e.$t("admin.ABOUT.DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:0,id:"about",name:"about",rows:"10","onUpdate:modelValue":n[5]||(n[5]=e=>Y.about=e)},null,512)),[[i.nr,Y.about]]):((0,a.wg)(),(0,a.iD)("div",{key:1,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.about?Y.about:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,P)),(0,a._)("label",k,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE")))+": ",1),(0,a._)("span",L,(0,o.zw)(e.$t("admin.PRIVACY_POLICY_DESCRIPTION")),1),(0,s.SU)(t)?(0,a.wy)(((0,a.wg)(),(0,a.iD)("textarea",{key:2,id:"privacy_policy",name:"privacy_policy",rows:"20","onUpdate:modelValue":n[6]||(n[6]=e=>Y.privacy_policy=e)},null,512)),[[i.nr,Y.privacy_policy]]):((0,a.wg)(),(0,a.iD)("div",{key:3,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)(Y.privacy_policy?Y.privacy_policy:e.$t("admin.NO_TEXT_ENTERED"))),class:"textarea-content"},null,8,b)),(0,s.SU)(B)?((0,a.wg)(),(0,a.j4)(r,{key:4,message:(0,s.SU)(B)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(t)?((0,a.wg)(),(0,a.iD)("div",M,[(0,a._)("button",y,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:(0,i.iM)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,G)])):((0,a.wg)(),(0,a.iD)("div",F,[(0,a._)("button",{class:"confirm",onClick:n[7]||(n[7]=(0,i.iM)((n=>e.$router.push("/admin/application/edit")),["prevent"]))},(0,o.zw)(e.$t("buttons.EDIT")),1),(0,a._)("button",{class:"cancel",onClick:n[8]||(n[8]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))],40,S)])),_:1})])}}}),Y=t(3744);const B=(0,Y.Z)(W,[["__scopeId","data-v-80b4a9e6"]]);var x=B;const K={class:"stat-card"},H={class:"stat-content box"},$={class:"stat-icon"},Z={class:"stat-details"},V={class:"stat-huge"},q={class:"stat"};var j=(0,a.aZ)({__name:"StatCard",props:{icon:null,text:null,value:null},setup(e){const n=e,{icon:t,text:r,value:i}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("div",H,[(0,a._)("div",$,[(0,a._)("i",{class:(0,o.C_)(["fa",`fa-${(0,s.SU)(t)}`])},null,2)]),(0,a._)("div",Z,[(0,a._)("div",V,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("div",q,(0,o.zw)((0,s.SU)(r)),1)])])]))}});const X=j;var Q=X;const J={id:"user-stats"};var ee=(0,a.aZ)({__name:"AppStatsCards",props:{appStatistics:null},setup(e){const n=e,{appStatistics:t}=(0,s.BK)(n),r=(0,a.Fl)((()=>(0,d.Z)(t.value.uploads_dir_size,!1)));return(e,n)=>((0,a.wg)(),(0,a.iD)("div",J,[(0,a.Wm)(Q,{icon:"users",value:(0,s.SU)(t).users,text:e.$t("admin.USER",(0,s.SU)(t).users)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"tags",value:(0,s.SU)(t).sports,text:e.$t("workouts.SPORT",(0,s.SU)(t).sports)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"calendar",value:(0,s.SU)(t).workouts,text:e.$t("workouts.WORKOUT",(0,s.SU)(t).workouts)},null,8,["value","text"]),(0,a.Wm)(Q,{icon:"folder-open",value:(0,s.SU)(r).size,text:(0,s.SU)(r).suffix},null,8,["value","text"])]))}});const ne=ee;var te=ne,re=t(2531);const ae=e=>((0,a.dD)("data-v-0dd66f89"),e=e(),(0,a.Cn)(),e),oe={id:"admin-menu",class:"center-card"},ie={class:"admin-menu description-list"},se={class:"application-config-details"},le=ae((()=>(0,a._)("br",null,null,-1))),ce={class:"registration-status"},ue={key:0,class:"email-sending-status"},de=ae((()=>(0,a._)("i",{class:"fa fa-exclamation-triangle","aria-hidden":"true"},null,-1)));var me=(0,a.aZ)({__name:"AdminMenu",props:{appConfig:null,appStatistics:{default:()=>({})}},setup(e){const n=e,{appConfig:t,appStatistics:r}=(0,s.BK)(n);return(e,n)=>{const i=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",oe,[(0,a.Wm)(re.Z,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("admin.ADMINISTRATION")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(te,{appStatistics:(0,s.SU)(r)},null,8,["appStatistics"]),(0,a._)("div",ie,[(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",se,[(0,a.Uk)((0,o.zw)(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),le,(0,a._)("span",ce,(0,o.zw)(e.$t("admin.REGISTRATION_"+((0,s.SU)(t).is_registration_enabled?"ENABLED":"DISABLED"))),1),(0,s.SU)(t).is_email_sending_enabled?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("span",ue,[de,(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 Ee=(0,Y.Z)(me,[["__scopeId","data-v-0dd66f89"]]);var _e=Ee,Se=t(9150),Te=t(631);const pe=e=>((0,a.dD)("data-v-6d62af67"),e=e(),(0,a.Cn)(),e),Ae={id:"admin-sports",class:"admin-card"},Oe={class:"responsive-table"},ze=pe((()=>(0,a._)("th",null,"#",-1))),Ie={class:"text-left"},Re={class:"text-left sport-action"},ge=pe((()=>(0,a._)("th",null,null,-1))),Ne={class:"text-center"},Ue=pe((()=>(0,a._)("span",{class:"cell-heading"},"id",-1))),he={class:"cell-heading"},ve={class:"sport-label"},Ce={class:"cell-heading"},we={class:"text-center"},De={class:"cell-heading"},fe={class:"sport-action"},Pe={class:"cell-heading"},ke={class:"action-button"},Le=["onClick"],be={key:0,class:"has-workouts"},Me=pe((()=>(0,a._)("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)));var ye=(0,a.aZ)({__name:"AdminSports",setup(e){const{t:n}=(0,Se.QT)(),t=(0,u.o)(),r=(0,a.Fl)((()=>(0,Te.xH)(t.getters[c.O8.GETTERS.SPORTS],n))),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(e,n){t.dispatch(c.O8.ACTIONS.UPDATE_SPORTS,{id:e,isActive:n})}return(e,n)=>{const t=(0,a.up)("SportImage"),c=(0,a.up)("ErrorMessage"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Ae,[(0,a.Wm)(u,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:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a._)("div",Oe,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[ze,(0,a._)("th",null,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a._)("th",Ie,(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",Re,(0,o.zw)(e.$t("admin.ACTION")),1),ge])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.id},[(0,a._)("td",Ne,[Ue,(0,a.Uk)(" "+(0,o.zw)(n.id),1)]),(0,a._)("td",null,[(0,a._)("span",he,(0,o.zw)(e.$t("admin.SPORTS.TABLE.IMAGE")),1),(0,a.Wm)(t,{title:n.translatedLabel,"sport-label":n.label,color:n.color},null,8,["title","sport-label","color"])]),(0,a._)("td",ve,[(0,a._)("span",Ce,(0,o.zw)(e.$t("admin.SPORTS.TABLE.LABEL")),1),(0,a.Uk)(" "+(0,o.zw)(n.translatedLabel),1)]),(0,a._)("td",we,[(0,a._)("span",De,(0,o.zw)(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)("fa fa"+(n.is_active?"-check":"")),"aria-hidden":"true"},null,2)]),(0,a._)("td",fe,[(0,a._)("span",Pe,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("div",ke,[(0,a._)("button",{class:(0,o.C_)({danger:n.is_active}),onClick:e=>d(n.id,!n.is_active)},(0,o.zw)(e.$t(`buttons.${n.is_active?"DIS":"EN"}ABLE`)),11,Le),n.has_workouts?((0,a.wg)(),(0,a.iD)("span",be,[Me,(0,a.Uk)(" "+(0,o.zw)(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):(0,a.kq)("",!0)])])])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("button",{onClick:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)])])),_:1})])}}});const Ge=(0,Y.Z)(ye,[["__scopeId","data-v-6d62af67"]]);var Fe=Ge,We=t(8626),Ye=t(5020),Be=t(6595);const xe={class:"users-filters"},Ke={class:"search-username"},He=["onKeyup","placeholder"];var $e=(0,a.aZ)({__name:"UsersNameFilter",emits:["filterOnUsername"],setup(e,{emit:n}){const t=(0,r.yj)(),l=(0,s.iH)(t.query.q?t.query.q:"");function c(){""!==l.value&&n("filterOnUsername",l)}function u(){l.value="",n("filterOnUsername",l.value)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",xe,[(0,a._)("div",Ke,[(0,a.wy)((0,a._)("input",{id:"username",name:"username","onUpdate:modelValue":n[0]||(n[0]=e=>l.value=e),onKeyup:(0,i.D2)(c,["enter"]),placeholder:e.$t("user.FILTER_ON_USERNAME")},null,40,He),[[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 Ze=(0,Y.Z)($e,[["__scopeId","data-v-627a8e91"]]);var Ve=Ze,qe=t(2766),je=t(6558);const Xe=e=>((0,a.dD)("data-v-dc12ff78"),e=e(),(0,a.Cn)(),e),Qe={id:"admin-users",class:"admin-card"},Je={key:0,class:"no-users"},en={key:1,class:"responsive-table"},nn=Xe((()=>(0,a._)("th",null,"#",-1))),tn={class:"left-text"},rn={class:"left-text"},an={class:"left-text"},on={class:"cell-heading"},sn={class:"cell-heading"},ln={class:"cell-heading"},cn={class:"cell-heading"},un={class:"text-center"},dn={class:"cell-heading"},mn={class:"text-center"},En={class:"cell-heading"},_n={class:"text-center"},Sn={class:"cell-heading"},Tn={class:"text-center"},pn={class:"cell-heading"},An=["disabled","onClick"];var On=(0,a.aZ)({__name:"AdminUsers",setup(e){const n=(0,u.o)(),t=(0,r.yj)(),l=(0,r.tv)(),d=["is_active","admin","created_at","username","workouts_count"],m="created_at";let E=(0,s.qj)((0,qe.pm)(t.query,d,m));const _=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS])),T=(0,a.Fl)((()=>n.getters[c.RT.GETTERS.USERS_PAGINATION])),p=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.ERROR_MESSAGES]));function A(e){n.dispatch(c.RT.ACTIONS.GET_USERS,e)}function O(e){I("q",e.value)}function z(e,t){n.dispatch(c.RT.ACTIONS.UPDATE_USER,{username:e,admin:t})}function I(e,n){E[e]=n,"per_page"===e&&(E.page=1),l.push({path:"/admin/users",query:E})}return(0,a.wF)((()=>A(E))),(0,a.Ah)((()=>{n.dispatch(c.RT.ACTIONS.EMPTY_USERS)})),(0,a.YP)((()=>t.query),(e=>{E=(0,qe.pm)(e,d,m,{query:E}),A(E)})),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("ErrorMessage"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Qe,[(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:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1),(0,a.Wm)(Ve,{onFilterOnUsername:O}),(0,a.Wm)(We.Z,{sort:(0,s.SU)(qe.fS),order_by:d,query:(0,s.SU)(E),message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:I},null,8,["sort","query"]),0===(0,s.SU)(S).length?((0,a.wg)(),(0,a.iD)("div",Je,(0,o.zw)(e.$t("user.NO_USERS_FOUND")),1)):((0,a.wg)(),(0,a.iD)("div",en,[(0,a._)("table",null,[(0,a._)("thead",null,[(0,a._)("tr",null,[nn,(0,a._)("th",tn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a._)("th",rn,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a._)("th",an,(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),(n=>((0,a.wg)(),(0,a.iD)("tr",{key:n.username},[(0,a._)("td",null,[(0,a._)("span",on,(0,o.zw)(e.$t("user.PROFILE.PICTURE")),1),(0,a.Wm)(Be.Z,{user:n},null,8,["user"])]),(0,a._)("td",null,[(0,a._)("span",sn,(0,o.zw)(e.$t("user.USERNAME")),1),(0,a.Wm)(t,{to:`/admin/users/${n.username}`},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.username),1)])),_:2},1032,["to"])]),(0,a._)("td",null,[(0,a._)("span",ln,(0,o.zw)(e.$t("user.EMAIL")),1),(0,a.Uk)(" "+(0,o.zw)(n.email),1)]),(0,a._)("td",null,[(0,a._)("span",cn,(0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE")),1),(0,a.Uk)(" "+(0,o.zw)((0,s.SU)(je.p6)(n.created_at,(0,s.SU)(_).timezone,(0,s.SU)(_).date_format)),1)]),(0,a._)("td",un,[(0,a._)("span",dn,(0,o.zw)((0,o.kC)(e.$t("workouts.WORKOUT",0))),1),(0,a.Uk)(" "+(0,o.zw)(n.nb_workouts),1)]),(0,a._)("td",mn,[(0,a._)("span",En,(0,o.zw)(e.$t("admin.ACTIVE")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.is_active?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",_n,[(0,a._)("span",Sn,(0,o.zw)(e.$t("user.ADMIN")),1),(0,a._)("i",{class:(0,o.C_)(`fa fa${n.admin?"-check":""}-square-o`),"aria-hidden":"true"},null,2)]),(0,a._)("td",Tn,[(0,a._)("span",pn,(0,o.zw)(e.$t("admin.ACTION")),1),(0,a._)("button",{class:(0,o.C_)({danger:n.admin}),disabled:n.username===(0,s.SU)(_).username,onClick:e=>z(n.username,!n.admin)},(0,o.zw)(e.$t(`admin.USERS.TABLE.${n.admin?"REMOVE":"ADD"}_ADMIN_RIGHTS`)),11,An)])])))),128))])]),(0,s.SU)(T).page?((0,a.wg)(),(0,a.j4)(Ye.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:n[1]||(n[1]=(0,i.iM)((n=>e.$router.push("/admin")),["prevent"]))},(0,o.zw)(e.$t("admin.BACK_TO_ADMIN")),1)]))])),_:1})])}}});const zn=(0,Y.Z)(On,[["__scopeId","data-v-dc12ff78"]]);var In=zn,Rn=t(2179);const gn={class:"profile-tabs custom-checkboxes-group"},Nn={class:"profile-tabs-checkboxes custom-checkboxes"},Un=["id","name","checked","disabled","onInput"];var hn=(0,a.aZ)({__name:"UserProfileTabs",props:{tabs:null,selectedTab:null,edition:{type:Boolean},disabled:{type:Boolean,default:!1}},setup(e){const n=e,{tabs:t,selectedTab:r,disabled:i}=(0,s.BK)(n);function l(e){switch(e){case"ACCOUNT":case"PICTURE":case"PRIVACY-POLICY":return`/profile/edit/${e.toLocaleLowerCase()}`;case"APPS":case"PREFERENCES":case"SPORTS":return`/profile${n.edition?"/edit":""}/${e.toLocaleLowerCase()}`;default:case"PROFILE":return"/profile"+(n.edition?"/edit":"")}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",gn,[(0,a._)("div",Nn,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(t),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"profile-tab custom-checkbox",key:n},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:n,name:n,checked:(0,s.SU)(r).split("/")[0]===n,disabled:(0,s.SU)(i),onInput:t=>e.$router.push(l(n))},null,40,Un),(0,a._)("span",null,(0,o.zw)(e.$t(`user.PROFILE.TABS.${n}`)),1)])])))),128))])]))}});const vn=hn;var Cn=vn;const wn={id:"user-profile"},Dn={class:"box"};var fn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,{user:t,tab:r}=(0,s.BK)(n),o=["PROFILE","PREFERENCES","SPORTS","APPS"];return(e,n)=>{const i=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",wn,[(0,a.Wm)(Rn.Z,{user:(0,s.SU)(t)},null,8,["user"]),(0,a._)("div",Dn,[(0,a.Wm)(Cn,{tabs:o,selectedTab:(0,s.SU)(r),edition:!1},null,8,["selectedTab"]),(0,a.Wm)(i,{user:(0,s.SU)(t)},null,8,["user"])])])}}});const Pn=(0,Y.Z)(fn,[["__scopeId","data-v-9729cba4"]]);var kn=Pn,Ln=t(1585),bn=t(6287);const Mn={id:"user-preferences",class:"description-list"},yn={class:"profile-buttons"};var Gn=(0,a.aZ)({__name:"UserPreferences",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LANGUAGE])),i=(0,a.Fl)((()=>n.user.language?bn.zK[n.user.language]:bn.zK.en)),l=(0,a.Fl)((()=>n.user.weekm?"MONDAY":"SUNDAY")),d=(0,a.Fl)((()=>n.user.timezone?n.user.timezone:"Europe/Paris")),m=(0,a.Fl)((()=>n.user.date_format?n.user.date_format:"MM/dd/yyyy")),E=(0,a.Fl)((()=>n.user.display_ascent?"DISPLAYED":"HIDDEN"));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",Mn,[(0,a._)("dl",null,[(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.LANGUAGE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(i)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.TIMEZONE"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(d)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.DATE_FORMAT"))+":",1),(0,a._)("dd",null,(0,o.zw)((0,s.SU)(je.mh)((0,s.SU)(m),(0,s.SU)(r))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`user.PROFILE.${(0,s.SU)(l)}`)),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.UNITS.LABEL"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t("user.PROFILE.UNITS."+(e.user.imperial_units?"IMPERIAL":"METRIC"))),1),(0,a._)("dt",null,(0,o.zw)(n.$t("user.PROFILE.ASCENT_DATA"))+":",1),(0,a._)("dd",null,(0,o.zw)(n.$t(`common.${(0,s.SU)(E)}`)),1)]),(0,a._)("div",yn,[(0,a._)("button",{onClick:t[0]||(t[0]=e=>n.$router.push("/profile/edit/preferences"))},(0,o.zw)(n.$t("user.PROFILE.EDIT_PREFERENCES")),1),(0,a._)("button",{onClick:t[1]||(t[1]=e=>n.$router.push("/"))},(0,o.zw)(n.$t("common.HOME")),1)])]))}});const Fn=Gn;var Wn=Fn;const Yn={id:"user-profile-edition",class:"center-card"};var Bn=(0,a.aZ)({__name:"index",props:{user:null,tab:null},setup(e){const n=e,t=(0,u.o)(),{user:r,tab:i}=(0,s.BK)(n),l=["PROFILE","ACCOUNT","PICTURE","PREFERENCES","SPORTS","PRIVACY-POLICY"],d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING]));return(e,n)=>{const t=(0,a.up)("router-view"),c=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Yn,[(0,a.Wm)(c,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)(Cn,{tabs:l,selectedTab:(0,s.SU)(i),edition:!0,disabled:(0,s.SU)(d)},null,8,["selectedTab","disabled"]),(0,a.Wm)(t,{user:(0,s.SU)(r)},null,8,["user"])])),_:1})])}}});const xn=Bn;var Kn=xn,Hn=t(313),$n=t(7069),Zn=t(5167),Vn=t(8403);const qn=e=>((0,a.dD)("data-v-6e11106c"),e=e(),(0,a.Cn)(),e),jn={id:"user-infos-edition"},Xn={class:"profile-form form-box"},Qn={key:1,class:"info-box success-message"},Jn=["onSubmit"],et={class:"form-items",for:"email"},nt=["disabled"],tt={class:"form-items",for:"password-field"},rt={class:"form-items",for:"new-password-field"},at={class:"form-buttons"},ot={class:"confirm",type:"submit"},it=["onClick"],st={class:"data-export"},lt={class:"info-box"},ct=qn((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),ut={key:0,class:"data-export-archive"},dt=qn((()=>(0,a._)("i",{class:"fa fa-download","aria-hidden":"true"},null,-1))),mt={key:1},Et={key:2},_t=qn((()=>(0,a._)("i",{class:"fa fa-spinner fa-pulse","aria-hidden":"true"},null,-1)));var St=(0,a.aZ)({__name:"UserAccountEdition",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,s.qj)({email:"",password:"",new_password:""}),m=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.USER_LOADING])),E=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.APP_CONFIG])),_=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.IS_SUCCESS])),S=(0,s.iH)(!1),T=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,s.iH)(!1),A=(0,s.iH)(!1),O=(0,a.Fl)((()=>r.getters[c.YN.GETTERS.EXPORT_REQUEST])),z=(0,a.Fl)((()=>h())),I=(0,s.iH)(!1);function R(){p.value=!0}function g(e){l.email=e.email}function N(e){l.password=e}function U(e){l.new_password=e}function h(){return O.value?(0,je.p6)(O.value.created_at,t.value.timezone,t.value.date_format,!0,null,!0):null}function v(){return!z.value||(0,Hn.Z)(new Date(z.value),(0,$n.Z)(new Date,1))}function C(){const e={email:l.email,password:l.password};l.new_password&&(e.new_password=l.new_password),S.value=l.email!==t.value.email,r.dispatch(c.YN.ACTIONS.UPDATE_USER_ACCOUNT,e)}function w(e){A.value=e}function D(e){r.dispatch(c.YN.ACTIONS.DELETE_ACCOUNT,{username:e})}function f(){r.dispatch(c.YN.ACTIONS.REQUEST_DATA_EXPORT)}async function P(e){I.value=!0,await Zn.Z.get(`/auth/account/export/${e}`,{responseType:"blob"}).then((n=>{const t=window.URL.createObjectURL(new Blob([n.data],{type:"application/zip"})),r=document.createElement("a");r.href=t,r.setAttribute("download",e),document.body.appendChild(r),r.click()})).finally((()=>I.value=!1))}return(0,a.bv)((()=>{n.user&&(r.dispatch(c.YN.ACTIONS.GET_REQUEST_DATA_EXPORT),g(n.user))})),(0,a.Ah)((()=>{r.commit(c.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(0,a.YP)((()=>_.value),(async e=>{e&&(N(""),U(""),g(t.value),p.value=!1)})),(0,a.YP)((()=>t.value.email),(async()=>{g(t.value)})),(e,n)=>{const r=(0,a.up)("Modal"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",jn,[A.value?((0,a.wg)(),(0,a.j4)(r,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:n[0]||(n[0]=e=>D((0,s.SU)(t).username)),onCancelAction:n[1]||(n[1]=e=>w(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a._)("div",Xn,[(0,s.SU)(T)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(T)},null,8,["message"])):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Qn,(0,o.zw)(e.$t(`user.PROFILE.SUCCESSFUL_${S.value&&(0,s.SU)(E).is_email_sending_enabled?"EMAIL_":""}UPDATE`)),1)):(0,a.kq)("",!0),(0,a._)("form",{class:(0,o.C_)({errors:p.value}),onSubmit:(0,i.iM)(C,["prevent"])},[(0,a._)("label",et,[(0,a.Uk)((0,o.zw)(e.$t("user.EMAIL"))+"* ",1),(0,a.wy)((0,a._)("input",{id:"email","onUpdate:modelValue":n[2]||(n[2]=e=>l.email=e),disabled:(0,s.SU)(m),required:!0,onInvalid:R},null,40,nt),[[i.nr,l.email]])]),(0,a._)("label",tt,[(0,a.Uk)((0,o.zw)(e.$t("user.CURRENT_PASSWORD"))+"* ",1),(0,a.Wm)(Vn.Z,{id:"password-field",disabled:(0,s.SU)(m),password:l.password,required:!0,onUpdatePassword:N,onPasswordError:R},null,8,["disabled","password"])]),(0,a._)("label",rt,[(0,a.Uk)((0,o.zw)(e.$t("user.NEW_PASSWORD"))+" ",1),(0,a.Wm)(Vn.Z,{id:"new-password-field",disabled:(0,s.SU)(m),checkStrength:!0,password:l.new_password,isSuccess:!1,onUpdatePassword:U,onPasswordError:R},null,8,["disabled","password"])]),(0,a._)("div",at,[(0,a._)("button",ot,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1),(0,a._)("button",{class:"danger",onClick:n[4]||(n[4]=(0,i.iM)((e=>w(!0)),["prevent"]))},(0,o.zw)(e.$t("buttons.DELETE_MY_ACCOUNT")),1),v()?((0,a.wg)(),(0,a.iD)("button",{key:0,class:"confirm",onClick:(0,i.iM)(f,["prevent"])},(0,o.zw)(e.$t("buttons.REQUEST_DATA_EXPORT")),9,it)):(0,a.kq)("",!0)])],42,Jn),(0,a._)("div",st,[(0,a._)("span",lt,[ct,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY")),1)]),(0,s.SU)(O)?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.DATA_EXPORT"))+" ("+(0,o.zw)((0,s.SU)(z))+"): ",1),"successful"===(0,s.SU)(O).status?((0,a.wg)(),(0,a.iD)("span",{key:0,class:"archive-link",onClick:n[5]||(n[5]=(0,i.iM)((e=>P((0,s.SU)(O).file_name)),["prevent"]))},[dt,(0,a.Uk)(" "+(0,o.zw)(e.$t("user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE"))+" ("+(0,o.zw)((0,s.SU)(d.Z)((0,s.SU)(O).file_size))+") ",1)])):((0,a.wg)(),(0,a.iD)("span",mt,(0,o.zw)(e.$t(`user.EXPORT_REQUEST.STATUS.${(0,s.SU)(O).status}`)),1)),I.value?((0,a.wg)(),(0,a.iD)("span",Et,[(0,a.Uk)((0,o.zw)(e.$t("user.EXPORT_REQUEST.GENERATING_LINK"))+" ",1),_t])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])])])}}});const Tt=(0,Y.Z)(St,[["__scopeId","data-v-6e11106c"]]);var pt=Tt,At=t(6761);const Ot={id:"user-infos-edition"},zt={class:"profile-form form-box"},It=["onSubmit"],Rt={class:"form-items",for:"registrationDate"},gt=["value"],Nt={class:"form-items",for:"first_name"},Ut=["disabled"],ht={class:"form-items",for:"last_name"},vt={class:"form-items",for:"birth_date"},Ct=["disabled"],wt={class:"form-items",for:"location"},Dt=["disabled"],ft={class:"form-items"},Pt={class:"form-buttons"},kt={class:"confirm",type:"submit"};var Lt=(0,a.aZ)({__name:"UserInfosEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({first_name:"",last_name:"",birth_date:"",location:"",bio:""}),l=(0,a.Fl)((()=>n.user.created_at?(0,je.p6)(n.user.created_at,n.user.timezone,n.user.date_format):"")),d=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),m=(0,a.Fl)((()=>t.getters[c.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,At.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(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PROFILE,r)}return(0,a.bv)((()=>{n.user&&E(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage"),c=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",Ot,[(0,a._)("div",zt,[(0,s.SU)(m)?((0,a.wg)(),(0,a.j4)(t,{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",Rt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),(0,a._)("input",{id:"registrationDate",value:(0,s.SU)(l),disabled:""},null,8,gt)]),(0,a._)("label",Nt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"first_name","onUpdate:modelValue":n[0]||(n[0]=e=>r.first_name=e),disabled:(0,s.SU)(d)},null,8,Ut),[[i.nr,r.first_name]])]),(0,a._)("label",ht,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LAST_NAME"))+" ",1),(0,a.wy)((0,a._)("input",{id:"last_name","onUpdate:modelValue":n[1]||(n[1]=e=>r.last_name=e)},null,512),[[i.nr,r.last_name]])]),(0,a._)("label",vt,[(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":n[2]||(n[2]=e=>r.birth_date=e),disabled:(0,s.SU)(d)},null,8,Ct),[[i.nr,r.birth_date]])]),(0,a._)("label",wt,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LOCATION"))+" ",1),(0,a.wy)((0,a._)("input",{id:"location","onUpdate:modelValue":n[3]||(n[3]=e=>r.location=e),disabled:(0,s.SU)(d)},null,8,Dt),[[i.nr,r.location]])]),(0,a._)("label",ft,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.BIO"))+" ",1),(0,a.Wm)(c,{name:"bio",charLimit:200,input:r.bio,disabled:(0,s.SU)(d),onUpdateValue:_},null,8,["input","disabled"])]),(0,a._)("div",Pt,[(0,a._)("button",kt,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,It)])])}}});const bt=(0,Y.Z)(Lt,[["__scopeId","data-v-5e5a4552"]]);var Mt=bt;const yt=e=>((0,a.dD)("data-v-687e9604"),e=e(),(0,a.Cn)(),e),Gt={id:"user-picture-edition"},Ft={class:"user-picture-form"},Wt=["onSubmit"],Yt={class:"picture-help"},Bt={class:"info-box"},xt=yt((()=>(0,a._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),Kt={class:"picture-buttons"},Ht=["disabled"];var $t=(0,a.aZ)({__name:"UserPictureEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.APP_CONFIG])),E=m.value.max_single_file_size?(0,d.Z)(m.value.max_single_file_size):"",_=(0,s.iH)(null);function S(){t.dispatch(c.YN.ACTIONS.DELETE_PICTURE)}function T(e){e.target.files&&(_.value=e.target.files[0])}function p(){_.value&&t.dispatch(c.YN.ACTIONS.UPDATE_USER_PICTURE,{picture:_.value})}return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Gt,[(0,a._)("div",Ft,[(0,s.SU)(l)?((0,a.wg)(),(0,a.j4)(t,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a.Wm)(Be.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",Yt,[(0,a._)("span",Bt,[xt,(0,a.Uk)(" "+(0,o.zw)(e.$t("workouts.MAX_SIZE"))+": "+(0,o.zw)((0,s.SU)(E)),1)])]),(0,a._)("div",Kt,[(0,a._)("button",{type:"submit",disabled:!_.value},(0,o.zw)(e.$t("user.PROFILE.PICTURE_UPDATE")),9,Ht),(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:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],40,Wt)])])}}});const Zt=(0,Y.Z)($t,[["__scopeId","data-v-687e9604"]]);var Vt=Zt;const qt=["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"],jt={id:"tz-dropdown"},Xt=["value","disabled","onKeydown"],Qt=["onClick","onMouseover","autofocus"];var Jt=(0,a.aZ)({__name:"TimezoneDropdown",props:{input:null,disabled:{type:Boolean,default:!1}},emits:["updateTimezone"],setup(e,{emit:n}){const t=e,{input:r,disabled:l}=(0,s.BK)(t),c=(0,s.iH)(t.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,n("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)((()=>t.input),(e=>{c.value=e})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",jt,[(0,a._)("input",{class:"tz-dropdown-input",id:"timezone",name:"timezone",value:c.value,disabled:(0,s.SU)(l),required:"",onKeydown:[n[0]||(n[0]=(0,i.D2)((e=>S((0,s.SU)(r))),["esc"])),(0,i.D2)(T,["enter"])],onInput:p},null,40,Xt),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)(qt).filter((e=>E(e))),((e,n)=>((0,a.wg)(),(0,a.iD)("li",{key:e,class:(0,o.C_)(["tz-dropdown-item",{focus:n===m.value}]),onClick:n=>S(e),onMouseover:e=>_(n),autofocus:n===m.value},(0,o.zw)(e),43,Qt)))),128))],512)):(0,a.kq)("",!0)]))}});const er=(0,Y.Z)(Jt,[["__scopeId","data-v-47ea2903"]]);var nr=er;const tr={id:"user-preferences-edition"},rr={class:"profile-form form-box"},ar=["onSubmit"],or={class:"form-items"},ir=["disabled"],sr=["value"],lr={class:"form-items"},cr={class:"form-items"},ur=["disabled"],dr=["value"],mr={class:"form-items form-checkboxes"},Er={class:"checkboxes-label"},_r={class:"checkboxes"},Sr=["id","name","checked","disabled","onInput"],Tr={class:"checkbox-label"},pr={class:"form-items form-checkboxes"},Ar={class:"checkboxes-label"},Or={class:"checkboxes"},zr=["id","name","checked","disabled","onInput"],Ir={class:"checkbox-label"},Rr={class:"form-items form-checkboxes"},gr={class:"checkboxes-label"},Nr={class:"checkboxes"},Ur=["id","name","checked","disabled","onInput"],hr={class:"checkbox-label"},vr={class:"form-buttons"},Cr={class:"confirm",type:"submit"};var wr=(0,a.aZ)({__name:"UserPreferencesEdition",props:{user:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({display_ascent:!0,imperial_units:!1,language:"",timezone:"Europe/Paris",date_format:"dd/MM/yyyy",weekm:!1}),l=[{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)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),_=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,a.Fl)((()=>(0,je.d2)((new Date).toUTCString(),n.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(){t.dispatch(c.YN.ACTIONS.UPDATE_USER_PREFERENCES,r)}function A(e){r.timezone=e}function O(e){r.display_ascent=e}function z(e){r.imperial_units=e}function I(e){r.weekm=e}return(0,a.bv)((()=>{n.user&&T(n.user)})),(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const t=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",tr,[(0,a._)("div",rr,[(0,s.SU)(_)?((0,a.wg)(),(0,a.j4)(t,{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",or,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.LANGUAGE"))+" ",1),(0,a.wy)((0,a._)("select",{id:"language","onUpdate:modelValue":n[0]||(n[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)(bn.mT),(e=>((0,a.wg)(),(0,a.iD)("option",{value:e.value,key:e.value},(0,o.zw)(e.label),9,sr)))),128))],8,ir),[[i.bM,r.language]])]),(0,a._)("label",lr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.TIMEZONE"))+" ",1),(0,a.Wm)(nr,{input:r.timezone,disabled:(0,s.SU)(E),onUpdateTimezone:A},null,8,["input","disabled"])]),(0,a._)("label",cr,[(0,a.Uk)((0,o.zw)(e.$t("user.PROFILE.DATE_FORMAT"))+" ",1),(0,a.wy)((0,a._)("select",{id:"date_format","onUpdate:modelValue":n[1]||(n[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,dr)))),128))],8,ur),[[i.bM,r.date_format]])]),(0,a._)("div",mr,[(0,a._)("span",Er,(0,o.zw)(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK")),1),(0,a._)("div",_r,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(l,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.weekm,disabled:(0,s.SU)(E),onInput:e=>I(n.value)},null,40,Sr),(0,a._)("span",Tr,(0,o.zw)(e.$t(`user.PROFILE.${n.label}`)),1)]))),64))])]),(0,a._)("div",pr,[(0,a._)("span",Ar,(0,o.zw)(e.$t("user.PROFILE.UNITS.LABEL")),1),(0,a._)("div",Or,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(d,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.imperial_units,disabled:(0,s.SU)(E),onInput:e=>z(n.value)},null,40,zr),(0,a._)("span",Ir,(0,o.zw)(e.$t(`user.PROFILE.UNITS.${n.label}`)),1)]))),64))])]),(0,a._)("div",Rr,[(0,a._)("span",gr,(0,o.zw)(e.$t("user.PROFILE.ASCENT_DATA")),1),(0,a._)("div",Nr,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(m,(n=>(0,a._)("label",{key:n.label},[(0,a._)("input",{type:"radio",id:n.label,name:n.label,checked:n.value===r.display_ascent,disabled:(0,s.SU)(E),onInput:e=>O(n.value)},null,40,Ur),(0,a._)("span",hr,(0,o.zw)(e.$t(`common.${n.label}`)),1)]))),64))])]),(0,a._)("div",vr,[(0,a._)("button",Cr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=(0,i.iM)((n=>e.$router.push("/profile/preferences")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,ar)])])}}});const Dr=(0,Y.Z)(wr,[["__scopeId","data-v-3b8a9a12"]]);var fr=Dr;const Pr={class:"privacy-policy-text"},kr={class:"last-update"},Lr=["innerHTML"],br=["innerHTML"];var Mr=(0,a.aZ)({__name:"PrivacyPolicy",setup(e){const n=(0,u.o)(),t="Sun, 26 Feb 2023 17:00:00 GMT",r=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),i=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.LANGUAGE])),d=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),E=(0,a.Fl)((()=>A())),_=(0,a.Fl)((()=>p())),S=(0,a.Fl)((()=>O())),T=["DATA_COLLECTED","INFORMATION_USAGE","INFORMATION_PROTECTION","INFORMATION_DISCLOSURE","SITE_USAGE_BY_CHILDREN","YOUR_CONSENT","ACCOUNT_DELETION","CHANGES_TO_OUR_PRIVACY_POLICY"];function p(){return d.value.timezone?d.value.timezone:Intl.DateTimeFormat().resolvedOptions().timeZone?Intl.DateTimeFormat().resolvedOptions().timeZone:"Europe/Paris"}function A(){return je.KD[i.value]}function O(){return(0,je.p6)(r.value.privacy_policy&&r.value.privacy_policy_date?`${r.value.privacy_policy_date}`:t,_.value,E.value,!1)}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Pr,[(0,a._)("h1",null,(0,o.zw)((0,o.kC)(e.$t("privacy_policy.TITLE"))),1),(0,a._)("p",kr,(0,o.zw)(e.$t("privacy_policy.LAST_UPDATE"))+": "+(0,o.zw)((0,s.SU)(S)),1),(0,s.SU)(r).privacy_policy?((0,a.wg)(),(0,a.iD)("div",{key:0,innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(r).privacy_policy))},null,8,Lr)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},(0,a.Ko)(T,(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("h2",null,(0,o.zw)(e.$t(`privacy_policy.CONTENT.${n}.TITLE`)),1),(0,a._)("p",{innerHTML:(0,s.SU)(l.Z)(e.$t(`privacy_policy.CONTENT.${n}.CONTENT`))},null,8,br)],64)))),64))]))}});const yr=(0,Y.Z)(Mr,[["__scopeId","data-v-0c1693aa"]]);var Gr=yr;const Fr={id:"user-privacy-policy"},Wr={key:1},Yr={class:"policy-content"},Br={for:"accepted_policy",class:"accepted_policy"},xr={class:"form-buttons"},Kr={class:"confirm",type:"submit"};var Hr=(0,a.aZ)({__name:"UserPrivacyPolicyValidation",props:{user:null},setup(e){const n=e,{user:t}=(0,s.BK)(n),r=(0,u.o)(),l=(0,a.Fl)((()=>r.getters[c.SY.GETTERS.ERROR_MESSAGES])),d=(0,s.iH)(!1);function m(){r.dispatch(c.YN.ACTIONS.ACCEPT_PRIVACY_POLICY,d.value)}return(0,a.Ah)((()=>{r.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)})),(e,n)=>{const r=(0,a.up)("ErrorMessage"),c=(0,a.up)("router-link"),u=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",Fr,[(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)(t).accepted_privacy_policy?((0,a.wg)(),(0,a.iD)("div",Wr,[(0,a._)("p",null,[(0,a.Wm)(u,{keypath:"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Wm)(c,{to:"/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})]),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])):((0,a.wg)(),(0,a.iD)("form",{key:2,onSubmit:n[3]||(n[3]=(0,i.iM)((e=>m()),["prevent"]))},[(0,a._)("div",Yr,[(0,a.Wm)(Gr)]),(0,a._)("label",Br,[(0,a.wy)((0,a._)("input",{type:"checkbox",id:"accepted_policy",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e)},null,512),[[i.e8,d.value]]),(0,a._)("span",null,[(0,a.Wm)(u,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])]),(0,a.Wm)(c,{to:"/profile/edit/account"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.I_WANT_TO_DELETE_MY_ACCOUNT")),1)])),_:1}),(0,a._)("div",xr,[(0,a._)("button",Kr,(0,o.zw)(e.$t("buttons.SUBMIT")),1),(0,a._)("button",{class:"cancel",onClick:n[2]||(n[2]=n=>e.$router.push("/profile"))},(0,o.zw)(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32))])}}});const $r=(0,Y.Z)(Hr,[["__scopeId","data-v-c77e04be"]]);var Zr=$r;const Vr=["profile:read","profile:write","users:read","users:write","workouts:read","workouts:write"],qr=["application:write"],jr={id:"new-oauth2-app"},Xr={id:"new-oauth2-title"},Qr={id:"apps-form"},Jr=["onSubmit"],ea={class:"form-items"},na={class:"form-item"},ta={for:"app-name"},ra={class:"form-item"},aa={for:"app-description"},oa={class:"form-item"},ia={for:"app-url"},sa={class:"form-item"},la={for:"app-redirect-uri"},ca={class:"form-item-scope"},ua={class:"form-item-scope-label"},da={class:"scope-label"},ma=["name","checked","onChange"],Ea=["innerHTML"],_a={class:"form-buttons"},Sa=["disabled"];var Ta=(0,a.aZ)({__name:"AddUserApp",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),r=(0,s.qj)({client_name:"",client_uri:"",client_description:"",redirect_uri:""}),l=(0,s.qj)([]),d=(0,a.Fl)((()=>S(n.authUser,qr,Vr)));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:l.sort().join(" ")};t.dispatch(c.Km.ACTIONS.CREATE_CLIENT,e)}function E(e){r.client_description=e}function _(e){const n=l.indexOf(e);n>-1?l.splice(n,1):l.push(e)}function S(e,n,t){const r=[...t];return e.admin&&r.push(...n),r.sort()}return(e,n)=>{const t=(0,a.up)("CustomTextArea");return(0,a.wg)(),(0,a.iD)("div",jr,[(0,a._)("h1",Xr,(0,o.zw)(e.$t("oauth2.ADD_A_NEW_APP")),1),(0,a._)("div",Qr,[(0,a._)("form",{onSubmit:(0,i.iM)(m,["prevent"])},[(0,a._)("div",ea,[(0,a._)("div",na,[(0,a._)("label",ta,(0,o.zw)(e.$t("oauth2.APP.NAME"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-name",type:"text",required:"","onUpdate:modelValue":n[0]||(n[0]=e=>r.client_name=e)},null,512),[[i.nr,r.client_name]])]),(0,a._)("div",ra,[(0,a._)("label",aa,(0,o.zw)(e.$t("oauth2.APP.DESCRIPTION")),1),(0,a.Wm)(t,{name:"app-description",charLimit:200,input:r.description,onUpdateValue:E},null,8,["input"])]),(0,a._)("div",oa,[(0,a._)("label",ia,(0,o.zw)(e.$t("oauth2.APP.URL"))+"*",1),(0,a.wy)((0,a._)("input",{id:"app-url",type:"text",required:"","onUpdate:modelValue":n[1]||(n[1]=e=>r.client_uri=e)},null,512),[[i.nr,r.client_uri]])]),(0,a._)("div",sa,[(0,a._)("label",la,(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":n[2]||(n[2]=e=>r.redirect_uri=e)},null,512),[[i.nr,r.redirect_uri]])]),(0,a._)("div",ca,[(0,a._)("div",ua,(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),(n=>((0,a.wg)(),(0,a.iD)("div",{class:"form-item-scope-checkboxes",key:n},[(0,a._)("label",da,[(0,a._)("input",{type:"checkbox",name:n,checked:l.includes(n),onChange:e=>_(n)},null,40,ma),(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("p",{class:"scope-description",innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Ea)])))),128))])]),(0,a._)("div",_a,[(0,a._)("button",{class:"confirm",type:"submit",disabled:0===l.length},(0,o.zw)(e.$t("buttons.SUBMIT")),9,Sa),(0,a._)("button",{class:"cancel",onClick:n[3]||(n[3]=(0,i.iM)((()=>e.$router.push("/profile/apps")),["prevent"]))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])],40,Jr)])])}}});const pa=(0,Y.Z)(Ta,[["__scopeId","data-v-0657ee77"]]);var Aa=pa;const Oa={id:"authorize-oauth2-app"},za={key:0},Ia={id:"authorize-oauth2-title"},Ra={class:"oauth2-access description-list"},ga={class:"client-scope"},Na=["innerHTML"],Ua={class:"authorize-oauth2-buttons"},ha={key:1},va={class:"no-app"};var Ca=(0,a.aZ)({__name:"AuthorizeUserApp",setup(e){const n=(0,r.yj)(),t=(0,u.o)(),i=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENT])),l=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.ERROR_MESSAGES]));function d(){n.query.client_id&&"string"===typeof n.query.client_id&&t.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID,n.query.client_id)}function m(){t.dispatch(c.Km.ACTIONS.AUTHORIZE_CLIENT,{client_id:`${n.query.client_id}`,redirect_uri:`${n.query.redirect_uri}`,response_type:`${n.query.response_type}`,scope:`${n.query.scope}`,state:`${n.query.state?n.query.state:""}`,code_challenge:`${n.query.code_challenge?n.query.code_challenge:""}`,code_challenge_method:`${n.query.code_challenge_method?n.query.code_challenge_method:""}`})}return(0,a.wF)((()=>d())),(e,n)=>{const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t"),c=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",Oa,[(0,s.SU)(i).client_id?((0,a.wg)(),(0,a.iD)("div",za,[(0,a._)("h1",Ia,[(0,a.Wm)(r,{keypath:"oauth2.AUTHORIZE_APP"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{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)(l)?((0,a.wg)(),(0,a.j4)(c,{key:0,message:(0,s.SU)(l)},null,8,["message"])):(0,a.kq)("",!0),(0,a._)("div",Ra,[(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(" "),(n=>((0,a.wg)(),(0,a.iD)(a.HY,{key:n},[(0,a._)("dt",ga,[(0,a._)("code",null,(0,o.zw)(n),1)]),(0,a._)("dd",{innerHTML:e.$t(`oauth2.APP.SCOPE.${n}_DESCRIPTION`)},null,8,Na)],64)))),128))]),(0,a._)("div",Ua,[(0,a._)("button",{class:"danger",onClick:m},(0,o.zw)(e.$t("buttons.AUTHORIZE")),1),(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.CANCEL")),1)])])])):((0,a.wg)(),(0,a.iD)("div",ha,[(0,a._)("p",va,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const wa=(0,Y.Z)(Ca,[["__scopeId","data-v-3b2fe9ed"]]);var Da=wa;const fa={id:"oauth2-apps"};var Pa=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,t=(0,u.o)(),{user:r}=(0,s.BK)(n);return(0,a.Ah)((()=>{t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(c.Km.MUTATIONS.SET_CLIENTS,[])})),(e,n)=>{const t=(0,a.up)("router-view");return(0,a.wg)(),(0,a.iD)("div",fa,[(0,a.Wm)(t,{authUser:(0,s.SU)(r)},null,8,["authUser"])])}}});const ka=Pa;var La=ka;const ba={id:"oauth2-app",class:"description-list"},Ma={key:1},ya={key:0,class:"info-box success-message"},Ga=["title"],Fa={key:0},Wa={key:1,class:"app-secret"},Ya=["title"],Ba={class:"client-scopes"},xa={class:"app-buttons"},Ka={key:2},Ha={class:"no-app"};var $a=(0,a.aZ)({__name:"UserApp",props:{authUser:null,afterCreation:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,r.yj)(),i=(0,u.o)(),{afterCreation:l,authUser:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>i.getters[c.Km.GETTERS.CLIENT])),E=(0,a.Fl)((()=>i.getters[c.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(){!l.value&&t.params.id&&"string"===typeof t.params.id&&i.dispatch(c.Km.ACTIONS.GET_CLIENT_BY_ID,+t.params.id)}function z(e){S.value=e?"oauth2.APP_DELETION_CONFIRMATION":"oauth2.TOKENS_REVOCATION_CONFIRMATION",I(!0)}function I(e){_.value=e,e||(S.value=null)}function R(e){"oauth2.APP_DELETION_CONFIRMATION"===S.value?i.dispatch(c.Km.ACTIONS.DELETE_CLIENT,e):i.dispatch(c.Km.ACTIONS.REVOKE_ALL_TOKENS,e)}function g(){navigator.clipboard.writeText(m.value.client_id),T.value=!0,p.value=!1,setTimeout((()=>{T.value=!1}),3e3)}function N(){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(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),i.commit(c.Km.MUTATIONS.EMPTY_CLIENT),i.commit(c.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1)})),(0,a.YP)((()=>E.value),(e=>{e&&I(!1)})),(e,n)=>{const t=(0,a.up)("Modal");return(0,a.wg)(),(0,a.iD)("div",ba,[_.value?((0,a.wg)(),(0,a.j4)(t,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t(S.value),onConfirmAction:n[0]||(n[0]=e=>R((0,s.SU)(m).id)),onCancelAction:n[1]||(n[1]=e=>I(!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",Ma,[(0,s.SU)(l)||(0,s.SU)(E)?((0,a.wg)(),(0,a.iD)("div",ya,(0,o.zw)(e.$t((0,s.SU)(l)?"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)(l)&&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:g},null,10,Ga)):(0,a.kq)("",!0)]),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dt",Fa,(0,o.zw)(e.$t("oauth2.APP.CLIENT_SECRET"))+": ",1)):(0,a.kq)("",!0),(0,s.SU)(l)&&(0,s.SU)(m).client_secret?((0,a.wg)(),(0,a.iD)("dd",Wa,[(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:N},null,10,Ya)):(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)(je.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",Ba,[((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",xa,[(0,a._)("button",{class:"danger",onClick:n[2]||(n[2]=e=>z(!1))},(0,o.zw)(e.$t("oauth2.REVOKE_ALL_TOKENS")),1),(0,a._)("button",{class:"danger",onClick:n[3]||(n[3]=e=>z(!0))},(0,o.zw)(e.$t("oauth2.DELETE_APP")),1),(0,a._)("button",{onClick:n[4]||(n[4]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)])])):((0,a.wg)(),(0,a.iD)("div",Ka,[(0,a._)("p",Ha,(0,o.zw)(e.$t("oauth2.NO_APP")),1),(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/apps"))},(0,o.zw)(e.$t("buttons.BACK")),1)]))])}}});const Za=(0,Y.Z)($a,[["__scopeId","data-v-3a844fa2"]]);var Va=Za;const qa={id:"oauth2-apps-list"},ja={class:"apps-list"},Xa={key:0},Qa={class:"app-issued-at"},Ja={key:1,class:"no-apps"},eo={class:"app-list-buttons"};var no=(0,a.aZ)({__name:"UserAppsList",props:{authUser:null},setup(e){const n=e,t=(0,u.o)(),i=(0,r.yj)(),{authUser:l}=(0,s.BK)(n),d=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS])),m=(0,a.Fl)((()=>t.getters[c.Km.GETTERS.CLIENTS_PAGINATION]));let E=_(i.query);function _(e){const n={};return e.page&&(n.page=(0,qe.z_)(e.page,qe.Hf)),n}function S(e){t.dispatch(c.Km.ACTIONS.GET_CLIENTS,e)}return(0,a.wF)((()=>{S(E)})),(0,a.YP)((()=>i.query),(async e=>{E=_(e),S(E)})),(e,n)=>{const t=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",qa,[(0,a._)("p",ja,(0,o.zw)(e.$t("oauth2.APPS_LIST")),1),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.iD)("ul",Xa,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(d),(n=>((0,a.wg)(),(0,a.iD)("li",{key:n.client_id},[(0,a.Wm)(t,{to:{name:"UserApp",params:{id:n.id}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(n.name),1)])),_:2},1032,["to"]),(0,a._)("span",Qa,(0,o.zw)(e.$t("oauth2.APP.ISSUE_AT"))+" "+(0,o.zw)((0,s.SU)(je.p6)(n.issued_at,(0,s.SU)(l).timezone,(0,s.SU)(l).date_format)),1)])))),128))])):((0,a.wg)(),(0,a.iD)("div",Ja,(0,o.zw)(e.$t("oauth2.NO_APPS")),1)),(0,s.SU)(d).length>0?((0,a.wg)(),(0,a.j4)(Ye.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",eo,[(0,a._)("button",{onClick:n[0]||(n[0]=n=>e.$router.push("/profile/apps/new"))},(0,o.zw)(e.$t("oauth2.NEW_APP")),1),(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)])])}}});const to=(0,Y.Z)(no,[["__scopeId","data-v-efa45ea0"]]);var ro=to;const ao={id:"user-sport-preferences"},oo={key:0,class:"responsive-table"},io={class:"mobile-display"},so={key:0,class:"profile-buttons mobile-display"},lo={key:1,class:"profile-buttons"},co={class:"text-left"},uo={key:0},mo={class:"cell-heading"},Eo=["value"],_o={class:"cell-heading"},So={key:0,class:"disabled-message"},To={key:1,class:"fa fa-refresh fa-spin fa-fw"},po={class:"cell-heading"},Ao={class:"cell-heading"},Oo=["checked"],zo={class:"cell-heading"},Io=["value"],Ro={key:1},go={key:0,class:"action-buttons"},No={class:"cell-heading"},Uo=["onClick"],ho={key:1,class:"edition-buttons"},vo=["disabled"],Co=["disabled","onClick"],wo=["disabled"],Do={key:0,class:"profile-buttons"},fo={key:1,class:"profile-buttons"};var Po=(0,a.aZ)({__name:"UserSportPreferences",props:{user:null,isEdition:{type:Boolean}},setup(e){const n=e,t=(0,u.o)(),{t:r}=(0,Se.QT)(),{isEdition:l,user:d}=(0,s.BK)(n),m="#838383",E=(0,a.f3)("sportColors"),_=(0,a.Fl)((()=>t.getters[c.O8.GETTERS.SPORTS])),S=(0,a.Fl)((()=>(0,Te.xH)(_.value,r,"is_active",d.value.sports_list))),T=(0,a.Fl)((()=>t.getters[c.YN.GETTERS.USER_LOADING])),p=(0,a.Fl)((()=>t.getters[c.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):N()}function z(e){return A.sport_id===e}function I(e){A.color=e.target.value}function R(e){A.stopped_speed_threshold=parseFloat(e.target.value)}function g(e){A.is_active=e.target.checked}function N(){A.sport_id=0,A.color=null,A.is_active=!0,A.stopped_speed_threshold=1,t.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES)}function U(e){e.preventDefault(),t.dispatch(c.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES,A)}function h(e,n){e.preventDefault(),t.dispatch(c.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES,n)}return(0,a.YP)((()=>T.value),(e=>{e||p.value||N()})),(e,n)=>{const t=(0,a.up)("SportImage"),r=(0,a.up)("ErrorMessage");return(0,a.wg)(),(0,a.iD)("div",ao,[(0,s.SU)(_).length>0?((0,a.wg)(),(0,a.iD)("div",oo,[(0,a._)("div",io,[(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",so,[(0,a._)("button",{class:"cancel",onClick:n[0]||(n[0]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",lo,[(0,a._)("button",{onClick:n[1]||(n[1]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[2]||(n[2]=n=>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",co,(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)(l)?((0,a.wg)(),(0,a.iD)("th",uo,(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",mo,(0,o.zw)(e.$t("user.PROFILE.SPORT.COLOR")),1),z(i.id)?((0,a.wg)(),(0,a.iD)("input",{key:0,class:"sport-color",type:"color",value:A.color,onInput:I},null,40,Eo)):((0,a.wg)(),(0,a.j4)(t,{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",_o,(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",So," ("+(0,o.zw)(e.$t("user.PROFILE.SPORT.DISABLED_BY_ADMIN"))+") ",1)),(0,s.SU)(T)&&z(i.id)?((0,a.wg)(),(0,a.iD)("i",To)):(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",po,(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",Ao,(0,o.zw)(e.$t("user.PROFILE.SPORT.IS_ACTIVE")),1),z(i.id)&&i.is_active?((0,a.wg)(),(0,a.iD)("input",{key:0,type:"checkbox",checked:i.is_active_for_user,onChange:g},null,40,Oo)):((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",zo,(0,o.zw)(e.$t("user.PROFILE.SPORT.STOPPED_SPEED_THRESHOLD")),1),z(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:R},null,40,Io)):((0,a.wg)(),(0,a.iD)("span",Ro,(0,o.zw)(i.stopped_speed_threshold),1))],2),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("td",go,[(0,a._)("span",No,(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,Uo)):(0,a.kq)("",!0),z(i.id)?((0,a.wg)(),(0,a.iD)("div",ho,[(0,a._)("button",{disabled:(0,s.SU)(T),onClick:U},(0,o.zw)(e.$t("buttons.SUBMIT")),9,vo),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:e=>h(e,i.id)},(0,o.zw)(e.$t("buttons.RESET")),9,Co),(0,a._)("button",{disabled:(0,s.SU)(T),onClick:n[3]||(n[3]=e=>O(null))},(0,o.zw)(e.$t("buttons.CANCEL")),9,wo)])):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])))),128))])]),(0,s.SU)(l)?((0,a.wg)(),(0,a.iD)("div",Do,[(0,a._)("button",{class:"cancel",onClick:n[4]||(n[4]=(0,i.iM)((n=>e.$router.push("/profile/sports")),["prevent"]))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,a.wg)(),(0,a.iD)("div",fo,[(0,a._)("button",{onClick:n[5]||(n[5]=n=>e.$router.push("/profile/edit/sports"))},(0,o.zw)(e.$t("user.PROFILE.EDIT_SPORTS_PREFERENCES")),1),(0,a._)("button",{onClick:n[6]||(n[6]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))])):(0,a.kq)("",!0)])}}});const ko=(0,Y.Z)(Po,[["__scopeId","data-v-74e52489"]]);var Lo=ko,bo=t(2894);const Mo=e=>((0,a.dD)("data-v-64eb8494"),e=e(),(0,a.Cn)(),e),yo={class:"about-text"},Go=["innerHTML"],Fo=Mo((()=>(0,a._)("i",{class:"fa fa-book fa-padding","aria-hidden":"true"},null,-1))),Wo={href:"https://samr1.github.io/FitTrackee/",target:"_blank",rel:"noopener noreferrer"},Yo=Mo((()=>(0,a._)("i",{class:"fa fa-github fa-padding","aria-hidden":"true"},null,-1))),Bo={href:"https://github.com/SamR1/FitTrackee",target:"_blank",rel:"noopener noreferrer"},xo=Mo((()=>(0,a._)("i",{class:"fa fa-balance-scale fa-padding","aria-hidden":"true"},null,-1))),Ko=Mo((()=>(0,a._)("a",{href:"https://choosealicense.com/licenses/agpl-3.0/",target:"_blank",rel:"noopener noreferrer"}," AGPLv3 ",-1))),Ho={key:0},$o=Mo((()=>(0,a._)("i",{class:"fa fa-envelope-o fa-padding","aria-hidden":"true"},null,-1))),Zo=["href"],Vo={key:1},qo=["href"],jo={class:"about-instance"},Xo=["innerHTML"];var Qo=(0,a.aZ)({__name:"About",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.SY.GETTERS.APP_CONFIG])),r=(0,a.Fl)((()=>i()));function i(){const e={};return"darksky"===t.value.weather_provider&&(e["name"]="Dark Sky",e["url"]="https://darksky.net"),"visualcrossing"===t.value.weather_provider&&(e["name"]="Visual Crossing",e["url"]="https://www.visualcrossing.com"),e}return(e,n)=>{const i=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",yo,[(0,a._)("div",null,[(0,a._)("p",{class:"error-message",innerHTML:e.$t("about.FITTRACKEE_DESCRIPTION")},null,8,Go),(0,a._)("p",null,[Fo,(0,a._)("a",Wo,(0,o.zw)((0,o.kC)(e.$t("common.DOCUMENTATION"))),1)]),(0,a._)("p",null,[Yo,(0,a._)("a",Bo,(0,o.zw)(e.$t("about.SOURCE_CODE")),1)]),(0,a._)("p",null,[xo,(0,a.Wm)(i,{keypath:"about.FITTRACKEE_LICENSE"},{default:(0,a.w5)((()=>[Ko])),_:1})]),(0,s.SU)(t).admin_contact?((0,a.wg)(),(0,a.iD)("div",Ho,[$o,(0,a._)("a",{href:`mailto:${(0,s.SU)(t).admin_contact}`},(0,o.zw)(e.$t("about.CONTACT_ADMIN")),9,Zo)])):(0,a.kq)("",!0),(0,s.SU)(r)&&(0,s.SU)(r).name?((0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Uk)((0,o.zw)(e.$t("about.WEATHER_DATA_FROM"))+" ",1),(0,a._)("a",{href:(0,s.SU)(r).url,target:"_blank",rel:"nofollow noopener"},(0,o.zw)((0,s.SU)(r).name),9,qo)])):(0,a.kq)("",!0),(0,s.SU)(t).about?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[(0,a._)("p",jo,(0,o.zw)(e.$t("about.ABOUT_THIS_INSTANCE")),1),(0,a._)("div",{innerHTML:(0,s.SU)(l.Z)((0,s.SU)(m.O)((0,s.SU)(t).about))},null,8,Xo)],64)):(0,a.kq)("",!0)])])}}});const Jo=(0,Y.Z)(Qo,[["__scopeId","data-v-64eb8494"]]);var ei=Jo;const ni={id:"bike"},ti=["src"];function ri(e,n){return(0,a.wg)(),(0,a.iD)("div",ni,[(0,a._)("img",{class:"bike-img",src:"/img/bike.svg",alt:"mountain bike"},null,8,ti)])}const ai={},oi=(0,Y.Z)(ai,[["render",ri],["__scopeId","data-v-795f7f5f"]]);var ii=oi;const si={id:"about",class:"view"},li={class:"container"},ci={class:"container-sub"},ui={class:"container-sub about-details"};var di=(0,a.aZ)({__name:"AboutView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",si,[(0,a._)("div",li,[(0,a._)("div",ci,[(0,a.Wm)(ii)]),(0,a._)("div",ui,[(0,a.Wm)(ei)])])]))}});const mi=(0,Y.Z)(di,[["__scopeId","data-v-bffb50d0"]]);var Ei=mi,_i=t(1818),Si=t(2056);const Ti=e=>((0,a.dD)("data-v-645a9e33"),e=e(),(0,a.Cn)(),e),pi={class:"timeline-workout"},Ai={class:"box"},Oi={class:"workout-user-date"},zi={class:"workout-user"},Ii=["title"],Ri={key:0},gi={key:1,class:"no-map"},Ni={class:"img"},Ui={class:"data"},hi=Ti((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),vi={key:0},Ci={class:"data"},wi=Ti((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),Di={key:0,class:"data elevation"},fi=["alt"],Pi={class:"data-values"},ki={key:1,class:"data altitude"},Li=Ti((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),bi={class:"data-values"};var Mi=(0,a.aZ)({__name:"WorkoutCard",props:{user:null,useImperialUnits:{type:Boolean},workout:{default:()=>({})},sport:{default:()=>({})}},setup(e){const n=e,t=(0,u.o)(),{user:r,workout:i,sport:l,useImperialUnits:d}=(0,s.BK)(n),m=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function E(e){return e&&null!==e.ascent&&null!==e.descent}return(e,n)=>{const t=(0,a.up)("router-link"),c=(0,a.up)("SportImage"),u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",pi,[(0,a._)("div",Ai,[(0,a._)("div",Oi,[(0,a._)("div",zi,[(0,a.Wm)(Be.Z,{user:(0,s.SU)(r)},null,8,["user"]),(0,s.SU)(r).username?((0,a.wg)(),(0,a.j4)(t,{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)(t,{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)(je.p6)((0,s.SU)(i).workout_date,(0,s.SU)(r).timezone,(0,s.SU)(r).date_format)},(0,o.zw)((0,s.SU)(_i.Z)(new Date((0,s.SU)(i).workout_date),new Date,{addSuffix:!0,locale:(0,s.SU)(m)})),9,Ii)):(0,a.kq)("",!0)]),(0,a._)("div",{class:(0,o.C_)(["workout-map",{"no-cursor":!(0,s.SU)(i)}]),onClick:n[0]||(n[0]=n=>(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",Ri,[(0,s.SU)(i).with_gpx?((0,a.wg)(),(0,a.j4)(Si.Z,{key:0,workout:(0,s.SU)(i)},null,8,["workout"])):((0,a.wg)(),(0,a.iD)("div",gi,(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:n[1]||(n[1]=n=>(0,s.SU)(i).id?e.$router.push({name:"Workout",params:{workoutId:(0,s.SU)(i).id}}):null)},[(0,a._)("div",Ni,[(0,s.SU)(l).label?((0,a.wg)(),(0,a.j4)(c,{key:0,"sport-label":(0,s.SU)(l).label,color:(0,s.SU)(l).color},null,8,["sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("div",Ui,[hi,(0,s.SU)(i)?((0,a.wg)(),(0,a.iD)("span",vi,(0,o.zw)((0,s.SU)(i).moving),1)):(0,a.kq)("",!0)]),(0,a._)("div",Ci,[wi,(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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",Di,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,fi),(0,a._)("div",Pi,[(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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)(u,{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),E((0,s.SU)(i))?((0,a.wg)(),(0,a.iD)("div",ki,[Li,(0,a._)("div",bi,[(0,a.Uk)(" +"),(0,s.SU)(i).id?((0,a.wg)(),(0,a.j4)(u,{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)(u,{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 yi=(0,Y.Z)(Mi,[["__scopeId","data-v-645a9e33"]]);var Gi=yi,Fi=t(5630),Wi=t(3768);const Yi={id:"timeline"},Bi={class:"section-title"},xi={key:0},Ki={key:1},Hi={key:1,class:"more-workouts"};var $i=(0,a.aZ)({__name:"Timeline",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:i}=(0,s.BK)(n),l=(0,s.iH)(1),d=5,m=n.user.nb_workouts>=d?d:n.user.nb_workouts;(0,a.wF)((()=>S()));const E=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.TIMELINE_WORKOUTS])),_=(0,a.Fl)((()=>E.value.length>0&&null!==E.value[E.value.length-1].previous_workout));function S(){t.dispatch(c.aX.ACTIONS.GET_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}function T(){l.value+=1,t.dispatch(c.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS,{page:l.value,per_page:d,...Wi.eR})}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Yi,[(0,a._)("div",Bi,(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",xi,[((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)(Gi,{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",Ki,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(E),(e=>((0,a.wg)(),(0,a.j4)(Gi,{workout:e,sport:(0,s.SU)(E).length>0?(0,s.SU)(r).filter((n=>n.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)(Fi.Z,{key:0})):(0,a.kq)("",!0),(0,s.SU)(_)?((0,a.wg)(),(0,a.iD)("div",Hi,[(0,a._)("button",{onClick:T},(0,o.zw)(e.$t("workouts.LOAD_MORE_WORKOUT")),1)])):(0,a.kq)("",!0)]))]))}});const Zi=(0,Y.Z)($i,[["__scopeId","data-v-35567bf2"]]);var Vi=Zi,qi=t(1640),ji=t(4559),Xi=t(7349),Qi=t(1743),Ji=t(9160),es=t(1085);const ns=["title"];var ts=(0,a.aZ)({__name:"CalendarWorkout",props:{displayHARecord:{type:Boolean},workout:null,sportLabel:null,sportColor:null},setup(e){const n=e,{displayHARecord:t,workout:r,sportLabel:o,sportColor:i}=(0,s.BK)(n);return(e,n)=>{const l=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",{class:"calendar-workout",onClick:n[0]||(n[0]=n=>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)(t)||"HA"!==e.record_type)).map((n=>` ${e.$t(`workouts.RECORD_${n.record_type}`)}`))},null,8,ns)):(0,a.kq)("",!0)])])}}});const rs=ts;var as=rs;const os={class:"donut-chart"},is={height:"34",width:"34",viewBox:"0 0 34 34"},ss=["stroke","stroke-dashoffset","transform"];var ls=(0,a.aZ)({__name:"DonutChart",props:{colors:null,datasets:null},setup(e){const n=e,{colors:t,datasets:r}=(0,s.BK)(n);let o=-90;const i=16,l=16,c=14,u=2*Math.PI*c;function d(e,n){return n-e*n}function m(e,n){const t=`rotate(${o}, ${i}, ${l})`;return o=360*n+o,t}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",os,[((0,a.wg)(),(0,a.iD)("svg",is,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(Object.entries((0,s.SU)(r)),((e,n)=>((0,a.wg)(),(0,a.iD)("g",{key:n},[(0,a._)("circle",{cx:i,cy:l,r:c,fill:"transparent",stroke:(0,s.SU)(t)[+e[0]],"stroke-dashoffset":d(e[1].percentage,u),"stroke-dasharray":u,"stroke-width":"3","stroke-opacity":"0.8",transform:m(n,e[1].percentage)},null,8,ss)])))),128))]))]))}});const cs=ls;var us=cs;const ds={class:"calendar-workouts-chart"},ms={class:"workouts-count"},Es={key:0,class:"workouts-pane"},_s={class:"more-workouts"};var Ss=(0,a.aZ)({__name:"CalendarWorkoutsChart",props:{colors:null,datasets:null,sports:null,workouts:null},setup(e){const n=e,{colors:t,datasets:r,sports:i,workouts:l}=(0,s.BK)(n),c=(0,s.iH)(!0);function u(e){e.stopPropagation(),c.value=!c.value}return(e,n)=>{const d=(0,a.Q2)("click-outside");return(0,a.wg)(),(0,a.iD)("div",ds,[(0,a._)("div",{class:"workouts-chart",onClick:u},[(0,a._)("div",ms,(0,o.zw)((0,s.SU)(l).length),1),(0,a.Wm)(us,{datasets:(0,s.SU)(r),colors:(0,s.SU)(t)},null,8,["datasets","colors"])]),c.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",Es,[(0,a.wy)(((0,a.wg)(),(0,a.iD)("div",_s,[(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,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(i)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(i))},null,8,["workout","sportLabel","sportColor"])))),128))])),[[d,u]])]))])}}});const Ts=(0,Y.Z)(Ss,[["__scopeId","data-v-52d4310a"]]);var ps=Ts;const As={class:"calendar-workouts"},Os={class:"desktop-display"},zs={key:0,class:"workouts-display"},Is={key:1,class:"donut-display"},Rs={class:"mobile-display"},gs={key:0,class:"donut-display"};var Ns=(0,a.aZ)({__name:"CalendarWorkouts",props:{displayHARecord:{type:Boolean},workouts:null,sports:null},setup(e){const n=e,{displayHARecord:t,workouts:r,sports:o}=(0,s.BK)(n),i=(0,a.Fl)((()=>(0,Wi.BN)(n.workouts))),l=(0,a.Fl)((()=>(0,Te.Yx)(n.sports))),c=6;return(e,n)=>((0,a.wg)(),(0,a.iD)("div",As,[(0,a._)("div",Os,[(0,s.SU)(r).length<=c?((0,a.wg)(),(0,a.iD)("div",zs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,s.SU)(r).slice(0,c),((e,n)=>((0,a.wg)(),(0,a.j4)(as,{key:n,displayHARecord:(0,s.SU)(t),workout:e,sportLabel:(0,s.SU)(Te.PA)(e,(0,s.SU)(o)),sportColor:(0,s.SU)(Te.CM)(e,(0,s.SU)(o))},null,8,["displayHARecord","workout","sportLabel","sportColor"])))),128))])):((0,a.wg)(),(0,a.iD)("div",Is,[(0,a.Wm)(ps,{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",Rs,[(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",gs,[(0,a.Wm)(ps,{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 Us=Ns;var hs=Us;const vs={class:"calendar-cells"},Cs={class:"calendar-cell-day"};var ws=(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 n=e,{currentDay:t,displayHARecord:r,endDate:i,sports:l,startDate:c,timezone:u,weekStartingMonday:d,workouts:m}=(0,s.BK)(n),E=(0,s.iH)([]);function _(){E.value=[];let e=c.value;while(e<=i.value){const n=[];for(let t=0;t<7;t++)n.push(e),e=(0,Xi.Z)(e,1);E.value.push(n)}}function S(e){return d.value?[5,6].includes(e):[0,6].includes(e)}function T(e,n){return n?n.filter((n=>(0,Qi.Z)((0,je.eB)(n.workout_date,u.value),e))).reverse():[]}return(0,a.bv)((()=>_())),(0,a.YP)((()=>n.currentDay),(()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",vs,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(E.value,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:"calendar-row",key:n},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e,((e,n)=>((0,a.wg)(),(0,a.iD)("div",{class:(0,o.C_)(["calendar-cell",{"disabled-cell":!(0,s.SU)(Ji.Z)(e,(0,s.SU)(t)),"week-end":S(n),today:(0,s.SU)(es.Z)(e)}]),key:n},[(0,a.Wm)(hs,{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",Cs,(0,o.zw)((0,s.SU)(At.Z)(e,"d")),1)],2)))),128))])))),128))]))}});const Ds=ws;var fs=Ds;const Ps={class:"calendar-days"};var ks=(0,a.aZ)({__name:"CalendarDays",props:{startDate:null,localeOptions:null},setup(e){const n=e,t=[];for(let r=0;r<7;r++)t.push((0,Xi.Z)(n.startDate,r));return(n,r)=>((0,a.wg)(),(0,a.iD)("div",Ps,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(t,((n,t)=>(0,a._)("div",{class:"calendar-day",key:t},(0,o.zw)((0,s.SU)(At.Z)(n,"EEE",{locale:e.localeOptions})),1))),64))]))}});const Ls=ks;var bs=Ls;const Ms={class:"calendar-header"},ys=(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1),Gs=[ys],Fs={class:"calendar-month"},Ws=(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1),Ys=[Ws];var Bs=(0,a.aZ)({__name:"CalendarHeader",props:{day:null,localeOptions:null},emits:["displayNextMonth","displayPreviousMonth"],setup(e,{emit:n}){const t=e,{day:r,localeOptions:i}=(0,s.BK)(t);return(e,t)=>((0,a.wg)(),(0,a.iD)("div",Ms,[(0,a._)("div",{class:"calendar-arrow calendar-arrow-left",onClick:t[0]||(t[0]=e=>n("displayPreviousMonth"))},Gs),(0,a._)("div",Fs,[(0,a._)("span",null,(0,o.zw)((0,s.SU)(At.Z)((0,s.SU)(r),"MMM yyyy",{locale:(0,s.SU)(i)})),1)]),(0,a._)("div",{class:"calendar-arrow calendar-arrow-right",onClick:t[1]||(t[1]=e=>n("displayNextMonth"))},Ys)]))}});const xs=Bs;var Ks=xs;const Hs={id:"user-calendar"},$s={class:"calendar-card box"};var Zs=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,t=(0,u.o)(),{sports:r,user:o}=(0,s.BK)(n),i="yyyy-MM-dd",l=(0,s.iH)(new Date),d=(0,s.iH)((0,je.yx)(l.value,n.user.weekm)),m=(0,a.Fl)((()=>t.getters[c.aX.GETTERS.CALENDAR_WORKOUTS])),E=(0,a.Fl)((()=>t.getters[c.SY.GETTERS.LOCALE]));function _(){d.value=(0,je.yx)(l.value,n.user.weekm);const e={from:(0,At.Z)(d.value.start,i),to:(0,At.Z)(d.value.end,i),page:1,per_page:100,...Wi.eR};t.dispatch(c.aX.ACTIONS.GET_CALENDAR_WORKOUTS,e)}function S(){l.value=(0,qi.Z)(l.value,1),_()}function T(){l.value=(0,ji.Z)(l.value,1),_()}return(0,a.wF)((()=>_())),(e,n)=>((0,a.wg)(),(0,a.iD)("div",Hs,[(0,a._)("div",$s,[(0,a.Wm)(Ks,{day:l.value,"locale-options":(0,s.SU)(E),onDisplayNextMonth:S,onDisplayPreviousMonth:T},null,8,["day","locale-options"]),(0,a.Wm)(bs,{"start-date":d.value.start,"locale-options":(0,s.SU)(E)},null,8,["start-date","locale-options"]),(0,a.Wm)(fs,{currentDay:l.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 Vs=Zs;var qs=Vs,js=t(3703),Xs=t(4135),Qs=t(436);const Js={class:"user-month-stats"};var el=(0,a.aZ)({__name:"UserMonthStats",props:{sports:null,user:null},setup(e){const n=e,{sports:t,user:r}=(0,s.BK)(n),i=new Date,l={duration:"week",start:(0,js.Z)(i),end:(0,Xs.Z)(i)},c=n.sports.map((e=>e.id));return(e,n)=>{const i=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Js,[(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)(Qs.Z,{sports:(0,s.SU)(t),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 nl=(0,Y.Z)(el,[["__scopeId","data-v-1bcddc12"]]);var tl=nl,rl=t(2540),al=t(3649);const{locale:ol}=rl.Z.global,il=(e,n,t,r)=>{const a="km",o=t?al.Dl[a].defaultTarget:a,i="m",s=t?al.Dl[i].defaultTarget:i;let l;switch(e.record_type){case"AS":case"MS":l=`${(0,al.sC)(+e.value,a,o,2)} ${o}/h`;break;case"FD":l=`${(0,al.sC)(+e.value,a,o,3)} ${o}`;break;case"HA":l=`${(0,al.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,je.p6)(e.workout_date,n,r,!1),workout_id:e.workout_id,id:e.id,record_type:e.record_type,value:l}},sl=(e,n)=>{const t=e.label.toLowerCase(),r=n.label.toLowerCase();return t>r?1:t(o=(0,je.mh)(o,ol.value),e.filter((e=>!!a||"HA"!==e.record_type)).reduce(((e,a)=>{const i=n.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(il(a,t,r,o))),e}),{})),cl={class:"records-card"},ul={class:"record-type"},dl={class:"record-value"},ml={class:"record-date"};var El=(0,a.aZ)({__name:"RecordsCard",props:{records:null,sportTranslatedLabel:null},setup(e){const n=e,{records:t,sportTranslatedLabel:r}=(0,s.BK)(n),{t:i}=(0,Se.QT)();function l(e){const n=[];return e.map((e=>{n.push({...e,label:i(`workouts.RECORD_${e.record_type}`)})})),n.sort(sl)}return(e,n)=>{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",cl,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Wm)(i,{"sport-label":(0,s.SU)(t).label,color:(0,s.SU)(t).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)(t).records),(e=>((0,a.wg)(),(0,a.iD)("div",{class:"record",key:e.id},[(0,a._)("span",ul,(0,o.zw)(e.label),1),(0,a._)("span",dl,(0,o.zw)(e.value),1),(0,a._)("span",ml,[(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 _l=(0,Y.Z)(El,[["__scopeId","data-v-8d17c606"]]);var Sl=_l;const Tl=e=>((0,a.dD)("data-v-f0c85cb8"),e=e(),(0,a.Cn)(),e),pl={class:"user-records-section"},Al={class:"section-title"},Ol=Tl((()=>(0,a._)("i",{class:"fa fa-trophy custom-fa-small","aria-hidden":"true"},null,-1))),zl={class:"user-records"},Il={key:0,class:"no-records"};var Rl=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),r=(0,a.Fl)((()=>ll(n.user.records,(0,Te.xH)(n.sports,t),n.user.timezone,n.user.imperial_units,n.user.display_ascent,n.user.date_format)));return(n,t)=>((0,a.wg)(),(0,a.iD)("div",pl,[(0,a._)("div",Al,[Ol,(0,a.Uk)(" "+(0,o.zw)(n.$t("workouts.RECORD",2)),1)]),(0,a._)("div",zl,[0===Object.keys((0,s.SU)(r)).length?((0,a.wg)(),(0,a.iD)("div",Il,(0,o.zw)(n.$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(),(n=>((0,a.wg)(),(0,a.j4)(Sl,{sportTranslatedLabel:n,records:(0,s.SU)(r)[n],key:n,useImperialUnits:e.user.imperial_units},null,8,["sportTranslatedLabel","records","useImperialUnits"])))),128))])]))}});const gl=(0,Y.Z)(Rl,[["__scopeId","data-v-f0c85cb8"]]);var Nl=gl;const Ul={id:"user-stats"};var hl=(0,a.aZ)({__name:"index",props:{user:null},setup(e){const n=e,{t:t}=(0,Se.QT)(),{user:r}=(0,s.BK)(n),o=(0,a.Fl)((()=>n.user.total_duration)),i=(0,a.Fl)((()=>_(o))),l="km",c=r.value.imperial_units?al.Dl[l].defaultTarget:l,u=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_distance,l,c,2):parseFloat(r.value.total_distance.toFixed(2)))),d="m",m=r.value.imperial_units?al.Dl[d].defaultTarget:d,E=(0,a.Fl)((()=>r.value.imperial_units?(0,al.sC)(r.value.total_ascent,d,m,2):parseFloat(r.value.total_ascent.toFixed(2))));function _(e){const n=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)?t("common.DAY",2):t("common.DAY",1)}`:`0 ${t("common.DAY",2)},`,duration:`${n.split(":")[0]}h ${n.split(":")[1]}min`}}return(e,n)=>((0,a.wg)(),(0,a.iD)("div",Ul,[(0,a.Wm)(Q,{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)(Q,{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)(Q,{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)(Q,{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)(Q,{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 vl=hl;var Cl=vl;const wl={class:"privacy-policy-message"};function Dl(e,n){const t=(0,a.up)("router-link"),r=(0,a.up)("i18n-t");return(0,a.wg)(),(0,a.iD)("div",wl,[(0,a._)("span",null,[(0,a.Wm)(r,{keypath:"user.LAST_PRIVACY_POLICY_TO_VALIDATE"},{default:(0,a.w5)((()=>[(0,a.Wm)(t,{to:"/profile/edit/privacy-policy"},{default:(0,a.w5)((()=>[(0,a.Uk)((0,o.zw)(e.$t("user.REVIEW")),1)])),_:1})])),_:1})])])}const fl={},Pl=(0,Y.Z)(fl,[["render",Dl],["__scopeId","data-v-05532ad6"]]);var kl=Pl;const Ll=e=>((0,a.dD)("data-v-4056e776"),e=e(),(0,a.Cn)(),e),bl={key:0,id:"dashboard",class:"view"},Ml={class:"container mobile-menu"},yl={class:"box"},Gl=Ll((()=>(0,a._)("i",{class:"fa fa-calendar","aria-hidden":"true"},null,-1))),Fl=[Gl],Wl=Ll((()=>(0,a._)("i",{class:"fa fa-bar-chart","aria-hidden":"true"},null,-1))),Yl=[Wl],Bl=Ll((()=>(0,a._)("i",{class:"fa fa-map-o","aria-hidden":"true"},null,-1))),xl=[Bl],Kl=Ll((()=>(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"},null,-1))),Hl=[Kl],$l={key:0,class:"container privacy-policy-message"},Zl={class:"container"},Vl={class:"container dashboard-container"},ql={class:"left-container dashboard-sub-container"},jl={class:"right-container dashboard-sub-container"},Xl=Ll((()=>(0,a._)("div",{id:"bottom"},null,-1))),Ql={key:1,class:"app-loading"};var Jl=(0,a.aZ)({__name:"Dashboard",setup(e){const n=(0,u.o)(),t=(0,a.Fl)((()=>n.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),r=(0,a.Fl)((()=>n.getters[c.O8.GETTERS.SPORTS])),i=(0,s.iH)("calendar");function l(e){i.value=e}return(0,a.wF)((()=>n.dispatch(c.YN.ACTIONS.GET_USER_PROFILE))),(e,n)=>{const c=(0,a.up)("Loader");return(0,s.SU)(t).username&&(0,s.SU)(r).length>0?((0,a.wg)(),(0,a.iD)("div",bl,[(0,a._)("div",Ml,[(0,a._)("div",yl,[(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"calendar"===i.value}]),onClick:n[0]||(n[0]=e=>l("calendar"))},Fl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"chart"===i.value}]),onClick:n[1]||(n[1]=e=>l("chart"))},Yl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"timeline"===i.value}]),onClick:n[2]||(n[2]=e=>l("timeline"))},xl,2),(0,a._)("div",{class:(0,o.C_)(["mobile-menu-item",{"is-selected":"records"===i.value}]),onClick:n[3]||(n[3]=e=>l("records"))},Hl,2)])]),(0,s.SU)(t).accepted_privacy_policy?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$l,[(0,a.Wm)(kl)])),(0,a._)("div",Zl,[(0,a.Wm)(Cl,{user:(0,s.SU)(t)},null,8,["user"])]),(0,a._)("div",Vl,[(0,a._)("div",ql,[(0,a.Wm)(tl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("chart"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Nl,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("records"===i.value)})},null,8,["sports","user","class"])]),(0,a._)("div",jl,[(0,a.Wm)(qs,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("calendar"===i.value)})},null,8,["sports","user","class"]),(0,a.Wm)(Vi,{sports:(0,s.SU)(r),user:(0,s.SU)(t),class:(0,o.C_)({"is-hidden":!("timeline"===i.value)})},null,8,["sports","user","class"])])]),Xl])):((0,a.wg)(),(0,a.iD)("div",Ql,[(0,a.Wm)(c)]))}}});const ec=(0,Y.Z)(Jl,[["__scopeId","data-v-4056e776"]]);var nc=ec,tc=t(8273);const rc={class:"not-found view"};var ac=(0,a.aZ)({__name:"NotFoundView",setup(e){return(e,n)=>((0,a.wg)(),(0,a.iD)("div",rc,[(0,a.Wm)(tc.Z)]))}});const oc=ac;var ic=oc;const sc={id:"privacy-policy",class:"view"},lc={class:"container"},cc=(0,a._)("div",{id:"bottom"},null,-1);var uc=(0,a.aZ)({__name:"PrivacyPolicyView",setup(e){const n=(0,u.o)();return(0,a.wF)((()=>{n.dispatch(c.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)})),(e,n)=>((0,a.wg)(),(0,a.iD)("div",sc,[(0,a._)("div",lc,[(0,a.Wm)(Gr)]),cc]))}});const dc=uc;var mc=dc,Ec=t(776);const _c={id:"loginOrRegister",class:"view"},Sc={class:"container"},Tc={class:"container-sub"},pc={class:"container-sub"};var Ac=(0,a.aZ)({__name:"LoginOrRegister",props:{action:null},setup(e){const n=e,{action:t}=(0,s.BK)(n);return(e,n)=>((0,a.wg)(),(0,a.iD)("div",_c,[(0,a._)("div",Sc,[(0,a._)("div",Tc,[(0,a.Wm)(ii)]),(0,a._)("div",pc,[(0,a.Wm)(Ec.Z,{action:(0,s.SU)(t)},null,8,["action"])])])]))}});const Oc=(0,Y.Z)(Ac,[["__scopeId","data-v-58043acb"]]);var zc=Oc;const Ic=e=>{const n=/(\/profile)(\/edit)*(\/*)/,t=e.replace(n,"").toUpperCase();return""===t?"PROFILE":t.toUpperCase()},Rc=[{path:"/",name:"Dashboard",component:nc},{path:"/login",name:"Login",component:zc,props:{action:"login"}},{path:"/register",name:"Register",component:zc,props:{action:"register"}},{path:"/account-confirmation",name:"AccountConfirmation",component:()=>t.e(845).then(t.bind(t,4264))},{path:"/account-confirmation/resend",name:"AccountConfirmationResend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"account-confirmation-resend"}},{path:"/account-confirmation/email-sent",name:"AccountConfirmationEmailSend",component:()=>t.e(24).then(t.bind(t,5639)),props:{action:"email-sent"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:()=>t.e(24).then(t.bind(t,1627)),props:{action:"reset"}},{path:"/email-update",name:"EmailUpdate",component:()=>t.e(845).then(t.bind(t,8793))},{path:"/profile",name:"Profile",component:()=>t.e(845).then(t.bind(t,1133)),children:[{path:"",name:"UserProfile",component:kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfos",component:Ln.Z},{path:"preferences",name:"UserPreferences",component:Wn},{path:"sports",name:"UserSportPreferences",component:Lo,props:{isEdition:!1}},{path:"apps",name:"UserApps",component:La,children:[{path:"",name:"UserAppsList",component:ro},{path:":id",name:"UserApp",component:Va},{path:":id/created",name:"CreatedUserApp",component:Va,props:{afterCreation:!0}},{path:"new",name:"AddUserApp",component:Aa},{path:"authorize",name:"AuthorizeUserApp",component:Da}]}]},{path:"edit",name:"UserProfileEdition",component:Kn,props:e=>({tab:Ic(e.path)}),children:[{path:"",name:"UserInfosEdition",component:Mt},{path:"account",name:"UserAccountEdition",component:pt},{path:"picture",name:"UserPictureEdition",component:Vt},{path:"preferences",name:"UserPreferencesEdition",component:fr},{path:"sports",name:"UserSportPreferencesEdition",component:Lo,props:{isEdition:!0}},{path:"privacy-policy",name:"UserPrivacyPolicy",component:Zr}]}]},{path:"/statistics",name:"Statistics",component:()=>t.e(193).then(t.bind(t,7885))},{path:"/users/:username",name:"User",component:()=>t.e(845).then(t.bind(t,9453))},{path:"/workouts",name:"Workouts",component:()=>t.e(401).then(t.bind(t,9628))},{path:"/workouts/:workoutId",name:"Workout",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:()=>t.e(401).then(t.bind(t,8237))},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:()=>t.e(401).then(t.bind(t,5018)),props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:()=>t.e(401).then(t.bind(t,4189))},{path:"/admin",name:"Administration",component:()=>t.e(328).then(t.bind(t,6e3)),children:[{path:"",name:"AdministrationMenu",component:_e},{path:"application",name:"ApplicationAdministration",component:x},{path:"application/edit",name:"ApplicationAdministrationEdition",component:x,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:Fe},{path:"users/:username",name:"UserFromAdmin",component:()=>t.e(845).then(t.bind(t,9453)),props:{fromAdmin:!0}},{path:"users",name:"UsersAdministration",component:In}]},{path:"/about",name:"About",component:Ei},{path:"/privacy-policy",name:"PrivacyPolicy",component:mc},{path:"/:pathMatch(.*)*",name:"not-found",component:ic}],gc=(0,r.p7)({history:(0,r.PO)("/"),routes:Rc}),Nc=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register","/account-confirmation","/account-confirmation/resend","/account-confirmation/email-sent"],Uc=["/email-update","/about","/privacy-policy"];gc.beforeEach(((e,n,t)=>{bo.Z.dispatch(c.YN.ACTIONS.CHECK_AUTH_USER).then((()=>{if(Uc.includes(e.path))return t();if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]&&Nc.includes(e.path))return t("/");if(bo.Z.getters[c.YN.GETTERS.IS_AUTHENTICATED]||Nc.includes(e.path))t();else{const n="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};t(n)}})).catch((e=>{console.error(e),t()}))}));var hc=gc},5801:function(e,n,t){"use strict";var r,a,o,i,s,l,c,u,d,m,E,_,S,T,p,A,O,z;t.d(n,{YN:function(){return U},Km:function(){return h},SY:function(){return R},O8:function(){return g},gu:function(){return N},RT:function(){return v},aX:function(){return C}}),function(e){e["ACCEPT_PRIVACY_POLICY"]="ACCEPT_PRIVACY_POLICY",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_REQUEST_DATA_EXPORT"]="GET_REQUEST_DATA_EXPORT",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["REQUEST_DATA_EXPORT"]="REQUEST_DATA_EXPORT",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["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",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",e["EXPORT_REQUEST"]="EXPORT_REQUEST"}(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",e["SET_EXPORT_REQUEST"]="SET_EXPORT_REQUEST"}(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_PRIVACY_POLICY"]="GET_APPLICATION_PRIVACY_POLICY",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_PRIVACY_POLICY"]="UPDATE_APPLICATION_PRIVACY_POLICY",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"}(z||(z={}));var I=t(52);const R={ACTIONS:c,GETTERS:u,MUTATIONS:d},g={ACTIONS:m,GETTERS:E,MUTATIONS:_},N={ACTIONS:S,GETTERS:T,MUTATIONS:p},U={ACTIONS:r,GETTERS:a,MUTATIONS:o},h={ACTIONS:i,GETTERS:s,MUTATIONS:l},v={ACTIONS:A,GETTERS:O,MUTATIONS:z},C={ACTIONS:I.tW,GETTERS:I.JP,MUTATIONS:I.CW}},2894:function(e,n,t){"use strict";t.d(n,{Z:function(){return de}});var r=t(3907),a=(t(7658),t(5167)),o=t(6154),i=t(8566),s=t(2024);const l=o.Z.create({baseURL:(0,s.k)()});l.interceptors.request.use((e=>{const n=new AbortController;e.signal=n.signal;const t=(0,i.a)(e);return i.j.set(t,n),e}),(e=>Promise.reject(e))),l.interceptors.response.use((e=>((0,i.a)(e.config),e)),(e=>("canceled"!==e.message&&e.response&&(0,i.a)(e.response.config),Promise.reject(e))));var c=l,u=t(1020),d=t(5801);const m=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`users/${n.username}`).then((t=>{204===t.status?n.fromAdmin?u.Z.push("/admin/users"):e.dispatch(d.YN.ACTIONS.LOGOUT).then((()=>u.Z.push("/"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},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,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get(`users/${n}`).then((n=>{"success"===n.data.status?e.commit(d.RT.MUTATIONS.UPDATE_USER,n.data.data.users[0]):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.GET_USERS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!0),a.Z.get("users",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USERS,n.data.data.users),e.commit(d.RT.MUTATIONS.UPDATE_USERS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.UPDATE_USER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1);const t={};void 0!==n.admin&&(t.admin=n.admin),n.resetPassword&&(t.reset_password=n.resetPassword),n.activate&&(t.activate=n.activate),void 0!==n.new_email&&(t.new_email=n.new_email),a.Z.patch(`users/${n.username}`,t).then((t=>{"success"===t.data.status?(e.commit(d.RT.MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]),(n.resetPassword||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_IS_SUCCESS,!0),(n.activate||n.new_email)&&e.commit(d.RT.MUTATIONS.UPDATE_USER,t.data.data.users[0])):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.RT.MUTATIONS.UPDATE_USERS_LOADING,!1)))},[d.RT.ACTIONS.DELETE_USER_ACCOUNT](e,n){m(e,{username:n.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,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/confirm",{token:n.token}).then((n=>{if("success"===n.data.status){const t=n.data.auth_token;window.localStorage.setItem("authToken",t),e.commit(d.YN.MUTATIONS.UPDATE_AUTH_TOKEN,t),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/")))}else(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.CONFIRM_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!1),c.post("/auth/email/update",{token:n.token}).then((t=>{"success"===t.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0),n.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((n=>{(0,s.S)(e,n)}))},[d.YN.ACTIONS.GET_USER_PROFILE](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/profile").then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),n.data.data.accepted_privacy_policy||e.dispatch(d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY),n.data.data.language&&e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language),e.dispatch(d.O8.ACTIONS.GET_SPORTS)):((0,s.S)(e,null),_(e))})).catch((n=>{"canceled"!==n.message&&((0,s.S)(e,n),_(e))}))},[d.YN.ACTIONS.LOGIN_OR_REGISTER](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!1),c.post(`/auth/${n.actionType}`,n.formData).then((t=>{if("success"===t.data.status)if("login"===n.actionType){const r=t.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 n.redirectUrl?n.redirectUrl:"/")))}else u.Z.push("/login").then((()=>e.commit(d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS,!0)));else(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.LOGOUT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/logout").then((n=>{"success"===n.data.status?_(e):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.UPDATE_USER_PROFILE](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),u.Z.push("/profile")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_ACCOUNT](e,n){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",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.commit(d.YN.MUTATIONS.UPDATE_IS_SUCCESS,!0)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.UPDATE_USER_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/preferences",n).then((n=>{"success"===n.data.status?(e.commit(d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE,n.data.data),e.dispatch(d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE,n.data.data.language).then((()=>u.Z.push("/profile/preferences")))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.RESET_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z["delete"](`auth/profile/reset/sports/${n}`).then((n=>{204===n.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_SPORT_PREFERENCES](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),a.Z.post("auth/profile/edit/sports",n).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>{(0,s.S)(e,n),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)}))},[d.YN.ACTIONS.UPDATE_USER_PICTURE](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!0),!n.picture)throw new Error("No file part");const t=new FormData;t.append("file",n.picture),a.Z.post("auth/picture",t,{headers:{"content-type":"multipart/form-data"}}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.DELETE_ACCOUNT](e,n){m(e,n)},[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((n=>{204===n.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).finally((()=>e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)))},[d.YN.ACTIONS.SEND_PASSWORD_RESET_REQUEST](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/reset-request",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/account/resend-confirmation",n).then((n=>{"success"===n.data.status?u.Z.push("/account-confirmation/email-sent"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.RESET_USER_PASSWORD](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),c.post("auth/password/update",n).then((n=>{"success"===n.data.status?u.Z.push("/password-reset/password-updated"):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.ACCEPT_PRIVACY_POLICY](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/privacy-policy",{accepted_policy:n}).then((n=>{"success"===n.data.status?e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE).then((()=>u.Z.push("/profile"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("auth/account/export/request").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.YN.ACTIONS.GET_REQUEST_DATA_EXPORT](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("auth/account/export").then((n=>{"success"===n.data.status?e.commit(d.YN.MUTATIONS.SET_EXPORT_REQUEST,n.data.request):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},T={[d.YN.GETTERS.AUTH_TOKEN]:e=>e.authToken,[d.YN.GETTERS.AUTH_USER_PROFILE]:e=>e.authUserProfile,[d.YN.GETTERS.EXPORT_REQUEST]:e=>e.exportRequest,[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,n){e.authToken=n},[d.YN.MUTATIONS.UPDATE_AUTH_USER_PROFILE](e,n){e.authUserProfile=n},[d.YN.MUTATIONS.UPDATE_IS_REGISTRATION_SUCCESS](e,n){e.isRegistrationSuccess=n},[d.YN.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n},[d.YN.MUTATIONS.UPDATE_USER_LOADING](e,n){e.loading=n},[d.YN.MUTATIONS.SET_EXPORT_REQUEST](e,n){e.exportRequest=n}},A={authToken:null,authUserProfile:{},isSuccess:!1,isRegistrationSuccess:!1,loading:!1,exportRequest:null},O={state:A,actions:S,getters:T,mutations:p};var z=O;const I=(e,n)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(n).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},R={[d.Km.ACTIONS.AUTHORIZE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES);const t=new FormData;t.set("client_id",n.client_id),t.set("response_type",n.response_type),t.set("scope",n.scope),t.set("confirm","true"),n.state&&t.set("state",n.state),n.code_challenge&&t.set("code_challenge",n.code_challenge),n.code_challenge_method&&t.set("code_challenge_method",n.code_challenge_method),a.Z.post("oauth/authorize",t,{headers:{"Content-Type":"multipart/form-data"}}).then((n=>{200==n.status&&n.data.redirect_url?window.location.href=n.data.redirect_url:(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.CREATE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.post("oauth/apps",n).then((n=>{"created"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENT,n.data.data.client),u.Z.push(`/profile/apps/${n.data.data.client.id}/created`)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.DELETE_CLIENT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z["delete"](`oauth/apps/${n}`).then((n=>{204===n.status?e.dispatch(d.Km.ACTIONS.GET_CLIENTS).then((()=>u.Z.push("/profile/apps"))):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.GET_CLIENT_BY_CLIENT_ID](e,n){I(e,`oauth/apps/${n}`)},[d.Km.ACTIONS.GET_CLIENT_BY_ID](e,n){I(e,`oauth/apps/${n}/by_id`)},[d.Km.ACTIONS.GET_CLIENTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("oauth/apps",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.Km.MUTATIONS.SET_CLIENTS,n.data.data.clients),e.commit(d.Km.MUTATIONS.SET_CLIENTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.Km.ACTIONS.REVOKE_ALL_TOKENS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!1),a.Z.post(`oauth/apps/${n}/revoke`).then((n=>{"success"===n.data.status?e.commit(d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL,!0):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},g={[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},N={[d.Km.MUTATIONS.SET_CLIENT](e,n){e.client=n},[d.Km.MUTATIONS.EMPTY_CLIENT](e){e.client={}},[d.Km.MUTATIONS.SET_CLIENTS](e,n){e.clients=n},[d.Km.MUTATIONS.SET_CLIENTS_PAGINATION](e,n){e.pagination=n},[d.Km.MUTATIONS.SET_REVOCATION_SUCCESSFUL](e,n){e.revocationSuccessful=n}},U={client:{},clients:[],pagination:{},revocationSuccessful:!1},h={state:U,actions:R,getters:g,mutations:N};var v=h,C=t(2540);const{locale:w}=C.Z.global,D={[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((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n))).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((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_STATS,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.GET_APPLICATION_PRIVACY_POLICY](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("config").then((n=>{"success"===n.data.status?e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,n.data.data):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_CONFIG](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch("config",n).then((n=>{"success"===n.data.status?(e.commit(d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG,n.data.data),u.Z.push("/admin/application")):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.SY.ACTIONS.UPDATE_APPLICATION_LANGUAGE](e,n){document.querySelector("html")?.setAttribute("lang",n),e.commit(d.SY.MUTATIONS.UPDATE_LANG,n),w.value=n}},f={[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 P=t(6287);const k={[d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES](e){e.errorMessages=null},[d.SY.MUTATIONS.SET_ERROR_MESSAGES](e,n){e.errorMessages=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_CONFIG](e,n){e.application.config=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_LOADING](e,n){e.appLoading=n},[d.SY.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY](e,n){e.application.config.privacy_policy=n.privacy_policy,e.application.config.privacy_policy_date=n.privacy_policy_date},[d.SY.MUTATIONS.UPDATE_APPLICATION_STATS](e,n){e.application.statistics=n},[d.SY.MUTATIONS.UPDATE_LANG](e,n){e.language=n,e.locale=P.v1[n]}};var L=t(5826);const b={root:!0,language:"en",locale:L.Z,errorMessages:null,application:{statistics:{sports:0,uploads_dir_size:0,users:0,workouts:0}},appLoading:!1},M={[d.O8.ACTIONS.GET_SPORTS](e){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("sports").then((n=>{"success"===n.data.status?(e.commit(d.O8.MUTATIONS.SET_SPORTS,n.data.data.sports),e.commit(d.YN.MUTATIONS.UPDATE_USER_LOADING,!1)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},[d.O8.ACTIONS.UPDATE_SPORTS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.patch(`sports/${n.id}`,{is_active:n.isActive}).then((n=>{"success"===n.data.status?e.dispatch(d.O8.ACTIONS.GET_SPORTS):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},y={[d.O8.GETTERS.SPORTS]:e=>e.sports},G={[d.O8.MUTATIONS.SET_SPORTS](e,n){e.sports=n}},F={sports:[]},W={state:F,actions:M,getters:y,mutations:G};var Y=W;const B={[d.gu.ACTIONS.GET_USER_STATS](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get(`stats/${n.username}/${n.filterType}`,{params:n.params}).then((n=>{"success"===n.data.status?e.commit(d.gu.MUTATIONS.UPDATE_USER_STATS,n.data.data.statistics):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))}},x={[d.gu.GETTERS.USER_STATS]:e=>e.statistics},K={[d.gu.MUTATIONS.UPDATE_USER_STATS](e,n){e.statistics=n},[d.gu.MUTATIONS.EMPTY_USER_STATS](e){e.statistics={}}},H={statistics:{}},$={state:H,actions:B,getters:x,mutations:K};var 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,n){e.user=n},[d.RT.MUTATIONS.UPDATE_USER_IN_USERS](e,n){e.users=e.users.map((e=>e.username===n.username?n:e))},[d.RT.MUTATIONS.UPDATE_USERS](e,n){e.users=n},[d.RT.MUTATIONS.UPDATE_USERS_LOADING](e,n){e.loading=n},[d.RT.MUTATIONS.UPDATE_USERS_PAGINATION](e,n){e.pagination=n},[d.RT.MUTATIONS.UPDATE_IS_SUCCESS](e,n){e.isSuccess=n}},j={user:{},users:[],loading:!1,isSuccess:!1,pagination:{}},X={state:j,actions:E,getters:V,mutations:q};var Q=X,J=t(52);const ee=(e,n,t)=>{e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),a.Z.get("workouts",{params:n}).then((n=>{"success"===n.data.status?(e.commit(d.aX.MUTATIONS[t],n.data.data.workouts),t===J.CW.SET_USER_WORKOUTS&&e.commit(d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION,n.data.pagination)):(0,s.S)(e,null)})).catch((n=>(0,s.S)(e,n)))},ne={[d.aX.ACTIONS.GET_CALENDAR_WORKOUTS](e,n){e.commit(d.aX.MUTATIONS.EMPTY_CALENDAR_WORKOUTS),ee(e,n,J.CW.SET_CALENDAR_WORKOUTS)},[d.aX.ACTIONS.GET_USER_WORKOUTS](e,n){ee(e,n,J.CW.SET_USER_WORKOUTS)},[d.aX.ACTIONS.GET_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.SET_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](e,n){ee(e,n,J.CW.ADD_TIMELINE_WORKOUTS)},[d.aX.ACTIONS.GET_WORKOUT_DATA](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0);const t=n.segmentId?`/segment/${n.segmentId}`:"";a.Z.get(`workouts/${n.workoutId}`).then((r=>{const o=r.data.data.workouts[0];if("success"===r.data.status){if(n.segmentId&&(0===o.segments.length||!o.segments[+n.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/${n.workoutId}/chart_data${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA,n.data.data.chart_data)})),a.Z.get(`workouts/${n.workoutId}/gpx${t}`).then((n=>{"success"===n.data.status&&e.commit(d.aX.MUTATIONS.SET_WORKOUT_GPX,n.data.data.gpx)})))}else e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,null)})).catch((n=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.DELETE_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z["delete"](`workouts/${n.workoutId}`).then((()=>{e.commit(d.aX.MUTATIONS.EMPTY_WORKOUT),e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),u.Z.push("/")})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.EDIT_WORKOUT](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.patch(`workouts/${n.workoutId}`,n.data).then((()=>{e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE),e.dispatch(d.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:n.workoutId}).then((()=>{u.Z.push({name:"Workout",params:{workoutId:n.workoutId}})}))})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT](e,n){if(e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),!n.file)throw new Error("No file part");const t=n.notes.replace(/"/g,'\\"'),r=new FormData;r.append("file",n.file),r.append("data",`{"sport_id": ${n.sport_id}, "notes": "${t}"}`),a.Z.post("workouts",r,{headers:{"content-type":"multipart/form-data"}}).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(1===n.data.data.workouts.length?`/workouts/${t.id}`:"/")}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))},[d.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](e,n){e.commit(d.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!0),a.Z.post("workouts/no_gpx",n).then((n=>{if("created"===n.data.status){e.dispatch(d.YN.ACTIONS.GET_USER_PROFILE);const t=n.data.data.workouts[0];u.Z.push(`/workouts/${t.id}`)}})).catch((n=>{(0,s.S)(e,n)})).finally((()=>e.commit(d.aX.MUTATIONS.SET_WORKOUT_LOADING,!1)))}},te={[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,n){e.timeline_workouts=e.timeline_workouts.concat(n)},[d.aX.MUTATIONS.SET_CALENDAR_WORKOUTS](e,n){e.calendar_workouts=n},[d.aX.MUTATIONS.SET_TIMELINE_WORKOUTS](e,n){e.timeline_workouts=n},[d.aX.MUTATIONS.SET_USER_WORKOUTS](e,n){e.user_workouts=n},[d.aX.MUTATIONS.SET_WORKOUTS_PAGINATION](e,n){e.pagination=n},[d.aX.MUTATIONS.SET_WORKOUT](e,n){e.workoutData.workout=n},[d.aX.MUTATIONS.SET_WORKOUT_CHART_DATA](e,n){e.workoutData.chartData=n},[d.aX.MUTATIONS.SET_WORKOUT_GPX](e,n){e.workoutData.gpx=n},[d.aX.MUTATIONS.SET_WORKOUT_LOADING](e,n){e.workoutData.loading=n},[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:ne,getters:te,mutations:re};var ie=oe;const se={authUserModule:z,oAuthModule:v,sportsModule:Y,statsModule:Z,usersModule:Q,workoutsModule:ie},le={state:b,actions:D,getters:f,mutations:k,modules:se};var ce=le;const ue=(0,r.MT)(ce);var de=ue},52:function(e,n,t){"use strict";var r,a,o;t.d(n,{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,n,t){"use strict";t.d(n,{o:function(){return a}});var r=t(3907);function a(){return(0,r.oR)()}},2766:function(e,n,t){"use strict";t.d(n,{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,n)=>e&&"string"===typeof e&&+e>0?+e:n,s=(e,n,t)=>e&&"string"===typeof e&&n.includes(e)?e:t,l=(e,n,t,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,n,t),"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,n=1)=>Array.from({length:e-n+1},((e,t)=>n+t)),d=(e,n)=>{if(e<0)return[];if(e<9)return u(e);let t=[1,2];return n<4?t=t.concat([3,4,5]):n<6?t=t.concat(u(n+2,3)):(t=t.concat(["..."]),n=e-2&&t[t.length-1]{switch(e){case"week":return(0,r.Z)(n,{weekStartsOn:t?1:0});case"year":return(0,a.Z)(n);case"month":return(0,o.Z)(n);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},p=(e,n)=>{switch(e){case"week":return(0,i.Z)(n,7);case"year":return(0,s.Z)(n,1);case"month":return(0,l.Z)(n,1);default:throw new Error(`Invalid duration, expected: "week", "month", "year", got: "${e}"`)}},A=(e,n)=>(0,m.Z)(new Date(e),n),O=(e,n)=>{const t=(0,o.Z)(e),a=(0,c.Z)(e),i=n?1:0;return{start:(0,r.Z)(t,{weekStartsOn:i}),end:(0,u.Z)(a,{weekStartsOn:i})}},z=(e,n=null,t=null)=>(n||(n="yyyy/MM/dd"),n=g(n,S.value),t||(t="HH:mm"),{workout_date:(0,d.Z)(e,n,{locale:_.v1[S.value]}),workout_time:(0,d.Z)(e,t)}),I=["MM/dd/yyyy","dd/MM/yyyy","yyyy-MM-dd","date_string"],R={de:"do MMM yyyy",en:"MMM. do, yyyy",fr:"d MMM yyyy",it:"d MMM yyyy",nl:"d MMM yyyy"},g=(e,n)=>"date_string"===e?R[n]:e,N=(e,n,t,r=!0,a=null,o=!1)=>{a||(a=S.value);const i=r?o?" HH:mm:ss":" HH:mm":"";return(0,d.Z)(A(e,n),`${g(t,a)}${i}`,{locale:_.v1[a]})},U=(e,n,t=null)=>{const r=t||S.value,a=[];return I.map((t=>{const o=g(t,r);a.push({label:`${o} - ${N(e,n,o,!1,r)}`,value:t})})),a}},8966:function(e,n,t){"use strict";t.d(n,{Z:function(){return a},j:function(){return o}});const r=["bytes","KB","MB","GB","TB"],a=(e,n=!0)=>{const t=Math.floor(Math.log(e)/Math.log(1024));if(!e)return n?"0 bytes":{size:"0",suffix:"bytes"};const a=(e/Math.pow(1024,t)).toFixed(1),o=r[t];return n?`${a}${o}`:{size:a,suffix:o}},o=e=>{const n=e/1048576;return+n.toFixed(2)}},2024:function(e,n,t){"use strict";t.d(n,{S:function(){return o},k:function(){return a}});var r=t(5801);const a=()=>"/api/",o=(e,n,t="UNKNOWN")=>{if(n&&"canceled"===n.message)return;const a=n?.response&&n.response.data?n.response.data:null;if(401===n?.response?.status&&"invalid_token"===a?.error)return localStorage.removeItem("authToken"),void e.dispatch(r.YN.ACTIONS.CHECK_AUTH_USER);const o=n?n.response?413===n.response.status?"file size is greater than the allowed size":a?.message?a.message:t:n.message?n.message:t:t;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}`)}},2335:function(e,n,t){"use strict";t.d(n,{O:function(){return i}});var r=t(9597),a=t(1036),o=t.n(a);const i=e=>o()((0,r.Z)(e,{target:"_blank"}),{allowedTags:["a"],disallowedTagsMode:"escape"})},6287:function(e,n,t){"use strict";t.d(n,{mT:function(){return m},v1:function(){return c},zK:function(){return u}});var r=t(879),a=t(5826),o=t(5830),i=t(8160),s=t(4638),l=t(2540);const c={de:r.Z,en:a.Z,fr:o.Z,it:i.Z,nl:s.Z},u={de:"Deutsch",en:"English",fr:"Français",it:"Italiano",nl:"Nederlands"},{availableLocales:d}=l.Z.global,m=d.map((e=>({label:u[e],value:e})))},631:function(e,n,t){"use strict";t.d(n,{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",Mountaineering:"#48b3b7",Rowing:"#fcce72",Running:"#835b83","Skiing (Alpine)":"#67a4bd","Skiing (Cross Country)":"#9498d0",Snowshoes:"#5780a8",Trail:"#09a98a",Walking:"#838383"},a=e=>{const n={};return e.map((e=>n[e.id]=e.color?e.color:r[e.label])),n},o=(e,n)=>{const t=e.translatedLabel.toLowerCase(),r=n.translatedLabel.toLowerCase();return t>r?1:te.filter((e=>"all"===t||(r.includes(e.id)||e[t]))).map((e=>({...e,translatedLabel:n(`sports.${e.label}.LABEL`)}))).sort(o),s=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.label))[0],l=(e,n)=>n.filter((n=>n.id===e.sport_id)).map((e=>e.color))[0]},9318:function(e,n,t){"use strict";t.d(n,{FN:function(){return D},aZ:function(){return w},v1:function(){return C}});t(7658);var r=t(6761),a=t(8148),o=t(9319),i=t(584),s=t(4559),l=t(3703),c=t(876),u=t(7090),d=t(4135),m=t(1593),E=t(7982),_=t(3500),S=t(1640),T=t(2540),p=t(6558),A=t(6287),O=t(631),z=t(3649);const{locale:I}=T.Z.global,R={week:{api:"yyyy-MM-dd",chart:"MM/dd/yyyy"},month:{api:"yyyy-MM",chart:"MM/yyyy"},year:{api:"yyyy",chart:"yyyy"}},g=["average_speed","nb_workouts","total_duration","total_distance","total_ascent","total_descent"],N=(e,n)=>{const t=[];for(let r=(0,p.Nh)(e.duration,e.start,n);r<=e.end;r=(0,p.xA)(e.duration,r))t.push(r);return t},U=(e,n,t=!1)=>{const r={label:e,backgroundColor:[n],data:[]};return t&&(r.type="line",r.borderColor=[n],r.spanGaps=!0),r},h=e=>{const n={average_speed:[],nb_workouts:[],total_distance:[],total_duration:[],total_ascent:[],total_descent:[]};return e.map((e=>{const t=e.color?e.color:O.Zo[e.label];n.average_speed.push(U(e.label,t,!0)),n.nb_workouts.push(U(e.label,t)),n.total_distance.push(U(e.label,t)),n.total_duration.push(U(e.label,t)),n.total_ascent.push(U(e.label,t)),n.total_descent.push(U(e.label,t))})),n},v=(e,n,t)=>{switch(e){case"average_speed":case"total_distance":case"total_ascent":case"total_descent":return(0,z.f3)(["average_speed","total_distance"].includes(e)?"km":"m",n,t);default:case"nb_workouts":case"total_duration":return n}},C=(e,n,t,a,o,i,s)=>{const l=N(e,n),c=R[e.duration],u=t.filter((e=>a.includes(e.id))),d=[],m=h(u),E={};return u.map((e=>E[e.label]=e.id)),l.map((n=>{const t=(0,r.Z)(n,c.api),a=(0,r.Z)(n,"week"===e.duration?(0,p.mh)(s,I.value):c.chart,{locale:A.v1[I.value]});d.push(a),g.map((e=>{m[e].map((n=>{n.data.push(t in o&&E[n.label]in o[t]?v(e,o[t][E[n.label]][e],i):"average_speed"===e?null:0)}))}))})),{labels:d,datasets:m}},w=(e,n,t)=>{const r=t?1:0,m="year"===n?(0,a.Z)((0,o.Z)(e,9)):"week"===n?(0,i.Z)((0,s.Z)(e,2),{weekStartsOn:r}):(0,l.Z)((0,s.Z)(e,11)),E="year"===n?(0,c.Z)(e):"week"===n?(0,u.Z)(e,{weekStartsOn:r}):(0,d.Z)(e);return{duration:n,end:E,start:m}},D=(e,n,t)=>{const{duration:r,start:T,end:p}=e,A=t?1:0;return{duration:r,end:"year"===r?(0,c.Z)(n?(0,o.Z)(p,1):(0,m.Z)(p,1)):"week"===r?(0,u.Z)(n?(0,E.Z)(p,1):(0,_.Z)(p,1),{weekStartsOn:A}):(0,d.Z)(n?(0,s.Z)(p,1):(0,S.Z)(p,1)),start:"year"===r?(0,a.Z)(n?(0,o.Z)(T,1):(0,m.Z)(T,1)):"week"===r?(0,i.Z)(n?(0,E.Z)(T,1):(0,_.Z)(T,1),{weekStartsOn:A}):(0,l.Z)(n?(0,s.Z)(T,1):(0,S.Z)(T,1))}}},3649:function(e,n,t){"use strict";t.d(n,{Dl:function(){return r},Y2:function(){return l},f3:function(){return i},sC:function(){return o},x$:function(){return s}});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,n,t,o=3)=>{const i=r[n],s=r[t],l=e*i.multiplier*a[i.system][s.system]/s.multiplier;return null!==o?parseFloat(l.toFixed(o)):l},i=(e,n,t)=>{const a=t?r[e].defaultTarget:e;return t?o(n,e,a,2):n},s=(e,n)=>{const t=n?1.8*e+32:e,r=n?" °F":"°C";return`${0===t?0:Number(t).toFixed(1)}${r}`},l=(e,n)=>{const t=n?2.2369363*e:e,r=n?" mph":"m/s";return`${0===t?0:Number(t).toFixed(1)}${r}`}},3768:function(e,n,t){"use strict";t.d(n,{BN:function(){return o},EX:function(){return a},eR:function(){return i}});t(7658);var r=t(3649);const a=(e,n,t)=>{const a={speed:{label:n("workouts.SPEED"),backgroundColor:["#FFFFFF"],borderColor:["#8884d8"],borderWidth:2,data:[],yAxisID:"ySpeed"},elevation:{label:n("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,t)),a.elevation.data.push((0,r.f3)("m",e.elevation,t)),s.push({latitude:e.latitude,longitude:e.longitude})})),{distance_labels:o,duration_labels:i,datasets:a,coordinates:s}},o=e=>{const n=e.length;if(0===n)return{};const t={};return e.map((e=>{t[e.sport_id]||(t[e.sport_id]={count:0,percentage:0}),t[e.sport_id].count+=1,t[e.sport_id].percentage=t[e.sport_id].count/n})),t},i={order:"desc",order_by:"workout_date"}},2531:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(6252);const a={class:"card"},o={class:"card-title"},i={class:"card-content"};function s(e,n){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=t(3744);const c={},u=(0,l.Z)(c,[["render",s]]);var d=u},8626:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(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:n}){const t=e,{order_by:E,query:_,sort:S,message:T}=(0,o.BK)(t),p=[10,25,50,100];function A(e){n("updateSelect",e.target.id,e.target.value)}return(e,n)=>((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),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`${(0,o.SU)(T)}.${n.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),(n=>((0,r.wg)(),(0,r.iD)("option",{value:n,key:n},(0,a.zw)(e.$t(`common.SELECTS.ORDER.${n.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)])]))}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-72463173"]]);var T=S},7167:function(e,n,t){"use strict";t.d(n,{Z:function(){return d}});var r=t(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,n,t,o,s,l){return(0,r.wg)(),(0,r.iD)("svg",a,i)}var l={name:"ErrorImg"},c=t(3744);const u=(0,c.Z)(l,[["render",s]]);var d=u},8273:function(e,n,t){"use strict";t.d(n,{Z:function(){return _}});var r=t(6252),a=t(2262),o=(t(7658),t(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 n=e,{buttonText:t,title:l,message:c,path:u}=(0,a.BK)(n);return(e,n)=>((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)(t)?((0,r.wg)(),(0,r.iD)("button",{key:0,onClick:n[0]||(n[0]=n=>e.$router.push((0,a.SU)(u))),class:"upper"},(0,o.zw)((0,a.SU)(t)),1)):(0,r.kq)("",!0)])]))}}),c=t(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 n=e,{target:t}=(0,a.BK)(n),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,n)=>i.value?((0,r.wg)(),(0,r.j4)(d,{key:0,title:"404",message:e.$t(`error.NOT_FOUND.${(0,a.SU)(t)}`),"button-text":e.$t("common.HOME")},null,8,["message","button-text"])):(0,r.kq)("",!0)}});const E=m;var _=E},5020:function(e,n,t){"use strict";t.d(n,{Z:function(){return T}});var r=t(6252),a=t(3577),o=t(2262),i=t(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 n=e,{pagination:t,path:s,query:E}=(0,o.BK)(n);function _(e,n){const t=Object.assign({},E.value);return t.page=n?e+n:e,t}return(e,n)=>{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)(t).has_prev}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,-1)},disabled:!(0,o.SU)(t).has_prev},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n: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)(t).pages,(0,o.SU)(t).page),(e=>((0,r.wg)(),(0,r.iD)("li",{key:e,class:(0,a.C_)(["page",{active:e===(0,o.SU)(t).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)(t).has_next}])},[(0,r.Wm)(E,{class:"page-link",to:{path:(0,o.SU)(s),query:_((0,o.SU)(t).page,1)},disabled:!(0,o.SU)(t).has_next},{default:(0,r.w5)((({navigate:n})=>[(0,r.WI)(e.$slots,"default",{onClick:e=>(0,o.SU)(t).has_next?n:null},(()=>[(0,r.Uk)((0,a.zw)(e.$t("api.PAGINATION.NEXT"))+" ",1),m]))])),_:3},8,["to","disabled"])],2)])])}}}),_=t(3744);const S=(0,_.Z)(E,[["__scopeId","data-v-3a9a4a65"]]);var T=S},8403:function(e,n,t){"use strict";t.d(n,{Z:function(){return D}});var r=t(6252),a=t(2262),o=t(9963),i=t(3577),s=t(1423),l=t(5801),c=t(9917);const u=async e=>{switch(e){case"fr":return await t.e(222).then(t.bind(t,6947));case"de":return await t.e(940).then(t.bind(t,8056));case"it":return await t.e(802).then(t.bind(t,3140));default:return await t.e(261).then(t.bind(t,8288))}},d=async e=>{const n=await t.e(881).then(t.bind(t,410)),r=await u(e),a={graphs:n.default.adjacencyGraphs,dictionary:{...n.default.dictionary,...r.default.dictionary}};s.Mu.setOptions(a)},m=e=>{switch(e){case 2:return"AVERAGE";case 3:return"GOOD";case 4:return"STRONG";default:return"WEAK"}},E={class:"password-strength"},_=["value"],S={key:0,class:"password-strength-details"},T={class:"password-strength-value"},p={key:0,class:"info-box"},A={class:"password-feedback"};var O=(0,r.aZ)({__name:"PasswordStength",props:{password:null},setup(e){const n=e,{password:t}=(0,a.BK)(n),o=(0,c.o)(),u=(0,r.Fl)((()=>o.getters[l.SY.GETTERS.LANGUAGE])),O=(0,r.Fl)((()=>o.getters[l.YN.GETTERS.IS_SUCCESS])),z=(0,a.iH)(0),I=(0,a.iH)(""),R=(0,a.iH)([]),g=(0,a.iH)("0% 100%");function N(e){const n=(0,s.tu)(e);z.value=n.score,I.value=m(z.value),R.value=n.feedback.suggestions,g.value=100*z.value/4+"% 100%"}return(0,r.wF)((async()=>await d(u.value))),(0,r.YP)((()=>u.value),(async e=>{await d(e)})),(0,r.YP)((()=>t.value),(async e=>{O.value?I.value="":N(e)})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",E,[(0,r._)("input",{class:(0,i.C_)(["password-slider",`strength-${z.value}`]),style:(0,i.j5)({backgroundSize:g.value}),type:"range",value:z.value,min:"0",max:"4",step:"1"},null,14,_),I.value?((0,r.wg)(),(0,r.iD)("div",S,[(0,r._)("span",T,(0,i.zw)(e.$t("user.PASSWORD_STRENGTH.LABEL"))+": "+(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.${I.value}`)),1),R.value.length>0?((0,r.wg)(),(0,r.iD)("div",p,[(0,r._)("ul",A,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(R.value,(n=>((0,r.wg)(),(0,r.iD)("li",{key:n},(0,i.zw)(e.$t(`user.PASSWORD_STRENGTH.SUGGESTIONS.${n}`)),1)))),128))])])):(0,r.kq)("",!0)])):(0,r.kq)("",!0)]))}}),z=t(3744);const I=(0,z.Z)(O,[["__scopeId","data-v-74e71df5"]]);var R=I;const g=e=>((0,r.dD)("data-v-5a126514"),e=e(),(0,r.Cn)(),e),N={class:"password-input"},U=["id","disabled","placeholder","required","type"],h={key:0,class:"form-info"},v=g((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)));var C=(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:n}){const t=e,{checkStrength:s,disabled:l,id:c,password:u,placeholder:d,required:m}=(0,a.BK)(t),E=(0,a.iH)(!1),_=(0,a.iH)("");function S(){E.value=!E.value}function T(e){n("updatePassword",e.target.value)}function p(){n("passwordError")}return(0,r.YP)((()=>u.value),(e=>{""===e&&(_.value="")})),(e,n)=>((0,r.wg)(),(0,r.iD)("div",N,[(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":n[0]||(n[0]=e=>_.value=e),minlength:"8",onInput:T,onInvalid:p},null,40,U),[[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",h,[v,(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 w=(0,z.Z)(C,[["__scopeId","data-v-5a126514"]]);var D=w},2056:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577),o=t(2262),i=t(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 n=e,{displayHover:t}=(0,o.BK)(n),l=`${(0,i.k)()}workouts/map/${n.workout.map}`;return(e,n)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,a.C_)(["static-map",{"display-hover":(0,o.SU)(t)}])},[(0,o.SU)(t)?((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,n,t){"use strict";t.d(n,{Z:function(){return y}});var r=t(6252),a=t(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,n,t,A,O,z){const I=(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:n[0]||(n[0]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[1]||(n[1]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[2]||(n[2]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[3]||(n[3]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[4]||(n[4]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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:n[5]||(n[5]=(...n)=>e.updateDisplayData&&e.updateDisplayData(...n))},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)(I,{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=t(6761),z=t(2262);const I={class:"chart"};function R(e,n,t,a,o,i){const s=(0,r.up)("BarChart");return(0,r.wg)(),(0,r.iD)("div",I,[(0,r.Wm)(s,(0,r.dG)(e.barChartProps,{class:"bar-chart"}),null,16)])}var g=t(6518),N=t(9150);const U=(e,n=!1)=>{let t="0";n&&(t=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 n?`${"0"===t?"":`${t}d `}${"00"===r?"":`${r}h `}${a}m ${o}s`:`${"00"===r?"":`${r}:`}${a}:${o}`};var h=t(3649);const v=(e,n,t,r=!0,a="km")=>{const o=t?h.Dl[a].defaultTarget:a;switch(e){case"average_speed":return`${n.toFixed(2)} ${o}/h`;case"total_duration":return U(n,r);case"total_distance":case"total_ascent":case"total_descent":return`${n.toFixed(2)} ${o}`;default:return n.toString()}};var C=(0,r.aZ)({name:"Chart",components:{BarChart:g.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:n}=(0,N.QT)();function t(e){return isNaN(e)?0:+e}function a(e,n){return t(e)+t(n)}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(n){return v(e.displayedData,+n,e.useImperialUnits,!1,o(e.displayedData))}},afterFit:function(n){n.width=e.fullStats?90:60}}},plugins:{datalabels:{anchor:"end",align:"end",color:function(n){return"average_speed"===e.displayedData&&n.dataset.backgroundColor?n.dataset.backgroundColor[0]:"#666666"},rotation:function(n){return e.fullStats&&n.chart.chartArea.width<580?310:0},display:function(n){return!(e.fullStats&&n.chart.chartArea.width<300)&&("average_speed"!==e.displayedData||1==e.displayedSportIds.length&&"auto")},formatter:function(n,t){if("average_speed"===e.displayedData)return v(e.displayedData,n,e.useImperialUnits,!1);{const n=t.chart.data.datasets.map((e=>e.data[t.dataIndex])).reduce(((e,n)=>a(e,n)),0);return t.datasetIndex===e.displayedSportIds.length-1&&n>0?v(e.displayedData,n,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(t){let r=n(`sports.${t.dataset.label}.LABEL`)||"";return r&&(r+=": "),null!==t.parsed.y&&(r+=v(e.displayedData,t.parsed.y,e.useImperialUnits,!0,o(e.displayedData))),r},footer:function(t){if("average_speed"===e.displayedData)return"";let r=0;return t.map((e=>{r+=e.parsed.y})),`${n("common.TOTAL")}: `+v(e.displayedData,r,e.useImperialUnits,!0,o(e.displayedData))}}}}}))),{barChartProps:l}=(0,g.xZ)({chartData:i,options:s});return{barChartProps:l}}}),w=t(3744);const D=(0,w.Z)(C,[["render",R]]);var f=D,P=t(5801),k=t(9917),L=t(9318),b=(0,r.aZ)({name:"UserMonthStats",components:{Chart:f},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 n=(0,k.o)(),t=(0,z.iH)("total_distance"),a=(0,r.Fl)((()=>n.getters[P.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(t){n.dispatch(P.gu.ACTIONS.GET_USER_STATS,{username:e.user.username,filterType:"by_time",params:t})}function s(e){t.value=e.target.name}function l(e,n){return{from:(0,O.Z)(e.start,"yyyy-MM-dd"),to:(0,O.Z)(e.end,"yyyy-MM-dd"),time:"week"===e.duration?"week"+(n.weekm?"m":""):e.duration}}return(0,r.wF)((()=>i(l(e.chartParams,e.user)))),(0,r.YP)((()=>e.chartParams),(async n=>{i(l(n,e.user))})),{datasets:(0,r.Fl)((()=>o.value.datasets[t.value])),labels:(0,r.Fl)((()=>o.value.labels)),emptyStats:(0,r.Fl)((()=>0===Object.keys(a.value).length)),displayedData:t,updateDisplayData:s}}});const M=(0,w.Z)(b,[["render",A],["__scopeId","data-v-d5e9b348"]]);var y=M},2179:function(e,n,t){"use strict";t.d(n,{Z:function(){return N}});var r=t(6252),a=t(2262),o=t(3577),i=t(6595),s=t(5801),l=t(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"},z={class:"stat-label"};var I=(0,r.aZ)({__name:"UserHeader",props:{user:null},setup(e){const n=e,{user:t}=(0,a.BK)(n),I=(0,l.o)(),R=(0,r.Fl)((()=>I.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,n)=>{const s=(0,r.up)("Distance");return(0,r.wg)(),(0,r.iD)("div",c,[(0,r.Wm)(i.Z,{user:(0,a.SU)(t)},null,8,["user"]),(0,r._)("div",u,[(0,r._)("div",d,(0,o.zw)((0,a.SU)(t).username),1),(0,r._)("div",m,[(0,r._)("div",E,[(0,r._)("span",_,(0,o.zw)((0,a.SU)(t).nb_workouts),1),(0,r._)("span",S,(0,o.zw)(e.$t("workouts.WORKOUT",(0,a.SU)(t).nb_workouts)),1)]),(0,r._)("div",T,[(0,r.Wm)(s,{distance:(0,a.SU)(t).total_distance,unitFrom:"km",digits:0,displayUnit:!1,useImperialUnits:(0,a.SU)(R).imperial_units},null,8,["distance","useImperialUnits"]),(0,r._)("span",p,(0,o.zw)((0,a.SU)(R).imperial_units?"miles":"km"),1)]),(0,r._)("div",A,[(0,r._)("span",O,(0,o.zw)((0,a.SU)(t).nb_sports),1),(0,r._)("span",z,(0,o.zw)(e.$t("workouts.SPORT",(0,a.SU)(t).nb_sports)),1)])])])])}}}),R=t(3744);const g=(0,R.Z)(I,[["__scopeId","data-v-20291951"]]);var N=g},1585:function(e,n,t){"use strict";t.d(n,{Z:function(){return C}});t(7658);var r=t(6252),a=t(2262),o=t(3577),i=t(9963),s=t(6761),l=t(5801),c=t(9917),u=t(6558),d=t(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"],z={key:5},I={class:"user-bio"},R={key:0,class:"profile-buttons"},g=["onClick"],N={key:1,class:"profile-buttons"};var U=(0,r.aZ)({__name:"UserInfos",props:{user:null,fromAdmin:{type:Boolean,default:!1}},setup(e){const n=e,t=(0,c.o)(),{user:U,fromAdmin:h}=(0,a.BK)(n),v=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.LANGUAGE])),C=(0,r.Fl)((()=>t.getters[l.YN.GETTERS.AUTH_USER_PROFILE])),w=(0,r.Fl)((()=>n.user.created_at?(0,u.p6)(n.user.created_at,C.value.timezone,C.value.date_format):"")),D=(0,r.Fl)((()=>n.user.birth_date?(0,s.Z)(new Date(n.user.birth_date),`${(0,u.mh)(C.value.date_format,v.value)}`,{locale:d.v1[v.value]}):"")),f=(0,r.Fl)((()=>t.getters[l.RT.GETTERS.USERS_IS_SUCCESS])),P=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>t.getters[l.SY.GETTERS.APP_CONFIG])),L=(0,a.iH)(""),b=(0,a.iH)(!1),M=(0,a.iH)(!1),y=(0,a.iH)(""),G=(0,a.iH)("");function F(e){L.value=e,""!==e&&t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1)}function W(e){t.dispatch(l.RT.ACTIONS.DELETE_USER_ACCOUNT,{username:e})}function Y(e){G.value="password-reset",t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,resetPassword:!0})}function B(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,activate:!0})}function x(){$(),y.value=U.value.email_to_confirm?U.value.email_to_confirm:"",M.value=!0,G.value="email-update"}function K(){y.value="",M.value=!1}function H(e){t.dispatch(l.RT.ACTIONS.UPDATE_USER,{username:e,new_email:y.value})}function $(){t.commit(l.SY.MUTATIONS.EMPTY_ERROR_MESSAGES),t.commit(l.RT.MUTATIONS.UPDATE_IS_SUCCESS,!1),G.value=""}return(0,r.Ah)((()=>$())),(0,r.YP)((()=>f.value),(e=>{e&&(F(""),K())})),(e,n)=>{const t=(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)(t,{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)(U).username,onConfirmAction:n[0]||(n[0]=e=>"delete"===L.value?W((0,a.SU)(U).username):Y((0,a.SU)(U).username)),onCancelAction:n[1]||(n[1]=e=>F(""))},null,8,["title","message","strongMessage"])):(0,r.kq)("",!0),(0,a.SU)(f)?((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)(U).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)(P)?((0,r.wg)(),(0,r.j4)(l,{key:3,message:(0,a.SU)(P)},null,8,["message"])):(0,r.kq)("",!0),M.value?((0,r.wg)(),(0,r.iD)("div",_,[(0,r._)("form",{class:(0,o.C_)({errors:b.value}),onSubmit:n[4]||(n[4]=(0,i.iM)((e=>H((0,a.SU)(U).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":n[2]||(n[2]=e=>(0,a.SU)(U).email=e),disabled:""},null,512),[[i.nr,(0,a.SU)(U).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":n[3]||(n[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)(K,["prevent"])},(0,o.zw)(e.$t("buttons.CANCEL")),9,O)])],34)])):((0,r.wg)(),(0,r.iD)("div",z,[(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)(w)),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)(U).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)(U).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)(D)),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.LOCATION"))+":",1),(0,r._)("dd",null,(0,o.zw)((0,a.SU)(U).location),1),(0,r._)("dt",null,(0,o.zw)(e.$t("user.PROFILE.BIO"))+":",1),(0,r._)("dd",I,(0,o.zw)((0,a.SU)(U).bio),1)]),(0,a.SU)(h)?((0,r.wg)(),(0,r.iD)("div",R,[(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:0,class:"danger",onClick:n[5]||(n[5]=(0,i.iM)((e=>F("delete")),["prevent"]))},(0,o.zw)(e.$t("admin.DELETE_USER")),1)):(0,r.kq)("",!0),(0,a.SU)(U).is_active?(0,r.kq)("",!0):((0,r.wg)(),(0,r.iD)("button",{key:1,onClick:n[6]||(n[6]=(0,i.iM)((e=>B((0,a.SU)(U).username)),["prevent"]))},(0,o.zw)(e.$t("admin.ACTIVATE_USER_ACCOUNT")),1)),(0,a.SU)(C).username!==(0,a.SU)(U).username?((0,r.wg)(),(0,r.iD)("button",{key:2,onClick:(0,i.iM)(x,["prevent"])},(0,o.zw)(e.$t("admin.UPDATE_USER_EMAIL")),9,g)):(0,r.kq)("",!0),(0,a.SU)(C).username!==(0,a.SU)(U).username&&(0,a.SU)(k).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("button",{key:3,onClick:n[7]||(n[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:n[8]||(n[8]=n=>e.$router.go(-1))},(0,o.zw)(e.$t("buttons.BACK")),1)])):((0,r.wg)(),(0,r.iD)("div",N,[(0,r._)("button",{onClick:n[9]||(n[9]=n=>e.$router.push("/profile/edit"))},(0,o.zw)(e.$t("user.PROFILE.EDIT")),1),(0,r._)("button",{onClick:n[10]||(n[10]=n=>e.$router.push("/"))},(0,o.zw)(e.$t("common.HOME")),1)]))]))])}}}),h=t(3744);const v=(0,h.Z)(U,[["__scopeId","data-v-217519af"]]);var C=v},776:function(e,n,t){"use strict";t.d(n,{Z:function(){return P}});var r=t(6252),a=t(3577),o=t(2262),i=t(9963),s=t(2201),l=t(8403),c=t(5801),u=t(9917);const d=e=>((0,r.dD)("data-v-4f112f24"),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"},z=d((()=>(0,r._)("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1))),I={key:5,for:"accepted_policy",class:"accepted_policy"},R=["disabled"],g=["disabled"],N={key:3},U={key:0},h={key:4},v={class:"account"},C={key:5};var w=(0,r.aZ)({__name:"UserAuthForm",props:{action:null,token:{default:""}},setup(e){const n=e,t=(0,s.yj)(),d=(0,u.o)(),{action:w}=(0,o.BK)(n),D=(0,o.qj)({username:"",email:"",password:"",accepted_policy:!1}),f=(0,r.Fl)((()=>W(n.action))),P=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.ERROR_MESSAGES])),k=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_REGISTRATION_SUCCESS])),L=(0,r.Fl)((()=>d.getters[c.YN.GETTERS.IS_SUCCESS])),b=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.APP_CONFIG])),M=(0,r.Fl)((()=>d.getters[c.SY.GETTERS.LANGUAGE])),y=(0,r.Fl)((()=>"register"===n.action&&!b.value.is_registration_enabled)),G=(0,r.Fl)((()=>["reset-request","account-confirmation-resend"].includes(n.action)&&!b.value.is_email_sending_enabled)),F=(0,o.iH)(!1);function W(e){switch(e){case"reset-request":case"reset":return"buttons.SUBMIT";default:return`buttons.${n.action.toUpperCase()}`}}function Y(){F.value=!0}function B(e){D.password=e}function x(e){switch(e){case"reset":return n.token?d.dispatch(c.YN.ACTIONS.RESET_USER_PASSWORD,{password:D.password,token:n.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:D.email});case"account-confirmation-resend":return d.dispatch(c.YN.ACTIONS.RESEND_ACCOUNT_CONFIRMATION_EMAIL,{email:D.email});default:D["language"]=M.value,d.dispatch(c.YN.ACTIONS.LOGIN_OR_REGISTER,{actionType:e,formData:D,redirectUrl:t.query.from})}}function K(){D.username="",D.email="",D.password="",D.accepted_policy=!1}return(0,r.Ah)((()=>d.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,r.YP)((()=>t.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),F.value=!1,K()})),(e,n)=>{const t=(0,r.up)("AlertMessage"),s=(0,r.up)("router-link"),c=(0,r.up)("i18n-t"),u=(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)(y)}])},[(0,o.SU)(y)?((0,r.wg)(),(0,r.j4)(t,{key:0,message:"user.REGISTER_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(G)?((0,r.wg)(),(0,r.j4)(t,{key:1,message:"admin.EMAIL_SENDING_DISABLED"})):(0,r.kq)("",!0),(0,o.SU)(L)||(0,o.SU)(k)?((0,r.wg)(),(0,r.iD)("div",E,(0,a.zw)(e.$t("user.PROFILE.SUCCESSFUL_"+((0,o.SU)(k)?"REGISTRATION"+((0,o.SU)(b).is_email_sending_enabled?"_WITH_EMAIL":""):"UPDATE"))),1)):(0,r.kq)("",!0),(0,r._)("form",{class:(0,a.C_)({errors:F.value}),onSubmit:n[3]||(n[3]=(0,i.iM)((e=>x((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)(y),required:"",pattern:"[a-zA-Z0-9_]+",minlength:"3",maxlength:"30",onInvalid:Y,"onUpdate:modelValue":n[0]||(n[0]=e=>D.username=e),placeholder:e.$t("user.USERNAME")},null,40,S)),[[i.nr,D.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)(y)||(0,o.SU)(G),required:"",onInvalid:Y,type:"email","onUpdate:modelValue":n[1]||(n[1]=e=>D.email=e),placeholder:e.$t("user.EMAIL")},null,40,A)),[[i.nr,D.email]]):(0,r.kq)("",!0),["reset-request","register","account-confirmation-resend"].includes((0,o.SU)(w))?((0,r.wg)(),(0,r.iD)("div",O,[z,(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)(y),required:!0,placeholder:"reset"===(0,o.SU)(w)?e.$t("user.ENTER_PASSWORD"):e.$t("user.PASSWORD"),password:D.password,checkStrength:["reset","register"].includes((0,o.SU)(w)),onUpdatePassword:B,onPasswordError:Y},null,8,["disabled","placeholder","password","checkStrength"])),"register"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("label",I,[(0,r.wy)((0,r._)("input",{type:"checkbox",id:"accepted_policy",disabled:(0,o.SU)(y),required:"",onInvalid:Y,"onUpdate:modelValue":n[2]||(n[2]=e=>D.accepted_policy=e)},null,40,R),[[i.e8,D.accepted_policy]]),(0,r._)("span",null,[(0,r.Wm)(c,{keypath:"user.READ_AND_ACCEPT_PRIVACY_POLICY"},{default:(0,r.w5)((()=>[(0,r.Wm)(s,{to:"/privacy-policy",target:"_blank"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("privacy_policy.TITLE")),1)])),_:1})])),_:1})])])):(0,r.kq)("",!0)]),(0,r._)("button",{type:"submit",disabled:(0,o.SU)(y)||(0,o.SU)(G)},(0,a.zw)(e.$t((0,o.SU)(f))),9,g)],34),"login"===(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",N,[(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)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("span",U,"-")):(0,r.kq)("",!0),(0,o.SU)(b).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",h,[(0,r._)("span",v,(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)(b).is_email_sending_enabled?((0,r.wg)(),(0,r.iD)("div",C,[(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)(P)?((0,r.wg)(),(0,r.j4)(u,{key:6,message:(0,o.SU)(P)},null,8,["message"])):(0,r.kq)("",!0)],2)])],2)}}}),D=t(3744);const f=(0,D.Z)(w,[["__scopeId","data-v-4f112f24"]]);var P=f},6595:function(e,n,t){"use strict";t.d(n,{Z:function(){return E}});var r=t(6252),a=t(2262),o=t(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 n=e,t=(0,r.Fl)((()=>n.user.picture?`${(0,o.k)()}users/${n.user.username}/picture?${Date.now()}`:""));return(e,n)=>((0,r.wg)(),(0,r.iD)("div",i,[""!==(0,a.SU)(t)?((0,r.wg)(),(0,r.iD)("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:(0,a.SU)(t)},null,8,s)):((0,r.wg)(),(0,r.iD)("div",l,u))]))}});const m=d;var E=m},5630:function(e,n,t){"use strict";t.d(n,{Z:function(){return u}});var r=t(6252),a=t(3577);const o={class:"no-workouts box"};function i(e,n){const t=(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)(t,{to:"/workouts/add"},{default:(0,r.w5)((()=>[(0,r.Uk)((0,a.zw)(e.$t("workouts.UPLOAD_FIRST_WORKOUT")),1)])),_:1})])])}var s=t(3744);const l={},c=(0,s.Z)(l,[["render",i],["__scopeId","data-v-4b4d15fb"]]);var u=c},4612:function(e,n,t){var r={"./de/de.ts":3010,"./en/en.ts":2709,"./fr/fr.ts":5479,"./it/it.ts":6013,"./nb/nb.ts":1901,"./nl/nl.ts":3726};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4612},2868:function(){},4777:function(){},9830:function(){},209:function(){},7414:function(){}},n={};function t(r){var a=n[r];if(void 0!==a)return a.exports;var o=n[r]={exports:{}};return e[r].call(o.exports,o,o.exports,t),o.exports}t.m=e,function(){var e=[];t.O=function(n,r,a,o){if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(t.O).every((function(e){return t.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(){t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,{a:n}),n}}(),function(){var e,n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};t.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);t.r(o);var i={};e=e||[null,n({}),n([]),n(n)];for(var s=2&a&&r;"object"==typeof s&&!~e.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((function(e){i[e]=function(){return r[e]}}));return i["default"]=function(){return r},t.d(o,i),o}}(),function(){t.d=function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce((function(n,r){return t.f[r](e,n),n}),[]))}}(),function(){t.u=function(e){return"static/js/"+({24:"reset",193:"statistics",222:"password.fr",261:"password.en",328:"admin",401:"workouts",802:"password.it",845:"profile",881:"password",940:"password.de"}[e]||e)+"."+{24:"572eac46",93:"37abd50d",193:"d3c3c7bd",222:"1d179591",243:"d72fe9e5",261:"b4ea7085",328:"4313b7d9",401:"0fd5b207",431:"386df171",633:"23ee7aff",802:"be465eec",845:"98e985f4",858:"922b6a43",881:"c0f2f8e4",940:"b81f881f"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"static/css/"+{24:"reset",193:"statistics",328:"admin",401:"workouts",845:"profile"}[e]+"."+{24:"e2527ec6",193:"40e24e75",328:"73df498d",401:"c2966dd5",845:"9f83730d"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)}}(),function(){var e={},n="fittrackee_client:";t.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' && error.response) {\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 \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Über diese Instanz\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wetterdaten von:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zusätzliche Informationen, die für deine Nutzer nützlich sein könnten. Markdown-Syntax wird unterstützt.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detaillierte Instanz-Informationen\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Dateianzahl im zip Archiv\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn 0, gibt es keine Registrierungslimitierung..\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. Anzahl aktiver Nutzer\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kein Text eingegeben\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Das wasswort wurde zurückgesetzt.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge deine eigene Datenschutzrichtlinie hinzu oder leer lassen, um die standardmäßige zu verwenden. Markdown-Syntax wird unterstützt.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die E-Mail Adresse wurde aktualisiert.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netzwerkfehler.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum vollständigen Export existiert bereits.\"])},\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 file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler beim Einlesen der GPX-Datei\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler bei der GPX-Verarbeitung.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eine Anfrage zum Datenexport existiert bereits.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Signatur ist abgelaufen. Bitte melde dich erneut 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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierung erfolgreich.\"])},\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 \"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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nächste\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorhergehende\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten-Export anfragen\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aufsteigend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"absteigend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortieren\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sortiert nach\"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.\"])}\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 \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff auf die Anwendungskonfiguration\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Lesezugriff auf auth-Endpunkte\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erlaubt Schreibzugriff 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 },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anwendungs-URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2-Anwendungen\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst die Löschung deines Kontos jederzeit anfragen, indem du (nach dem Anmelden) zu dieser Adresse gehst und auf den „Mein Konto löschen“-Button in der Accountbearbeitung klickst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account löschen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn wir uns dazu entschließen, unsere Datenschutzrichtlinie zu ändern, werden wir die Änderungen auf dieser Seite posten.\\n\\nDieses Dokument ist unter der [CC-BY-SA-Lizenz](https://creativecommons.org/licenses/by-sa/4.0/). Angepasst von der Datenschutzrichtlinie von [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Änderungen unserer Datenschutzrichtlinie\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden gesammelt:\\n- Accountinformationen (Benutzername, E-Mail-Adresse und Password). Du kannst auch zusätzliche Profilinformationen wie Vor- und Nachname, Geburtsdatum, Standort und Biographie eingeben und ein Profilbild hochladen.\\n- [GPX](https://de.wikipedia.org/wiki/GPS_Exchange_Format)-Dateien. Diese Dateien enthalten Daten, die mit deinen Aktivitäten zusammenhängen (geographische Koordinaten, Datum, Distanz, Dauer, maximale und durchschnittliche Geschwindigkeit, Höhe, Pulsrate...). Wenn du einige dieser Daten nicht preisgeben möchtest, kannst du die Dateien vor dem Hochladen bereinigen oder Workouts ohne GPX-Dateien hochladen.\\n- Workout-Daten (Sportart, Titel, Datum, Dauer, Distanz, An- und Abstieg, Notizen).\\n- Technische Informationen (Browser und Betriebssystem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welche Informationen sammeln wir?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir verkaufen deine personenbezogenen Informationen nicht und übertragen sie auch nicht an Dritte.\\n\\nDies enthält nicht vertrauliche Dritte die uns beim Betreiben dieser Seiten helfen, solange diese Parteien zustimmen, die Informationen vertraulich zu behandeln.\\n\\nWir können auch Informationen preisgeben, wenn wir denken, dass dieses Preisgeben angemessen ist, um mit dem Gesetz übereinzustimmen, unsere Seitenrichtlinien durchzusetzen oder um unsere oder die Rechte und Sicherheit anderer zu schützen.\\n\\nWenn du einer Anwendung von Dritten die Berechtigung gibst, deinen Account zu nutzen, abhängig von den Berechtigungen, denen du zustimmst, können sie möglicherweise auf Profilinformationen oder Workouts zugreifen. Anwendungen können niemals dein Passwort einsehen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geben wir Informationen an Außenstehende weiter?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Informationen zu gewährleisten, wenn du diese eingibst oder auf sie zugreifst.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wie schützen wir deinen Informationen?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diese gesammelten Informationen können verwendet werden, um die Kernfunktionen von **FitTrackee** zu gewährleisten:\\n- GPX-Dateien werden verwendet, um Workouts zu erstellen, Tracks auf Karten (mit [OpenStreetMap](https://www.openstreetmap.org) und dem konfigurierten Tile-Server) und Diagrammen darzustellen, Karten-Thumbnails zu erstellen, Rekorde zu berechnen und Wetterdaten zu erhalten (wenn ein Wetteranbieter gesetzt wurde).\\n- Profilinformationen und Workouts werden nicht öffentlich angezeigt. Ein registrierter Nutzen kann nur seine eigenen Workouts anzeigen.\\n- Die E-Mail-Adresse, die du angibst, kann verwendet werden, um dir Informationen oder Bestätigungen zu Accountänderungen zu schicken.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Für was verwenden wir deine Informationen?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wenn dieser Server in der EU oder EEA steht: Unsere Seite und Services sind für Personen, die mindestens 16 Jahre alt sind. Wenn du unter 16 bist, benutze diese Seite gemäß den Bestimmungen der [DSGVO](https://de.wikipedia.org/wiki/Datenschutz-Grundverordnung) (Datenschutz-Grundverordnung) nicht.\\n\\nWenn dieser Server in den USA steht: Unsere Seite und Services sind für Personen, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, benutze diese Seite gemäß den Bestimmungen der [COPPA](https://de.wikipedia.org/wiki/Children%E2%80%99s_Online_Privacy_Protection_Act) (Children’s Online Privacy Protection Act) nicht.\\n\\nGesetzliche Anforderungen können in anderen Rechtsbereichen anders sein.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seitennutzung durch Kinder\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durch das Benutzen unserer Seite stimmst du der Datenschutzrichtlinie der Webseite zu.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deine Zustimmung\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letztes Update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergsteigen\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monat\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Woche\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenexport\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archiv herunterladen\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generiere Link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Du kannst alle 24 Stunden ein Archiv anfragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fehlgeschlagen (bitte frage einen anderen Export an)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in Arbeit...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ich möchte meinen Account löschen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sprache\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Die Datenschutzrichtlinie wurde aktualisiert, bitte \", _interpolate(_list(0)), \" sie vor dem Fortfahren.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmeldung\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abmelden\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmelden\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort vergessen?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mindestens 8 Zeichen sind erforderlich.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mittel\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gut\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwortstärke\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Schreibe einige, aber nicht alle Buchstaben groß.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Füge weitere weniger gebräuchliche Wörter hinzu.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide vorhersehbare Buchstabenersetzungen wie \", \"@\", \" für a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.\"])},\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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide Angabe von letzten Jahreszahlen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide wiederholungen von Wörtern und Zeichen.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermeide gebräuchliche Zeichenfolgen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"schwach\"])}\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_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erster Tag der Woche\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vorname\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild entfernen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bild aktualisieren\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einstellungsausgabe\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil-Ausgabe\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrierungsdatum\"])},\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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten-Einstellungsausgabe\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenschutzrichtlinie\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sportarten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zeitzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperiales System (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Einheiten für die Distanz\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisches System (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ich habe die \", _interpolate(_list(0)), \" gelesen und stimme ihr zu.\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrieren\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entschuldigung, die Registrierung ist deaktiviert.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E-Mail zur Kontobestätigung erneut senden\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Passwort zurücksetzen\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"überprüfen\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benutzerbild\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Du hast die \", _interpolate(_list(0)), \" akzeptiert.\"])}\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 \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschnittsgeschwindigkeit\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durchschn. Geschwindigkeit\"])},\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 \"INVALID_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide Höhenwerte müssen angegeben werden und größer oder gleich 0 sein.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Distanz muss größer als 0 sein\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die Dauer muss größer als 0 Sekunden sein\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anmerkungen\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ohne .gpx Datei\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mit .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About this instance\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weather data from:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any additional information that may be useful to your users. Markdown syntax can be used.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed instance information\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No text entered\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The password has been reset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add your own privacy policy or leave blank to use the default one. Markdown syntax can be used.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The email address has been updated.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network 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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A completed export request already exists.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx file parsing.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error during gpx processing.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A data export request already exists.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\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 \"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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request data export\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])}\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 \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 applications\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request the deletion of your account at any time by going to this address (after logging in) and clicking on \\\"Delete My Account\\\" button in your account edition.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account deletion\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If we decide to change our privacy policy, we will post those changes on this page.\\n\\nThis document is under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/) license. Originally adapted from the [Discourse](https://github.com/discourse/discourse) privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changes to our Privacy Policy\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information are collected:\\n- Account information (username, e-mail address and password). You may also enter additional profile information such as a first name, last name, birth date, location, biography and upload a profile picture.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) files. These files contain data related to your activities (geographic coordinates, date, distance, duration, max and average speeds, elevation, heart rate…). If you don't want to expose some data, clean them before upload or add workouts without GPX files.\\n- Workout data (sport, title, date, duration, distance, ascent, descent, notes).\\n- Technical information (browser name and operating system).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What information do we collect?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We do not sell, trade or otherwise transfer to outside parties your personally identifiable information.\\n\\nThis does not include trusted third parties who assist us in operating our site and servicing you, so long as those parties agree to keep this information confidential. \\n\\nWe may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.\\n\\nWhen you authorize a third-party application to use your account, depending on the scope of permissions you approve, it may access your profile information or your workouts. Applications can never access your password.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do we disclose any information to outside parties?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"How do we protect your information?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Any of the information we collect from you may be used to provide the core functionality of **FitTrackee**:\\n- GPX files are used to create workouts, display tracks on map (with [OpenStreetMap](https://www.openstreetmap.org) and the configured tile server) and charts, generate map thumbnails, calculate records and get weather data (if a weather provider is set).\\n- Profile information and workouts are not displayed publicly. A registered user can only display his own workouts.\\n- The email address you provide may be used to send you information or confirm your account modifications.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"What do we use your information for?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If this server is in the EU or the EEA: Our site and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation) do not use this site.\\n\\nIf this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act) do not use this site.\\n\\nLaw requirements can be different if this server is in another jurisdiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Site usage by children\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"By using our site, you consent to our web site privacy policy.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your Consent\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last update\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountaineering\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"generating link...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can request an archive by 24 hours\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"errored (please request another export)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"in progres...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I want to delete my account\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"The privacy policy has been updated, please \", _interpolate(_list(0)), \" it before proceeding.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"At least 8 characters required.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"good\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"password strength\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"strong\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Capitalize some, but not all letters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add more words that are less common.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid years that are associated with you.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid predictable letter substitutions like \", \"@\", \" for a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use longer keyboard patterns and change typing direction multiple times.\"])},\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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid recent years.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid repeated words and characters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid reversed spellings of common words.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avoid common character sequences.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use multiple words, but avoid common phrases.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weak\"])}\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_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy policy\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports preferences edition\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacy policy\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperial system (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Units for distance\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metric system (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"I have read and agree to the \", _interpolate(_list(0)), \".\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resend account confirmation email\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"review\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"You have accepted the \", _interpolate(_list(0)), \".\"])}\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 \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. 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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Both elevation values must be provided and be greater than or equal to 0.\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A propos de cette instance\"])},\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 \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Source des données météo :\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toute information supplémentaire qui peut être utile à vos utilisateurs. La syntaxe Markdown peut être utilisée.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information détaillée de l'instance\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de texte saisi\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Le mot de passe a été réinitialisé.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter votre propre politique de confidentialité ou laisser vider pour utiliser la politique par défaut. La syntaxe Markdown peut être utilisée.\"])},\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.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'adresse email a été mise à jour.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur réseau.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export terminée existe déjà.\"])},\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 file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de l'analyse du fichier.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors du traitement du fichier gpx.\"])},\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 \"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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Une demande d'export de données est en cours\"])},\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 \"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 \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\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 \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])}\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 \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Demander un export de données\"])},\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\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\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 \"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 \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])}\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 \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applications OAuth2\"])},\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 \"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 \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander à tout moment la suppression de votre compte en vous rendant à cette adresse (après vous être connecté à votre compte), puis en cliquant sur le bouton sous \\\"Supprimer mon compte\\\" dans l'espace de mise à jour de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Suppression du compte\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\\n\\nCe document est sous licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Adaptée de la politique de confidentialité de [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifications de notre politique de confidentialité\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les informations suivantes sont collectées :\\n- Informations liées au compte (nom d'utilisateur, courriel et mot de passe). Vous pouvez également saisir les informations du profil tel que le prénom, le nom de famille, la date de naissance, la localisation, une biographie et envoyer une image de profil.\\n- Fichiers [GPX](https://fr.wikipedia.org/wiki/GPX_(format_de_fichier). Ces fichiers contiennent les données liées à vos activités (coordonnées géographiques, date, distance, durée, vitesses maximale et moyenne, altitude, rythme cardiaque…). Si vous ne souhaitez pas exposer certaines données, nettoyer les fichiers avant de les envoyer ou ajouter des activités sans fichier GPX.\\n- Données d'activités (sport, titre, date, durée, distance, dénivelé positif et négatif, notes).\\n- Données techniques (nom du navigateur et du système d'exploitation).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quelles sont les informations que nous recueillons ?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous ne vendons pas, ni échangeons ou même transférons vos renseignements personnelles à des tiers.\\n\\nCeci n’inclut pas les tiers de confiance qui nous aident à exploiter notre site ou vous servir, tant que ces parties conviennent à garder ces informations confidentielles.\\n\\nNous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d’autres droits, la propriété ou la sécurité.\\n\\nSi vous autorisez une application tierce à utiliser votre compte, selon le périmètre des permissions accordées, elle pourra avoir accès à vos informations de profil ou vos activités. Les applications tierces ne peuvent jamais accéder à votre mot de passe.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Divulguons-nous des informations à des tiers ?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nous mettons en œuvre une variété de mesures de sécurité pour maintenir la sécurité de vos informations personnelles lorsque vous saisissez, soumettez ou d’accédez à vos renseignements personnels.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment protégeons-nous vos informations ?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toutes les informations que nous recueillons auprès de vous peuvent être utilisées afin de fournir les fonctionnalités de **FitTrackee** :\\n- Les fichiers GPX sont utilisés pour créer des activités, afficher des traces sur une carte (avec [OpenStreetMap](https://www.openstreetmap.org) et le serveur de tuiles configuré) et des graphiques, générer des vignettes de cartes, calculer des records et obtenir des données météo (si un fournisseur de données météorologiques est configuré).\\n- Les informations du profil et les activités ne sont pas affichées publiquement. Un utilisateur enregistré ne peut voir que ses propres activités.\\n- Le courriel que vous avez fourni peut être utilisé pour vous envoyer des informations ou confirmer des actions de modification de votre compte.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Comment utilisons-nous vos informations ?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si ce serveur est localisé dans l'Union Européenne (UE) ou l'Espace Economique Européen (EEA) : notre site et nos services sont tous destinés aux personnes âgées d'au moins 16 ans. Si vous avez moins de 16 ans, conformément aux exigences du [RGPD](https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es) (Règlement général sur la protection des données), n'utilisez pas ce site.\\n\\nSi ce serveur se trouve aux États-Unis : notre site et nos services sont tous destinés à des personnes âgées d'au moins 13 ans. Si vous avez moins de 13 ans, conformément aux exigences de la loi [COPPA](https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), n'utilisez pas ce site.\\n\\nLes exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Protection des mineurs\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En utilisant notre site, vous acceptez la politique de confidentialité de notre site web.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Votre consentement\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dernière mise à jour\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinisme\"])}\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 \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\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ées.\"])},\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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export des données\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Télécharger l'archive\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lien en cours de génération...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous pouvez demander un export par 24h\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en erreur (veuillez demander une nouvelle archive)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"en cours...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je souhaite supprimer mon compte\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La politique de confidentialité a été mise à jour. Veuillez l'\", _interpolate(_list(0)), \" avant de poursuivre.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"8 caractères minimum.\"])},\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 \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"moyenne\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bonne\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"robustesse du mot de passe\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettez quelques lettres en majuscules, mais pas toutes.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez des mots moins courants.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les années qui vous sont associées. (ex : date de naissance).\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les substitutions de lettres prévisibles comme \", \"@\", \" pour a.\"])},\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 \"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 \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les dernières années.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les mots et les caractères répétés.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les orthographes inversées des mots courants.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Évitez les séquences de caractères courantes.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Utilisez plusieurs mots, mais évitez les phrases courantes.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"faible\"])}\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politique de confidentialité\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences des sports\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"politique de confidentialité\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système impérial (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unités pour les distances\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Système métrique (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"J'ai lu et accepte la \", _interpolate(_list(0)), \".\"])},\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 \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"accepter\"])},\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 \"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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Vous avez accepté la \", _interpolate(_list(0)), \".\"])}\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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0.\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\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 \"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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSO\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SO\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OSO\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un 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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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([\"Contatta l'amministratore\"])},\n \"FITTRACKEE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"FitTrackee è un tracker self-hosted per attività outdoor.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sotto licenza \", _interpolate(_list(0)), \" \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Codice sorgente\"])}\n}","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Azione\"])},\n \"ACTIVATE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva account\"])},\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attivo\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi/rimuovi permessi, elimina account utente.\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione\"])},\n \"APP_CONFIG\": {\n \"ADMIN_CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email di contatto dell'amministratore\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di files zip\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se settato a 0, non ci sono limiti per le registrazioni.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Numero massimo di utenti attivi\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna mail di contatto\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dei file caricabili (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurazione applicazione\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimensione massima dell'archivio zip (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna ad amministrazione\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler eliminare \", _interpolate(_list(0)), \" account? Tutti i dati verranno persi, quest'azione non può essere annullata.\"])},\n \"CONFIRM_USER_PASSWORD_RESET\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Sei sicuro di voler resettare \", _interpolate(_list(0)), \" password?\"])},\n \"CURRENT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email corrente\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina utente\"])},\n \"EMAIL_SENDING_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'invio di email è disabilitato.\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva/Disattiva sports.\"])},\n \"NEW_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova email\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La password è stata reimpostata.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento disabilitata.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La registrazione è al momento abilitata.\"])},\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([\"Attivo\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout esistono\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Immagine\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etichetta\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amministrazione sport\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna configurazione applicazione.\"])},\n \"UPDATE_USER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna email\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utente\"]), _normalize([\"utenti\"])])},\n \"USERS\": {\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato admin\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data di registrazione\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"stato account\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nome utente\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"numero di workout\"])}\n }\n },\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi permessi di amministratore\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi permessi di amministratore\"])}\n }\n },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'indirizzo email è stato aggiornato.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore di rete.\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amminstratore.\"])},\n \"at least one file in zip archive exceeds size limit, please check the archive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: dev'essere inserita un'email valida.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura del file gpx.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'elaborazione del file gpx.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nella lettura della configurazione.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore nell'aggiornamento della configurazione\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, per favore riprova o contatta l'amministratore.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore, la registrazione è disabilitata.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File con estensione non permessa.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dimensione del file è maggiore di quella massima permessa.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Credenziali errate.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I dati inseriti non sono validi.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto, per favore ripeti il log in.\"])},\n \"new email must be different than curent email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La nuova email dev'essere diversa dalla vecchia mail\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: la password inserita e la conferma non combaciano.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insersci un token di autenticazione valido.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token scaduto. Per favore ripeti il log in.\"])},\n \"sorry, that username is already taken\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, quell'username è già esistente.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo sport non esiste.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registrato con successo.\"])},\n \"the number of files in the archive exceeds the limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il numero di files nell'archivio supera il limite massimo permesso.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utente non esiste.\"])},\n \"valid email must be provided for admin contact\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dev'essere inserita un'email valida\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai i permessi necessari.\"])}\n },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avanti\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"precedente\"])}\n }\n}","export default {\n \"ACCOUNT-CONFIRMATION-RESEND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma\"])},\n \"AUTHORIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Autorizza\"])},\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Indietro\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annulla\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta filtri\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina il mio account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disattiva\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attiva\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra\"])},\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([\"Registra\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invia\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"about\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conferma\"])},\n \"CONTACT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contatto\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"giorno\"]), _normalize([\"giorni\"])])},\n \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mostrato\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentazione\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"qui\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nascosto\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più basso al più alto\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dal più alto al più basso\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina\"])}\n },\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ordina per\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per pagina\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Totale\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo mese\"])}\n}","export default {\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'applicazione ha riscontrato dei problemi.
Per favore riprova più tardi o contatta l'amministratore.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pagina non trovata\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout non trovato\"])}\n },\n \"SOMETHING_WRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Qualcosa è andato storto\"])},\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Errore. Per favore riprova o contatta l'amministratore.\"])}\n}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi una nuova applicazione OAuth2\"])},\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([\"Descrizione applicazione\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Issue at\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome applicazione\"])},\n \"REDIRECT_URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL redirect\"])},\n \"SCOPE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope\"])},\n \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura alla configurazioen dell'applicazione.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a users endpoints.\"])},\n \"users:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a usersendpoints.\"])},\n \"workouts:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di lettura a workouts endpoints.\"])},\n \"workouts:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da permessi di scrittura a workouts endpoints.\"])}\n },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL applicazione\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazioni OAuth2\"])},\n \"APP_CREATED_SUCCESSFULLY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più.\"])},\n \"APP_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare quest'app?\"])},\n \"APP_REQUESTING_ACCESS\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"L'applicazione \", _interpolate(_list(0)), \" sta chiedendo:\"])},\n \"AUTHORIZE_APP\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Autorizzi \", _interpolate(_list(0)), \" ad utilizzare il tuo account?\"])},\n \"COPY_TO_CLIPBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"copia nella clipboard\"])},\n \"DELETE_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elimina applicazione\"])},\n \"NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi applicazione\"])},\n \"NO_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Applicazione non trovata!\"])},\n \"NO_APPS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna applicazione\"])},\n \"NO_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna descrizione\"])},\n \"REVOKE_ALL_TOKENS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi tutti i tokens\"])},\n \"TOKENS_REVOCATION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler rimuovere tutti i token?\"])},\n \"TOKENS_REVOKED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutti i token esistenti associati sono stati rimossi.\"])}\n}","export default {\n \n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ciclismo (Trasporto)\"])}\n },\n \"Cycling (Virtual)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cicliscmo (Virtuale)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Escursioni\"])}\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 (Elettrica)\"])}\n },\n \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alpinismo\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Canottaggio\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Corsa\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Alpino)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sci (Cross Country)\"])}\n },\n \"Snowshoes\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Racchette da neve\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sentieri\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Camminata\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiche\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mese\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"settimana\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"anno\"])}\n }\n}","export default {\n \"ACCOUNT_CONFIRMATION_NOT_RECEIVED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non hai ricevuto istruzioni?\"])},\n \"ACCOUNT_CONFIRMATION_SENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hai già un account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata\"])},\n \"CURRENT_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password corrente\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"EMAIL_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci un indirizzo email valido.\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci una password\"])},\n \"FILTER_ON_USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtra per username\"])},\n \"HIDE_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token invalido, per favore richiedi un nuovo reset della password.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"log in\"])},\n \"NEW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuova password\"])},\n \"NO_USERS_FOUND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun utente trovato.\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password dimenticata?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci almeno 8 caratteri.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset password\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password.\"])},\n \"PASSWORD_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"media\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"buona\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sicurezza password\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forte\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci qualche maiuscola.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi più parole che sono meno comuni.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"capitalization\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inserisci maiuscole oltre alla prima lettera.\"])},\n \"dates\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date che possono essere associate a te.\"])},\n \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sostituzioni prevedibili, per esempio, \", \"@\", \" per la a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa patterns più lunghi e cambia direzione di scrittura più volte.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"È consigliabile cambiare questa password se è utilizzata per altro.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita date recenti.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di ripetere lettere e parole.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita di scrivere parole al contrario.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Evita sequenze di caratteri comuni.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usa più parole, ma evita frasi comuni.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bassa\"])}\n },\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"La tua password è stata aggiornata. Clicca \", _interpolate(_list(0)), \" per effettuare il login.\"])},\n \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tipo di account\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dati relativi alle salite (singoli, totale)\"])},\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ritorna al profilo\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di nascita\"])},\n \"DATE_FORMAT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Formato data\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica profilo\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze\"])},\n \"EDIT_SPORTS_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica preferenze sport\"])},\n \"ERRORED_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Per favore \", _interpolate(_list(0)), \" per cambiare di nuovo la tua mail o contatta l'amministratore\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primo giorno della settimana\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nome\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingua\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cognome\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posizione\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lunedì\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foto\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rimuovi foto\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiorna foto\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data di registrazione\"])},\n \"SPORT\": {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"azione\"])},\n \"COLOR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"colore\"])},\n \"DISABLED_BY_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"disattivato dall'amministratore\"])},\n \"IS_ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"attivo\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"etichetta\"])},\n \"STOPPED_SPEED_THRESHOLD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limite minimo di velocità\"])}\n },\n \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferenze sport\"])},\n \"SUCCESSFUL_EMAIL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email.\"])},\n \"SUCCESSFUL_REGISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato creato con successo.\"])},\n \"SUCCESSFUL_REGISTRATION_WITH_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Un link per attivare il tuo account è stato inviato all'indirizzo specificato.\"])},\n \"SUCCESSFUL_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Il tuo account è stato aggiornato con successo.\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domenica\"])},\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([\"foto\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferenze\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profilo\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sports\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema imperiale (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unità per la distanza\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sistema metrico (m, km, m/s, °C)\"])}\n }\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registra\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi dispiace, la registrazione è disabilitata.\"])},\n \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Re-invia email di conferma dell'account\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resetta password\"])},\n \"SHOW_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra password\"])},\n \"THIS_USER_ACCOUNT_IS_INACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Questo account è inattivo.\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"USERNAME_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo \\\"_\\\".\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"foto profilo\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aggiungi un workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analisi\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"salita\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità media\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vel. media\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ritorna al workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"discesa\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mostra filtri\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distanza\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifica il workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevazione\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fine\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"da\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nascondi filtri\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La distanza dev'essere maggiore di 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La durata dev'essere maggiore di 0\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ultimi workout\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica più workout\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine massima\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file massimi\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dimensione massima\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità massima\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitudine minima\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prossimo workout\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"note\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data dal file gpx, senza \\\"pulizia\\\"\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun file scelto\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nessuna cartella all'interno\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna mappa\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento successivo\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout successivo\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessuna nota\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun segmento precedente\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout precedente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun record.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nessun workout.\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pause\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segmento precedente\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout precedente\"])},\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([\"Vel. media\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distanza più lunga\"])},\n \"RECORD_HA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salita più alta\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durata più lunga\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vel. massima\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"caratteri rimanenti\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segmento\"]), _normalize([\"segmenti\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"velocità\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inizio\"])},\n \"START_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inizio e fine\"])},\n \"START_ELEVATION_AT_ZERO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partenza asse elevazione a 0\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titolo\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durata totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica file!\"])},\n \"WEATHER\": {\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cielo chiaro\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte chiara\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuvoloso\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nebbia\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"parzialmente nuvoloso\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notte parzialmente nuvolosa\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pioggia\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nevischio\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neve\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])}\n },\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"umidità\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperatura\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vento\"])},\n \"WIND_DIRECTIONS\": {\n \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"E\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ENE\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ESE\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NE\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNE\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S\"])},\n \"SE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SE\"])},\n \"SSE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSE\"])},\n \"SSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SSW\"])},\n \"SW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"SW\"])},\n \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WSW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"senza file .gpx\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"con file .gpx\"])},\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([\"data workout\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sei sicuro di voler eliminare questo workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"o file .zip contenente files .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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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}","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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","export default {\n \"ABOUT_THIS_INSTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Over deze instantie\"])},\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 activiteiten tracker.\"])},\n \"FITTRACKEE_LICENSE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Onder \", _interpolate(_list(0)), \" licentie \"])},\n \"SOURCE_CODE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Broncode\"])},\n \"WEATHER_DATA_FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weer gegevens van:\"])}\n}","export default {\n \"ABOUT\": {\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extra informatie die nuttig kan zijn voor uw gebruikers. Markdown opmaak kan gebruikt worden.\"])},\n \"TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gedetailleerde informatie over deze instantie\"])}\n },\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\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instellingen\"])},\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_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal bestanden in zip archief\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bij 0, geen limiet op registratie.\"])},\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. aantal actieve gebruikers\"])},\n \"NO_CONTACT_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geen contact email\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. grootte van bestanden voor upload (in Mb)\"])},\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 },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terug naar beheer\"])},\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 \"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 \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verwijder gebruiker\"])},\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 \"NO_TEXT_ENTERED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen tekst ingegeven\"])},\n \"PASSWORD_RESET_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het wachtwoord werd gereset.\"])},\n \"PRIVACY_POLICY_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg uw eigen privacybeleid toe, of laat leeg om het standaard beleid te gebruiken. Markdown opmaak kan gebruikt worden.\"])},\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 \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trainingen aanwezig\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beheer sporten\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De applicatie configureren.\"])},\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 \"USERS\": {\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 \"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 },\n \"USER_EMAIL_UPDATE_SUCCESSFUL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Het emailadres werd bijgewerkt.\"])}\n}","export default {\n \"ERROR\": {\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netwerk fout.\"])},\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 \"completed request already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een voltooide export aanvraag.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: een geldige email is vereist.\"])},\n \"error during gpx file parsing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij het verwerken van het gpx bestand.\"])},\n \"error during gpx processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fout bij verwerken van gpx.\"])},\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 \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestandsgrootte is groter dan toegestaan.\"])},\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 \"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 \"ongoing request exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er bestaat al een export aanvraag.\"])},\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 \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signatuur verlopen. Log opnieuw in.\"])},\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 \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Succesvol geregistreerd.\"])},\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 \"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 },\n \"PAGINATION\": {\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgende\"])},\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vorige\"])}\n }\n}","export default {\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 \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitzetten\"])},\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 \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nee\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registreer\"])},\n \"REQUEST_DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data export aanvragen\"])},\n \"RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opslaan\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja\"])}\n}","export default {\n \"ABOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"over\"])},\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bevestiging\"])},\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 \"DISPLAYED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weergegeven\"])},\n \"DOCUMENTATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentatie\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hier\"])},\n \"HIDDEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verborgen\"])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Startscherm\"])},\n \"SELECTS\": {\n \"ORDER\": {\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"oplopend\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aflopend\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sorteer\"])}\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 \"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 \"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 \"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}","export default {\n \"ADD_A_NEW_APP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieuwe OAuth2 app toevoegen\"])},\n \"APP\": {\n \"CLIENT_ID\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Id\"])},\n \"CLIENT_SECRET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geheim\"])},\n \"DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App omschrijving\"])},\n \"ISSUE_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Probleem bij\"])},\n \"NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naam van de app\"])},\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 \"application:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geeft toestemming tot aanpassen van de applicatie instellingen.\"])},\n \"profile:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan auth endpoints.\"])},\n \"profile:write_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat schrijftoegang toe aan auth endpoints.\"])},\n \"users:read_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"staat leestoegang toe aan users 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 },\n \"URL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App URL\"])}\n },\n \"APPS_LIST\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth2 apps\"])},\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 \"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}","export default {\n \"CONTENT\": {\n \"ACCOUNT_DELETION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kunt uw account op elk moment opzeggen door naar volgend adres te gaan, en na inloggen op de knop \\\"Verwijder mijn account\\\" te klikken in uw instellingen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account verwijderen\"])}\n },\n \"CHANGES_TO_OUR_PRIVACY_POLICY\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eventuele aanpassingen aan het privacybeleid zullen op deze pagina worden weergegeven.\\n\\nDit document valt onder volgende licentie [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/). Een aanpassing van dit origineel privacybeleid [Discourse](https://github.com/discourse/discourse).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aanpassingen aan ons Privacybeleid\"])}\n },\n \"DATA_COLLECTED\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De volgende informatie wordt verzameld:\\n- Account informatie (gebruikersnaam, email en wachtwoord). U kan ook bijkomende informatie opgeven zoals: naam, voornaam, geboortedatum, locatie, biografie en een profiel-afbeelding.\\n- [GPX](https://en.wikipedia.org/wiki/GPS_Exchange_Format) bestanden. Deze bestanden bevatten gegevens over uw activiteiten (coördinaten, datums, afstand, duur, maximum en minimum snelheden, hoogtegegevens, hartslag, ...). Als u bepaalde gegevens hiervan niet wil delen, verwijder deze dan uit het bestand alvorens deze te uploaden.\\n- Sportgerelateerde gegevens (soort sport, titel, datum, duur, afstand, geklommen afstand, gedaalde afstand, notities).\\n- Technische informatie (de browsernaam en naam van het besturingssysteem).\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Welke informatie wordt er door ons verzameld?\"])}\n },\n \"INFORMATION_DISCLOSURE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persoonlijke informatie wordt niet verkocht, geruild of op enige manier doorgegeven aan derden/andere instanties.\\n\\nDe uitzondering hierop zijn derden die vertrouwd worden en hebben ingestemd om uw gegevens niet te delen. Dit zijn bijvoorbeeld website administrators en vertrouwde applicaties.\\n\\nWanneer je een app van derden linkt aan je gebruikersaccount, kan het naargelang de toegestane rechten toegang krijgen tot je profiel informatie en activiteiten. Apps hebben nooit toegang tot uw wachtwoord.\\n\\nMogelijk kan er informatie worden gedeeld wanneer dit nodig is om aan de wetgeving te voldoen, wanneer de regels van ons beleid dienen afgedwongen te worden, of om onze of anderen hun rechten, eigendom of veiligheid te beschermen.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordt er informatie met derden gedeeld?\"])}\n },\n \"INFORMATION_PROTECTION\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Er worden verschillende maatregelen gebruikt om de veiligheid van uw persoonlijke informatie te beschermen. Zowel tijdens het ingegeven, uploaden en bekijken van uw informatie.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoe beschermen we uw informatie?\"])}\n },\n \"INFORMATION_USAGE\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De informatie die we verzamelen is nodig voor de basis functionaliteit van **FitTrackee**:\\n- GPX worden gebruikt om activiteiten aan te maken, routes te tonen op de map (door [OpenStreetMap](https://www.openstreetmap.org), grafieken te tonen, thumbnails voor de route aan te maken, berekenen van records en weerdata op te vragen (indien geconfigureerd).\\n- Profiel informatie en activiteiten zijn niet publiek zichtbaar. Een gebruiker kan enkel zijn eigen activiteiten bekijken.\\n- Het opgegeven email adres kan worden gebruikt om informatie met u te delen, of om wijzigingen aan uw account te melden.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waarvoor wordt de opgegeven informatie gebruikt?\"])}\n },\n \"SITE_USAGE_BY_CHILDREN\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als de server zich in de EU of EEA bevindt: Deze site en zijn services zijn gericht op personen van minstens 16 jaar oud. Als u onder de 16 jaar bent, volgens naleving van de [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (General Data Protection Regulation), gelieve deze site niet te gebruiken.\\n\\nAls de server zich in de USA bevindt: Deze site en zijn services zijn gericht op personen van minstens 13 jaar oud. Als u onder de 13 jaar bent, volgens naleving van de [COPPA](https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act) (Children's Online Privacy Protection Act), gelieve deze site niet te gebruiken.\\n\\nWetgeving kan verschillen als de server zich op een andere plaats bevindt.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik door minderjarigen\"])}\n },\n \"YOUR_CONSENT\": {\n \"CONTENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Door deze site te gebruiken, gaat u akkoord met ons privacybeleid.\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uw toestemming\"])}\n }\n },\n \"LAST_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laatste aanpassing\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"privacybeleid\"])}\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 \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trektocht\"])}\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 \"Mountaineering\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bergbeklimmen\"])}\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 \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wandelen\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistieken\"])},\n \"TIME_FRAMES\": {\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"maand\"])},\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\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 \"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 \"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 \"EXPORT_REQUEST\": {\n \"DATA_EXPORT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data exporteren\"])},\n \"DOWNLOAD_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Archief downloaden\"])},\n \"GENERATING_LINK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"link aanmaken...\"])},\n \"ONLY_ONE_EXPORT_PER_DAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Je kan 1 keer per 24h een archief aanvragen\"])},\n \"STATUS\": {\n \"errored\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fout (gelieve een nieuw archief aan te vragen)\"])},\n \"in_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bezig met verwerken...\"])}\n }\n },\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 \"I_WANT_TO_DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ik wil mijn account verwijderen\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taal\"])},\n \"LAST_PRIVACY_POLICY_TO_VALIDATE\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Het privacybeleid werd aangepast, gelieve te \", _interpolate(_list(0)), \" voor verdergaan.\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inloggen\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uitloggen\"])},\n \"LOG_IN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"inloggen\"])},\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_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord vergeten?\"])},\n \"PASSWORD_INFO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tenminste 8 karakters vereist.\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wachtwoord reset\"])},\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_STRENGTH\": {\n \"AVERAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddeld\"])},\n \"GOOD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"goed\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wachtwoord sterkte\"])},\n \"STRONG\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sterk\"])},\n \"SUGGESTIONS\": {\n \"allUppercase\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik enkele hoofdletters.\"])},\n \"anotherWord\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voeg meer niet gangbare woorden toe.\"])},\n \"associatedYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd jaartallen met een persoonlijke betekenis.\"])},\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 \"l33t\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare vervangingen, zoals \", \"@\", \" voor de letter a.\"])},\n \"longerKeyboardPattern\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik langere patronen en verander de richting van typen meerdere malen.\"])},\n \"noNeed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.\"])},\n \"pwned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.\"])},\n \"recentYears\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd recente jaartallen.\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd opeenvolgende woorden en karakters.\"])},\n \"reverseWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd gangbare woorden die achterstevoren geschreven zijn.\"])},\n \"sequences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vermijd voorspelbare opeenvolgingen.\"])},\n \"useWords\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.\"])}\n },\n \"WEAK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zwak\"])}\n },\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 \"PROFILE\": {\n \"ACCOUNT_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aanpassen\"])},\n \"ASCENT_DATA\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hoogte gerelateerde data (opnames, totaal)\"])},\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 \"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 \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eerste dag van de week\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voornaam\"])},\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_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding verwijderen\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afbeelding veranderen\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voorkeuren aanpassen\"])},\n \"PRIVACY-POLICY_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\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 \"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 \"SPORTS_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport voorkeuren aanpassen\"])},\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 \"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 \"PRIVACY-POLICY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacybeleid\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profiel\"])},\n \"SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sporten\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tijdzone\"])},\n \"UNITS\": {\n \"IMPERIAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imperialistisch systeem (ft, mi, mph, °F)\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eenheid voor afstand\"])},\n \"METRIC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metrisch systeem (m, km, m/s, °C)\"])}\n }\n },\n \"READ_AND_ACCEPT_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ik heb het \", _interpolate(_list(0)), \" gelezen en goedgekeurd.\"])},\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 \"RESENT_ACCOUNT_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opnieuw zenden van account bevestigingsmail\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset uw wachtwoord\"])},\n \"REVIEW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"beoordeling\"])},\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 \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gebruikersnaam\"])},\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 \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gebruikersafbeelding\"])},\n \"YOU_HAVE_ACCEPTED_PRIVACY_POLICY\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"U hebt het \", _interpolate(_list(0)), \" aanvaard.\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Training toevoegen\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"geklommen\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gemiddelde snelheid\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gem. 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 \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toon filters\"])},\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_ASCENT_OR_DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beide waarden moeten opgegeven worden en dienen groter dan of gelijk aan 0 te zijn.\"])},\n \"INVALID_DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De afstand moet groter zijn dan 0\"])},\n \"INVALID_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"De duur moet langer zijn dan 0 seconden\"])},\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 \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notities\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data vanuit gpx, zonder op te schonen\"])},\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 \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen trainingen.\"])},\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 \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gem. snelheid\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langste afstand\"])},\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_AND_FINISH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start en aankomst\"])},\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 \"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 \"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 \"E\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"O\"])},\n \"ENE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ONO\"])},\n \"ESE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OZO\"])},\n \"N\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N\"])},\n \"NE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NO\"])},\n \"NNE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNO\"])},\n \"NNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NNW\"])},\n \"NW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NW\"])},\n \"S\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Z\"])},\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 \"W\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"W\"])},\n \"WNW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WNW\"])},\n \"WSW\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"WZW\"])}\n }\n },\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zonder .gpx bestand\"])},\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"met .gpx bestand\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"training\"]), _normalize([\"trainingen\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"datum training\"])},\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}","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 PrivacyPolicyTranslations from './privacy_policy.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 privacy_policy: PrivacyPolicyTranslations,\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-97e20d3a\"),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\" }\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 _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\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=97e20d3a&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-97e20d3a\"]])\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-eb7fa534\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLength\", \"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 maxLength: __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=eb7fa534&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-eb7fa534\"]])\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 \"./Mountaineering.vue?vue&type=template&id=15731a2a\"\nimport script from \"./Mountaineering.vue?vue&type=script&lang=js\"\nexport * from \"./Mountaineering.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 Mountaineering from '@/components/Common/Images/SportImage/Mountaineering.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) === 'Mountaineering')\n ? (_openBlock(), _createBlock(Mountaineering, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Rowing')\n ? (_openBlock(), _createBlock(Rowing, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Running')\n ? (_openBlock(), _createBlock(Running, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(SkiingAlpine, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(SkiingCrossCountry, { key: 10 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Snowshoes')\n ? (_openBlock(), _createBlock(Snowshoes, { key: 11 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Trail')\n ? (_openBlock(), _createBlock(Trail, { key: 12 }))\n : _createCommentVNode(\"\", true),\n (_unref(sportLabel) === 'Walking')\n ? (_openBlock(), _createBlock(Walking, { key: 13 }))\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-5aa8db48\"),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=5aa8db48&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-5aa8db48\"]])\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-80b4a9e6\"),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 class: \"about-label\",\n for: \"about\"\n}\nconst _hoisted_18 = { class: \"textarea-description\" }\nconst _hoisted_19 = [\"innerHTML\"]\nconst _hoisted_20 = {\n class: \"privacy-policy-label\",\n for: \"privacy_policy\"\n}\nconst _hoisted_21 = { class: \"textarea-description\" }\nconst _hoisted_22 = [\"innerHTML\"]\nconst _hoisted_23 = {\n key: 5,\n class: \"form-buttons\"\n}\nconst _hoisted_24 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = {\n key: 6,\n class: \"form-buttons\"\n}\n\nimport snarkdown from 'snarkdown'\n import {\n ComputedRef,\n capitalize,\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 import { linkifyAndClean } from '@/utils/inputs'\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 about: '',\n privacy_policy: '',\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 : ['about', 'privacy_policy'].includes(key)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ? appData[key] = appConfig[key]!== null\n ? appConfig[key]\n : ''\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 _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('admin.ABOUT.TEXT')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('admin.ABOUT.DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 0,\n id: \"about\",\n name: \"about\",\n rows: \"10\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((appData.about) = $event))\n }, null, 512)), [\n [_vModelText, appData.about]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.about ? appData.about : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_19)),\n _createElementVNode(\"label\", _hoisted_20, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('admin.PRIVACY_POLICY_DESCRIPTION')), 1),\n (_unref(edition))\n ? _withDirectives((_openBlock(), _createElementBlock(\"textarea\", {\n key: 2,\n id: \"privacy_policy\",\n name: \"privacy_policy\",\n rows: \"20\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((appData.privacy_policy) = $event))\n }, null, 512)), [\n [_vModelText, appData.privacy_policy]\n ])\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(appData.privacy_policy ? appData.privacy_policy : _ctx.$t('admin.NO_TEXT_ENTERED'))),\n class: \"textarea-content\"\n }, null, 8, _hoisted_22)),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 4,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(edition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", _hoisted_24, _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_25)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[7] || (_cache[7] = _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[8] || (_cache[8] = _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=80b4a9e6&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-80b4a9e6\"]])\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 case 'PRIVACY-POLICY':\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=205359d6&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', 'PRIVACY-POLICY']\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-6e11106c\"),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}\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = { class: \"data-export\" }\nconst _hoisted_13 = { class: \"info-box\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = {\n key: 0,\n class: \"data-export-archive\"\n}\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-spinner fa-pulse\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nimport { isBefore, subDays } from 'date-fns'\n import {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n onMounted,\n watch,\n onUnmounted,\n } from 'vue'\n\n import authApi from \"@/api/authApi\";\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 {IAuthUserProfile, IUserAccountPayload, IExportRequest} from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { formatDate } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n\n interface Props {\n user: IAuthUserProfile\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: IAuthUserProfile\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 const exportRequest: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.EXPORT_REQUEST]\n )\n const exportRequestDate: ComputedRef = computed(\n () => getExportRequestDate()\n )\n const generatingLink: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT)\n updateUserForm(props.user)\n }\n })\n\n function invalidateForm() {\n formErrors.value = true\n }\n function updateUserForm(user: IAuthUserProfile) {\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 getExportRequestDate() {\n return exportRequest.value ? formatDate(\n exportRequest.value.created_at,\n user.value.timezone,\n user.value.date_format,\n true,\n null, true\n ) : null\n }\n\n function canRequestExport() {\n return exportRequestDate.value\n ? isBefore(new Date(exportRequestDate.value), subDays(new Date(), 1))\n : true\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 function requestExport() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT)\n }\n async function downloadArchive(filename: string) {\n generatingLink.value = true\n await authApi\n .get(`/auth/account/export/${filename}`, {\n responseType: 'blob',\n })\n .then((response) => {\n const archiveFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/zip' })\n )\n const archive_link = document.createElement('a')\n archive_link.href = archiveFileUrl\n archive_link.setAttribute('download', filename)\n document.body.appendChild(archive_link)\n archive_link.click()\n })\n .finally(() => generatingLink.value = false)\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 (canRequestExport())\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _withModifiers(requestExport, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.REQUEST_DATA_EXPORT')), 9, _hoisted_11))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('user.EXPORT_REQUEST.ONLY_ONE_EXPORT_PER_DAY')), 1)\n ]),\n (_unref(exportRequest))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EXPORT_REQUEST.DATA_EXPORT')) + \" (\" + _toDisplayString(_unref(exportRequestDate)) + \"): \", 1),\n (_unref(exportRequest).status=== 'successful')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"archive-link\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (downloadArchive(_unref(exportRequest).file_name)), [\"prevent\"]))\n }, [\n _hoisted_16,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"user.EXPORT_REQUEST.DOWNLOAD_ARCHIVE\")) + \" (\" + _toDisplayString(_unref(getReadableFileSize)(_unref(exportRequest).file_size)) + \") \", 1)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.STATUS.${_unref(exportRequest).status}`)), 1)),\n (generatingLink.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.EXPORT_REQUEST.GENERATING_LINK`)) + \" \", 1),\n _hoisted_19\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\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=6e11106c&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-6e11106c\"]])\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__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c1693aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"privacy-policy-text\" }\nconst _hoisted_2 = { class: \"last-update\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { ComputedRef, capitalize, computed } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { dateStringFormats, formatDate } from '@/utils/dates'\n import { linkifyAndClean } from '@/utils/inputs'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicy',\n setup(__props) {\n\n const store = useStore()\n const fittrackee_private_policy_date = 'Sun, 26 Feb 2023 17:00:00 GMT'\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 authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const dateFormat = computed(() => getDateFormat())\n const timezone = computed(() => getTimezone())\n const private_policy_date = computed(() => getPolicyDate())\n const paragraphs = [\n 'DATA_COLLECTED', 'INFORMATION_USAGE', 'INFORMATION_PROTECTION',\n 'INFORMATION_DISCLOSURE', 'SITE_USAGE_BY_CHILDREN', 'YOUR_CONSENT',\n 'ACCOUNT_DELETION', 'CHANGES_TO_OUR_PRIVACY_POLICY'\n ]\n\n function getTimezone() {\n return authUser.value.timezone\n ? authUser.value.timezone\n : Intl.DateTimeFormat().resolvedOptions().timeZone\n ? Intl.DateTimeFormat().resolvedOptions().timeZone\n : 'Europe/Paris'\n }\n function getDateFormat() {\n return dateStringFormats[language.value]\n }\n function getPolicyDate() {\n return formatDate(\n appConfig.value.privacy_policy && appConfig.value.privacy_policy_date\n ? `${appConfig.value.privacy_policy_date}`\n : fittrackee_private_policy_date,\n timezone.value,\n dateFormat.value,\n false,\n )\n }\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h1\", null, _toDisplayString(capitalize(_ctx.$t('privacy_policy.TITLE'))), 1),\n _createElementVNode(\"p\", _hoisted_2, _toDisplayString(_ctx.$t('privacy_policy.LAST_UPDATE')) + \": \" + _toDisplayString(_unref(private_policy_date)), 1),\n (_unref(appConfig).privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).privacy_policy))\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, _renderList(paragraphs, (paragraph) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: paragraph }, [\n _createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.TITLE`)), 1),\n _createElementVNode(\"p\", {\n innerHTML: _unref(snarkdown)(_ctx.$t(`privacy_policy.CONTENT.${paragraph}.CONTENT`))\n }, null, 8, _hoisted_4)\n ], 64))\n }), 64))\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicy.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PrivacyPolicy.vue?vue&type=style&index=0&id=0c1693aa&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-0c1693aa\"]])\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, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77e04be\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-privacy-policy\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = { class: \"policy-content\" }\nconst _hoisted_4 = {\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_5 = { class: \"form-buttons\" }\nconst _hoisted_6 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nimport { ComputedRef, computed, ref, onUnmounted, toRefs } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import {AUTH_USER_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: 'UserPrivacyPolicyValidation',\n props: {\n user: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n };\n\n \n const { user } = toRefs(props)\n\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const acceptedPolicy= ref(false)\n\n function onSubmit() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY, acceptedPolicy.value\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 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(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(user).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.YOU_HAVE_ACCEPTED_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/privacy-policy\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\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 : (_openBlock(), _createElementBlock(\"form\", {\n key: 2,\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (onSubmit()), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(PrivacyPolicy)\n ]),\n _createElementVNode(\"label\", _hoisted_4, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n required: \"\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((acceptedPolicy).value = $event))\n }, null, 512), [\n [_vModelCheckbox, acceptedPolicy.value]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ])\n ]),\n _createVNode(_component_router_link, { to: \"/profile/edit/account\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.I_WANT_TO_DELETE_MY_ACCOUNT')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", _hoisted_6, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32))\n ]))\n}\n}\n\n})","import script from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserPrivacyPolicyValidation.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserPrivacyPolicyValidation.vue?vue&type=style&index=0&id=c77e04be&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-c77e04be\"]])\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, createTextVNode as _createTextVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64eb8494\"),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\"]\nconst _hoisted_12 = { key: 1 }\nconst _hoisted_13 = [\"href\"]\nconst _hoisted_14 = { class: \"about-instance\" }\nconst _hoisted_15 = [\"innerHTML\"]\n\nimport snarkdown from 'snarkdown'\n import { 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 import { linkifyAndClean } from '@/utils/inputs'\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 const weather_provider: ComputedRef> = computed(() =>\n get_weather_provider()\n )\n\n function get_weather_provider() {\n const weather_provider: Record = {}\n if (appConfig.value.weather_provider === 'darksky') {\n weather_provider['name'] = 'Dark Sky'\n weather_provider['url'] = 'https://darksky.net'\n }\n if (appConfig.value.weather_provider === 'visualcrossing') {\n weather_provider['name'] = 'Visual Crossing'\n weather_provider['url'] = 'https://www.visualcrossing.com'\n }\n return weather_provider\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 (_unref(weather_provider) && _unref(weather_provider).name)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('about.WEATHER_DATA_FROM')) + \" \", 1),\n _createElementVNode(\"a\", {\n href: _unref(weather_provider).url,\n target: \"_blank\",\n rel: \"nofollow noopener\"\n }, _toDisplayString(_unref(weather_provider).name), 9, _hoisted_13)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(appConfig).about)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"p\", _hoisted_14, _toDisplayString(_ctx.$t('about.ABOUT_THIS_INSTANCE')), 1),\n _createElementVNode(\"div\", {\n innerHTML: _unref(snarkdown)(_unref(linkifyAndClean)(_unref(appConfig).about))\n }, null, 8, _hoisted_15)\n ], 64))\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=64eb8494&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-64eb8494\"]])\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-645a9e33\"),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\n function hasElevation(workout: IWorkout): boolean {\n return workout && workout.ascent !== null && workout.descent !== null\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 (hasElevation(_unref(workout)))\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=645a9e33&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-645a9e33\"]])\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__","\n\n\n\n\n","import { render } from \"./PrivacyPolicyToAccept.vue?vue&type=template&id=05532ad6&scoped=true\"\nconst script = {}\n\nimport \"./PrivacyPolicyToAccept.vue?vue&type=style&index=0&id=05532ad6&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-05532ad6\"]])\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-4056e776\"),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 = {\n key: 0,\n class: \"container privacy-policy-message\"\n}\nconst _hoisted_13 = { class: \"container\" }\nconst _hoisted_14 = { class: \"container dashboard-container\" }\nconst _hoisted_15 = { class: \"left-container dashboard-sub-container\" }\nconst _hoisted_16 = { class: \"right-container dashboard-sub-container\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_18 = {\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 PrivacyPolicyToAccept from '@/components/PrivacyPolicyToAccept.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 (!_unref(authUser).accepted_privacy_policy)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(PrivacyPolicyToAccept)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(UserStatsCards, { user: _unref(authUser) }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\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_16, [\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_17\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\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=4056e776&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-4056e776\"]])\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, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"privacy-policy\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1)\n\nimport { onBeforeMount } from 'vue'\n\n import PrivacyPolicy from '@/components/PrivacyPolicy.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyPolicyView',\n setup(__props) {\n\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(PrivacyPolicy)\n ]),\n _hoisted_3\n ]))\n}\n}\n\n})","import script from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PrivacyPolicyView.vue?vue&type=script&lang=ts&setup=true\"\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 UserPrivacyPolicyValidation from '@/components/User/ProfileEdition/UserPrivacyPolicyValidation.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 PrivacyPolicyView from '@/views/PrivacyPolicyView.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 path: 'privacy-policy',\n name: 'UserPrivacyPolicy',\n component: UserPrivacyPolicyValidation,\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: '/privacy-policy',\n name: 'PrivacyPolicy',\n component: PrivacyPolicyView,\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', '/privacy-policy']\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 ACCEPT_PRIVACY_POLICY = 'ACCEPT_PRIVACY_POLICY',\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_REQUEST_DATA_EXPORT = 'GET_REQUEST_DATA_EXPORT',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n REQUEST_DATA_EXPORT = 'REQUEST_DATA_EXPORT',\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 SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\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 EXPORT_REQUEST = 'EXPORT_REQUEST',\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 SET_EXPORT_REQUEST = 'SET_EXPORT_REQUEST',\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_PRIVACY_POLICY = 'GET_APPLICATION_PRIVACY_POLICY',\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_PRIVACY_POLICY = 'UPDATE_APPLICATION_PRIVACY_POLICY',\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' && error.response) {\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.accepted_privacy_policy) {\n // refresh privacy policy\n context.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_PRIVACY_POLICY)\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 [AUTH_USER_STORE.ACTIONS.ACCEPT_PRIVACY_POLICY](\n context: ActionContext,\n acceptedPolicy: boolean\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/privacy-policy', {\n accepted_policy: acceptedPolicy,\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 },\n [AUTH_USER_STORE.ACTIONS.REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .post('auth/account/export/request')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.GET_REQUEST_DATA_EXPORT](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/account/export')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST,\n res.data.request\n )\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.EXPORT_REQUEST]: (state: IAuthUserState) => {\n return state.exportRequest\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, IExportRequest } 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 [AUTH_USER_STORE.MUTATIONS.SET_EXPORT_REQUEST](\n state: IAuthUserState,\n exportRequest: IExportRequest\n ) {\n state.exportRequest = exportRequest\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 exportRequest: null,\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.GET_APPLICATION_PRIVACY_POLICY](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_PRIVACY_POLICY,\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_PRIVACY_POLICY](\n state: IRootState,\n appConfig: TAppConfig\n ) {\n state.application.config.privacy_policy = appConfig.privacy_policy\n state.application.config.privacy_policy_date = appConfig.privacy_policy_date\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]\nexport const dateStringFormats: Record = {\n de: 'do MMM yyyy',\n en: 'MMM. do, yyyy',\n fr: 'd MMM yyyy',\n it: '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 withSeconds = false\n): string => {\n if (!language) {\n language = locale.value\n }\n const timeFormat = withTime ? (withSeconds ? ' HH:mm:ss' : ' HH:mm') : ''\n return format(\n getDateWithTZ(dateString, timezone),\n `${getDateFormat(dateFormat, language)}${timeFormat}`,\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","import linkifyHtml from 'linkify-html'\nimport sanitizeHtml from 'sanitize-html'\n\nexport const linkifyAndClean = (input: string): string => {\n return sanitizeHtml(linkifyHtml(input, { target: '_blank' }), {\n allowedTags: ['a'],\n disallowedTagsMode: 'escape',\n })\n}\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { de, enUS, fr, it, 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 it: it,\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 it: 'Italiano',\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 Mountaineering: '#48b3b7',\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\nexport const getTemperature = (\n temperatureInCelsius: number,\n useImperialUnits: boolean\n): string => {\n const temperature = useImperialUnits\n ? temperatureInCelsius * 1.8 + 32\n : temperatureInCelsius\n const unit = useImperialUnits ? ' °F' : '°C'\n return `${temperature === 0 ? 0 : Number(temperature).toFixed(1)}${unit}`\n}\n\nexport const getWindSpeed = (\n windSpeedInMS: number,\n useImperialUnits: boolean\n): string => {\n const windSpeed = useImperialUnits ? windSpeedInMS * 2.2369363 : windSpeedInMS\n const unit = useImperialUnits ? ' mph' : 'm/s'\n return `${windSpeed === 0 ? 0 : Number(windSpeed).toFixed(1)}${unit}`\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 loadLanguagePackage = async (language: string) => {\n // no package available for norwegian bokmal and dutch (Nederlands)\n // fallback to english\n switch (language) {\n case 'fr':\n return await import(\n /* webpackChunkName: \"password.fr\" */ '@zxcvbn-ts/language-fr'\n )\n case 'de':\n return await import(\n /* webpackChunkName: \"password.de\" */ '@zxcvbn-ts/language-de'\n )\n case 'it':\n return await import(\n /* webpackChunkName: \"password.it\" */ '@zxcvbn-ts/language-it'\n )\n default:\n return await import(\n /* webpackChunkName: \"password.en\" */ '@zxcvbn-ts/language-en'\n )\n }\n}\n\nexport const setZxcvbnOptions = async (language: string) => {\n const zxcvbnCommonPackage = await import(\n /* webpackChunkName: \"password\" */ '@zxcvbn-ts/language-common'\n )\n const zxcvbnLanguagePackage = await loadLanguagePackage(language)\n const options = {\n graphs: zxcvbnCommonPackage.default.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.default.dictionary,\n ...zxcvbnLanguagePackage.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, vModelCheckbox as _vModelCheckbox, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f112f24\"),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 = {\n key: 5,\n for: \"accepted_policy\",\n class: \"accepted_policy\"\n}\nconst _hoisted_11 = [\"disabled\"]\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 3 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = { key: 4 }\nconst _hoisted_16 = { class: \"account\" }\nconst _hoisted_17 = { 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 accepted_policy: false\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 formData.accepted_policy = false\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_i18n_t = _resolveComponent(\"i18n-t\")!\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[3] || (_cache[3] = _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 (_unref(action) === 'register')\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n id: \"accepted_policy\",\n disabled: _unref(registration_disabled),\n required: \"\",\n onInvalid: invalidateForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((formData.accepted_policy) = $event))\n }, null, 40, _hoisted_11), [\n [_vModelCheckbox, formData.accepted_policy]\n ]),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.READ_AND_ACCEPT_PRIVACY_POLICY\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, {\n to: \"/privacy-policy\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('privacy_policy.TITLE')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ]))\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_12)\n ], 34),\n (_unref(action) === 'login')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\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_14, \"-\"))\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_15, [\n _createElementVNode(\"span\", _hoisted_16, _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_17, [\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=4f112f24&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-4f112f24\"]])\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\": 3010,\n\t\"./en/en.ts\": 2709,\n\t\"./fr/fr.ts\": 5479,\n\t\"./it/it.ts\": 6013,\n\t\"./nb/nb.ts\": 1901,\n\t\"./nl/nl.ts\": 3726\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\",\"222\":\"password.fr\",\"261\":\"password.en\",\"328\":\"admin\",\"401\":\"workouts\",\"802\":\"password.it\",\"845\":\"profile\",\"881\":\"password\",\"940\":\"password.de\"}[chunkId] || chunkId) + \".\" + {\"24\":\"572eac46\",\"93\":\"37abd50d\",\"193\":\"d3c3c7bd\",\"222\":\"1d179591\",\"243\":\"d72fe9e5\",\"261\":\"b4ea7085\",\"328\":\"4313b7d9\",\"401\":\"0fd5b207\",\"431\":\"386df171\",\"633\":\"23ee7aff\",\"802\":\"be465eec\",\"845\":\"98e985f4\",\"858\":\"922b6a43\",\"881\":\"c0f2f8e4\",\"940\":\"b81f881f\"}[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\":\"c2966dd5\",\"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 = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, 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\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\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, null, 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__(136); })\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","privacy_policy","PrivacyPolicyTranslations","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","_defineComponent","__name","props","version","adminContact","setup","__props","toRefs","_ctx","_cache","_component_router_link","_resolveComponent","_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","to","_withCtx","$t","_","_createCommentVNode","href","__exports__","_hoisted_12","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","target","watch","_withDirectives","maxLength","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","Mountaineering","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","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","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","rows","snarkdown","linkifyAndClean","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","exportRequest","exportRequestDate","getExportRequestDate","generatingLink","invalidateForm","updateUserForm","updatePassword","updateNewPassword","canRequestExport","isBefore","Date","subDays","updateProfile","payload","updateDisplayModal","deleteAccount","requestExport","async","downloadArchive","filename","responseType","then","archiveFileUrl","URL","createObjectURL","Blob","archive_link","createElement","setAttribute","appendChild","click","finally","isSuccessValue","_component_Modal","onConfirmAction","onCancelAction","errors","required","onInvalid","PasswordInput","onUpdatePassword","onPasswordError","checkStrength","status","file_name","file_size","first_name","last_name","birth_date","location","bio","registrationDate","format","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_27","weekStart","imperialUnits","ascentData","dateFormatOptions","availableDateFormatOptions","toUTCString","updateTZ","updateAscentDisplay","updateImperialUnit","updateWeekM","lang","_vModelSelect","TimezoneDropdown","dateFormat","start","unit","fittrackee_private_policy_date","getTimezone","private_policy_date","getPolicyDate","paragraphs","Intl","DateTimeFormat","resolvedOptions","timeZone","dateStringFormats","privacy_policy_date","paragraph","acceptedPolicy","accepted_privacy_policy","PrivacyPolicy","_vModelCheckbox","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","rel","weather_provider","get_weather_provider","src","alt","BikePic","About","workout","hasElevation","ascent","descent","_component_Distance","workoutId","workout_date","formatDistance","addSuffix","with_gpx","StaticMap","moving","min_alt","max_alt","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","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","PrivacyPolicyToAccept","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","UserPrivacyPolicyValidation","displaySegment","AdminMenu","AdminApplication","AdminSports","fromAdmin","AdminUsers","AboutView","PrivacyPolicyView","NotFoundView","createRouter","history","createWebHistory","process","pathsWithoutAuthentication","pathsWithoutChecks","beforeEach","next","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","resetPassword","reset_password","activate","new_email","removeAuthUserData","localStorage","removeItem","token","auth_token","setItem","refreshUser","actionType","redirectUrl","form","FormData","append","accepted_policy","authUserProfile","isRegistrationSuccess","mutations","authUserState","get_client","set","redirect_url","oAuth2State","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","de","en","fr","it","nl","dateString","withTime","withSeconds","inputDate","l","df","suffixes","fileSize","asText","floor","pow","msg","errorInfo","m","sanitizeHtml","linkifyHtml","allowedTags","disallowedTagsMode","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","getTemperature","temperatureInCelsius","temperature","Number","getWindSpeed","windSpeedInMS","windSpeed","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","loadLanguagePackage","setZxcvbnOptions","zxcvbnCommonPackage","zxcvbnLanguagePackage","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","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","head","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","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/profile.98e985f4.js b/fittrackee/dist/static/js/profile.9d91816f.js similarity index 98% rename from fittrackee/dist/static/js/profile.98e985f4.js rename to fittrackee/dist/static/js/profile.9d91816f.js index 17c0f7ed..3d9b10c0 100644 --- a/fittrackee/dist/static/js/profile.98e985f4.js +++ b/fittrackee/dist/static/js/profile.9d91816f.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[845],{4264:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"account-confirmation",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"AccountConfirmationView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),S=(0,n.Fl)((()=>t.query.token));function m(){S.value?_.dispatch(c.YN.ACTIONS.CONFIRM_ACCOUNT,{token:S.value}):r.push("/")}return(0,n.wF)((()=>m())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,n.up)("router-link");return(0,a.SU)(d)?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n.Wm)(r,{class:"links",to:"/account-confirmation/resend"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)])),_:1})])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-785df978"]]);var m=S},8793:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),c=r(5801),i=r(9917);const l={key:0,id:"email-update",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"EmailUpdateView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,i.o)(),d=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,n.Fl)((()=>_.getters[c.YN.GETTERS.IS_AUTHENTICATED])),m=(0,n.Fl)((()=>_.getters[c.SY.GETTERS.ERROR_MESSAGES])),p=(0,n.Fl)((()=>t.query.token));function R(){p.value?_.dispatch(c.YN.ACTIONS.CONFIRM_EMAIL,{token:p.value,refreshUser:S.value}):r.push("/")}return(0,n.wF)((()=>R())),(0,n.Ah)((()=>_.commit(c.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,n.YP)((()=>m.value),(e=>{d.value.username&&e&&r.push("/")})),(e,t)=>{const r=(0,n.up)("router-link"),u=(0,n.up)("i18n-t");return(0,a.SU)(m)&&!(0,a.SU)(d).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n._)("span",null,[(0,n.Wm)(u,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:(0,n.w5)((()=>[(0,n.Wm)(r,{to:"/login"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("user.LOG_IN")),1)])),_:1})])),_:1})])])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-8c2ec9ce"]]);var m=S},1133:function(e,t,r){r.r(t),r.d(t,{default:function(){return d}});var n=r(6252),a=r(2262),s=r(5801),u=r(9917);const o=e=>((0,n.dD)("data-v-6646c65e"),e=e(),(0,n.Cn)(),e),c={key:0,id:"profile",class:"view"},i=o((()=>(0,n._)("div",{id:"bottom"},null,-1)));var l=(0,n.aZ)({__name:"ProfileView",setup(e){const t=(0,u.o)(),r=(0,n.Fl)((()=>t.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,n.up)("router-view");return(0,a.SU)(r).username?((0,n.wg)(),(0,n.iD)("div",c,[(0,n.Wm)(s,{user:(0,a.SU)(r)},null,8,["user"]),i])):(0,n.kq)("",!0)}}}),E=r(3744);const _=(0,E.Z)(l,[["__scopeId","data-v-6646c65e"]]);var d=_},9453:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var n=r(6252),a=r(2262),s=r(2201),u=r(2179),o=r(1585),c=r(5801),i=r(9917);const l={key:0,id:"user",class:"view"},E={class:"box"};var _=(0,n.aZ)({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:r}=(0,a.BK)(t),_=(0,s.yj)(),d=(0,i.o)(),S=(0,n.Fl)((()=>d.getters[c.RT.GETTERS.USER]));return(0,n.wF)((()=>{_.params.username&&"string"===typeof _.params.username&&d.dispatch(c.RT.ACTIONS.GET_USER,_.params.username)})),(0,n.Jd)((()=>{d.dispatch(c.RT.ACTIONS.EMPTY_USER)})),(e,t)=>(0,a.SU)(S).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(u.Z,{user:(0,a.SU)(S)},null,8,["user"]),(0,n._)("div",E,[(0,n.Wm)(o.Z,{user:(0,a.SU)(S),"from-admin":(0,a.SU)(r)},null,8,["user","from-admin"])])])):(0,n.kq)("",!0)}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-af7007f4"]]);var m=S}}]); -//# sourceMappingURL=profile.98e985f4.js.map \ No newline at end of file +//# sourceMappingURL=profile.9d91816f.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/profile.98e985f4.js.map b/fittrackee/dist/static/js/profile.9d91816f.js.map similarity index 99% rename from fittrackee/dist/static/js/profile.98e985f4.js.map rename to fittrackee/dist/static/js/profile.9d91816f.js.map index c567d95c..50350e92 100644 --- a/fittrackee/dist/static/js/profile.98e985f4.js.map +++ b/fittrackee/dist/static/js/profile.9d91816f.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/profile.98e985f4.js","mappings":"gQAGA,MACMA,EAAa,CACjBC,IAAK,EACLC,GAAI,uBACJC,MAAO,2BAEHC,EAAa,CAAED,MAAO,iBAU5B,OAA4BE,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,0BACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,MACRC,GAASC,EAAAA,EAAAA,MACTC,GAAQC,EAAAA,EAAAA,KAERC,GAAuDC,EAAAA,EAAAA,KAC3D,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,kBAEhBC,GACJH,EAAAA,EAAAA,KAAS,IAAMP,EAAMW,MAAMD,QAI7B,SAASE,IACHF,EAAMG,MACRT,EAAMU,SAASC,EAAAA,GAAAA,QAAAA,gBAAyC,CACtDL,MAAOA,EAAMG,QAGfX,EAAOc,KAAK,IAEhB,CAIF,OAdEC,EAAAA,EAAAA,KAAc,IAAML,OAYpBM,EAAAA,EAAAA,KAAY,IAAMd,EAAMe,OAAOV,EAAAA,GAAAA,UAAAA,wBAE1B,CAACW,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,IAAOlB,KACVmB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOnC,EAAY,EACpDoC,EAAAA,EAAAA,IAAaC,EAAAA,IACbC,EAAAA,EAAAA,GAAoB,IAAKlC,EAAY,EACnCkC,EAAAA,EAAAA,GAAoB,OAAQ,MAAMC,EAAAA,EAAAA,IAAiBV,EAAKW,GAAG,0BAA4B,IAAK,IAC5FJ,EAAAA,EAAAA,IAAaL,EAAwB,CACnC5B,MAAO,QACPsC,GAAI,gCACH,CACDC,SAASC,EAAAA,EAAAA,KAAS,IAAM,EACtBC,EAAAA,EAAAA,KAAiBL,EAAAA,EAAAA,IAAiBV,EAAKW,GAAG,wCAA0C,KAAM,MAE5FK,EAAG,UAITC,EAAAA,EAAAA,IAAoB,IAAI,EAAK,CAEnC,I,UC9DA,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,sJCLA,MACM/C,EAAa,CACjBC,IAAK,EACLC,GAAI,eACJC,MAAO,2BAEHC,EAAa,CAAED,MAAO,iBAW5B,OAA4BE,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,kBACRC,MAAMC,GAEN,MAAMC,GAAQC,EAAAA,EAAAA,MACRC,GAASC,EAAAA,EAAAA,MACTC,GAAQC,EAAAA,EAAAA,KAERkC,GAA0ChC,EAAAA,EAAAA,KAC9C,IAAMH,EAAMI,QAAQO,EAAAA,GAAAA,QAAAA,qBAEhByB,GAAwCjC,EAAAA,EAAAA,KAC5C,IAAMH,EAAMI,QAAQO,EAAAA,GAAAA,QAAAA,oBAEhBT,GAAuDC,EAAAA,EAAAA,KAC3D,IAAMH,EAAMI,QAAQC,EAAAA,GAAAA,QAAAA,kBAEhBC,GACJH,EAAAA,EAAAA,KAAS,IAAMP,EAAMW,MAAMD,QAI7B,SAAS+B,IACH/B,EAAMG,MACRT,EAAMU,SAASC,EAAAA,GAAAA,QAAAA,cAAuC,CACpDL,MAAOA,EAAMG,MACb6B,YAAaF,EAAgB3B,QAG/BX,EAAOc,KAAK,IAEhB,CAaF,OAxBEC,EAAAA,EAAAA,KAAc,IAAMwB,OAapBvB,EAAAA,EAAAA,KAAY,IAAMd,EAAMe,OAAOV,EAAAA,GAAAA,UAAAA,yBAE/BkC,EAAAA,EAAAA,KACE,IAAMrC,EAAcO,QACnB+B,IACKL,EAAS1B,MAAMgC,UAAYD,GAC7B1C,EAAOc,KAAK,I,IAKb,CAACI,EAAUC,KAChB,MAAMC,GAAyBC,EAAAA,EAAAA,IAAkB,eAC3CuB,GAAoBvB,EAAAA,EAAAA,IAAkB,UAE5C,OAAQC,EAAAA,EAAAA,IAAOlB,MAAmBkB,EAAAA,EAAAA,IAAOe,GAAUM,WAC9CpB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOnC,EAAY,EACpDoC,EAAAA,EAAAA,IAAaC,EAAAA,IACbC,EAAAA,EAAAA,GAAoB,IAAKlC,EAAY,EACnCkC,EAAAA,EAAAA,GAAoB,OAAQ,MAAMC,EAAAA,EAAAA,IAAiBV,EAAKW,GAAG,0BAA4B,IAAK,IAC5FF,EAAAA,EAAAA,GAAoB,OAAQ,KAAM,EAChCF,EAAAA,EAAAA,IAAamB,EAAmB,CAAEC,QAAS,qCAAuC,CAChFd,SAASC,EAAAA,EAAAA,KAAS,IAAM,EACtBP,EAAAA,EAAAA,IAAaL,EAAwB,CAAEU,GAAI,UAAY,CACrDC,SAASC,EAAAA,EAAAA,KAAS,IAAM,EACtBC,EAAAA,EAAAA,KAAiBL,EAAAA,EAAAA,IAAiBV,EAAKW,GAAG,gBAAiB,MAE7DK,EAAG,OAGPA,EAAG,YAKXC,EAAAA,EAAAA,IAAoB,IAAI,EAAK,CAEnC,I,UCpFA,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,gHCLA,MAAMU,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzE1D,EAAa,CACjBC,IAAK,EACLC,GAAI,UACJC,MAAO,QAEHC,EAA2BqD,GAAa,KAAmBnB,EAAAA,EAAAA,GAAoB,MAAO,CAAEpC,GAAI,UAAY,MAAO,KASrH,OAA4BG,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,cACRC,MAAMC,GAEN,MAAMK,GAAQC,EAAAA,EAAAA,KAERkC,GAA0ChC,EAAAA,EAAAA,KAC9C,IAAMH,EAAMI,QAAQO,EAAAA,GAAAA,QAAAA,qBAGxB,MAAO,CAACK,EAAUC,KAChB,MAAM+B,GAAyB7B,EAAAA,EAAAA,IAAkB,eAEjD,OAAQC,EAAAA,EAAAA,IAAOe,GAAUM,WACpBpB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOnC,EAAY,EACpDoC,EAAAA,EAAAA,IAAayB,EAAwB,CAAEC,MAAM7B,EAAAA,EAAAA,IAAOe,IAAa,KAAM,EAAG,CAAC,SAC3E5C,MAEF0C,EAAAA,EAAAA,IAAoB,IAAI,EAAK,CAEnC,I,UChCA,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,8ICLA,MACM/C,EAAa,CACjBC,IAAK,EACLC,GAAI,OACJC,MAAO,QAEHC,EAAa,CAAED,MAAO,OAqB5B,OAA4BE,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,WACRyD,MAAO,CACLC,UAAW,CAAEC,KAAMC,UAErB3D,MAAMC,GAER,MAAMuD,EAAQvD,GAKN,UAAEwD,IAAcG,EAAAA,EAAAA,IAAOJ,GAEvBtD,GAAQC,EAAAA,EAAAA,MACRG,GAAQC,EAAAA,EAAAA,KAERgD,GAAkC9C,EAAAA,EAAAA,KACtC,IAAMH,EAAMI,QAAQmD,EAAAA,GAAAA,QAAAA,QAaxB,OAVE1C,EAAAA,EAAAA,KAAc,KACRjB,EAAM4D,OAAOf,UAA6C,kBAA1B7C,EAAM4D,OAAOf,UAC/CzC,EAAMU,SAAS6C,EAAAA,GAAAA,QAAAA,SAA8B3D,EAAM4D,OAAOf,S,KAI9DgB,EAAAA,EAAAA,KAAgB,KACdzD,EAAMU,SAAS6C,EAAAA,GAAAA,QAAAA,WAA+B,IAG3C,CAACvC,EAAUC,KACRG,EAAAA,EAAAA,IAAO6B,GAAMR,WAChBpB,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAOnC,EAAY,EACpDoC,EAAAA,EAAAA,IAAamC,EAAAA,EAAY,CAAET,MAAM7B,EAAAA,EAAAA,IAAO6B,IAAS,KAAM,EAAG,CAAC,UAC3DxB,EAAAA,EAAAA,GAAoB,MAAOlC,EAAY,EACrCgC,EAAAA,EAAAA,IAAaoC,EAAAA,EAAW,CACtBV,MAAM7B,EAAAA,EAAAA,IAAO6B,GACb,cAAc7B,EAAAA,EAAAA,IAAO+B,IACpB,KAAM,EAAG,CAAC,OAAQ,qBAGzBlB,EAAAA,EAAAA,IAAoB,IAAI,EAE9B,I,UCpEA,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue?226f","webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue?502c","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue","webpack://fittrackee_client/./src/views/user/ProfileView.vue?f4e9","webpack://fittrackee_client/./src/views/user/ProfileView.vue","webpack://fittrackee_client/./src/views/user/UserView.vue?8f92","webpack://fittrackee_client/./src/views/user/UserView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-785df978\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"account-confirmation\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmAccount())\n\n function confirmAccount() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT, {\n token: token.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('buttons.ACCOUNT-CONFIRMATION-RESEND')) + \"? \", 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationView.vue?vue&type=style&index=0&id=785df978&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-785df978\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8c2ec9ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"email-update\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted, watch } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EmailUpdateView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\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 errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmEmail())\n\n function confirmEmail() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL, {\n token: token.value,\n refreshUser: isAuthenticated.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => errorMessages.value,\n (newValue) => {\n if (authUser.value.username && newValue) {\n router.push('/')\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\n return (_unref(errorMessages) && !_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.PROFILE.ERRORED_EMAIL_UPDATE\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOG_IN')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./EmailUpdateView.vue?vue&type=style&index=0&id=8c2ec9ce&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-8c2ec9ce\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, 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-6646c65e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"profile\",\n class: \"view\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileView',\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\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { user: _unref(authUser) }, null, 8, [\"user\"]),\n _hoisted_2\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ProfileView.vue?vue&type=style&index=0&id=6646c65e&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-6646c65e\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-af7007f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"box\" }\n\nimport {\n ComputedRef,\n computed,\n onBeforeMount,\n onBeforeUnmount,\n toRefs,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\n import { USERS_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n fromAdmin: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserView',\n props: {\n fromAdmin: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n fromAdmin: boolean\n };\n\n \n const { fromAdmin } = toRefs(props)\n\n const route = useRoute()\n const store = useStore()\n\n const user: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USER]\n )\n\n onBeforeMount(() => {\n if (route.params.username && typeof route.params.username === 'string') {\n store.dispatch(USERS_STORE.ACTIONS.GET_USER, route.params.username)\n }\n })\n\n onBeforeUnmount(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USER)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(user).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserInfos, {\n user: _unref(user),\n \"from-admin\": _unref(fromAdmin)\n }, null, 8, [\"user\", \"from-admin\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserView.vue?vue&type=style&index=0&id=af7007f4&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-af7007f4\"]])\n\nexport default __exports__"],"names":["_hoisted_1","key","id","class","_hoisted_2","_defineComponent","__name","setup","__props","route","useRoute","router","useRouter","store","useStore","errorMessages","computed","getters","ROOT_STORE","token","query","confirmAccount","value","dispatch","AUTH_USER_STORE","push","onBeforeMount","onUnmounted","commit","_ctx","_cache","_component_router_link","_resolveComponent","_unref","_openBlock","_createElementBlock","_createVNode","ErrorImg","_createElementVNode","_toDisplayString","$t","to","default","_withCtx","_createTextVNode","_","_createCommentVNode","__exports__","authUser","isAuthenticated","confirmEmail","refreshUser","watch","newValue","username","_component_i18n_t","keypath","_withScopeId","n","_pushScopeId","_popScopeId","_component_router_view","user","props","fromAdmin","type","Boolean","toRefs","USERS_STORE","params","onBeforeUnmount","UserHeader","UserInfos"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/profile.9d91816f.js","mappings":"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","sources":["webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue?226f","webpack://fittrackee_client/./src/views/user/AccountConfirmationView.vue","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue?502c","webpack://fittrackee_client/./src/views/user/EmailUpdateView.vue","webpack://fittrackee_client/./src/views/user/ProfileView.vue?f4e9","webpack://fittrackee_client/./src/views/user/ProfileView.vue","webpack://fittrackee_client/./src/views/user/UserView.vue?8f92","webpack://fittrackee_client/./src/views/user/UserView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-785df978\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"account-confirmation\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountConfirmationView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmAccount())\n\n function confirmAccount() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_ACCOUNT, {\n token: token.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_unref(errorMessages))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createVNode(_component_router_link, {\n class: \"links\",\n to: \"/account-confirmation/resend\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('buttons.ACCOUNT-CONFIRMATION-RESEND')) + \"? \", 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountConfirmationView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./AccountConfirmationView.vue?vue&type=style&index=0&id=785df978&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-785df978\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8c2ec9ce\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"email-update\",\n class: \"center-card with-margin\"\n}\nconst _hoisted_2 = { class: \"error-message\" }\n\nimport { computed, ComputedRef, onBeforeMount, onUnmounted, watch } from 'vue'\n import { useRoute, LocationQueryValue, useRouter } from 'vue-router'\n\n import ErrorImg from '@/components/Common/Images/ErrorImg.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EmailUpdateView',\n setup(__props) {\n\n const route = useRoute()\n const router = useRouter()\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 errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const token: ComputedRef =\n computed(() => route.query.token)\n\n onBeforeMount(() => confirmEmail())\n\n function confirmEmail() {\n if (token.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.CONFIRM_EMAIL, {\n token: token.value,\n refreshUser: isAuthenticated.value,\n })\n } else {\n router.push('/')\n }\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => errorMessages.value,\n (newValue) => {\n if (authUser.value.username && newValue) {\n router.push('/')\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\n return (_unref(errorMessages) && !_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ErrorImg),\n _createElementVNode(\"p\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('error.SOMETHING_WRONG')) + \".\", 1),\n _createElementVNode(\"span\", null, [\n _createVNode(_component_i18n_t, { keypath: \"user.PROFILE.ERRORED_EMAIL_UPDATE\" }, {\n default: _withCtx(() => [\n _createVNode(_component_router_link, { to: \"/login\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOG_IN')), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EmailUpdateView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./EmailUpdateView.vue?vue&type=style&index=0&id=8c2ec9ce&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-8c2ec9ce\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, 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-6646c65e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"profile\",\n class: \"view\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport { ComputedRef, computed } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileView',\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\nreturn (_ctx: any,_cache: any) => {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_router_view, { user: _unref(authUser) }, null, 8, [\"user\"]),\n _hoisted_2\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ProfileView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ProfileView.vue?vue&type=style&index=0&id=6646c65e&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-6646c65e\"]])\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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-af7007f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"box\" }\n\nimport {\n ComputedRef,\n computed,\n onBeforeMount,\n onBeforeUnmount,\n toRefs,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\n import { USERS_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n fromAdmin: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'UserView',\n props: {\n fromAdmin: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n fromAdmin: boolean\n };\n\n \n const { fromAdmin } = toRefs(props)\n\n const route = useRoute()\n const store = useStore()\n\n const user: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USER]\n )\n\n onBeforeMount(() => {\n if (route.params.username && typeof route.params.username === 'string') {\n store.dispatch(USERS_STORE.ACTIONS.GET_USER, route.params.username)\n }\n })\n\n onBeforeUnmount(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USER)\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(user).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(UserHeader, { user: _unref(user) }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(UserInfos, {\n user: _unref(user),\n \"from-admin\": _unref(fromAdmin)\n }, null, 8, [\"user\", \"from-admin\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserView.vue?vue&type=style&index=0&id=af7007f4&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-af7007f4\"]])\n\nexport default __exports__"],"names":["_hoisted_1","key","id","class","_hoisted_2","_defineComponent","__name","setup","__props","route","useRoute","router","useRouter","store","useStore","errorMessages","computed","getters","ROOT_STORE","token","query","confirmAccount","value","dispatch","AUTH_USER_STORE","push","onBeforeMount","onUnmounted","commit","_ctx","_cache","_component_router_link","_resolveComponent","_unref","_openBlock","_createElementBlock","_createVNode","ErrorImg","_createElementVNode","_toDisplayString","$t","to","default","_withCtx","_createTextVNode","_","_createCommentVNode","__exports__","authUser","isAuthenticated","confirmEmail","refreshUser","watch","newValue","username","_component_i18n_t","keypath","_withScopeId","n","_pushScopeId","_popScopeId","_component_router_view","user","props","fromAdmin","type","Boolean","toRefs","USERS_STORE","params","onBeforeUnmount","UserHeader","UserInfos"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.572eac46.js b/fittrackee/dist/static/js/reset.685c3c25.js similarity index 99% rename from fittrackee/dist/static/js/reset.572eac46.js rename to fittrackee/dist/static/js/reset.685c3c25.js index 3f02289b..73f869d0 100644 --- a/fittrackee/dist/static/js/reset.572eac46.js +++ b/fittrackee/dist/static/js/reset.685c3c25.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(776);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(776);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.572eac46.js.map \ No newline at end of file +//# sourceMappingURL=reset.685c3c25.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/reset.572eac46.js.map b/fittrackee/dist/static/js/reset.685c3c25.js.map similarity index 99% rename from fittrackee/dist/static/js/reset.572eac46.js.map rename to fittrackee/dist/static/js/reset.685c3c25.js.map index 704d855f..3b5f8b24 100644 --- a/fittrackee/dist/static/js/reset.572eac46.js.map +++ b/fittrackee/dist/static/js/reset.685c3c25.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/reset.572eac46.js","mappings":"uLAEIA,QAAQ,MACRC,GAAG,SACHC,MAAM,6BACN,cAAY,+BACZC,EAAE,MACFC,EAAE,MACFC,QAAQ,sBACRC,MAAA,gDACA,YAAU,Y,GAEVC,EAAAA,EAAAA,GA0CI,WAzCFA,EAAAA,EAAAA,GA6BE,QA5BAC,EAAE,upGA6BJD,EAAAA,EAAAA,GAGE,QAFAC,EAAE,uIAGJD,EAAAA,EAAAA,GAGE,QAFAC,EAAE,8IAGJD,EAAAA,EAAAA,GAEE,QADAC,EAAE,4HAAuH,G,GAxC7HC,G,0CAXFC,EAAAA,EAAAA,IAsDM,MAtDNC,EAsDM,E,CAIN,OACEC,KAAM,a,UCvDV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O,yHCJA,MACMH,EAAa,CACjBV,GAAI,6BACJc,MAAO,2BAEHN,EAAa,CACjBO,IAAK,EACLD,MAAO,cAEHE,EAAa,CAAEF,MAAO,sBACtBG,EAAa,CAAEF,IAAK,GAW1B,OAA4BG,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,2BACRC,MAAO,CACLC,OAAQ,MAEVC,MAAMC,GAER,MAAMH,EAAQG,GAMN,OAAEF,IAAWG,EAAAA,EAAAA,IAAOJ,GAE5B,MAAO,CAACK,EAAUC,KAChB,MAAMC,GAAkBC,EAAAA,EAAAA,IAAkB,QAE1C,OAAQC,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOC,EAAY,CACvC,gBAAnBoB,EAAAA,EAAAA,IAAOT,KACHQ,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOD,EAAY,EACpDuB,EAAAA,EAAAA,IAAaC,EAAAA,IACb1B,EAAAA,EAAAA,GAAoB,MAAOU,GAAYiB,EAAAA,EAAAA,IAAiBR,EAAKS,GAAG,mCAAoC,QAErGL,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOQ,EAAY,EACpDc,EAAAA,EAAAA,IAAaJ,EAAiB,KAAM,CAClCQ,OAAOC,EAAAA,EAAAA,KAAS,IAAM,EACpBC,EAAAA,EAAAA,KAAiBJ,EAAAA,EAAAA,IAAiBR,EAAKS,GAAG,qCAAsC,MAElFI,SAASF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,IAAaQ,EAAAA,EAAc,CAAElB,QAAQS,EAAAA,EAAAA,IAAOT,IAAW,KAAM,EAAG,CAAC,cAEnEmB,EAAG,QAGX,CAEJ,I,UCvDA,MAAM5B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,QCLA,MACMF,EAAa,CACjBV,GAAI,uBACJc,MAAO,QAEHN,EAAa,CAAEM,MAAO,aAS5B,OAA4BI,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,gCACRC,MAAO,CACLC,OAAQ,MAEVC,MAAMC,GAER,MAAMH,EAAQG,GAKN,OAAEF,IAAWG,EAAAA,EAAAA,IAAOJ,GAE5B,MAAO,CAACK,EAAUC,MACRG,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOC,EAAY,EAC3DJ,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,EACrCuB,EAAAA,EAAAA,IAAaU,EAA2B,CAAEpB,QAAQS,EAAAA,EAAAA,IAAOT,IAAW,KAAM,EAAG,CAAC,eAIpF,IChCA,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O,2ICNItB,QAAQ,MACRC,GAAG,UACHC,MAAM,6BACN,cAAY,+BACZC,EAAE,MACFC,EAAE,MACFC,QAAQ,sBACRC,MAAA,gDACA,YAAU,Y,mqHAEVG,G,0CAXFC,EAAAA,EAAAA,IAqFM,MArFNC,EAqFM,E,CAIN,OACEC,KAAM,Y,UCtFV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,QCJA,MACMH,EAAa,CACjBV,GAAI,uBACJc,MAAO,2BAEHN,EAAa,CAAEM,MAAO,oBACtBE,EAAa,CAAED,IAAK,GAW1B,OAA4BG,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,qBACRC,MAAO,CACLC,OAAQ,MAEVC,MAAMC,GAER,MAAMH,EAAQG,GAMN,OAAEF,IAAWG,EAAAA,EAAAA,IAAOJ,GAE5B,MAAO,CAACK,EAAUC,KAChB,MAAMgB,GAAyBd,EAAAA,EAAAA,IAAkB,eAC3Ce,GAAoBf,EAAAA,EAAAA,IAAkB,UAE5C,OAAQC,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOC,EAAY,CACvC,kBAAnBoB,EAAAA,EAAAA,IAAOT,KACHQ,EAAAA,EAAAA,OAAce,EAAAA,EAAAA,IAAaZ,EAAAA,EAAW,CAAEjB,IAAK,OAC7Cc,EAAAA,EAAAA,OAAce,EAAAA,EAAAA,IAAaC,EAAU,CAAE9B,IAAK,MACjDT,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,CACjB,kBAAnBsB,EAAAA,EAAAA,IAAOT,KACHQ,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,OAAQO,GAAYiB,EAAAA,EAAAA,IAAiBR,EAAKS,GAAG,kCAAmC,MAClHL,EAAAA,EAAAA,OAAce,EAAAA,EAAAA,IAAaD,EAAmB,CAC7C5B,IAAK,EACL+B,QAAS,yBACR,CACDC,SAASX,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,IAAaW,EAAwB,CAAEM,GAAI,UAAY,CACrDD,SAASX,EAAAA,EAAAA,KAAS,IAAM,EACtBC,EAAAA,EAAAA,KAAiBJ,EAAAA,EAAAA,IAAiBR,EAAKS,GAAG,gBAAiB,MAE7DM,EAAG,OAGPA,EAAG,QAGX,CAEJ,ICzDA,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,Q,SCLA,MACM9B,EAAa,CACjBV,GAAI,yBACJc,MAAO,2BAYT,OAA4BI,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,oBACRC,MAAO,CACLC,OAAQ,KACR4B,MAAO,CAAEF,QAAS,KAEpBzB,MAAMC,GAER,MAAMH,EAAQG,GAIN,OAAEF,EAAM,MAAE4B,IAAUzB,EAAAA,EAAAA,IAAOJ,GAEnC,MAAO,CAACK,EAAUC,KAChB,MAAMC,GAAkBC,EAAAA,EAAAA,IAAkB,QAE1C,OAAQC,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOC,EAAY,EAC3DqB,EAAAA,EAAAA,IAAaJ,EAAiB,KAAM,CAClCQ,OAAOC,EAAAA,EAAAA,KAAS,IAAM,EACpBC,EAAAA,EAAAA,KAAiBJ,EAAAA,EAAAA,IAAiBR,EAAKS,GAAG,wBAAyB,MAErEI,SAASF,EAAAA,EAAAA,KAAS,IAAM,EACtBL,EAAAA,EAAAA,IAAaQ,EAAAA,EAAc,CACzBlB,QAAQS,EAAAA,EAAAA,IAAOT,GACf4B,OAAOnB,EAAAA,EAAAA,IAAOmB,IACb,KAAM,EAAG,CAAC,SAAU,aAEzBT,EAAG,KAEL,CAEJ,IC5CA,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,QCLA,MACM9B,EAAa,CACjBV,GAAI,iBACJc,MAAO,QAEHN,EAAa,CAAEM,MAAO,aAY5B,OAA4BI,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,oBACRC,MAAO,CACLC,OAAQ,MAEVC,MAAMC,GAER,MAAMH,EAAQG,EAMN2B,GAAQC,EAAAA,EAAAA,MACRC,GAASC,EAAAA,EAAAA,OAET,OAAEhC,IAAWG,EAAAA,EAAAA,IAAOJ,GACpB6B,GAAQK,EAAAA,EAAAA,KAAS,IAAMJ,EAAMK,MAAMN,QAQ3C,OANEO,EAAAA,EAAAA,KAAc,KACS,UAAjBpC,EAAMC,QAAuB4B,EAAMQ,OACrCL,EAAOM,KAAK,I,IAIX,CAACjC,EAAUC,MACRG,EAAAA,EAAAA,OAAcpB,EAAAA,EAAAA,IAAoB,MAAOC,EAAY,EAC3DJ,EAAAA,EAAAA,GAAoB,MAAOE,EAAY,EACpCsB,EAAAA,EAAAA,IAAOT,GAAQsC,WAAW,WACtB9B,EAAAA,EAAAA,OAAce,EAAAA,EAAAA,IAAagB,EAAsB,CAChD7C,IAAK,EACLM,QAAQS,EAAAA,EAAAA,IAAOT,GACf4B,OAAOnB,EAAAA,EAAAA,IAAOmB,IACb,KAAM,EAAG,CAAC,SAAU,aACtBpB,EAAAA,EAAAA,OAAce,EAAAA,EAAAA,IAAaiB,EAAmB,CAC7C9C,IAAK,EACLM,QAAQS,EAAAA,EAAAA,IAAOT,IACd,KAAM,EAAG,CAAC,gBAIvB,ICvDA,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","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.685c3c25.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 diff --git a/fittrackee/dist/static/js/statistics.d3c3c7bd.js b/fittrackee/dist/static/js/statistics.f4227d0e.js similarity index 98% rename from fittrackee/dist/static/js/statistics.d3c3c7bd.js rename to fittrackee/dist/static/js/statistics.f4227d0e.js index 129b183b..ffec58e4 100644 --- a/fittrackee/dist/static/js/statistics.d3c3c7bd.js +++ b/fittrackee/dist/static/js/statistics.f4227d0e.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{7885:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});var a=t(6252),r=t(2262),l=t(3577),o=(t(7658),t(9150)),n=t(436);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-30799d13"]]);var Z=F,x=t(5630),D=t(5801),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]); -//# sourceMappingURL=statistics.d3c3c7bd.js.map \ No newline at end of file +//# sourceMappingURL=statistics.f4227d0e.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/statistics.d3c3c7bd.js.map b/fittrackee/dist/static/js/statistics.f4227d0e.js.map similarity index 99% rename from fittrackee/dist/static/js/statistics.d3c3c7bd.js.map rename to fittrackee/dist/static/js/statistics.f4227d0e.js.map index ab5f7c9a..f2e2f9d8 100644 --- a/fittrackee/dist/static/js/statistics.d3c3c7bd.js.map +++ b/fittrackee/dist/static/js/statistics.f4227d0e.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/statistics.d3c3c7bd.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue?b88a","webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue?57e4","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/index.vue?2efa","webpack://fittrackee_client/./src/components/Statistics/index.vue","webpack://fittrackee_client/./src/views/StatisticsView.vue?9d34","webpack://fittrackee_client/./src/views/StatisticsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-22d55de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-menu\" }\nconst _hoisted_2 = { class: \"chart-arrow\" }\nconst _hoisted_3 = { class: \"time-frames custom-checkboxes-group\" }\nconst _hoisted_4 = { class: \"time-frames-checkboxes custom-checkboxes\" }\nconst _hoisted_5 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_6 = { class: \"chart-arrow\" }\n\nimport { ref } from 'vue'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsMenu',\n emits: ['arrowClick', 'timeFrameUpdate'],\n setup(__props, { emit }) {\n\n \n\n const selectedTimeFrame = ref('month')\n const timeFrames = ['week', 'month', 'year']\n\n function onUpdateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n emit('timeFrameUpdate', timeFrame)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('arrowClick', true)))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(timeFrames, (frame) => {\n return _createElementVNode(\"div\", {\n class: \"time-frame custom-checkbox\",\n key: frame\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: frame,\n name: frame,\n checked: selectedTimeFrame.value === frame,\n onInput: ($event: any) => (onUpdateTimeFrame(frame))\n }, null, 40, _hoisted_5),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`statistics.TIME_FRAMES.${frame}`)), 1)\n ])\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('arrowClick', false)))\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsMenu.vue?vue&type=style&index=0&id=22d55de2&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-22d55de2\"]])\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, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"sports-menu\" }\nconst _hoisted_2 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_3 = { class: \"sport-label\" }\n\nimport { ComputedRef, computed, inject, withDefaults, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n userSports: ISport[]\n selectedSportIds?: number[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsSportsMenu',\n props: {\n userSports: null,\n selectedSportIds: { default: () => [] }\n },\n emits: ['selectedSportIdsUpdate'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { userSports: ISport[], selectedSportIds: number[] };\n\n \n\n \n\n const { t } = useI18n()\n\n const sportColors = inject('sportColors')\n const { selectedSportIds } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.userSports, t)\n )\n\n function updateSelectedSportIds(sportId: number) {\n emit('selectedSportIdsUpdate', sportId)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n type: \"checkbox\",\n key: sport.id,\n style: _normalizeStyle({ color: sport.color ? sport.color : _unref(sportColors)[sport.label] })\n }, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n id: sport.id,\n name: sport.label,\n checked: _unref(selectedSportIds).includes(sport.id),\n onInput: ($event: any) => (updateSelectedSportIds(sport.id))\n }, null, 40, _hoisted_2),\n _createVNode(_component_SportImage, {\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(sport.translatedLabel), 1)\n ], 4))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsSportsMenu.vue?vue&type=style&index=0&id=31a8ca60&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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-30799d13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user-statistics\"\n}\n\nimport { ComputedRef, Ref, computed, ref, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import StatsMenu from '@/components/Statistics/StatsMenu.vue'\n import SportsMenu from '@/components/Statistics/StatsSportsMenu.vue'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IStatisticsDateParams } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { getStatsDateParams, updateChartParams } from '@/utils/statistics'\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 { sports, user } = toRefs(props)\n const selectedTimeFrame = ref('month')\n const chartParams: Ref = ref(\n getChartParams(selectedTimeFrame.value)\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const selectedSportIds: Ref = ref(getSports(props.sports))\n\n function updateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n chartParams.value = getChartParams(selectedTimeFrame.value)\n }\n function getChartParams(timeFrame: string): IStatisticsDateParams {\n return getStatsDateParams(new Date(), timeFrame, props.user.weekm)\n }\n function handleOnClickArrows(backward: boolean) {\n chartParams.value = updateChartParams(\n chartParams.value,\n backward,\n props.user.weekm\n )\n }\n function getSports(sports: ISport[]) {\n return sports.map((sport) => sport.id)\n }\n function updateSelectedSportIds(sportId: number) {\n if (selectedSportIds.value.includes(sportId)) {\n selectedSportIds.value = selectedSportIds.value.filter(\n (id) => id !== sportId\n )\n } else {\n selectedSportIds.value.push(sportId)\n }\n }\n\n watch(\n () => props.sports,\n (newSports) => {\n selectedSportIds.value = getSports(newSports)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(translatedSports))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatsMenu, {\n onTimeFrameUpdate: updateTimeFrame,\n onArrowClick: handleOnClickArrows\n }),\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n chartParams: chartParams.value,\n \"displayed-sport-ids\": selectedSportIds.value,\n fullStats: true\n }, null, 8, [\"sports\", \"user\", \"chartParams\", \"displayed-sport-ids\"]),\n _createVNode(SportsMenu, {\n \"selected-sport-ids\": selectedSportIds.value,\n \"user-sports\": _unref(sports),\n onSelectedSportIdsUpdate: updateSelectedSportIds\n }, null, 8, [\"selected-sport-ids\", \"user-sports\"])\n ]))\n : _createCommentVNode(\"\", true)\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=30799d13&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-30799d13\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, 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-2e341d4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"statistics\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\n\nimport { ComputedRef, computed } from 'vue'\n\n import Statistics from '@/components/Statistics/index.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.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: 'StatisticsView',\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].filter((sport) =>\n authUser.value.sports_list.includes(sport.id)\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(Statistics, {\n class: _normalizeClass({ 'stats-disabled': _unref(authUser).nb_workouts === 0 }),\n user: _unref(authUser),\n sports: _unref(sports)\n }, null, 8, [\"class\", \"user\", \"sports\"])\n ]),\n _: 1\n }),\n (_unref(authUser).nb_workouts === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatisticsView.vue?vue&type=style&index=0&id=2e341d4e&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-2e341d4e\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","emits","setup","__props","emit","selectedTimeFrame","ref","timeFrames","onUpdateTimeFrame","timeFrame","value","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","onClick","$event","_Fragment","_renderList","frame","key","type","id","name","checked","onInput","_toDisplayString","$t","__exports__","props","userSports","selectedSportIds","default","t","useI18n","sportColors","inject","toRefs","translatedSports","computed","translateSports","updateSelectedSportIds","sportId","_component_SportImage","_resolveComponent","_unref","sport","style","_normalizeStyle","color","label","includes","_createVNode","translatedLabel","sports","user","chartParams","getChartParams","getSports","updateTimeFrame","getStatsDateParams","Date","weekm","handleOnClickArrows","backward","updateChartParams","map","filter","push","watch","newSports","StatsMenu","onTimeFrameUpdate","onArrowClick","StatChart","fullStats","SportsMenu","onSelectedSportIdsUpdate","_createCommentVNode","store","useStore","authUser","getters","AUTH_USER_STORE","SPORTS_STORE","sports_list","_component_Card","username","title","_withCtx","_createTextVNode","content","Statistics","_normalizeClass","nb_workouts","_","_createBlock","NoWorkouts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/statistics.f4227d0e.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue?b88a","webpack://fittrackee_client/./src/components/Statistics/StatsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue?57e4","webpack://fittrackee_client/./src/components/Statistics/StatsSportsMenu.vue","webpack://fittrackee_client/./src/components/Statistics/index.vue?2efa","webpack://fittrackee_client/./src/components/Statistics/index.vue","webpack://fittrackee_client/./src/views/StatisticsView.vue?9d34","webpack://fittrackee_client/./src/views/StatisticsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-22d55de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-menu\" }\nconst _hoisted_2 = { class: \"chart-arrow\" }\nconst _hoisted_3 = { class: \"time-frames custom-checkboxes-group\" }\nconst _hoisted_4 = { class: \"time-frames-checkboxes custom-checkboxes\" }\nconst _hoisted_5 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_6 = { class: \"chart-arrow\" }\n\nimport { ref } from 'vue'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsMenu',\n emits: ['arrowClick', 'timeFrameUpdate'],\n setup(__props, { emit }) {\n\n \n\n const selectedTimeFrame = ref('month')\n const timeFrames = ['week', 'month', 'year']\n\n function onUpdateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n emit('timeFrameUpdate', timeFrame)\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('arrowClick', true)))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(timeFrames, (frame) => {\n return _createElementVNode(\"div\", {\n class: \"time-frame custom-checkbox\",\n key: frame\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: frame,\n name: frame,\n checked: selectedTimeFrame.value === frame,\n onInput: ($event: any) => (onUpdateTimeFrame(frame))\n }, null, 40, _hoisted_5),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`statistics.TIME_FRAMES.${frame}`)), 1)\n ])\n ])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emit('arrowClick', false)))\n })\n ])\n ]))\n}\n}\n\n})","import script from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsMenu.vue?vue&type=style&index=0&id=22d55de2&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-22d55de2\"]])\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, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"sports-menu\" }\nconst _hoisted_2 = [\"id\", \"name\", \"checked\", \"onInput\"]\nconst _hoisted_3 = { class: \"sport-label\" }\n\nimport { ComputedRef, computed, inject, withDefaults, toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { translateSports } from '@/utils/sports'\n\n interface Props {\n userSports: ISport[]\n selectedSportIds?: number[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'StatsSportsMenu',\n props: {\n userSports: null,\n selectedSportIds: { default: () => [] }\n },\n emits: ['selectedSportIdsUpdate'],\n setup(__props: any, { emit }) {\n\nconst props = __props as { userSports: ISport[], selectedSportIds: number[] };\n\n \n\n \n\n const { t } = useI18n()\n\n const sportColors = inject('sportColors')\n const { selectedSportIds } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.userSports, t)\n )\n\n function updateSelectedSportIds(sportId: number) {\n emit('selectedSportIdsUpdate', sportId)\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"label\", {\n type: \"checkbox\",\n key: sport.id,\n style: _normalizeStyle({ color: sport.color ? sport.color : _unref(sportColors)[sport.label] })\n }, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n id: sport.id,\n name: sport.label,\n checked: _unref(selectedSportIds).includes(sport.id),\n onInput: ($event: any) => (updateSelectedSportIds(sport.id))\n }, null, 40, _hoisted_2),\n _createVNode(_component_SportImage, {\n \"sport-label\": sport.label,\n color: sport.color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(sport.translatedLabel), 1)\n ], 4))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatsSportsMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatsSportsMenu.vue?vue&type=style&index=0&id=31a8ca60&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, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-30799d13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"user-statistics\"\n}\n\nimport { ComputedRef, Ref, computed, ref, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import StatChart from '@/components/Common/StatsChart/index.vue'\n import StatsMenu from '@/components/Statistics/StatsMenu.vue'\n import SportsMenu from '@/components/Statistics/StatsSportsMenu.vue'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IStatisticsDateParams } from '@/types/statistics'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { getStatsDateParams, updateChartParams } from '@/utils/statistics'\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 { sports, user } = toRefs(props)\n const selectedTimeFrame = ref('month')\n const chartParams: Ref = ref(\n getChartParams(selectedTimeFrame.value)\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const selectedSportIds: Ref = ref(getSports(props.sports))\n\n function updateTimeFrame(timeFrame: string) {\n selectedTimeFrame.value = timeFrame\n chartParams.value = getChartParams(selectedTimeFrame.value)\n }\n function getChartParams(timeFrame: string): IStatisticsDateParams {\n return getStatsDateParams(new Date(), timeFrame, props.user.weekm)\n }\n function handleOnClickArrows(backward: boolean) {\n chartParams.value = updateChartParams(\n chartParams.value,\n backward,\n props.user.weekm\n )\n }\n function getSports(sports: ISport[]) {\n return sports.map((sport) => sport.id)\n }\n function updateSelectedSportIds(sportId: number) {\n if (selectedSportIds.value.includes(sportId)) {\n selectedSportIds.value = selectedSportIds.value.filter(\n (id) => id !== sportId\n )\n } else {\n selectedSportIds.value.push(sportId)\n }\n }\n\n watch(\n () => props.sports,\n (newSports) => {\n selectedSportIds.value = getSports(newSports)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(translatedSports))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(StatsMenu, {\n onTimeFrameUpdate: updateTimeFrame,\n onArrowClick: handleOnClickArrows\n }),\n _createVNode(StatChart, {\n sports: _unref(sports),\n user: _unref(user),\n chartParams: chartParams.value,\n \"displayed-sport-ids\": selectedSportIds.value,\n fullStats: true\n }, null, 8, [\"sports\", \"user\", \"chartParams\", \"displayed-sport-ids\"]),\n _createVNode(SportsMenu, {\n \"selected-sport-ids\": selectedSportIds.value,\n \"user-sports\": _unref(sports),\n onSelectedSportIdsUpdate: updateSelectedSportIds\n }, null, 8, [\"selected-sport-ids\", \"user-sports\"])\n ]))\n : _createCommentVNode(\"\", true)\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=30799d13&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-30799d13\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createVNode as _createVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, 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-2e341d4e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"statistics\",\n class: \"view\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"container\"\n}\n\nimport { ComputedRef, computed } from 'vue'\n\n import Statistics from '@/components/Statistics/index.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.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: 'StatisticsView',\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].filter((sport) =>\n authUser.value.sports_list.includes(sport.id)\n )\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(Statistics, {\n class: _normalizeClass({ 'stats-disabled': _unref(authUser).nb_workouts === 0 }),\n user: _unref(authUser),\n sports: _unref(sports)\n }, null, 8, [\"class\", \"user\", \"sports\"])\n ]),\n _: 1\n }),\n (_unref(authUser).nb_workouts === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StatisticsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./StatisticsView.vue?vue&type=style&index=0&id=2e341d4e&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-2e341d4e\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","emits","setup","__props","emit","selectedTimeFrame","ref","timeFrames","onUpdateTimeFrame","timeFrame","value","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","onClick","$event","_Fragment","_renderList","frame","key","type","id","name","checked","onInput","_toDisplayString","$t","__exports__","props","userSports","selectedSportIds","default","t","useI18n","sportColors","inject","toRefs","translatedSports","computed","translateSports","updateSelectedSportIds","sportId","_component_SportImage","_resolveComponent","_unref","sport","style","_normalizeStyle","color","label","includes","_createVNode","translatedLabel","sports","user","chartParams","getChartParams","getSports","updateTimeFrame","getStatsDateParams","Date","weekm","handleOnClickArrows","backward","updateChartParams","map","filter","push","watch","newSports","StatsMenu","onTimeFrameUpdate","onArrowClick","StatChart","fullStats","SportsMenu","onSelectedSportIdsUpdate","_createCommentVNode","store","useStore","authUser","getters","AUTH_USER_STORE","SPORTS_STORE","sports_list","_component_Card","username","title","_withCtx","_createTextVNode","content","Statistics","_normalizeClass","nb_workouts","_","_createBlock","NoWorkouts"],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.0fd5b207.js b/fittrackee/dist/static/js/workouts.a06ab85f.js similarity index 99% rename from fittrackee/dist/static/js/workouts.0fd5b207.js rename to fittrackee/dist/static/js/workouts.a06ab85f.js index 5bf5dfe3..b8663e28 100644 --- a/fittrackee/dist/static/js/workouts.0fd5b207.js +++ b/fittrackee/dist/static/js/workouts.a06ab85f.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[401],{2238:function(t,e,o){o.d(e,{Z:function(){return nt}});o(7658);var a=o(6252),n=o(3577),l=o(2262),r=o(9963),s=o(9150),i=o(2201),u=o(5801),d=o(9917),c=o(6558),p=o(8966),m=o(631),w=o(3649);const k={id:"workout-form"},_=["onSubmit"],v={class:"form-items"},f={key:0,class:"form-item-radio"},g=["checked","disabled"],y={for:"withGpx"},S=["checked","disabled"],U={for:"withoutGpx"},h={class:"form-item"},b=["disabled"],T=["value"],E={key:1,class:"form-item"},D={for:"gpxFile"},O=["disabled"],I={class:"files-help info-box"},A={key:2,class:"form-item"},C={for:"title"},R=["required","disabled"],$={key:3},N={class:"workout-date-duration"},x={class:"form-item"},z={class:"workout-date-time"},L=["disabled"],j=["disabled"],W={class:"form-item"},P=["disabled"],F=["disabled"],B=["disabled"],H={class:"workout-data"},M={class:"form-item"},q=["disabled"],Z={class:"form-item"},G=["disabled"],K={class:"form-item"},V=["disabled"],Y={class:"form-item"},X={key:1},J={key:2,class:"form-buttons"},Q=["disabled"],tt=["onClick"];var et=(0,a.aZ)({__name:"WorkoutEdition",props:{authUser:null,sports:null,isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},workout:{default:()=>({})}},setup(t){const e=t,{t:o}=(0,s.QT)(),et=(0,d.o)(),ot=(0,i.tv)(),{authUser:at,workout:nt,isCreation:lt,loading:rt}=(0,l.BK)(e),st=(0,a.Fl)((()=>(0,m.xH)(e.sports,o,"is_active_for_user",nt.value.id?[nt.value.sport_id]:[]))),it=(0,a.Fl)((()=>et.getters[u.SY.GETTERS.APP_CONFIG])),ut=it.value.max_single_file_size?(0,p.Z)(it.value.max_single_file_size):"",dt=it.value.gpx_limit_import,ct=it.value.max_zip_file_size?(0,p.Z)(it.value.max_zip_file_size):"",pt=(0,a.Fl)((()=>et.getters[u.SY.GETTERS.ERROR_MESSAGES])),mt=(0,l.qj)({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:"",workoutAscent:"",workoutDescent:""}),wt=(0,l.iH)(e.workout.id?e.workout.with_gpx:e.isCreation);let kt=null;const _t=(0,l.iH)(!1),vt=(0,l.iH)([]);function ft(t){mt.notes=t}function gt(){wt.value=!wt.value,_t.value=!1}function yt(t){t.target.files&&(kt=t.target.files[0])}function St(t){if(mt.sport_id=`${t.sport_id}`,mt.title=t.title,mt.notes=t.notes,!t.with_gpx){const o=(0,c.Jo)((0,c.eB)(t.workout_date,e.authUser.timezone),"yyyy-MM-dd"),a=t.duration.split(":");mt.workoutDistance=`${at.value.imperial_units?(0,w.sC)(t.distance,"km","mi",3):parseFloat(t.distance.toFixed(3))}`,mt.workoutDate=o.workout_date,mt.workoutTime=o.workout_time,mt.workoutDurationHour=a[0],mt.workoutDurationMinutes=a[1],mt.workoutDurationSeconds=a[2],mt.workoutAscent=null===t.ascent?"":`${at.value.imperial_units?(0,w.sC)(t.ascent,"m","ft",2):parseFloat(t.ascent.toFixed(2))}`,mt.workoutDescent=null===t.descent?"":`${at.value.imperial_units?(0,w.sC)(t.descent,"m","ft",2):parseFloat(t.descent.toFixed(2))}`}}function Ut(){return vt.value.includes("workouts.INVALID_DISTANCE")}function ht(){return vt.value.includes("workouts.INVALID_DURATION")}function bt(){return vt.value.includes("workouts.INVALID_ASCENT_OR_DESCENT")}function Tt(t){vt.value=[],t.title=mt.title,t.duration=3600*+mt.workoutDurationHour+60*+mt.workoutDurationMinutes+ +mt.workoutDurationSeconds,t.duration<=0&&vt.value.push("workouts.INVALID_DURATION"),t.distance=at.value.imperial_units?(0,w.sC)(+mt.workoutDistance,"mi","km",3):+mt.workoutDistance,t.distance<=0&&vt.value.push("workouts.INVALID_DISTANCE"),t.workout_date=`${mt.workoutDate} ${mt.workoutTime}`,t.ascent=""===mt.workoutAscent?null:at.value.imperial_units?(0,w.sC)(+mt.workoutAscent,"ft","m",3):+mt.workoutAscent,t.descent=""===mt.workoutDescent?null:at.value.imperial_units?(0,w.sC)(+mt.workoutDescent,"ft","m",3):+mt.workoutDescent,(null!==t.ascent&&null===t.descent||null===t.ascent&&null!==t.descent)&&vt.value.push("workouts.INVALID_ASCENT_OR_DESCENT")}function Et(){const t={sport_id:+mt.sport_id,notes:mt.notes};if(e.workout.id)e.workout.with_gpx?t.title=mt.title:Tt(t),vt.value.length>0?et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,vt.value):et.dispatch(u.aX.ACTIONS.EDIT_WORKOUT,{workoutId:e.workout.id,data:t});else if(wt.value){if(!kt){const t="workouts.NO_FILE_PROVIDED";return void et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,t)}t.file=kt,et.dispatch(u.aX.ACTIONS.ADD_WORKOUT,t)}else Tt(t),vt.value.length>0?et.commit(u.SY.MUTATIONS.SET_ERROR_MESSAGES,vt.value):et.dispatch(u.aX.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,t)}function Dt(){e.workout.id?ot.push({name:"Workout",params:{workoutId:e.workout.id}}):ot.go(-1)}function Ot(){_t.value=!0}return(0,a.bv)((()=>{e.workout.id&&St(e.workout)})),(0,a.Ah)((()=>et.commit(u.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,a.YP)((()=>e.workout),(async(t,e)=>{t!==e&&t&&t.id&&St(t)})),(t,e)=>{const o=(0,a.up)("CustomTextArea"),s=(0,a.up)("ErrorMessage"),i=(0,a.up)("Loader"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",{id:"workout-edition",class:(0,n.C_)(["center-card with-margin",{"center-form":(0,l.SU)(nt)&&(0,l.SU)(nt).with_gpx}])},[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,n.zw)(t.$t(`workouts.${(0,l.SU)(lt)?"ADD":"EDIT"}_WORKOUT`)),1)])),content:(0,a.w5)((()=>[(0,a._)("div",k,[(0,a._)("form",{class:(0,n.C_)({errors:_t.value}),onSubmit:(0,r.iM)(Et,["prevent"])},[(0,a._)("div",v,[(0,l.SU)(lt)?((0,a.wg)(),(0,a.iD)("div",f,[(0,a._)("div",null,[(0,a._)("input",{id:"withGpx",type:"radio",checked:wt.value,disabled:(0,l.SU)(rt),onClick:gt},null,8,g),(0,a._)("label",y,(0,n.zw)(t.$t("workouts.WITH_GPX")),1)]),(0,a._)("div",null,[(0,a._)("input",{id:"withoutGpx",type:"radio",checked:!wt.value,disabled:(0,l.SU)(rt),onClick:gt},null,8,S),(0,a._)("label",U,(0,n.zw)(t.$t("workouts.WITHOUT_GPX")),1)])])):(0,a.kq)("",!0),(0,a._)("div",h,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.SPORT",1))+"*: ",1),(0,a.wy)((0,a._)("select",{id:"sport",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[0]||(e[0]=t=>mt.sport_id=t)},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,l.SU)(st),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,n.zw)(t.translatedLabel),9,T)))),128))],40,b),[[r.bM,mt.sport_id]])]),(0,l.SU)(lt)&&wt.value?((0,a.wg)(),(0,a.iD)("div",E,[(0,a._)("label",D,(0,n.zw)(t.$t("workouts.GPX_FILE"))+" "+(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+"*: ",1),(0,a._)("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:(0,l.SU)(rt),required:"",onInvalid:Ot,onInput:yt},null,40,O),(0,a._)("div",I,[(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.GPX_FILE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(ut)),1)])]),(0,a._)("div",null,[(0,a._)("strong",null,(0,n.zw)(t.$t("workouts.ZIP_ARCHIVE"))+":",1),(0,a._)("ul",null,[(0,a._)("li",null,(0,n.zw)(t.$t("workouts.NO_FOLDER")),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_FILES"))+": "+(0,n.zw)((0,l.SU)(dt)),1),(0,a._)("li",null,(0,n.zw)(t.$t("workouts.MAX_SIZE"))+": "+(0,n.zw)((0,l.SU)(ct)),1)])])])])):((0,a.wg)(),(0,a.iD)("div",A,[(0,a._)("label",C,(0,n.zw)(t.$t("workouts.TITLE"))+": ",1),(0,a.wy)((0,a._)("input",{id:"title",name:"title",type:"text",required:!(0,l.SU)(lt),onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[1]||(e[1]=t=>mt.title=t)},null,40,R),[[r.nr,mt.title]])])),wt.value?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",$,[(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.WORKOUT_DATE"))+"*:",1),(0,a._)("div",z,[(0,a.wy)((0,a._)("input",{id:"workout-date",name:"workout-date",type:"date",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[2]||(e[2]=t=>mt.workoutDate=t)},null,40,L),[[r.nr,mt.workoutDate]]),(0,a.wy)((0,a._)("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[3]||(e[3]=t=>mt.workoutTime=t)},null,40,j),[[r.nr,mt.workoutTime]])])]),(0,a._)("div",W,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DURATION"))+"*:",1),(0,a._)("div",null,[(0,a.wy)((0,a._)("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",placeholder:"HH",minlength:"1",maxlength:"2",pattern:"^([0-1]?[0-9]|2[0-3])$",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[4]||(e[4]=t=>mt.workoutDurationHour=t)},null,42,P),[[r.nr,mt.workoutDurationHour]]),(0,a.Uk)(" : "),(0,a.wy)((0,a._)("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"MM",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[5]||(e[5]=t=>mt.workoutDurationMinutes=t)},null,42,F),[[r.nr,mt.workoutDurationMinutes]]),(0,a.Uk)(" : "),(0,a.wy)((0,a._)("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:(0,n.C_)(["workout-duration",{errored:ht()}]),type:"text",pattern:"^([0-5][0-9])$",minlength:"2",maxlength:"2",placeholder:"SS",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[6]||(e[6]=t=>mt.workoutDurationSeconds=t)},null,42,B),[[r.nr,mt.workoutDurationSeconds]])])])]),(0,a._)("div",H,[(0,a._)("div",M,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"mi":"km")+")*: ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:Ut()}),name:"workout-distance",type:"number",min:"0",step:"0.001",required:"",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[7]||(e[7]=t=>mt.workoutDistance=t)},null,42,q),[[r.nr,mt.workoutDistance]])]),(0,a._)("div",Z,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.ASCENT"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"ft":"m")+"): ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:bt()}),name:"workout-ascent",type:"number",min:"0",step:"0.01",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[8]||(e[8]=t=>mt.workoutAscent=t)},null,42,G),[[r.nr,mt.workoutAscent]])]),(0,a._)("div",K,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.DESCENT"))+" ("+(0,n.zw)((0,l.SU)(at).imperial_units?"ft":"m")+"): ",1),(0,a.wy)((0,a._)("input",{class:(0,n.C_)({errored:bt()}),name:"workout-descent",type:"number",min:"0",step:"0.01",onInvalid:Ot,disabled:(0,l.SU)(rt),"onUpdate:modelValue":e[9]||(e[9]=t=>mt.workoutDescent=t)},null,42,V),[[r.nr,mt.workoutDescent]])])])])),(0,a._)("div",Y,[(0,a._)("label",null,(0,n.zw)(t.$t("workouts.NOTES"))+": ",1),(0,a.Wm)(o,{name:"notes",input:mt.notes,disabled:(0,l.SU)(rt),onUpdateValue:ft},null,8,["input","disabled"])])]),(0,l.SU)(pt)?((0,a.wg)(),(0,a.j4)(s,{key:0,message:(0,l.SU)(pt)},null,8,["message"])):(0,a.kq)("",!0),(0,l.SU)(rt)?((0,a.wg)(),(0,a.iD)("div",X,[(0,a.Wm)(i)])):((0,a.wg)(),(0,a.iD)("div",J,[(0,a._)("button",{class:"confirm",type:"submit",disabled:(0,l.SU)(rt)},(0,n.zw)(t.$t("buttons.SUBMIT")),9,Q),(0,a._)("button",{class:"cancel",onClick:(0,r.iM)(Dt,["prevent"])},(0,n.zw)(t.$t("buttons.CANCEL")),9,tt)]))],42,_)])])),_:1})],2)}}}),ot=o(3744);const at=(0,ot.Z)(et,[["__scopeId","data-v-45d3bf87"]]);var nt=at},4189:function(t,e,o){o.r(e),o.d(e,{default:function(){return p}});var a=o(6252),n=o(2262),l=o(2238),r=o(5801),s=o(9917);const i={id:"add-workout",class:"view"},u={class:"container"};var d=(0,a.aZ)({__name:"AddWorkout",setup(t){const e=(0,s.o)(),o=(0,a.Fl)((()=>e.getters[r.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>e.getters[r.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>e.getters[r.aX.GETTERS.WORKOUT_DATA]));return(t,e)=>((0,a.wg)(),(0,a.iD)("div",i,[(0,a._)("div",u,[(0,a.Wm)(l.Z,{authUser:(0,n.SU)(d),sports:(0,n.SU)(o),isCreation:!0,loading:(0,n.SU)(c).loading},null,8,["authUser","sports","loading"])])]))}});const c=d;var p=c},8237:function(t,e,o){o.r(e),o.d(e,{default:function(){return m}});var a=o(6252),n=o(2262),l=o(2201),r=o(2238),s=o(5801),i=o(9917);const u={id:"edit-workout",class:"view"},d={class:"container"};var c=(0,a.aZ)({__name:"EditWorkout",setup(t){const e=(0,l.yj)(),o=(0,i.o)(),c=(0,a.Fl)((()=>o.getters[s.YN.GETTERS.AUTH_USER_PROFILE])),p=(0,a.Fl)((()=>o.getters[s.O8.GETTERS.SPORTS])),m=(0,a.Fl)((()=>o.getters[s.aX.GETTERS.WORKOUT_DATA]));return(0,a.wF)((()=>{o.dispatch(s.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:e.params.workoutId})})),(0,a.YP)((()=>e.params.workoutId),(async t=>{t||o.commit(s.aX.MUTATIONS.EMPTY_WORKOUT)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",u,[(0,a._)("div",d,[(0,n.SU)(m).workout.id?((0,a.wg)(),(0,a.j4)(r.Z,{key:0,authUser:(0,n.SU)(c),sports:(0,n.SU)(p),workout:(0,n.SU)(m).workout,loading:(0,n.SU)(m).loading},null,8,["authUser","sports","workout","loading"])):(0,a.kq)("",!0)])]))}});const p=c;var m=p},5018:function(t,e,o){o.r(e),o.d(e,{default:function(){return ma}});var a=o(6252),n=o(2262),l=o(2201),r=o(8273),s=(o(7658),o(3577)),i=o(9963),u=o(5167);const d=t=>((0,a.dD)("data-v-4d9f9a8a"),t=t(),(0,a.Cn)(),t),c={id:"workout-card-title"},p=["title"],m=d((()=>(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1))),w=[m],k={class:"workout-card-title"},_={class:"workout-title-date"},v={key:0,class:"workout-title"},f={key:1,class:"workout-title"},g={class:"workout-segment"},y=d((()=>(0,a._)("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1))),S={class:"workout-date"},U={class:"workout-link"},h=["title"],b=d((()=>(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1))),T=[b];var E=(0,a.aZ)({__name:"WorkoutCardTitle",props:{sport:null,workoutObject:null},emits:["displayModal"],setup(t,{emit:e}){const o=t,{sport:l,workoutObject:r}=(0,n.BK)(o);async function d(t){await u.Z.get(`workouts/${t}/gpx/download`,{responseType:"blob"}).then((e=>{const o=window.URL.createObjectURL(new Blob([e.data],{type:"application/gpx+xml"})),a=document.createElement("a");a.href=o,a.setAttribute("download",`${t}.gpx`),document.body.appendChild(a),a.click()}))}return(t,o)=>{const u=(0,a.up)("SportImage"),m=(0,a.up)("router-link");return(0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",{class:(0,s.C_)(["workout-previous workout-arrow",{inactive:!(0,n.SU)(r).previousUrl}]),title:(0,n.SU)(r).previousUrl?t.$t(`workouts.PREVIOUS_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_PREVIOUS_${(0,n.SU)(r).type}`),onClick:o[0]||(o[0]=e=>(0,n.SU)(r).previousUrl?t.$router.push((0,n.SU)(r).previousUrl):null)},w,10,p),(0,a._)("div",k,[(0,a.Wm)(u,{"sport-label":(0,n.SU)(l).label,color:(0,n.SU)(l).color},null,8,["sport-label","color"]),(0,a._)("div",_,["WORKOUT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.iD)("div",v,[(0,a._)("span",null,(0,s.zw)((0,n.SU)(r).title),1),(0,a._)("i",{class:"fa fa-edit","aria-hidden":"true",onClick:o[1]||(o[1]=e=>t.$router.push({name:"EditWorkout",params:{workoutId:(0,n.SU)(r).workoutId}}))}),(0,n.SU)(r).with_gpx?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-download","aria-hidden":"true",onClick:o[2]||(o[2]=(0,i.iM)((t=>d((0,n.SU)(r).workoutId)),["prevent"]))})):(0,a.kq)("",!0),(0,a._)("i",{class:"fa fa-trash","aria-hidden":"true",onClick:o[3]||(o[3]=t=>e("displayModal",!0))})])):((0,a.wg)(),(0,a.iD)("div",f,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).title)+" ",1),(0,a._)("span",g,[(0,a.Uk)(" — "),y,(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.SEGMENT"))+" "+(0,s.zw)((0,n.SU)(r).segmentId+1),1)])])),(0,a._)("div",S,[(0,a.Uk)((0,s.zw)((0,n.SU)(r).workoutDate)+" - "+(0,s.zw)((0,n.SU)(r).workoutTime)+" ",1),(0,a._)("span",U,["SEGMENT"===(0,n.SU)(r).type?((0,a.wg)(),(0,a.j4)(m,{key:0,to:{name:"Workout",params:{workoutId:(0,n.SU)(r).workoutId}}},{default:(0,a.w5)((()=>[(0,a.Uk)(" > "+(0,s.zw)(t.$t("workouts.BACK_TO_WORKOUT")),1)])),_:1},8,["to"])):(0,a.kq)("",!0)])])])]),(0,a._)("div",{class:(0,s.C_)(["workout-next workout-arrow",{inactive:!(0,n.SU)(r).nextUrl}]),title:(0,n.SU)(r).nextUrl?t.$t(`workouts.NEXT_${(0,n.SU)(r).type}`):t.$t(`workouts.NO_NEXT_${(0,n.SU)(r).type}`),onClick:o[4]||(o[4]=e=>(0,n.SU)(r).nextUrl?t.$router.push((0,n.SU)(r).nextUrl):null)},T,10,h)])}}}),D=o(3744);const O=(0,D.Z)(E,[["__scopeId","data-v-4d9f9a8a"]]);var I=O;const A=t=>((0,a.dD)("data-v-1a5282f6"),t=t(),(0,a.Cn)(),t),C={key:0,class:"workout-record"},R=A((()=>(0,a._)("sup",null,[(0,a._)("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1))),$=[R];var N=(0,a.aZ)({__name:"WorkoutRecord",props:{recordType:null,workoutObject:null},setup(t){const e=t,{recordType:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).records&&(0,n.SU)(l).records.find((t=>t.record_type===(0,n.SU)(o)))?((0,a.wg)(),(0,a.iD)("span",C,$)):(0,a.kq)("",!0)}});const x=(0,D.Z)(N,[["__scopeId","data-v-1a5282f6"]]);var z=x,L=o(9150),j=o(3649);const W=["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"],P=t=>{const e=Math.floor(t/22.5+.5);return W[e%16]},F={class:"wind"},B={class:"wind-bearing"},H=["title"];var M=(0,a.aZ)({__name:"WeatherWind",props:{weather:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,weather:l}=(0,n.BK)(e),{t:r}=(0,L.QT)();function i(t){return r(`workouts.WEATHER.WIND_DIRECTIONS.${P(t)}`)}return(t,e)=>((0,a.wg)(),(0,a.iD)("div",F,[(0,a.Uk)((0,s.zw)((0,n.SU)(j.Y2)((0,n.SU)(l).wind,(0,n.SU)(o)))+" ",1),(0,a._)("div",B,[(0,n.SU)(l).windBearing?((0,a.wg)(),(0,a.iD)("i",{key:0,class:"fa fa-long-arrow-down",style:(0,s.j5)({transform:`rotate(${(0,n.SU)(l).windBearing}deg)`}),"aria-hidden":"true",title:i((0,n.SU)(l).windBearing)},null,12,H)):(0,a.kq)("",!0)])]))}});const q=(0,D.Z)(M,[["__scopeId","data-v-40697ed1"]]);var Z=q;const G=t=>((0,a.dD)("data-v-807b431a"),t=t(),(0,a.Cn)(),t),K={key:0,id:"workout-weather"},V={class:"weather-table"},Y=G((()=>(0,a._)("th",null,null,-1))),X={class:"weather-th"},J=["src","alt","title"],Q={class:"weather-th"},tt=["src","alt","title"],et=["alt","title"],ot=["alt","title"],at=["alt","title"];var nt=(0,a.aZ)({__name:"WorkoutWeather",props:{workoutObject:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{useImperialUnits:o,workoutObject:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).weatherStart&&(0,n.SU)(l).weatherEnd?((0,a.wg)(),(0,a.iD)("div",K,[(0,a._)("table",V,[(0,a._)("thead",null,[(0,a._)("tr",null,[Y,(0,a._)("th",null,[(0,a._)("div",X,[(0,a.Uk)((0,s.zw)(t.$t("workouts.START"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherStart.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherStart.icon}`)},null,8,J)])]),(0,a._)("th",null,[(0,a._)("div",Q,[(0,a.Uk)((0,s.zw)(t.$t("workouts.END"))+" ",1),(0,a._)("img",{class:"weather-img",src:`/img/weather/${(0,n.SU)(l).weatherEnd.icon}.svg`,alt:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`),title:t.$t(`workouts.WEATHER.DARK_SKY.${(0,n.SU)(l).weatherEnd.icon}`)},null,8,tt)])])])]),(0,a._)("tbody",null,[(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/temperature.svg",alt:t.$t("workouts.WEATHER.TEMPERATURE"),title:t.$t("workouts.WEATHER.TEMPERATURE")},null,8,et)]),(0,a._)("td",null,(0,s.zw)((0,n.SU)(j.x$)((0,n.SU)(l).weatherStart.temperature,(0,n.SU)(o))),1),(0,a._)("td",null,(0,s.zw)((0,n.SU)(j.x$)((0,n.SU)(l).weatherEnd.temperature,(0,n.SU)(o))),1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/pour-rain.svg",alt:t.$t("workouts.WEATHER.HUMIDITY"),title:t.$t("workouts.WEATHER.HUMIDITY")},null,8,ot)]),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherStart.humidity).toFixed(1))+"% ",1),(0,a._)("td",null,(0,s.zw)(Number(100*(0,n.SU)(l).weatherEnd.humidity).toFixed(1))+"% ",1)]),(0,a._)("tr",null,[(0,a._)("td",null,[(0,a._)("img",{class:"weather-img weather-img-small",src:"/img/weather/breeze.svg",alt:t.$t("workouts.WEATHER.WIND"),title:t.$t("workouts.WEATHER.WIND")},null,8,at)]),(0,a._)("td",null,[(0,a.Wm)(Z,{weather:(0,n.SU)(l).weatherStart,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])]),(0,a._)("td",null,[(0,a.Wm)(Z,{weather:(0,n.SU)(l).weatherEnd,useImperialUnits:(0,n.SU)(o)},null,8,["weather","useImperialUnits"])])])])])])):(0,a.kq)("",!0)}});const lt=(0,D.Z)(nt,[["__scopeId","data-v-807b431a"]]);var rt=lt;const st=t=>((0,a.dD)("data-v-74c5993b"),t=t(),(0,a.Cn)(),t),it={id:"workout-info"},ut={class:"workout-data"},dt=st((()=>(0,a._)("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1))),ct={class:"label"},pt={class:"value"},mt={key:0},wt={class:"value"},kt={class:"value"},_t={class:"workout-data"},vt=st((()=>(0,a._)("i",{class:"fa fa-road","aria-hidden":"true"},null,-1))),ft={class:"label"},gt={class:"workout-data"},yt=st((()=>(0,a._)("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1))),St={class:"label"},Ut=st((()=>(0,a._)("br",null,null,-1))),ht={class:"label"},bt={key:0,class:"workout-data"},Tt=["alt"],Et={class:"label"},Dt=st((()=>(0,a._)("br",null,null,-1))),Ot={class:"label"},It={key:1,class:"workout-data"},At=st((()=>(0,a._)("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1))),Ct={class:"label"},Rt=st((()=>(0,a._)("br",null,null,-1))),$t={class:"label"};var Nt=(0,a.aZ)({__name:"WorkoutData",props:{workoutObject:null,useImperialUnits:{type:Boolean},displayHARecord:{type:Boolean}},setup(t){const e=t,{displayHARecord:o,workoutObject:l,useImperialUnits:r}=(0,n.BK)(e),i=(0,a.Fl)((()=>"0:00:00"!==e.workoutObject.pauses&&null!==e.workoutObject.pauses));return(t,e)=>{const u=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",it,[(0,a._)("div",ut,[dt,(0,a._)("span",ct,(0,s.zw)(t.$t("workouts.DURATION")),1),(0,a.Uk)(": "),(0,a._)("span",pt,(0,s.zw)((0,n.SU)(l).moving),1),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"LD"},null,8,["workoutObject"]),(0,n.SU)(i)?((0,a.wg)(),(0,a.iD)("div",mt,[(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.PAUSES"))+": ",1),(0,a._)("span",wt,(0,s.zw)((0,n.SU)(l).pauses),1),(0,a.Uk)(" - "+(0,s.zw)(t.$t("workouts.TOTAL_DURATION"))+": ",1),(0,a._)("span",kt,(0,s.zw)((0,n.SU)(l).duration)+")",1)])):(0,a.kq)("",!0)]),(0,a._)("div",_t,[vt,(0,a._)("span",ft,(0,s.zw)(t.$t("workouts.DISTANCE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).distance,digits:3,unitFrom:"km",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"FD"},null,8,["workoutObject"])]),(0,a._)("div",gt,[yt,(0,a._)("span",St,(0,s.zw)(t.$t("workouts.AVERAGE_SPEED")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).aveSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"AS"},null,8,["workoutObject"]),Ut,(0,a._)("span",ht,(0,s.zw)(t.$t("workouts.MAX_SPEED")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).maxSpeed,unitFrom:"km",speed:!0,strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,a.Wm)(z,{workoutObject:(0,n.SU)(l),recordType:"MS"},null,8,["workoutObject"])]),null!==(0,n.SU)(l).maxAlt&&null!==(0,n.SU)(l).minAlt?((0,a.wg)(),(0,a.iD)("div",bt,[(0,a._)("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:t.$t("workouts.ELEVATION")},null,8,Tt),(0,a._)("span",Et,(0,s.zw)(t.$t("workouts.MIN_ALTITUDE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).minAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),Dt,(0,a._)("span",Ot,(0,s.zw)(t.$t("workouts.MAX_ALTITUDE")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).maxAlt,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),null!==(0,n.SU)(l).ascent&&null!==(0,n.SU)(l).descent?((0,a.wg)(),(0,a.iD)("div",It,[At,(0,a._)("span",Ct,(0,s.zw)(t.$t("workouts.ASCENT")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).ascent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"]),(0,n.SU)(o)?((0,a.wg)(),(0,a.j4)(z,{key:0,workoutObject:(0,n.SU)(l),recordType:"HA"},null,8,["workoutObject"])):(0,a.kq)("",!0),Rt,(0,a._)("span",$t,(0,s.zw)(t.$t("workouts.DESCENT")),1),(0,a.Uk)(": "),(0,a.Wm)(u,{distance:(0,n.SU)(l).descent,unitFrom:"m",strong:!0,useImperialUnits:(0,n.SU)(r)},null,8,["distance","useImperialUnits"])])):(0,a.kq)("",!0),(0,a.Wm)(rt,{workoutObject:(0,n.SU)(l),useImperialUnits:(0,n.SU)(r)},null,8,["workoutObject","useImperialUnits"])])}}});const xt=(0,D.Z)(Nt,[["__scopeId","data-v-74c5993b"]]);var zt=xt;function Lt(t,e){return Array.from(t.getElementsByTagName(e))}function jt(t){return t?.normalize(),t&&t.textContent||""}function Wt(t,e,o){const a=t.getElementsByTagName(e),n=a.length?a[0]:null;return n&&o&&o(n),n}function Pt(t,e,o){const a={};if(!t)return a;const n=t.getElementsByTagName(e),l=n.length?n[0]:null;return l&&o?o(l,a):a}function Ft(t,e,o){const a=jt(Wt(t,e));return a&&o&&o(a)||{}}function Bt(t,e,o){const a=parseFloat(jt(Wt(t,e)));if(!isNaN(a))return a&&o&&o(a)||{}}function Ht(t,e,o){const a=parseFloat(jt(Wt(t,e)));if(!isNaN(a))return a&&o&&o(a),a}function Mt(t,e){const o={};for(const a of e)Ft(t,a,(t=>{o[a]=t}));return o}function qt(t){return 1===t?.nodeType}function Zt(t){return Pt(t,"line",(t=>{const e=Object.assign({},Ft(t,"color",(t=>({stroke:`#${t}`}))),Bt(t,"opacity",(t=>({"stroke-opacity":t}))),Bt(t,"width",(t=>({"stroke-width":96*t/25.4}))));return e}))}function Gt(t){let e=[];if(null===t)return e;for(const o of Array.from(t.childNodes)){if(!qt(o))continue;const t=Kt(o.nodeName);if("gpxtpx:TrackPointExtension"===t)e=e.concat(Gt(o));else{const a=jt(o);e.push([t,Vt(a)])}}return e}function Kt(t){return["heart","gpxtpx:hr","hr"].includes(t)?"heart":t}function Vt(t){const e=parseFloat(t);return isNaN(e)?t:e}function Yt(t){const e=[parseFloat(t.getAttribute("lon")||""),parseFloat(t.getAttribute("lat")||"")];if(isNaN(e[0])||isNaN(e[1]))return null;Ht(t,"ele",(t=>{e.push(t)}));const o=Wt(t,"time");return{coordinates:e,time:o?jt(o):null,extendedValues:Gt(Wt(t,"extensions"))}}function Xt(t){const e=Mt(t,["name","cmt","desc","type","time","keywords"]),o=Array.from(t.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(const n of o)n.parentNode?.parentNode===t&&(e[n.tagName.replace(":","_")]=jt(n));const a=Lt(t,"link");return a.length&&(e.links=a.map((t=>Object.assign({href:t.getAttribute("href")},Mt(t,["text","type"]))))),e}function Jt(t,e){const o=Lt(t,e),a=[],n=[],l={};for(let r=0;r1,r=Object.assign({_gpxType:"trk"},Xt(t),Zt(Wt(t,"extensions")),a.length?{coordinateProperties:{times:l?a:a[0]}}:{});for(const s of n){o.push(s.line),r.coordinateProperties||(r.coordinateProperties={});const t=r.coordinateProperties,e=Object.entries(s.extendedValues);for(let o=0;onew Array(t.line.length).fill(null)))),t[a][o]=r):t[a]=r}}return{type:"Feature",properties:r,geometry:l?{type:"MultiLineString",coordinates:o}:{type:"LineString",coordinates:o[0]}}}function ee(t){const e=Object.assign(Xt(t),Mt(t,["sym"])),o=Yt(t);return o?{type:"Feature",properties:e,geometry:{type:"Point",coordinates:o.coordinates}}:null}function*oe(t){for(const e of Lt(t,"trk")){const t=te(e);t&&(yield t)}for(const e of Lt(t,"rte")){const t=Qt(e);t&&(yield t)}for(const e of Lt(t,"wpt")){const t=ee(e);t&&(yield t)}}function ae(t){return{type:"FeatureCollection",features:Array.from(oe(t))}}Math.PI;const ne=(t,e=100)=>{let o;const a=function(...a){const n=this;o&&clearTimeout(o),o=setTimeout((()=>{t.apply(n,a),o=null}),e)};return a.cancel=function(){o&&clearTimeout(o)},a},le=function(t){for(const e of Object.values(t))e&&se(e.cancel)&&e.cancel()},re=t=>t&&"function"==typeof t.charAt?t.charAt(0).toUpperCase()+t.slice(1):t,se=t=>"function"==typeof t,ie=(t,e,o)=>{for(const n in o){const l="set"+re(n);t[l]?(0,a.YP)((()=>o[n]),((e,o)=>{t[l](e,o)})):e[l]&&(0,a.YP)((()=>o[n]),(t=>{e[l](t)}))}},ue=(t,e,o={})=>{const a={...o};for(const n in t){const o=e[n],l=t[n];o&&(o&&!0===o.custom||void 0!==l&&(a[n]=l))}return a},de=t=>{const e={};for(const o in t)if(o.startsWith("on")&&!o.startsWith("onUpdate")&&"onReady"!==o){const a=o.slice(2).toLocaleLowerCase();e[a]=t[o]}return e},ce=async t=>{const e=await Promise.all([o.e(431).then(o.t.bind(o,6431,17)),o.e(93).then(o.t.bind(o,7093,17)),o.e(858).then(o.t.bind(o,8858,17))]);delete t.Default.prototype._getIconUrl,t.Default.mergeOptions({iconRetinaUrl:e[0].default,iconUrl:e[1].default,shadowUrl:e[2].default})},pe=t=>{const e=(0,n.iH)((()=>console.warn(`Method ${t} has been invoked without being replaced`))),o=(...t)=>e.value(...t);return o.wrapped=e,(0,a.JJ)(t,o),o},me=(t,e)=>t.wrapped.value=e,we="object"==typeof self&&self.self===self&&self||"object"==typeof o.g&&o.g.global===o.g&&o.g||void 0,ke="useGlobalLeaflet",_e={options:{type:Object,default:()=>({}),custom:!0}},ve=t=>({options:t.options,methods:{}}),fe={..._e,pane:{type:String},attribution:{type:String},name:{type:String,custom:!0},layerType:{type:String,custom:!0},visible:{type:Boolean,custom:!0,default:!0}},ge=(t,e,o)=>{const n=(0,a.f3)("addLayer"),l=(0,a.f3)("removeLayer"),{options:r,methods:s}=ve(t),i=ue(t,fe,r),u=()=>n({leafletObject:e.value}),d=()=>l({leafletObject:e.value}),c={...s,setAttribution(o){d(),e.value.options.attribution=o,t.visible&&u()},setName(){d(),t.visible&&u()},setLayerType(){d(),t.visible&&u()},setVisible(t){e.value&&(t?u():d())},bindPopup({leafletObject:t}){e.value&&se(e.value.bindPopup)?e.value.bindPopup(t):console.warn("Attempt to bind popup before bindPopup method available on layer.")},bindTooltip({leafletObject:t}){e.value&&se(e.value.bindTooltip)?e.value.bindTooltip(t):console.warn("Attempt to bind tooltip before bindTooltip method available on layer.")},unbindTooltip(){e.value&&(se(e.value.closeTooltip)&&e.value.closeTooltip(),se(e.value.unbindTooltip)&&e.value.unbindTooltip())},unbindPopup(){e.value&&(se(e.value.closePopup)&&e.value.closePopup(),se(e.value.unbindPopup)&&e.value.unbindPopup())},updateVisibleProp(t){o.emit("update:visible",t)}};return(0,a.JJ)("bindPopup",c.bindPopup),(0,a.JJ)("bindTooltip",c.bindTooltip),(0,a.JJ)("unbindTooltip",c.unbindTooltip),(0,a.JJ)("unbindPopup",c.unbindPopup),(0,a.Ah)((()=>{c.unbindPopup(),c.unbindTooltip(),d()})),{options:i,methods:c}},ye=(t,e)=>{if(t&&e.default)return(0,a.h)("div",{style:{display:"none"}},e.default())},Se={...fe,interactive:{type:Boolean,default:void 0},bubblingMouseEvents:{type:Boolean,default:void 0}},Ue={...Se,stroke:{type:Boolean,default:void 0},color:{type:String},weight:{type:Number},opacity:{type:Number},lineCap:{type:String},lineJoin:{type:String},dashArray:{type:String},dashOffset:{type:String},fill:{type:Boolean,default:void 0},fillColor:{type:String},fillOpacity:{type:Number},fillRule:{type:String},className:{type:String}},he={...Ue,radius:{type:Number},latLng:{type:[Object,Array],required:!0,custom:!0}},be={..._e,position:{type:String}},Te=(t,e)=>{const{options:o,methods:n}=ve(t),l=ue(t,be,o),r={...n,setPosition(t){e.value&&e.value.setPosition(t)}};return(0,a.Ah)((()=>{e.value&&e.value.remove()})),{options:l,methods:r}},Ee=t=>t.default?(0,a.h)("div",{ref:"root"},t.default()):null,De={name:"LControl",props:{...be,disableClickPropagation:{type:Boolean,custom:!0,default:!0},disableScrollPropagation:{type:Boolean,custom:!0,default:!1}},setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(null),s=(0,a.f3)(ke),i=(0,a.f3)("registerControl"),{options:u,methods:d}=Te(t,l);return(0,a.bv)((async()=>{const{Control:c,DomEvent:p}=s?we.L:await o.e(633).then(o.bind(o,6633)),m=c.extend({onAdd(){return r.value}});l.value=(0,n.Xl)(new m(u)),ie(d,l.value,t),i({leafletObject:l.value}),t.disableClickPropagation&&p.disableClickPropagation(r.value),t.disableScrollPropagation&&p.disableScrollPropagation(r.value),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{root:r,leafletObject:l}},render(){return Ee(this.$slots)}},Oe=De,Ie={...be,collapsed:{type:Boolean,default:void 0},autoZIndex:{type:Boolean,default:void 0},hideSingleBase:{type:Boolean,default:void 0},sortLayers:{type:Boolean,default:void 0},sortFunction:{type:Function}},Ae=(t,e)=>{const{options:o}=Te(t,e);return{options:ue(t,Ie,o),methods:{addLayer(t){"base"===t.layerType?e.value.addBaseLayer(t.leafletObject,t.name):"overlay"===t.layerType&&e.value.addOverlay(t.leafletObject,t.name)},removeLayer(t){e.value.removeLayer(t.leafletObject)}}}},Ce={name:"LControlLayers",props:Ie,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ke),s=(0,a.f3)("registerLayerControl"),{options:i,methods:u}=Ae(t,l);return(0,a.bv)((async()=>{const{control:d}=r?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d.layers(null,null,i)),ie(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l}},render(){return null}},Re=Ce,$e=(Boolean,Boolean,Boolean,{...fe}),Ne=(t,e,o)=>{const{options:n,methods:l}=ge(t,e,o),r=ue(t,$e,n),s={...l,addLayer(t){e.value.addLayer(t.leafletObject)},removeLayer(t){e.value.removeLayer(t.leafletObject)}};return(0,a.JJ)("addLayer",s.addLayer),(0,a.JJ)("removeLayer",s.removeLayer),{options:r,methods:s}},xe={...$e,geojson:{type:[Object,Array],custom:!0},optionsStyle:{type:[Object,Function],custom:!0}},ze=(t,e,o)=>{const{options:a,methods:n}=Ne(t,e,o),l=ue(t,xe,a);Object.prototype.hasOwnProperty.call(t,"optionsStyle")&&(l.style=t.optionsStyle);const r={...n,setGeojson(t){e.value.clearLayers(),e.value.addData(t)},setOptionsStyle(t){e.value.setStyle(t)},getGeoJSONData(){return e.value.toGeoJSON()},getBounds(){return e.value.getBounds()}};return{options:l,methods:r}},Le={props:xe,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer"),{methods:u,options:d}=ze(t,l,e);return(0,a.bv)((async()=>{const{geoJSON:c,DomEvent:p}=s?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(c(t.geojson,d));const m=de(e.attrs);p.on(l.value,m),ie(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}},je=Le,We={...fe,opacity:{type:Number},zIndex:{type:Number},tileSize:{type:Number},noWrap:{type:Boolean,default:void 0},minZoom:{type:Number},maxZoom:{type:Number}},Pe=(t,e,o)=>{const{options:a,methods:n}=ge(t,e,o);return{options:ue(t,We,a),methods:{...n}}},Fe={iconUrl:{type:String},iconRetinaUrl:{type:String},iconSize:{type:[Object,Array]},iconAnchor:{type:[Object,Array]},popupAnchor:{type:[Object,Array]},tooltipAnchor:{type:[Object,Array]},shadowUrl:{type:String},shadowRetinaUrl:{type:String},shadowSize:{type:[Object,Array]},shadowAnchor:{type:[Object,Array]},bgPos:{type:[Object,Array]},className:{type:String}},Be={name:"LIcon",props:{...Fe,..._e},setup(t,e){const l=(0,n.iH)(null),r=(0,a.f3)(ke),s=(0,a.f3)("canSetParentHtml"),i=(0,a.f3)("setParentHtml"),u=(0,a.f3)("setIcon");let d,c,p,m,w;const k=(o,a,n)=>{const l=o&&o.innerHTML;if(!a)return void(n&&w&&s()&&i(l));const r=de(e.attrs);w&&c(w,r);const{options:k}=ve(t),_=ue(t,Fe,k);l&&(_.html=l),w=_.html?p(_):m(_),d(w,r),u(w)},_=()=>{(0,a.Y3)((()=>k(l.value,!0,!1)))},v=()=>{(0,a.Y3)((()=>k(l.value,!1,!0)))},f={setIconUrl:_,setIconRetinaUrl:_,setIconSize:_,setIconAnchor:_,setPopupAnchor:_,setTooltipAnchor:_,setShadowUrl:_,setShadowRetinaUrl:_,setShadowAnchor:_,setBgPos:_,setClassName:_,setHtml:_};return(0,a.bv)((async()=>{const{DomEvent:e,divIcon:a,icon:n}=r?we.L:await o.e(633).then(o.bind(o,6633));d=e.on,c=e.off,p=a,m=n,ie(f,{},t),new MutationObserver(v).observe(l.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),_()})),{root:l}},render(){const t=this.$slots.default?this.$slots.default():void 0;return(0,a.h)("div",{ref:"root"},t)}},He=Be,Me=(Boolean,Boolean,{props:$e,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer"),{methods:u}=Ne(t,l,e);return(0,a.bv)((async()=>{const{layerGroup:d,DomEvent:c}=s?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d(t.options));const p=de(e.attrs);c.on(l.value,p),ie(u,l.value,t),i({...t,...u,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}}),qe=Me,Ze={..._e,center:{type:[Object,Array]},bounds:{type:[Array,Object]},maxBounds:{type:[Array,Object]},zoom:{type:Number},minZoom:{type:Number},maxZoom:{type:Number},paddingBottomRight:{type:Array},paddingTopLeft:{type:Array},padding:{type:Array},worldCopyJump:{type:Boolean,default:void 0},crs:{type:[String,Object]},maxBoundsViscosity:{type:Number},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number},inertiaMaxSpeed:{type:Number},easeLinearity:{type:Number},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:void 0},useGlobalLeaflet:{type:Boolean,default:!0,custom:!0}},Ge={emits:["ready","update:zoom","update:center","update:bounds"],props:Ze,setup(t,e){const l=(0,n.iH)(null),r=(0,n.qj)({ready:!1,leafletRef:{},layersToAdd:[],layersInControl:[]}),{options:s}=ve(t),i=ue(t,Ze,s),u=pe("addLayer"),d=pe("removeLayer"),c=pe("registerControl"),p=pe("registerLayerControl");(0,a.JJ)(ke,t.useGlobalLeaflet);const m={moveEndHandler:ne((()=>{e.emit("update:zoom",r.leafletRef.getZoom()),e.emit("update:center",r.leafletRef.getCenter()),e.emit("update:bounds",r.leafletRef.getBounds())})),overlayAddHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!0)},overlayRemoveHandler(t){const e=r.layersInControl.find((e=>e.name===t.name));e&&e.updateVisibleProp(!1)}};(0,a.bv)((async()=>{t.useGlobalLeaflet&&(we.L=we.L||await o.e(243).then(o.t.bind(o,5243,23)));const{map:s,CRS:w,Icon:k,latLngBounds:_,latLng:v,DomEvent:f}=t.useGlobalLeaflet?we.L:await o.e(633).then(o.bind(o,6633));try{i.beforeMapMount&&await i.beforeMapMount()}catch(U){console.error(`The following error occurred running the provided beforeMapMount hook ${U.message}`)}await ce(k);const g="string"==typeof i.crs?w[i.crs]:i.crs;i.crs=g||w.EPSG3857;const y={addLayer(t){void 0!==t.layerType&&(void 0===r.layerControl?r.layersToAdd.push(t):r.layersInControl.find((e=>e.leafletObject._leaflet_id===t.leafletObject._leaflet_id))||(r.layerControl.addLayer(t),r.layersInControl.push(t))),!1!==t.visible&&r.leafletRef.addLayer(t.leafletObject)},removeLayer(t){void 0!==t.layerType&&(void 0===r.layerControl?r.layersToAdd=r.layersToAdd.filter((e=>e.name!==t.name)):(r.layerControl.removeLayer(t.leafletObject),r.layersInControl=r.layersInControl.filter((e=>e.leafletObject._leaflet_id!==t.leafletObject._leaflet_id)))),r.leafletRef.removeLayer(t.leafletObject)},registerLayerControl(t){r.layerControl=t,r.layersToAdd.forEach((t=>{r.layerControl.addLayer(t)})),r.layersToAdd=[],c(t)},registerControl(t){r.leafletRef.addControl(t.leafletObject)},setZoom(e){const o=r.leafletRef.getZoom();e!==o&&r.leafletRef.setZoom(e,{animate:!t.noBlockingAnimations&&null})},setPaddingBottomRight(t){r.paddingBottomRight=t},setPaddingTopLeft(t){r.paddingTopLeft=t},setPadding(t){r.padding=t},setCrs(t){const e=r.leafletRef.getBounds();r.leafletRef.options.crs=t,r.leafletRef.fitBounds(e,{animate:!1,padding:[0,0]})},fitBounds(t){r.leafletRef.fitBounds(t,{animate:!this.noBlockingAnimations&&null})},setBounds(t){if(!t)return;const e=_(t);e.isValid()&&!(r.lastSetBounds||r.leafletRef.getBounds()).equals(e,0)&&(r.lastSetBounds=e,r.leafletRef.fitBounds(e,this.fitBoundsOptions))},setCenter(t){if(null==t)return;const e=v(t),o=r.lastSetCenter||r.leafletRef.getCenter();(o.lat!==e.lat||o.lng!==e.lng)&&(r.lastSetCenter=e,r.leafletRef.panTo(e,{animate:!this.noBlockingAnimations&&null}))}};me(u,y.addLayer),me(d,y.removeLayer),me(c,y.registerControl),me(p,y.registerLayerControl),r.leafletRef=(0,n.Xl)(s(l.value,i)),ie(y,r.leafletRef,t);const S=de(e.attrs);r.leafletRef.on("moveend",m.moveEndHandler),r.leafletRef.on("overlayadd",m.overlayAddHandler),r.leafletRef.on("overlayremove",m.overlayRemoveHandler),f.on(r.leafletRef,S),r.ready=!0,(0,a.Y3)((()=>e.emit("ready",r.leafletRef)))})),(0,a.Jd)((()=>{le(m),r.leafletRef&&(r.leafletRef.off(),r.leafletRef.remove())}));const w=(0,a.Fl)((()=>r.leafletRef)),k=(0,a.Fl)((()=>r.ready));return{root:l,ready:k,leafletObject:w}},render(){return(0,a.h)("div",{style:{width:"100%",height:"100%"},ref:"root"},this.ready&&this.$slots.default?this.$slots.default():{})}},Ke=Ge,Ve=["Symbol(Comment)","Symbol(Text)"],Ye=["LTooltip","LPopup"],Xe={...fe,draggable:{type:Boolean,default:void 0},icon:{type:[Object]},zIndexOffset:{type:Number},latLng:{type:[Object,Array],custom:!0,required:!0}},Je=(t,e,o)=>{const{options:a,methods:n}=ge(t,e,o),l=ue(t,Xe,a),r={...n,setDraggable(t){e.value.dragging&&(t?e.value.dragging.enable():e.value.dragging.disable())},latLngSync(t){o.emit("update:latLng",t.latlng),o.emit("update:lat-lng",t.latlng)},setLatLng(t){if(null!=t&&e.value){const o=e.value.getLatLng();(!o||!o.equals(t))&&e.value.setLatLng(t)}}};return{options:l,methods:r}},Qe=(t,e)=>{const o=e.slots.default&&e.slots.default();return o&&o.length&&o.some(to)};function to(t){return!(Ve.includes(t.type.toString())||Ye.includes(t.type.name))}const eo={name:"LMarker",props:Xe,setup(t,e){const l=(0,n.iH)({}),r=(0,n.iH)(!1),s=(0,a.f3)(ke),i=(0,a.f3)("addLayer");(0,a.JJ)("canSetParentHtml",(()=>!!l.value.getElement())),(0,a.JJ)("setParentHtml",(t=>l.value.getElement().innerHTML=t)),(0,a.JJ)("setIcon",(t=>l.value.setIcon&&l.value.setIcon(t)));const{options:u,methods:d}=Je(t,l,e),c={moveHandler:ne(d.latLngSync)};return(0,a.bv)((async()=>{const{marker:p,DomEvent:m,divIcon:w}=s?we.L:await o.e(633).then(o.bind(o,6633));Qe(u,e)&&(u.icon=w({className:""})),l.value=(0,n.Xl)(p(t.latLng,u));const k=de(e.attrs);m.on(l.value,k),l.value.on("move",c.moveHandler),ie(d,l.value,t),i({...t,...d,leafletObject:l.value}),r.value=!0,(0,a.Y3)((()=>e.emit("ready",l.value)))})),(0,a.Jd)((()=>le(c))),{ready:r,leafletObject:l}},render(){return ye(this.ready,this.$slots)}},oo=eo,ao={...Ue,smoothFactor:{type:Number},noClip:{type:Boolean,default:void 0},latLngs:{type:Array,required:!0,custom:!0}},no={...ao},lo={..._e,content:{type:String,default:null}};no.latLngs.required=!1;const ro={...We,tms:{type:Boolean,default:void 0},subdomains:{type:[String,Array],validator:t=>"string"==typeof t||!!Array.isArray(t)&&t.every((t=>"string"==typeof t))},detectRetina:{type:Boolean,default:void 0},url:{type:String,required:!0,custom:!0}},so=(t,e,o)=>{const{options:a,methods:n}=Pe(t,e,o),l=ue(t,ro,a),r={...n};return{options:l,methods:r}},io={props:ro,setup(t,e){const l=(0,n.iH)({}),r=(0,a.f3)(ke),s=(0,a.f3)("addLayer"),{options:i,methods:u}=so(t,l,e);return(0,a.bv)((async()=>{const{tileLayer:d,DomEvent:c}=r?we.L:await o.e(633).then(o.bind(o,6633));l.value=(0,n.Xl)(d(t.url,i));const p=de(e.attrs);c.on(l.value,p),ie(u,l.value,t),s({...t,...u,leafletObject:l.value}),(0,a.Y3)((()=>e.emit("ready",l.value)))})),{leafletObject:l}},render(){return null}},uo=io;Boolean,Boolean;var co=(0,a.aZ)({__name:"CustomMarker",props:{markerCoordinates:null,isStart:{type:Boolean}},setup(t){const e=t,{isStart:o,markerCoordinates:l}=(0,n.BK)(e);return(t,e)=>(0,n.SU)(l).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(oo),{key:0,"lat-lng":[(0,n.SU)(l).latitude,(0,n.SU)(l).longitude]},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(He),{"icon-url":`/img/workouts/${(0,n.SU)(o)?"start":"finish"}.svg`,iconSize:[15,15]},null,8,["icon-url"])])),_:1},8,["lat-lng"])):(0,a.kq)("",!0)}});const po=co;var mo=po,wo=o(5801),ko=o(9917),_o=o(2024);const vo=t=>((0,a.dD)("data-v-2aec89b0"),t=t(),(0,a.Cn)(),t),fo={id:"workout-map"},go={key:0,class:"leaflet-container"},yo={key:1},So=vo((()=>(0,a._)("i",{class:"fa fa-refresh","aria-hidden":"true"},null,-1))),Uo={key:1,class:"no-map"};var ho=(0,a.aZ)({__name:"index",props:{workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,ko.o)(),{workoutData:l,markerCoordinates:r}=(0,n.BK)(e),i=(0,n.iH)(null),u=(0,a.Fl)((()=>g())),d=(0,a.Fl)((()=>o.getters[wo.SY.GETTERS.APP_CONFIG])),c=(0,a.Fl)((()=>v(u))),p=(0,a.Fl)((()=>e.workoutData&&e.workoutData.gpx?_(e.workoutData.gpx):{})),m=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[0].latitude,longitude:e.workoutData.chartData[0].longitude}:{})),w=(0,a.Fl)((()=>e.workoutData&&e.workoutData.chartData.length>0?{latitude:e.workoutData.chartData[e.workoutData.chartData.length-1].latitude,longitude:e.workoutData.chartData[e.workoutData.chartData.length-1].longitude}:{})),k=(0,n.iH)(!1);function _(t){if(!t||""!==t)try{const e=ae((new DOMParser).parseFromString(t,"text/xml"));return{jsonData:e}}catch(e){return console.error("Invalid gpx content"),{}}return{}}function v(t){return[(t.value[0][0]+t.value[1][0])/2,(t.value[0][1]+t.value[1][1])/2]}function f(t){i.value?.leafletObject&&i.value?.leafletObject.fitBounds(t)}function g(){return e.workoutData?[[e.workoutData.workout.bounds[0],e.workoutData.workout.bounds[1]],[e.workoutData.workout.bounds[2],e.workoutData.workout.bounds[3]]]:[]}function y(){i.value?.leafletObject.fitBounds(g())}function S(){k.value=!k.value,k.value||setTimeout((()=>{y()}),100)}return(t,e)=>{const o=(0,a.up)("VFullscreen");return(0,a.wg)(),(0,a.iD)("div",fo,[(0,n.SU)(l).loading?((0,a.wg)(),(0,a.iD)("div",go)):((0,a.wg)(),(0,a.iD)("div",yo,[(0,n.SU)(l).workout.with_gpx?((0,a.wg)(),(0,a.j4)(o,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=t=>k.value=t)},{default:(0,a.w5)((()=>[(0,a._)("div",{class:(0,s.C_)(["leaflet-container",{"fullscreen-map":k.value}])},[(0,n.SU)(p).jsonData&&(0,n.SU)(c)&&2===(0,n.SU)(u).length?((0,a.wg)(),(0,a.j4)((0,n.SU)(Ke),{key:0,zoom:13,maxZoom:19,center:(0,n.SU)(c),bounds:(0,n.SU)(u),zoomAnimation:!1,ref_key:"workoutMap",ref:i,onReady:e[0]||(e[0]=t=>f((0,n.SU)(u)))},{default:(0,a.w5)((()=>[(0,a.Wm)((0,n.SU)(Re)),(0,a.Wm)((0,n.SU)(Oe),{position:"topleft",class:"map-control",onClick:y},{default:(0,a.w5)((()=>[So])),_:1}),(0,a.Wm)((0,n.SU)(Oe),{position:"topleft",class:"map-control",onClick:S},{default:(0,a.w5)((()=>[(0,a._)("i",{class:(0,s.C_)("fa fa-"+(k.value?"compress":"arrows-alt")),"aria-hidden":"true"},null,2)])),_:1}),(0,a.Wm)((0,n.SU)(uo),{url:`${(0,n.SU)(_o.k)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,attribution:(0,n.SU)(d).map_attribution,bounds:(0,n.SU)(u)},null,8,["url","attribution","bounds"]),(0,a.Wm)((0,n.SU)(je),{geojson:(0,n.SU)(p).jsonData},null,8,["geojson"]),(0,n.SU)(r).latitude?((0,a.wg)(),(0,a.j4)((0,n.SU)(oo),{key:0,"lat-lng":[(0,n.SU)(r).latitude,(0,n.SU)(r).longitude]},null,8,["lat-lng"])):(0,a.kq)("",!0),(0,a.Wm)((0,n.SU)(qe),{name:t.$t("workouts.START_AND_FINISH"),"layer-type":"overlay"},{default:(0,a.w5)((()=>[(0,n.SU)(m).latitude?((0,a.wg)(),(0,a.j4)(mo,{key:0,markerCoordinates:(0,n.SU)(m),isStart:!0},null,8,["markerCoordinates"])):(0,a.kq)("",!0),(0,n.SU)(w).latitude?((0,a.wg)(),(0,a.j4)(mo,{key:1,markerCoordinates:(0,n.SU)(w),isStart:!1},null,8,["markerCoordinates"])):(0,a.kq)("",!0)])),_:1},8,["name"])])),_:1},8,["center","bounds"])):(0,a.kq)("",!0)],2)])),_:1},8,["modelValue"])):((0,a.wg)(),(0,a.iD)("div",Uo,(0,s.zw)(t.$t("workouts.NO_MAP")),1))]))])}}});const bo=(0,D.Z)(ho,[["__scopeId","data-v-2aec89b0"]]);var To=bo,Eo=o(6558);const Do={class:"workout-detail"};var Oo=(0,a.aZ)({__name:"index",props:{authUser:null,displaySegment:{type:Boolean},sports:null,workoutData:null,markerCoordinates:{default:()=>({})}},setup(t){const e=t,o=(0,l.yj)(),r=(0,ko.o)(),{authUser:s,markerCoordinates:i,workoutData:u}=(0,n.BK)(e),d=(0,a.Fl)((()=>e.workoutData.workout)),c=(0,n.iH)(o.params.workoutId?+o.params.segmentId:null),p=(0,a.Fl)((()=>d.value.segments.length>0&&c.value?d.value.segments[+c.value-1]:null)),m=(0,n.iH)(!1),w=(0,a.Fl)((()=>e.sports?e.sports.find((t=>t.id===e.workoutData.workout.sport_id)):{})),k=(0,a.Fl)((()=>v(d.value,p.value)));function _(t,e,o){const a=e&&o&&1!==o?`/workouts/${t.id}/segment/${o-1}`:!e&&t.previous_workout?`/workouts/${t.previous_workout}`:null,n=e&&o&&oo.params.segmentId),(async t=>{t&&(c.value=+t)})),(t,e)=>{const o=(0,a.up)("Modal"),l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Do,[m.value?((0,a.wg)(),(0,a.j4)(o,{key:0,title:t.$t("common.CONFIRMATION"),message:t.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:e[0]||(e[0]=t=>g((0,n.SU)(k).workoutId)),onCancelAction:e[1]||(e[1]=t=>f(!1))},null,8,["title","message"])):(0,a.kq)("",!0),(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Wm)(I,{sport:(0,n.SU)(w),workoutObject:(0,n.SU)(k),onDisplayModal:e[2]||(e[2]=t=>f(!0))},null,8,["sport","workoutObject"])])),content:(0,a.w5)((()=>[(0,a.Wm)(To,{workoutData:(0,n.SU)(u),markerCoordinates:(0,n.SU)(i)},null,8,["workoutData","markerCoordinates"]),(0,a.Wm)(zt,{workoutObject:(0,n.SU)(k),useImperialUnits:(0,n.SU)(s).imperial_units,displayHARecord:(0,n.SU)(s).display_ascent},null,8,["workoutObject","useImperialUnits","displayHARecord"])])),_:1})])}}});const Io=(0,D.Z)(Oo,[["__scopeId","data-v-9fc0bab8"]]);var Ao=Io,Co=o(6518);const Ro=t=>{const e=document.getElementById(t);if(e){let t=e.querySelector("ul");return t||(t=document.createElement("ul"),e.appendChild(t)),t}throw new Error("No legend container")},$o={id:"htmlLegend",afterUpdate(t,e,o){const a=Ro(o.containerID);while(a.firstChild)a.firstChild.remove();const n=t.options.plugins?.legend?.labels?.generateLabels?t.options.plugins?.legend?.labels?.generateLabels(t):[];n.forEach((e=>{const o=document.createElement("li");o.onclick=()=>{void 0!==e.datasetIndex&&(t.setDatasetVisibility(e.datasetIndex,!t.isDatasetVisible(e.datasetIndex)),t.update())};const n=document.createElement("input");n&&(n.type="checkbox",n.id=e.text,n.checked=!e.hidden);const l=document.createTextNode(e.text),r=document.createElement("span");r&&(r.style.background=String(e.fillStyle),r.style.borderColor=String(e.strokeStyle)),o.appendChild(n),o.appendChild(l),o.appendChild(r),a.appendChild(o)}))}};var No=o(3768);const xo=t=>((0,a.dD)("data-v-0b68c436"),t=t(),(0,a.Cn)(),t),zo={id:"workout-chart"},Lo={class:"chart-radio"},jo=["checked"],Wo=["checked"],Po=xo((()=>(0,a._)("div",{id:"chart-legend"},null,-1))),Fo={class:"chart-info"},Bo={class:"no-data-cleaning"},Ho={class:"elevation-start"},Mo=["checked"];var qo=(0,a.aZ)({__name:"index",props:{authUser:null,workoutData:null},emits:["getCoordinates"],setup(t,{emit:e}){const o=t,{t:l}=(0,L.QT)(),r=(0,n.iH)(!0),i=(0,n.iH)(!0),u=(0,a.Fl)((()=>(0,No.EX)(o.workoutData.chartData,l,o.authUser.imperial_units))),d=y("km"),c=y("m"),p=(0,a.Fl)((()=>({labels:r.value?u.value.distance_labels:u.value.duration_labels,datasets:JSON.parse(JSON.stringify([u.value.datasets.speed,u.value.datasets.elevation]))}))),m=(0,a.Fl)((()=>u.value.coordinates)),w=(0,a.Fl)((()=>({responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:22}},scales:{x:{grid:{drawOnChartArea:!1},ticks:{count:10,callback:function(t){return r.value?Number(t).toFixed(2):v(t)}},type:"linear",bounds:"data",title:{display:!0,text:r.value?l("workouts.DISTANCE")+` (${d})`:l("workouts.DURATION")}},ySpeed:{grid:{drawOnChartArea:!1},position:"left",title:{display:!0,text:l("workouts.SPEED")+` (${d}/h)`}},yElevation:{beginAtZero:i.value,grid:{drawOnChartArea:!1},position:"right",title:{display:!0,text:l("workouts.ELEVATION")+` (${c})`}}},elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(t){const e=` ${t.dataset.label}: ${t.formattedValue}`;return"yElevation"===t.dataset.yAxisID?e+` ${c}`:e+` ${d}/h`},title:function(t){return t.length>0&&f(m.value[t[0].dataIndex]),0===t.length?"":r.value?`${l("workouts.DISTANCE")}: ${t[0].label} ${d}`:`${l("workouts.DURATION")}: ${v(t[0].label.replace(",",""))}`}}},legend:{display:!1},htmlLegend:{containerID:"chart-legend"}}}))),{lineChartProps:k}=(0,Co.tn)({chartData:p,options:w,plugins:[$o]});function _(){r.value=!r.value}function v(t){return new Date(1e3*+t).toISOString().substr(11,8)}function f(t){e("getCoordinates",t)}function g(){f({latitude:null,longitude:null})}function y(t){return o.authUser.imperial_units?j.Dl[t].defaultTarget:t}return(t,e)=>{const o=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",zo,[(0,a.Wm)(o,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.ANALYSIS")),1)])),content:(0,a.w5)((()=>[(0,a._)("div",Lo,[(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"distance",checked:r.value,onClick:_},null,8,jo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DISTANCE")),1)]),(0,a._)("label",null,[(0,a._)("input",{type:"radio",name:"duration",checked:!r.value,onClick:_},null,8,Wo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.DURATION")),1)])]),Po,(0,a.Wm)((0,n.SU)(Co.wW),(0,a.dG)((0,n.SU)(k),{class:"line-chart",onMouseleave:g}),null,16),(0,a._)("div",Fo,[(0,a._)("div",Bo,(0,s.zw)(t.$t("workouts.NO_DATA_CLEANING")),1),(0,a._)("div",Ho,[(0,a._)("label",null,[(0,a._)("input",{type:"checkbox",checked:i.value,onClick:e[0]||(e[0]=t=>i.value=!i.value)},null,8,Mo),(0,a.Uk)(" "+(0,s.zw)(t.$t("workouts.START_ELEVATION_AT_ZERO")),1)])])])])),_:1})])}}});const Zo=(0,D.Z)(qo,[["__scopeId","data-v-0b68c436"]]);var Go=Zo,Ko=o(2335);const Vo={id:"workout-note"},Yo=["innerHTML"];var Xo=(0,a.aZ)({__name:"WorkoutNotes",props:{notes:{default:()=>null}},setup(t){const e=t,{notes:o}=(0,n.BK)(e);return(t,e)=>{const l=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",Vo,[(0,a.Wm)(l,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.NOTES")),1)])),content:(0,a.w5)((()=>[(0,a._)("span",{innerHTML:(0,n.SU)(o)&&""!==(0,n.SU)(o)?(0,n.SU)(Ko.O)((0,n.SU)(o)):t.$t("workouts.NO_NOTES")},null,8,Yo)])),_:1})])}}});const Jo=(0,D.Z)(Xo,[["__scopeId","data-v-f6b59442"]]);var Qo=Jo;const ta={id:"workout-segments"};var ea=(0,a.aZ)({__name:"WorkoutSegments",props:{segments:null,useImperialUnits:{type:Boolean}},setup(t){const e=t,{segments:o,useImperialUnits:l}=(0,n.BK)(e);return(t,e)=>{const r=(0,a.up)("router-link"),i=(0,a.up)("Distance"),u=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",ta,[(0,a.Wm)(u,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",2)),1)])),content:(0,a.w5)((()=>[(0,a._)("ul",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(o),((e,o)=>((0,a.wg)(),(0,a.iD)("li",{key:e.segment_id},[(0,a.Wm)(r,{to:{name:"WorkoutSegment",params:{workoutId:e.workout_id,segmentId:o+1}}},{default:(0,a.w5)((()=>[(0,a.Uk)((0,s.zw)(t.$t("workouts.SEGMENT",1))+" "+(0,s.zw)(o+1),1)])),_:2},1032,["to"]),(0,a.Uk)(" ("+(0,s.zw)(t.$t("workouts.DISTANCE"))+": ",1),(0,a.Wm)(i,{distance:e.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(l)},null,8,["distance","useImperialUnits"]),(0,a.Uk)(", "+(0,s.zw)(t.$t("workouts.DURATION"))+": "+(0,s.zw)(e.duration)+") ",1)])))),128))])])),_:1})])}}});const oa=(0,D.Z)(ea,[["__scopeId","data-v-6b8a27cd"]]);var aa=oa;const na=t=>((0,a.dD)("data-v-53c4e53a"),t=t(),(0,a.Cn)(),t),la={id:"workout",class:"view"},ra={class:"container"},sa={key:0,class:"workout-container"},ia={key:0},ua=na((()=>(0,a._)("div",{id:"bottom"},null,-1))),da={key:1};var ca=(0,a.aZ)({__name:"Workout",props:{displaySegment:{type:Boolean}},setup(t){const e=t,o=(0,l.yj)(),s=(0,ko.o)(),{displaySegment:i}=(0,n.BK)(e),u=(0,a.Fl)((()=>s.getters[wo.aX.GETTERS.WORKOUT_DATA])),d=(0,a.Fl)((()=>s.getters[wo.YN.GETTERS.AUTH_USER_PROFILE])),c=(0,a.Fl)((()=>s.getters[wo.O8.GETTERS.SPORTS])),p=(0,n.iH)({latitude:null,longitude:null});function m(t){p.value={latitude:t.latitude,longitude:t.longitude}}return(0,a.wF)((()=>{const t={workoutId:o.params.workoutId};e.displaySegment&&(t.segmentId=o.params.segmentId),s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,t)})),(0,a.Ah)((()=>{s.commit(wo.aX.MUTATIONS.EMPTY_WORKOUT)})),(0,a.YP)((()=>o.params.workoutId),(async t=>{t&&s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,{workoutId:t})})),(0,a.YP)((()=>o.params.segmentId),(async t=>{if(o.params.workoutId){const e={workoutId:o.params.workoutId};t&&(e.segmentId=t),s.dispatch(wo.aX.ACTIONS.GET_WORKOUT_DATA,e)}})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",la,[(0,a._)("div",ra,[(0,n.SU)(c).length>0?((0,a.wg)(),(0,a.iD)("div",sa,[(0,n.SU)(u).workout.id?((0,a.wg)(),(0,a.iD)("div",ia,[(0,a.Wm)(Ao,{workoutData:(0,n.SU)(u),sports:(0,n.SU)(c),authUser:(0,n.SU)(d),markerCoordinates:p.value,displaySegment:(0,n.SU)(i)},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment"]),(0,n.SU)(u).workout.with_gpx&&(0,n.SU)(u).chartData.length>0?((0,a.wg)(),(0,a.j4)(Go,{key:0,workoutData:(0,n.SU)(u),authUser:(0,n.SU)(d),displaySegment:(0,n.SU)(i),onGetCoordinates:m},null,8,["workoutData","authUser","displaySegment"])):(0,a.kq)("",!0),!(0,n.SU)(i)&&(0,n.SU)(u).workout.segments.length>1?((0,a.wg)(),(0,a.j4)(aa,{key:1,segments:(0,n.SU)(u).workout.segments,useImperialUnits:(0,n.SU)(d).imperial_units},null,8,["segments","useImperialUnits"])):(0,a.kq)("",!0),(0,n.SU)(i)?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(Qo,{key:2,notes:(0,n.SU)(u).workout.notes},null,8,["notes"])),ua])):((0,a.wg)(),(0,a.iD)("div",da,[(0,n.SU)(u).loading?(0,a.kq)("",!0):((0,a.wg)(),(0,a.j4)(r.Z,{key:0,target:"WORKOUT"}))]))])):(0,a.kq)("",!0)])]))}});const pa=(0,D.Z)(ca,[["__scopeId","data-v-53c4e53a"]]);var ma=pa},9628:function(t,e,o){o.r(e),o.d(e,{default:function(){return Ft}});var a=o(6252),n=o(2262),l=o(3577),r=o(9150),s=(o(7658),o(2201)),i=o(631),u=o(3649);const d=t=>((0,a.dD)("data-v-6c38593a"),t=t(),(0,a.Cn)(),t),c={class:"workouts-filters"},p={class:"box"},m={class:"form"},w={class:"form-items-group"},k={class:"form-item"},_=["value"],v={class:"form-item"},f=["value"],g={class:"form-items-group"},y={class:"form-item"},S=["value"],U=d((()=>(0,a._)("option",{value:""},null,-1))),h=["value"],b={class:"form-items-group"},T={class:"form-item"},E={class:"form-inputs-group"},D=["value"],O=["value"],I={class:"form-items-group"},A={class:"form-item"},C={class:"form-inputs-group"},R=["value"],$=["value"],N={class:"form-items-group"},x={class:"form-item"},z={class:"form-inputs-group"},L=["value"],j=["value"],W={class:"form-items-group"},P={class:"form-item"},F={class:"form-inputs-group"},B=["value"],H=["value"],M={class:"form-button"};var q=(0,a.aZ)({__name:"WorkoutsFilters",props:{authUser:null,sports:null},emits:["filter"],setup(t,{emit:e}){const o=t,{t:d}=(0,r.QT)(),q=(0,s.yj)(),Z=(0,s.tv)(),{authUser:G}=(0,n.BK)(o),K=G.value.imperial_units?u.Dl.km.defaultTarget:"km",V=(0,a.Fl)((()=>(0,i.xH)(o.sports,d)));let Y=Object.assign({},q.query);function X(t){""===t.target.value?delete Y[t.target.name]:Y[t.target.name]=t.target.value}function J(){e("filter"),"page"in Y&&(Y["page"]="1"),Z.push({path:"/workouts",query:Y})}function Q(){e("filter"),Z.push({path:"/workouts",query:{}})}return(0,a.YP)((()=>q.query),(t=>{Y=Object.assign({},t)})),(t,e)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",p,[(0,a._)("div",m,[(0,a._)("div",w,[(0,a._)("div",k,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.FROM"))+": ",1),(0,a._)("input",{name:"from",type:"date",value:t.$route.query.from,onChange:X},null,40,_)]),(0,a._)("div",v,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.TO"))+": ",1),(0,a._)("input",{name:"to",type:"date",value:t.$route.query.to,onChange:X},null,40,f)])]),(0,a._)("div",g,[(0,a._)("div",y,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.SPORT",1))+":",1),(0,a._)("select",{name:"sport_id",value:t.$route.query.sport_id,onChange:X},[U,((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(V).filter((t=>(0,n.SU)(G).sports_list.includes(t.id))),(t=>((0,a.wg)(),(0,a.iD)("option",{value:t.id,key:t.id},(0,l.zw)(t.translatedLabel),9,h)))),128))],40,S)])]),(0,a._)("div",b,[(0,a._)("div",T,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DISTANCE"))+" ("+(0,l.zw)((0,n.SU)(K))+"): ",1),(0,a._)("div",E,[(0,a._)("input",{name:"distance_from",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_from,onChange:X},null,40,D),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"distance_to",type:"number",min:"0",step:"0.1",value:t.$route.query.distance_to,onChange:X},null,40,O)])])]),(0,a._)("div",I,[(0,a._)("div",A,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.DURATION"))+": ",1),(0,a._)("div",C,[(0,a._)("input",{name:"duration_from",value:t.$route.query.duration_from,onChange:X,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,R),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{name:"duration_to",value:t.$route.query.duration_to,onChange:X,pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,$)])])]),(0,a._)("div",N,[(0,a._)("div",x,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.AVE_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",z,[(0,a._)("input",{min:"0",name:"ave_speed_from",value:t.$route.query.ave_speed_from,onChange:X,step:"0.1",type:"number"},null,40,L),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"ave_speed_to",value:t.$route.query.ave_speed_to,onChange:X,step:"0.1",type:"number"},null,40,j)])])]),(0,a._)("div",W,[(0,a._)("div",P,[(0,a._)("label",null,(0,l.zw)(t.$t("workouts.MAX_SPEED"))+" ("+(0,l.zw)((0,n.SU)(K))+"/h): ",1),(0,a._)("div",F,[(0,a._)("input",{min:"0",name:"max_speed_from",value:t.$route.query.max_speed_from,onChange:X,step:"0.1",type:"number"},null,40,B),(0,a._)("span",null,(0,l.zw)(t.$t("workouts.TO")),1),(0,a._)("input",{min:"0",name:"max_speed_to",value:t.$route.query.max_speed_to,onChange:X,step:"0.1",type:"number"},null,40,H)])])])]),(0,a._)("div",M,[(0,a._)("button",{class:"confirm",onClick:J},(0,l.zw)(t.$t("buttons.FILTER")),1),(0,a._)("button",{class:"confirm",onClick:Q},(0,l.zw)(t.$t("buttons.CLEAR_FILTER")),1)])])]))}}),Z=o(3744);const G=(0,Z.Z)(q,[["__scopeId","data-v-6c38593a"]]);var K=G,V=o(8626),Y=o(5020),X=o(2056),J=o(5630),Q=o(5801),tt=o(9917),et=o(2766),ot=o(6558),at=o(3768);const nt=t=>((0,a.dD)("data-v-19504874"),t=t(),(0,a.Cn)(),t),lt={class:"workouts-list"},rt={class:"total"},st={class:"total-label"},it={key:0},ut={key:0,class:"workouts-table responsive-table"},dt=nt((()=>(0,a._)("th",{class:"sport-col"},null,-1))),ct={class:"sport-col"},pt={class:"cell-heading"},mt=["onMouseover"],wt={class:"cell-heading"},kt={key:0,class:"fa fa-map-o","aria-hidden":"true"},_t={class:"title"},vt={class:"workout-date"},ft={class:"cell-heading"},gt={class:"text-right"},yt={class:"cell-heading"},St={class:"text-right"},Ut={class:"cell-heading"},ht={class:"text-right"},bt={class:"cell-heading"},Tt={class:"text-right"},Et={class:"cell-heading"},Dt={class:"text-right"},Ot={class:"cell-heading"},It={class:"text-right"},At={class:"cell-heading"},Ct=nt((()=>(0,a._)("div",{id:"bottom"},null,-1)));var Rt=(0,a.aZ)({__name:"WorkoutsList",props:{user:null,sports:null},setup(t){const e=t,o=(0,tt.o)(),r=(0,s.yj)(),d=(0,s.tv)(),{user:c,sports:p}=(0,n.BK)(e),m=["ave_speed","distance","duration","workout_date"],w=(0,a.Fl)((()=>o.getters[Q.aX.GETTERS.USER_WORKOUTS])),k=(0,a.Fl)((()=>o.getters[Q.aX.GETTERS.WORKOUTS_PAGINATION])),_=(0,a.Fl)((()=>o.getters[Q.SY.GETTERS.LANGUAGE]));let v=S(r.query);const f=(0,n.iH)(null);function g(t){o.dispatch(Q.aX.ACTIONS.GET_USER_WORKOUTS,c.value.imperial_units?U(t):t)}function y(t,e){const o=Object.assign({},r.query);o[t]=e,"per_page"===t&&(o["page"]="1"),v=S(o),d.push({path:"/workouts",query:v})}function S(t){const e=(0,et.pm)(t,m,at.eR.order_by,{defaultSort:at.eR.order});return Object.keys(t).filter((t=>et.Ne.includes(t))).map((o=>{"string"===typeof t[o]&&(e[o]=t[o])})),e}function U(t){const e={...t};return Object.entries(e).map((t=>{t[0].match("speed|distance")&&t[1]&&(e[t[0]]=(0,u.sC)(+t[1],"mi","km"))})),e}function h(t){f.value=t}return(0,a.wF)((()=>{g(v)})),(0,a.YP)((()=>r.query),(async t=>{v=S(t),g(v)})),(t,e)=>{const o=(0,a.up)("SportImage"),r=(0,a.up)("router-link"),s=(0,a.up)("Distance");return(0,a.wg)(),(0,a.iD)("div",lt,[(0,a._)("div",{class:(0,l.C_)(["box",{"empty-table":0===(0,n.SU)(w).length}])},[(0,a._)("div",rt,[(0,a._)("span",st,(0,l.zw)(t.$t("common.TOTAL").toLowerCase())+": ",1),null!==(0,n.SU)(k).total?((0,a.wg)(),(0,a.iD)("span",it,(0,l.zw)((0,n.SU)(k).total)+" "+(0,l.zw)(t.$t("workouts.WORKOUT",(0,n.SU)(k).total)),1)):(0,a.kq)("",!0)]),(0,a.Wm)(V.Z,{sort:(0,n.SU)(et.fS),order_by:m,query:(0,n.SU)(v),message:"workouts",onUpdateSelect:y},null,8,["sort","query"]),(0,n.SU)(w).length>0?((0,a.wg)(),(0,a.iD)("div",ut,[(0,a.Wm)(Y.Z,{class:"top-pagination",pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(v)},null,8,["pagination","query"]),(0,a._)("table",null,[(0,a._)("thead",{class:(0,l.C_)({smaller:"de"===(0,n.SU)(_)})},[(0,a._)("tr",null,[dt,(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DATE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DISTANCE"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DURATION"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.AVE_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.MAX_SPEED"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.ASCENT"))),1),(0,a._)("th",null,(0,l.zw)((0,l.kC)(t.$t("workouts.DESCENT"))),1)])],2),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,n.SU)(w),(u=>((0,a.wg)(),(0,a.iD)("tr",{key:u.id},[(0,a._)("td",ct,[(0,a._)("span",pt,(0,l.zw)(t.$t("workouts.SPORT",1)),1),(0,n.SU)(p).length>0?((0,a.wg)(),(0,a.j4)(o,{key:0,title:(0,n.SU)(p).find((t=>t.id===u.sport_id)).translatedLabel,"sport-label":(0,n.SU)(i.PA)(u,(0,n.SU)(p)),color:(0,n.SU)(i.CM)(u,(0,n.SU)(p))},null,8,["title","sport-label","color"])):(0,a.kq)("",!0)]),(0,a._)("td",{class:"workout-title",onMouseover:t=>h(u.id),onMouseleave:e[0]||(e[0]=t=>h(null))},[(0,a._)("span",wt,(0,l.zw)((0,l.kC)(t.$t("workouts.WORKOUT",1))),1),(0,a.Wm)(r,{class:"nav-item",to:{name:"Workout",params:{workoutId:u.id}}},{default:(0,a.w5)((()=>[u.with_gpx?((0,a.wg)(),(0,a.iD)("i",kt)):(0,a.kq)("",!0),(0,a._)("span",_t,(0,l.zw)(u.title),1)])),_:2},1032,["to"]),u.with_gpx&&f.value===u.id?((0,a.wg)(),(0,a.j4)(X.Z,{key:0,workout:u,"display-hover":!0},null,8,["workout"])):(0,a.kq)("",!0)],40,mt),(0,a._)("td",vt,[(0,a._)("span",ft,(0,l.zw)(t.$t("workouts.DATE")),1),(0,a.Uk)(" "+(0,l.zw)((0,n.SU)(ot.p6)(u.workout_date,(0,n.SU)(c).timezone,(0,n.SU)(c).date_format)),1)]),(0,a._)("td",gt,[(0,a._)("span",yt,(0,l.zw)(t.$t("workouts.DISTANCE")),1),(0,a.Wm)(s,{distance:u.distance,unitFrom:"km",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",St,[(0,a._)("span",Ut,(0,l.zw)(t.$t("workouts.DURATION")),1),(0,a.Uk)(" "+(0,l.zw)(u.moving),1)]),(0,a._)("td",ht,[(0,a._)("span",bt,(0,l.zw)(t.$t("workouts.AVE_SPEED")),1),(0,a.Wm)(s,{distance:u.ave_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Tt,[(0,a._)("span",Et,(0,l.zw)(t.$t("workouts.MAX_SPEED")),1),(0,a.Wm)(s,{distance:u.max_speed,unitFrom:"km",speed:!0,useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])]),(0,a._)("td",Dt,[(0,a._)("span",Ot,(0,l.zw)(t.$t("workouts.ASCENT")),1),null!==u.ascent?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.ascent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)]),(0,a._)("td",It,[(0,a._)("span",At,(0,l.zw)(t.$t("workouts.DESCENT")),1),null!==u.descent?((0,a.wg)(),(0,a.j4)(s,{key:0,distance:u.descent,unitFrom:"m",useImperialUnits:(0,n.SU)(c).imperial_units},null,8,["distance","useImperialUnits"])):(0,a.kq)("",!0)])])))),128))])]),(0,a.Wm)(Y.Z,{pagination:(0,n.SU)(k),path:"/workouts",query:(0,n.SU)(v)},null,8,["pagination","query"])])):(0,a.kq)("",!0)],2),0===(0,n.SU)(w).length?((0,a.wg)(),(0,a.j4)(J.Z,{key:0})):(0,a.kq)("",!0),Ct])}}});const $t=(0,Z.Z)(Rt,[["__scopeId","data-v-19504874"]]);var Nt=$t;const xt={key:0,id:"workouts",class:"view"},zt={class:"container workouts-container"},Lt={class:"display-filters"},jt={class:"list-container"};var Wt=(0,a.aZ)({__name:"WorkoutsView",setup(t){const{t:e}=(0,r.QT)(),o=(0,tt.o)(),s=(0,a.Fl)((()=>o.getters[Q.YN.GETTERS.AUTH_USER_PROFILE])),u=(0,a.Fl)((()=>o.getters[Q.O8.GETTERS.SPORTS])),d=(0,a.Fl)((()=>(0,i.xH)(u.value,e))),c=(0,n.iH)(!0);function p(){c.value=!c.value}return(t,e)=>(0,n.SU)(s).username?((0,a.wg)(),(0,a.iD)("div",xt,[(0,a._)("div",zt,[(0,a._)("div",{class:(0,l.C_)(["filters-container",{hidden:c.value}])},[(0,a.Wm)(K,{sports:(0,n.SU)(d),authUser:(0,n.SU)(s),onFilter:p},null,8,["sports","authUser"])],2),(0,a._)("div",Lt,[(0,a._)("div",{onClick:p},[(0,a._)("i",{class:(0,l.C_)("fa fa-caret-"+(c.value?"down":"up")),"aria-hidden":"true"},null,2),(0,a._)("span",null,(0,l.zw)(t.$t(`workouts.${c.value?"DISPLAY":"HIDE"}_FILTERS`)),1)])]),(0,a._)("div",jt,[(0,a.Wm)(Nt,{user:(0,n.SU)(s),sports:(0,n.SU)(d)},null,8,["user","sports"])])])])):(0,a.kq)("",!0)}});const Pt=(0,Z.Z)(Wt,[["__scopeId","data-v-57ec0168"]]);var Ft=Pt}}]); -//# sourceMappingURL=workouts.0fd5b207.js.map \ No newline at end of file +//# sourceMappingURL=workouts.a06ab85f.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.0fd5b207.js.map b/fittrackee/dist/static/js/workouts.a06ab85f.js.map similarity index 99% rename from fittrackee/dist/static/js/workouts.0fd5b207.js.map rename to fittrackee/dist/static/js/workouts.a06ab85f.js.map index 73ce0997..88f63874 100644 --- a/fittrackee/dist/static/js/workouts.0fd5b207.js.map +++ b/fittrackee/dist/static/js/workouts.a06ab85f.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/workouts.0fd5b207.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-45d3bf87\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = { class: \"workout-data\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = [\"disabled\"]\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = [\"disabled\"]\nconst _hoisted_36 = { class: \"form-item\" }\nconst _hoisted_37 = { key: 1 }\nconst _hoisted_38 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_39 = [\"disabled\"]\nconst _hoisted_40 = [\"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout };\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\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 gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n workoutAscent: '',\n workoutDescent: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n const payloadErrorMessages: Ref = ref([])\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 3)\n : parseFloat(workout.distance.toFixed(3))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n workoutForm.workoutAscent =\n workout.ascent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.ascent, 'm', 'ft', 2)\n : parseFloat(workout.ascent.toFixed(2))\n }`\n workoutForm.workoutDescent =\n workout.descent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.descent, 'm', 'ft', 2)\n : parseFloat(workout.descent.toFixed(2))\n }`\n }\n }\n function isDistanceInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')\n }\n function isDurationInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')\n }\n function isElevationInvalid() {\n return payloadErrorMessages.value.includes(\n 'workouts.INVALID_ASCENT_OR_DESCENT'\n )\n }\n function formatPayload(payload: IWorkoutForm) {\n payloadErrorMessages.value = []\n payload.title = workoutForm.title\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n if (payload.duration <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DURATION')\n }\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n if (payload.distance <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')\n }\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n payload.ascent =\n workoutForm.workoutAscent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)\n : +workoutForm.workoutAscent\n payload.descent =\n workoutForm.workoutDescent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)\n : +workoutForm.workoutDescent\n if (\n (payload.ascent !== null && payload.descent === null) ||\n (payload.ascent === null && payload.descent !== null)\n ) {\n payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')\n }\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n }\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \"*: \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \"*: \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \"*:\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 42, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 42, _hoisted_27), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 42, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \")*: \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isDistanceInvalid() }),\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 42, _hoisted_31), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.ASCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-ascent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((workoutForm.workoutAscent) = $event))\n }, null, 42, _hoisted_33), [\n [_vModelText, workoutForm.workoutAscent]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DESCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-descent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((workoutForm.workoutDescent) = $event))\n }, null, 42, _hoisted_35), [\n [_vModelText, workoutForm.workoutDescent]\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\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(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_39),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_40)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=45d3bf87&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-45d3bf87\"]])\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 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.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, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\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 workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.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, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"workout-date\" }\nconst _hoisted_12 = { class: \"workout-link\" }\nconst _hoisted_13 = [\"title\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n };\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _createTextVNode(\" — \"),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_12, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_15, 10, _hoisted_13)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&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-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n };\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&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-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40697ed1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { getWindSpeed } from '@/utils/units'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createTextVNode(_toDisplayString(_unref(getWindSpeed)(_unref(weather).wind, _unref(useImperialUnits))) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=40697ed1&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-40697ed1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, 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-807b431a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n import { getTemperature } from '@/utils/units'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherStart.temperature,\n _unref(useImperialUnits)\n )), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherEnd.temperature,\n _unref(useImperialUnits)\n )), 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=807b431a&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-807b431a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = { class: \"value\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"value\" }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"workout-data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"label\" }\nconst _hoisted_12 = { class: \"workout-data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = { class: \"label\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_18 = [\"alt\"]\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_21 = { class: \"label\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = { class: \"label\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n };\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\": \"),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_18),\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_20,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&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-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIconHref(node) {\n return get(node, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n });\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), extractIconHref(iconStyle));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst toNumber = (x) => Number(x);\nconst typeConverters = {\n string: (x) => x,\n int: toNumber,\n uint: toNumber,\n short: toNumber,\n ushort: toNumber,\n float: toNumber,\n double: toNumber,\n bool: (x) => Boolean(x),\n};\nfunction extractExtendedData(node, schema) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n const name = simpleData.getAttribute(\"name\") || \"\";\n const typeConverter = schema[name] || typeConverters.string;\n properties[name] = typeConverter(nodeVal(simpleData));\n }\n return properties;\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n let geometries = [];\n let coordTimes = [];\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes.item(i);\n if (isElement(child)) {\n switch (child.tagName) {\n case \"MultiGeometry\":\n case \"MultiTrack\":\n case \"gx:MultiTrack\": {\n const childGeometries = getGeometry(child);\n geometries = geometries.concat(childGeometries.geometries);\n coordTimes = coordTimes.concat(childGeometries.coordTimes);\n break;\n }\n case \"Point\": {\n const coordinates = coord1(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LinearRing\":\n case \"LineString\": {\n const coordinates = coord(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(child, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(child);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction getPlacemark(node, styleMap, schema) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getGroundOverlayBox(node) {\n const latLonQuad = get1(node, \"gx:LatLonQuad\");\n if (latLonQuad) {\n const ring = fixRing(coord(getCoordinates(node)));\n return {\n type: \"Polygon\",\n coordinates: [ring],\n };\n }\n return getLatLonBox(node);\n}\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction rotateBox(bbox, coordinates, rotation) {\n const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];\n return [\n coordinates[0].map((coordinate) => {\n const dy = coordinate[1] - center[1];\n const dx = coordinate[0] - center[0];\n const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));\n const angle = Math.atan2(dy, dx) - rotation * DEGREES_TO_RADIANS;\n return [\n center[0] + Math.cos(angle) * distance,\n center[1] + Math.sin(angle) * distance,\n ];\n }),\n ];\n}\nfunction getLatLonBox(node) {\n const latLonBox = get1(node, \"LatLonBox\");\n if (latLonBox) {\n const north = num1(latLonBox, \"north\");\n const west = num1(latLonBox, \"west\");\n const east = num1(latLonBox, \"east\");\n const south = num1(latLonBox, \"south\");\n const rotation = num1(latLonBox, \"rotation\");\n if (typeof north === \"number\" &&\n typeof south === \"number\" &&\n typeof west === \"number\" &&\n typeof east === \"number\") {\n const bbox = [west, south, east, north];\n let coordinates = [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north], // top left (again)\n ],\n ];\n if (typeof rotation === \"number\") {\n coordinates = rotateBox(bbox, coordinates, rotation);\n }\n return {\n type: \"Polygon\",\n coordinates,\n };\n }\n }\n return null;\n}\nfunction getGroundOverlay(node, styleMap, schema) {\n const geometry = getGroundOverlayBox(node);\n const feature = {\n type: \"Feature\",\n geometry,\n properties: Object.assign(\n /**\n * Related to\n * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46\n */\n { \"@geometry-type\": \"groundoverlay\" }, getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractIconHref(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node)),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nfunction buildSchema(node) {\n const schema = {};\n for (const field of $(node, \"SimpleField\")) {\n schema[field.getAttribute(\"name\") || \"\"] =\n typeConverters[field.getAttribute(\"type\") || \"\"] ||\n typeConverters[\"string\"];\n }\n return schema;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n *\n * ### GroundOverlay\n *\n * GroundOverlay elements are converted into\n * `Feature` objects with `Polygon` geometries,\n * a property like:\n *\n * ```json\n * {\n * \"@geometry-type\": \"groundoverlay\"\n * }\n * ```\n *\n * And the ground overlay's image URL in the `href`\n * property. Ground overlays will need to be displayed\n * with a separate method to other features, depending\n * on which map framework you're using.\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"GroundOverlay\": {\n const placemark = getGroundOverlay(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap, schema);\n if (feature)\n yield feature;\n }\n for (const groundOverlay of $(node, \"GroundOverlay\")) {\n const feature = getGroundOverlay(groundOverlay, styleMap, schema);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch as ne, ref as y, provide as T, h as I, inject as c, onUnmounted as Y, onBeforeUnmount as U, onMounted as b, markRaw as _, nextTick as f, render as Ae, reactive as we, computed as se } from \"vue\";\nconst le = (t, o = 100) => {\n let e;\n const n = function(...r) {\n const s = this;\n e && clearTimeout(e), e = setTimeout(() => {\n t.apply(s, r), e = null;\n }, o);\n };\n return n.cancel = function() {\n e && clearTimeout(e);\n }, n;\n}, ie = function(t) {\n for (const o of Object.values(t))\n o && M(o.cancel) && o.cancel();\n}, Ge = (t) => !t || typeof t.charAt != \"function\" ? t : t.charAt(0).toUpperCase() + t.slice(1), M = (t) => typeof t == \"function\", h = (t, o, e) => {\n for (const n in e) {\n const r = \"set\" + Ge(n);\n t[r] ? ne(\n () => e[n],\n (s, l) => {\n t[r](s, l);\n }\n ) : o[r] && ne(\n () => e[n],\n (s) => {\n o[r](s);\n }\n );\n }\n}, L = (t, o, e = {}) => {\n const n = { ...e };\n for (const r in t) {\n const s = o[r], l = t[r];\n s && (s && s.custom === !0 || l !== void 0 && (n[r] = l));\n }\n return n;\n}, S = (t) => {\n const o = {};\n for (const e in t)\n if (e.startsWith(\"on\") && !e.startsWith(\"onUpdate\") && e !== \"onReady\") {\n const n = e.slice(2).toLocaleLowerCase();\n o[n] = t[e];\n }\n return o;\n}, Me = async (t) => {\n const o = await Promise.all([\n import(\"leaflet/dist/images/marker-icon-2x.png\"),\n import(\"leaflet/dist/images/marker-icon.png\"),\n import(\"leaflet/dist/images/marker-shadow.png\")\n ]);\n delete t.Default.prototype._getIconUrl, t.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, q = (t) => {\n const o = y(\n () => console.warn(`Method ${t} has been invoked without being replaced`)\n ), e = (...n) => o.value(...n);\n return e.wrapped = o, T(t, e), e;\n}, J = (t, o) => t.wrapped.value = o, v = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || void 0, g = \"useGlobalLeaflet\", z = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, F = (t) => ({ options: t.options, methods: {} }), k = {\n ...z,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, Z = (t, o, e) => {\n const n = c(\"addLayer\"), r = c(\"removeLayer\"), {\n options: s,\n methods: l\n } = F(t), a = L(t, k, s), i = () => n({ leafletObject: o.value }), u = () => r({ leafletObject: o.value }), p = {\n ...l,\n setAttribution(m) {\n u(), o.value.options.attribution = m, t.visible && i();\n },\n setName() {\n u(), t.visible && i();\n },\n setLayerType() {\n u(), t.visible && i();\n },\n setVisible(m) {\n o.value && (m ? i() : u());\n },\n bindPopup({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(m);\n },\n bindTooltip({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(m);\n },\n unbindTooltip() {\n o.value && (M(o.value.closeTooltip) && o.value.closeTooltip(), M(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (M(o.value.closePopup) && o.value.closePopup(), M(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(m) {\n e.emit(\"update:visible\", m);\n }\n };\n return T(\"bindPopup\", p.bindPopup), T(\"bindTooltip\", p.bindTooltip), T(\"unbindTooltip\", p.unbindTooltip), T(\"unbindPopup\", p.unbindPopup), Y(() => {\n p.unbindPopup(), p.unbindTooltip(), u();\n }), { options: a, methods: p };\n}, A = (t, o) => {\n if (t && o.default)\n return I(\"div\", { style: { display: \"none\" } }, o.default());\n}, ue = {\n ...k,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ie = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(\n t,\n ue,\n n\n ), methods: r };\n}, V = {\n ...ue,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, ce = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = Ie(t, o, e), s = L(\n t,\n V,\n n\n ), l = c(\"removeLayer\"), a = {\n ...r,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return U(() => {\n l({ leafletObject: o.value });\n }), { options: s, methods: a };\n}, x = {\n ...V,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, de = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, x, n), l = {\n ...r,\n setRadius(a) {\n o.value.setRadius(a);\n },\n setLatLng(a) {\n o.value.setLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, pe = {\n ...x,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, Ne = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = de(t, o, e), s = L(\n t,\n pe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, ke = {\n name: \"LCircle\",\n props: pe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ne(t, e, o);\n return b(async () => {\n const { circle: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, jt = ke, De = {\n name: \"LCircleMarker\",\n props: x,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = de(\n t,\n e,\n o\n );\n return b(async () => {\n const { circleMarker: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Pt = De, D = {\n ...z,\n position: {\n type: String\n }\n}, W = (t, o) => {\n const {\n options: e,\n methods: n\n } = F(t), r = L(t, D, e), s = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return Y(() => {\n o.value && o.value.remove();\n }), { options: r, methods: s };\n}, Ee = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, He = {\n name: \"LControl\",\n props: {\n ...D,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"registerControl\"), { options: l, methods: a } = W(t, e);\n return b(async () => {\n const { Control: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), p = i.extend({\n onAdd() {\n return n.value;\n }\n });\n e.value = _(new p(l)), h(a, e.value, t), s({ leafletObject: e.value }), t.disableClickPropagation && u.disableClickPropagation(n.value), t.disableScrollPropagation && u.disableScrollPropagation(n.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Ee(this.$slots);\n }\n}, Bt = He, ye = {\n ...D,\n prefix: {\n type: String\n }\n}, Ue = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n ), r = L(\n t,\n ye,\n e\n ), s = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: r, methods: s };\n}, ze = {\n name: \"LControlAttribution\",\n props: ye,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Ue(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.attribution(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Tt = ze, me = {\n ...D,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, Fe = (t, o) => {\n const { options: e } = W(t, o);\n return { options: L(\n t,\n me,\n e\n ), methods: {\n addLayer(s) {\n s.layerType === \"base\" ? o.value.addBaseLayer(s.leafletObject, s.name) : s.layerType === \"overlay\" && o.value.addOverlay(s.leafletObject, s.name);\n },\n removeLayer(s) {\n o.value.removeLayer(s.leafletObject);\n }\n } };\n}, Ze = {\n name: \"LControlLayers\",\n props: me,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerLayerControl\"), { options: s, methods: l } = Fe(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.layers(null, null, s)), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, $t = Ze, ve = {\n ...D,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, We = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n ve,\n e\n ), methods: n };\n}, qe = {\n name: \"LControlScale\",\n props: ve,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = We(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.scale(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, At = qe, fe = {\n ...D,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, Je = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n fe,\n e\n ), methods: n };\n}, Ke = {\n name: \"LControlZoom\",\n props: fe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Je(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.zoom(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, wt = Ke, K = {\n ...k\n}, R = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, K, n), l = {\n ...r,\n addLayer(a) {\n o.value.addLayer(a.leafletObject);\n },\n removeLayer(a) {\n o.value.removeLayer(a.leafletObject);\n }\n };\n return T(\"addLayer\", l.addLayer), T(\"removeLayer\", l.removeLayer), { options: s, methods: l };\n}, Le = {\n ...K\n}, Qe = (t, o) => {\n const { options: e, methods: n } = R(\n t,\n o\n ), r = L(t, Le, e), s = {\n ...n\n };\n return { options: r, methods: s };\n}, Xe = {\n props: Le,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Qe(t, e);\n return b(async () => {\n const { featureGroup: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Gt = Xe, be = {\n ...K,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: [Object, Function],\n custom: !0\n }\n}, Ye = (t, o, e) => {\n const { options: n, methods: r } = R(\n t,\n o,\n e\n ), s = L(t, be, n);\n Object.prototype.hasOwnProperty.call(t, \"optionsStyle\") && (s.style = t.optionsStyle);\n const l = {\n ...r,\n setGeojson(a) {\n o.value.clearLayers(), o.value.addData(a);\n },\n setOptionsStyle(a) {\n o.value.setStyle(a);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: s, methods: l };\n}, Ve = {\n props: be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Ye(t, e, o);\n return b(async () => {\n const { geoJSON: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.geojson, a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Mt = Ve, ee = {\n ...k,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: Number\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n }\n}, he = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(t, ee, n), methods: { ...r } };\n}, xe = {\n props: {\n ...ee,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(t, o) {\n const e = y({}), n = y({}), r = y(null), s = y(!1), l = c(g), a = c(\"addLayer\"), { options: i, methods: u } = he(t, e, o);\n return b(async () => {\n const { GridLayer: p, DomEvent: m, DomUtil: $ } = l ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n u.onUnload = (B) => {\n const j = e.value._tileCoordsToKey(B.coords);\n n[j] && (n[j].innerHTML = \"\", n[j] = void 0);\n }, u.setTileComponent = () => {\n e.value.redraw();\n };\n const O = p.extend({\n createTile(B) {\n const j = e.value._tileCoordsToKey(B);\n n[j] = $.create(\"div\");\n let G = I(\n { setup: t.childRender, props: [\"coords\"] },\n { coords: B }\n );\n return Ae(G, n[j]), n[j];\n }\n });\n e.value = _(new O(i));\n const P = S(o.attrs);\n m.on(e.value, P), e.value.on(\"tileunload\", u.onUnload), h(u, e.value, t), a({\n ...t,\n ...u,\n leafletObject: e.value\n }), s.value = !0, f(() => o.emit(\"ready\", e.value));\n }), Y(() => {\n e.value.off(\"tileunload\", u.onUnload);\n }), { root: r, ready: s, leafletObject: e };\n },\n render() {\n return this.ready ? I(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}, It = xe, ae = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, Re = {\n name: \"LIcon\",\n props: {\n ...ae,\n ...z\n },\n setup(t, o) {\n const e = y(null), n = c(g), r = c(\"canSetParentHtml\"), s = c(\"setParentHtml\"), l = c(\"setIcon\");\n let a, i, u, p, m;\n const $ = (j, G, E) => {\n const N = j && j.innerHTML;\n if (!G) {\n E && m && r() && s(N);\n return;\n }\n const w = S(o.attrs);\n m && i(m, w);\n const { options: X } = F(t), d = L(t, ae, X);\n N && (d.html = N), m = d.html ? u(d) : p(d), a(m, w), l(m);\n }, O = () => {\n f(() => $(e.value, !0, !1));\n }, P = () => {\n f(() => $(e.value, !1, !0));\n }, B = {\n setIconUrl: O,\n setIconRetinaUrl: O,\n setIconSize: O,\n setIconAnchor: O,\n setPopupAnchor: O,\n setTooltipAnchor: O,\n setShadowUrl: O,\n setShadowRetinaUrl: O,\n setShadowAnchor: O,\n setBgPos: O,\n setClassName: O,\n setHtml: O\n };\n return b(async () => {\n const { DomEvent: j, divIcon: G, icon: E } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n a = j.on, i = j.off, u = G, p = E, h(B, {}, t), new MutationObserver(P).observe(e.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), O();\n }), { root: e };\n },\n render() {\n const t = this.$slots.default ? this.$slots.default() : void 0;\n return I(\"div\", { ref: \"root\" }, t);\n }\n}, Nt = Re, ge = {\n ...k,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, et = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, ge, n), l = {\n ...r,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(a) {\n return o.value.setOpacity(a);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(a) {\n return o.value.setUrl(a);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(a) {\n return o.value.setBounds(a);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(a) {\n return o.value.setZIndex(a);\n }\n };\n return { options: s, methods: l };\n}, tt = {\n name: \"LImageOverlay\",\n props: ge,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = et(\n t,\n e,\n o\n );\n return b(async () => {\n const { imageOverlay: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(\n i(t.url, t.bounds, l)\n );\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, kt = tt, ot = {\n props: K,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l } = R(t, e, o);\n return b(async () => {\n const { layerGroup: a, DomEvent: i } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.options));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Dt = ot, re = {\n ...z,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object]\n },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, nt = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: re,\n setup(t, o) {\n const e = y(null), n = we({\n ready: !1,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: []\n }), { options: r } = F(t), s = L(t, re, r), l = q(\"addLayer\"), a = q(\"removeLayer\"), i = q(\"registerControl\"), u = q(\"registerLayerControl\");\n T(g, t.useGlobalLeaflet);\n const p = {\n moveEndHandler: le(() => {\n o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds());\n }),\n overlayAddHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!0);\n },\n overlayRemoveHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!1);\n }\n };\n b(async () => {\n t.useGlobalLeaflet && (v.L = v.L || await import(\"leaflet\"));\n const {\n map: O,\n CRS: P,\n Icon: B,\n latLngBounds: j,\n latLng: G,\n DomEvent: E\n } = t.useGlobalLeaflet ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n s.beforeMapMount && await s.beforeMapMount();\n } catch (d) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${d.message}`\n );\n }\n await Me(B);\n const N = typeof s.crs == \"string\" ? P[s.crs] : s.crs;\n s.crs = N || P.EPSG3857;\n const w = {\n addLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(d) : n.layersInControl.find(\n (H) => H.leafletObject._leaflet_id === d.leafletObject._leaflet_id\n ) || (n.layerControl.addLayer(d), n.layersInControl.push(d))), d.visible !== !1 && n.leafletRef.addLayer(d.leafletObject);\n },\n removeLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (C) => C.name !== d.name\n ) : (n.layerControl.removeLayer(d.leafletObject), n.layersInControl = n.layersInControl.filter(\n (C) => C.leafletObject._leaflet_id !== d.leafletObject._leaflet_id\n ))), n.leafletRef.removeLayer(d.leafletObject);\n },\n registerLayerControl(d) {\n n.layerControl = d, n.layersToAdd.forEach((C) => {\n n.layerControl.addLayer(C);\n }), n.layersToAdd = [], i(d);\n },\n registerControl(d) {\n n.leafletRef.addControl(d.leafletObject);\n },\n setZoom(d) {\n const C = n.leafletRef.getZoom();\n d !== C && n.leafletRef.setZoom(d, {\n animate: t.noBlockingAnimations ? !1 : null\n });\n },\n setPaddingBottomRight(d) {\n n.paddingBottomRight = d;\n },\n setPaddingTopLeft(d) {\n n.paddingTopLeft = d;\n },\n setPadding(d) {\n n.padding = d;\n },\n setCrs(d) {\n const C = n.leafletRef.getBounds();\n n.leafletRef.options.crs = d, n.leafletRef.fitBounds(C, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(d) {\n n.leafletRef.fitBounds(d, {\n animate: this.noBlockingAnimations ? !1 : null\n });\n },\n setBounds(d) {\n if (!d)\n return;\n const C = j(d);\n if (!C.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(C, 0) && (n.lastSetBounds = C, n.leafletRef.fitBounds(C, this.fitBoundsOptions));\n },\n setCenter(d) {\n if (d == null)\n return;\n const C = G(d), H = n.lastSetCenter || n.leafletRef.getCenter();\n (H.lat !== C.lat || H.lng !== C.lng) && (n.lastSetCenter = C, n.leafletRef.panTo(C, {\n animate: this.noBlockingAnimations ? !1 : null\n }));\n }\n };\n J(l, w.addLayer), J(a, w.removeLayer), J(i, w.registerControl), J(u, w.registerLayerControl), n.leafletRef = _(O(e.value, s)), h(w, n.leafletRef, t);\n const X = S(o.attrs);\n n.leafletRef.on(\"moveend\", p.moveEndHandler), n.leafletRef.on(\"overlayadd\", p.overlayAddHandler), n.leafletRef.on(\n \"overlayremove\",\n p.overlayRemoveHandler\n ), E.on(n.leafletRef, X), n.ready = !0, f(() => o.emit(\"ready\", n.leafletRef));\n }), U(() => {\n ie(p), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const m = se(() => n.leafletRef), $ = se(() => n.ready);\n return { root: e, ready: $, leafletObject: m };\n },\n render() {\n return I(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}, Et = nt, st = [\"Symbol(Comment)\", \"Symbol(Text)\"], at = [\"LTooltip\", \"LPopup\"], Oe = {\n ...k,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, rt = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, Oe, n), l = {\n ...r,\n setDraggable(a) {\n o.value.dragging && (a ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(a) {\n e.emit(\"update:latLng\", a.latlng), e.emit(\"update:lat-lng\", a.latlng);\n },\n setLatLng(a) {\n if (a != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(a)) && o.value.setLatLng(a);\n }\n }\n };\n return { options: s, methods: l };\n}, lt = (t, o) => {\n const e = o.slots.default && o.slots.default();\n return e && e.length && e.some(it);\n};\nfunction it(t) {\n return !(st.includes(t.type.toString()) || at.includes(t.type.name));\n}\nconst ut = {\n name: \"LMarker\",\n props: Oe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\");\n T(\"canSetParentHtml\", () => !!e.value.getElement()), T(\n \"setParentHtml\",\n (u) => e.value.getElement().innerHTML = u\n ), T(\n \"setIcon\",\n (u) => e.value.setIcon && e.value.setIcon(u)\n );\n const { options: l, methods: a } = rt(t, e, o), i = {\n moveHandler: le(a.latLngSync)\n };\n return b(async () => {\n const { marker: u, DomEvent: p, divIcon: m } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n lt(l, o) && (l.icon = m({ className: \"\" })), e.value = _(u(t.latLng, l));\n const $ = S(o.attrs);\n p.on(e.value, $), e.value.on(\"move\", i.moveHandler), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), U(() => ie(i)), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ht = ut, te = {\n ...V,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, _e = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, te, n), l = {\n ...r,\n setSmoothFactor(a) {\n o.value.setStyle({ smoothFactor: a });\n },\n setNoClip(a) {\n o.value.setStyle({ noClip: a });\n },\n addLatLng(a) {\n o.value.addLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, Q = {\n ...te\n}, Ce = (t, o, e) => {\n const { options: n, methods: r } = _e(\n t,\n o,\n e\n ), s = L(t, Q, n), l = {\n ...r,\n toGeoJSON(a) {\n return o.value.toGeoJSON(a);\n }\n };\n return { options: s, methods: l };\n}, ct = {\n name: \"LPolygon\",\n props: Q,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ce(t, e, o);\n return b(async () => {\n const { polygon: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ut = ct, dt = {\n name: \"LPolyline\",\n props: te,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = _e(t, e, o);\n return b(async () => {\n const { polyline: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, zt = dt, Se = {\n ...z,\n content: {\n type: String,\n default: null\n }\n}, je = (t, o) => {\n const { options: e, methods: n } = F(t), r = {\n ...n,\n setContent(s) {\n o.value && s !== null && s !== void 0 && o.value.setContent(s);\n }\n };\n return { options: e, methods: r };\n}, Pe = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, pt = {\n ...Se,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, yt = (t, o) => {\n const { options: e, methods: n } = je(t, o);\n return { options: e, methods: n };\n}, mt = {\n name: \"LPopup\",\n props: pt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindPopup\"), l = c(\"unbindPopup\"), { options: a, methods: i } = yt(t, e);\n return b(async () => {\n const { popup: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(u(a)), t.latLng !== void 0 && e.value.setLatLng(t.latLng), h(i, e.value, t);\n const m = S(o.attrs);\n p.on(e.value, m), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), U(() => {\n l({ leafletObject: e.value });\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, Ft = mt;\nQ.latLngs.required = !1;\nconst Be = {\n ...Q,\n bounds: {\n type: Array,\n custom: !0\n }\n}, vt = (t, o, e) => {\n const { options: n, methods: r } = Ce(\n t,\n o,\n e\n ), s = L(t, Be, n), l = {\n ...r,\n setBounds(a) {\n o.value.setBounds(a);\n },\n setLatLngs(a) {\n o.value.setBounds(a);\n }\n };\n return { options: s, methods: l };\n}, ft = {\n name: \"LRectangle\",\n props: Be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = vt(t, e, o);\n return b(async () => {\n const { rectangle: i, latLngBounds: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), m = t.bounds && t.bounds.length ? u(t.bounds) : u(t.latLngs);\n e.value = _(i(m, l));\n const $ = S(o.attrs);\n p.on(e.value, $), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Zt = ft, oe = {\n ...ee,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (t) => typeof t == \"string\" ? !0 : Array.isArray(t) ? t.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, Te = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = he(t, o, e), s = L(\n t,\n oe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, Lt = {\n props: oe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Te(t, e, o);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Wt = Lt, bt = {\n ...Se\n}, ht = (t, o) => {\n const { options: e, methods: n } = je(t, o), r = c(\"unbindTooltip\");\n return U(() => {\n r();\n }), { options: e, methods: n };\n}, gt = {\n name: \"LTooltip\",\n props: bt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindTooltip\"), { options: l, methods: a } = ht(t, e);\n return b(async () => {\n const { tooltip: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(l)), h(a, e.value, t);\n const p = S(o.attrs);\n u.on(e.value, p), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, qt = gt, $e = {\n ...oe,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, Ot = (t, o) => {\n const {\n options: e,\n methods: n\n } = Te(t, o);\n return {\n options: L(\n t,\n $e,\n e\n ),\n methods: {\n ...n\n }\n };\n}, _t = {\n props: $e,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Ot(t, e);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.wms(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Jt = _t;\nexport {\n jt as LCircle,\n Pt as LCircleMarker,\n Bt as LControl,\n Tt as LControlAttribution,\n $t as LControlLayers,\n At as LControlScale,\n wt as LControlZoom,\n Gt as LFeatureGroup,\n Mt as LGeoJson,\n It as LGridLayer,\n Nt as LIcon,\n kt as LImageOverlay,\n Dt as LLayerGroup,\n Et as LMap,\n Ht as LMarker,\n Ut as LPolygon,\n zt as LPolyline,\n Ft as LPopup,\n Zt as LRectangle,\n Wt as LTileLayer,\n qt as LTooltip,\n Jt as LWmsTileLayer\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n };\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2aec89b0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n zoomAnimation: false,\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 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\nimport \"./index.vue?vue&type=style&index=0&id=2aec89b0&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-2aec89b0\"]])\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, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9fc0bab8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n ),\n props.authUser.date_format\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\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('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\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\nimport \"./index.vue?vue&type=style&index=0&id=9fc0bab8&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-9fc0bab8\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, 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-0b68c436\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n };\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n x: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\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('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\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\nimport \"./index.vue?vue&type=style&index=0&id=0b68c436&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-0b68c436\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f6b59442\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null };\n\n \n\n const { notes } = 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('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"span\", {\n innerHTML: \n _unref(notes) && _unref(notes) !== ''\n ? _unref(linkifyAndClean)(_unref(notes))\n : _ctx.$t('workouts.NO_NOTES')\n \n }, null, 8, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=f6b59442&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-f6b59442\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n };\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\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('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&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-6b8a27cd\"]])\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, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\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 markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&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-53c4e53a\"]])\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n };\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\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 _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&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-6c38593a\"]])\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, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-19504874\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\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 StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n workout.workout_date,\n _unref(user).timezone,\n _unref(user).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.ascent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.descent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=19504874&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-19504874\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-57ec0168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\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 translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=57ec0168&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-57ec0168\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","workoutAscent","workoutDescent","withGpx","ref","with_gpx","gpxFile","formErrors","payloadErrorMessages","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","ascent","descent","isDistanceInvalid","includes","isDurationInvalid","isElevationInvalid","formatPayload","payload","push","updateWorkout","length","commit","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","file","onCancel","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","errored","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","getWindSpeed","wind","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","getTemperature","temperature","Number","humidity","WeatherWind","displayHARecord","withPause","pauses","_component_Distance","moving","WorkoutRecord","digits","unitFrom","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","PI","le","o","e","r","s","this","clearTimeout","setTimeout","apply","cancel","ie","M","Ge","charAt","toUpperCase","slice","h","l","L","custom","S","startsWith","toLocaleLowerCase","Me","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","q","console","warn","wrapped","J","v","self","g","global","z","options","F","methods","k","pane","String","attribution","layerType","visible","Z","a","leafletObject","u","p","setAttribution","m","setName","setLayerType","setVisible","bindPopup","bindTooltip","unbindTooltip","closeTooltip","unbindPopup","closePopup","updateVisibleProp","A","display","ue","interactive","bubblingMouseEvents","V","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","x","radius","latLng","position","W","D","setPosition","remove","Ee","He","disableClickPropagation","disableScrollPropagation","Control","DomEvent","extend","onAdd","root","render","$slots","Bt","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","Fe","me","addLayer","addBaseLayer","addOverlay","removeLayer","Ze","control","layers","R","K","geojson","optionsStyle","Ye","be","hasOwnProperty","call","setGeojson","clearLayers","addData","setOptionsStyle","setStyle","getGeoJSONData","toGeoJSON","getBounds","Ve","geoJSON","attrs","on","ready","Mt","ee","zIndex","tileSize","noWrap","minZoom","maxZoom","he","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","Re","ae","j","G","E","N","innerHTML","w","X","d","html","O","P","B","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","divIcon","off","MutationObserver","observe","attributes","childList","characterData","subtree","Nt","layerGroup","Dt","ot","re","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","useGlobalLeaflet","nt","leafletRef","layersToAdd","layersInControl","moveEndHandler","getZoom","getCenter","overlayAddHandler","overlayRemoveHandler","CRS","Icon","latLngBounds","beforeMapMount","error","EPSG3857","layerControl","H","_leaflet_id","filter","C","registerLayerControl","forEach","registerControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","fitBounds","setBounds","isValid","lastSetBounds","equals","fitBoundsOptions","setCenter","lastSetCenter","lat","lng","panTo","height","Et","st","at","Oe","draggable","zIndexOffset","rt","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","getLatLng","lt","slots","some","it","toString","ut","getElement","setIcon","moveHandler","marker","Ht","te","smoothFactor","noClip","latLngs","Q","tms","subdomains","validator","isArray","every","detectRetina","url","Te","oe","Lt","tileLayer","Wt","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LControl","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","date_format","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","args","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","undefined","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","tooltip","interaction","intersect","mode","callbacks","context","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","linkifyAndClean","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","formatDate","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/workouts.a06ab85f.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-45d3bf87\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = { class: \"workout-data\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = [\"disabled\"]\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = [\"disabled\"]\nconst _hoisted_36 = { class: \"form-item\" }\nconst _hoisted_37 = { key: 1 }\nconst _hoisted_38 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_39 = [\"disabled\"]\nconst _hoisted_40 = [\"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout };\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\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 gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n workoutAscent: '',\n workoutDescent: '',\n })\n const withGpx = ref(\n props.workout.id ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n const payloadErrorMessages: Ref = ref([])\n\n onMounted(() => {\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 3)\n : parseFloat(workout.distance.toFixed(3))\n }`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n workoutForm.workoutAscent =\n workout.ascent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.ascent, 'm', 'ft', 2)\n : parseFloat(workout.ascent.toFixed(2))\n }`\n workoutForm.workoutDescent =\n workout.descent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.descent, 'm', 'ft', 2)\n : parseFloat(workout.descent.toFixed(2))\n }`\n }\n }\n function isDistanceInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')\n }\n function isDurationInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')\n }\n function isElevationInvalid() {\n return payloadErrorMessages.value.includes(\n 'workouts.INVALID_ASCENT_OR_DESCENT'\n )\n }\n function formatPayload(payload: IWorkoutForm) {\n payloadErrorMessages.value = []\n payload.title = workoutForm.title\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n if (payload.duration <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DURATION')\n }\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n if (payload.distance <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')\n }\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n payload.ascent =\n workoutForm.workoutAscent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)\n : +workoutForm.workoutAscent\n payload.descent =\n workoutForm.workoutDescent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)\n : +workoutForm.workoutDescent\n if (\n (payload.ascent !== null && payload.descent === null) ||\n (payload.ascent === null && payload.descent !== null)\n ) {\n payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')\n }\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n }\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \"*: \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \"*: \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(fileSizeLimit)), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \"*:\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 42, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 42, _hoisted_27), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 42, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \")*: \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isDistanceInvalid() }),\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 42, _hoisted_31), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.ASCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-ascent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((workoutForm.workoutAscent) = $event))\n }, null, 42, _hoisted_33), [\n [_vModelText, workoutForm.workoutAscent]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DESCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-descent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((workoutForm.workoutDescent) = $event))\n }, null, 42, _hoisted_35), [\n [_vModelText, workoutForm.workoutDescent]\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\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(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_39),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_40)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=45d3bf87&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-45d3bf87\"]])\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 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { ComputedRef, computed } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.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, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\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 workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.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, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4d9f9a8a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"workout-date\" }\nconst _hoisted_12 = { class: \"workout-link\" }\nconst _hoisted_13 = [\"title\"]\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = [\n _hoisted_14\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n };\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_unref(workoutObject).previousUrl }]),\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n ))\n }),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"]))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _createTextVNode(\" — \"),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_12, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(workoutObject).workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_unref(workoutObject).nextUrl }]),\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_15, 10, _hoisted_13)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=4d9f9a8a&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-4d9f9a8a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1a5282f6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n };\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&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-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40697ed1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { getWindSpeed } from '@/utils/units'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createTextVNode(_toDisplayString(_unref(getWindSpeed)(_unref(weather).wind, _unref(useImperialUnits))) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=40697ed1&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-40697ed1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, 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-807b431a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n import { getTemperature } from '@/utils/units'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(workoutObject).weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherStart.temperature,\n _unref(useImperialUnits)\n )), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherEnd.temperature,\n _unref(useImperialUnits)\n )), 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(workoutObject).weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=807b431a&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-807b431a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74c5993b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { class: \"label\" }\nconst _hoisted_5 = { class: \"value\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"value\" }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = { class: \"workout-data\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"label\" }\nconst _hoisted_12 = { class: \"workout-data\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = { class: \"label\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_18 = [\"alt\"]\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_21 = { class: \"label\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = { class: \"label\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\n\nimport { computed, toRefs } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n };\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\": \"),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_18),\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_20,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=74c5993b&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-74c5993b\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIconHref(node) {\n return get(node, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n });\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), extractIconHref(iconStyle));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst toNumber = (x) => Number(x);\nconst typeConverters = {\n string: (x) => x,\n int: toNumber,\n uint: toNumber,\n short: toNumber,\n ushort: toNumber,\n float: toNumber,\n double: toNumber,\n bool: (x) => Boolean(x),\n};\nfunction extractExtendedData(node, schema) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n const name = simpleData.getAttribute(\"name\") || \"\";\n const typeConverter = schema[name] || typeConverters.string;\n properties[name] = typeConverter(nodeVal(simpleData));\n }\n return properties;\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n let geometries = [];\n let coordTimes = [];\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes.item(i);\n if (isElement(child)) {\n switch (child.tagName) {\n case \"MultiGeometry\":\n case \"MultiTrack\":\n case \"gx:MultiTrack\": {\n const childGeometries = getGeometry(child);\n geometries = geometries.concat(childGeometries.geometries);\n coordTimes = coordTimes.concat(childGeometries.coordTimes);\n break;\n }\n case \"Point\": {\n const coordinates = coord1(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LinearRing\":\n case \"LineString\": {\n const coordinates = coord(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(child, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(child);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction getPlacemark(node, styleMap, schema) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getGroundOverlayBox(node) {\n const latLonQuad = get1(node, \"gx:LatLonQuad\");\n if (latLonQuad) {\n const ring = fixRing(coord(getCoordinates(node)));\n return {\n type: \"Polygon\",\n coordinates: [ring],\n };\n }\n return getLatLonBox(node);\n}\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction rotateBox(bbox, coordinates, rotation) {\n const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];\n return [\n coordinates[0].map((coordinate) => {\n const dy = coordinate[1] - center[1];\n const dx = coordinate[0] - center[0];\n const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));\n const angle = Math.atan2(dy, dx) - rotation * DEGREES_TO_RADIANS;\n return [\n center[0] + Math.cos(angle) * distance,\n center[1] + Math.sin(angle) * distance,\n ];\n }),\n ];\n}\nfunction getLatLonBox(node) {\n const latLonBox = get1(node, \"LatLonBox\");\n if (latLonBox) {\n const north = num1(latLonBox, \"north\");\n const west = num1(latLonBox, \"west\");\n const east = num1(latLonBox, \"east\");\n const south = num1(latLonBox, \"south\");\n const rotation = num1(latLonBox, \"rotation\");\n if (typeof north === \"number\" &&\n typeof south === \"number\" &&\n typeof west === \"number\" &&\n typeof east === \"number\") {\n const bbox = [west, south, east, north];\n let coordinates = [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north], // top left (again)\n ],\n ];\n if (typeof rotation === \"number\") {\n coordinates = rotateBox(bbox, coordinates, rotation);\n }\n return {\n type: \"Polygon\",\n coordinates,\n };\n }\n }\n return null;\n}\nfunction getGroundOverlay(node, styleMap, schema) {\n const geometry = getGroundOverlayBox(node);\n const feature = {\n type: \"Feature\",\n geometry,\n properties: Object.assign(\n /**\n * Related to\n * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46\n */\n { \"@geometry-type\": \"groundoverlay\" }, getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractIconHref(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node)),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nfunction buildSchema(node) {\n const schema = {};\n for (const field of $(node, \"SimpleField\")) {\n schema[field.getAttribute(\"name\") || \"\"] =\n typeConverters[field.getAttribute(\"type\") || \"\"] ||\n typeConverters[\"string\"];\n }\n return schema;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n *\n * ### GroundOverlay\n *\n * GroundOverlay elements are converted into\n * `Feature` objects with `Polygon` geometries,\n * a property like:\n *\n * ```json\n * {\n * \"@geometry-type\": \"groundoverlay\"\n * }\n * ```\n *\n * And the ground overlay's image URL in the `href`\n * property. Ground overlays will need to be displayed\n * with a separate method to other features, depending\n * on which map framework you're using.\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"GroundOverlay\": {\n const placemark = getGroundOverlay(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap, schema);\n if (feature)\n yield feature;\n }\n for (const groundOverlay of $(node, \"GroundOverlay\")) {\n const feature = getGroundOverlay(groundOverlay, styleMap, schema);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch as ne, ref as y, provide as T, h as I, inject as c, onUnmounted as Y, onBeforeUnmount as U, onMounted as b, markRaw as _, nextTick as f, render as Ae, reactive as we, computed as se } from \"vue\";\nconst le = (t, o = 100) => {\n let e;\n const n = function(...r) {\n const s = this;\n e && clearTimeout(e), e = setTimeout(() => {\n t.apply(s, r), e = null;\n }, o);\n };\n return n.cancel = function() {\n e && clearTimeout(e);\n }, n;\n}, ie = function(t) {\n for (const o of Object.values(t))\n o && M(o.cancel) && o.cancel();\n}, Ge = (t) => !t || typeof t.charAt != \"function\" ? t : t.charAt(0).toUpperCase() + t.slice(1), M = (t) => typeof t == \"function\", h = (t, o, e) => {\n for (const n in e) {\n const r = \"set\" + Ge(n);\n t[r] ? ne(\n () => e[n],\n (s, l) => {\n t[r](s, l);\n }\n ) : o[r] && ne(\n () => e[n],\n (s) => {\n o[r](s);\n }\n );\n }\n}, L = (t, o, e = {}) => {\n const n = { ...e };\n for (const r in t) {\n const s = o[r], l = t[r];\n s && (s && s.custom === !0 || l !== void 0 && (n[r] = l));\n }\n return n;\n}, S = (t) => {\n const o = {};\n for (const e in t)\n if (e.startsWith(\"on\") && !e.startsWith(\"onUpdate\") && e !== \"onReady\") {\n const n = e.slice(2).toLocaleLowerCase();\n o[n] = t[e];\n }\n return o;\n}, Me = async (t) => {\n const o = await Promise.all([\n import(\"leaflet/dist/images/marker-icon-2x.png\"),\n import(\"leaflet/dist/images/marker-icon.png\"),\n import(\"leaflet/dist/images/marker-shadow.png\")\n ]);\n delete t.Default.prototype._getIconUrl, t.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, q = (t) => {\n const o = y(\n () => console.warn(`Method ${t} has been invoked without being replaced`)\n ), e = (...n) => o.value(...n);\n return e.wrapped = o, T(t, e), e;\n}, J = (t, o) => t.wrapped.value = o, v = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || void 0, g = \"useGlobalLeaflet\", z = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, F = (t) => ({ options: t.options, methods: {} }), k = {\n ...z,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, Z = (t, o, e) => {\n const n = c(\"addLayer\"), r = c(\"removeLayer\"), {\n options: s,\n methods: l\n } = F(t), a = L(t, k, s), i = () => n({ leafletObject: o.value }), u = () => r({ leafletObject: o.value }), p = {\n ...l,\n setAttribution(m) {\n u(), o.value.options.attribution = m, t.visible && i();\n },\n setName() {\n u(), t.visible && i();\n },\n setLayerType() {\n u(), t.visible && i();\n },\n setVisible(m) {\n o.value && (m ? i() : u());\n },\n bindPopup({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(m);\n },\n bindTooltip({ leafletObject: m }) {\n if (!o.value || !M(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(m);\n },\n unbindTooltip() {\n o.value && (M(o.value.closeTooltip) && o.value.closeTooltip(), M(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (M(o.value.closePopup) && o.value.closePopup(), M(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(m) {\n e.emit(\"update:visible\", m);\n }\n };\n return T(\"bindPopup\", p.bindPopup), T(\"bindTooltip\", p.bindTooltip), T(\"unbindTooltip\", p.unbindTooltip), T(\"unbindPopup\", p.unbindPopup), Y(() => {\n p.unbindPopup(), p.unbindTooltip(), u();\n }), { options: a, methods: p };\n}, A = (t, o) => {\n if (t && o.default)\n return I(\"div\", { style: { display: \"none\" } }, o.default());\n}, ue = {\n ...k,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ie = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(\n t,\n ue,\n n\n ), methods: r };\n}, V = {\n ...ue,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, ce = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = Ie(t, o, e), s = L(\n t,\n V,\n n\n ), l = c(\"removeLayer\"), a = {\n ...r,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return U(() => {\n l({ leafletObject: o.value });\n }), { options: s, methods: a };\n}, x = {\n ...V,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, de = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, x, n), l = {\n ...r,\n setRadius(a) {\n o.value.setRadius(a);\n },\n setLatLng(a) {\n o.value.setLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, pe = {\n ...x,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, Ne = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = de(t, o, e), s = L(\n t,\n pe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, ke = {\n name: \"LCircle\",\n props: pe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ne(t, e, o);\n return b(async () => {\n const { circle: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, jt = ke, De = {\n name: \"LCircleMarker\",\n props: x,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = de(\n t,\n e,\n o\n );\n return b(async () => {\n const { circleMarker: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLng, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Pt = De, D = {\n ...z,\n position: {\n type: String\n }\n}, W = (t, o) => {\n const {\n options: e,\n methods: n\n } = F(t), r = L(t, D, e), s = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return Y(() => {\n o.value && o.value.remove();\n }), { options: r, methods: s };\n}, Ee = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, He = {\n name: \"LControl\",\n props: {\n ...D,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"registerControl\"), { options: l, methods: a } = W(t, e);\n return b(async () => {\n const { Control: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), p = i.extend({\n onAdd() {\n return n.value;\n }\n });\n e.value = _(new p(l)), h(a, e.value, t), s({ leafletObject: e.value }), t.disableClickPropagation && u.disableClickPropagation(n.value), t.disableScrollPropagation && u.disableScrollPropagation(n.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Ee(this.$slots);\n }\n}, Bt = He, ye = {\n ...D,\n prefix: {\n type: String\n }\n}, Ue = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n ), r = L(\n t,\n ye,\n e\n ), s = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: r, methods: s };\n}, ze = {\n name: \"LControlAttribution\",\n props: ye,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Ue(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.attribution(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Tt = ze, me = {\n ...D,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, Fe = (t, o) => {\n const { options: e } = W(t, o);\n return { options: L(\n t,\n me,\n e\n ), methods: {\n addLayer(s) {\n s.layerType === \"base\" ? o.value.addBaseLayer(s.leafletObject, s.name) : s.layerType === \"overlay\" && o.value.addOverlay(s.leafletObject, s.name);\n },\n removeLayer(s) {\n o.value.removeLayer(s.leafletObject);\n }\n } };\n}, Ze = {\n name: \"LControlLayers\",\n props: me,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerLayerControl\"), { options: s, methods: l } = Fe(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.layers(null, null, s)), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, $t = Ze, ve = {\n ...D,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, We = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n ve,\n e\n ), methods: n };\n}, qe = {\n name: \"LControlScale\",\n props: ve,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = We(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.scale(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, At = qe, fe = {\n ...D,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, Je = (t, o) => {\n const { options: e, methods: n } = W(\n t,\n o\n );\n return { options: L(\n t,\n fe,\n e\n ), methods: n };\n}, Ke = {\n name: \"LControlZoom\",\n props: fe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"registerControl\"), { options: s, methods: l } = Je(t, e);\n return b(async () => {\n const { control: a } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.zoom(s)), h(l, e.value, t), r({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, wt = Ke, K = {\n ...k\n}, R = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, K, n), l = {\n ...r,\n addLayer(a) {\n o.value.addLayer(a.leafletObject);\n },\n removeLayer(a) {\n o.value.removeLayer(a.leafletObject);\n }\n };\n return T(\"addLayer\", l.addLayer), T(\"removeLayer\", l.removeLayer), { options: s, methods: l };\n}, Le = {\n ...K\n}, Qe = (t, o) => {\n const { options: e, methods: n } = R(\n t,\n o\n ), r = L(t, Le, e), s = {\n ...n\n };\n return { options: r, methods: s };\n}, Xe = {\n props: Le,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Qe(t, e);\n return b(async () => {\n const { featureGroup: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Gt = Xe, be = {\n ...K,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: [Object, Function],\n custom: !0\n }\n}, Ye = (t, o, e) => {\n const { options: n, methods: r } = R(\n t,\n o,\n e\n ), s = L(t, be, n);\n Object.prototype.hasOwnProperty.call(t, \"optionsStyle\") && (s.style = t.optionsStyle);\n const l = {\n ...r,\n setGeojson(a) {\n o.value.clearLayers(), o.value.addData(a);\n },\n setOptionsStyle(a) {\n o.value.setStyle(a);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: s, methods: l };\n}, Ve = {\n props: be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l, options: a } = Ye(t, e, o);\n return b(async () => {\n const { geoJSON: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.geojson, a));\n const p = S(o.attrs);\n u.on(e.value, p), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Mt = Ve, ee = {\n ...k,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: Number\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n }\n}, he = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n );\n return { options: L(t, ee, n), methods: { ...r } };\n}, xe = {\n props: {\n ...ee,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(t, o) {\n const e = y({}), n = y({}), r = y(null), s = y(!1), l = c(g), a = c(\"addLayer\"), { options: i, methods: u } = he(t, e, o);\n return b(async () => {\n const { GridLayer: p, DomEvent: m, DomUtil: $ } = l ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n u.onUnload = (B) => {\n const j = e.value._tileCoordsToKey(B.coords);\n n[j] && (n[j].innerHTML = \"\", n[j] = void 0);\n }, u.setTileComponent = () => {\n e.value.redraw();\n };\n const O = p.extend({\n createTile(B) {\n const j = e.value._tileCoordsToKey(B);\n n[j] = $.create(\"div\");\n let G = I(\n { setup: t.childRender, props: [\"coords\"] },\n { coords: B }\n );\n return Ae(G, n[j]), n[j];\n }\n });\n e.value = _(new O(i));\n const P = S(o.attrs);\n m.on(e.value, P), e.value.on(\"tileunload\", u.onUnload), h(u, e.value, t), a({\n ...t,\n ...u,\n leafletObject: e.value\n }), s.value = !0, f(() => o.emit(\"ready\", e.value));\n }), Y(() => {\n e.value.off(\"tileunload\", u.onUnload);\n }), { root: r, ready: s, leafletObject: e };\n },\n render() {\n return this.ready ? I(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}, It = xe, ae = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, Re = {\n name: \"LIcon\",\n props: {\n ...ae,\n ...z\n },\n setup(t, o) {\n const e = y(null), n = c(g), r = c(\"canSetParentHtml\"), s = c(\"setParentHtml\"), l = c(\"setIcon\");\n let a, i, u, p, m;\n const $ = (j, G, E) => {\n const N = j && j.innerHTML;\n if (!G) {\n E && m && r() && s(N);\n return;\n }\n const w = S(o.attrs);\n m && i(m, w);\n const { options: X } = F(t), d = L(t, ae, X);\n N && (d.html = N), m = d.html ? u(d) : p(d), a(m, w), l(m);\n }, O = () => {\n f(() => $(e.value, !0, !1));\n }, P = () => {\n f(() => $(e.value, !1, !0));\n }, B = {\n setIconUrl: O,\n setIconRetinaUrl: O,\n setIconSize: O,\n setIconAnchor: O,\n setPopupAnchor: O,\n setTooltipAnchor: O,\n setShadowUrl: O,\n setShadowRetinaUrl: O,\n setShadowAnchor: O,\n setBgPos: O,\n setClassName: O,\n setHtml: O\n };\n return b(async () => {\n const { DomEvent: j, divIcon: G, icon: E } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n a = j.on, i = j.off, u = G, p = E, h(B, {}, t), new MutationObserver(P).observe(e.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), O();\n }), { root: e };\n },\n render() {\n const t = this.$slots.default ? this.$slots.default() : void 0;\n return I(\"div\", { ref: \"root\" }, t);\n }\n}, Nt = Re, ge = {\n ...k,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, et = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, ge, n), l = {\n ...r,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(a) {\n return o.value.setOpacity(a);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(a) {\n return o.value.setUrl(a);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(a) {\n return o.value.setBounds(a);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(a) {\n return o.value.setZIndex(a);\n }\n };\n return { options: s, methods: l };\n}, tt = {\n name: \"LImageOverlay\",\n props: ge,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = et(\n t,\n e,\n o\n );\n return b(async () => {\n const { imageOverlay: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(\n i(t.url, t.bounds, l)\n );\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, kt = tt, ot = {\n props: K,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { methods: l } = R(t, e, o);\n return b(async () => {\n const { layerGroup: a, DomEvent: i } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.options));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Dt = ot, re = {\n ...z,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object]\n },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, nt = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: re,\n setup(t, o) {\n const e = y(null), n = we({\n ready: !1,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: []\n }), { options: r } = F(t), s = L(t, re, r), l = q(\"addLayer\"), a = q(\"removeLayer\"), i = q(\"registerControl\"), u = q(\"registerLayerControl\");\n T(g, t.useGlobalLeaflet);\n const p = {\n moveEndHandler: le(() => {\n o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds());\n }),\n overlayAddHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!0);\n },\n overlayRemoveHandler(O) {\n const P = n.layersInControl.find((B) => B.name === O.name);\n P && P.updateVisibleProp(!1);\n }\n };\n b(async () => {\n t.useGlobalLeaflet && (v.L = v.L || await import(\"leaflet\"));\n const {\n map: O,\n CRS: P,\n Icon: B,\n latLngBounds: j,\n latLng: G,\n DomEvent: E\n } = t.useGlobalLeaflet ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n s.beforeMapMount && await s.beforeMapMount();\n } catch (d) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${d.message}`\n );\n }\n await Me(B);\n const N = typeof s.crs == \"string\" ? P[s.crs] : s.crs;\n s.crs = N || P.EPSG3857;\n const w = {\n addLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(d) : n.layersInControl.find(\n (H) => H.leafletObject._leaflet_id === d.leafletObject._leaflet_id\n ) || (n.layerControl.addLayer(d), n.layersInControl.push(d))), d.visible !== !1 && n.leafletRef.addLayer(d.leafletObject);\n },\n removeLayer(d) {\n d.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (C) => C.name !== d.name\n ) : (n.layerControl.removeLayer(d.leafletObject), n.layersInControl = n.layersInControl.filter(\n (C) => C.leafletObject._leaflet_id !== d.leafletObject._leaflet_id\n ))), n.leafletRef.removeLayer(d.leafletObject);\n },\n registerLayerControl(d) {\n n.layerControl = d, n.layersToAdd.forEach((C) => {\n n.layerControl.addLayer(C);\n }), n.layersToAdd = [], i(d);\n },\n registerControl(d) {\n n.leafletRef.addControl(d.leafletObject);\n },\n setZoom(d) {\n const C = n.leafletRef.getZoom();\n d !== C && n.leafletRef.setZoom(d, {\n animate: t.noBlockingAnimations ? !1 : null\n });\n },\n setPaddingBottomRight(d) {\n n.paddingBottomRight = d;\n },\n setPaddingTopLeft(d) {\n n.paddingTopLeft = d;\n },\n setPadding(d) {\n n.padding = d;\n },\n setCrs(d) {\n const C = n.leafletRef.getBounds();\n n.leafletRef.options.crs = d, n.leafletRef.fitBounds(C, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(d) {\n n.leafletRef.fitBounds(d, {\n animate: this.noBlockingAnimations ? !1 : null\n });\n },\n setBounds(d) {\n if (!d)\n return;\n const C = j(d);\n if (!C.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(C, 0) && (n.lastSetBounds = C, n.leafletRef.fitBounds(C, this.fitBoundsOptions));\n },\n setCenter(d) {\n if (d == null)\n return;\n const C = G(d), H = n.lastSetCenter || n.leafletRef.getCenter();\n (H.lat !== C.lat || H.lng !== C.lng) && (n.lastSetCenter = C, n.leafletRef.panTo(C, {\n animate: this.noBlockingAnimations ? !1 : null\n }));\n }\n };\n J(l, w.addLayer), J(a, w.removeLayer), J(i, w.registerControl), J(u, w.registerLayerControl), n.leafletRef = _(O(e.value, s)), h(w, n.leafletRef, t);\n const X = S(o.attrs);\n n.leafletRef.on(\"moveend\", p.moveEndHandler), n.leafletRef.on(\"overlayadd\", p.overlayAddHandler), n.leafletRef.on(\n \"overlayremove\",\n p.overlayRemoveHandler\n ), E.on(n.leafletRef, X), n.ready = !0, f(() => o.emit(\"ready\", n.leafletRef));\n }), U(() => {\n ie(p), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const m = se(() => n.leafletRef), $ = se(() => n.ready);\n return { root: e, ready: $, leafletObject: m };\n },\n render() {\n return I(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}, Et = nt, st = [\"Symbol(Comment)\", \"Symbol(Text)\"], at = [\"LTooltip\", \"LPopup\"], Oe = {\n ...k,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, rt = (t, o, e) => {\n const { options: n, methods: r } = Z(\n t,\n o,\n e\n ), s = L(t, Oe, n), l = {\n ...r,\n setDraggable(a) {\n o.value.dragging && (a ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(a) {\n e.emit(\"update:latLng\", a.latlng), e.emit(\"update:lat-lng\", a.latlng);\n },\n setLatLng(a) {\n if (a != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(a)) && o.value.setLatLng(a);\n }\n }\n };\n return { options: s, methods: l };\n}, lt = (t, o) => {\n const e = o.slots.default && o.slots.default();\n return e && e.length && e.some(it);\n};\nfunction it(t) {\n return !(st.includes(t.type.toString()) || at.includes(t.type.name));\n}\nconst ut = {\n name: \"LMarker\",\n props: Oe,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\");\n T(\"canSetParentHtml\", () => !!e.value.getElement()), T(\n \"setParentHtml\",\n (u) => e.value.getElement().innerHTML = u\n ), T(\n \"setIcon\",\n (u) => e.value.setIcon && e.value.setIcon(u)\n );\n const { options: l, methods: a } = rt(t, e, o), i = {\n moveHandler: le(a.latLngSync)\n };\n return b(async () => {\n const { marker: u, DomEvent: p, divIcon: m } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n lt(l, o) && (l.icon = m({ className: \"\" })), e.value = _(u(t.latLng, l));\n const $ = S(o.attrs);\n p.on(e.value, $), e.value.on(\"move\", i.moveHandler), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), U(() => ie(i)), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ht = ut, te = {\n ...V,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, _e = (t, o, e) => {\n const { options: n, methods: r } = ce(\n t,\n o,\n e\n ), s = L(t, te, n), l = {\n ...r,\n setSmoothFactor(a) {\n o.value.setStyle({ smoothFactor: a });\n },\n setNoClip(a) {\n o.value.setStyle({ noClip: a });\n },\n addLatLng(a) {\n o.value.addLatLng(a);\n }\n };\n return { options: s, methods: l };\n}, Q = {\n ...te\n}, Ce = (t, o, e) => {\n const { options: n, methods: r } = _e(\n t,\n o,\n e\n ), s = L(t, Q, n), l = {\n ...r,\n toGeoJSON(a) {\n return o.value.toGeoJSON(a);\n }\n };\n return { options: s, methods: l };\n}, ct = {\n name: \"LPolygon\",\n props: Q,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = Ce(t, e, o);\n return b(async () => {\n const { polygon: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Ut = ct, dt = {\n name: \"LPolyline\",\n props: te,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = _e(t, e, o);\n return b(async () => {\n const { polyline: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(t.latLngs, l));\n const p = S(o.attrs);\n u.on(e.value, p), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, zt = dt, Se = {\n ...z,\n content: {\n type: String,\n default: null\n }\n}, je = (t, o) => {\n const { options: e, methods: n } = F(t), r = {\n ...n,\n setContent(s) {\n o.value && s !== null && s !== void 0 && o.value.setContent(s);\n }\n };\n return { options: e, methods: r };\n}, Pe = (t) => t.default ? I(\"div\", { ref: \"root\" }, t.default()) : null, pt = {\n ...Se,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, yt = (t, o) => {\n const { options: e, methods: n } = je(t, o);\n return { options: e, methods: n };\n}, mt = {\n name: \"LPopup\",\n props: pt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindPopup\"), l = c(\"unbindPopup\"), { options: a, methods: i } = yt(t, e);\n return b(async () => {\n const { popup: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(u(a)), t.latLng !== void 0 && e.value.setLatLng(t.latLng), h(i, e.value, t);\n const m = S(o.attrs);\n p.on(e.value, m), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), U(() => {\n l({ leafletObject: e.value });\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, Ft = mt;\nQ.latLngs.required = !1;\nconst Be = {\n ...Q,\n bounds: {\n type: Array,\n custom: !0\n }\n}, vt = (t, o, e) => {\n const { options: n, methods: r } = Ce(\n t,\n o,\n e\n ), s = L(t, Be, n), l = {\n ...r,\n setBounds(a) {\n o.value.setBounds(a);\n },\n setLatLngs(a) {\n o.value.setBounds(a);\n }\n };\n return { options: s, methods: l };\n}, ft = {\n name: \"LRectangle\",\n props: Be,\n setup(t, o) {\n const e = y({}), n = y(!1), r = c(g), s = c(\"addLayer\"), { options: l, methods: a } = vt(t, e, o);\n return b(async () => {\n const { rectangle: i, latLngBounds: u, DomEvent: p } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\"), m = t.bounds && t.bounds.length ? u(t.bounds) : u(t.latLngs);\n e.value = _(i(m, l));\n const $ = S(o.attrs);\n p.on(e.value, $), h(a, e.value, t), s({\n ...t,\n ...a,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return A(this.ready, this.$slots);\n }\n}, Zt = ft, oe = {\n ...ee,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (t) => typeof t == \"string\" ? !0 : Array.isArray(t) ? t.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, Te = (t, o, e) => {\n const {\n options: n,\n methods: r\n } = he(t, o, e), s = L(\n t,\n oe,\n n\n ), l = {\n ...r\n };\n return { options: s, methods: l };\n}, Lt = {\n props: oe,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Te(t, e, o);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Wt = Lt, bt = {\n ...Se\n}, ht = (t, o) => {\n const { options: e, methods: n } = je(t, o), r = c(\"unbindTooltip\");\n return U(() => {\n r();\n }), { options: e, methods: n };\n}, gt = {\n name: \"LTooltip\",\n props: bt,\n setup(t, o) {\n const e = y({}), n = y(null), r = c(g), s = c(\"bindTooltip\"), { options: l, methods: a } = ht(t, e);\n return b(async () => {\n const { tooltip: i, DomEvent: u } = r ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(i(l)), h(a, e.value, t);\n const p = S(o.attrs);\n u.on(e.value, p), e.value.setContent(t.content || n.value), s({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Pe(this.$slots);\n }\n}, qt = gt, $e = {\n ...oe,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, Ot = (t, o) => {\n const {\n options: e,\n methods: n\n } = Te(t, o);\n return {\n options: L(\n t,\n $e,\n e\n ),\n methods: {\n ...n\n }\n };\n}, _t = {\n props: $e,\n setup(t, o) {\n const e = y({}), n = c(g), r = c(\"addLayer\"), { options: s, methods: l } = Ot(t, e);\n return b(async () => {\n const { tileLayer: a, DomEvent: i } = n ? v.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = _(a.wms(t.url, s));\n const u = S(o.attrs);\n i.on(e.value, u), h(l, e.value, t), r({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}, Jt = _t;\nexport {\n jt as LCircle,\n Pt as LCircleMarker,\n Bt as LControl,\n Tt as LControlAttribution,\n $t as LControlLayers,\n At as LControlScale,\n wt as LControlZoom,\n Gt as LFeatureGroup,\n Mt as LGeoJson,\n It as LGridLayer,\n Nt as LIcon,\n kt as LImageOverlay,\n Dt as LLayerGroup,\n Et as LMap,\n Ht as LMarker,\n Ut as LPolygon,\n zt as LPolyline,\n Ft as LPopup,\n Zt as LRectangle,\n Wt as LTileLayer,\n qt as LTooltip,\n Jt as LWmsTileLayer\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n };\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2aec89b0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n function getBounds() {\n return props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n }\n function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n zoomAnimation: false,\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 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\nimport \"./index.vue?vue&type=style&index=0&id=2aec89b0&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-2aec89b0\"]])\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, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9fc0bab8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n withDefaults,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n ),\n props.authUser.date_format\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\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('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\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\nimport \"./index.vue?vue&type=style&index=0&id=9fc0bab8&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-9fc0bab8\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record,\n options: Record\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, 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-0b68c436\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = { class: \"elevation-start\" }\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n };\n\n \n\n \n\n const { t } = useI18n()\n\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t, props.authUser.imperial_units)\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n x: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ` (${fromKmUnit})`\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/h`\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\n })\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\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('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ])\n ])\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\nimport \"./index.vue?vue&type=style&index=0&id=0b68c436&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-0b68c436\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f6b59442\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null };\n\n \n\n const { notes } = 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('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"span\", {\n innerHTML: \n _unref(notes) && _unref(notes) !== ''\n ? _unref(linkifyAndClean)(_unref(notes))\n : _ctx.$t('workouts.NO_NOTES')\n \n }, null, 8, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=f6b59442&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-f6b59442\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, 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-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n };\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\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('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(segments), (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&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-6b8a27cd\"]])\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, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53c4e53a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\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 markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&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-53c4e53a\"]])\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, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6c38593a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n };\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\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 _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: handleFilterChange\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=6c38593a&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-6c38593a\"]])\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, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-19504874\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\n watch,\n capitalize,\n onBeforeMount,\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 StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { formatDate } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\n )\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(workouts), (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_unref(formatDate)(\n workout.workout_date,\n _unref(user).timezone,\n _unref(user).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createVNode(_component_Distance, {\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createVNode(_component_Distance, {\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.ascent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.descent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=19504874&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-19504874\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-57ec0168\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nimport { ComputedRef, computed, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\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 translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=57ec0168&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-57ec0168\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","workoutAscent","workoutDescent","withGpx","ref","with_gpx","gpxFile","formErrors","payloadErrorMessages","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","ascent","descent","isDistanceInvalid","includes","isDurationInvalid","isElevationInvalid","formatPayload","payload","push","updateWorkout","length","commit","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","file","onCancel","name","params","go","invalidateForm","onMounted","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","errored","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","document","createElement","href","setAttribute","body","appendChild","click","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","getWindSpeed","wind","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","getTemperature","temperature","Number","humidity","WeatherWind","displayHARecord","withPause","pauses","_component_Distance","moving","WorkoutRecord","digits","unitFrom","strong","aveSpeed","speed","maxSpeed","maxAlt","minAlt","WorkoutWeather","$","element","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","PI","le","o","e","r","s","this","clearTimeout","setTimeout","apply","cancel","ie","M","Ge","charAt","toUpperCase","slice","h","l","L","custom","S","startsWith","toLocaleLowerCase","Me","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","q","console","warn","wrapped","J","v","self","g","global","z","options","F","methods","k","pane","String","attribution","layerType","visible","Z","a","leafletObject","u","p","setAttribution","m","setName","setLayerType","setVisible","bindPopup","bindTooltip","unbindTooltip","closeTooltip","unbindPopup","closePopup","updateVisibleProp","A","display","ue","interactive","bubblingMouseEvents","V","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","x","radius","latLng","position","W","D","setPosition","remove","Ee","He","disableClickPropagation","disableScrollPropagation","Control","DomEvent","extend","onAdd","root","render","$slots","Bt","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","Fe","me","addLayer","addBaseLayer","addOverlay","removeLayer","Ze","control","layers","R","K","geojson","optionsStyle","Ye","be","hasOwnProperty","call","setGeojson","clearLayers","addData","setOptionsStyle","setStyle","getGeoJSONData","toGeoJSON","getBounds","Ve","geoJSON","attrs","on","ready","Mt","ee","zIndex","tileSize","noWrap","minZoom","maxZoom","he","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","Re","ae","j","G","E","N","innerHTML","w","X","d","html","O","P","B","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setClassName","setHtml","divIcon","off","MutationObserver","observe","attributes","childList","characterData","subtree","Nt","layerGroup","Dt","ot","re","center","bounds","maxBounds","zoom","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","useGlobalLeaflet","nt","leafletRef","layersToAdd","layersInControl","moveEndHandler","getZoom","getCenter","overlayAddHandler","overlayRemoveHandler","CRS","Icon","latLngBounds","beforeMapMount","error","EPSG3857","layerControl","H","_leaflet_id","filter","C","registerLayerControl","forEach","registerControl","addControl","setZoom","animate","setPaddingBottomRight","setPaddingTopLeft","setPadding","setCrs","fitBounds","setBounds","isValid","lastSetBounds","equals","fitBoundsOptions","setCenter","lastSetCenter","lat","lng","panTo","height","Et","st","at","Oe","draggable","zIndexOffset","rt","setDraggable","dragging","enable","disable","latLngSync","latlng","setLatLng","getLatLng","lt","slots","some","it","toString","ut","getElement","setIcon","moveHandler","marker","Ht","te","smoothFactor","noClip","latLngs","Q","tms","subdomains","validator","isArray","every","detectRetina","url","Te","oe","Lt","tileLayer","Wt","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LControl","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","date_format","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","deleteWorkout","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","Error","htmlLegendPlugin","afterUpdate","chart","args","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","li","onclick","undefined","datasetIndex","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","datasets","getDatasets","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","elevation","responsive","maintainAspectRatio","animation","layout","top","scales","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","yElevation","beginAtZero","elements","pointStyle","pointRadius","datalabels","tooltip","interaction","intersect","mode","callbacks","context","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","lineChartProps","useLineChart","updateDisplayDistance","Date","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","linkifyAndClean","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","keys","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","formatDate","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""} \ No newline at end of file From 430ee4cd2fcb576dc1bb903a1c3834ad8df459e9 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 11:29:15 +0100 Subject: [PATCH 5/7] API - add missing test --- .../workouts/test_workouts_api_1_post.py | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/fittrackee/tests/workouts/test_workouts_api_1_post.py b/fittrackee/tests/workouts/test_workouts_api_1_post.py index 103549e5..304ec429 100644 --- a/fittrackee/tests/workouts/test_workouts_api_1_post.py +++ b/fittrackee/tests/workouts/test_workouts_api_1_post.py @@ -217,7 +217,9 @@ def assert_workout_data_wo_gpx(data: Dict) -> None: assert records[3]['value'] == 10.0 -def assert_files_are_deleted(app: Flask, user: User) -> None: +def assert_files_are_deleted( + app: Flask, user: User, expected_count: Optional[int] = 0 +) -> None: upload_directory = os.path.join( app.config["UPLOAD_FOLDER"], f"workouts/{user.id}" ) @@ -229,7 +231,7 @@ def assert_files_are_deleted(app: Flask, user: User) -> None: if os.path.isfile(os.path.join(upload_directory, name)) ] ) - == 0 + == expected_count ) @@ -841,6 +843,46 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin): assert_files_are_deleted(app, user_1) + def test_it_deletes_only_errored_file( + self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str + ) -> None: + client, auth_token = self.get_test_client_and_auth_token( + app, user_1.email + ) + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 1}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + with patch( + 'fittrackee.workouts.utils.workouts.generate_map', + side_effect=Exception(), + ): + client.post( + '/api/workouts', + data=dict( + file=(BytesIO(str.encode(gpx_file)), 'example.gpx'), + data='{"sport_id": 2}', + ), + headers=dict( + content_type='multipart/form-data', + Authorization=f'Bearer {auth_token}', + ), + ) + + assert_files_are_deleted(app, user_1, expected_count=2) + upload_directory = os.path.join(app.config["UPLOAD_FOLDER"]) + workout = Workout.query.first() + os.path.exists(os.path.join(upload_directory, workout.gpx)) + os.path.exists(os.path.join(upload_directory, workout.map)) + def test_it_cleans_uploaded_file_and_static_map_on_segments_creation_error( self, app: Flask, user_1: User, sport_1_cycling: Sport, gpx_file: str ) -> None: From 05d27ba85c771531c5c62f8d1e4122032c3d76f4 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 12:08:44 +0100 Subject: [PATCH 6/7] API - update log message on weather data error --- fittrackee/workouts/utils/weather/weather_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fittrackee/workouts/utils/weather/weather_service.py b/fittrackee/workouts/utils/weather/weather_service.py index 6578cc43..33717475 100644 --- a/fittrackee/workouts/utils/weather/weather_service.py +++ b/fittrackee/workouts/utils/weather/weather_service.py @@ -40,5 +40,5 @@ class WeatherService: try: return self.weather_api.get_weather(point) except Exception as e: - appLog.error(e) + appLog.error(f'error when getting weather data: {e}') return None From 12e02282236732b4e0fcf0afc76006f434cd9456 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 8 Mar 2023 15:58:02 +0100 Subject: [PATCH 7/7] bump to version 0.7.14 --- CHANGELOG.md | 10 + VERSION | 2 +- docs/.buildinfo | 2 +- docs/_images/fittrackee_screenshot-01.png | Bin 581753 -> 582193 bytes docs/_images/fittrackee_screenshot-02.png | Bin 396139 -> 396312 bytes docs/_images/fittrackee_screenshot-03.png | Bin 223009 -> 223170 bytes docs/_images/fittrackee_screenshot-04.png | Bin 77225 -> 77395 bytes docs/_images/fittrackee_screenshot-05.png | Bin 69494 -> 69864 bytes docs/_images/fittrackee_screenshot-06.png | Bin 125195 -> 125577 bytes docs/_images/fittrackee_screenshot-07.png | Bin 134659 -> 135035 bytes docs/_images/fittrackee_screenshot-08.png | Bin 85219 -> 85595 bytes docs/_sources/changelog.md.txt | 10 + docs/_sources/installation.rst.txt | 18 +- .../troubleshooting/administrator.rst.txt | 10 +- docs/_static/documentation_options.js | 2 +- docs/api/auth.html | 6 +- docs/api/configuration.html | 10 +- docs/api/index.html | 6 +- docs/api/oauth2.html | 6 +- docs/api/records.html | 6 +- docs/api/sports.html | 6 +- docs/api/stats.html | 6 +- docs/api/users.html | 6 +- docs/api/workouts.html | 6 +- docs/apps.html | 6 +- docs/changelog.html | 840 +++++++++--------- docs/cli.html | 6 +- docs/features.html | 6 +- docs/genindex.html | 6 +- docs/http-routingtable.html | 6 +- docs/index.html | 6 +- docs/installation.html | 24 +- docs/objects.inv | Bin 1595 -> 1595 bytes docs/search.html | 6 +- docs/searchindex.js | 2 +- docs/troubleshooting/administrator.html | 14 +- docs/troubleshooting/index.html | 7 +- docs/troubleshooting/user.html | 6 +- .../_images/fittrackee_screenshot-01.png | Bin 581753 -> 582193 bytes .../_images/fittrackee_screenshot-02.png | Bin 396139 -> 396312 bytes .../_images/fittrackee_screenshot-03.png | Bin 223009 -> 223170 bytes .../_images/fittrackee_screenshot-04.png | Bin 77225 -> 77395 bytes .../_images/fittrackee_screenshot-05.png | Bin 69494 -> 69864 bytes .../_images/fittrackee_screenshot-06.png | Bin 125195 -> 125577 bytes .../_images/fittrackee_screenshot-07.png | Bin 134659 -> 135035 bytes .../_images/fittrackee_screenshot-08.png | Bin 85219 -> 85595 bytes docsrc/source/installation.rst | 18 +- .../source/troubleshooting/administrator.rst | 10 +- fittrackee/__init__.py | 2 +- fittrackee/application/app_config.py | 4 +- fittrackee/dist/index.html | 2 +- fittrackee/dist/service-worker.js | 2 +- fittrackee/dist/service-worker.js.map | 2 +- .../{admin.3f508723.js => admin.4313b7d9.js} | 2 +- ....3f508723.js.map => admin.4313b7d9.js.map} | 2 +- .../js/{app.0e84b321.js => app.f25e8d14.js} | 4 +- ...pp.0e84b321.js.map => app.f25e8d14.js.map} | 2 +- ...rofile.9d91816f.js => profile.98e985f4.js} | 2 +- ...d91816f.js.map => profile.98e985f4.js.map} | 2 +- .../{reset.685c3c25.js => reset.3771935b.js} | 2 +- ....685c3c25.js.map => reset.3771935b.js.map} | 2 +- ...ics.f4227d0e.js => statistics.5228e1ba.js} | 2 +- ...7d0e.js.map => statistics.5228e1ba.js.map} | 2 +- ...kouts.a06ab85f.js => workouts.2996c656.js} | 2 +- ...6ab85f.js.map => workouts.2996c656.js.map} | 2 +- fittrackee_client/package.json | 2 +- pyproject.toml | 2 +- 67 files changed, 591 insertions(+), 526 deletions(-) rename fittrackee/dist/static/js/{admin.3f508723.js => admin.4313b7d9.js} (96%) rename fittrackee/dist/static/js/{admin.3f508723.js.map => admin.4313b7d9.js.map} (98%) rename fittrackee/dist/static/js/{app.0e84b321.js => app.f25e8d14.js} (99%) rename fittrackee/dist/static/js/{app.0e84b321.js.map => app.f25e8d14.js.map} (99%) rename fittrackee/dist/static/js/{profile.9d91816f.js => profile.98e985f4.js} (98%) rename fittrackee/dist/static/js/{profile.9d91816f.js.map => profile.98e985f4.js.map} (99%) rename fittrackee/dist/static/js/{reset.685c3c25.js => reset.3771935b.js} (99%) rename fittrackee/dist/static/js/{reset.685c3c25.js.map => reset.3771935b.js.map} (99%) rename fittrackee/dist/static/js/{statistics.f4227d0e.js => statistics.5228e1ba.js} (98%) rename fittrackee/dist/static/js/{statistics.f4227d0e.js.map => statistics.5228e1ba.js.map} (99%) rename fittrackee/dist/static/js/{workouts.a06ab85f.js => workouts.2996c656.js} (99%) rename fittrackee/dist/static/js/{workouts.a06ab85f.js.map => workouts.2996c656.js.map} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ba2b305..88df6c8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change log +## Version 0.7.14 (2023/03/08) + +### Bugs Fixed + +* [#314](https://github.com/SamR1/FitTrackee/issues/314) - GPX file is not deleted when the process fails +### Translations + +* [PR#315](https://github.com/SamR1/FitTrackee/pull/315) - Translations update from Hosted Weblate (Dutch, thanks to @bjornclauw) + + ## Version 0.7.13 (2023/03/05) This version allows to display the instance privacy policy. A user must agree to the privacy policy to register. diff --git a/VERSION b/VERSION index a48658c9..a597e4f3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.13 +0.7.14 diff --git a/docs/.buildinfo b/docs/.buildinfo index 388434e9..2e857574 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 27f4394ace216ce3fd5ef2a67c1bf1ef +config: 94de61784a672553b4d9efa055ecf7c6 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_images/fittrackee_screenshot-01.png b/docs/_images/fittrackee_screenshot-01.png index 313e462a5583b8171713bcbdc096dc1d42959725..5d457c83a353d14bcabd021da0f4aad50c8d8015 100644 GIT binary patch delta 527732 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�OKFnBiF*~?T>7rGCu21T+ z+}owQDpwcwb#$EI5Am!Nm=(XL(Z1%FBE$7wtE}H|t7Ba=+h_j&ciQIL!*ZR7V7D_j zn-)D@|8%~2J&)p!-OuA!-u!d_W&MN4^R9om8Q-Uzep5Q8=JW3({rh{TuY29UpYyol zz8s}|k?#-IERNb-d5HVY|Mi+R(K3gp-tGE!x2^c?T5)5w{QGk)(zL`rK5Nl%pIfKF z`fC?xh>5Rg*~A|#zV-O|#~pXKF3X6X<{DZ$W6qoU2Xd^<3k#;C7;U}$ zdG?Rmd$x78FH7!z)sT+9s|iYXm*S5$pQ--*?8BMs!Q1{Sr8Cyi=FPe~8=e@yg?A#;P9->aFek zQ_m_XDHUBPww$XHY~RxKm9={J;rE{>`7C|KGA~+d^+~QDh5tQNm!zh4xFm1=mO9%( zndwyS?e)cmX<56rcXXWiw!d4dsrmTf_@3w8soq)hQz~t0_LUf34qv;(J5H|txqMZ` z;(6A=W;5O6qy6?gO}z8Bf41e?*voSYEUo$gl`ZK>>Hui+K|DMz3$yJ5YY`Sjq&fSdN|LEg%`=oz{(+w^x z{l223qeJG2xVqowFoPYs8FwycUR?H4LA~DEBQC0@tO7Pcj>fkNpf7>?av~v0Om0$PFG=1=q=9PQLz`KkQ*pWFG5k2!BPd?Rpw?@t~6eWu;2sfA}8^ydDa zf8_4>c|PxDje~bLb~&RF#pHL|E;+DCqCO<9{2F@yn6AXr0oiQYrAJGPqRH& zxIgmbip{q-ym&0RrYrqo`kmB2FT<5Ho_lOgJazic_bcLO?#xgKxY2)k{k}G7wA4Wq;oL_LQ){@6*Sv;sym1 z>SSGAT%J65R&>o)-fP*V-ufu!OPRA$SeaW6O|-K2juv~Fk<&l#{Npn7tXbw)S{7S} z2hCdc>>{Wo=TR@o&*Wcgx--l{vS9bm+mX*Ns+#xf?W~M3OcIGL`uyVlx?1J!6Be#n zGG|NfrH#S2WtXK&Z?Sx((e^v1E4}V?5%(i*@l6VE({FUxh17j0uls$>W?TIez9&l_ z^DWG7kNH&p#k*+sjWhfe#zr%|&q+Gv9Zia>Db$*6Y?dl4_x#v#_04L}1rW$n|)|EFB~-Xi?tr{Z3T>SqO3v)Sh5E#CR=(`AXf$2=4N-`kSPegCYs+T!i2 zz-c^2FMaN+lWnV{%G-~>UF7O_EzW!e=a1SHR_Xm#RYp_S?ar6m&bOnZ;{;#GuG0F3 z=*Y0B^saK1nNN5e#WkUI**E{3w-)rx-D%3zD*vm0Tgp6* za(%jFrcG>=Q>SR!)s~wfR_q1O|C$$;#ZCEsz1}C`*qvSd=X35InAOs}XWP#T#yzn+ zA1!Qu@$;Fs&97%6(`r5{UDt^^?(F|(QlRPjzJJSOPPiTynQ$`tVD)CZ)QgY4u8H}} z+Z_}sQ~x;s=Uor}sdu#{zaPKZGe7LyOWAC>>+ko>{&Bc6w~(RixO3&(pP5rcd!Kyb zZhy#@j^cP&Z|}T?%oxj ze|__H-n_DTuX1NCyS7+FQ1E7_mL`9K_Gzz9waHJ|H(R{Fka)-9nZ&Lq*L+^~sZ8Eu zlx_9?>}+O->3eF#MDi0-BQqD@b6fi<`k|3d*t!V!weNTJD!AAG$&uJO^QzCxZ4Hs1 zPZxfbKlSjSf#_Aq9*1nM;%^^XEn7 z<2K;frn{guF*q=A@7F@MxcBwzlHHXjxb_K8ddR`KHx*Q4zw&vzEqC`luOqgJ5^Rx< z_Mq-xrR|K}92~rd4?HfLJXuu5T6@EF#-*vLuS^~ku3o*pqr*e?*Xs&~S=+Ky>*rd` zyB2wqVM?3xmUE|`&6u~>a#{NODBhB;qR&5TUM9_(X*JWs=;X5iQ`Lo8|I+KvY~*<# zwB`0~9v+D!4Ci^$`syc}`@K8X8f(LlVr2Hu`B*{D>&`v4e}nI=mf_izC!j0Kc9W6W zdQW5MQ#0k;Z$xy`-q_Cmm$Tzz70;U&VqVE+7MD#*^s;xv?BMZG4KhtkQgam&&tsQp z^pi2)WL*Ce(~HuVy;OMcU2uV#&6$*} zbEme2W=ZiaKB+D9diA|4A)t=OE|DO)glFRU4<2?t-dTLd^GkmCiNono zV18dWec8Sz=O<40Z&W_KXp@(Yg4tL3KYu2cmb|^*X>(lcneTk}OP42KY~OMukSSr~ zm&f8i>Sx>PNZ8Nauw4CkZ-(>pF9lV9U#F_sd{ciHcct%u8?W-ig~4$<0sJ+#-_ z$oIJar9ElKuLo|9_5CU)D7dnJS+#sZ+)T^4+U|YJ>UTRSon*NjzW&Ldh3$n;Ph13L zK7aqYJXcD-*L`{OnWHL8OK$$pDz4a~&okopH2!>wK6@LxSgU^X`*V(b-}f)3=y~s)`v)6u zJ{9>_a{Q#stGJ`=|Nk`|oyQncb-i~^^o;}Sr=~Nc&$-n*=SS4OdHZ@oqlH|itxrfj z=6~Pr?ZuU#iok>S{k7sNvTtR+{WbSc3EryZ)aX{uAucFrc|r2qxq8#5>c*wFWa{1c zAOQ;uCCruc*aoX@@8{&`;Qv( zF`vEf%{FgO-#5?c^%|Xddmo6qOybn5epwl}|II74oBF$ddH;Jpr#_(Uqw<~|TPL2e zn|kvM_x@dt?PfhsJI&WU{SdXeS?8I3rLy?mhxHF{rT;s0HCF20>?>=ITfUp7ukq`u zu+87kcb47Fw?6cvdi~>P`TP&p>)$^yqoGdSW!C5Cuc5 z^{brLtl&zFyv8pc-{!bl>}K`d+!z;^viqAvrDy%Q42lufOGk{Jn0u(tA(UYW?jRo$uF9 zGmoEtcIS3p)pYwg>dV6GPkoMeeOYzRQ)XcU=%9H%r)|0Q!o5d5mtL~)VYfTaKX=Ps zx$?OajHJ3J%l>(9QRt--yp_p|VgB{awhMfgUOFPgX%xmb{dDL3=b;svN=odety9=% z9NsPR@zom1JBIIE*2!2_{eC;Yeq%;;#?Is)6&2H!?#(xE*LLq)SNcCZ&G-J>uNvjL zhksR0p1I>r!jY@fi@fUp?X&)PDkOa4&I-N%KdXcS-NjrF*PZJ%?^D}8&)4df?CIS7 zKl*-$9bd6U;ko*M-wm9h%TB&47c!q0-Qt}eD<~*vdBP>RFzMqF{>uw>yHku>!6ST+ ziYyCv$85DqR-e35Eq-><{5dagnmzQ`axJ$l@xkY+4QqHVM(hb=n7yrD=TWDM-Fo-S z2VGsBELi&T-tUY1X7ovTs_po@cf00^Q_o(+?PZ*?A;oaE^VK``uU@j;nJ2&Z|L@Pw z1pHK9?cLvT;^42Jt3X>^e3d8q2=*R*9U}Se%;U1hWxF|AmAB@V&r;JZ+BEBHcF(a# zF3BIQ)-QkdRlWRY#ATC@zxViFIvZ2(;$m|5_kK`SZos&`egE82x%X#hAAasF#&}_W zZ1p>df=7Ax|8F?wI>*XkKWNlT=~4-Je1B0`>XUUUlTKDK@7Y&QgEsBE zzPY-8J4dUsN{n7jod4$aQlRBLTEDu>8>~tXEU@L0`u^n~sE||Iy?Ectv(@$5GM$gg zOwY5KOw3s0IZu72*F>Mc27m9G$W|G5cAQ{@j|5uY-qv|k_-mM`*%1StvUF3e+uJx@ z7oA<#>1Qg zsO&m@>cm{>M@uffwEBLM>sO)rYcuX!$F}7vU6lCfGO6Kwcl6m(7nk}c42z&+6yHw0 zGdWr~OO0`V{`B4ipUZdt-Iv?W-G6)Q=?$B9`uy%YD$E;JYIbF9_3`Vwd}|lx*6N&I zWF>QO?K3MSr6Pul@y3t=+bMT5yDkTKq({!Q`d)e^Sny|ZVye+hB{Bai*0sNuPuRAm zYW7o;FS{11#rR$i_N?Ez{7Q_wiwmC$Y)q*CjbE_LVS^8qw!CK5CsT~7xA=m_KA)~B z-#sydXZq>R>LzskP;MSg>VYZK*KNk5_x%Yhvs`qOsmP_j5{Eaw{w>|sc>np)O-7~ltIVArYUpliw$F4B?{e{cA9C}h$yuxQ zwdKnWU*8#Ee0J7X%ej6&myejpnl8*xxt8!W%S23F%s+=;+ttP8-)s%gS_(nIiSk>Q z`xe&u)G9uI7v{vqY^QU2m8d|}G*=B7RqNNwBj+1QbzhHczhuDED0}$8k!f4k#O&%O_s zKXz|zGb#&T5oCakE?3z7jwB0R{zq(cN3G} zwYtx8@_s+(owz1{WzG2+x6*%4+NN`8;x5M(mrXp?f(c@*<@2ycd+XkLCU(j@XvghsORw@h6<=7u($rXGo&BEo^r?VQ*>&a( zKJQKb?y-~GF1`NvUfT=4J7TK0_@y?BmoDqP{`g+1#j1Kx>b-PFbIG0aZhZ1f90de3 zlYTLIxGX9BmKr=~?$XPrLCWW%2CDjR%+IZa1q~JUcR4=1}Z~nTK-J%T~?ueeK=x z`}U=UTjv*8Y&v`+rQRbXZ`l$hw_~D9QtRYy&YQKwBy{JzuN!5owtf}VzwdK`>%zKX z_f32H)FdZ|X!&Z*Rm+WB671<%VS`RR-7JYG{-JZJU{D^iKg|Twy&ZRt;{dC zKD8F}n|U_SwqM~q?Hh=C+)I8pL-j~;&S-sri8g^m5`TmX$6Yi+Vpt{-RiNf@4YuK2*HVgU| zmbt41SJxg1vD&-$l>St&{~PL(cFic2Hh!{2_Ke`+TZ!xEAG;#Tso?x_7q80Q))Eba zlPCEm{HU{eU$c*=YW^Ypyd4uyA1gf`_=h+C-1=qzq7L)SzLu{NX*S#Qe*JU9cem~r z9NyR}5xwl=`|sB;y*u)H=hs<=PlOk($$4EhBTRGi{p$Ah=Gzi(NQM{P?cM*RWu6>Q zyxq@8w!HL~QfiWd1X{vwE7vWDLwNui?j2P z;T+Rt)|PBHWN%%*^wD3{c$bf=w3$o66WL=s#d{a8KA-m4iCdLzgdzUgU{C=;yMAU_aJL0_F za*cHH)1Bq7M1Q~6NpN;t^ITC$t78F2heA-ONPvU$L?I6+PS0)AZ~pu{k!8}^JdOzs z2hV^0_<`TqX!q~AGw;s)UT1fIeP@}n`-SB*>v_M_K6&nLV3y%D+r<3ahq5BR7Z$hr z6Rx=0dYU>cag^oxRp#`tD>)|2LdbHRrIx7c!4xC0^+I_j)1uF4i1a=9`cr#LTXvMr zORk4b9EwLeRTP&BIB_Vp2-FvRY+SfVW6APet4j-~dZ>6QNLalRIJY^SpM9!TiO=N^ zN2M-rt**DNi`zJ7{WYzY;-n=d-p2)a9-WRmzpU9UiuaZ4Do6M0rC$;zOo-ca!as20 z^pNeFYZSz99)4FF@cqlZEgLi)I`+(A4tVe5mz{U?_2RCtD#L=un)ROqjCU05URAzPYVj(u z_DOEZo<~zYd4+f1Y`OVFZU2H5F#(Z#-uo5_aVWM}yj*fO8ss&n4*MNHSfhR1lDD!> zndmV^slVT;|GUI0mc?(*-fVxj#=mwtlf;P^x2Bt2Q!=alF8uqj+N-PHsuCPU3I1|& zM}50Cmncfg-k+DlC=gGok`g@I3{2B zwvb7Qe;1eZ&By32*O70V%jdTlZZ_1t!*?ktCW7npjm4H3S1fp$4Y@XzKQ=X4;CXnG zLCE(Fs@eRzcC+ffnzH|IQ2(N)z(A2RYQkl+r;1FUZ1r;Gl4UyzZsbOssb8kG^^ta0 z)5(lACHJ`%TLjd*LxQ*zTLhdqKC+8^ z=aXlwhG}L`0`{fn9?i6UwW;!`-#00#%ZisdUZ~bDFMM(S@XbFToXxJtdbFQ;WPi=O z>6FNJ;l)`8cBh-Sdeur@)#u~>dMKxUQ#a3*m5<%7n_S>Nahf}6#r1|=S~EI@x-}w# zFKw9VyWsbYJ!Qsr&ap+Lsm1T(WSI!j2L> z&tgx8$XMN*tFjtAKGo{C2sq8r5rX?>+3Tv-O0M2x$@_gRZWU~rayZZ0q`f{VAZx!qIsKl$PW(jIEmv7% zuB<;7xOL;roNHP0`M-SF#~XU%|J9qfK%SDhoIZu85t_?lI&anT9v6t1s#hb-(Wdp+ zw)}|9$87-8JW&>GWp?wP_!l z?5i%ym5FQ4csqOM|BqH8>9x1!6q+7B_rjs7$*KOtruCNdj=w(qplDk3pJi4mx3*tg z5%#uUxkbQ9M%T6f|E-WY2B*Wg^AMQ2=mRH z8X>VlXZq#F`c+aII-k^P{^>1W>?PVeOKfq*Uv{5APZ*Z>?wWS*<f9~>umJSBK-Bb5FT68(A z*;2G=)x(sPE5eMsw@wL5P+P^-g8?%FEIi(wvvoPs zyK;7rj8~hoAXnF(9do`Vb4iuP9)J9G@~g72Z0l`-p{L(6uZ$LS;`mst05541K8Cin zY3a-o=5qhQ-ZV8#W7Vpz&1Y;TPqh^MtT@ZZE$EKlp1A*l&Oxq$1y*mSvQ1f7(Bhy_ zQ4zgse*K<3N>i+6PKiAdec6PI%Qke~37;+XUgE!3t}8T}+4J<+fdqpSoeC`ikCsfH z5Crw!h93vkZR*;;s%`SO#W7!wrq~#6S9J?jJ^FUZh7+?*R;*cbbl0V8Wk)@?+u!xx zuG0VZ<1dccXDwv66(ugdnW7|Px#!Ndn>k8CozrgD)rVaE@QZ23oNrl@?7Po;=`0hz zYH~(R*=)6|9}B27n%go3T$?!kaa84cCB)h`(L-dueLyB_Qs^pve%rhd>&*2#Ov9RWKzKW2l0MFFbU%HoTaG9-Uoqe^)>DIQ@ z&5JZ5bf0l8TzoiBTU@T~kf77Tf~D*CPq~?MD9zI5`?8xMdzvb1Hb`GJ;p(!Pe*Ofb zY<;ylJgx#h=HBjFv|tt6qFHVC<=0FsFcRq#=yW@Me~QHFZ7X~-T^IND1%?KSJPn90 z3w^e44Oi@S&bC7=&JVqA-|{|wAj>d$YlK#a+p1NHnMaqcdo5B~dm}fj$IbMiMf4f9 zMPb~H2`lcLw~dqUx;)Y3frt}_VwN^%y=L}W1@HN_bL8D@j@imy34UUl`N!a+-aOyR z3E$mJ9hbddr|SMFpZn)==lqT7Pl|o^F1z^fuh^ZFZ^D-uyj-pGZKB`v&Fdb_FXvsj zb?G0w`(K{b#{8XkD1KSb^S*1x>vh=8^&ahglh)%Cdtz$+@2+Xd>Ysn9N^bpC(e>=_ zsU;`l>ozX>BO}20_o!w>6;@y1S zIdNH_?W51UEY2>AE-KfrD_grN%hMurUCHdFxmTZU(0r)%=%2%eL-(ii7RZ)KZ=4aA zSYJ_77Zmc`aIJ)1i-6OgI8VNi=%3d&CtNj~rgPIN#Lan*h!uPNoMXDl>W20He|($V zuCeQXcyUK|$rsz{r*}!+v?w>~KYva&Y_b2!4%f@~9!~wfKl%Miqca<8(&~Mq&YZif zm-g%ScH@6u4m5b-kVT=_qxr_BgcIG@1C5)S${ZVZz1Djaq)%B5=k?pzCM_k{{G2k@$-w5 zuPLdm|FW3b%guk@e5<~rmydruxx>#S=UVsd^OG8aI25yjYFv{;E^F~>=%yKGYUaiG zRZnF;<)L!wpcB8`di~7QMawdOFdy{VF5H{t&cn}mXd=f$k3xl4{4AQEerbHEuq@ax z;qT9SRuPdZjZZ(cLNuoR%T4W1G@DsqExTmtj=oh*SCY&o&U)nJyGg=7_5b^l8(J+B zKQ_MI*p(&aDktwMcV95vMjVujX0=S&I;H%qR^8ic(|2iyZ?IE(tmwDr!?N!`Pv1|U zczYrH+ef>5OYEi1(-x=BIT$a$YhwGqT3P2eQa5*huMeC&egDQes%L(fIrVe5UwS4| zS>FBj-&Fn2(Zy#sRNW92KHK&seMX^ixA}Bg&$)Bfi+!H>(IijyK?nEOlA>vAlf%#F zZMnB$B5!VWacQ;ms*`6IoZfZ0;IIA~&0>Fv)3L|9KZ{sxH3@jQ&Hel4oQrz5_;bDQ z{#q+}Q-89_=BCB2_0hjlt4`dLXFgQ(|7_SR{@4EhOGK~U?Rl-2;d1TN+Ber3gKgRP zb6t(6cfHCxwcuP>QSqLqhhHDiyZ7_HURCV%?T~t#X@0`u|EWiDa9OdGtL|3w=rKro>R+*>Is}}vMw`ZYlq_bJZ3NSqszVGT%dQ&U};S z68zc}Kf}oXd6#{;n(@DTzNa65UTWCJcQWOCUyaf1>-7sud;?UKCtusv{AXHt(Y2#o zGk$-QI-~r%II8KldhL6+XV11IrG$ImN&ayo{K=BKHpVSX+tOxdUj0%K@hT^7{+T_0 z->fRQFZuAmL4(p)R;OzuTu;vWZJKR8_vn1pg(6NJQlV2tx1CiJ*3?sfcPeag-~Bw# z(zu1kt3wK?0=tGe!{sVeI}U2*8|mmKdJk4FLy<8c6r>4uXfsLHYfL=%k1HF;NO(iJk#*J?b+Y?_Gfqe(ysV3cRq(; z@@sc}!^Cj^d2`LCrsnr7`gcil&qlkhcfb3d&x>$6_4R+^$>-~h3qLT%&D_$mC!$Bz zIQ~)R{OHf`xBox>YN!6Eg!ua9TgtA9Jxk-U-fvub#iiP3>G2iTl9$gNepBC@dSmZ= z0hu~+e%>?ui>r8ULuTMVqN5-g~FMY%AFM*5x{5hIbG`nnZ^jrh$eLp9>w7ebA zW*&pZ8jC51lV6ubeyD0zRZQ*i{T%kOHc{@qoo(~z%l@g87zY>`Q^^vTd8pHXpk?sct6M z3rDWMX?M;YmJXO>7SqTOXZvq&j)&1|zQkRZ_-awjx3zzoe#b?et?HkX z<-`#f{3v?w>Dn{X+a~L|PZeKsaf^i9`uR;x{!1UGq)u(QsJx~2_L^xepADkUq{W1K|FNKb$916X3DR+BhcFNJB-DkUQzx3Gk*5z?}Na!6u_oMfD-9J?H z+pX}~60dDtuht^q)Gb<{+Jz`&t_+GvJE%#n(NywxunWeJC#+BvswvCDF zoo3g?W@L11%Kpf{=X-I(5nmU>Pt*OMpDk7Ub=RWnvoW7M>$7|HkLE9SD|-F&twG|F z?^o*|KC_QKnHuZ+g8lnMX{~xY{crkn&mTIJ7E_eS&UgLi$}PJ-G2Z)e{jQJ1UD?fX zE`D(nqVAtqGNoSneZ|*|XL|~@*T=>8&%ZzK{PIfG^#R{Mo?Vn<#hdHBE9e*BqzdO> z`{vKsap6#}d6}B=MRn%_>*9T-#*ccwe3F-`QslO~>-G6zY)0OL56v&0%Db&BNUJ~o zBllo=O6l8^6Sf#Nre&qe&9<2qDXjOf=B@j@Is4`=nB(Wf5vcrV_16VEsxG`OkqNe_ z+^}JV*XPJvYo>W^FJH1PfBEIOhv^SJST>*RxSMwL>6XW3qU}AUmx51vcw2_>W^Iq$ z7^yqMcUeo~^3_kaM*AH&bu(>qXUKN#ho3+EWUg;HEZXcf`DBN-V}K-AJ7;VEzF3ui z8--N{VT zb=b9hDX4Y#B0O&IYrT7cU56V37Vur4HR*U`+cWV`Uznxz_kZS4j>|vp%YX0W*STG{ zgLv8w*9*2LZA{=~<;;-d6Jv|`_9U1l*E{{@m9&lwGRp+4+_gRI3+bDuj@NZf{B`$tVc}`>h`qX} zQfI0qRZ9QN$(PQ1oy2BxM~{2nA_gnfwKu8+{0}tU7EHT(Ms&^T{*5mir_U6)+}WaZ zWK-P3*=EZ>zdCHYacx}vdH=V&3*EDRrdJevHTU5!dHnIR_o@Y=+M0a=ta5WN350xS z{dhBH$0?hKH|~A)iA#F?s(zbBuxivZwVN|fc1(QxZvdpuY%H7ks6kWD<&sV>c zWAw1ha#daAs@E({3zhXMk_~5XyuGIV*3#8R_Diq7RyRF5^#|LsCA_=eJbqQbtMB-8 z|A@>L8mAT>xO(Q{2ScIGpcfyf?Pm+~dvpEisw{=0Z=W1Ec!=x&v>ev_?wc)Q-+wXM z#L0Jke(~&#$qF`&&GsgdHtrmXM?6&&Q*{@MuS@)Q&bTu7-q|m@@Aj*GpX|P)?&Eou zUtbPgdzs_5Yu=;FnXNgmOU;_^aIsx&y?v{GX0^Kg36Ato`I9b_8N)xEY4E=B^=3uh z42$`W>tjUz=X`j3a;d^z_0mvv%{=k+`~PhEziHMdiu}Ch>h-$2^6gUY%owxUuBV&M zi76bHX71A8mlVY_bKUQd9j{M5-hNl=*}RoIcoQ!nJOv}ly zoAZNH_*nh<#s5!>Uw)(^r?;n2(RlM4p2`%3uYMbU6?i|cx^jQ+;b#TrzoHm)=j-m) z-C}cm-hx*V$|9yo+oc$Kz+l6h1A zZNGEsj`Q+u({K9kJwA>5_=oFyT1WUk9em{ECx7+Lg_>y$RsZVM;%3Di`T2d0_vuT& z)lH{{^&UENBdp_|AulV(n>*fdhto`S|H|sl_mBI}_jS=}%l&zuW;@!-sAd%=P5+do z*s?}LTYvpy)!!vM=8D!G&)d8xb0gQ()hC2EjC z*lysGySu|KTJ9)fjhtI`@$H4J)1CJ2TYmAu?x$<`7~0f&Y}U(l+uuL=@_Fe|zJ%8& zBxTJ$|JzdfruW4WC-$GIr{fO25c%_kb^Y1fUHb2S8I>hizuvsprIgvMop z=AS=Bjwm2X1UsuPqY)cx_V* zli}Qghk9nI>=$@TUtT+T@Oymi@qZF8?)BFEthF{|`zMn!+9`>R%N_c?xE<)hU4d$-xnR+TLbJX9_#TK?Qy!g>$iMBmMo zrI{B4TdvkkJO6Li-I>ih7R`S=Wwzdd3oCS;jkXz;=JDN&m~!`Y_-2J`eVe02`BSzm zXqeN$7uE6h^uEMvjn{ZG*E=Ox7w_{=JtCRee(%NQ>e2<5r@jAqze+yp%IQ^+*(cxL z?2Ox{eCJ4gUhH`$XLY@d$Y*Wpo96ectyQrpvZ&8Wa=2X5!cu|w0{9dy}}HW1va;S>WI1?%&T87;TCr7+gc4Szv`p> z2Jx!rUw_w$43NCKWyxpXU30#1B|f>h?#JAW`Q8DVEdq~HCVHK^<)Z)O_4@4>zy9Hy zvbV=L<=dk(yEf1Gzjyw@^c$H5Ph{9?=AL$y^)6e#kWc)6x$%D6&r;L-bdEeYwczc7 z?21Ro{_6MsWvz^6!iy80rs!Gy zuRL_E>dVe2a&ng2ci3+K`n258EM4e({BK6N$=z;m&!^pS_Feh>-RZyl?;cE?{_os_ z|CbBWOqTuMTK*y9@v)NK-@^3jKAEoDS!VU_OWGX!PdY*TY@LdnzuwQAcKZ5d`v>)l zn^naRX4|EI>Mz~7?f1_)^JX4Y{eIv3+mG^@KcC86i+pwQ@1l)1f1Y2Py65E$$q&y@ zOKwOJir;5Edwx~u+G#=d8|Fx!t|^f)UE@4WuiCi!hY`21u4!^}@{3M~Sr9}VXvygRrl_}3BcR^=be2fc1LhK3$Z z+$^_olA)c0v1Bi2^p1s}w&hPg*>N;SFWh&<)Q|+LH`}7N+WWXAUpm@$XyT*R!WhnH zk9-QPHFZ8s;}-L7KII}hBlPC;Sz@b;RF{E9s^^NtPT#b3a_Y}j^;>z~T;FRJdv4O# zbIgBqYoz7x-jUi_BB&nUqx-+QLHnNn)A;|@GrEnJ=SD%SZ36zxI`_5u`FNFMK^8X*~;w(j%%Vk@odg*t^e+O*cb3Kn6VeYNRqmSvK4;nX~j zQ#v;$=RD1uZ$Dv+)`cW9L90`(<#pxescu`HN>?t@5EVP7`RSKOVR($h@fE9f%;B?% zi{ClF{ZL|$qiLq0YPo4U04? z_SFC5S{Pxo`)t*nhfgNnn)TL9`(eS7nA_zRLW%-Bs=T*l%A_YQ%Gi1RDL>1`8E4y> zZroCl=?qY}6Gq$$I{ky=f}j6tT@Sw}_aR&HmcbQXlSq``g-8Z7qyxx%t2SMBKu*Ju3fr zXTdWr`|rR0c!s|G6-tJy=Y1{jh zH)h$bxvk2AP7hDKubZzD?He69rNuGTLderfOmF$#L*Kl@|M-b~Qj5~?h}zdG;54V6 z2QdpbX^qrIoy{j*vbt8^I(*XQYRyS4e0PYgAc1KoD6&2_Nc(<=+h%_i&WOW zvzDuR^WuOS%U)DB!<`g`S@h{!X`TDlo3_v~A8aQ*3*D~eX{ zP}J*K_eMexG}hMzpLA$c;o2G!YAfQWmi2$_MQI`DPtih?PtGtXu?f1pT`Im&vQMD% zPhIp3ZRzGs>$NY|Og?#QN9ffFTS9H@R`l>MSq%2KMZM(wb|V&O3>m6$&3|L2ovFD_ zSjg{~&=x8Am2+(pUqqaYncTJLflol=%dhNp+jH-C9#gm&VJW+9ao%IUD_U|~?Wfl= zE?EOga;Bb6Uf@|;#eWJyp?6eQom;*0xc#pO+L>UJ)FumVz8Ugx<7u|y{r_w0 zr|#&re%W>3GwPOZTJWW9KQApX4^&-##v4@Ixgh3sI(|Ix4xAzty>++NB;8rU`jNNG zQ;U6f$$aCw&ClYz|2EgbRei3PME4&)8UANmq%P;-7ndw`L$3xTRvYOr6>#bhKC9sz zaN4E*;my}_&+g7Kx}P(v>f@0!?e#lPtd;p)mdrk*?mu(Ro>!)FuZx@byCclj-~Xq= zo;Ul%{oSpRpT6wvDZg{jy}az8QuUuJ!rBQ>rT-`1S-v@A+)T@0zXva`zAo3hzE+guZTiD6sy@*>XU~~1Q|vGM z#}B=-nK>+f5Afe9|E_e+?O=jQa@c~$E2Jy(BDlKdSUPb8+RoR!_~~HqBD4FmMB;x| znDpmwkK}Y;^z_i?0t+V#nUw*ioJSMq-A!97aHn!_T~Kh${@u07MpB&aN}k78-SLg_ zl-_>)wf6VV4hHot7c-7bO0bFXv)<*d|6L-$W_fDY?Z}58ANPwYwg@a*=Bb*RyTt7A zHFNt%%h#ui{{Q~ezRzyK727qle`|UdWv9i>yYcR-&(9j;hl~GtYsw5Y4#)?-Nd3m!By$t`p zy!uXUXWW)n{^w7HyK^43UN5`wY})J}C8sp<3UVKp! z%-Gs-Qv2_VhDjGEKVROL{P9a+jnO(`-q~LtJ=?6ZK*Xuzl}P8bc$;S~;em4g+=ZLA z<@>AV-Zxv#x_RXv_T(+ow$#dJuF**gZhaNxvG0+&2>aB|XZ2gYRQ(mz(u4=M$Io_N zyKkS*t~t6!f6dIDX@~aLowe33viRjK-CA|`{G&g7@4T8gdvoK@C;r>Epk>O|S2IpO z|GfO)!TsS@FK_GW=KVi*;%_Q<_0(lCh40_??0z4Y_byFk!sNsI?0=MaY`nYwQ)*rI zI>|8p-ARjXPWV^PW1N@v@!2MGc`M6!-Dk>=Gw)a(5H#OrWqJDA#?|TOQTaDcv~AnF zbJt$pt54D{q~6Wk@lX8Pl%4+FPuD#@TFEsxN=j>9{I2<_-DMZ+GNNBy%RhUfZswAi zqB6R-F6m!({`OBo;Mwo|Z9(-B^}m*{Uhyt1rrc3^Q&?W=e!dy63@hq0v}f%M2`LX| zE8R9}_T!~@^7!67n*0ClqU)u#ndy^)-8mFjb+3CZddOz+#xm0|S?}BBi+)Nl9}GCu znwcftes|i2E|Z&G_q!H7D6$edmnq5B-e0i?QVQPM>%Y<e>me~Pg6Y_Uk^ z5q>A>z|3dxH~;*`eH*8KjjzvLcyLAaOS}J;_il+b?OvB0^-4j_XRl1h#{av&?|l1I z|7T);&n{d2=QrK;mNc_+yia>~B)szH>Rb_tOD~H4N&I{NY~GctWuGnvKd#J7l}jwP zn!A2S`*W#tiAVm|c8C9-ckuA?3tyjo^x3JiIYvqDbo}utAM-yS?5||$F*_qD{Jfrd z!N<>2epj5S(SLvcf{bdpW&i)*zRz;`6MQmHE&Xoq^I!D4@wd%?Tc&ROQoUNSzV2US zUb&wCpIci+|Gd4HpLyr%>GJ(zK_v(LpLOh(sE@6l!+ujCv#g=Us(!PxjdRY_+kAmr8zd!{^(X)9RZmWxevRPU-Q9x^4C$IZKmn_>4&)NRrU4tBn_m6y*%KKrZab?wgj$lEV<;-<6&)pIDW3SIOqwz;TieSVMI*A@StW!&Bu zdbQzhnr^u5%GXx+yqeBVHWmB0_D1N#q8pl5_B>ss?j8Qe&!l|mDk%?e8(+?_rN?cn z@TOP0L2dgvJRQMplWxu7K4x>|O#i*qpVj7b?jGmwkP5 zGc!2y+cAw-`g0FSzh3NOuJ_>V+PjsB*M6^=@loZ!)pA2k=YOZB^M5;N`M_`5nfa%r z3mH|b80Y&}H2##l{^6eb<%pmEYGVTQFR~W(pH|={^D8F#Ycd0`ko?UDC z|4PQ9%iTR?Q|+(CF$G`iH=ikuKVxiOek|&w*x&4Qqtw!lu<3UXJna>6IR5*sjabyV zgfADCxs>TVohcqZvF_i~m@8U`p0RG8v3arCTTj{f>I{6^ea_1}x^AZ)e671yrEg>A zJ*|EEXCB{Op8nxdSM!v;dpZAX>B~3TWweJ;q|(V^?zO{Hr@?10>Jifyj-guf`Xjr| z7tFmlm9Ox7{lYb8*A#AF62FY8YJ$^#$?cy%u!$_^4OeI|e`n|MJum&`G#|FI&9YT~ zRR{HbVyB$nH#NTCKKJU#_Y;jlrIz=iZ+C@d9b~;Z!XI`$lDM_+ty%UVv*-6Wuj&g; zy*e>2{!wd5&#L;a(~0)Wl0oB4D>Q|IuDNZ@xwp5Rr&(X_?1OH1<1Yt)zUgdyl;L&0 z?`wgCgKw_q?&Y`w!EV`v ztFLT+#aK11%M%UWdvDHt=j7Adm^?g{*J^aH-*>n5_!PIxKEEf{Kkxti|IDJTzB`ga z@}*{pibQL@+~!ih^nqWo@U2~Ks*$Y{LDCmAPTrY4bzj+5TjlfFU91LIvfZa&seN-t zy7>Uxw10QzoL>LREp~F#t1O4dQzW9p*Q=I2YmK>cs4pw`M5Xhs4b`vxoQj@Y)wnzT z@cC%24dpLMlg~|g^PcZD-=7r!_@PaK?`mi67ZO2i18NXzg!q{ya!YgOkPs9-^|G5!6)~BM|pL-^mRlR_nI&t;rn;y|FSbrx_zrZW(C%B zeUIGnXvMb;T{m+qrf5a1NlTi=wrhTKE911if5P4TG zzAA}Dq?=cJ!K_{hhSgVl79H^8Q|V z@$EIuS8p$hnO2{vG;RCD^WU~T+@_c2aQN+}2bx?9f-iNgW&g;cvqLs9>}<@zU4JBI z%T>(eG@R?9;iU6gbYEt%)q1--!na?2{c~lXbor8L^=<6o^@qPWn9JGUjojmV)T>L` zrO|!43Cq=5#~L%~)O4SYx3TA+sG6<&m)>m@x+t}5vGHU<<=Y=W)<@rbb7|IPH$Ml( z7K?xWw|5*3;dym(eYnNE1y`PKm@KcU6)qSVdAs~&&9ue`??118{+PG7cU9Nvmn$|r z+HNo45_+{oyDs{S+M%@K)}I=aWsRLU6kU4j#7+rZanss1CFIqT>3b(|Zc6!7krtVk z{%Oj+E9UPKKCKlF^qI=q7|N4fFM=4?Us+LjIpu(;jqwAavRbow(rV|@FKAD{v|y5Z zz?(9eS@Ql4?30;}bg2HG6z049ylDBQ=bN%4|J*tJ=l<`#Kc4hmD>RLCoF?}*o4xsP zr?<67Tq9p8|I!&d?&?X!7l_N>y%W`RQdsR!pKRq38QT@fp#eT?C2!PQwr;Qg93XM+ zU{qoJtlxiU?vJ#8dh+J_PeJp=E7#m#X=ya=*w+>Nt=rE&%=@yHA<8bgEIOmoZ_%pM z-he9|ce5Bw>i%Xa?*?LGQl`s}P_6L*_USK7AJPXuJW(-m2SP~e|DWb9}Jxac$v@&%9iVY)GX506kcnw zR_6Ge8C{DW6y4D5;(l7wsGv64@ZmP$v*|ypC%*XUX8Lx;x5-Cylx8V(eEs#Oe#I)| zhuc8CpKx`VzL3oMoG~m*+hL0d6k7yLU2pC6mz1)Lm&kUDy>!NEUVPYQC3pXORcj*( zBW#|$;a&K1kLa^5?fNNK7S_)}uX?*dcr4+^-z{z`G4+6A!O= z{i5Mu*3m8X@|71kT3r`@nmfO*e%qIvZBu`Cf9_y9n7cY+m-FIBTO6!ft+#F1s^H{f z_^@P_MxU){j+ycA&)T2j_rKdJzsoDvf4^Du%zyW@HXz_k1gBG-txH+}+Do?BuTh zasBXm!+%H9D?fEJ&$wN_wB6XVd;eBB24%Oe((Nv%XRH=I#X6?(dly z^KzEe?`!u<-=epUntHj1jm%aHXPJgYw=yl7d@=y29tiAI7 z{w%gno~kVZ$8`g5q*xu)u717o)&6-#vwcNZshRqE-+Hu0gNtwW)^9Pk^|FU&s78H^ zzW&uq{8XXk8_&Z5oLZoPDUBe{%2Nde*H)~K{BdRRobNlE*<#xaa~5>&Iiwg%1 zv6(U7zD_tjb>6Y~`8yYGn$dD?`u(Ff=6K$zf6HFsqbIf1es&?h>A`J(rH|QfZ}4ST znqhRS`0L-rnTZTm-%>liyRO^wg1i1!Op$(m|I3Pua}GSbJ3qZUedEKK{W~5cvrG2+ zCqHTB{b?$&xF%07^?6sO&6j^_MNMp%Zp}M-|KCkMWwu*i-gkd}cwA!73On&T|5?7P zRln`ku8y1;Q+8is)4$JZ(|cBTnR8Y|H*{)p5_vVnd3owDp&SHTApC^hQ>tzuWnf!GHf(G3D-% zSLL?7?fH3*PcJ`f|M~5-u8CZcDesiS&!3$)PW${zjsIBuy=Qx_mzMBs*`H>zK4wPW z;^zu-w+!ct%gsAcysKHyx&8Bjmq&GoEdZe%JbNBqy!~07WRp*>O^V~i;FOQ|z z%j#}D+x+A9ZOcz?&vfDl*}V%Pmv*LyA6b=qA{UAH|!iT5!l+k=>NUxTdiAlQzO z5L3Evkw(grrE@Mk7vOT&Ix{^&-F9o#Hd#J*tu3{yS9xVMIq-Ec?{;aNb2#sCnr)?g z#qZDDr~d9g{nEo?dP=B^scz!eB}a3PJ>3%iGyjd5_P3~zTCEm=kDIo=oAzeuvS~rGpDo3e7?QIi}H}fN}J@gkkC7vVei-F z9L-<6Dr^Rug4EQqe9)roHqiKJ;i|hG%eFjRH+y%$ekrjz8%wR`w!2-KywkBoV9~VA zQDgPqmHi(x0y}fH=XAj zW0Xu*@sbC+5AVAuwJ1+?4xM*gif`6gwKHnLJCEz-PH+0gXq@eLN`%pgL-Ak4lgVxz z;8D}Un37m^nNGRV4`Tk8O>E-i<6IA>ZB5u5)wiqZeByRN&91P@t?y5%tTwZ`W~jBc z%VyqI@5jusn@>h8H7v4xDE{$sRuq=vfb(b5;`oyRm*d3tEJ2rPOwUEw>UG-K>^ zo9~QjF^LnWi+tb6K6RGZVR??QTi@bNT>4Bav{R?=`_5=kzsmN4 zZtTb17ap%QICgA7*V!z_0}G@S@_0a_x^4LdFPd|S`7EtbDSMZ0fK`Lc1+w%Y2yPoE|De31&ebB-(b z;#AhDOLO0Y9GzUUrPy;?t*zd2+2wiGN!@=ZiYZxL>bkF%{HVTCb9Hi_pJI!Ek|d{Q zD>&s?xE|dS(K=s}Cv^7hk1j0vA4Oa(uRN3Ca_0!$=U3>i7Ro)0N})t(tq9`Fp(M z|1T`n`dhmF<7b{(T_2y9wm)jR-1E5O%G_cTemG(u<_a1>lFzL`)4dlFkGFnPS57^pMa_<(!V*R#nvs{;4XjbZQMEI_iG+M zXKLLgyUY07w8k$!o%<)BeExWO+NQ^kF5bDW`mWXuWzl~ zFZ9`|RqXvDY|}!64@N63EjGGk`dVSo8L_Jje9(-;DhAz6P^>XRMZZ zF|9A~rCo_?#7FDE8=BfR+=?wLGT9`V0&`3FUq7omHR;ae9lzoWtmpejADeb5TVt!B zvwQ5xrE_J3imq(Ake6ovQ=r`U_tZrZs{5C}eRTKuyyyGvSI;qfB=hT5nZf6s=`*(& zGQAL4Thm>wu9uwO+!#|?rrZ@)d!YXBdA+p!*4(zp-`|XFjMCLtGM{@oiBHPD=7&=K z{|xhui*KEKAEPrraZ}$KLuByYTeQc03C%yY|w4oaz2Ln>xkgZadD7&U>*%;!^2E!q9^L*uqLb2oPERDHe=+mO3B$-4mh+Qqd0ADpgXz}>1W zQduKXwa1<3UQQS{ctgPNdQMJ_$Mbg|&QrF%8XLqp;}7@m0+puYuOBBYY!9#qig}x< z^`9~Fs_5#_X2#V=V~#$Lxbtn^yjRB(x6hr>uxZUB*TOeTmhR}c(9h72S$5&^(f9me zneoTuy+NJ4(#aEoLXu}}nxCJhn^ybq}*R5&mXa4n`GHv?(!^O$RKisi*yX1BM@SfI4mr{9e`}l)) z(fRM{Kb0Np{cZhye&X@pe}nd&>)$<*BmcqVpSuHh#hh$u&wKLlc;4ely9De06`8hB8 zM{&BkR|;$W?yu2OBfVqs*X5QkdVKQ>tH1x8vzKz&KWh8UD%sny zeBPc3d|4;W;{Wtqtv+NiYtAv<`u%gYqh_D{U#3-G`;NO#FQmX+^1u%D`nJt)=l_4Q zHdk@SYpZ2T`H~J*Z#P;Hb3h>J^q%b%fA(wtSjsTRY_7vPj(=YQBHJ(ZuR*jp#w_vq!ty@vbCwNIN( z|Ns2Py2?9s*F(zq_s#drty7NPUL1E^?P$Kk*;|*duKoNn-}+?#ikw?ghc4`qojaFH zgKt-9UVYatli6$LN-fDt|Ma%sDAay_Cx6rlt)Pqx8+B*09k|sd_qONEk39C;Oq zmwErwqY`)SFl=Ocwr?-n=lT<$Uu-SX+kbTb={I*z+?f;hXX$FycZM}@w2Ol54>R0i z1Z`y~J@;_Km79C)W>)^bxzzD)k+VE_Gs7&)(>2Lrs@drk#o4+<)k(5+RD zxnr;S1wXKIh*oO!Xf9b|;eE)!c%`P9$XWM=_2+|smSvrv*?V4?pgPk7xI+(*jT*^!U)Joo#seo<(xGtPVdkXOS` zdYwbVkA>Ik_uh`&r8>FsZch8W$#EaJgT4XpLb&#hSN za=kCrkU?sHSIBpdXHJvq=Qch5eKRxX@PuuR7Mcsn3lDD8(A^+sf28jHHJ+S@{fn>7 z?8=oEtoo>v{PMzyV88`|fR$3BHYFNejTgEcGm480@8>Fh3;FiOdqG{lUr6cI1z+pe9D5L# z=<>E#Ve^K~Hchj(F5I}B$s%ZNRAf++@WvAlzkb&@QQSLYf1086F;g8b-q5@(@0whV zvhL?la^gFU>Klh-H3$y@^3Z!PY~wR+^u(KR$~&uO#zb>0kc#Str}B zUYwF0KeuRB_Nmytb*86$bKks~bGKkZu<5G{$3D+;xV%{E{W-a#r~Iogo&3fwJbjLG zyq}_C%a82u?e#?qCTky@z1q8Tt?u%xSq8hT9>0D0Z~Cm*+wTMp#pb2Gd;7BQ;?#6JaCoIai5HoMt zi^40nH8(WsDo>W_56Clpuu)gLyXP}|<-e6{TNk!OIjq|#+1F*vJHLMJm7U!czhBB1 z=3BRTD$f=uIbQ8B^-NEW&0m{;jm_tLzC4qkvGWuExs-a51<#gFj$Nu(UMs(5)`=5k z2amu0G>2>5y?GWhH=PL57oYs>l!<$@Tu#`Nus8D;UVM3B!J~JHE~}4CoR`YJCE>i{ z;S~4BkK1-1>sUU!$yR%^kEo5v)HQ2l-gF7_Ctuum@s$BXnYp=*iPlTW$QzoyZA?bS zp94zWY+~-b+c!tZ@nHSY7aYrMe6(DjublfPhkIS4-}U2lUCfMIr7kLe$^LdcqVh<5 zyRBhYsb`{1bS(dk0%IwI)TaxBu82gRJw7G*LWMRu*sVyg>iM#xj{EZW_bHxnzW1`jLKcS>9=Uter_J+eQ9Z}1XHOc93#7WwL4%$75X{rmFLR;APX_a1SLwmh^XI#RLa$K`iR{~ySn z&8&UuuW`uDrw$iyo)p}?wBgR4Kh|s$%8M!u=1dA&{pH^N@WchLS6NM*p1*Io9>WrU z(0Z@`YMh$yr_bhDEcpCONsvCfWR}><`p9$Pv#;EHSFCqVVv~_)_`zt#t7&^Lg@nA$ zIrG*Z`Pk??|m>W^m^AJv2=0wBA=Z%G}jzj zed}%bvujyf0}_@l(73+g_L@6+KV*Nm&aZs^dGnUvKWx?7cP8Dno7uk2`p(|4Wskbr zz4@L8*XuS2FPJoYp69%cLU~*&rxU-d-}Ll(@@4BJ9$rO{;u#$s#Udu0&c!c9j&BlS zI^^`BM8o%K0P{Czb&E+Wh2Bi`ezKAK#+Qd7e0r~5>{pmy!(;KYUEtliO|NcvK6*1% zBfIzE2}$i+MNc`4xsKFKe>z2^O~IZi>9J+*N>69z1nEK9&FxHCX+{@+-uv>Uc*(~P=@HdWIaOwd%IiGw z*{;~Lavf{6m3_|HC6WIhX#b65T9J8t=0=rnKm9U=FP}J9d|gnppmnL?%oU+r?186t zPjE?knQ$s@-tlS2{EO@P7QOu^F}EiFzr&iSH4(h)EKYy8=fv@G`kh>ZIlm1nc0bL} z4BS6e%$xCN+G*L-Pot{lt}6)n@Ow|sKc5BF>r>T1nO5}Do!u=#Z_9GbqA%K8&+;l= zF@M|Cowp}%T)}!IFZy&_Q`D9f1NvU!v{;&Y}4Uef6p%@uwK1~FZ9&~ zg+$}~@4OVwuS+_)=fp?v$`wzFA3lkk^y#gJReFr<)I)09yOj0Vgg<(wo##g}+y=x?eyEBGnLENA-(o2z?dicHr{ z`Bdr{JmJW+*zn)IAu_UsXS@~9r6||yYybYW?3R?glW-Ei^Z7q*Zu!`kcJNlk zrng~9%G-^ zsjKGw?EUFpydiS)&F!BII7?RrU4MD*c0#Y+DK_6wtM>Z1Vp~m*hsPtUHmQ z@{9@IjjNLUb{{w-dXdFsT|-Z-YKuVq*|lzauf68_J^PD}<6qx@!C$Im^W3H{+Gm!3 z|IEz=*B?L3J973#QT=`PDdzR%vh$|@UVG*4pS$l(ymo+&@7ex7b_s`ST5GrE;VW5}$92jx1EL-tcqDn|j(j_3y3=g?`jhUwybC@q z_UsNiQ~N$M>i6~JGwS*mZ69PQJh`+(|MCAB$8I;fCl!2NRCT=1rbMA%Mzlt&G$CSZ ze?{?!44b=qSALI(xB5HBRqR3K0Bk<|Ng+4DH^}9)x{?A>uLbv8; zY{7QB=yDrV;Ym}A`iSW-QSR}`m0y^;DSXA zXV#ufP~$f?E_|ssZBE&;n(pNi-<_OoL>vqgN=lD-mL6R2Vx{4W)MM#qADw>tI&$IX z<$?A8!z*@g)}OUoce%>Niq9uDukDz-x9i^OvlgsvpRW}6cC)Py^t9M9b))yW$$gCf zCm8(d&Gf8Q_qbcuvf|WM$){y!f4&Rt6>nc^^zwH8%UMfR7r5CT}d)^yCiD?S1#Gb5>}*$SO^^x%z71c9jiDudJ@Ai7Y7pz9?;V-=2&2 zg6}QkR6G*@6PlXWJatA3u4r;Pit}jnxd7vJ7`wJqF!6Npl6fCq=SW>n-2@xBl48OOD~c`-GjQ z?Ad&4ikDY_tX2D;zuq-8OII z5FkWX`<43XAU{KGa1zmm4Mc-SqXmw7Ie{u}s6mP@8z(^**h3~F0@tKGkO8?&?&q&x zUW!n`ra4`GQ=K#vm#9GxQv+*X6ak)O0JA}aMi_YHxgKJX6Nh5g)GwZqmm>T>oLpdO zvG=3k`Oqt|=ALKmj@)(@6aMk=I1m3${!i(@RiE|D@OZU({^uy)wQqj^U-4(NbY=3L z?MF)Io@v_G7=FLzNqoZ9GwWw;eJXOYB5>{3$9sO(NNY)~`+G%l)k@f``Ig?t_xHHW zZ{>2X-#_cn39kBj`{(YtX%Cks?5fIn(iy&8z$(kExTx|$r}p3%&S+0^S=o!n{unltmx zq>s(31)eZuy?Vdr%b_&BXvfD3+}Ary{l`4>&N*3EKT}9dx9nK&>3eF@iL#0E`|df- z`Mb-$DD7!boo{&k(wZaxJH39%cT3o1iS0iodZ%JS(W~}MpNML??`^UbOWK$Nv(rD{ zTgCF`|0}iBjg=S6&&1SBSn_-6jJKI<=4_qH{k3XC$~%r_HYrcr&zBcpVOp^C-DTw) zd!C4H(~~%|p`d)$*GwPXyS+z?+EQO%-XJcMerx)3PU(LptM|V;@9?<3(C)`Sk!7#- zq|5YjZ=LzRoGWjq<HL`SA<; z`HjymmxXlPIxuBzs<$K?fHDNc+Kp46SbC`8CU1)X)UO@p7^RM{Kl>)qIFeE zwU#!&Hd?cl1$rhE$47+;6E@YWTw)78_eD7V&FN=F+ZHT)oA!-QHuO)*^sfK>r#~L$ zsm)d8oSI$iyfiMLxU*|l%h}zQ$;Wup?%ejjbnND_r8iP?{y#Fi`FQ)rFAj`bcW+gF zV`nM)W~2JeDPfKK-u@{FD`DB5>0{k~Imfm(*K^g8{F|rx`My>x>pac7aGuwnb;|WI zYl0_p9baT27B}B+>YNL&?qvM*(DjnHJ-F~s_OEL@p5YWtkdhxim$w4 zCUd`mt0ebH|MIwlsw#8b{;BCLy}`)6|80-jg4krK>dcF~SU;ycckp}LtLDmDQnw{5 zdS1d}v9-~WQDMa@igv$$eXx43bpPyrkGty9_v&kMI6uk@PM&n;RmWkKS(}y^K+1w2 z>>i6kl_Xc(H=0s=e~r>Ah69Hl%7;z5vBmJ|8P|1`!<)ldx^_)rRyJ^TmG;<{@n5no@NUweg_}aoV&Smy8i*5Yv*iR_GKr(x~n7; zGI>#ibo{(^rab0rl-r-^gfs0iO*pOaYtp<=sq5R8u6xS#!QbcMBVW!^#+5I{YHDKF z|1{iGl=ZfZFFf}wgQv#P`YZc38}9k=Sm@cCdnYHfe(vb#p6UeJC)6VFD1Xv~P4z9G za_+S=o|`@6U$M}&A7{_pl0No9E_KJH>N$^G67Kr>{HPJTeZBU$d9Lx#vZI1$GBhri zYBMmXQZ0{}av)k|Lhl}^J z^{cqV8VzTko+Q2Q+e}#X(ou3|~z5TZN-L2{yi{7#6Nl1VAb0BJm76a>_jaA$` zdv|@z5M_V#tzPfR-Ow_*x=q4cOF!mB?r2oLw&?tGxx|<2KmORB>#x22boNG}pQpow zPF-8FtiScM_4JJ@hoYLeB2|x1Vb|;1p%H%i+Sv>RYwP_QOSTl({I#n)?epZfr}xZ_ z>T|P;Z|vz%e)DCWv;QC zg~FHqIzI}9zrEX=@oG`b_Uw9Qt6=0#Sw>xqf%%QsF%}w~b}J0|S?53gps9WBar=$; zcV{)~{wcg-6}&N5*-3xi(>113Ykv!8URcd-dS}avKd&yY+}3MsD0!n;`DV?IdY=C8 z>-{tLHa&XMIDK-<6xGnWB%b4wL=H)XF5hzO)X}x}8w`y4qr-1(oxH7@^S;c*ix~y= zR+aI0-~am6|0(VNI-AQYm8@h|+)vjyELYp)p7kQ&@?=i~<`qlc{FvH1^Wc{^VKY~M z{j+6CeUeW6{;y2)`Bt^YomH|koG*00cy-a=`qVvM^Bvdx{3W@s;#B{Mo%=Ugeaz~8 zHFvgt;MQCV*Y~1%Ki-9lFHv*<@Y9XCnLYgQ|FHc$Kc7bwAL!LPyLa9HhXKYnH(1Ro zdb>LK-6xi>ZK9eB?uhu`w%q+tVR_b-g}u*B8<)A8-kWRNHFf^CC6nLstLg2Gv5xNe z&u72*!t5534j*4vr|gm3wa;h7^OdtQ~L02cInSY!x=L?_NDEb`Qog-LGe@h zIVUw7&U&lw_KMXDZz$5ZJ}WNKyV81@X}oE{?$ZZE&TXmsR~qzO@6p@k^+)!;6;SKV zaS~`)c9CZL@TV=;p{mT=Z^=@J2#yaIzR8grkC6nA~rKjg{>b{)|o21)g9mSbN5T*mAd!L zO+ELWxb$9c(Z^MX7i5|D9C^FIm0hEcEx=*<<%J85UcAT{B5gLC>zhT`daItj*959q zve#St@2Ro5xadJf$6@`s&w=(s^#o%huS0bj?ay{d2}Ao*g?QZfsBDcfa&TM*g?t z{9B=1XIO9epG`@RFy1E-&%XSxd*_Of$rI(S=O_O9H&^H6>XX%HW4NcUw5WgdE=le1 zk|Il%(Be-g3yTg_oMpQ`xzDJ2ws7q|o`X-tmhZWCb-rG#_NG6#y<@gaRrb+dK2;;G zxa@sG=@G%0FID&6+-Oyq+-?!To!7aZg@zB$=q{tK^$ z^>S;Ec2u{@)mSc;cAWM4d1ry~rwbh`eKHFEN`+1~*4q~2Q>pbrD{`pe*NRd*=#%qO;^Ty9e%GSd{fK3eabC`Uwy02%g_IRWO?wl%Re^DwfyP48o9`9 z)1xWIx%VQ~NnX=NZLSsRin(*BBzW(;^QvCI8Tf^)9j^%{aZkS+vx6NSLF0nT+ z|7!V@kqyi^&*L<5odhQaS0(f*mcv>K3!&x2q+weoFqf@$sIwuXY`&@3w8s^{z{})}^d+GgPSl z_sq!8*EVPevgQheYD=7`zxR*#e63A?|NZ|xt%d?I%dHx>?|GF`xcb`Uz_+y;7W=yN z%ToS!s@>fACT{E8i2u`U?wxqLZ*}cLPM+nx?;k^wmN?}V|n&hW$;V$94`CVAKi=Z zuH5OO_q#zaKksp0tn~BvgsW2ux4i$t@^yD_%8N6$G22h=_Wdt>dXw6l3Z&*w;I!J6=j>ew`*gJAB=7 z(>=;(|E`zZdwt%i#-qkFcG~j^pQ~>%tDn>_CFZ+5HsRlkgJ;gMo!_vmXV!(;QB@B2 zCrppGKW}XuxA(ANeeJu&67~xY$?931Gm-ot;k)f@(&h5i9V@EyOEs@vxvO(` zs`Jx-Z&y^>^Rcb{_-tZ&w4imh=-%+zg}I=iC?5I zPx|FIVb@!Zz^U2BuV$_LB(gqhkA==u&--=W*L8I38BJdq)b*t{=fc%j8&lVZ9lty2K-bFG5wimt?%nO4wbtsBTeW}XY_+bV z%O)THS@oT-NT+_<>}5|Q&YZcqcXI9XMV>}8Ga~d_%&kf$Itf3Lo9VBYex`kPM_AL# zueUz;KL2N|+#T$>{>l%( z=z|OM?b1HY+_lFxSwwUbzv0{F^AfMaX0`r3y>RdAFZLUCUROTbXIwuyc470+q&(Ft zi%(Z1-#T6+W-&E9Tk=VRz<0x`H+-dU#F|tsdbGm%tl7kFK6chKtGs@_ATwUV))2mxslay|?zc z?6%eGow&x0!!zV=XYTz{x@*UYfAu0q51yO(Gr6*6BYXZ?d4K-=OtG*ColKp&bl#oJ zzdx6}xZnNbN)N}e{qp|nJKwGdZ<@FGU+?Se&i!fK)!SZd|Eu%w?E&BV@1>@b=F}GN zT_YZ~eQEB|Q$YnzcP{6LXq}FiKHAdUx268Gu-aBlnF(jh(l~3?ZdE*gT^DjOW%KLH z_2CtHzFJr3%{=yfulN1i+}hPftM64cTh7Yc6I5xxUN-k^8-H~2o~wH-t0ixzEB=%B zOZEw6cTlZ-TU`Rpz7R~s3sw13&@-8=W}OAuK*hq36URiR40w(<>w zb#{G4AsxS`zLkmRsht^laoeIVj@<_rI4A2X+)t|4&aqr-5s>`DvtN$x>ehE*)ll&8kc?jPqTaA`Sp z2(4kbs@@Z3yZgfimMP&YmW2d0y}Drep*&z5Hj}_8vV{ZWVZPVswdY^5YNF7iSpeXimJS-f<;lN!^X7TLKU6F5^A5 z+)a4uvLxH;=Pz&Qf4W=je=+q~;HLK$>w9mk2u^7WU;b_CyU;l+g6p?4J-eK4kv=)u z>CXN$g0mxPzrAu?x7w;<>TB`M?_b-6?5x?fBCK!i{Zoan=ldGHE83SG!};N=ploSd zj%Yx!W&K5$ofj@`&sZFO;A7?b3pqc6`l7jJH+`?Kle4e;E!h8E&SkQnv*eerjNjJ( zoAdAQyk)M>8^6@#8$VyOslWBd@_NtWd_@<|G=(*f3+$#g?dW?XckJ`we=}1pLvxSq zSQWJF(ZP)`9{h{`SNngbL=10V&4sn%3+?Q7yx@HjaYpCgTL!_xjUoE78m;O_Y&RS| zT6B;rZt7vp#f(>&ihO=PNsrzTCoG$>=g`W?sKW=nH^yvm{9wDcJotm2G{=f3_tSP6 z)+@~T5D-5nNPoh!K&kuLm$-Vj^VfM|d_QBkplT`KUM#robQOG;vD z_NFR|Q4J zTbz~J+NUad{PWdC;TQiJw%aAEe=K_2c;;`K%EHR(%Gwj#YwCBf=3l*ha-G;Cc@f-BB8zUARD0==fqvnOdGg-S@6_&4kpI1ek36uH4cb)g$@)uuU ztYH;7A*lE+IO|tk*qd{^)ObQJSXw2VJ+1D4HSt1RvD=N{n;YI;xG!Dr@LWvhl*!|n zatBr3#T>ETy!b=@&4y3rd=ilb^H_tgKfF+_!mJ%5Z1HN<#pfrbDl$cSOtXRypPV{v z@2$XtfsT&@TYo(*+9{Cj^y{4PBYC_0r5vE%+((7m=ffxw6inO64zqYIwG6V+{9^mpl|WS zIh(F6$vV1E=l9O{zMpSCR<@MLKfch*K=Hqmuk+k{j7M{h73CgE&|Yw0-QflMe}Act zpVoBmLBr9UoqA^ixVbjG`tsuG1cC3WQ*ZdrzA?M{ZlM3SXPPGWYhM2}{+^TMob`Br zy;;LK-J2be9|aeG4^95nv|Y2digo>7>&Eao_GxM2{})9H-T3g5$FIWXtivKKwCWDXJ=U*~oO3J*rAF{&rvBxjo z@P1<}?duZrW@@Hh6?3k3*t1@~x$A$&-0lipS6}ljCyPt4aHCA`-XlliuYLS-=>3wk zr2^#(Bwk-wIZ^QIA$^}{(e9^V#y2NN{(h>Zw6^a`{SHOO|A&OTuN`M!|3&4|`jw|L z{Jm8pzbYMwF24Tq`#v4ry1IE!)YRg`y>;wWdvo;V|14R#eTV$bbDOLFdY*ap^%x!T9^P?P`^3f>j5D^CUM`(KcU!6Q}=wH@qFV~w`*Ny>#4J8S#I3_`E7Lm$9Ly^=B%{*J9W3;{_m-ooNIy@zfZ2;@ZZa8=J|=r z7k7m4Enj2P+xdHfYSHJ?dgf;$mxS&;D{SMf=y~{8eqrnfUe3Qy8B6}HJh%BqUF5;S?l;zoU9=#R0igDMUyr~w$ z(>lMmqx-09enQFY_QGq@dDaa50!&*R-~P-<%6}zoe8c#Ca+R&o1U_c>%d5{TMA`nd z3ochpT5+ZKQMWteOj{Sq=RRE& zEGw70IQ8zC{K#^n#?KR_e-ykk)GEt$u6NaaP&EDJH<7xZUu2Kz*mr-``}}Ivwxzr8 zC#Lz_J@C+*(S@=dD}Hn{Q3oZN?fHlWCJ<5xXheFfouP z?Pg=WlZf_9Xr`G{`#kAI^!kTW8;V{{>s3jg{lR>fprp9>ihljs{%#XfcHI(x`t+x; zZ{(Mi*BfR`NjbJQj`6^=$;Vg5SqX^mZG2~%wbAO)29Zqy+m}8Fd|ddfCVYB)*xKZu z*Esx+#;Qa1}yS6`y znk*id<@(+{{bTNAeu;M))qx#JyPX3m}p ztn_))o5VnqlRNn5^B&pn9Csfybn~e3@#`!VrFTMCz1f5ImMGM|GG*Y(_GVgRRW&2j zo&U0i$`pC0w)Nvb*ZOG4S^KGkUJgAEuj3N;aFEyfI*Hh(dnJp1=a>9G zJzumQ6x;$%cYK^qC55PIG$;!$XHZ!o;?z;^P~*g9_*^e=bJY%!wjJpU?e^7M#{99K z51rPIQB_PeEGjKrmiDzkFV0Kh*&S6)0mYUdv-jBCT@h(36E2>v$pi8#hhmF{qskJU zv~_ytLe@!Wu|fqw!6_F}Z?tPWhy|*&L8nPUXQ}TrpKhKDihL&yMK3nVkj*KO3s!cp zr#3NlSeAP>LFdK28csK7P2=R6a7aT@Bs4TslMOT<{%%uo(as9Z#w}lTV2=2Ac#q9p z4Pg<5=B#N7kop4Tb@2Rm*Hn}5;B*Id3CYv&DoaE_hLNEiWPjiq^7VsGk)T9-y%Ptf z_3WBWkEYI@eEO(2=aQxAo{1caNA5p)`qFLY0*08_IZL5almd%b0z*PWmr8WGm-*?r zEBOgV>2-h-pMn#|NAsiVO9YDF37M{L2cL@y4j$ExmMKSH{5UCLbLXxK=s2wUfchFI zF3FjZA?qZ5_3KAx?dJxkjzA+1?bVaqXH|&IYbd3|2yON)$_G%#)wsV3`9E$G_9`)wDWZMpj8daB-4DwE= zSqnb~HHo-!Dk?4og?}OcrAy%Bxi~;6kVRAUfpVrW7ocQ5l3bN8S7_{hm_mT8|9El#_vIp!7dHmc;P50SnP5F;k9w^#aW^{Y;L$$yvwJ}sCF>)Dinyff{!ZPT?kD)>eedMS%$=T^6+3nXSsszsU#$I((QXPK zual{TVAx8oX>)YM&i|dn*l&O6;|dK;7jPge9;x+psz1dZaHdT+N9wm)ds@AAt7415 z|4lDu6t9Wg%vZdPGrU>YuaE7JQxm6N_^h5YI(KACuVe?bGWxkyJzcqFMa;ZYPn`{= zVo#ho`TWYu;4km*PM>?b+#?ax8UY1`f=p1%UYTd;BYOJt-fXHxBE-N!(;nGt}=D8^}0=L5>)MKnZiF~&zF)Kt+wE0 zp3Hj=Yd?7LQnS8QsYT#_Q~&aFiC@oKGf2-alUY*ucU8#RpvF_8rv$}XE+ zc+WQ@+U@^)JDIpUr;YQEe7LY=pN(LE&GV>l2TN^Ct-ICLzC8Q5;L**tFZb&n?v$LK zVU?$#to66KUus)-&9_5EkL0V{I(20gUu&%IvvNCpa&P4kcgAWi?t4-FwKpd7X#D=Z zf46B8v%k-|XiP>elU+lK>`_1omp0Z&0c4Phv`v=v2+htC#Gq2a) z__cZCp1;)w`sXX=zWW$|>D^S_mcChM=ghko{#*8h^`RvX3iFMro5=S7gs*#O4rqo|HRE*3qLB|SX{t*ZH9)~9AB5ag8ui_z5mC{ z7hQRi5$5`<{?nfsY2`c`j3VLsSy#CZYC6PU;xi};y6nlFb)@HDqQ%WKOXk=g=I{Rg z=~~JR%Z;3(Dx!jqmVH*UO){Ol@5TvvPfLLtUFPaM3$Dq}zmS;g8|IhUzny zT&6eAsz1MVp2gj=>KvE4uR@RCDo1|wv4}cQlw`Npe#^&a;r@aD-mI_rb=2zHv8N6W z-uG(q8P3{>YIr2w{sOhT%VN0hWPduelQsJTee25)r`^e`WaN5wqxQ_dKkjDpPAjRO?<@aX=Tp7c)Nxky z^i*U2o%{FR_h9+bu<6u2Dps~wB? zOb~UN63{KKudJ%gz55ztx;tyLU-P1i6LL>2Qn-HPqK@$NM@bu{zUbWF(!cq*fBnSS zQ<{>tANW+$bMM@i72;i2v)Fg{p0VLB3q5*s!D0pb>0h(ME^f^JK0Du5f9~UeHvPSE z`ChLtxn93zR2Q;V@3)JMgNUwN-MlHEE;r0)KRo}eV$m77Z8G``DxL4v{y8d}Y4(NF zs@htt_^plZ(%I!nSy%Ve?^WyHHih3Yib31Ge*1ivXw8m0wG(CP)|h2|8`+j(N6&s45BAu*1^wM{SP zR}?-9ytU`Ip?sU@htJXaAC8{S{khMR!*TjK;bhkMxxL2r=hCAq>cztL9ue0+qxfy( z^`9Sg>xJs4_bk5O#W8P9RQqK0qz<1ohbC}NmV8^bx>$FD&sX?n;#{k5{E_%DgDYRK4H->W{5G75_Qbs@I&ky^wW{ocScy-PISi zY;KFaeE(_i=j0l*=b@*bp25NA*Z04Dx4H7!d2>BBpB8`fdHe4DeCaoytmK(|SGh&w;I`cRtxO&ZB9Xr&lrQpuGF#iY;5r&97e$^t9YF{pM=_ zVjI2gkYL8D`f)w&aX0g?6P~#|+JAn*@xZ{qw^bH{E^9 zvZeFcuIPmA+1@glSL$)u4*~1*PbcJF4A@nc948yr{mIq8=35W9PVA2EtMw|ArYwK( zZl(J5XLV;^rae2dEcZ-Y`7B{g))zLlnLi4+>)lFpyQeeF@c(da#p95=OVb~}?iZdq z%Uy2Wl~*_VuJ2+`4B?tB^F8|Ik;|r=Bldn(D!iGNvu^2&FCpq}SIcyHltYcx&GVDL z-MTE}uj}ysnd@0IUCFzvV;)w$GyCi2dRz403~Bee-e)n(Bv*IaudTK{^5NM%3B7oA zpU@TZ->p~I`#lMGxpJXTX8Mt7LTCR}?v9Y3>DIRDxV=eFU31jsg*|*5gf^EdPp-E) zI+I7bs$5@dd)C?Le%9nYSIZ)dZ*ESK{=9Ae^BgxutMc$KYEw^zAKEA7Bg5at^knYS z>C9$XJS$z#h0l(t-=SJ6Ew!#?YwOb&XD*u>M{Ip7v{5qcOKSb9k9Q_Nwb-0y9=+Ii zNpwle)~wUgf1TD}`xkO{&aEBup6;LXsAL)2{7(1!EW7QkT>r=2!I~QN8yY7|@6&6Ip1AR=d)4|cX`ilK3(@}7xZ`F1HJxwk zZ=L%i``mJJ(y?{rhxYp@++{0yxREQ$LDlw^g0Z;#vjaPGxMX5ES4K{M&USTa(Kp4o znpFOI=XoB!Rr7PbfA`S5nZ-X^%5-ET+cw91JyPE|>+Chw?7-@M{{IWoMRHo$swdP> zO>8PdsE`l3pbNHd&(By z?zUa=wruxw#&abV>2|VLm?qUlA2`AJIpX>Y-m1F=3(NVqj;I^Qa{lx1(ZGTNEKQgIcit@*IQ}kc=NNt{U{#$*!aaA67lkCC=5hm%UTZ3KsE0-_s zTzj=!GMCAKVbx~yf4?lg$#yI)e!j^0 zPTM5Ey}Q-#sOj)J!y)i(M!?0FTO?v-PM+D`v}nS#)MIJaA3e)jQXjKG{Tb8LX7>91 zPpd@lzv6lQ?&!();-AiZ+52YCjPqZUt+XU;YggX>sCch7U4eVq*XL7b-PD==TUvcx zjP=_&w>PvaC-NKr{yb4fHk`Ng`}&@FQyuU{Sf&Rm{e-wrDX*HNmWR+i^P#Bciw#RIOtMR-?f8`uwYRf`AZ|r-s&8uF8v z>MIK$6@=B8_LyhSh_L(4FmcmJ+t-Gtljg&Y5LiDhT4jzn6ouw4H0-S5j5+v}&)zhB0m_RL%NWz1FP>Ctxi(La(8 z8mZ;zE_nIi-kIMy8k^^>c5RiOS3Y&o`LsV`C+%WcqptES4E1fTz3o@{`0cWi)qbL>{?LZ%|9hVL*gy5$Z^#^BuvLG($)=C5*ZBUKwCdizIeEKW_Z9E_ zyS3nn+_txQ$A83LPkeakVC78D@3(J01uSj0@;=}5@9c=Gjsw}x% zBY2Tzs-lKvUqpAOZg*MWug-NL;ePcSKL_Y>zFvOe`ONDQc7N;N%q^c28@luR{_M4} z=PWN9O+L9~(u4^t9vY1SPVE6ME?r$KK6LF<3eyQ+|2Jyg*L_ucuXVG!hJ@(c5O^tI zb!n-ymF5y(``q_?uT}lO@q5lp&$LO5O`Iox)!8XNnNwR9S^akF_0Q4%l?^A~|KhhR zXsAzmYWsb2;ytFm43UP!ua{4sd~4iYwleb56)v^2bA6|kGGDCFnE&h7PLuyn?JGZr z=Ow3ZYIU*v^zY2(I~D%S>biG?ZvFbSr)KKmoc{kGdi}d+InCI< z&aAjOG-m(LfNPcJ)9>$^P`>A>$-j@U?Ter5|2y(Fy=KbK^7upS`a9W;KWE(AvY~N# z{;qlTHhZR&vVALEXUo@~%>L=d;r>Yyy&YAWYu7GNKj&iF=NR4{@pPe6e-Y1Yvz$X& z-IJJvdi`|f37Lr3b9pR0!79hg>KyJrGe*E+jpr&+G5vVkLq|+f_M6W+&7W>};{5um z2L1X!c4{(J65{a%5}$8h%8aqd6Sft%otJ}S!e~~J8uW*S>waoh&*XKxiPkvT#$!`0{#ZRR# znk3AxY1wac{ov307JaRcFaO>4-nLKd=5*iAsvS?4rLr8~*Y{o4T=VYpi^o4NoO=4_ zgR}jcpM)Ma(5_DFuX@a>GiL(Vih9}hx5pPw|35Q*o_B(m+N!GRf_t~08E$4&IPZA; zT+*Sn*%5bgZ|+~)9-SX`Zb$IB=S|MHgOlHGP`3Pit-k2zWa$g-CV78c&wneEz_#g&f}lV8WRUsV48F6s+DuXZZ-?ipxVT+3ST?ioo7$dlhCb4nZjmvE^*Y@xOwKWt!U0e7j@1(%&9`m2Ezzp3i^IvfNC#=D_@86RX){ z_CIvES5%-Z_u%Y|V|UuxBlcM}+8Uc)nSElmzSXSy#p)ahJo(kHZQlKOGx^T8FA>lD z;!efCZ=3x8Z-w8iseJQf)8$SzyyvusM@nVSZ{JnklZRK)zjI!4M`f_iY#UI({h4=oP5#Cg3Bg}O0 zn9q@lw2R6%){hJ7>weC9nYp`n_UWJMHiufv*C(x=d+4J2xo7V8Yvx3oy*V#!#qx2p z_m1;^&zp;x&Hq`JN#$e;zdo&dCjV^8mPhtGUq0L@^K)9EN9K*{T}c;f>z{0zdi+CY zzmL<+t2r<7o~}7xGr3>h;7h01G`+NsQ)a#~KBbqpD{Rvai@xh+IhqgaI}fESGrxag z6Z`td&qCcloD@FhuyJzlHv_xcm+g@fJX^1Zuf6AS{0e7gNuTb=AHuJ1yl%1mki+k9 z7o2u&_A!1TE>>P+zX!$lXP&sO|4YBF=D%P~VWYjv5}C~URsZ?IzVtkP(E0M-nKt$v zr6)zi-aXCTs~a0$th6-wy25>{ww3kiGAB>ne!u9>RbGdso4fn|KHD>8;fznk|DWu7 z-p11$?Rkg$i+w>o&yJr75uKezvl}w+k|IQ#cjn)Z5tA$Ukp0AjZ<@|)XBt~_@ zg};C5v!tZCO7iZss5o(XC-I*BIbm5_Ly+pB2oC1{e?e2Ht~S4THQa4=!;+wTuU6MS z+H?5Fk3G&6&o}pf+3? zaFv*_{`NOUUQ5s9y@A3`x7ii#xI zxtzA%{(I;B|9?{9U;AR&>Kp^N!~cpd6f2xCXKC({pa0Cwb*oVF#*%gST<*`{d}BMw zWBu;PpEhqQ|Lkzg6c;g0>pi}I+vMj$MiVbBUTE;*||K!%uvvWSwt1U@-JjYVz_804QyOV{}_phscAa|cHdxGo!qKKsM8z&9+Z#*St59s25(nDDK_gSKEKSe(>7VPMvSxGR3!B zp5Cd9e)}!S;I(^kUi9n7%8$=mw!Pn`vA>AWt5eRed+poocTcH)*?A|XpMUwDJo$FN;IHiLio36GRlI6U zeNm}iRB(>BzHjb}&?(ueIXk-C=j(mE#eDis)k*!z9}_PR zAIk6ifBwix_<4)P_L*nhpWgeQ5-G&?A4ltA4%8p$MCmA12PY5Txa9Vruq)lQqj^vXSTQHOxOgEdM;^ z|J$s(^79jAN`ofOul<{qH>-eW{*O12Z>~>lZeRECtNoM;W!|Mt;<*~uGSpA_2kEu zx38ajzUO4pjbiE2>35@czkK-n(zbZUXv^(^Up`K3ozAA_m!Zo4X5;aSZ}XQ%eElc= z^ELDF!Y_w%3=iZj70vy&>$Y3^8Tm@J`kMbfZKX1kg)MRu*~9PtVL87iO|0C0Qo)U% z)elU(j{CV<^w*c~t+)U8clG5lpF1*@t8`{RHUHGf|94isn_}+cpg4FpL2Rc-;G6$nZc`U{#=+CQyAm@>r5Ma(L>krPaDtgojtiIIir654*mR!>#T3? zPJDhK*ni<)?*E5>p7%>WH*x(_+2gjyFEN~1rD}88q}e=;dB@x8CU5(X%>VWUF5Z*& z&Gzfvntu-Y+&?py{OvsEZ1I21>mOIz@1O47-2Z6L-(`UrGfu{F1w?0iA79rdtXa-n zw07;A+GCk_ey{z%w*Hz))QDRNA~y^U7K<7+%u-4g$Jft z-3-|FK=nxH?(2N*$`9{@)ksU&_`hhiAA&d#=&lBy#yih{83Y?giVg_~+?nKHYVSz zG^l6q^=F+Or0TYst)~38%x;;km&@m#sr>%8EB?#Yeu`9wov=T~%FOajoa+8BMO6Cet+U zHQQ|5(K7eW2PM`A7wfmo_P5(I#Vhp0y9H}SUh4GgsGsV4TbQ@_$dd0ar@m-7zEIW@ zTw28?=o}s{IJxq{scUMtUZ$Na7WDC&tbHS^^WCbox7jDFn+o6GK1=oEnJb5LW|YmY z`O+x!=XmvwmwNrjwJulwmiaDL{HEsp0$aZt{r#37_a3gdeqK|zCsH7}uKxYypV!X& z-%q+7Y*#M1Jm;xL(XW|*zMN0*D{|1^v~cx-mEwEaZr*E%-S>Q@{DbYw`4+35sbsd_ z`-!*N?q}Aw@6tOzr8mzz_00Lllcm!?oy^S?R(`jB;$i(?TIR7V0S~vW-#b6E_}i&_ z^P}^qQ8Q=H(HJH`S|KYHyscfnE#u*j*6K-j3Wfidehm^^|33BWC()Sy%iAkfSaiL2H%UsKX1{Mz zs`T%O-8F{x|L-Zi%eI|hE@xKsqjbZ2#yM7Xw&8!?>)!cLqW;<}=TYZx`6uD!r3)Ev z@9%n@7jq_Adw1maca`tze?E6xl{`ywdE4$aFJ*T7A6jJpui3qt_k~b@T&?`~DFt+y(@3d&-~2y?8{Bjy#1w;N2g!fx2*rDe}2N-WpQCP-xT8a ze=(fo%>Q%>C(}iP=F8$wcD%oSz2K+)y!5Nb@}}8-HQB$jigR{c!}Z78ZtuP_YZ$QH~;kHaQ}zB z`S;Ep&MmgIJ}oQd_co#blvm#Gbk6Rjzh74Wyr;XDB}$k%=}bxA%-kK1%eNQYeUx`? zee~(C`}cJ3KF$2><(p*wg!kv#e;%v%mwUJ{)OJnuZ=3J;O8D#JtqiVFhxzFhtDq^+>U z&lh~^5pVl~&9AfUW;dN!^yp7zPQ@S3U)OEU|F!?a*}mtsY{gGmNg2gV`;TX13a&EO zJg=V>|M9l5p2XAlBJ6v9+V07|sru*BzWpCAPyN05yvoT_z3<|zW%^{#&$(G$czrK_ z(Ywn0N1eyzpI?*CUs`-vO5p&vw4l?XR!1(zPDd?A(@Q?{uDPgoz0`O0(CNJ9a%;g7 zS58kE$)=ilho8%vyeT|wyLZi>=gEKGzLMLe#kT&!k@_vQX`dhZ%b(PgWtwr$`d+QZ z|M%k8iw;@~MSYudR9fGHv+jq^>{WST4{n%#TrPWR|J2pr) zKBHtNmTR@&^4Zmz`lUtM_CG#{?)iI(WB=CX!|~N-@2%J7T1&+?6&~L=Ykg?`(@ELu z9{%0GPHA@3&GdW!_Ly#5{Hw0QB>Ua2#_sj+R6ot0VfbEQ-;Z^NZ`Nl!1sHVx|Gn|L zQhlAe{jXbxOVsV&27iCBYX!J5CNpDi|MW^X^q{_)@SwGXB3 zcTCy5XTr9V#+9et{ZcRew{gv9YSEqZ@7?tc?=Ic`aZtS8>0)-;{>N#BKW4PQ?oKWG zq*(Lse!c1RKfmJaexHO!}`K0dW_hbdHMZKPtc)Z}b zEr0Qqrpo`5lJEZ5_@Cjy2mYmcm-zoYP*<6%W$b6wD7m~|hvm|oDQl~JmzS=8xqiTlzf(dW;zxX&9=`8)RI*>kNXzFx(Fezw0nrroPJtzF~vSz~(5 z%P=ovHGwtt6YOo)Y07Lozu=A(U;E*Wk1M`%x_@lX&P(~&WqM}Dm1CLfqv}ssuCLc! z9k%w-#^dvzom@UY_3|>gJqMES@BN3pS!!pchC3yW`DcmZ)(3i zvwdH;ygoao{qVzrJxQHmy3fSzt2&mOhjpYn{GPIMPU%M{zkK<-D)-h@w&>S>jr+wP zcjCIAT=VQ-)-rs@*EI`kmM2asYCT?GE$X@S&<@Mr2480=Z@-~--RzlYb?v6V8FuwA zFV@_uUk z@RI$^vlEA(1$F8klaQ_hWu@f~d?7BYRY0_s8U4(aTCnD*+s8l6JYQea=n}Q; z`6IXpKTEaeY zQMM1%#`eP-Pd{=w6+6STUFOUZXFj=ayCs+FtO@@r_h;tehXoef?Ac{Y6zYH94y}2+ zf8WXV^;MSV%gYSwZ;6!DPwbsq&$ad}uLSR1Y3qxHM{>(;PRzM^+4A9y#TJPVPp)G` z@>jpGCYbj_{9|YTf9d%@e(e9a-2Q*>SLy4Ul8zQ>6*|>#JhP=!c;|~n<`*aAKl|~x z@7a;Z{bjt*3M^zG!BZwZ$Kxf4cYObh&F5-*vsu~?*FOXav>$#b(Ng030Lq3_Wh#D4 zN?_WdrpQ=}s0UfWI1rO%`eeJH?t|-<;XBTERPHL;u7a(O&ulGn02Xtpl5 zITYhD<1}N!+IrPhVJqDP3q=xp+%);Kc|Bzk*E(`_%D1p2_8IVS9uinzmpL=t2^Gw5JE3Zlq z%M#r!AzB+VAG__Uu6ptM_2RvI=f1qW{PAx)hS=EHlG4(JQ=B*)L)HdqO}()rQ#es# z)BAnDFI~H~?d)sQV;64U_Ffs{!qK^0BvG$@dt|ia+y#%du1TyhU7_IeQ&B-6I%c)w zalr(^phf`>mSY)fE_ysw+*_Z}eLuG@uG25zl=A%Z!Yzu8?}Jx{Xoz)7ByYH;wA7`m z#Q&N^PoJS%^VXMztqvaiPb)WERlb#5v;XHc=G(`jHmo|I9(!@IdEgiKNlB4GzAS3D z*G_n;xJK~nVU9$>+44a-pAWp8pL6-b=9YPiUvw(ZUl5Vt+NZew()rr+LLS}v^|}i; zwajx(vAz%{e0zr7U02WVyBtq{R1%1`alY2HwJD-{%Hs(|a~6v{y`U!hxTtQbQ@~MU zHh*Wo-zF<26h6M4A$PgqK+w8rH?HiS7j(yc(W;0&E2< zK?$lWjy%e2md~7G7~<65rM}W7bc-R2V?$8Amh5%&>Sb#;N+iE}zt(`~BlCaN`^`Bg z7EArk(b~3QrA^zpQxdB-_WQD#eVuabyU?vqwp&E2GERzSa-2GR=Th$W&0EE?b#7&B zxu#Osv{mf<_m5MYv|6XUwD|MrcbHiRpVXqunym_kT`tu}+?M{;(lH?ysZ5Msi)oVWdG;gmz-P0zm_fA!J~1) zlE2YuwO5-w*$EUaSyL_gIGY*{@CR)^6}86bhKl2iSEq|=_dTC@`ne;=Bb9>^o6p`4Ssl7-_wLR` z8n*Wp4t#GG+#b6>k=b+7gnEHnpL8T+?Z;*YGhxlv2_8?Am#&mfh@N}mwTkEr+r|Jc#j6SvD{c#yDY~eIMSDFp zGRrQ$|2;D!V?l^kpx*S4wemCHhI@2QQWWYw%M!SnHzL^lfxA`w2K@^YGn9*LZ(E-#L6xuJBdtBPIt zkV5Oxe$%>~Oi!j+Av(_M&N18c|Lh%dP z^#fSCIQr|4c(=+Zsy3BORE<>-jP5BjlV0DrtKsXWxQ-JnKAaj8yK>_?zd4x;&obv- z&)v6aZL0u>>IAPvOAci;8;afk{?X>EkbljG|F_Q`Q}5h1DN88DslvnX)aBTmB@t&A zuWj*hkb1i#%~#7LDXS@e+XdBwpG{czAKKBDr)H9WBv?wd{;QaOW6;a25E0b|N3X#B z=dUe$R5D5BNMXJ15>IdBELkw;yWlmYwMRc4I_j#- zI(5!un{B4yt8|09Zsjcd_s{Qk%(b}BGp+Q>7HDL&DtvUg)qkhEZu$}1jo|XU=h~48 zO!gl#b8?PkFf%dP*E?u+8nVsJSanq^aI4p(BOE+xh7pq+JY3froO%4)&QapgZ#gFK ztx*f3dM^~ZOgb_{#Yuwq+UcH~w^nUE6S8u8y3?|)YJEy6&dLkr7d_c_SM=BK-;tZs zc;`JgOg%Lv(N;gZ&1Y-W(*678&wtLy%v`u}qoC&HZN|s0*lNC3n=LS<{&cF>(xAJy zKeYx4N4+h`Q&$p}UVDbc_NYhFVgaF->?>n6Rh^c7U!*3pOs>!9x3Zf_UFx#enaLMC zorI2iXc{x$@ZRgO`LpaE`H4IAxHLB;O)z)9yI@N~&fU$Iqb7F=#We)nTT#^`VRKhp zK+D^E1*ffZ@dC-|{u)Oo6)COEa;(4V(KT_wex-|U2`6+UEfXF_xm}FS4qJZGY-@ws z=9J6dy4Ea_cT8cejS>nG*|))jwaswhGE?!()BJlgy5+VQf7BOmE{j$+|Gez-u`8|V zj=mYwnIB!%J~eO4>|PGj>4~!|ckqi!Z=LeM+4C32%fv0m^hG;Q{|#AGClq{;4yvRT&jg8_bR(_O>*Qm4O^z%6v8#Tcj>idhh|M$ zxxM-;wD&EMFd97*nQuC>IyQO|jj#F;qw-qXm+j>3N4=dId zFOkb`FY{##TB4MCZvCYx+Lt7zWpa3#u%+58o#;H}u;cG(OqrL;#nqz*0V z&CUJxOQt0LNWGZy-E)P~YZhF)E$g?WB**{Vp67|zIr!QSf9wj>Jowp0N=hndqn7cG zRsom5DQ$MsPlsrUF4@45eaRq}H|*CBN2xNIHbut?Rnk(cJ6DDN`rXa3`tlBq$qJWd zCYQ}|Tr{hq@{(tCcIV`lED^<46&|N4A<@4XuSInoReF7GZStr3CntU8SWI+UXz*v> z;~80E`|e)3;u0Jz%zJZNRQ4i`q{qj4*Tn2J;w?Yd6T3F};rF8*Q&t+znD@M3W8umR z=2qt=6j@Gjx9v4sJo!q3xX{WyYu^QTTwy)IC#3mT;lSrTU;2YqKFQ!U2>Br5)R(h3 zvU{u4;^Y#cX2Z<=E32!!E|%4Q+@&d`<-KA7=Z2qGJl3d9`sZ;;etCVqPUQ?1CFM@u z%!>Ikt2ld3HEfvKJLRSMN{`ufsSLde8=EFg6A1pl=-~A&EVFE*bS(89J-a7(O3e!6 zmRzc4YaRS7)mW@|ZS}19CTFMy_HGVwf@y# zRogWa79=-qQhW7!(V}h@$EMI_dKz74WOpswf8%V))~fZQ&R>>&+5NCCTlZ4Lp)4l> z)sP~)Fpf1_UfyRCQr*yaNW*hcN^S1}F9V*hlcr27*?1~yQIy4cpS@Gqt1o5FZFBS1 zygcE<+efLU7q)q2NgXy4bF}2z$fjjFBqMaTD4&njaj-p< z_WVP_oj)b5smuAFmRn3LTK;?m>*p9{P)DQe+0!V7Rbi)A3O@V!b;5R+<%xcUGQ#eH z*CcFIgEyYYP!PR+sD?RFZ+hD&ubIBzlvhpFDilgTG?i^`gMi0*f7@?u6{ioH)e8si z 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 |#lXG}(oswD~ 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�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

3O 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
wcQa=SR$ou1Q`06h&rXLE@4wka~iX3gJ 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

OKE2WKXq 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

IJ`_*g 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 ZpPHrqo@wXjD+~+_44$rjF6*2UngGsvWV`?X diff --git a/docs/_images/fittrackee_screenshot-02.png b/docs/_images/fittrackee_screenshot-02.png index 60e1096583350264f5f8f1620c488361556a992f..7477f219343fd2f70bea4c2125fa4919c116fbb4 100644 GIT binary patch delta 23117 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

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/configuration.html b/docs/api/configuration.html index e1b0676e..71db808f 100644 --- a/docs/api/configuration.html +++ b/docs/api/configuration.html @@ -5,7 +5,7 @@ - Configuration — FitTrackee 0.7.13 + <title>Configuration — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -158,7 +158,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.13", + "version": "0.7.14", "weather_provider": null }, "status": "success" @@ -203,7 +203,7 @@ "map_attribution": "&copy; <a href=http://www.openstreetmap.org/copyright>OpenStreetMap</a> contributors", "privacy_policy": null, "privacy_policy_date": null, - "version": "0.7.13", + "version": "0.7.14", "weather_provider": null }, "status": "success" @@ -289,7 +289,7 @@

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/index.html b/docs/api/index.html index e886cc59..aeadce84 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -5,7 +5,7 @@ - API documentation — FitTrackee 0.7.13 + <title>API documentation — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -160,7 +160,7 @@

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/oauth2.html b/docs/api/oauth2.html index 53ff028f..98ebc123 100644 --- a/docs/api/oauth2.html +++ b/docs/api/oauth2.html @@ -5,7 +5,7 @@ - OAuth2 — FitTrackee 0.7.13 + <title>OAuth2 — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -694,7 +694,7 @@ are supported by FitTrackee)

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/records.html b/docs/api/records.html index 693f0435..c3639838 100644 --- a/docs/api/records.html +++ b/docs/api/records.html @@ -5,7 +5,7 @@ - Records — FitTrackee 0.7.13 + <title>Records — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -262,7 +262,7 @@

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/sports.html b/docs/api/sports.html index 7cdc85b2..6e568ad6 100644 --- a/docs/api/sports.html +++ b/docs/api/sports.html @@ -5,7 +5,7 @@ - Sports — FitTrackee 0.7.13 + <title>Sports — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -492,7 +492,7 @@

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/stats.html b/docs/api/stats.html index f8f06328..3bf2b3f6 100644 --- a/docs/api/stats.html +++ b/docs/api/stats.html @@ -5,7 +5,7 @@ - Statistics — FitTrackee 0.7.13 + <title>Statistics — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -419,7 +419,7 @@

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/users.html b/docs/api/users.html index e1bc2cea..e3e43271 100644 --- a/docs/api/users.html +++ b/docs/api/users.html @@ -5,7 +5,7 @@ - Users — FitTrackee 0.7.13 + <title>Users — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -663,7 +663,7 @@ one admin.

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/api/workouts.html b/docs/api/workouts.html index 40ee5852..94d8941d 100644 --- a/docs/api/workouts.html +++ b/docs/api/workouts.html @@ -5,7 +5,7 @@ - Workouts — FitTrackee 0.7.13 + <title>Workouts — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -1187,7 +1187,7 @@ must be provided with ascent)

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/apps.html b/docs/apps.html index a155c30d..e7bdeaa9 100644 --- a/docs/apps.html +++ b/docs/apps.html @@ -5,7 +5,7 @@ - Third-party applications — FitTrackee 0.7.13 + <title>Third-party applications — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -259,7 +259,7 @@ It is recommended to use PKCE to provide a better security.

© Copyright 2018 - 2022, SamR1 . - Last updated on Mar 05, 2023.
+ Last updated on Mar 08, 2023.
Created using Sphinx 5.3.0.

diff --git a/docs/changelog.html b/docs/changelog.html index cc5f7d09..797c9444 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -5,7 +5,7 @@ - Change log — FitTrackee 0.7.13 + <title>Change log — FitTrackee 0.7.14 documentation @@ -42,7 +42,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -82,384 +82,389 @@ role="menu" aria-labelledby="dLabelLocalToc">

pA^6>Fg}~pxZn77{c$c@B2}`si??9Pw!Wo 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 II;Vst012Lgb^rhX diff --git a/docs/_images/fittrackee_screenshot-04.png b/docs/_images/fittrackee_screenshot-04.png index a498234c1fa13fe7fc041a43315bed6b65460bd1..075691c2d9326d727c334c4954a03fdef6550cb6 100644 GIT binary patch delta 20437 zcmZ2^o8|HymI*41|0k--*JqbKSs>{4e{+{kWBI|NhNj|8%{unmRkqsZRU6GbGB2}q zwO~_K4gbxz^?yI_sQ)lIxkFDpbL;h2KTq0zx2U-M=dba)>kmGEt@`_+w(?w^<$H^{ z?*!*;D*vv2|5Yu|`p@TC*C$Kt(cbTK<=W??e}1{1KhJgRw#)h6NozGexy|qVRc{>F z^G?);wpo9rK=){jT5ho_)GvRg}fdq&u1_=d-;&#yM>I ze{$);*(H0;*xEuW;w^5iw$WBpus{0p@$$`!lD*H`^ZlAMwZA<7=BuYuw{FjQ`h&+a z-*KJ%aryJR1M1G568#nbZqDt`dUdw)-S*$R>hCSe|9}2s**e?J-4nGJt~@tDos$zb9Z;?R`}*Iv zrs6fCP8%ZXzZD(rDm|KUFimorWp%2ABLg&;qrMU;rRd+=m zQWsjHeX+B#_3>Rj$1gJ*1PWgtN^(+SPU&68VOr4{=%g^AmxXtlTyWoHo|d3Rn@-FK zUiGBS@6ojwrH4{d-cPnXwn=bP^IGM3!q>k!N^Qr6^aQTdCH&to`yDSP_8s`tqS=MSD~UOl;j$=UG! z{u5CZo5a@p+;sSPLMq)gE|{fxa+0NT;sy_e$4QzC7A$^xX8VNVEoUOn)v*5y>eQM1 zhRL!1=(df2vM#S(TQsS#!+*+=Nt68aHRsO!uIBnMLtJUIir3?H&e_(P{UtXN?Nw!( z|IdjDFmv9a^wD|=FT)Gd*NSN?d$p{-wA7`=9C)v>H2n*KueR2$D$uN`3QeEB|f&_ zC#VEuL@T_E-F-R#`sAO?3XG>FOR-4R=ds+HHdFTEk}7w-#5Hc$tUX?RzS-IOWybec z7jIc@pE_j@`z4oSHPIm_?N%EFzgVpPJ-BF<%IghgMfYBA3CsK+!1i>H5%1;|3yqv# zAM?*XWmQ+b{b>oK;=bk9A+OsLU%j^rOA+X7y?NVi>G}v${Ue>rUQNF3d@Zf@c(7Yx zT0!>Y%`6&>VUzE$DAun%_SaJN)aJcve~q42EZg#X_y4pn{ICC--T7yjQ5 zCXb6o>CEXjgKw@b>sp^Xwmx5b$|Ky z{cBsRi@v|E;EK4$^n1zq1lJvfNpY9nY*DxH7Cv|X?xnvE=eb>JFxNNWy!$sY?(T}} zT>swYsaG!sd%aHI{m;_vut*U*yA;oo$tx2NObR#LSaoQ|=0lE;mT&aqY>{qqSuxS@ zL&CII4{znf@qhF5bYHJ~z`(HA(uVVU{o;I)`S0pVOB$S$^%j(soG#*Dw8bx6>&Y9_ zncg=t>@9XWDIdI}GDl2#di4dXW=8I~W43E|y1!8uPoKADZR%^c0}p*B<-KU=m@m@) zFztrH)yM*7BehxEdg2~0_qla;&T{52r=m2b2T1*C=U<`FDKsVNJHtlCRE5m5tQ$f& z*}v7ls7?y?aYX70 z>YmIv`~7_yqp8iEsW(Co9wc0`8DinisEKx>>QkrJh|xA^R=cZ>vbA zg&T4-t!Hrce4fJc?)0X<^~wR zS#9s|Sw%X(O@8kr*JoR9p?+EAz~dd;HcJV(x2PxDv8+AET9|)e!o?R)g4!&87@_n)&TcFpUx{(sUUX0jNkGXI`q@+^=0Hhl{1Tk*#( zH*>NFr+59Fy_+mPrj&oaQh8TKEHIPHS7+;S#Y4Sfq5cj#7RDOwvE}BxE9a&bCCaj4 z!MVq)`&{eAw1kbHJJ_g7r8u^0==EA`Uom-?^LFo*6|n{L_vTB@>J&UNd&{F3(_mSP z`1>2g`$D5`Y!s8|T=>9QyhV5U!~EOapU!@NwO#H>W4ml-y=VWoMpZ*b)&9-QR_9qu zWFNmcIdx^&r}k9Sy=Syi1SQrKuFSs1GR1tZt>=+hjlyRaC@J0j*spBO`uQQ>w~Mci zb-bCyVCJ)GdSXqOS?X))M}nn0Kh(@>Oijv>;}QsP;aVdkd$cjAB~&bhWvk2o<@a14 z{<+ZjF7qJg%ET)Nj~}X+>SN*;_n)z`dG6~Y2bOX!PHYzxh?t+fD)st?CQT3fJI;nq zKOKH-(w0h!z8boPKYdHgRi^dHKhEjv-u~Too3}c);)3;JhW&pc!$kFA>5%=5ATCYp7rqor+T{gz3kjSM^2-;&at_|9p!{-(e8E;C-}+H)nD zAt#~##a^usEA5X(uyVg-+v`e?DuUz)auh?Ja%kd!Jnn-WnfVp+=Hvg!2Qz&6nc;t=2&aF4Y3eJ8z!(z+mTx#qQ;=OQ| z>5-{FS`HpQ#xt!&#_)j3Db<+|;+|Z7xaw`b#Ify)+6U^NI*RPO-NEGIoOv|G^RS0Q zG3RQZ$yfJX*D79|$F|#(@#?D%z3(q48Qy-eH)Z>V=iVXKr%etm`?f+mL$y?7fsDbN z#uahDJpF<{znyf~!fDP%qg1!*J;4)v9gMOL$;~k0lX!VyU!&z;SB?Pv#ePmcZk#rs zzbwA{a_Rgl{|Yv(pH;tT?OE5Arq5Nj-0*ImRLRJ;)m>Nbog8Beu#5(-j%N)y&rR@p^xwKK3Yo@{5F1 zZ8`^kvv_|o*`p#JB5cBOTk%~&kc{59d#U{UXYTdADaSWiqgbUv=+q2DmaRu_IGjqT zdu~&#yG!fw?LcW|-fz89k|xG)Dx>B|{_ef7zVQIFTJ{Sg;d)!~24`ud3;(K8B4aX= z7f8*H7i7NDyxPTkO{_7??cTnPf9tJdRTg~}f2J9~EK4^HIO25DWSO(b67IIg!doNCZ#39jp8Ym=d!UD?v5^_4Qvdo>=cmVp z>l)k>I4ZYwg>i*a-S-N&`;U44vFBR6ydP}O9wS`m^Yt~u_y7Kd`~~lW@2Gz0@~?2M zf3|M(eD%G0h4nkyv{#(Gw4nFl+sdwg$9i_z?+)!_P2pp#IHbGqui{OM4F@k9FdG^^ z7u;oEF=g>`OZiI;^Ba$4)h`eYn_r$}|i6w6gYvPRTiN>-A^#sSzs*I*J=56K**E!YyQjsyi?aNC|%61#>K$E*fLp%U$%a!>ngr7fkKXmxoeucEUsyZEOc5S8dYkr z^9%PZ6BS*(zNYMh2m6n%YVO{=j&EI)!VktruO2OVp``jxUvo>x#|Jy)-@mhccaPC& z@fnlV+H4tBSAA3;C8_P!VvBp|E>Jt;K*t%KWWPz1KFGv>|M2mv-l@%d&i}Qnx;p15 z!+Z~!o#7q{mJcYS(`fZwMqNL14`2r99x>CyfhYf zX{@!<6bsrS|NR5MWnE_s*G{j5ClL;;QYpvz|FQ4iz4cRY{p7qL4Zf27H@+R$5V*lQ ztMv9iyKQfuaXzSLTlZz#{!0vL_MYpvZ#^M+VLxw7%y!dM{vCH1+2-@yoFaSDKlsG+ z#_z_zmgyK2aDQ2|bMMw~g})eIS_Qi*acDc;1 zVrO8`*UAiuD2ed(u}aS0d{m%;NhQtPBFQqQL3(KilsrCL0XczvE}4IIX3}gT?1oX1Gs?} zn`fBiaj>|@eHWa}WpBj6!Dnpwq)>SJW*2+wmGzNjK5nyzb7qMckQ(0T)(ijQCIim)YaKNeE9I} z!N;9JK|woy)<2uQa^=dzkB^StDZ8Efe9OI^J9p;V#Rmi|I3~JNz^P48$jIkwfz-Rr zH^gH-7TWLc4ha37X&U!r+XU|ODMpDBZCXw)E_yq}*Uet%mEl|a*Rr;~tG74wZtOvk zkS_P1KYm=;o*zF=KmOd;>+$DjnPz+V_~h)H=;!9fW@u>m$Kj;^(Dkj~#T@wi-dkLP5yxtDuRZoX-l_55Y!&Ye56*tfQ>(7htI zXj_1F$1SH^#VqcLr(4ctiuTX8F4v2UjI{Z3!8zyduBnxupPAZ!KVy7;!qll(pB1HT zo>~2V@AOt~@lW>uKimKK@x#EY^wkx!`^FX)GghzL)z!)^zKYQW3iKG&oS*NE*>o+} zC;3YUOG@ivx#Rxiz)4lvGt)D?dL=+!zsZG5tY-MaAp2+iz@6 z=VwSh-j{l7OD045Rk3a{-K1w{W}dCTU;qEFiHXUUh-K;L=h^&t&|JUjjj@K7)}yoL z_n(}YsLaB`Vo?0dhmB8$!yzn8EPwxBv!zRyetCVp-?I4GgU63AKZ}?+efsexR_+t$ z&Z${h&DvS~eA0{=E4scN*s-_tb(olboKI}5Z0)Zv53fb%AH97$TJ)~t5b)TtjYdFvNm_BH>w-2QK;UhJ+9pHAyDPnbXd{36%xA3x96pF7NNf2K=R z`^1S88Fjg#p`!A2KN7o-`+fQM`~BvsuUVm=BE5WlQ@_5t3i7ngw;RbJ;o+MrK0c~{ z#ytISJOAe+!u|&3?_!>vpMPH|=j8eG`Fscav~_h=m6V#E&#&M2^ZrYw)XezkJ>TzD zySTf5{&LxW@}x7)BFoJ%i2KW%o0FH%ubcJq@^a()e>Gm--i5pG?)h@bJEr>WR-2zsCSSR7 zWkb%*O~!qq>-YWAirroI^yTvTX&)XOJe%AfbEnW+U%&r)eErY$=*Y3M=%|c1M?oQt7zqhpf_5SR*8&$jeZeCp7&(wAM z|5eSad?v}pFLy?J{hmc$)4Kf}m!2p;aIl&E<*lvSnwpvsYs1#<{TB7<)29_{*QP!` z*2^PnHRZ$!kEZ5kN#iu1&(pV_IpYH|SF4KAV z@L@|!i$Uh4CC`|r^h%o>RenmTsjYo^Z?E;oj~{dH?~~1#wfFlaZ~efis9THnELxi3juj~`E|QqX?)lDYZxz{PHfTcadxt4xj_J-Yl%S^d;L z`R(QJ?s%?`+uPCKfBg3C*_y%2HdKC23oT*qy`B4Y>9$+o$Owzi%9fePZJ)RO>hvgW zf2*`Rd29D+YioD*^rSpE&{$DfX;}3o!^_L7U}wy#oSiF5UTr^7?y$e^uZO2+=D*)3 zCMvhIw?BUV+&wc>Gj>-=W}TjzS{pNaJs-n_IdjhB*Z+-~)HyrDkXe6ye)-;Ze)(m^&(ASTnKDH{Sordvn4FxPVgt*;DSj&Ri&VuoL^?9 z=E3@d2hYql=WmGr`zl=bl(vqJih@Ez`n<}vOP7LveR;X~@`-bo^y@xyzbUh3XiJ#^l4C!KG)oA;c*{s(hf@#Xh7 zwr<@jA}V@uWw83UH#aZ8`nPiJ#zpDp=dFp^Ica6^@=aCsU$Z7nnzW_<(}5kepB$GR zO$BW%+7yJg=6Q7FK1nzSRcsR`sn?8ev`9JbL{Kww%;k@X1IFw z>W^Q)%=BNse(haaUs^i*sbt&1*X#G6J2TUG_Wq6&H$Q&=emraIqoSQZ9(C*A*pSE^ z9$#z9U}|crd+Siv)}YYPt7(;LlRNY7?)vy*asQ_ukNYRjp1u0=&vTn~{oVZ)ZxNFy}>G5@vlTRLLsApt8w^O&z z+t*js%xv0=7a5_SA~!_nu&}Z+`Wh?#|MT45xb9Ddle4q`?)oCDxw?Aw1y+}r`=>uW zHPz8Q8{_gJVz181~UR+Sj%F2q^l)~ATIA`PECwIVsxO2<=Ilp(@ z4U3=DZH-94cEPpR>#tq~*NptaIuU;Aslm21|7Jlz&tS7-P6`FV8%g9-8fe_cOo zp8WCi=j_4@H!fVb@FzPx`&h5^^+)eNK0f~WYIr=TCRw@Y{6<|a?s{&2OVh78zgo|x zCEwVPc;xtT^X+FRsd~>aOm5TqrSs;-#%5M-F@uy70?*FQZl6B=y5{fYn{&G#Pt%KC z#eAvEh^JZAd)kJan?}q0=bxKlm>hN2e&*R{X6f!`CMF-I@Bh;ZDt7Ds{wjQMfHAJ- zqify&-}lYsBTgQb+-_a^>d2gW%i@Z+Tdx=FzS|>d+_q)QmS85h{A+oNB5ubrwcYo50~^nTgyxuEO&l~}{1J<1IDGiq(TbnCn;nZvX!} zxrzsjlO|6NeVD7Er}u1T`n-q7r1Nc_PMOxx!NJAFH7mXT>GS8tMNdwco&No7c78{H zzq*prqRi#*o-W;0t-|gPs-Y@U(@2~W+todQ^ z@Zm$Nx4W5-zrFVB687Ylw|3v<%a?C%O69iyagd*ZgOgKHMWw!_sfmeoYEj_J+np!M zpPX(v{WR&?n#i*U7hQhIl5k@~;*w>{f&v2_b8~fHUtgboq(d-wntA@cJD+Z2&a-bH6zx2>Q+L5jk^OOdtF}rm@$?oI6SVFhOgv<)m{3KiO=k({=?{}|1 z`ndn!*Y!t^95JZu#mW8u zaoj%2#xC=cO4`|3rGB}LzUA##=kB|$uCC7Be)ym>zwMPrAFJQ(Y-eO>|yWiW{{dmB9ujaGwp+kpu{C>CFwE7J59obljkX*R=-;x7?@YS*k1vCL1Ej7-ssZJd5~y4>Y;il1ML`u3-%1x}mj z>M>mV_E^ZwxPnJb(K5Y4%YusWn`a(heH_W#sUdTYgGF5Ck&SS*I2`=4zgN zx^c_YC)YyfUj4Lj8$+G_gK8e$?!6CQ2R+XCaqi0Q+Xe=+eWo9nC9#87IPLP(-Dj^( zoho>5u{G!7Hozdzf{U=wiwtM|_^&Gw+?@vD*i|!ZKou9kY z{pZg^hI4x zb0HxA*4*uu-#$zqkE*`{uv>@&UKA>p2wF!zL8-@2>l9CK}r=D3%hi^-X-v zuQhEK7IsGX`gPr_?V9VpTj09sf~RIFQwqOa-M`UVecBE=#Ti>}e|hn($mFf;opV)t zYM3-`eAhH}{jFiUXWoGq`y$>3zKxH39@ba$Rj%(u;*V(meM`19uKrNVmv^H*KZ(n3 zdcFdmCf9xarfD{Y4eWmy0aZU#L;6`;_(Oj=z&We&0NAS&ew; zeH*v3)N-do%>J*~^Iq}WxF5Th^@j6g#mdQ`NID@pVQHLrVb2Rd1R|wbs^}TX+O3{L2ei`m}%}&Rj zd9JG{K9zue1JhQL9-r znKQq~s{6x9@%>BkTG&`M>X&@^@GU5~Xu`2wMhsT`bKPT~21;dn&rT1Tma=w{O0ns> zV^)6-?-siGH>;-q?5>>M{Z9iX?VI{Q@o>h(?~;{MmgOHkd35H=%qw}y_5PfW&C4H@ zn@P{kxA`}b@khn{;P;0@!~4pg-}da`KTseNH1{WGYqa>IzkBBks>-~H3e*7!_1 zbayGeK^$+|f6=i#M(l$&Y^VlKWfV!QE+^u1EiN^jhqjD{0YR=h>>s z_rAOS>T#(}EA_G!9z=xOKVJ6Iz9o73Yn$hF3Ez4TWbv~t`nc6RVE3EgEbY52?h&^F z_i?^|@w($O{}Uw;n9j;NwdkU)T>_IW^WhamR_9)RHSJ^j_uIbvgqCJr-I?>p+oRf> z%Y)3#?Wc*z-79lEw|LE&tOfs1)Tzujxq2*i+9~~ddz%9jBsb5LzGfnOF>=GS-_xvi zmY@6n!ryYW`MQLI|7^PE#I?A6dHno(|APA`-#9qekni{4#?(sy3#OEYscz&t+gxVDNOQcMSP5qwFoK z&ea1OfBIfq`ZeXs+`}8@#k7X*zVY*qc)?%)mzVFmecWBIWSk>+c$rIbk!<4s`0&T3 zW^=l>?q0Dfr{O?e$<9)>!a(2M)#3NdWqy?Kwzhj^9%0W;Nf%mneo=9H{@Xd{lB-v) zx4Csi-P`EItq)2JvB&;0-9KRAWfWdNf771Zk^YhA(*7LYHEHWV*GX=7%YR8u)3g7R zyjSD?_E{G;to~riyw0bKU+jVW?U|>P)pIPr{?@qllQZ?G>ki$8KU8Dfea`RuG2?*7 z&k4-8_jb%LNWR?TvAF4yuYaKAXO7OfZ!P-w9D3L#$6~oXFf6F&bn4OVpU)oo{-)FN zyXm+3+}n+eGXH9n)%Jf>@!KJH`r^?i^0)kJeJ%A4_vt2DeblV|Xx13Gw`a{(%a-_3 z>Bcnm(9Hktt_N6jT34@JweC=Emx94l_ajHz=H1OnINa&T5O>_l<@6{2sBMb9b4=x( zPca`k&i26OlM#DS_2tqZ8GBAD)qge8@tk-iEqD38ef4}b)q<88e2R?6_X(NGElN4B zKIK{Za0<{`hg9dklZf1Hl@eee4>ewdvu44*#fvc!=M9IrLm=RbS!uBYE4H8YKK z^I@e82@@tycCN4e!%-D=Cne`+(|%dLr|QAa4UXLR%v(9xg8PBh=U>*`mm@?>TK~_j z)xCJ`@Soa?;yM-=<{q!Uoq6W|iN~k;FVDy^PIj+oZY<6b4*zpg&?mzxq@c38ox!z`yZ>rAEU&{Y> z>CM?6f46zTF6KXfPv?d#@p+g!}y3pG~Ze_n&{u&_AH?Jwc6m{jQnQ5AWG< zYfX&#^;6v3!JM;g=FUF6cf-$F27=D>Crr&bz5X!A$Im|+|F+(E=BI99DVQE>do$a7 z!rn6H&yNk8*)LRo^OgOa*dxVdUmxw{I{mf8HGKx*bHURyZ4Nx-P5iR^uj3)6tP|C* z<=_0bn!6&p`f=#){x9M7%XghOVLRh#ApZRC34Mueohg?dC2M3i%+$YI*p@9ZiAb4^=~c`70S( z)PKIc;F88dowvNFbi;-1x9P|6?$+?Bo-Ol!{^ToPbCwD3%Cy+jbL(FD#nc3yDfNEW z+RkfqzxH$alCz6$y;s5bB>&U{{pu6-nrth+3TyQb)@K4 z?)FCy%w72YO5Sx^Yq2R#t@yoH)1vf8^=;n461^~*^{+DqE@ZA z^Cy|4myN(pU8`Al89Jmh^Gim!_qBW?%8tV`cM;3H1-2Wv{=v$o<2SFP=T7 zsUHrt=YM)|>Tb$B3(Yf64ll5)_58-R$7#l$_1yb*w%>T(vP${)jaRp4S2hcK@^CD2 zKVSGqVdFg0-=AkaHYlzrU+2l8bmhK${bup9*`o53IpgE)opSd5n8h&Jo>MXI$<)v} zzIoLr^NZJRY-PDz{mmzdt)5@O!gAt+CoVP3%^hzhU;4%!+nQqgeZNlikL~yW{XSd$ zWd6}7w#V=3TNbR~w#|ES_1IVK+Rhmk6E`Su&tUF+bDOi=(XKSF`B?33jW2Re{jYxs zNr?66n#tAIPyQD8eCOVfr|+Mfm{uP=Y3Hn8r(&2E{}!5N)AwnP?v6R7Gxqw`*Jn0- znxh*c`i5y%T7=lL`pRGCA71%YYze#e=)ZRJ@tSW|*SS^j!dIy``@{@bg(W7p1Wt8d%y=bt z`5KEk8}@|@3P^NquV*r=U!4}z1!|basLTq~lue4N;a_&Ne0g<(MERQkGa~jg$i25` zY_NY@A9ud%kMmnSV{ur_~U%-e*CQYZC4hr-FwxKXYsT=HlnE1ZdS+j-bG&{fr~fdA3#`QMfmM<|%O zYp+mZG)^#@c|K`*qSB4?ZmFrV$5Qv5l@+%xQCK=Na!Pt#bepb9OT&#BVw=^C_eb?j ze=oT%Jd;m3?_AEKdS$;GRWUPV{ycxSO=|Wr=j@w*eGMmWelB=1Y)8hX1k1$P20wp3 zyn3VKw808}t%DtJnq$jFcP8BS4*loXw`5<{q5Hnq=ljTgjh~XTZkbNCvEkn3#U;OY zr|Z1_@$&KV*TMHbUKc9+AusY)=ZK_L>k|d;IX|L(at(XqE=JV)o?ZX3o~!5J>U9$B z2XDR&)=@uqU|Zrxw(X}+zKqX(pmpED@mJNV)7}L;V`3dlcSVr*hFE%W2u%KSfPkKAPH zv)wm;`=+vOtJm~K&iqq)G)Re=iBV(KI#B93X^&2|eU?;v zbJHp>uGLzV35P`7R8+TXT+iWGy|;Q!ZELB-!sYW8ElJem<7n)=lR1=I+I-rScZ<^xfLO%iy;6y>~~K zfAdMVJvwuBhr9v%=Iy-yH>``;lRG6f|KQaK_uR~5nWwGlu79|^J((xb_IKdCS>7jR z*hTp5<~H)X{zLuG{fuz?JgrSruUmYdH2)WCUrV&7%oSew^)+1A|8OtAS+dP~pYfY; zpBc4IA3pN4{r9M^X-+Pf{(s`6J2^^Cll}e+c`Mjm`x}xbucEUh-+JGJ8Gfsrzkp zzByy6r(i`4UQg#i?@AT0u+{AQsOfgf3C883)BAt z3U6}d9+|VQQJ)rl{lS6r-yhA_tFKhtw)5JQ)Re71tdn0B%_;pV{&Mon4}GuQ`y=lk zF8`jsX!T5N zHQwzhN-F*l@~His(v`Yb7ji#wA3r|RyEeA?@uO8*2Qsa1NiUp2$v;@|a$tm_4T?hJkY z&Fq@Oo;j@+v-~~F9~NEteD|#?sBx+!KE287Wx)3J|7UzTC3H#KyCUKAq_X}0-s;ZY zQT)Z?*Rf-Pk24Z3FZ6lFCwp%0;^QC7Ua7^!T`w`OkF}SV|7VuXSC)NwW$Wkb>lHP1 z=FHvc{!&`{`j$V_eATDEJN)3_Vu?!=jtS4#dH&eBGG&_Bw!k0<-i z`Qtas+Ejj+v*thZa8tc`W9F_ot~Zy8giYO)T+hZn*JN&)H?Mow>65EhWj{BS+UxmJ z#J%>I+C9q{uSC~+Id8K(^}SnVE~Thj9dJo>70qK<+{Jr8=h|E`^B~0;wRHMUR;@cueGswvR9or6LJ1_ z`!>Ya&3lwywKQy~O>#<{f>X`?O6+fd^ zo;$1lb!oU>QUvF+j)z}%Y0bIhZ@+xOs=XIGIp?ptyJ7m0qJmPft*Ne4)0A^jB)0wCLZuHJQ8H?(c!O*ZUVtaPlf! zzhv1mCikCdpNx$*9^*Zb#WcB|CoH^PEmXDC!S-w9{J^+u#>16m`EOGXzd5sX+a4D8 zpMi7i7FNvOwDOGhk*7LKpB)enxw2F5flC(i_QgEzxtzSB>>BsKi@Ay#vK&9Y^(S-3 zNxNA$1O0Qh2xpdzH@2+#EUqnE8d1Be+mG>_#Ts4O; zt$yvl2Xo^0Yrognzw?L8a;krr&auaU+?%v1$CZ+D#^(R(Ly6o4|l10;Z?wGoC?@K93r?@&r(-xrz>z1$i!Xf|u zhMVJF;mQ4Tm;AVAV^hj;GA+Z)`0kT;|7Wr9U&$IR;ruJ+xPNfdEWSUvcXxb$rS)%P z8SDT2YFV-W8prDU_Dz#Nwq@gN19!u1?i%$swoI7+w&TIA_jgb9*LHj8Z@gT*V86TH z0-O7}>r7p%XQjO>ld|seOLpJ*b^iK*xwFqtG=1&4FYA%(uadMsZucBMy{q5&fAZay zGcRxM6HrUC&@}G4`T1&e&Yx3FYo9wDO5(q~qV|gAe!E@YOZaks{MM}RpZ+{&p-uYf zqrVlF891^15qN&i|3u_pRy}Wtf1Je~?}hGO;jjHAcr#hu^1hAZE=z{_D?E>U-xd@Q z-tPEeX7~2*swySStkUzA=_Cjk9!?XOTGX)k_dLbga)!FO>y)iNW^2jz7TmKBj4-JF z9Z>&(mG6yt;y2D?>MO(r4=)#zs!y;?mjC#&#(3h-^MMl&vYw#@B8fSd-9><*@8lsAaSl$T9wtO)&Bi$mJbdH^}Mq2b@;jH4^sa3>MbU( zXgKif>3bR5zB7-M{_T2{J#T-ipSAtOX5Z7|9};i)+FZ4NvB=-iEUWzE3+vyKcGYa= zH~f45-dP&`B_E=xOYjmgbO#OFmsbhDK)qa#UzkV@tL*MW41AjNWUA|oN zGq-qoamv}MZ}p#8rYNrH({STGhSDHiMNnq>?FN@zSnvR zuYXQoIqO6Audm;K`n?IaPO4t1Y3bql?3LMi`^s%q@&9|+_Ir1A&x);ovchn7UhVGJ zucm^+Cw#$a!|I)rUS7%Hx!|AGm#n0mZ)L0u{rod7y!xy>c~YhN)|YuF%KPN5*GT<1 zx7f1BrmVhr&SS-=AD`Oan|Lj$vSE9$`9*WHb+Pl07F?S!b8F}KBBhOD;GB0 zC_5WsJ$a{d`{(=rBag^Wt2wr0-d=`?ZTb4Fp;K)tAD`JA_3yE4W{A1ThX+SA-&Vap zcBl7GUZvSyH{a*gb>j6anPQi&@sBm*>FgU9 zzG}HuTBsL_U?t1Enajur7;z3Iud$Ec3k^Z$?HP1o}doW6c)#{Yk+ac1|QJrDZ-lk4fsc8Qwr zd!7aF)!!Yw|LLC8we=tO_xUs$(cB-Y4r^F;KKX01) zRQ{f;s1_(CD&5bV6C^gZCMp41fbw%-WlR8mr!E-^V#qHUEU z*mWSn#&daH_w+Mjj4SG=uX1p4d2%XoO5U@z*RM}_pZ9ZzWetn{j;+@2Vzmc;eabj? z*Jdu`!ex`=-ah(pUH|jJZ&E#%Me{aYEPr-4W^RV%{;4Ih4`2V3-*ETt^x5xb9r`I& z-e>B1cA~FN>_^`A({q2csTx;2QfWK#YhIB0Oz(du7v24;ZkxCC_t$cxwe4H$pC0aA z`X=rd=kCRMPo^C_IK%Jvz1}D5DyN^9I%b$(l&%y0=Gu#-zuooebw_mK=82ZF*880= zcoTU}_Wbms)9>>iwRv1l-E(FBtz8yS&e)-QUoSWy18uNzKhhBZWV)cSu2N~{&yp1`wYD>|hb-QLx z3{=~*rtD3bFx!Ky6${s0Ja9Vg_;sckH5=m;7d8g&oUA(k-I3}iynhT%wm-_>mvr*@ zY0h15qjuf&i@D@<=*G@7(rI%(+$z}@7w5MA$TY>Jfwdi`^Yv28Bbgm1uH9e$cj48V zpT3;uL~@rsuRk2SWBPOPDaJpaE5H0K%d=TWF_1_0g@4ohmt4P7)S85>jQ1$cQJDK% z737D-U_WrB@W~!IYcJ#b#FPD(aNcjt!*lF@{GQe5)@A&?XoW?`i)G=0=HJ-w*oqx+ zJ@&l*`Qp8KyL@&wOYe&H^qk;$a^Bk~M|)E49jN%zaG|hX_{7ZL- zdX9zvj{h&3G;IbH8{E$95A z6=F5bk6##<87-c~92HY>J9bB(`8`XQ_44OZe{2lC(|am+&;Kf`*t!bkYj=#CgdSzg zv&rmS6g;Q3_UF+Zze=+Hnxr0AEPMBT(ep1qro}JHDdd@LH+?~XHoKi+)Y|{C@#~jt zdA_x$xc;a(uk4+B=d?ccPrD!?;2N`HZGEzyPhQBTZ*!mSnLNwC%u}~_TfwpOJLkps z@#n6af9%lTJwJZ`|M0XiYK`H^Gy5KErImg^%Cf_IbH(4OQ)@P@?up74_*rOpnkv74!1;gu&W}6)S~SG}O<;d^Leb{?n-;#A zkuO*2KB~`fl-+j1Lg|mS+J^Gyd5`|pU;VK6iICmh2#?Ig=AO#OKAe_cI^jX>pPyN7 zZqGmbyA`zS{}a7=ueNso|23a!-~aWQJ(jzsS<9bJx)f~x;M$Gk+tnA%JCFXp8DIbGkiJpl&hNa-f8@&- zeb`m`=jo~g%e*B_Qa(I6e_i13hyEX)NvGGYtU22L=aB$-CwLwC0c4|EY#8to&b&cX4@A zv_u%R6k*?FpC9gO0uR%f_HcIjsu(KHF`no8N-yE|tGicNTm;31yVh@aEDbbGtF|bd z`*Sp+J-U^7E9_5vI(qu%-00Sa;!Yd#l}q*VYy5Q1uSmGw7CU9O(@XpMJch(& zS!MM*J5sH=3)-e7*C9^-te$M(Sdwpmg!xix=oHSa#j z<*~5*%E|bJHJqGZ^B;FloqZ{PUs7|jK>hWej?74Q*@K}cj(v|$KFBWr>0WmJhnxGd ztkNDW)EA81{rU0lG{gTlZ&$vXmauK_-p(t>^6kstP4l@kdD+MH%hQX~pF92gd&sKH zjLFUNf8|HveGBya?JBMH?F|_2_s;+P+rR5}4l~2+2`hDed}T;#3aWT>wEE`*{>3kE zGDJs;nCaBm?b)LJdqW*Qy@{^)x>Nphy}i_t`i2)4YW+MZ?~gT$$oxLh z%f9)>!|6vlS}x~4WxKh$EWqkvnwaPhzXJ>myt_SJ97Fb$$midg?r<%7{>QRq(gno{ zACLdhJbP|V{NEYo^JbiyaVz)FyZP3dHnU%qO#e7v-0mTFIamLmk9=|e|9<^bP{Gpa z94rx2K0);Noa12&+tymwpYoKv!dc%s1yoJzo?Rg#D7cepXSeyMW1FS>|E8*y+>oiW zd3GdtmhKV${f&t~>z{8v<51;0=irPLn}7bjeJ;^}SiF;z?G^3VTPkr{{>GWM!+F1MeExJ|uYh&O@BA|l+`Yd~EIlkCbh|1(Ut6(E|BRYBqvOApk`v}p&0WpAErYI4Stj}Q z<{P_!`eO}=3rjrs(mJ2Fy?(@L!kBn>N9rB6ciyL$J(@LP*{UyH$*-nVDD}s-Ejapj z)0u-lQu4>8<=>~BKcn$0>QuzujZ+$fcMIn+1*fDhGl@69I)CEboHbf25Bf4>W`DnI z@kr{OtaP)!Lxo51&*Z9!8&u|Qb!FaZc}bx--RxOiaK_tuErDr%wL2;o$m%Otq;gy@ z_kR3&Zt5BDoP?jdxY+KSbZ76nZ6J84zs{!P>;9XEcU{_dhQs#qwwi`iNx?I}E*rGD z&1_IeV%T7qdVp)*{TaT__f=}L`X*GVbOrwX6X2(*q*U}XC;&vMW)&LC8vnBs&)PL} zX2XSmJ^lYPuN2msq%xrtoT%hTsKe)& zim=+7yH%5Sl$q|{>@J*q-@mFq;E`U+>FKjI)@t}q}X7*L_`o`S*uU=m+RGe{>-Tr?5eQP5nhRf5W zPW3*Xxt>*j{k7|+IT7(~`*u%S|E)(=)nx8e)suJ3Zd@zrs{JW=ufE#WyG$%7;O(KO zWx|G6S=@9hTm2rjwI|zFmOiR7T>3dJEKl$GvTWXM?}`j6%1Tz>o_O;*dvtN|tq#8W z&&w9=5i3tNbwADQ(X-v``dmw^Nhi>|&1@lseh0 z`?CIr&RQmYeQp`+n>P&ZtlcYT7d{LH+O2V{&z~7M#D?u{ZyN|wG3}qZYVC^#MQhZ z`C+GHX{qiuhHCBjzL+QP?|J)9|5&nd>vlt@7xr(>s!ZoUd$la%w0q54iIZzC7T&OW zu&aI9g}NT;vicVN|Mk`1rDQ@Yj~D)_F5A4*F;8s*i&KZ9Vt9vxic^z9hq6|dY~it$ zp|2v2@g>g$wD%y7|{{TB@I~JZD*5_xykTHxK1`4_L%>JN9e5eRjD1DSO2HaPMc$;AnX6=|e zX-`btr;W)8iIHLv_6DciIO@HN7FFivTb4%h?R(Sl^xVwnzh5LglKS+B!|JcngX-A^ z=Zrtu9+&yx@BKLHczaD*jlg{&^}u2=1J9@6D#HZaC7f<}m_bLJS#L6T{H|L|j^1pL zj!!!?%iD>^;`H8#8yjxE@!{b-<|n=Ose0yqt!@r^;r`=?40lN$*6*u#)jn+TBsH!&$>oz;9b4C+ws50qQmZ4ckkp0@0a%} zmhtiTKUAKr*}ltn(lj60zmFdKmy~GiUX}e~ro3MVDPb3AC??EoU)h8avy!#o@lHlP%kBQ=;+VNX$(o5!#~b`(`{Y9YxV5R+4GLA`YG5V zk+92l$A*W+(^jTzGb`Mr-=lib>`jZHX~m?ju%_kpKC%dguIa}rzc6(>lS(!BV8;tyU)5WVN@b)+;DZjZgFDtP@Ky6NCse+RB z)Shy$o7DwOUo}sr{FwWEUBxWTwI(}^K6Aa{YhIbSH{=RW($W4kYcscP3$zwF^XapP zXzoKr7oI7Fn{FxiBRUEC?^$aN}e_fKukhe-U%rZ~i%EfAiNx_C0g=Pc-MV zklg00W@#!UpD$d`ey?)!_pYuRf5PN;zL#6}R!24b+Y6H*=B$-ceoCgN{=KbhUw%eu z*H?l0V%IO+yL)Qo-`$p0bB=@>|6%0+`u~>C!+Tn6?)DE?S-G{wb7cnm9q(eETCH)X zXhPdXL+Mwqmn>d9d7onU!^S)-E2|f!v+Z9?niLipG@kSN7Q%0I;b#4TXXg7KO|dky z+43SgXW5>W?aO9yeKHrhY@yx!T8X#kgv&J5l7JskhVHX|WvtP7I`#YO&a-}M_xQf8 z;7GFd`!>HIG17TT{U^)Yw{j}l-K94&|K%vzTC`;kce*RL?mh1sgS~TQv~!p4+&g)a z|Mt(X9xCMRth-ei9>QcHba{u}iu$%k3sdqse*(!tnTkYAKoka zoMw_qNjaKqy`$a!eZixg*UzqmAGZjwFJkFkz%p%l`KN>GXI0L2K8-ngAk8^0g56hxhq|=TGwT+rfC_vESZ ztY0~O-}^bIx4mFl*PHo#Ztw3K;dgz#lWncPTff}swl2|l^JEU)pOa+oS*)A6s0h@L z_WsWa8dKB@E?bs%M&0g+c-!3>|M+?qa%XPYDrlK6dHo2hbGUA(tYXUDJq?;=lkd%| zTf=!$Cw}JHGoFnPUM;|(C9=cRd$) z!tPAzE8Np@-TZI!+|opyU0?UFeHh1P6`h&+{%|tmm%z9v?}(^ZGs=p)AMPuQin5mc zz*J$eb#ud>`aeu%;nf+MdMft&8~XRZlfQoLY4_RuFf;z=6*oVUG|Z@uz1$v?k&+ zVh&!`R^GtucEKm?zG>&A>E;E;Z(Xn4Y1pY=FWSERd@JXTMZ!Dl4R_8zWS{fsVXwQz z#p2HXEmw~>Hf`VWynJ>=+HZmDwk6izV_w`^`pxss29>s(*Ov*T|1R59{JFNfL;v=< z+U%mrSDP8$?KPLIV%yNL;LOrB@uo9h9ddeC|D|+Z)pnuu{pl(9r2d_Wx0t)|UxC=U zZ}#7R&G}m@V)NhpU0k?_<7Jb2xyl^FVkWnB!kydipGyABR{8s=&AYlk&f9JpNBn=F zqbA)T=#h4gXV3iH#Iy4I7hL)KxA@1p_OK0SzVYhYO+EhieBR^5o9ceK^KY+>GU|3_ z|9I9z;oiE{yE-~fEIqeD=kz55(7KY29{$Y_6|(1NBwby-edCq)%eUss?&hj|aJpXP z)3v37RnwMi$}U&je@EK?-{oTWL&xPW7uc@0g z{cKb6le}Ez?8rxv&Zj;;d71hA!nE2qTwc$QRoGtZ=;-((^P*1=JWiRu;g?p$%htIy zbGJ-kfA-@a%l8XQ7QLvQcayPv-8|< zMn@jgJ&i@bdldpLyvFEgF)Z499`-;xn^4&A3ukU@G{^94Z%G!^WmFwzuzS}Y9 zonXwS^6&ZkuKqUNv(DapPu$@Lu|HE6ZJWpc>^gr{UD<_uYE@!h+ZLaYu2p+gf8Is& zo_tGsQ=$Cn>-U~qS3Xm_-|qYU#EdeNI+dNz{>^yu_q&dZKeu>rk9F&lpEHB@m``|9 zUzGVlE!Li!nfbo*QS^e|4WBjI1AK&Rl@7=TM+qAVZ^A%s} zp7{Fs>+#omQ|50jYW+8TYH{_wqwB9He|vtf{$li(xBo3~ohwcAGb~cQ^40Rn>yGQz z$9$)4SUNj7`zrT;?%)$&@BYjS`KpxtYWn<|^%tB~V%484NNf@Q_I1~xq;AVR@m6!g zbu-p=>w3N^R6QNP?R~+bCG$*7C+%6c<++IcH=%W@yW`(Qt=+hZt?k%>l*Z_Pzi$71 z%lkY+yCq>`{hOyNxo0nwE>g%=oEp$PT|$+G>88hpgx7{oElxUUsA|pb zv0Unv7qw;SPS-=GCeu!&9xpx6<1;1XAs~R6oP`T+jQA^2pSI@Mlyroyw)^5G$)^E!=Yw2~py^C z@AsdGs@Np9-sh&n&l6JNu5rOE&6ATXl@l*MbvSl3$idP5^vrz4=NU6M&-uysr?E0; z@*5_{`m@_M{>i$$c5Tsu?khEmRHjWSsq%bzW{DiOu47e^koF?Ri17Trul|~YQu03CRVnjBXKH@AIQh4xW$2{R2x-grB~h!l)N3>s#m#Jsyb>^T zVd>-Lrm3>~_uekr)gW;Hvh1p_hYh}#?+;56=xn`t+ivOl2vhwdoy%TLzU_Q1t^Ihg zTVYy3_TnZ|^7U@L@vrv3b<*$ZX8q-#++P*s zCdIfUW9H_@&2Lt|3AH|Y-RxA=nwS$(c8Uv^Xl->+vRnMkF#F`r>q5uRahK&RDw zzx@0DwL`W$f0x>@>SQ<8UP|Afbm!R-m9u`;O`A;~{<%Bp9e=h|AoIOH4W2LFo&WU8 z?QV8;mdu(pee;5%>~H@)pKao!SYEK;po7&+DK?#-nrdPG62)N_9)C=(X*L!(Pv9^$ zVv{=)WE(U4?CXPenlE2$WtC7{X4tO&u&(|~@1x6i*Z1)iWSn8W(w7(c&T-1MmtL)N z_No~ zj|}ecNH4SE&T}~Ca(UXt>_1aHchCG>(hwKP{Zz=S`Tqw-QI)`^pd4NS=>WD#*J2pF zrxqmi*Y8sgJL=+cEX%KWAxGH`iEUxUxf72#7^qF_+pcxP_PyD+53vs`W+i=NsM##g zZFFe|!*Pcbcc%)(uj`q)dB$eeo9ds1%_4SXy$#?_ORL@yz%65NdqP``($5wi+pA5x zvKYT8Ki>V}@9szkUjA~`Z(0mCwp`QGuZCXg6XtN=keX8elV@ADUkBS~K7+^m5(K-m zwqChp*2rw5Fn8advX8gVi-u26Zk$ufa)eu2V%D?9tSgI|i`{j^Vs9s9{0&s!#dxyg z$w}umj}{AhWwqVZaSqw_^H^$oENhP>|I2%w)sLoYtG-@du!SKm=aX;mi)9xS(#->A z)&(E3n!emTxna3MLH*`jjjru+D-=_nm)d=q_{ib-&Xm?Xk+bu-e@>5S(NKS|fQ<>+jLXegBuIyO*&8;dF|s>FO!9$jI&ox@@vfGJ2+c-s88ICv79NY~E3z|D{@S;CzCq}HaW9Sc z3ruGnd~!j8;qKQr2j%X*kTFq^cGs@I&D_pn_Q3U>!qOR!XZKXrKNZ->_S&&RSjP17 z?#=hxo8Gg}{pak7UGti)|DUwDGg*vNnSa+Yd6vh0n?8m1 zt@vY?n?2cs)4M)q?xrzLv!UE0r}@H@-OUl$!KRrenEFv(5{Fqe}&!iuXHPh9WgDnl?N&`jeaPxbJ7&-)qe_A2ulK*1x=Hw?Rd1!IQ!= zhvz#R)+Ni>?lijU^>4$PWz%oA>M%8%>Xn|I)$nQAX7$bpb zS8KRw$aBP(xjN^p-qrQ(Vb`?PQ4dOa?*CkxT7AD@cj9_({;G752j*(WCM$9`%;pFv zy6>(XcPn+#|4hr6@5?r6dTjn!QB$4ws6Ju2xb}_Y*XD6MA{dn##qZQBwEaK9U4QD` zuhIt|vC3|e>kk+3zqr?0v^r6>C_~GkA?u8~Cdbyeh^=oeS$}xu&N=ZvD3|5MRoQJH zDr7TfO}Nce5!=r3wDj@c>X2%?gJSC$zaRhJe%}4W<1Nn9%s3xUbnCgTYX3&_ly}FU zccxR$Pb$2h?WVA_FxD~5f0_JmF4IgGr^7z=Q73mfG^|;@&E0Fs?hEf`zuEJ>gkg)4 z{#OYG=^M&b>$z%P^&5sY=Ci(7$K~>5a=7!E9|`Mhb1S|cVPB=bzMHLQ=PbVM&jr^X z(t4C2=~CLXbtdC&H=Tn`X=+SMTbezl>K=N&d6vFQ+U0Ay3mB536gE?Bb?y4lXKr_S{3bK4x+)lZ?d2rH+b{N}c;EP}x@vB&RAO-T711q|thfUB zB+fa6=>Jt&zVc_;$vhdwa}hI*7Tey_JfWr_X`0CIBgx)Vl5zjQoPSCzE2amkE2=GK znOFJi;=3=G{IlvUZif5TU%d8g(Un=nLQ!v)I-cCa(0psLnD}aUhD3*)IqKK+n9qn! z<}X|*{?aaLj-2x<^JT2WI9Mw|c&m-Ce)>M&{74s81=e13L(v;Q2mS}xM)~D<6(R;h!JT%|DUGw(gM4{9^7Jny6x8yf0+tY97y4fO?$NdIa5J~Gs~^`ew}Xa zT%M5R&)P{1RRvQsI=5!GCG5UvxUIf^dAG}!e}`Dko1?`1E7NpPJjH z*O?yk2EGaGwrW;?RNkNd#rE8T`U`E7|Ji;mK4ALrc*uUfg8%fmK zX5;joy}#&-$#Z9^55^ZftgB?gw?DToS?n;qOM`buN$o$YL%dhw+&CCEi!4#NslPSr zlYuLXzX3Dz-}#049E$_gMdPGc^$yMxPg))@-@rp<&ZV0^C7KzGY;OgcF8*frtXIxW zv0m^kziHj!anz7Ef`Nx+l9HeUyH_=`_>%o>@EJ*c48Q(D}aM(&05p zSw}7(F$}$|8GoXBP0_taYpzPIDfa(&$RjX5@|o3H!zCL#R6PV1E@;%s+AwiJsQOW- zY2SkF{smswpXjX^F4`l*y~4Tq&98(1ACzwo%gnk|@7=Ye;X?Q0njYrAyB&7Fw77q~ z@3I|Z)A<8a?|r=J9^YyTcxzo3HKO%e{E}_P+7le{~G%YDFDIOHUqQV9;~V z42dX-@b$4u&d=R^TA-du#n8;y!py)lRoB4Oz*5)5$RJhMGCA2)*EBgT$;8aqAkie* zY;vCP3LXPPV4KtrtZq{+IURgi2{oiqWo-}Zwz&+R5l-J~66T2p3Gf&6Ta^~#( zef2Y6y~+~Pk2~{r`~5n{_txs_%g^3_{`~psLf2c)9|D@1+gHh*J5bB_d(k(MPn&mh z1a6%l_}Dd%JF{MGGUs7~5J4rSOYi>G{VfS~%6|1q?}c%Qk5A95cU;RB1lgR*+B#{{ zq(h&co}Ot{s+E0hjiRFB!k=zdl9G}x?(UCYzrOvdte%mPF(fQ((!6d{N_|RYO9@3J-%Y@^5;*VJXs-oMQqWwfas1}PHz>mxVN^h z&~?!hwpt!)llSh<&Xm;Dj~ATzHx67u9lWo#oMjdPnHH1p=j9lV^++Dx zl6jfo+)7H9vd1?bxN8xBPFF-^i0%w_KM$cw`=O?s2CYd+FAU3(u^4^x~6q|X=}Oe zWA^g)u6)=kzT@Sx**`AN|K~DYFSg?2QE|o-r%xweT;%%aO}hQ#hwbudN4rE*Qc_Ip zw{O}s>HGcq{YR74tH0kZkK9|eRqLnB(q+pwRejBptNGvvO4F-Wt%}%FQD6AE@$|#P z?LYs%uRnihXYow?`nv87s`~otEm^D=E?Ls@;X}c^>UTSz)u(e!dHUzpqq*hx6t%Rv zmd~r|dh#SCuKw@WXU})W=zV*8`}m`y-78nG&b}!2`T6;F8KU%7H+;^8*l zRWFJ`(Up~zRq^NJ@t-gK>rdUQrB`Ze7~VO{wW~ zwd3l3rtT_xdn(x9_UHn~=2_3>cJBCGmY1iue%~*x^82;s{x%<3N=r*?KAluw^@4BC z_WEdP@APc@%=?wQ*KWLW%|_|1eg5{Vb-7d3L5#5bdD~};$Jb0;8NB?{m&^Xf85b1d zs$QywZi*@40>uoUoQ=ozb+Mj)e#g=_7v3$sK5_PJZ(mIK_sg+!xVfWH zd9s@Cq2tHf-`(9UEG~Zh+uPfX%dS@I@A<%_s;a7cN?S)qMM;Ti_StKH{I!4Vi;Xrh zF_|!J+A-7XG0oGbi%(YbRWdf7ylImWLtO3G(0i57Wu>I0qo-`oyKB|PBk2?qBU83} z?)*RXPt?D>zV0tt%XjJW<(=PdWq-de(C~Iy#=2ZO-2i|L@au-Ba2c z8VBy*pAV`qCQTCh_2uQ_%O}oVJYWB>ScZ?Cp)IlC%Zos_Ua8V++bZ5{JbvQz>Bsu@ zKTk`ZHsxt9zh66j_q$!*Q)~ES_}J@z9F{kjJ$v8rbt_jc+^}JS-(0JW>F4K#efQ5j zD{5Q)E#>K{sXjA}>RYd_4xc<@#)`j_*`K`)<~Pz6<6gRS>5jYao_(A4ZT9xtQr@?> z6oY`|Xs+OIV^<#JZAExQ2k3KxyesfEva5Ee4 zB_)oXFTR{~d18GaZS%wD&)H4ZHqEiGx7&WFh?^laH1x-hA13*)A3v^l4h;>R{Zz8; z;Oh1JPJxPO`;HSkKYspvIBoO8qMbkfd_I43Ln8C_m||Xrt5>h;-a3@FIWRKvW?H4% z^MfzLAk`R7he)vkOp(f!Ah$^Ihusx$7rySv-G z`un@57Zy5$Y)?5U#Bz3N&p;swcF}{ty{bH>EG}7 z)8F3Ox@5_c6^ouOy4>Y8@qNdwTTx;<5e{W#W}tE_c6V9szYFD`GAl|;OV8dn+MafG zRcK2~%Y;djoLpU7wZ7Xtefrd}{$C9f6Vs2Y>+7!87>mWn-xp)={rdIm+52VN(%#(I zs9Pszo+lGu_fysUZpmb=Ure_b)h}4^U`ufD`P7&jZ_C>FWW8cyVv29;L~d%4G)`Nw z=={MxS?h=m35?C`{Gdv$tLopU>H7=5-z~qqJwKjL#^S)|^Y-W8*L~mpj9Gi9#pkl+esk+* z7^m~C-}8wpZ~N?vi`^$rn^qRJK;f-<{&urzdQ1L3xqbHb+FsS2KR%abC$HT4Y02Yf zZ@0a={jlJ}>G*$>E?o+et9&9@_2tFIMQdHGX1VP@QQmO+>7$$J^OpuM_p|wSBUyLa z`}Wq>iPNWFf5e;+5fL%_X=+;9q-oQRJv%$wkcWAB{pFK?zu!O4%x~im6f{X|53j4M ztIgjpm+w?O?p;3jl8~I7UtL|@=U40Z?6Gm{k+_&v8DIa`w6L(SrM=z!?UlWIO2n_{ z-xPCnbi8u)YG82i<(ly8ixw@~+}FKf!v?YIYfWbQScN{5S-N!T$8Wdui_hDB-?C%# zlh$plCUC-D$u576LTh+!de=n`_^Ru(r`)0qB|M!7? z&z?OM?{+>H37Xfu)O)&7#fOA8Ug>Lh_|&%_?Gn{4*cl^ZS=6HJ-Z$rKn$GX<@6!)9 zv4(_(2FAyqUlqDq!k|8(LF-rame#9Ts;a83Pft&0-jH@yN=QiP+%Lx56B87dEL#>7 z6LaT|Sncm`p|10rk9LcH-uu3`|HqFX&&mpR#)#h$yHL^(=+i#!UlzLjiEGJ_2)1$|Z1%-yXX4PkD`7NJ( zcX#>Z$&;Oz`^^oxDPDPR-MV$p%=iD~Wo2arwI@Fwmp9J4V-Z@yjwdVMjjDBbbDK14 z)~R=QcNbdC&AGLubJi@WM~@$e-Yg2tbX|I){6HuF`R{kjT({Zc07dfAr{4P!VTT_9o)fr%x4MF1l~L znRBP~dTjdMmq&UejU#pxDE8a`tN84A`N_%2p%?FO(tUPr?&;I|`_DM@+q$^8u$12^ zJRW(vySqF2)|O0A(l#+OGfFtXu*_%XqAt67P-R|JT>SI7{r{VfK7yM0+1J)^XK`oj zvR?Dnqo-Tb6!)Ui#bneC^G@ z-|g=Iey_U!dVKxd3l{?3?fad#R_^nGJ+dMqN48{Mu6VU_`G;@c(tdn+=rha2Q}nLm z=Wm_6<)gQoP5ZL*^&?Qos_wqK&TDVS=d$d#-#;AY-yS({%lkdG+rI7oe9rpkgJymW zEiEM*n>p3*cDherKB45G5Ik`&Y=QS_mO&Vu&UWNa= z7-+F*@rqMt51&5XW~<^Ms&ckz(Qih9Stem{7m0*;?Y=WueS_Q{oNZI-`He)I3o zy8od(oV}UfzX#n7_&;}L`S!#FvzdC0Hu4@#dN=jf7ObxK?i1T48v=hy$feSejdp0E4n z&o4y8OC$F_w>GPB$;-WJnIHc$M`5eQ^xKny^nRF@Ka+W!&VB#U-u2syivK(A;4v?B zJZNK)XcTt(=H`m?Sme7$Y1`QB>E1&8KSssGb1FTdKt<9Q&hDCozx$!~0~wcc3w zPxtqPz*8Hi|3CKbjYLv4OY)_>%ZvX$jkp!PV{U0hruahpZt!pZ`+>t16$9XbBf8#Op`Y!Rw8}oRVy=c6#_x$Ix zl24~B{X6xrwcSF6TF%y)*_x;AyKb9v+Q;9PJXId}^J}uq+82HW5eGCMAMm}~n11p` zbgQx*r#`O`D3W$EZJMq=_J?Y`^)G|!H}wHkEK!AF(}U$R@~2-o{^Y5Dzu#QLpVj379Z!^!e@g{9yBDs$ zdvsmt{7>iKc;wA55Z0_y%UbPi5%5-F$>O}(PxT&c7QJ1-KjX|50pV>cQrdF=bcFM% zeJn7)-z_vJ_KjV6)8=)3m(J)Ms{Wq!eE*3SQ?1So$4(S;%&+<2`^L?qe!+exFaGb- zUp;Czxi*dILgfjYEbYFF5y6-COxk3TEqZk3>O#|NkHoJ{?Ra}f0~|u19T&-o?f4#QuXG~Ks{d2HZ^WP74+~tA1HXe)`pzesE2eaxyMOxBpNW?l zX6*g7ms{`o%%|Rw`|9JnkN?Rr+vj!v^s+TRLWd8{u&#)ZRyEmVTgv-7r@7+OuZ1O+ zg(A{I_xhA|nqD7wD~U-plXJ;dRR28QleNbUO#fAQNC^3@@5}L7JgK(c zotyK0HiMc$dy(&aj(4|rw!c}|+-V*gS^F+T(tEn_oGBgC?=F|Uzm_xl{YjPYcGG>| zvh>ey^t1b3Q?F^gYiXvu$gS30T{3I-DgJ0JW8G(|`lsd8p4bp^*(Jx1xEogA&RnB= z@U~phv!=a^Kdy`ON(_uoI^_SwnECleeGT)YkLqhT9*g)JxXSDGM|-;~=Wm(*Wh?$u zG*{e)?~L8U8#0a#B6fXMS<`Brd|PKPC^%g?CI681tE!~0tUEzP>WNfG$E7hP{om#N z&o=~U&E*yU^5<1s)xY0|T~kEGP3@m$ZwUAL;_u}XKJ?r?!00l(cdVal{R%wxs#iN=gZ*@;<>HDDYk%In z^6-o8SJOK?&(#0smO5TLzdA{G$LVdKKAf^rJ2LfiWtCj(*F2_0?4J%CY5cNn9h>nsvkn%|_a=wAH$=Ck`#cQ&dS+~la=a`@t%q|3pG^AZ>HoWY5 zQM`8LsgugdFN>;t7IYSiGceREFnGE+hU{J^>us8Gn=e&J-`j2QPD|F2)I=;d5o^Hxtw`<3DX>Dauvo;fL(-`$(~ z+mzid()r**A*qc?-7kFpe2FZ1_h#+f%iCY*mx>;rbu6WjEmC?O`-0Oq=06q|@Gh)> z_UiJsa_iR`XYcjIXM}IMX7B&##P4%^4qbZM9p59K`a4WmsLIqX?Z8yeiwA4|Bv}O) zK3Os^czge$x$?nLAsx4cn)3gAb@}ddFpFvNk6ON*?@D=pdVRH(dW*cwY&~7SD65o| zJ+S#C)PA~J;Kd!c%tArE>AdsLnG0Xvtp03Hc>Rs-x$JBOKQ{Nys5w5-piXOAa`#E= zE%SH1GKy(quKrWBP4W=vC`n)%;-=l=>F*3~Q5tU8j*rLORk z-Q{@8oZDFmhdUeXT>A~jXfuo^1mAC zbP8Tc$z8s#ew|oNm7rk(-@$*!?S)L`7FC=-KIMt*(u>PzkMa9xOD#2Q=7M+dC2c=$C{ATAE)De-`mS4 zX7Z_pdegr3ev=ng8e3$_Ac0{3rS1a~+EdbB|YBXPmix;_+$z zi?vTg=5-c7(7Anbb9_qil7k5o{$446`6$6pkMSZihdJX9!?J+-eLr$E?f-9SknfW? zG9y4fO6IV++{4Yz%0CX*pZ)A%G$hIChoN~+^Gu!{ztZA(z8*^3Uiddgx;}n}*NY`D@5nrBy?eZ+GvgP_ z`jqH6UAGPEkMqB|z4-iG&wwDNbGNMe*4;gDajWz!`F^=8^Y3lWe>KDY*otNK4=$@t zDc?D7VeMbThc>mdk1@;K6Y#okEvIs2|ExRa|4#l}f2niNR`WR1-yZcpjaU8hS^WP@ z#h%xFMK8`Cog!u_8d7)q-=)kGHeUU8pIto*pJjC!hYR1Ww#rMtD>*+ne4cY@AX{E~ z?Civ)TQ7?+eZH??U#&6Mn)O0K1*d48uxCBTsXuBfOu96Et9y-3n;z-)Jh-|}oHa9l z(%ZkrLc8akE^;#e>OL*-@^8IeJROaj&Y!sTL38QGyPW;Ae77s|@x5K4p7h1!k4~75 znz7z}m8L4bkxeQb+d$=2~=327Y=3c$c zzqo79<{x)g{V@4mGed<*F6&Ftqt9d0(gGi5F0T$ZH>v-yxi#NVX(PA)9gE4*zrU%g zs!cny=+HL)y1Bep5|4iO`Pp-F{>8hCG|$+0Op`Xyx;Zb_*Xy}N&O4?s*)YFAB zad>$hP}i8yVRtgu{$i-Zwax!eZ)&gqe0G2Qe&>6ZI`^_~{AOk6D_wY;ckitobxZjl z3abf7WiS>q2x`tPc>X-_wOPiU?Y&Iz4}RHU*V=GF;f-P8kDoKQ^#7Xncd1dny8E_2 z?T^k}y%PFFKwzp<#-)f;o3=kFx|a0Ks{Zp*##5WN2h7~hoe`B7IpN>Ynehi!TPNNX zT4B3m%Bov?MbfScUa3v!zPzt@mh6!b?W*Aauz0cyt*~>S90bR>E~hc%Nhb* z%K8rS%wYcg@O`vPY^w5%w-u3l8S{0_>i4WM^O^C1OVS}BLMNO0ee=uuW^?l1dHJ;W;r|zGFzdX~vMznEWS{o`jbiY2hWyiY`evYTdU)w7kyFUN;?_Tx?{`I@BZ&rGLp>q1n$Pf=-XXb}| z^=e<=xVF?Y$iMYaUcIB^RU6wqpSvxM2k#s_?7_pG9vr5oX}D3Pb?(nulhyRK?Mwo$ z7CdWyHQ|Wdk{qwp*oy|cex!dcjWiKXTJvC)!un&5PA6F9_RL!IBWi!8YAK9t?%;-46FL527B719Y`^nf7tJ^%Y^lFySk!! zPVYHCSHL)hL3L*2l+?Q5Hd_mc|1(~QtyVYQAJaGeeB`?DOg`1Jb2;^o4*9>bUFXC1 zFS|Ip*Z1+lt#AJA>gc%nnIm62#w2pXoGa=+`}S3snmsb&dBxRjsPyZ>g;>{HYxjpd zd;7%W)oJy=cS`=ATr%;$YvHpjul_u>UEfRka_fJuNu6s^`^P8wl=V9+C;tDF56xw@ za8{cvlF>MMfA>nwMHjWXX7{iBX;~k~c(LND*u{i`yx$_HPik*?8?oo$+oGap>C!t+ znN66#Z{Dg+NilljZ4Z4Hto-`7>E`bxMSK1lT<*Ai^_Hu??vIkavv)+;-{Dog@>Ey3 z{;+*vUqwTQ!g}NV^CyX>$ZIQX_`mnZ_DXdv?zHujk9BO!RMBANUy- zY*;mk<3EGi*B3{Z$nA}~6QZtZGH3mz??&}^vsOtWMtDHCV9_tlQ)<;pj~`$EROQBKtkgF_bfQPSz4Qf+HpaJ856$#h_KZ1q`@zbV z`FV5NI8RH?Pf#;h#Baa*+R^&`o4Z4o?)@2eL6Yz7T)$Vm-1nwU=KmhOXXj(V!E) z0UJ~&pW{6FyuiKw!?R}@d7+1MO}4N67WnpZd{Mc+U2TfhYmHMet}*{DXY76ZqqXel zquk|RUWmo?ZoM)kWzNPm!sWd7#nx`Zw>ImiuC!$7f7kr9XSc#*pWgaQ|9d}69rtzJ z_DSY>+@~P><%<8pgxJasznbcPa8~_eliBA=kC#vT+r_!rRAP0!z>j*@2f`w~yWjMS zJeN_m(fD}AeN7L4m$Ukx$or^t1A+qSQ7jwqANLpulUiGlfsM+S%rH2 z%hp<~H!6E3^LVDH_s{v7!Ikf(S*oi_M{Gu2-g zeO7+?S(XPoqn~}S4_@}^OxM!-H)kwUw@wP@SuDKf&7F^?)zas`yfR}e^MKA^UOT@@a>XS2k%zRychOn z*)=W$jkD)f?G@&*h2QxG%C{UQAwYE%QD*@&END zC%?TYUaNWbMApaRW0#&iQ7n{wtN>@^htxEd3jiGl( z>@>bJ2WK<6Og?$()$h$Ld`heCU#)nqtE9jD)1kOyVja^rH?%zqz7)Gd>eY{Tec;aj z#BOiLr6nt@uhqL$xf;F{J!-Qd^<<^}|FgQYcNAZV2uey?nYSYS@^p)qMC`N!G(ZU$Z@Uc$3r583rXK&E9r@)5|HB*78W1Ogi{A z^UuG>Pismvrk|OlbgBPc>dlQ=JO|X*sXI%5|9ml!z4`IqSxx4}EXu-f-}uCyTeMhJ zBxKr##n$vdm`0gp)(Nf>^DP~&E9lxq<%Oxir zr|j=+`s8(o!A(_q-@P-_+lx+UXg*6g$9OMp-^AF)SP7{TCEJWA9(jB>L#N7E?wYzk z_w4fM_i-vS5AF~4XES~C%s!g0aLcYqXL`QwsXTG)Mc&1=>wSzOKYm{KEFsSD=h8}< zRfY`etW&qTu(2iWeZ`HO{V0k=_?CI=hWw@8T@puPcBXk zij3jD5;*;iy^D(l_}c0?N!2KQ9a3ztlOj-b#AL)?a(M>;A2~ll-tZ^5|0c_`DfpAUiWm}uc>=>f62X9 zZ*sG<_tjDU$CD4po!#-y&Sv+c+_Dn6^OuF0&%b`p`_gRM@9yazKYiLBnPc%{_MOhS zXN$tNeOs38Vz9H4HAJ{+|L(p^lay<=BuoD+_45g1?=0L~S#c_1(wPfW(srG^`CpX3 zE|&RQ0NeMS^X99to5}vTy}R(e>C`{PZ@K>6{}!cFUpKKwvQ+kde_pbAVqc0+zreo@ znTqyz1<#d+-#x)!%jKzGcA>aozPsOoKig{8nYLEX3VT;3Wjx6**=^I;c>TbslaEg{ zeeJoc>X7TN*Jpn8?Py$b_kY^|X$$L;2;lants;ZhE6D{+{2kRp`$D-xlR{KHpxQFN}2h*gfAlX8MX{ zg&A+XUHa#y)c>u%boO6_vbxaq+irEax@?Z=`u8R}6`WxEWNzcS^1s8P_HznGKN*gH zv-SOzS6^ct>mPC`JjBH0(Dr{_hnjBQ_PX1+zc^t(=Vnum>;(No?e)HjNA4G0GfaA0 zV=P#Ce$xJG>pJG&bDs;mc8U1E(&Sylp@*T}hQGfn8`$))fqKC%PZr7Cl4x6KJWDU| zwb?Smtcw4qU)lCYeKHC?_t|<$_crSYqmS2&|K;6l3jgtS%4<(9?tDI}cJ(sF{hON1 zx92>v-~M;PpHo~){qg&Y?lskiS3Ej4)8!YtNq+tF6&q8;L_b{@jsJK@xA@#={j7w` zpIGe|lEJILF2IoZDaq*&d*LP6tw<+{n|%eM2B>wUie zZ_clc+l%94j;}2(dA9!XKhc8!YXZNR#Mjln^XXd?dH!F&{qfVskA?34ZF-^P@tpcI z>%%6PWY!c1%>4PZsA;!~&>hu}pCmTCtJyTKdg7^%`xoWgzb;SOe@pQ1(p^6kj?P?t zd(XcoJ73v;&GfCCE+T$)_rDW{$!2$hcD;Tz6*N^4zTmWB_0CBzujFTj*UJ|1UMxFa z$;#0GUH<;7_wFicAH%XP-<|MY#&p|HlMi!`Z>pCp{PWC0-RYF@?fNasYma_o$X}MH zq^kC9&p)xlk-lly)b5?^doU|cTyu#@*2xog#~z;2>eA+l*q$r?`>)c=ch%1hCl?p! zuj4$Oc=F#T?sTCabocD^^!e7IseXDhy=SkBo?-HH_SDI$Gb5)zxnaIR-)q+)OB z(ktTYms+gnoBtrAbqdI%O5%-vf2Wn1s+c_66SivZ**l7df4t`x|JbfN-)LjHKEt%P zx4r99S^e)=e4exIe}=nM=-00{7KxuK_m(A}bF16^M`N#>-}8E{``sap>x8Z?*L%A8 zP*xU?{-HyYchnx5aLw6%axhVasHzj}Oz{ zF4hZpx9(`jv-g+I{qK6XY-4?jZRPK>%NH(moRsRzzax{B^f%NL?!A32nLj_8+ufOX z?A)9jhM=TJJ2vM3FT4Bi)3ZejcF5enARr@Gr|y<4*`6h?Y;rh9ki zEmH=25JbpLzWq~YI=>`i#PkPZjKAyS4mmY3pE#=> z(>MIsp<%?Is=WqWiwFt|X1edJbWM>vrDmt+HMNk_P_iv?g_K@w=v7mhv*#8s+2RD9 zuu@XG#OKt++|l2C=;8C#r*^bxtbiFIDA<2_<$aKIrXLk&JOiGWn{FV^=&M(`lFP-# zMX%O%Y3M2z!HH!eVs8ReJ32aIl6=|{C04P4YBDhXs51AL?&OO<&ES5Ks*hX6Bq%sh zyFGBzO!K%{=XtxIK7O|0;hnPV@;;ra{;#QlJ$oyy{yO_Cx4C`v;rh5Id*5D_NY}cP zqMrKfZp`F_pJn-%N?X=H+kd>QoXh;K>CF7-JFM44uDY9TEIE2zMz8ph@T?;XIE5u; z9v4T=P0{-)-d%Qm?x!8S?}Fc_MDa)0pKh1-zOna9a+&+R6S~b!8S4_m+2;Q(HmrW- zf9u+;15a+JU(!EN()!I!{Pq0*?4J*(e|)sYLq}@f+f|9@i|YQwaBlzePA#uvN6+sG zfd?1e-+N}+#_~^3D&l>1SpGOT+h)sF?f>8RAAY&2PgzOn)7(W1f?Qmlc%^K6^g27& zuJq8G`s~9#wo|8;np~L{9GcIN$5pPE92zCLG5r3S4iDitGj_gqPUeEE;lZ~v9;B8( zNM`i0yRmM`T+rIf3OJBU!kNkA8h$(-6U*5OL+qVeVr|ErelTx=e zpSynA^h??cQ#~?6WRuRSd*6(W@=rLTsh{!k$d2gxBL(%$1>qa&pK|r7#JQdll@2Pi zDL)uDFFN4ZlKH(0&X*gU*~H>*l+qyoabI|pypf>9{h5hh6Iou}(H9h)_+Ew;RG5Y< z6rXU&`}a>n$+tKQ6lcjB&Dw!XBV0Ajyr>k;%oUZt?7^DYq0oIa%`Mch24Z)xPGj-p#Cgtom9j@#H z>KfDRlGO~2PVRSo@mw$Bcy_+*qU+zE8@>6V`OfXA*}YoRxqA2a3r72C9{jk`M1S5E zmrI)04(;2c6jN)pwQg3?Va2j{-xodqvSXV3qBk3P=Gsj^ARx_dmuG8PEV^`4$?m!J z6Ssd+-my5?D_ynncvt3^eigGL_Y4=V2t0Ue`?SwtS#s{(*%@2f4fD>0)EVk6*;yyW z{q6Ig_jXUZnN4pjnmpt05$Zld!4{;6K;`C+*K`|mF4`FH*6nLnJqU6#-%ac1-Rp7#@`PF*+4 zsqg9ar2Y=oJL{8~s>{!*z58Eo8m=n(`Q$MsFR8trGIq1#|0v9?crUzveUeLv+52_6 z3xD^&dvr2x_mB1ePd=~yKkwL!+OmU;lCw*9+6oVw*2Gw z?PU|nw)8xb5`MV1p6%o3`F%+Z_6a5h2{()8#qOE^cd1^D@}rs6_YJ!KeY0aLHm(8??v&U0G(XMCnJl9v}(r>@I8}i#-NLse3f4gI7qG+1C#KyVFoF-l; z?riDN-I=$-`oyQBr*F;;?tCciGojvJd8=Oj8ujVvQ#NNG);r~+_(l5m{D5H5-TNbs zY?}LXhqKU2spsBrFRuUjsN2Mgw|P>o{O5zSO1g9>mUwm@iJExy*!gK2xBr^LZ}ITt zmp+ZO_w$%$>0QqZ*k?bt>BYS-94nS>;*$B-m%mQ2Q?h-({MV~jcij5%Ih*gD+G+cl z_a@dauWR|FXmMoyTmCRN&CJtglfq{oZsWI4$#r9W*OwI+&M1Aqww3k$-t*S$_Z(aP zd)12>t?hO#We(0|Uc{qtv?ojaHN$NBr$ zH*OX*IQ8Sh&;FltMC588@x|3Fu(y-8e_SpvzV#*>!?yZ^!4V%;|8rqi`+Vc`_fPla z-7aosHgZ{ZVIk#L~_sQ09y9ci?^+oS{X|-eS(m3UccRznee0dUjU~li) zzdK$(klW_w`{d~U|1;d(einWT*jn=HtSRTwnyt$oRNR$(l5@-5?fSi*ev^lfxx{@JI# zx3^9y`Cu=h=_D>?r0zobZRRrB?0 zVu3-o9AbaUeG8Y2u=an#Ze0IcIHl}y(M*HlEtS994$rFtq=#U_W7_8MxHZ8Bah z7JMZm?Vd@8La^>``?Z#pU^A0`1{G# zyk!biU;9!IPuu&XuS4Zp%&C80f~6wCX+X zm-ckn33Ke5pm0RQVg5?{MbXZtKdY~Qy1IOR((bp_Je-;TLypF7=)e1u_xSyCQOVt# zSG=9slwZAn!bz|Gg(uJ2xADL8dCvM{q50Pa@t)inj80>@3wdEq~)o+u^)l z7T-Q!Jy?)enI*uiQT*~ zns-|U-JY^cvef-%?Sd))oSk1xkU1lCocH>1!2~9!-G!%b@ZOnTHsw=x^XyfZw5MrK ze%xVEC)p&XxZSd&^Knw;+r@X^%#`%(S~}&bw6}!8QtL!D1J{zYqR*wleic7 zFL=PpqRO9^wcW(-cI2r&EmhOjYo}lE-MnMlZdu`je;%|mNB)0pyGGkH(e1>|U!NGK zrM4Kq_IH*P%4A~dWIJ%~$v^FiyvKpBf`vAQ$t!;KP*MKQT9x{h8&e!fG;i>#HVjC^OyN-=}nI}e^B4(*ugq`zP*`!J(F9EZ|FDeHzzfc3p@&Tvumr(?wzc^@a5CT zmmTGQNu7+^JniRv`2_zwQ&T@?^|><={wihCgnZ9pH)qJqoc6@RO{)tYBgP) zJyJ#7bB^$FA1-@!yYubQC+B8I?yTS0Gkcx!ja{o79XBtIdh4Dhul?=WvMs`*uY4;b zdEXt=>YMs=vOs$FI_u&Pmd< zebcA2_RY`9k$87)Uf=fZ=58nBuGQV0?x(EmZ^N4X$Re$;g&(vnVH`>tJb2zoycjZXzrwtu!D8u z0-hBbsXh5yvQ{shyQu6~RBhmD*|$A?m&MC+t}^m;gf5@erLpo3%T95o#tAE0Ri600 zOFlYsl5E-0*K-ozIV7&8Iq6 z#!L@AdoB5EeT6LNnfb!?FC!QIU*33$*=A<+*)#F$9$Y+QXkpd=@q=<`ILDPgKmM?Z zt8K2^`0e_E9XkwtCO@nRKeysZ&L;ozq7A2(M-Ln^@ioxD zc*;%Udiw5)Qh!a;%{el;#l^p$td_O<@$&8W#Le*)0w0$8N`&8hz5W7w)8$J$&V93! zuf5}(5U6W-`ME*ZWldKX7q@Q~ZoUdiN}mp=N;KT;UjDs4Qum^N@LS1W94Ss!YMdJb zdp7+r*qE>}LQ?kGfv)~%mnPS5;p6$Y_j+~WS4U-yzMrSl49`7Vy72?U{F0dwa~@jg z8We1kR=(7F`spE2VaJLJ3CC#$hh)Xh%-j5h#ht(IS(lR1q0YaPGW&WvgC}vU(R@}g zb^ekqADtCb4D_Z?-gZjM>b$zbKe4RyKRU~L_kKA$aeLdN$#s)1snyvw&fh}E zK}xyBs{%u{ivNp5N=h@NE zg%60G?YUidikW}yqkT_}J2%#PvoE`OT>XDued3oR8jIHNYG#?VQ(d`%wht4;# zZfxGH@^|f=HCu|_K6>fX%cFAO!{zI*rDJ{_;83-?X%_8=+tBXtBf$fZnijES`EbY$KPrXwbt@*WX z>U-%MvSm77g140$M}NAXRvgIw?1IkP2|H3AIq~dC|MvOUt#dRUU?~-E}7NUs1lUCX8zmnGp3ZpoNd1u7vP%hZv6Cjd0~=5 zXXbSl=D1h?wocq*EBb|}cJcN_Et?jITsjuZ@yBL)`Q-2K6wmQ&jjS)X&dq&W@_jZ> zg;hp&_Tts=YkIEv2fJFrtUareuvSs1qwpB*g*6J;=vu&1lm6o{JspFNQ{QfFapJ_>OeAt=p*{=%D zd#l~!x;De(&b_E_^_RLczXk6~)sK$W`N7u4wb8km<8AIUmzR-Qr)On+>aG89_~Lax z&qCwgwQogo?;kteT9&snkttqPdaLTP!sfkQP5)BFj`M#F?QSld_;-#)&8%bd;#P5g z+wjoCzV0$hPRg0C<3$VmM`(-}gtJ|yMTVA~M-mC1j z%Qq})es-*C+uHjF+1<44&+#1F;I_G7UH#-mz1An~uR3}=^H$btFVRz-`o@qgK~>?v zl8w728uP}M)IW^awnJ!#-nOaRuf0o-Pi6Q0T3WMXf7uJg=GK#+Cl!dvrnc+%-F$2^ zH^{{$Wl8YM?HwH__@_<%C>ePq{O$5fm)q@cv|Y?^dYi@mTWnFfPEy(9u)ZrH!HK>J z-_91+*UYN#Sa+^?M(4>pJJtv%UpLgcwaX&CHz6j4CM7eE3N99Zx!&cfQr}ZFhg}DZAkQ;>O7{`@hy??%?;YuQvAGd$+=u!*G|T?m9Ia z-QSCfiYGU|3!62|`Qs0U+0#Gqn@@;0`@;6Jhti39K z>93AVly0>y7VH0iw+h?CiK&A9J2vIH=;o#-lE+{SOwLdh_f+n|bB_ ztH(2@&z>zGb1t?pzEEvVsZRI${-rZS9_h?4Ez8@NZl|iB`*_~ex<$*+JrJ)iSKqws zOf%<=biF4h=e*rBVfyj&aoh?<*Uo;b7Bb{KWYBbSmi5Hv{of7Cvp!6nu3-^=xGg>I zq5od9B(>$AJ}l;*A!k%E&m*QzyT5AN)O4__vn%FtqD{9Ec?+b@eR&U(_2++VpIq6}t>ugu2S+1C=v$gM~V_zgnZG zq-1nSa#`lAEb#E*#D@>tc8Ojo#zdbo(clm$cro|GRsK zTjTsqe|-NWvfrtDUvfw4YDY&$jsA)+(O}geqHXRx+b+^X_+~x3MG{VsS2qTnQ06R6}Oho$Sk{S#n*Dl967SeQ`CNFP{BzOTI-5f`zJIO!&&O$rNJx?B83ulk3QLi<^E?up&M_q|Ge|0&U5{MyUE)o{&!fBxC= zy^HlPZl7NqW_^98rK^8y!1U(<>y_i?OB`1@IW4bmt!VtulRkm#^PldXcvbkywE1f+ zeykB{cwO-2VHewRnw)i_SC$ee->a5gTr{DW>n2WK$}dx8Rxf zf%Wg#$G2s(9Lx#aCKSkI{Z7+uTDe+>_=Sm$GhfH*1zk60R7`q#CQYS@VMU;5(2?r` zt2i2S7_Qu`>d@p7m@wyX(qzS>5eM45k}~5~7V+}dTNd0dls97Tl<{7Zuy`YLnAgld zD_2f*wmm+l=$z{HJDZ-xC3&h&56UtOdSiO+N!Gfh*KV!4b}z|Wcl)KRY~SeX3j{Bn ziQ1ACeDz-BX5-@LZ_hQ{bC)PwGV!j);y$yIFP^{7n0(gRe9o-&n`l_fhvQnS*KI5L zsyjR6R_62Avb(wUuiv$YSYMo5@=0^~ys|G}%&*8r)c^d)nDuFanBJ0{gj(m`-COr9 z6IeVsX9iX31PfZd6UI-kFkEqkq_kUKeZ zj-ZBn=)|=3=LJto8oyfe{K?wK0*!CaAJUw2^Y@yjf=82uAe6+_~`EEk9WU^d-K)5t24iKY0;a)^(8kBUz*2X_;=I0uX;b1WlmDd zJ$N9UJ;-p!o<|d6!_M!y@vEZm&h2&DSLaR+J@(?oep&HZ5u5qW{|}WGIj2+lEw)g3 zYpd&{f1C3BGIOS~E?FJ8c4dgt+)Qg-+Xud;*-If zoU_i>J3ahzWy#slLz$^5PI1jVON~NmPqA=whF*Mosc-K|sm0UwJ3ZS9ZaH0jdwPtz z;?bxwJ-q|Qb4~8%RAlQtzI`G<>KW7f?3;JGD;6n7R^O~QIK0lUYTiOUi{&RHr~SGx z`+=cWBkzj(2WM_yKgIJTdFncAvq{sZu8^?#i0>fTzB*O4;=D&D)O_ZJh9P_Kk_V9V~l=>#Pe8+rNG4A+h-BOpj@< z9~7D|1;^EvUCc4Ho*gMyCdGcUq;B&n=AY@6L0|ga1HbHh_GR{3OE;!;N8uXRr?;E( z|J+$>)*se!;wY>7JV`}WW!??;+qRxpEWG~in8#Ozc$XF#gVWEC|DN{fc>VP+l3M4d zez|2fdH1=S_qKbf^&j(8QfoD}%RPCA|K^rYZ&v)N zNPo9=t90XPU!!1kPtB*P%a^J>+2=Y%UiRbp&_|hX4Rm&9MA`bU6kIn~_HOH+l{-^Z zn!^0#A8iv}e6C%l|JtLL*&TiFxUOFBtUqGiBH$z;IA_|ib0~y%3ugP zmN#ed)4ku`n6yb=)m@ShJ+rAa$NEi+s~+3?4F(fSzP?HRvi|X-&r^^4A_?Hn7^Qbkwe5d zk-@ZHk5NbT;Eqc>4jD|0>g&!p_RN3r0oJYqxeu5pe7|x-hUfXj`8EnSE()tU@n6hU zVo}e%*70E)D=U+Prfy9B!*uZ*m-K~FWscO!r{r9%S+Js;;p7{2KA%gRPLZjPmrdH| zwue9C!)G-v)#Vp!@93^o`S2xh&!)*N3chb`q`4hCHrB_lZeJvrrXJbFDi;}c=Yk7I z5C`x1r`mRz(ORuGjJF1@9iFLVi*32HKkC!SA zdR$p6cE|?wm<2z3 zm!GOQu|X)+<)XO7w7UzZblj9!eWjDPO~Nh1AnJQa{El+~)sZUt7z&h^mmVjLn zGi}n8gs-W+WsLB&|NKuR2&&ermg)2gma3=UFZaMbETW{nJ}u z?x5H!;au#-R=r5H&*#`p`JUqryToeWxuol^V-~XzG+MFO?~R#Fd#{3Rh9FC|8}sF= zdVA?h%_4VC?etb@{dH0!@xbRQuj#9J3R_NAt#P=Jyg)nhitl~v)k}{qDt+zYHRr-- zM^_H^6&vU8Tl00{I=@D}M2>{z(j&c*Hc5}#fjj%#YGZ%Tb>JacqT zi~hAY>fzsCw$1Xn`SaB4%jW0!+1&eH*sN^bcytzj{lteESGX=VY%VZhKXyGm#>jP= zwMzUwMU2F}safw+rwXu}%ZMW9{`QhK&8O3-kukGDu7yI_m_ebw7 za^5YU*cQ(C(5c=_p;J@rQNaAbCoTRP8YJsg6rXloy1f3Hh_2$q9}m7n`GhxpO^!U$ z5Y`YU;-@s{v<(wqa;eOv##!o3=@(}^t!@%i<}|Q>Z6U>QI%CT(9<#ogG1jHU%weBZ z79Zy?nPrr{_so*!)RsIoQK#9RO`^UVwflO_S8(wKr-+=Ascx=MT@)f7!ynwndBO7Q zF}t%`t-E<8uBk*m&is1fVnlV|#N+>79F{ry??cPo#w!bT^|$<5D6Q`|FGIm=%YuKW zLR_9WKe&6o@t>UkckKmBL@#+QmucR4ylQWO;@@xo^XKijZ~yD2@ON|l+V4mH{*|+{ zFZ}<-W4-#jU5@%rvd%A-N!HgN&w2MNfhXqHkq@O`q($}AQ=;NFIB#s8Rr76v`4OXS zye%~s>W$qu$60^m6IXe`CDL-&ElK$#x2o~6GK&d8mKwet*W}N3z1(TF{rl9n`YR*? z%p;q=%$LY`&A73(Hb_?>remu2ya46Lfxog1Hh?u*kxy$03mdHY<6{1n420OoS&oWWb)$41@K6tSI=&I)K&FlEq zH7WdHeDvzkk{3#<|MWGtbbNfUqh9{~JKJ~n7@ZcMF6WzO#Jr`AHV9I+PvrdU(2eibB;31_mD|$i&VX*Fz@CXsX5;}53kW! zedPI($7-f&qorIHeNXB#lCsbN<2Bo#+|HJ@sWV@jv`;*sG)=*=rAf+5V{wKk!@Db;fY*^h$UV z;lL`Da-9Dk`~KZqKLt ze*4xFf*1Dl#>8wlP37NlhmmbQ&&?^aC;fv@Ja7DNV*G2FjzIzUmo+>0Zv9sHi($#i z)lYZ}3OIU1HLCAEzI*W8y??fsU%h8ve5h!b%j_z41_s@f&91y%Ov=V4mc|z5hUU77 z#)+1?Cgzp~x`{@Hrn*VyiNujDbZFgG+ZG&VFdF*KRHT%eH4BE--%fRfW^XFFspTF9(!PhY?ESsTs^{09d1dz`(%pk726xRMD4rRwnbw7I>^$rKLMz zyTC#rkd(%p;QgBefBa^g9Psmi)2mmvLl_uDmw383hHy>=$vZr3@dD8c3Z{xNGVJ-f zHv2}FBEz1}UDryt2rxX*T?V$54Xnh&?=RcrjbBshK}uyT%<}Hcc)kDs-*B6_@bKy0 z$NSIs=kHXNHqSdVzvjo`m22159(}FmKX1>i#{&)R{dAu`ie?Fgi_wk*Wl9Jq0aizDaH+?!7ZIpQ3Q?fqleu&J0+mFT9 z?^U|5Tf8TJLK2eX4cwa~eJ*oLAZ~vjM z=6~#Kt7l7+*_YSue#QK5uk5Y$)!*J^Zkfn@zhfy?n~o;(6y* z{kkamzkXfwWjoL5ll@MfN`HUmjO%UV442=vaj{ny>cvLQ&QG4^JAdxkT7Uol)4wg0 z?KXP3P4lKrPRy~A9qOCovoGBiOF8xTbkOzf-t)H4{O4$vb7$Jk&tZF#@7JHtGyQoc zb-Db6_qkUD{~EpOs52{Ks9+b;VtgR`WZUih^QWe2e-@t}Uq4Ti-)2H=hxSGhK7drS-n~@r{WOj@1F9XpPue~dM!Hm>gy#j ze-;K>W_*9;^Z)Gn&qoejy;*P7S&>?fJ65TKslhxw z-DxEm_tnB+s)6`d(4kxf10mvuiXCa^}SzruCJRt<^H*t zS=+8owS3<*@#hWpKL5x_quO(uYCcMTfATHAep7vEOnB|TX+5&WDzerg&$+MPnXF>@ z^l-fI^<90x_q;p1rS^E=nz*f6w$E7vesqk zZ$3JI7O$@=($YS)IjPinU&Y%N9=Qv~`+r+kbk|((KP4 z>vtIb|NFInd3pW$UDHx`CuZAy3BP~x?Dd#wy3ys&enrcjX;M9(e)`&6%U>Vrem?h~ zKbh}sbk^_lYX0ZXmfKHj^SvE>f3MpAFE5Kf?OcCvYX6@9H|CTd+dWC8*Y|AY|E1TT z%#Pn-@t6PQuJeEVXBa7e7T?}e{ml6EF9c2)mg%=tM_aP8r`-^Py2a^iyug3^ zor2rWJ0IV!pZV$2wDUju>wZ-{(~X*Y{{PvX``$1<$USwogyDhgD);a2GViZbz54al zRqfi}Uw`jyn{88BWL5fV%CC90!LhM(>qWK0mIN>NdwF|%e%aewQ`_aLG_tR+^9>FT zez)uQyERdJt=`_+>Rnn|DkU9XY4zNh-+qpY<)+S7}7l|SEm{OWR={rcNME2l)~?=>y|^F)2;Lw5TU zO|0DCZf{}x_Hx?!*h0U&U%!rjel9+D!unWy&9h7QZv6JI{aO99y~}0h<=1~){PO17 zV!Pi{=P%j0^Xbp^b>H{B$;>%bzVFM$ns>p^pQKM-{`}nUy5H8zD-W%3{JH;sLE^3L z*^}qjJl8M2J6->#{`=h1({y(}Y?Cf}9$WtOxA~n3XJ?zg-~QAh{o$%NH!n|_{qOPP zo!_|YXT{t8@_9G!N6PEZ#p3Hu)jO8TeqNldcYbAZ+q>O-zsgQOV6-i|zdrqK>^uJR zX9ExOd!ElTeR*M@Rr>rYmvw)y+n@a!|1-iY=hn1p`58Bj?y_os?v;LjURAvBWN&!? zd3C)y|5v-OrrqH@Z1i;E&b5zco94S_S#7O%T~c!qlzd;R^PPTs|6j^FsrsmWzwXxm z-jq;yy72IJ{|cr4KV^ygKFs`FboROZq^;81p4{L6xBGte&6=mXzo%Y*XZ!P+xZXL_ z|Ihu44y`y`bn1oT&26>e%g$G>`&t^jT>spR#q7U|*c-MRx`!|wU|g|qq2mAduU1Fb z*MDCTX!&x<{jb`u@R}_emCt^+-746ey*dxPcFFaiR{9r`;y z$4hG>rgfd_TC&lw_vGsKBbT0?nY~r%u6vJf>`m!t`QGehX^+l)v;5dJ(Q?J2DOZ12 z{#_rt+e|xrZPwq~YilAUO)@Uj&AfKrc-uJG5br(XOW) zr~Uu`%-s1w`2MLws@a#8ZgXDd7e7Znwz%@u?(0kbE5;Uo{CPa}&=kp?ANIQMe`j(# zBy?Hv@ok#kmzI|Ozw43q@6XShJ2yXd^V(hZ_SB!BpNr2J9)Gj_W$lwa$-!aMu9UAo z32L4kpI2ihZ;}1}i=Nf*86n#<>u=WP-`J8r*S`AA#GNnKxqp5xZ=?7$HTCDy!^NK# z7T=qz^786pv%OVs_Eui&I9&DoXQ}SRulLx~o=v&vTy%}wd{gDe()4*YO7_2AJ_eOk zyJW9uUY=L?m&0O#|8^PkO;3LYx_>*r!Ex`WA79dqSJe0W%rH`}FMBvc#`4Vsm6P%H z@l{oNzmH3A&OF_Br6lY7uiKw~=~gBkn{?;T{OMcIMem<>@kvWyv(eLu=|)8^_ut&u zsa`C;uEa!@Vb594sSE`SRX@*`tXh44k91zi`)j%L@28)cGgHzyE#+_<@6El{<)@pM z21%La`Ap)GF;IB=R5x(LqNIGEoSd99M?5EA+F4xxd`{V|%$0tZwyac?o;~^5RsN^P zvgK}BPh9nBN_w!AnYnuPw3JV!|7V_Do4?KZRJpYA|8dT}_heWH__b&VT z^YE|lC%$Hz?M=0F&;8$V+R*dX_PeuByxx8F$wPIqce@|QeY|!2&Ah5V7i#KXFJu4o z`+3Q!D=&*bpDbT{{=MmYPw$+&8w#suc`scPw_B6>*PFlhBrYtE zK6U!^=B%^J?n`Qguf02E+ttwDE!V{77GCP8|8v{?-O14DeWxdHo|g8ZVc!1Y8ioVW zv%w9_>$_&2o1J^@&CQu6nL)q4zMlU1yuJPBXJ=1;d3iZFGIC~6@#oik(OOe4E%Tkd zCVs!&{=aYYi{H#JJjtETv;Ad#k)Fie>i1ifPTyYcef4wXge7YpPw25uPuVr~{oT1Q zZ+s1Pir-z|C~5fN`p*1wk9gL{PMFK=?|0wK^OE6QE46O3d{0gGy#lh{H+Pj*-zt6e zL(1CSH`2B`ZyT?TCG-6ZcFpytC%)gW;v9XxE$`f|%<`wxce_7tKK|WrH=k(!ud0p3axZ!>Y$tXVyF?{@s%^iNzjcD8<8wg10|li#1^TwKqV`g&U|DA#+XKFwy| zdbe8Y^2XZI*SvGS-BgSFR2(@e$g8!kuZ>4?5-YcO+RI6*FK@4pZ{w5v*uk*cEeCL7BpR;SeybGMZ@i@Ql>{Zj&{(SY`_sloh-JieK|D62gP1xlBJL-a7 zTUC8D`4e7z?4n{2LS+I#GRI+?hoS+QaRc2 z@Nn^ogY4Vw;sOIF&YCq%`ROye&pxlWYDV|(@CgbHo%;E_wf@tmPiI=?Mm@`^*Ic@1 zo8H!^o{x{M)qEW_|JScySH8cQv}@O_km=W#tShecvNlU|zb&VG{%X1ZbiJ)FL%wDe zhfm$7%(ndOrkOK$ZLw@_|6Zr)w9U7+HrGria@JXWvkA{iBlm5xw0*UE@2_(g=cUfH zTn|$9S3V|wlh)hptl;R~-~E?wd#btq-GusEw`Ofwf6M-L*_js?e|`}Se=^Db_vS0t zuDzR{c_w;`)?dDNvocVetk*w_2%T~^S-QG@BLn`^ybcN|7mNp zGHUBSZYo{t9+3zXo12`uncRQk%FAx!++&mGl%9IHw*P$O2BYWmEseh3%?=8i_U6V` z>#0+9-!HAc?l*IH!PC`!`EO<@R({)AI`h*BW69E#|JQ9770>VYP7Z#i7c=!=?XG2e z*67&ozMgjP(Oz+zioB=4OiZT--Cz5xyl?ey$GMw|ug}wo-1ctj|N04<`lojYw?BP& zU+>iA;%QGS778)k`_|&cP{IEC!p7uDPv&t7f7<(co%iSW7F?g6X1$K;n^E=TqPub8 zp_Vf<43#}k%P!}){c<5BJUspEEYqLwzVDml_`+OrRb`TdiVljY`b zv+147mRd1?o2IGF%-wnaJm2m7o?gH6EBp25&)lai-?*o`jpy~mQ_HSaKG`P!^c<&f z(e?iP6Q$ejXO^zNxLWH~dwRs~=bLsE7PNh>F*KU`biu;*<#lhb_{`g8^4fgu*+uR0 zCwh(@w9HDltx~<|(Z=0H$MeOWAFbJ4{Be!W8o5~y_kL?z_4fQftMWU4E5f$Tc{}HB zwDhL>L}%x1@AQ@y{$7@IV}oLJnW_AR+y3X@ZH?TOR4b+zIk}WKy7+Cquji!NzG*di zN88p!+?|jvw)Wiq`q%e*WQ|Q?Ut2B9p59maJ@D`6t*_P6K5iOA)uQxYx8Kd2Rw})1*~`}4Ez5#;zqwJrQ+@NZ^(W4xPkaA8mttUD(1Jxv8dh(vslzZIZ=b4&3?md8OoM zYo!Obc%zNVAFk4g-DnqI|My+(%M1HA$+V*z7Rh+Vj)*f9^gLxxvVL+S=1crr$Anab~jHlZ)!&%XaRx ztgR~lxRj3}zu50DTSNJVa@o?5X?n4MEV+ zZ91Z&qB}n{aTooTEl+uTtas(ARi|9#e>kZ5&6)94+HA?HRa&;MU&kBv87_8D|MuqQ zO^eqT&&X5;-Yb3fdvoon^~SXyH|gBCqc(T<_wyU<<_1mMRAT#V&Yt}5Q*10=@6?Ii zpm=rbSILr!^?RPlOfNsX;URl^W!tj_)9dG?MTJ$T+^fE}&F9zGmOEcEf^U^u>!|Ph ze>C{;>`i+UbFaO*Gs|}AlGvNqbY}dFdDS-m!=%e+y)*CZvdg}W`FQcm`}b$8TGchj;?)LFmo>Wm|DEOMPKNLQ++Fi%v-#58($sSn zl`iM3|HgVw;(L4RN$~WZv-|6Ri)-rZpFVkKk!yz;Mq zbEW3xY~iANsn?&qIQ;wBs*jJ2vj26d=$h}_`6zk$vt`!uXTNT@nZa1Q>*=YF%eV4b zzdQ1<@q;1iG*M8-t4(Wytykk{ol`5 zyEj#r2fNAM)UU67`Eu>yc|YgX3;w)SI{DL$$=#ps|F68MeeCbg{g(Rizn-5IaPn|?Vk7DdP(*xtMU_u?q5E)@-eVCYzlhG@Z)_t14G5^sExZ6#p6qB>ncB| z$Ca7?dgMF9NSWV$qe1+y-`sKEO~3!m3fuQ_z5LI`=i^sSsd*86|K$GKXMbeO7PR-q zb28j}Hs=>F1H+y}Z+>cjUOeA!Ua`OZD_zTa-r3upx0l;Z(leEH@nW!W;F!w5aKH}a zx&6N{^X_+~x3MG{VsS2qTnQ06R6}Oho%$#=Him&y5 zvFKiwCgW*`KhC-5sK4LdqewNh@KS7LSwX5n`Qde;!*LUt?hr z&e`(XW0GoY-<#JKsYyv(w_8tnau^?Zoz!ibG2`N+>2Gw^udFB(JTCBD^qa`xcHJV~ z)%A6|vbP>P?@|_;B=UH}iEHyqB!0XvD>xhnP4e!FP z2PfPbtd_OUIHbTdsW?JHGN`BZ#+C%{&mL2=Gfp(tpYD6zAUW~G#v@)iCS^@igVgG? zvYrH-H(Wla_@wFfH9MzA1f5(uC5lI+y4Q5)tn8Irx2@W`{YKE~wOejQUA|_T!D6ym zZ0)U(t>xF=oVioE%XqvTYjb+dX5YEBt)k*THlA9wS~s@# zwA$3NTb0ve%WvF$q~koT-^SrOEYN(lgN?%%2U6qR&i=IMR`DOX$Fwevg@OZOjNvuV|wHs=|E+Hp3=Zv-`k_l-+RWwKjbqapGiUoG z_qP;dz2%PIH#5AulOD&tOgMaL9)I26P4B+y{9KkfNiDbW zKstMn;f_6zCd7uFx4H4FV%weD>$I=Vog8}X#fSa5;xi&P^PRuHikBmOn$_=hD<Iz@^&C27sH|uo8Ye}!eArESGW@iifmZ)Uw*Gs3|xaxV{_zLSY6U);<@)eUi z`3`Jk{Ko&L@^{qC#+o&kN{_pJ+9dRq*)K6X=5VgCa-DjmgUJ;mB=a6{b>(#59YfNPSsRn+#7JB>Tf!2?PSt%Qy?!9G^9cwKcbbd$7 z46$~`qP=|^(m2o6D+RvyI9v10Y=4GM%D-dfPxKbfY2(~KcgMo{--=Xv4u0}cIenX~Kk53(lvT=5L@s=S%El5?m2!>8@;e~PD6L|OBA>q&*556)uAPH!(~tk2Su>^Ly> za{G?l;~PFJ9$&oG;vw6j#k-llmexCcF~syTnTRXkJ&AvS-4!RKI)|Mn(aRv^x&< zS1eePRtg-OdQ7yX^GZ=ng|S(^6sw*COBS;%!`|g>g$i@p>pn3gxcg7xuyxtqsW4|t zq;gaAGZBV_C0hdaww~8puryxfl*NSKb{B4}`pFO|&M@g_zx<3Pk6SjKa`RQK?fqf6 zpz*x4{**ax-wU^InbdIE{o*M8$H3lhxMBYUwkFxIK10 z5WrSr6cbZ*eAkOZVIR3S**&=`<>tVp@8f-!r{(4u#GM*ep`1QnaaNvC6W}sT)kYoUf1{c$R_noO}4Ivb?Z_T^db_h7EC*-A)((JF7a`f zsnd)5l~Jl32Vw(5-oBX2nx5m{jk{Us|Wa#-32Oc%_k) z(Ha-Yz%Q&lN3CWE8A&HkwVHU4;V=iU%j%j7{kW5ZH;rL~=ZuS_xS z{$VFo^kg3=!=(2&FX-C4*DtMg%xv%5+qKH|u;A?(3u;dNW(k`5qVKwa?i4*Iwf>nW zTDE#tGp$)N|7DTVnW`w+y}qYCCTG3%UUjgl{M2?o2acuJ&#Np_-DXto^+Nh#7K4+N z9osV=o^LJMGBbNN*>m(Wmg@ex!+CyIJiA7LQbIuW+!MJ4e3Fh;7nC?Y^{~}1`&wtV zfL&wP)Z*zLTwfT548?;{>xv-)jf>Q}iCG)J#mf zZ@J4~{7S~DZ{cz2`BUUM_+&3u25~2M*PF^K9lp3ibPr?N!UVpK_2+k_^ynBn`FlHr zS#4f<>4e)S-UR_A|Dv|Eaoex3a%kV;al}*Y5r>S^pQTZ}f0{JaqVz1-_xgq>_b^?V zbehAdg7s*M>`SrxLi0Z(J$Lqc%_9fZdD3&vnCY?*83c3*M!Za)|}oO_s96t^$DaiJ^oH0Rw5-98~qHn-OV+dF-)G@W+6>-wV?xwoQ!$KG1` zcbC{LxfdKJZ7(;t1~VrYUXV&!E>L*n*G9QVVk=)9Y_;WO?k`;7?5}z7qieS$r^Dr@ zDb=qJUE_o_2ALSaQ1LVfj zL)AlI;etl3tPK+vgsLBPn)WT&?qA?_{fXX+;i5e<+$)@$-~2lG|3Ufou*|GW_1;}e z8ZLA{uIXX^yW3&+ON;x*`!3rtHl05(_1@R((FfkBzdXB6%$lifTVwa@b<5r`PPaaA zVzT1wP1>xPTuX&M)VbXcVQ9;5{4nc!bh`X#|dx%t}ez1)kpZ|@t= z{a44Ju2$4hwDjZ=1_qtR%#etZ2wxwo&k8FNoC9pfoV(lyD`;YHSvbEVYpSZB3 zgEge%aTjXZ|7~Q{+>3u!u;bbiN%474cDzZHYuWGMS?@J zvx6YJfD4CjRXLl)DTD9*7cUBWZ<;7`=na?esR@OZ~^SP;i|7V%ac|R%{>&p|@ zMomk7eJz)biGhLP0rR%h*W0#aUA^S+#;N60Y(#46@ih@Uk2x?fFfh~{n5G{;)o-dS z&k;SB6?a;{zP+s6J$>DYCRgvXYgiZ<7=AG1+}vdPSzPbrCehWGx0m}fZ{pU>%*e%*hA=@={Q7FZ|*vPxr)_vV}* zJDFTBe$cCAU=Zc=ba4z}XgI_<6(sBMu*C~RFDOWDV_+z&U48AE6iWmDg?V#tNwYBA zI6B3|#Kc5`4XngN?=Rcrxj$0s!Aj*{Ut4?H*Z%)czW(x8S2V?YWM;S-jkmY9-p)OL{C(`_gk7a8Pq03hdprFz zvsvx8M>Vh6zdxI%?Y=DdX!~!OT~F%oPn_H@J0rM_-*3{NqAN>mEHlgMe%<{nlfm$# zLr{w`!8{}==#oyu*6izgyu7@XZ?|6GlzDksea^i-mYzYjxlzk}W=;yW`}?xw|L_wBK{xw-Fl|Nkdbe8%wQ_V4#9|NVSk z{C@BEXOFt|yjF*;ouylS=A!%a4gNKYUOu07>z2)@6Ur~QpSL?Z?e>O5=Xd-6|65c4 zc56sz=-UnF_3P)?*GWl9UAk~#LgC|MOYhtLesgVNQF`>YqT0GIpWQ$It^fJP{nOv~ zH&@p7S+1$SwN3N>+k3b7)vn%D`r1t0lA(r$b1K6I=~ZjioMBaVfA`@BtFpV<(c>yV z|K8adxiu?PN=j;yiQCTPzPveq&3-LxH!6O1W{yRY%eVXW|L{sT>zCKp^>yzH<(lW;n{)g94&`Px z-czflYTqxMKi8_%Ym(1A8%xhmAD#J27yaYBw&wN(Nqzl)C-(i%i`Dwn+wFHp_x|k* z2WyQ>3gTgo{vcTN-S&HZ%E?KpKVNt2pZjrK?)03U#gkRG-z$rbnl|<6C2#%O>!tA( z4_kYr?d_D^dQJrU+fH4zYSo{kE0=>)*`A6*vz!|fw&mVVJ264g^3R6DlT=Pm(>=YT z@bRXaqg`8aZW^)6*A(>Gy;_lWyY}nV@Z#sOhI?+rJgS1n3}&e_x83kb1aRYij zeEjt3)5X_jrY|dgey%d%%8K&X`me99*3bNOi2LWE=l1(A_m|ez){5yyP3e=hPV2Y* zb|drm&Y$m=fBMl98M$wj+S^;(PN_bZpZ~axH>0ZV>aAOUE#@>DE%ql7RbvZeREJ-My`Mv!T1KmFf2T|8uUbyFcSysOZn@>*vqPk1dSf_hIJY zqF(`x}YTkF2 z+gNPLp3u{C3a&7|yuRBzZ{P2ge_rj{@0pqDIq69syV|p-J5PUlyWjq7yDdYF$Ih92 z3^gvLYgc*QHp`u)Vq5jaWB$I{{|mm#)qc5H^5TNx-QA_$m6erZ`f+pkWUZF?&$qi- zzo)WzUe&9WYhrd9ef|1%=lg%ZH<#Spv?cSh+S8{`Z*I#ye%f+=)vuQ-CqF#y^Pbcr zX>F$OGk4avx3|;R@BMb_&(F`FFF5n7dd96;cW%eW$HDRO^XvZpO1-9si!(C&93y$f|&1n z^_NCZ@B8_Tzi#f^+tT&(_djZL-&7i1yKes<@1NJM`<-3kzWmue_j&dAYvoK!_W!wG zZ>ODmd&{Zy>;KQb^W*R5@>A8TSFSvH*8KjQ>i4_#?f3tDw&&ZeZ0lT^_*t7xqPJgr zzD+)MM)tnXM{Vp9!`{goKRx@o{M@CIcUSDnV`>Zg`V{ ze$MpO|Ia@!zH;Gj@f|_tO^J`6`P616UM`xv?A+-M&fh;iU{9S9`_O_?3n!!O)QL{iThRnOWO4a;kP2m() zOS!oz_2utv7py8SEU>XIOzN}wbYjYsDJjp^L`wepSl_RnIY%<`+9KD@PouYHeeF~H zx^~ra-_sKgHvd0<{OOjm92 zmzSsS|NHH>=JQ+X{O|9-Id8uwGsi6N&ZKW|rP5E&Ex6KX`L5%b9reE+m8@TN;@;kGXDZWW=3RWey7=1id%rjR2-7`%X=Cl{DJnM? z7d@{%|NPC(&9jw$fU-gLw>LF^z7}Vs|2Xured!XFmvN!srbqhnKX&u~ewqE-`uCLn z<$FRO$KSuc?*4_GyTNVzCv(61o`|1Y9OC8e_38HV_)|NVo7HX4>R(qs_2tE{XJ@DL z-r1i%ZGBeHI(}O--Q%)`3iIp!x|!wclz&oZf7ZvYmiF}3tdf^^6eq{myyv*FzI?h& zoyX(P&h2mJGJk(Pu`{@S{@-u!W?g)|`t$U3-qRD9t5rS!y=xLKzPSI+q_3v4gDx&S zTRs2u>g-Q3U;o_s_qcmjT=e~8XP>O7U-&!qkMZWB69?>WhHN)Aey(FUTZqB#NsAZ5 z4c@(f)2yC8mA}JlzG_!V=C|UnTQXO!TX$}jY4)bn)6$Le0gK?@i_&DI6bA_N6k~w4qI~~)c#-L=D$;>O-sA`>+8*ZwbkqP zKWwX)omah^na@I@-~L~Pm|n~bK3S`jzrVivZd|u!&6<~OPWda=uh0LscXIyrw6n9; zMC`LkpIiCtf5n@7KlYtY?z6Mv7S}s-XJ_%}js3N6nC<^PU0=`sQaWmT=H|=iwyLY0 zI~Tiu<`h@&>uH~-tz9qw+`QlYxnKUg_Ue#r-mdLtkvr>`sg*`=TUJ_mx@7&TjHW>xrOxm{g{+@}!-}OW*f9e4A=T3+3FL@*X<<{h5H+H4nJ(iQ7abnZd*O%9SpFLmtZ&kTx zW@hHJbrJvfEi8I@>T71~y-krBwTC^A^PDNK|CFG&JHcg{PyB>`e|PPD|Bay`c6I(>&>FMR|efh$L3D?#}KR>hm=pnuQ?&Y43 zc~1WQ{r&tGN#jc^HyJUr@nr1Eu59O%E!)wvec3iM*?VP{KcYkZXHWb4`}_Te>mJmf zGQ71R@vxtzo~W#K+Kml~mG5>w4+;#NsLW?yU$gv8`n#s7Kku3HKbyb**Gd`FlKofm zZp_)d@6+WeQ}0geQUdJzSXs}=Q_9l*{R~`EXDQLR>~m3A#SFzI`^~l{`2?M z79VI}tlw6fe`Cwj{;oVweX+6q`}rB_%a*5K_mix9!kBq=)5n_qpVE^z6<(ee^Y#6F z|LuCBKQGq%CeQA>C_Vk*{>hW=EDiYW!{!RQ%g;#FzMlSpaqqv5>-%@U{B3mk!h}gv z_WWg5P*r`ufA06HT6y_9=DN|_P892(JH15w`O^;P?_VGCGsqY1TP(z2cgQPFpLMob z?l1YZ`#*erA1PCD!SUtR>v6vQ+cPdIiHi0bKTSI~>uQN->E-&K(<-{r+s;TXpFi)? zrAt1uY%HbC^Ky25JUh!Y`_k4`TDH5&{kN}+o&9b`Y-HrjUAuNo*`763?(Xj8?%&_N z42k@?&RCJ1UusI_=Vz(^{`{2uGHv#gFE8%d?w@bI{^q7`F> z>-yY`vUhp;H+Cv+cI_6k{JZ6H(aWXNpMAOPmu;q8k-mD~PL1mCuRgi2Ek5<(U_Gc9 zRtrCWetCcO=a|};Q&lY=KXJaaca@T=>d9qiql3b({fJxj?ahRl#nbjY{?^7XJ>kB7 z%+!zP&z!oTSiS#w&$;clcCEEDey(%&-rny%nVz1zLPMWDtvr42&z*=(R$p&RU)t+^ z^mpFsRmJUBa_`Oh*&X)w2mj1VlX@(E9kBWPr~b~KAD0%%XofHyXrC9r$snKj_SSa) zNj4T$C3R(wdvE@;+pKVZ-KVb&KhCspO4?SHtXjQ#vPs+C+V6MGpFVvWxiQH#@5jya zMUQ>WP49{<&-{Dp6pxgN2B;8h;S|2KE%)}D?f2_eu3ULiKX0che~;AE*>(Ru+x$Ia z>^Vu%xlN_sv##>_Tu^`DPSx$)oxkT*-~0OY>zkX#xwp5Sowhdm^4jR_%Z~F)Sr}-C zuRCKbtOhC^D<5^L2gS$F|NAYMNA|q!_n3K=wevlV(%;&==a z84(?QyX5EZW4^ODrJbFXHhuc}na1j?!`7dBb#=9I*_-+sQ>IK=Qvd&-{HxE)qeD~0 zbmHcMD#)w1ZpD0#e>{1~&7701-Pcn-ZrVE2v^?_P=jHsVKQ=ILN?-o%W^w zKW{hhJGsYob&&1rt9R=DZ?^pU<5=>Y-RaLkMcEN?srNqh-smZZMEg( zvR!Lu+Eo`WJ6ly+zuf(_eS2r{^VE}{N_YM~cygviX`J2fm(KrJd}aUke&(sJZ8t-< ztN#66nq4+$-kdL9W><613QtaZe$sROl80Ysc7fVo{(e=e`>S5;+_S4BciyZ&UeEUL zvhuvNF!nW%b;s_MwOMnupn+UyHY$ z4C){?9bNr-a(vI}i}P>j%f`<)jJmf z5qfOT(`An8^2P?j%g&tq_V)JW-OuIht}s4uKDYEf!w11{8=LvhHL-FB1qV;|n`^Z+ z@AI=|){Xxa`D~v|(23n;0?M4-^-Dv@-lwPO7Jo~(pKX|YEamGg z)6AQjQg@ZU-*?!oO}5Y_?aYjc;;UC1m%O;pBVnkds;WBEJU=cgJNxq1?CW3NUS9t4 z>$PiFQhxPF&a^Ji)6&+yUq0>e1IOlBX?^<^E=oQ==iAKlPd?uNt0%1P=My?z&+_$| zdgIx8yz#s9Vqe`eI=yAruB!IGSFT-4JK80>a{YS$$jHdL-?#6lox5{v#kPclO`u-> zaen!GUu36Ty}Zn{H+a5XZPB@#>Hj0sU%cgM=Xo=Czs17`F~8o%FRQ)%smJE|iZ!wO z4YRN1X7EgO{`GYFVzp;Y^}AF-CFe!w@8|E&v#;Ni`8U7z?Uk6qzlVRGGSByZ{b|#j zFDDx<{~kH^G3)xW(0yh9KKyxJ%D;Te7M1xnYwGo+EtS^mW%oqd?h1R>;r#8S`M%=v zs_!?H?SDMG`7-3<*Y8=`oep2;fBxOvqNC>L>yE!qt+8LuBR}WT_POul|9|?p z^Utk|mVXyz7rm%oV7D{pNr%t;y%wI2d-L^ve)_oc?LE$&FVCr8USB>v#_ChcvQl@M z+JJdgd47EsOYT>{D?fbf?9cf7|4YsCZcTDzu6lN=-gf)T-CpNyOEa>}uROiKZjXNS zwkzo`ChYsUo7*oZ>id&q_Gj(peP=fZKYO;nzUCs|?SJ3y&!2aCz3klj)B9@Et+wRP zecWI3dEN8c>bEofWN$xx-2D5O1AD_=2T$k2c^~%AXJmNbob_?jR?GLBW`DYUd;i5Z zZZ5l{Vp{ZvGn}VNX{-mvv4FO#smAz^4EJ diff --git a/docs/_images/fittrackee_screenshot-06.png b/docs/_images/fittrackee_screenshot-06.png index 976ca25cad905cb77e9b00a4e7935143312d50e4..542e01ec111d01e563f0ecf1f1e5d8b90bfc192d 100644 GIT binary patch delta 17411 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 delta 16541 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 WT^c><*!2b5KvJHrelF{r5}E)9XI--Z diff --git a/docs/_images/fittrackee_screenshot-07.png b/docs/_images/fittrackee_screenshot-07.png index 2624474d09b69f683fc42bd0520e3215c7a4492a..232001061dd2c5c3026b85962cb5e5a736a01117 100644 GIT binary patch delta 22114 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 z�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 IbxsLQ0KR*!m;e9( delta 19430 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 m(81z=`__). +The tile server can be changed by updating ``TILE_SERVER_URL`` and ``MAP_ATTRIBUTION`` variables (`list of tile servers `__). To keep using **ThunderForest Outdoors**, the configuration is: @@ -507,13 +507,13 @@ Production environment .. warning:: | Note that FitTrackee is under heavy development, some features may be unstable. -- Download the last release (for now, it is the release v0.7.13): +- Download the last release (for now, it is the release v0.7.14): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz - $ tar -xzf v0.7.13.tar.gz - $ mv FitTrackee-0.7.13 FitTrackee + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz + $ tar -xzf v0.7.14.tar.gz + $ mv FitTrackee-0.7.14 FitTrackee $ cd FitTrackee - Create **.env** from example and update it @@ -633,13 +633,13 @@ Prod environment - Change to the directory where FitTrackee directory is located -- Download the last release (for now, it is the release v0.7.13) and overwrite existing files: +- Download the last release (for now, it is the release v0.7.14) and overwrite existing files: .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.13.tar.gz - $ tar -xzf v0.7.13.tar.gz - $ cp -R FitTrackee-0.7.13/* FitTrackee/ + $ wget https://github.com/SamR1/FitTrackee/archive/v0.7.14.tar.gz + $ tar -xzf v0.7.14.tar.gz + $ cp -R FitTrackee-0.7.14/* FitTrackee/ $ cd FitTrackee - Update **.env** if needed (see `Environment variables `__). diff --git a/docs/_sources/troubleshooting/administrator.rst.txt b/docs/_sources/troubleshooting/administrator.rst.txt index a85be4ad..0c02b082 100644 --- a/docs/_sources/troubleshooting/administrator.rst.txt +++ b/docs/_sources/troubleshooting/administrator.rst.txt @@ -25,4 +25,12 @@ Administrator `Map images are not displayed but map is shown in Workout detail` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path. \ No newline at end of file +- Check the path in `environment variables <../installation.html#envvar-UPLOAD_FOLDER>`__. ``UPLOAD_FOLDER`` must be set with an absolute path. + + +`Failed to upload or download files` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Check ``client_max_body_size`` in **nginx** config. Increase the value to handle larger files (see **nginx** `documentation `_). + +- Increase **gunicorn** `timeout `__ value if the following error is displayed in gunicorn log: ``[CRITICAL] WORKER TIMEOUT``. \ No newline at end of file diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 10dfcfd9..400d6e9b 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.7.13', + VERSION: '0.7.14', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/api/auth.html b/docs/api/auth.html index 4325f025..0a3269f1 100644 --- a/docs/api/auth.html +++ b/docs/api/auth.html @@ -5,7 +5,7 @@ - Authentication and account — FitTrackee 0.7.13 + <title>Authentication and account — FitTrackee 0.7.14 documentation @@ -43,7 +43,7 @@ FitTrackee - 0.7.13 + 0.7.14 @@ -1445,7 +1445,7 @@ for other reasons.